)]}'
{
  "log": [
    {
      "commit": "75f73f07fe8a172aa0f226484506758c34b55005",
      "tree": "0a1dab8690d07274435f74738311b19b5f8efe37",
      "parents": [
        "088a0ef4938d829f84642e5e35d5d3f56d40d2c5"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Aug 02 09:39:39 2018 +0100"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Aug 06 12:20:04 2018 +0100"
      },
      "message": "[KV] Move KVBT to its own package\n\nAnd related classes.\n\nTest: atest RunFrameworksServicesRoboTests\nTest: adb shell bmgr backupnow com.google.android.apps.backupapp\nTest: 1. adb shell bmgr backup com.google.android.apps.backupapp\n      2. adb shell bmgr run\nTest adb shell cmd jobscheduler run -f android 20537\n\nChange-Id: I1aba694786a4e2a5add5c388cd095700ade1ace9\n"
    },
    {
      "commit": "088a0ef4938d829f84642e5e35d5d3f56d40d2c5",
      "tree": "66a6540a908a97bffa59922e00a3549298354f31",
      "parents": [
        "cc714c1c67b228d9e7bc00cfedc47934efe0ae60"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Aug 02 09:15:47 2018 +0100"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Aug 03 15:59:19 2018 +0100"
      },
      "message": "[KV] Refactor logs\n\nUnify formatting. Start w/ upper case, using \u0027,\u0027 instead of \u0027;\u0027, \u0027-\u0027.\n\nTest: atest KeyValueBackupTask\nTest: 1. adb shell bmgr backupnow com.google.android.apps.backupapp\n      2. Verify logs\nTest: atest CtsBackupTestCases\nTest: atest CtsBackupHostTestCases\nTest: atest GtsBackupTestCases\nTest: atest GtsBackupHostTestCases\n\nChange-Id: I171110f69e66d0311cbf030b210600ddf1ad5656\n"
    },
    {
      "commit": "cc714c1c67b228d9e7bc00cfedc47934efe0ae60",
      "tree": "77aed1acf46ef665aa3845be942636d6570737db",
      "parents": [
        "2d87f453d94b1bc065a42217eecaa84ca8c9a14c"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Aug 02 08:39:45 2018 +0100"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Aug 02 14:55:32 2018 +0100"
      },
      "message": "[KV] PerformBackupTask \u003d\u003e KeyValueBackupTask\n\nTest: atest RunFrameworksServicesRoboTests\nTest: adb shell bmgr backupnow com.google.android.apps.backupapp\nTest: adb shell bmgr backup com.google.android.apps.backupapp\n      adb shell bmgr run\nTest: atest ScheduledBackupHostSideTest\n\nChange-Id: I30b689538e6301d05416e21abe012a51ef83c5df\n"
    },
    {
      "commit": "2d87f453d94b1bc065a42217eecaa84ca8c9a14c",
      "tree": "c65fb4de901d26f9285d3e2e2ac4fa33c3bccfcd",
      "parents": [
        "9a64ba2602677e1ec3e0edc94e754d393983362e"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jun 22 11:47:49 2018 +0100"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Jul 30 17:04:02 2018 +0100"
      },
      "message": "[KV] State machine to linear task w/ RemoteCall\n\nThis is the first CL of key-value backup refactor.\n\n* Method execute() that executed the state machine states is now empty\n  and run() is created with the initial version of the linear task. It\u0027s\n  basically composed of begin + loop + end. Although it still has the notion\n  of state, it\u0027s more restricted than before (with private methods returning\n  the next state). This is intentional to avoid making this CL too heavy to\n  review and to avoid too much behavioral changes here. In the next CLs I\n  intend to remove BackupState.\n\n* Introduction of RemoteCall, which encapsulates an outbound call that\n  leaves the system_server, with time-out and cancellation built-in.\n  Agent calls are now triggered using this. As a result there is no more\n  operationComplete() method either.\n\n* Cancellation now is cleaner. We don\u0027t need a step lock anymore, only a\n  (volatile) boolean that is checked in every queue iteration. If asked\n  to cancel during an ongoing agent call we rely on RemoteCall.cancel()\n  to return control of the task thread to us. We wait for the cancel\n  acknowledgement to preserve the contract of no more transport calls.\n\n* PFTBT instantiation moved from the constructor to the run() method,\n  which makes more sense.\n\n* No need for mFinished, mBackupData \u003d\u003d null bookkeeping since time-outs,\n  cancellation and legitimate agent responses won\u0027t step into one another\n  anymore.\n\n* Ternary (mQueue.isEmpty) ? BackupState.FINAL : BackupState.RUNNING_QUEUE gone\n  because we check this in the beginning of invokeNextAgent() and now we\n  don\u0027t pay the state-machine tick price associated with the handler.\n\n* PerformBackupTask call sites now call static method start(), that\n  spins up a new dedicated thread for the task. This new thread is\n  assigned the same (process) priority as the backup thread\n  (THREAD_PRIORITY_BACKGROUND).\n\nWork left for future CLs:\n\n* RemoteCall spins up a new thread for kicking off the call, this is for\n  system agents that are executed inline. Old PBT also executed in the same\n  thread (backup handler thread), so maintaining this to keep this CL at\n  a reasonable size.\n\nTest: atest PerformBackupTaskTest\nTest: atest RunFrameworksServicesRoboTests\nTest: atest frameworks/base/services/tests/servicestests/src/com/android/server/backup\nTest: atest CtsBackupTestCases\nTest: atest CtsBackupHostTestCases\nTest: atest GtsBackupTestCases\nTest: atest GtsBackupHostTestCases\nTest: adb shell bmgr backupnow \u003ckv_packages\u003e\nTest: 1. adb shell bmgr backup \u003cp1\u003e \u003cp2\u003e\n      2. adb shell bmgr run\n      A) 3. Cancel while sending \u003cp1\u003e data to transport\n         4. Verify \u003cp1\u003e is backed-up and not pending\n\t    Verify \u003cp2\u003e is not backed-up and is pending\n      B) 3. Cancel while waiting for \u003cp1\u003e agent\n         4. Verify \u003cp1\u003e is not backed-up and is pending\n\t    Verify \u003cp2\u003e is not backed-up and is pending\n\nChange-Id: Ia456c4e807de95d662c9e923245be07e8996f58a\n"
    },
    {
      "commit": "374b2522b35905990234d6fb9632bc1867b8e07d",
      "tree": "a8a4078e066a84ec5c609767fa21a864e4a42f12",
      "parents": [
        "86ec41e2471359a7dbe5b3bc791145cc54c6c3f8"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jul 13 11:38:25 2018 +0100"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Jul 26 11:42:23 2018 +0000"
      },
      "message": "Increase PerformBackupTask unit coverage 3\n\nWith KV Refactor in mind:\n* Tests around calling agent.\n* Tests around agent writing data.\n* Tests around transport handling agent data.\n* Small modification on ShadowBackupData{Input,Output} to allow empty data.\n* Small refactor.\n\nTest: atest PerformBackupTaskTest\nChange-Id: Ia9296859926d09d5bbcb0532fb869ace110240e4\n"
    },
    {
      "commit": "fd1d729574bb7e98c9f98dadbde170c968dc55af",
      "tree": "deff0ddc0128b26fc7263a25464e18cd0ac46a9e",
      "parents": [
        "c1b6ca05ef46de3e6f253c86da8013db2d4c1912"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jul 10 12:54:05 2018 +0100"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jul 20 18:11:25 2018 +0100"
      },
      "message": "Increase PerformBackupTask unit coverage 2\n\nWith KV Refactor in mind.\n* Split empty queue test into multiple tests.\n* Tests around packages failing backup pre-conditions.\n* Added verifications for event logging.\n* Renamed some tests to better reflect important parts of it.\n* More tests about one package.\n* Introduced PackageData to help mock packages, much like TransportData.\n* Some small refactors.\n\nTest: atest PerformBackupTaskTest\nChange-Id: I23aba2b26e82f8643cc1c90f9408510ab34045fd\n"
    },
    {
      "commit": "c1b6ca05ef46de3e6f253c86da8013db2d4c1912",
      "tree": "b68922085a0010557d18b174084feaa8fb5bad82",
      "parents": [
        "acda839b9e3fa12d0f0b40ffd8ec3708ad0a6038"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Jun 28 08:30:14 2018 +0100"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jul 17 12:23:11 2018 +0100"
      },
      "message": "Increase PerformBackupTask unit coverage\n\nWith KV Refactor in mind.\n* Added tests around empty queue and single package backups.\n* Refactored a bit some of the existing tests.\n* Moved from mocking BMS to using a real instance and had to adjust a\n  few things for this.\n\nTest: atest PerformBackupTaskTest\nChange-Id: I0ee3be32c7cbac5ed2cdc2717408749907c15ade\n"
    },
    {
      "commit": "5148582ef20dba1b15fcb9394741c282935e71d3",
      "tree": "adfabe40e280be16d49d27a63a8d5c315a98f25b",
      "parents": [
        "90950d7e4ecca1160077ae7fbd8b8156186e0068"
      ],
      "author": {
        "name": "Anton Philippov",
        "email": "philippov@google.com",
        "time": "Fri May 04 19:53:34 2018 +0100"
      },
      "committer": {
        "name": "Anton Philippov",
        "email": "philippov@google.com",
        "time": "Fri Jun 15 11:38:29 2018 +0000"
      },
      "message": "Use FullRestoreEngine in adb restore.\n\nPerformAdbRestoreTask and FullRestoreEngine has shared a lot of code,\nremove the copy that was in PerformAdbRestoreTask.\n\nTest: adb restore\nChange-Id: Ib4ce8b50eff8aed4a2c0660808c05b80f378ea98\n"
    },
    {
      "commit": "c87e4b8ea094f208601ce4c0095a77cb585e541c",
      "tree": "ca7b518e04a96894eb5db8153f7dc9d8b4eb7e2f",
      "parents": [
        "b9a8c6b587608ba0e07ef90b0d686e2f39a072b7",
        "1f315591ba64944915baa53b97defe08f69959e6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 11 11:34:26 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 11 11:34:26 2018 +0000"
      },
      "message": "Merge \"Update PerformInitializeTask error message\""
    },
    {
      "commit": "1f315591ba64944915baa53b97defe08f69959e6",
      "tree": "c0c86d5805d5cfa71d64f423b4c8faf84b91fda1",
      "parents": [
        "597418d06d884aa3552c075121f6fe23d16f6a7a"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jun 08 15:46:58 2018 +0100"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jun 08 17:54:19 2018 +0100"
      },
      "message": "Update PerformInitializeTask error message\n\nBug: 109652198\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: Iaef534bba74b05f73e150d9fc3ff212c788e8205\n"
    },
    {
      "commit": "7307e645b8272f59274143eb9761307317399e46",
      "tree": "42a7ac8e3c05fcc6322e4d06557c466eb490b62d",
      "parents": [
        "047577692e53c025ef7db7fee015cf265ed917d8"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Jun 04 11:23:00 2018 +0100"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Jun 06 08:19:09 2018 +0000"
      },
      "message": "Check manifest if runtime state of app is DEFAULT\n\nBefore we were considering that the app was enabled in this case, which\nmight not be always true.\n\nBug: 80227098\nTest: atest AppBackupUtilsTest\nTest: Check app w/ manifest enabled\u003d\"true\" is backed-up, but\n      enabled\u003d\"false\" is not.\n\nChange-Id: I4625aa39ba0de45ce6689f2375245081a5d4d722\n"
    },
    {
      "commit": "8cdae012449880380718e785507c292cc2f2914e",
      "tree": "8e1a42952d918c7e081b5cffe5e00a6597496d01",
      "parents": [
        "f4c1989407abf4c7407c8f205a35f1401a443a4a"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Mon May 14 14:11:16 2018 +0100"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Fri May 25 09:45:18 2018 +0000"
      },
      "message": "Clear calling identity in BMS.backupNow\n\nBMS.backupNow is called from GMSCore, which has a different calling\nidentity than the framework. This causes an IllegalArgumentException due\nto uid mismatch when backupNow tries to schedule a job.\n\nThis occurs when the following conditions are combined:\n1) Battery saver mode enabled\n2) Network change detected\n3) Backup pass is scheduled for now\n\nBug: 79441902\nTest: 1) m -j RunFrameworksServicesRoboTests\n2) Manual: Enabled battery saver, modified code to run backupNow with\neach network change and overwrite previously scheduled KeyValueJob.\nThen, change wifi to trigger scheduling the KeyValueJob.\nVerified:\n- IllegalStateException b/c of uid mismatch without change\n- No exception and correct calling uid with change\n\nChange-Id: Iac90cd435e3fc32ff5428236aa15507b36aa833d\n"
    },
    {
      "commit": "a41a7094ac17ae3e88e3cb0757a30548bcbcc40f",
      "tree": "2b3dfa3318f63a15137aef04d0f46f3cda27f4eb",
      "parents": [
        "e39d3a8cda79ab51612bbcf97b3de1f29a752c2b",
        "98b17a6146ccbf6f8f122d489d09fa40b6f42067"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 24 13:13:18 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 24 13:13:18 2018 +0000"
      },
      "message": "Merge \"Add getCurrentTransportComponent() API\""
    },
    {
      "commit": "98b17a6146ccbf6f8f122d489d09fa40b6f42067",
      "tree": "9003ae89439e99ab88beb7ebd65d9a7c6f01bb6d",
      "parents": [
        "24917b5ffeadadb69f4b6ea7ddce090fbddbf971"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed May 09 09:25:35 2018 +0100"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon May 14 11:36:11 2018 +0100"
      },
      "message": "Add getCurrentTransportComponent() API\n\nBug: 73640944\nTest: atest RunFrameworksServicesRoboTests\nChange-Id: I62193d63367c3b7564ccd41f5b103a7076764e3f\n"
    },
    {
      "commit": "e6e63cd6c6cc4b7336bf396aa7bd64534cfb80d3",
      "tree": "b9b6f1c6d66b059981e08783614bbf727e4d435c",
      "parents": [
        "44b8e043cfc780fbc59683b02328393504e9ddf8"
      ],
      "author": {
        "name": "ericchhsu",
        "email": "ericchhsu@google.com",
        "time": "Mon Apr 23 16:38:25 2018 +0800"
      },
      "committer": {
        "name": "ericchhsu",
        "email": "ericchhsu@google.com",
        "time": "Thu May 03 11:55:17 2018 +0800"
      },
      "message": "Instantly excute next state when the agent provides a prohibited key.\n\nWhen the agent provides a prohibited key, the code flow will directly be returned\nwithout excuting next backup state. The next state should be execute instantly to\nmake sure the backup mechanism can be executed properly.\n\nBug: 77272601\nTest: 1.m -j RunFrameworksServicesRoboTests\n      2.Manual testing by test package with prohibited key.\n      - adb backup -all\n      - adb backup -shared\n      - adb backup -obb -all\n      - adb shell bmgr backupnow --all\n      - adb shell bmgr backupnow [test key value package]\n      - adb backup -keyvalue [test key value package]\nChange-Id: I46e1aa8dd0f75cf54087b43cee50ee952d85abc1\n"
    },
    {
      "commit": "44b8e043cfc780fbc59683b02328393504e9ddf8",
      "tree": "b7a726ef07871a92c0a6ac47737401abe97db005",
      "parents": [
        "81c933096a7bc65a00be8c280766a64a55ebfb59",
        "661afbe5fa7eebf2e630565541858df3aebaa825"
      ],
      "author": {
        "name": "Shaowei Shen",
        "email": "shaoweishen@google.com",
        "time": "Wed May 02 19:24:29 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 02 19:24:29 2018 -0700"
      },
      "message": "Merge \"Fix [kv-3]PerformBackupTask using last package status to decide status sent to IBackupObserver.\" into pi-dev am: 49a987c277\nam: 661afbe5fa\n\nChange-Id: Ia242afee49f7c715ba0b6fa65a4325b89e26f79d\n"
    },
    {
      "commit": "49a987c277b8644f81c53defbc7ff8c2a950ba28",
      "tree": "d595afef60cc69fb842145734dc3092bfb45c5fe",
      "parents": [
        "63b6275a2b024e2eecdae76e051972c0a8b8609b",
        "59ab5f49340a547e84bdb5b68f5e774953eddc8f"
      ],
      "author": {
        "name": "Shaowei Shen",
        "email": "shaoweishen@google.com",
        "time": "Thu May 03 02:05:17 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 03 02:05:17 2018 +0000"
      },
      "message": "Merge \"Fix [kv-3]PerformBackupTask using last package status to decide status sent to IBackupObserver.\" into pi-dev"
    },
    {
      "commit": "492e53ee178f5c307d18b2df57d8f104c7d1fd3f",
      "tree": "4be3a4a6e0bd65a2db75c1df7304cc2fd9bd1f7a",
      "parents": [
        "49b04156ebc3252bd123f372c57edb0711d7081b",
        "e673650aff90e1c35e6084507ac98456cbbb0f84"
      ],
      "author": {
        "name": "android-build-team Robot",
        "email": "android-build-team-robot@google.com",
        "time": "Tue May 01 08:53:05 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 01 08:53:05 2018 -0700"
      },
      "message": "Merge \"Don\u0027t run obb backup for shared storage backup package.\" into pi-dev am: 494113e74a\nam: e673650aff\n\nChange-Id: I97389ba178bf6a225c375d27d91655e9957bbbf5\n"
    },
    {
      "commit": "09589d0073af9ff4d362482efc2d866322889901",
      "tree": "5014161867b9f0f50263a9bff0be42ff0931e17b",
      "parents": [
        "69b1fce562fdc8c416756f9b0cfb5e435a4f5c61"
      ],
      "author": {
        "name": "Anton Philippov",
        "email": "philippov@google.com",
        "time": "Tue May 01 14:27:00 2018 +0100"
      },
      "committer": {
        "name": "Anton Philippov",
        "email": "philippov@google.com",
        "time": "Tue May 01 14:27:00 2018 +0100"
      },
      "message": "Don\u0027t run obb backup for shared storage backup package.\n\nThis fixes an issue when adb backup would hang (and hold wakelock)\nforever when run with \u0027-obb\u0027 and \u0027-shared\u0027.\n\nBug: 75997810\nTest: \u0027adb backup -obb -shared\u0027 finishes successfully\nChange-Id: I015add6dc525984592e733266b3e046f41d2cb93\n"
    },
    {
      "commit": "59ab5f49340a547e84bdb5b68f5e774953eddc8f",
      "tree": "550d31c0e07c82bd37c143cbaaf3da479bb76651",
      "parents": [
        "c9ae78dcdeba76ea27f9b97bd8a68bac5681d3cc"
      ],
      "author": {
        "name": "shaoweishen",
        "email": "shaoweishen@google.com",
        "time": "Mon Apr 23 17:22:57 2018 +0800"
      },
      "committer": {
        "name": "shaoweishen",
        "email": "shaoweishen@google.com",
        "time": "Tue Apr 24 09:54:37 2018 +0800"
      },
      "message": "Fix [kv-3]PerformBackupTask using last package status to decide status sent to IBackupObserver.\n\nWe only report failure to IBackupObserver.backupFinished() when we meet\ntransport failure, but now it will report failure when the last package\nmeet TRANSPORT_PACKAGE_REJECTED or TRANSPORT_QUOTA_EXCEEDED, add above\ntwo states in FINAL to prevent the situation, and update related\ntest, also javadoc of IBackupObserver.\n\nBug: 77271953\n\nTest: make -j RunFrameworksServicesRoboTests ROBOTEST_FILTER\u003dPerformBackupTaskTest\nChange-Id: Ic2bfdf9f50d700f8ccb509e081ae8e0afb186020\n"
    },
    {
      "commit": "8eb97f61a4717957f9789ebe9d7f043a42206014",
      "tree": "a7d86463ca68ffa7f6cf9d5bcddf099f4d0c6f84",
      "parents": [
        "66293166d7685c5f55c5a98a2bc5935ae96b11ab"
      ],
      "author": {
        "name": "Allen Su",
        "email": "allenycsu@google.com",
        "time": "Tue Apr 10 10:32:45 2018 +0800"
      },
      "committer": {
        "name": "Allen Su",
        "email": "allenycsu@google.com",
        "time": "Tue Apr 24 00:01:05 2018 +0800"
      },
      "message": "PerformBackupTask getting 2 IBackupObserver.backupFinished()\n\nRemove IBackupObserver.backupFinished() before\nexecuteNextState(BackupState.FINAL), add test cases to verify it and\nformat PerformBackupTaskTest.java\nBug: 77272662\nTest: make RunFrameworksServicesRoboTests\n\nChange-Id: Ia464d0326437fb8680ab88619829c483e2c1164d\n"
    },
    {
      "commit": "cfa5a82f82a5b4aeb6ca3ca6ca7f9af60ac62405",
      "tree": "baca770253d32519a98537fd960bc5ce8a8f0780",
      "parents": [
        "e16d4a8da18596e02549eccc922e34bfdadfc955"
      ],
      "author": {
        "name": "Henry Liu",
        "email": "liuhenry@google.com",
        "time": "Wed Apr 11 14:18:59 2018 +0800"
      },
      "committer": {
        "name": "Henry Liu",
        "email": "liuhenry@google.com",
        "time": "Thu Apr 12 02:44:50 2018 +0000"
      },
      "message": "Fix [kv-4] PerformBackupTask possible NPE/Wrong package report.\n\nmCurrentPackage is null when package doesn\u0027t exist, which lead test\nfailed with NPE\nUse request.packageName for case BackupTransport.AGENT_UNKNOWN instead\n\nBug: 77272500\n\nTest: m -j RunFrameworksServicesRoboTests ROBOTEST_FILTER\u003dPerformBackupTaskTest\nChange-Id: I27be85f0c3f95e36edd92d0d552189fbcf6952dd\n(cherry picked from commit 87f1209ac6398c1045845640e620fc9d3b36f9f5)\n"
    },
    {
      "commit": "af3598cf1318afd2bfe94b46d1454f813d6b65ea",
      "tree": "084ab422125ec9e554b5622ed0fbde942d411700",
      "parents": [
        "dda35b31bfdd66aa7c7029528d99b6b22b8cff5b",
        "87f1209ac6398c1045845640e620fc9d3b36f9f5"
      ],
      "author": {
        "name": "Henry Liu",
        "email": "liuhenry@google.com",
        "time": "Thu Apr 12 02:43:18 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 12 02:43:18 2018 +0000"
      },
      "message": "Merge \"Fix [kv-4] PerformBackupTask possible NPE/Wrong package report.\""
    },
    {
      "commit": "87f1209ac6398c1045845640e620fc9d3b36f9f5",
      "tree": "12edeb71c3e41d143e4c99d6236ed9f33c56cf37",
      "parents": [
        "cf18c86c88aa630b53d309451f27defcdec84421"
      ],
      "author": {
        "name": "Henry Liu",
        "email": "liuhenry@google.com",
        "time": "Wed Apr 11 14:18:59 2018 +0800"
      },
      "committer": {
        "name": "Henry Liu",
        "email": "liuhenry@google.com",
        "time": "Thu Apr 12 02:17:20 2018 +0000"
      },
      "message": "Fix [kv-4] PerformBackupTask possible NPE/Wrong package report.\n\nmCurrentPackage is null when package doesn\u0027t exist, which lead test\nfailed with NPE\nUse request.packageName for case BackupTransport.AGENT_UNKNOWN instead\n\nBug: 77272500\n\nTest: m -j RunFrameworksServicesRoboTests ROBOTEST_FILTER\u003dPerformBackupTaskTest\nChange-Id: I27be85f0c3f95e36edd92d0d552189fbcf6952dd\n"
    },
    {
      "commit": "934b61ddcbb168c170dc0c7a34fd83204de7cb2c",
      "tree": "a930995e0a5ce885cf92709f692a377d602bb00d",
      "parents": [
        "9b7a99318ed0bee65475929fa6e665ca84d53365",
        "63b447531ef5002382be5757711719829ebe42b2"
      ],
      "author": {
        "name": "Daniel Cashman",
        "email": "dcashman@google.com",
        "time": "Wed Apr 11 13:07:50 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 11 13:07:50 2018 -0700"
      },
      "message": "Merge \"Add SigningInfo class to expose package signing details.\" into pi-dev am: 960a0c6c57\nam: 63b447531e\n\nChange-Id: Ie311660c339d1293c2b332dc4da0e865a1d21685\n"
    },
    {
      "commit": "960a0c6c5761405090e53ba930dec85e93de0ebb",
      "tree": "dfc64fcc63563823f88a579494accaf1e83461f3",
      "parents": [
        "10fb6582eb9c0e84938af9a2be0017e35eb59c5e",
        "5c9f527e3328c2f3a96cdeb5052b969c1ff66493"
      ],
      "author": {
        "name": "Daniel Cashman",
        "email": "dcashman@google.com",
        "time": "Wed Apr 11 19:21:07 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 19:21:07 2018 +0000"
      },
      "message": "Merge \"Add SigningInfo class to expose package signing details.\" into pi-dev"
    },
    {
      "commit": "0e6647ad59c08169a06dc9a714462fb7a35998a8",
      "tree": "82658ccc171190aa36b2be4e38290ac7f5ecb530",
      "parents": [
        "a26a7216f0adfe27ab5e8b7574f9bcc31f5ae95d",
        "0d383d2ee48c65a6beb5067a9c332e4f2d793d7e"
      ],
      "author": {
        "name": "Anton Philippov",
        "email": "philippov@google.com",
        "time": "Wed Apr 11 11:07:52 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 11 11:07:52 2018 -0700"
      },
      "message": "Merge \"Pass app version to agent in adb restore for kv.\" into pi-dev am: 133f93bbbb\nam: 0d383d2ee4\n\nChange-Id: Icc2051dd9f08d8c0c48e0bb96621a203b6d979c7\n"
    },
    {
      "commit": "133f93bbbb699f483a44dd87ee987cde16469a03",
      "tree": "6f0b56bc2848e49eba02ad305f61b648cdf10714",
      "parents": [
        "259bdbf43d06e27005c6b3e2d84dce8574c5604a",
        "f8cefdec4b8d94174158775e39d018af24fe5b67"
      ],
      "author": {
        "name": "Anton Philippov",
        "email": "philippov@google.com",
        "time": "Wed Apr 11 16:53:30 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 16:53:30 2018 +0000"
      },
      "message": "Merge \"Pass app version to agent in adb restore for kv.\" into pi-dev"
    },
    {
      "commit": "f8cefdec4b8d94174158775e39d018af24fe5b67",
      "tree": "2dfb7531e2cb6a0f5ebd0e6b0b4dbf1ab37cb368",
      "parents": [
        "752cd826b9991f0333ac4cfe7a8c3a9c60f0cbda"
      ],
      "author": {
        "name": "Anton Philippov",
        "email": "philippov@google.com",
        "time": "Wed Apr 11 14:41:58 2018 +0100"
      },
      "committer": {
        "name": "Anton Philippov",
        "email": "philippov@google.com",
        "time": "Wed Apr 11 14:58:14 2018 +0100"
      },
      "message": "Pass app version to agent in adb restore for kv.\n\nThis is a temporary solution for P to unblock GTS tests.\n\nBug: 77852250\nTest: manual:\n1. adb backup -f saved-wifi-api100.ab -keyvalue com.android.providers.settings\n2. adb restore saved-wifi-api100.ab\n3. See that SettingsBackupAgent receives appVersionCode in onRestore()\n\nChange-Id: I6092bea570e7e27cb5b72165e9284ad2befc21b6\n"
    },
    {
      "commit": "5c9f527e3328c2f3a96cdeb5052b969c1ff66493",
      "tree": "b935c72e4fe19f491d978bb62db0ab7d2d344b88",
      "parents": [
        "65317bac02e993d1313a1958a8497ff5f2a2ecd5"
      ],
      "author": {
        "name": "Dan Cashman",
        "email": "dcashman@google.com",
        "time": "Tue Apr 03 16:42:23 2018 -0700"
      },
      "committer": {
        "name": "Daniel Cashman",
        "email": "dcashman@google.com",
        "time": "Tue Apr 10 22:19:20 2018 +0000"
      },
      "message": "Add SigningInfo class to expose package signing details.\n\nAttempt to simplify the exposure of package signing information via\nPackageInfo by creating a new class and corresponding methods for\nquerying a package\u0027s signing information.\n\nBug: 74831530\nTest: PkgInstallSignatureVerificationTest\nChange-Id: Idbc008b41a921f89cefb224b26f910da4d238dea\n"
    },
    {
      "commit": "d074ea66b401851fbbc72e49fedc7dc71b1125ed",
      "tree": "e8aea9793f44dd8ac74fd8ee739289ba7a413b28",
      "parents": [
        "69f3062a8a5a34fb91b282857c4fcb5d728ba634",
        "5ddcc064a75822d3c398c262d7970acead9ccfe2"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Apr 05 17:27:48 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 05 17:27:48 2018 +0000"
      },
      "message": "Merge \"Add anniemeng to backup owners\""
    },
    {
      "commit": "5ddcc064a75822d3c398c262d7970acead9ccfe2",
      "tree": "6db9886994c01c95d28918681270386a43789290",
      "parents": [
        "e15978ceb9ae77f082d386bba434b4d2bcd102a5"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Apr 05 16:14:03 2018 +0100"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Apr 05 16:19:38 2018 +0100"
      },
      "message": "Add anniemeng to backup owners\n\nTest: N/A\nChange-Id: I2462c3a4ee284953913bf461599fa69a08cf7a04\n"
    },
    {
      "commit": "6858acd4421bd1e808712004c38731f6bdbb4c94",
      "tree": "0720fbe7a6c73b0aadf7847ccc939d9b5553c2ac",
      "parents": [
        "c89245f5e6cadf72f9d0cf2d042f0dfe42c819e4",
        "0f95a94940303a57e14f4ba5d7dd4d40352dccfc"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Apr 05 04:51:43 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 05 04:51:43 2018 -0700"
      },
      "message": "Merge \"Catch IAE from unbind onServiceDisconnected()\" into pi-dev am: c83cf90166\nam: 0f95a94940\n\nChange-Id: I2097f145026be9d72c4d920e2567ea7cc6fe5589\n"
    },
    {
      "commit": "51c4f038b2be0c32a4f7a09beb6865e25875cd95",
      "tree": "fc1dc1e5835ac81d7f5c6f17eb0f83d8d99e5655",
      "parents": [
        "8a585a6f1fc33f2bc4c011abebbf909e3c24fe25"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Apr 05 11:03:39 2018 +0100"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Apr 05 10:14:01 2018 +0000"
      },
      "message": "Catch IAE from unbind onServiceDisconnected()\n\nWe still don\u0027t know the underlying cause of this, but we shouldn\u0027t crash\nthe system_server. Catching for now.\n\nBug: 74940472\nBug: 77574274\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: I36fc2e65f8766f6b8fd68104d8830b72668d84eb\n"
    },
    {
      "commit": "1e1c28b8d4eb3a79f2a165dbdeddc4403b6fa386",
      "tree": "2d169a814f0ff06e1be2b9281a5f7fb0b3a1bf5c",
      "parents": [
        "9ee29cce8262aa47b5f0ca829bde8f83519a5bfe",
        "d723b5ea2460d641b886b2c7fd015cb8c8f138a8"
      ],
      "author": {
        "name": "Artem Iglikov",
        "email": "artikz@google.com",
        "time": "Thu Mar 29 13:47:34 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Mar 29 13:47:34 2018 +0000"
      },
      "message": "Merge \"Clear app data before full restore for specified packages\" into pi-dev am: bb0bcc4460\nam: d723b5ea24\n\nChange-Id: I551d4dc0cbc04e48daa2c636aa341e7775246ffa\n"
    },
    {
      "commit": "bb0bcc4460c5a1de4ace272f009f92a1337022ff",
      "tree": "aef6707a727673a1b911cda3f77d09d92da23be3",
      "parents": [
        "3594cd54aaaca5a992fc946e3e06074e9c9575f2",
        "5b53875fdc24c041d198838bce294aa6e631b2e2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 29 13:23:24 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 29 13:23:24 2018 +0000"
      },
      "message": "Merge \"Clear app data before full restore for specified packages\" into pi-dev"
    },
    {
      "commit": "5b53875fdc24c041d198838bce294aa6e631b2e2",
      "tree": "9b49dad7845571e701cca0cbbe96341bab86667a",
      "parents": [
        "3a5dabbb10861a5cea627936c56693550345b9a8"
      ],
      "author": {
        "name": "Artem Iglikov",
        "email": "artikz@google.com",
        "time": "Tue Mar 27 15:12:18 2018 +0100"
      },
      "committer": {
        "name": "Artem Iglikov",
        "email": "artikz@google.com",
        "time": "Thu Mar 29 11:01:50 2018 +0100"
      },
      "message": "Clear app data before full restore for specified packages\n\nIn some cases (deferred restore) the app data needs to be cleared even\nif the app has implemented backup agent. As a quick fix introduce\nPACKAGES_TO_CLEAR_DATA_BEFORE_FULL_RESTORE secure setting, which\ntransport can fill prior to restore.\n\nBug: 69069240\nTest: adb shell settings put secure packages_to_clear_data_before_full_restore com.google.android.apps.nexuslauncher \u0026\u0026 adb shell bmgr restore com.google.android.apps.nexuslauncher\nChange-Id: I2a4651365d9cf4747f32d2ba69312f54cd03d118\n"
    },
    {
      "commit": "92892163d58b580056d38f6ca2c93fb714b9e4b8",
      "tree": "667480f8837aa9c45f95699a4fa59e8832372cbf",
      "parents": [
        "ff23ffa8ff352b9c7178d19779783d7c231fabda"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Mar 15 14:45:46 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Wed Mar 28 18:07:19 2018 +0100"
      },
      "message": "DO NOT MERGE Unrevert update references to backup agent timeouts\n\nCherry-picked from master (ag/3800434).\n\nReintroduce change (ag/3742803) that was reverted due to SUW crash\n(ag/3780292).\n\nUpdates references to backup/restore agent timeouts from hardcoded\nconstants to the Global setting backup_agent_timeout_parameters.\n\nBug: 70276070\nTest: 1) m -j RunFrameworksServicesRoboTests\n2) Manual testing of affected backup/restore paths:\n- Wipe device; restore cloud backup via SUW\n- adb shell bmgr list sets\n- adb shell bmgr restore [package]\n- adb shell bmgr restore [token]\n- adb backup -all\n- adb backup -shared\n- adb backup -obb -all\n- adb shell bmgr backupnow --all\n- adb shell bmgr backupnow [key value package]\n- adb shell bmgr backupnow [full data package]\n- adb backup -keyvalue [key value package]\n- adb restore backup.ab\n\nChange-Id: If9aad572d688451d37178cd7c2d7844be054953c\n"
    },
    {
      "commit": "a1e8fd61a691e1c6acd97b8031a6527d954ebdee",
      "tree": "8264fc1241a66996b07653bec2e7c516370a2cae",
      "parents": [
        "6b2753c027cea3c1e685b072ae42d4e017beb0ab"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Mar 15 14:45:46 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Wed Mar 28 15:37:33 2018 +0100"
      },
      "message": "Unrevert update references to backup agent timeouts\n\nReintroduce change (ag/3742803) that was reverted due to SUW crash\n(ag/3780292).\n\nUpdates references to backup/restore agent timeouts from hardcoded\nconstants to the Global setting backup_agent_timeout_parameters.\n\nBug: 70276070\nTest: 1) m -j RunFrameworksServicesRoboTests\n2) Manual testing of affected backup/restore paths:\n- Wipe device; restore cloud backup via SUW\n- adb shell bmgr list sets\n- adb shell bmgr restore [package]\n- adb shell bmgr restore [token]\n- adb backup -all\n- adb backup -shared\n- adb backup -obb -all\n- adb shell bmgr backupnow --all\n- adb shell bmgr backupnow [key value package]\n- adb shell bmgr backupnow [full data package]\n- adb backup -keyvalue [key value package]\n- adb restore backup.ab\n\nChange-Id: I871fd32c7601bbe6b06a0c8516bb85bc0ead4198\n"
    },
    {
      "commit": "b873780a3d7128f5ba141605559099d2b2f93fbb",
      "tree": "88507972e828cbe7e9dc9da1dfe2e70485af4e7c",
      "parents": [
        "f77cae61250c727630616b5672df2781e84a7e80"
      ],
      "author": {
        "name": "Artem Iglikov",
        "email": "artikz@google.com",
        "time": "Thu Mar 22 12:18:07 2018 +0000"
      },
      "committer": {
        "name": "Artem Iglikov",
        "email": "artikz@google.com",
        "time": "Thu Mar 22 13:07:34 2018 +0000"
      },
      "message": "DO NOT MERGE Revert \"DO NOT MERGE Update references to backup/restore agent timeouts\"\n\nThis reverts commit f77cae61250c727630616b5672df2781e84a7e80.\n\nReason for revert: crashes SUW\n\nBug: 76128378\nChange-Id: Ia77af64892aa5a03109cc4ef4c2c04b256000ba9\n"
    },
    {
      "commit": "c3b004f8286ee33f431c23ccb6033e3af9c4a4a2",
      "tree": "49f43e7fbbcce5025566bfe87193673b591e6f3f",
      "parents": [
        "ea409907e3878d1248ac47cb1d5edb817211f68b"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Mar 22 13:01:33 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Mar 22 13:02:29 2018 +0000"
      },
      "message": "Revert \"Update references to backup/restore agent timeouts\"\n\nThis reverts commit ea409907e3878d1248ac47cb1d5edb817211f68b.\n\nReason for revert: Crashes SUW\n\nBug: b/76128378\nChange-Id: I4ec134cb979f17bdbaf30d958e8278479312a3d3\n"
    },
    {
      "commit": "f77cae61250c727630616b5672df2781e84a7e80",
      "tree": "ccdb73b1b1d998d513326faa4d9c99d31eb777ec",
      "parents": [
        "e1671a5c744193d74d009de3c706d733b27a285e"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Mar 15 14:45:46 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Tue Mar 20 23:48:27 2018 +0000"
      },
      "message": "DO NOT MERGE Update references to backup/restore agent timeouts\n\nWith the newly created Global setting for backup/restore agent timeouts\n(backup_agent_timeout_parameters introduced in ag/3731401), update\nreferences in backup and restore code to get the timeout values from\nthe setting instead of referencing constants in BMS.\nThis makes these timeouts configurable outside of the framework.\n\nThe default value of the setting is the same as the constants in BMS so\nthis should have no change on the timeout values used in the backup and\nrestore flow.\n\nBug: 70276070\nTest: 1) m -j RunFrameworksServicesRoboTests\nChange-Id: I0259bba76d0fed48158b8316f430b315ea98086e\n"
    },
    {
      "commit": "ea409907e3878d1248ac47cb1d5edb817211f68b",
      "tree": "35efa2aad737b134c93c7dc1979cece7e074096e",
      "parents": [
        "1e13e37401ea074065c21dc5948c15af024b0ccf"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Mar 15 14:45:46 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Fri Mar 16 12:15:32 2018 +0000"
      },
      "message": "Update references to backup/restore agent timeouts\n\nWith the newly created Global setting for backup/restore agent timeouts\n(backup_agent_timeout_parameters introduced in ag/3731401), update\nreferences in backup and restore code to get the timeout values from\nthe setting instead of referencing constants in BMS.\nThis makes these timeouts configurable outside of the framework.\n\nThe default value of the setting is the same as the constants in BMS so\nthis should have no change on the timeout values used in the backup and\nrestore flow.\n\nBug: 70276070\nTest: 1) m -j RunFrameworksServicesRoboTests\nChange-Id: I0259bba76d0fed48158b8316f430b315ea98086e\n"
    },
    {
      "commit": "d069a888cf32f105bf6843a7083770f5b82af74e",
      "tree": "ea13806d4f26c53170abd52742162047c8cc6ed2",
      "parents": [
        "50f118a1214d00a4be1cadc9efb2bcf787927f3f"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Tue Mar 13 15:31:40 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Mar 15 17:43:56 2018 +0000"
      },
      "message": "DO NOT MERGE Create a setting for backup/restore agent timeouts\n\nPart of push to make backup and restore agent timeouts configurable. Creates\na Global setting for the current static BackupManagerService timeouts so\nthat they can be overriden with P/H. We keep the current default values,\nwhich will be updated once we investigate what more appropriate values are.\n\nRemame the constants to better reflect what they\u0027re used\nfor. Next, we will update the framework to use these constants.\n\nThis depends on the refactor of how we observe changes to key value\nbackup settings (ag/3709997).\n\nBug: 70276070\nTest: m -j RunFrameworksServicesRoboTests ROBOTEST_FILTER\u003dBackupAgentTimeoutParametersTest\nChange-Id: Id506314ce0c8bd5e4d1d8b4001b26cbad0056c99\n"
    },
    {
      "commit": "1e13e37401ea074065c21dc5948c15af024b0ccf",
      "tree": "49f43e7fbbcce5025566bfe87193673b591e6f3f",
      "parents": [
        "5772194a6f3478c1e3d3ca90bfa4d6b60d823abc"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Tue Mar 13 15:31:40 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Mar 15 12:59:13 2018 +0000"
      },
      "message": "Create a setting for backup/restore agent timeouts\n\nPart of push to make backup and restore agent timeouts configurable. Creates\na Global setting for the current static BackupManagerService timeouts so\nthat they can be overriden with P/H. We keep the current default values,\nwhich will be updated once we investigate what more appropriate values are.\n\nRemame the constants to better reflect what they\u0027re used\nfor. Next, we will update the framework to use these constants.\n\nThis depends on the refactor of how we observe changes to key value\nbackup settings (ag/3709997).\n\nBug: 70276070\nTest: m -j RunFrameworksServicesRoboTests ROBOTEST_FILTER\u003dBackupAgentTimeoutParametersTest\nChange-Id: Id506314ce0c8bd5e4d1d8b4001b26cbad0056c99\n"
    },
    {
      "commit": "808d8a016386d7152717b2a510081aa5d51189ec",
      "tree": "c903caa3bb0191569cffc1f264ba1597f2755b76",
      "parents": [
        "e7219c8317c0857f53a0ba677544bda1dbd05ab0",
        "f89a90bcca6f2b9435469d1322d29aa608bbc528"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Thu Mar 15 10:41:22 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Mar 15 10:41:22 2018 +0000"
      },
      "message": "Merge \"Allow restoring of apps that rotated key\" into pi-dev am: d766e212c9\nam: f89a90bcca\n\nChange-Id: I0895c47a93d7bd3b90a89bd0b0dce2cc24fcb963\n"
    },
    {
      "commit": "528c3e572a829c51053532803ff31da123ebfed9",
      "tree": "d97dc51e1fc266131ceb2495daaa18719ac5ed6e",
      "parents": [
        "8506821db9cb0b4221861e127d3ae9641288f84d"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Wed Feb 07 17:47:10 2018 +0000"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Wed Mar 14 16:11:18 2018 +0000"
      },
      "message": "Allow restoring of apps that rotated key\n\nRestoring of apps that rotated key wouldn\u0027t be possible due to\nexplicit signature matching.\nAmend signature matching strategies to take into account\napps that have rotated key.\n\nTest: atest frameworks/base/services/tests/servicestests/src/\n      com/android/server/backup/utils/AppBackupUtilsTest.java\nTest: atest frameworks/base/services/tests/servicestests/src/\n      com/android/server/pm/backup/BackupUtilsTest.java\nTest: m -j RunFrameworksServicesRoboTests\nTest: runtest -p com.android.server.backup frameworks-services\nTest: atest frameworks/base/services/tests/servicestests/src/\n      com/android/server/pm/ShortcutManagerTest1.java\nTest: atest frameworks/base/services/tests/servicestests/src/\n      com/android/server/pm/ShortcutManagerTest2.java\nTest: atest frameworks/base/services/tests/servicestests/src/\n      com/android/server/pm/ShortcutManagerTest3.java\nTest: atest frameworks/base/services/tests/servicestests/src/\n      com/android/server/pm/ShortcutManagerTest4.java\nTest: atest frameworks/base/services/tests/servicestests/src/\n      com/android/server/pm/ShortcutManagerTest5.java\nTest: atest frameworks/base/services/tests/servicestests/src/\n      com/android/server/pm/ShortcutManagerTest6.java\nTest: atest frameworks/base/services/tests/servicestests/src/\n      com/android/server/pm/ShortcutManagerTest7.java\nTest: atest frameworks/base/services/tests/servicestests/src/\n      com/android/server/pm/ShortcutManagerTest8.java\nTest: atest frameworks/base/services/tests/servicestests/src/\n      com/android/server/pm/ShortcutManagerTest9.java\nTest: atest frameworks/base/services/tests/servicestests/src/\n      com/android/server/pm/ShortcutManagerTest10.java\nTest: atest CtsShortcutManagerTestCases\nBug: 64686581\nBug: 34345052\nBug: 74208476\nBug: 74159113\n\nChange-Id: Ica23bbfec89648d9348c65db4597188e8c18e1d8\n"
    },
    {
      "commit": "d3b6e9fe22f5034026ab57534e560be121fcca09",
      "tree": "e1518708507b4315f85eccd3584fe780a6904294",
      "parents": [
        "916800d82c36d0c9f82e6d669a1613dfc08c9251",
        "7d3033b11f6ddd75c9a6e49d69bc432053ce8cba"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Wed Mar 14 13:40:46 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 14 13:40:46 2018 +0000"
      },
      "message": "Merge \"DO NOT MERGE Create a key value settings observer for backup parameters\" into pi-dev"
    },
    {
      "commit": "cd8f972f61adc3273a24a48cb41adaa7786b9afc",
      "tree": "94e8d2a407f5e4da3f129e1d0b1343f37cbd42cb",
      "parents": [
        "b7fbab31b39cd83ba60868fe7c7627fb0b187956",
        "34607a0f7eb5ffa3dfc6147eb494be1d88324c7c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 14 13:23:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 14 13:23:21 2018 +0000"
      },
      "message": "Merge \"Tests for BMS.requestBackup()\""
    },
    {
      "commit": "34607a0f7eb5ffa3dfc6147eb494be1d88324c7c",
      "tree": "81eea8e644ea7c7b35a82db9b09a5c22bcfe78e5",
      "parents": [
        "b671b24105c736cca842e656b8d37cbfb59af333"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Mar 12 09:52:09 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Mar 14 10:42:04 2018 +0000"
      },
      "message": "Tests for BMS.requestBackup()\n\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: I71f377a2ce16ece08e7d2ebbf2af31c0d1594703\n"
    },
    {
      "commit": "7d3033b11f6ddd75c9a6e49d69bc432053ce8cba",
      "tree": "d0ef1cc981785bc54c55f2e84cac5bfc9696162a",
      "parents": [
        "fd95ca6d2e8b74fe49e095822c71fcaa8f71a718"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Mar 08 20:38:43 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Tue Mar 13 18:47:46 2018 +0000"
      },
      "message": "DO NOT MERGE Create a key value settings observer for backup parameters\n\nExtracts an abstract class to observe changes in backup parameter settings that\nare stored as a comma-separated key value list. This class is\nresponsible for registering and unregistering a content observer on the\nsetting and updating local references to the parameters.\n\nRefactor BackupManagerConstants and LocalTransportParameters to use this\nimplementation. This will also be used for the new backup timeout\nsetting.\n\nBug: 74346317\nTest: 1) m -j RunFrameworksServicesRoboTests ROBOTEST_FILTER\u003dBackupManagerConstantsTest\n2) gts-tradefed run commandAndExit gts-dev -m GtsBackupHostTestCases -t com.google.android.gts.backup.TransportFlagsHostSideTest\n\nChange-Id: Id4c50fbcf7479c925515887e3fa70e166dd9955c\n"
    },
    {
      "commit": "48b2ecae528bf291ce5d3de6d1859f4fe5c68532",
      "tree": "8f7a72174f73d64d062168b4ff3e8d57fc5c4d3b",
      "parents": [
        "9244c3aece7a4077f7d66df5ffb22119bef443a2"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Mar 08 20:38:43 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Tue Mar 13 18:24:12 2018 +0000"
      },
      "message": "Create a key value settings observer for backup parameters\n\nExtracts an abstract class to observe changes in backup parameter settings that\nare stored as a comma-separated key value list. This class is\nresponsible for registering and unregistering a content observer on the\nsetting and updating local references to the parameters.\n\nRefactor BackupManagerConstants and LocalTransportParameters to use this\nimplementation. This will also be used for the new backup timeout\nsetting.\n\nBug: 74346317\nTest: 1) m -j RunFrameworksServicesRoboTests ROBOTEST_FILTER\u003dBackupManagerConstantsTest\n2) gts-tradefed run commandAndExit gts-dev -m GtsBackupHostTestCases -t com.google.android.gts.backup.TransportFlagsHostSideTest\n\nChange-Id: Id4c50fbcf7479c925515887e3fa70e166dd9955c\n(cherry picked from commit 16ef6ffb3cbea77637ad99c2b0c79cbfd8f03c9a)\n"
    },
    {
      "commit": "602bf1a8a88b64889c6c03c448bbcba12045e8a6",
      "tree": "364b5bdadc7ccba073a899b5e0f5b36bbac961bf",
      "parents": [
        "9554dd94ecbf159f22372e6d046b362a97b3e527"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Mar 12 12:17:40 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Mar 12 15:33:43 2018 +0000"
      },
      "message": "Add tests for TransportStats and some refactor\n\nAdded units for http://ag/3709565. Some refactoring.\n\nTest: m -j RunFrameworksServicesRoboTests\nBug: 72485465\nChange-Id: Id75a4e0b96936580fd677041e091340b0fff8c1e\n(cherry picked from commit cac3a7405997ab9783b537128107a71e6f5b75a2)\n"
    },
    {
      "commit": "cb0fe7687700bf4b4d59e0c866ae1bdeab0f8432",
      "tree": "7f83011e762b173ae8dbbad5b56216d3fb300aad",
      "parents": [
        "1bef13e63651efdafd26fab64d570326bb8921bf",
        "cac3a7405997ab9783b537128107a71e6f5b75a2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 12 14:02:42 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 12 14:02:42 2018 +0000"
      },
      "message": "Merge \"Add tests for TransportStats and some refactor\""
    },
    {
      "commit": "60719a4e7448f36dad8054740fb8becb2f1fb43f",
      "tree": "423b39e4af1fd07be936479d04ea5fadf4989ebd",
      "parents": [
        "8a06a9f7dd52a9e7ab1ae8370993e75d0c16633f"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Mar 09 12:43:48 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Mar 12 12:19:56 2018 +0000"
      },
      "message": "Add measurements for TransportClient connections\n\nRetrievable via \u0027adb shell dumpsys backup transportstats\u0027.\nSample output:\n\nAverage connection time: 36.00 ms\nMax connection time: 181 ms\nMin connection time: 7 ms\nNumber of connections: 16\nPer transport:\n    com.google.android.gms/.backup.BackupTransportService\n        Average connection time: 27.71 ms\n        Max connection time: 139 ms\n        Min connection time: 13 ms\n        Number of connections: 14\n    com.google.android.gms/.backup.component.D2dTransportService\n        Average connection time: 181.00 ms\n        Max connection time: 181 ms\n        Min connection time: 181 ms\n        Number of connections: 1\n    android/com.android.internal.backup.LocalTransportService\n        Average connection time: 7.00 ms\n        Max connection time: 7 ms\n        Min connection time: 7 ms\n        Number of connections: 1\n\nBug: 72485465\nTest: Will follow in another CL if reviewers OK w/ approach.\nChange-Id: I133ed423d0b8471d69e3c3631aadee7d42d0ec0e\n(cherry picked from commit e5a976404c66c054fbec9b124f816a90f9d6b4dc)\n"
    },
    {
      "commit": "cac3a7405997ab9783b537128107a71e6f5b75a2",
      "tree": "452849aff623bd7bc2d3b83caf398a4318c497e1",
      "parents": [
        "e5a976404c66c054fbec9b124f816a90f9d6b4dc"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Mar 12 12:17:40 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Mar 12 12:19:10 2018 +0000"
      },
      "message": "Add tests for TransportStats and some refactor\n\nAdded units for http://ag/3709565. Some refactoring.\n\nTest: m -j RunFrameworksServicesRoboTests\nBug: 72485465\nChange-Id: Id75a4e0b96936580fd677041e091340b0fff8c1e\n"
    },
    {
      "commit": "22b821f8e81af410d6fccf39f0040ead14814511",
      "tree": "c97907613391bc2fee9c48b7442f26b8027ddff7",
      "parents": [
        "e205c8d18cdc1e639cc3f9229224f906a30f0669",
        "e5a976404c66c054fbec9b124f816a90f9d6b4dc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 09 17:49:34 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 09 17:49:34 2018 +0000"
      },
      "message": "Merge \"Add measurements for TransportClient connections\""
    },
    {
      "commit": "e5a976404c66c054fbec9b124f816a90f9d6b4dc",
      "tree": "b56dd1df3bb4a79768cbad85996dfcc8f1447cff",
      "parents": [
        "cbeeed1255c0414afea45292a58bd533b67efa07"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Mar 09 12:43:48 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Mar 09 13:52:40 2018 +0000"
      },
      "message": "Add measurements for TransportClient connections\n\nRetrievable via \u0027adb shell dumpsys backup transportstats\u0027.\nSample output:\n\nAverage connection time: 36.00 ms\nMax connection time: 181 ms\nMin connection time: 7 ms\nNumber of connections: 16\nPer transport:\n    com.google.android.gms/.backup.BackupTransportService\n        Average connection time: 27.71 ms\n        Max connection time: 139 ms\n        Min connection time: 13 ms\n        Number of connections: 14\n    com.google.android.gms/.backup.component.D2dTransportService\n        Average connection time: 181.00 ms\n        Max connection time: 181 ms\n        Min connection time: 181 ms\n        Number of connections: 1\n    android/com.android.internal.backup.LocalTransportService\n        Average connection time: 7.00 ms\n        Max connection time: 7 ms\n        Min connection time: 7 ms\n        Number of connections: 1\n\nBug: 72485465\nTest: Will follow in another CL if reviewers OK w/ approach.\nChange-Id: I133ed423d0b8471d69e3c3631aadee7d42d0ec0e\n"
    },
    {
      "commit": "dcf10f432106e674d7e3a2e3641247237fee2cc4",
      "tree": "be7382fc03e9d485c633474432e8bc1f21b83081",
      "parents": [
        "a49c2399b043c39c68fb8b34b356dbac51a52d87"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Mar 08 11:53:46 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Mar 08 11:56:11 2018 +0000"
      },
      "message": "More tests for TransportManager\n\nAnd turned a NPE into a IllegalStateException.\n\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: I80913a3f808b773c18c158827edb7fc24c7bdabd\n"
    },
    {
      "commit": "14c716c911dea7eeb28a0040d7807d6ea83464a9",
      "tree": "28887b48aab6c86d8ac10f9c08768d5f62eefbe6",
      "parents": [
        "0db51ad50ef0791b196c33759f3ad2c59b2d9395"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Mar 05 20:39:04 2018 +0000"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Mar 05 20:40:23 2018 +0000"
      },
      "message": "Revert \"Allow restoring of apps that rotated key\"\n\nThis reverts commit 313d225cd19885979596cf690103a8d77e19c3dc.\n\nReason for revert: b/74159113\n\nChange-Id: I483ecdd80d26fca8451cd270b4fcbe34379839cb\n"
    },
    {
      "commit": "9371be3b88e2bcd6da6223b4cf59a00d32147133",
      "tree": "c5ba317009d78804fed0b9e82711f926642f00ae",
      "parents": [
        "8ab50a9ea4caeccafba160097e640d42b6156ed9",
        "760c1f552c42e11a2fc1ca32acf474ad846217d5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 28 14:26:34 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 28 14:26:34 2018 +0000"
      },
      "message": "Merge \"Bmgr about running backups\""
    },
    {
      "commit": "760c1f552c42e11a2fc1ca32acf474ad846217d5",
      "tree": "81b0596cc81f60dee2670d492724f68319a3321c",
      "parents": [
        "53346e39ecc7b21758246d8eb302f73c29e2f718"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Feb 28 12:10:18 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Feb 28 12:11:26 2018 +0000"
      },
      "message": "Bmgr about running backups\n\nSays that backups can be canceled if one already running. Put message\nfor running backups in dumpsys for checking.\n\nBug: 72484277\nTest: Triggered backup, checked dumpsys and bmgr backupnow\nChange-Id: I028cf663858e374389f50175aaf5a3e8c9d45e42\n"
    },
    {
      "commit": "961f409d377e25dba091b065d36190deb56eb84d",
      "tree": "e90479c3044df4e2db6708edcbbab0ef8d2a0c5a",
      "parents": [
        "6dd84bef21718a46fe8b408db9f8f39e97f385d9",
        "313d225cd19885979596cf690103a8d77e19c3dc"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Wed Feb 28 10:08:14 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 28 10:08:14 2018 +0000"
      },
      "message": "Merge \"Allow restoring of apps that rotated key\""
    },
    {
      "commit": "0b0ebb616dd09a51fbe541cef4a713e598adcb77",
      "tree": "f9c0afdcbf21e583f0c8217a43e619204afb3c7c",
      "parents": [
        "8c18d38a8a171ef97c80f2d16755a906732bc3d1",
        "1b9877ab44a45542300adcd3f8a2f84c1d0933cc"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Tue Feb 27 17:39:58 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 27 17:39:58 2018 +0000"
      },
      "message": "Merge \"Move transport constant to BackupTransport API\""
    },
    {
      "commit": "1b9877ab44a45542300adcd3f8a2f84c1d0933cc",
      "tree": "9e3ed836b2793c9819bd0a3738b7dd619b01e724",
      "parents": [
        "6611f83f5ce645954ca9a41d579d147be2178813"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Tue Feb 20 12:06:56 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Tue Feb 27 15:17:56 2018 +0000"
      },
      "message": "Move transport constant to BackupTransport API\n\nPreviously, the transport registration extra was a private\nconstant. Since GMSCore depends on this value being passed, moving\nit to a public API prevents having to define it twice in\nframework and GMSCore, and ensures compatibility between the two.\n\nTODO: Update GMSCore with this constant once this drops\ninto GMSCore.\n\nBug: 72730566\nTest: 1) m -j ROBOTEST_FILTER\u003dTransportManagerTest RunFrameworksServicesRoboTests\n2) m -j ROBOTEST_FILTER\u003dTransportClientManagerTest RunFrameworksServicesRoboTests\n\nChange-Id: I8f7a2ca0275047a5d3cc1a530cd86499d0170f2f\n"
    },
    {
      "commit": "12b6bafcf443723c0479d255af373df201d1ae6f",
      "tree": "2991476be70e97b49179762cca20856ecef97ac5",
      "parents": [
        "ff589c95302cbdf14f9c536cb5d8644984af2861"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Feb 26 14:07:01 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Feb 27 12:24:34 2018 +0000"
      },
      "message": "More tests for ActiveRestoreSession\n\nAround restoreAll() and restoreSome(). And some small refactorings in\nrestore code paths.\n\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: I0ff446ef4dcf15eade189c79e90a22c0f2eda0d6\n"
    },
    {
      "commit": "313d225cd19885979596cf690103a8d77e19c3dc",
      "tree": "92d6fb89eaba22f00bb1bebd3b3b36db226af28d",
      "parents": [
        "53346e39ecc7b21758246d8eb302f73c29e2f718"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Wed Feb 07 17:47:10 2018 +0000"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Feb 26 11:05:40 2018 +0000"
      },
      "message": "Allow restoring of apps that rotated key\n\nRestoring of apps that rotated key wouldn\u0027t be possible due to\nexplicit signature matching.\nAmend signature matching strategies to take into account\napps that have rotated key.\n\nTest: atest frameworks/base/services/tests/servicestests/src/com/android/server/backup/utils/AppBackupUtilsTest.java\nTest: atest frameworks/base/services/tests/servicestests/src/com/android/server/pm/backup/BackupUtilsTest.java\nTest: m -j RunFrameworksServicesRoboTests\nTest: runtest -p com.android.server.backup frameworks-services\nBug: 64686581\nBug: 34345052\nChange-Id: I91b5ae0afb6f2714ceae02b4d4dc202d6cd4fe4e\n"
    },
    {
      "commit": "92c8756876c440564ff36199c9ef95d50af57429",
      "tree": "d22da1fd8eceb4427ecbad594708c3fee9e2d2ed",
      "parents": [
        "add2d38cfc243f0faecb6a6d73addd22eeffab17"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Fri Feb 23 15:16:04 2018 +0000"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Fri Feb 23 15:16:08 2018 +0000"
      },
      "message": "Support bmgr wipe also for full backup apps\n\nPreviously we\u0027d only really clear data for K/V packages,\nnow we consult with the journal of ever backed apps.\n\nBug: 28405555\nTest: manual (adb shell bmgr wipe com.google.android.gms/.backup.BackupTransportService com.android.wallpaperbackup\n      after adb shell bmgr backupnow --all)\nTest: m -j RunFrameworksServicesRoboTests\nTest: runtest -p com.android.server.backup frameworks-services\nChange-Id: If99cb2c8ab9ddc05386d634818f4585ec47efc00\n"
    },
    {
      "commit": "c31222f009beb4de7b37275a29d5947ae98c15ee",
      "tree": "b5674acd601f2a461e03dd60ab208a9b4cfbf6a1",
      "parents": [
        "0eb747e51eb19ad328d08c3a2e435cbedda0e352"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Thu Feb 15 14:50:40 2018 +0000"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Thu Feb 15 14:50:44 2018 +0000"
      },
      "message": "Add Backup and Restore directory OWNERS\n\nBug: 73454476\nChange-Id: Id28cbf7d919e95720c51d6a14388e9fea9d84650\n"
    },
    {
      "commit": "0eb747e51eb19ad328d08c3a2e435cbedda0e352",
      "tree": "3244074fd2e289cd9f36cf93416b2f355574b50a",
      "parents": [
        "74d8796defbb97a6474c91c1a578518cc61c8e36",
        "36c5613a933807389e39b36e678513794fd0a7dc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 15 13:57:50 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 15 13:57:50 2018 +0000"
      },
      "message": "Merge \"Update transport connection with registration info\""
    },
    {
      "commit": "36c5613a933807389e39b36e678513794fd0a7dc",
      "tree": "8df1331e409636368675346b2206089d614e1a09",
      "parents": [
        "bcaeb104c2d678a1d35aed925f6b9570223216b0"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Fri Feb 09 16:01:07 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Feb 15 10:40:01 2018 +0000"
      },
      "message": "Update transport connection with registration info\n\nWhen connecting to a transport, let the transport\nknow if this connection is for registration. This is to\nprevent updating transport attributes during registration\nin GMSCore.\n\nBug: 72730566\nTest: 1) m -j ROBOTEST_FILTER\u003dTransportManagerTest RunFrameworksServicesRoboTests\n2) m -j ROBOTEST_FILTER\u003dTransportClientManagerTest RunFrameworksServicesRoboTests\n3) adb reboot; adb logcat | grep BackupTransportManager; check no errors with \"...not registered tried to change description\"\n4) GMSCore Robo tests\nChange-Id: I5adf6ea3e668a8e8ed8c568728d109814b6f8975\n"
    },
    {
      "commit": "bbab23ff97688f33c5cc41d5d0e134c0d9f58c6c",
      "tree": "495d74767efc00b7aebc085751ee61af1636bff6",
      "parents": [
        "b5cc72055fd3f4a8476f1b00931bc96ba366a859"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 07 15:34:27 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 08 02:19:42 2018 -0800"
      },
      "message": "Frameworks: Annotate trivial @GuardedBy in services/ misc\n\nAdd @GuardedBy for simple functions that require a single lock\nand are named XYZLocked.\n\nDerived by errorprone.\n\nBug: 73000847\nTest: m\nTest: m javac-check-framework RUN_ERROR_PRONE\u003dtrue\nChange-Id: Id1d9fbe5018250e3b9d1466fc5f670d5ad902fa3\n"
    },
    {
      "commit": "d38749b6ff3f2cf35f656e16ee09eeafd8afb7c0",
      "tree": "b17ac405deae0a636ba3b279ad1f3726ac304cb4",
      "parents": [
        "c41d14828faf780c786f967f1dd781d3fb883e6a"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Jan 25 12:46:07 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Mon Jan 29 12:43:20 2018 +0000"
      },
      "message": "Update adb backup/restore confirmation activity on new intent\n\nNow, if adb backup/restore is currently active and the activity is\npassed a new intent, the activity instance would be updated with the new intent.\nSame for if the activity is relaunched.\n\nBefore, the activity would ignore intent changes and use old tokens and\nviews, leading to backing up/restoring wrong files.\n\nBug: 65723308\nTest: adb backup -f old.ab -all; ctrl-c; adb backup -f new.ab -all;\ngts-tradefed run commandAndExit gts-dev -m GtsBackupHostTestCases\nChange-Id: Ifa11efecf82a682a578dab7e5795328ab7d0c054\n"
    },
    {
      "commit": "fe4ae0c5b1bc3b31adc4cc2c5a0197e29e97b6bc",
      "tree": "be5ee1a4cb2113a220cf4a8a7fdfcb33fd1f2dd4",
      "parents": [
        "1caef5b882111f1911fd3438fb11fbf5793a89a5"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Thu Jan 25 15:24:00 2018 +0000"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Fri Jan 26 10:37:32 2018 +0000"
      },
      "message": "Rename RefactoredBackupManagerService to BackupManagerService\n\nThe interface will be removed in a subsequent CL, it will be\neasier to deal with merge conflicts.\n\nTest: 1) m -j RunFrameworksServicesRoboTests\n      2) runtest -p com.android.server.backup frameworks-services\nBug: 65823538\nChange-Id: I37c4c6758c646e1b18889ed05aa1b1d7c6129cf0\n"
    },
    {
      "commit": "1e7f8014a846bfe3f42ac92a0d706528689e6eca",
      "tree": "a4f7d2580d442f6f12e0f564d507fa2534fb6786",
      "parents": [
        "6fef13975a255d33e076ba25408e75db6393dfe0",
        "3184cc99486fca8d55287a96cb91f87603378201"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 25 16:08:15 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 25 16:08:15 2018 +0000"
      },
      "message": "Merge \"Binding on-demand #12: Log and unbind dangling TransportClients\""
    },
    {
      "commit": "3184cc99486fca8d55287a96cb91f87603378201",
      "tree": "b6f55e7346e3a582e720f70bbfb7e9a7fb6bff57",
      "parents": [
        "b5253b65a4325501384605aec09a28e40198c844"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Sat Jan 20 16:54:58 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Jan 25 12:38:04 2018 +0000"
      },
      "message": "Binding on-demand #12: Log and unbind dangling TransportClients\n\nExtracted connection in TransportClient to static class with weak\nreference to TransportClient so that TransportClient is garbage\ncollected when left undisposed. Created finalize method that logs,\nunbinds TransportClient and warns using CloseGuard.\nAlso adjusted some logging.\n\nBug: 17140907\nTest: m -j RunFrameworksServicesRoboTests\nTest: Manually left a dangling TransportClient and observed logs and\nconnections\n\nChange-Id: I30f89e7c27579089ba29936483abd1b60c9e8e37\n"
    },
    {
      "commit": "39194c0582463be17513b9ba82802a703b10c934",
      "tree": "bcf9779268b4336a3a1dcccfd38a38d893cefeb2",
      "parents": [
        "3746a7cabb175b31751e479f6b233fcf80ac1cc4"
      ],
      "author": {
        "name": "Robert Berry",
        "email": "robertberry@google.com",
        "time": "Thu Jan 11 13:50:56 2018 +0000"
      },
      "committer": {
        "name": "Robert Berry",
        "email": "robertberry@google.com",
        "time": "Thu Jan 25 09:28:55 2018 +0000"
      },
      "message": "Add #getTransportFlags to BackupDataOutput\n\nThis allows a BackupAgent to check whether the transport has client-side\nencryption enabled. It can then use this information to decide whether\nto back up more sensitive data.\n\nBug: 72299360\nTest: Manually verified full \u0026 kv backup agents receive transport flags\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: Ibd9b5f9479815e1721e9d6b7663d892b9ab3fcae\n"
    },
    {
      "commit": "f5b99ad2ea12e65ac66321fdf57e3b031f3985d0",
      "tree": "6f779e8865b4107dce3f5f0628ef781cb3407666",
      "parents": [
        "8056728f7c0b97d41fb79fbba0add985db2679ab"
      ],
      "author": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Tue Jan 23 13:53:29 2018 +0000"
      },
      "committer": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Tue Jan 23 17:16:28 2018 +0000"
      },
      "message": "Let the transport ask for non-incremental backup.\n\nAdd a new performBackup() return code TRANSPORT_PACKAGE_DATA_LOST. If\nthe transport returns this then delete the state for the package and\nimmediately retry it. Thus the retry will be a non-incremental backup.\n\nI have left the new constant as @hide to unblock this change. I will add\nthis to the current API review change: ag/3477872.\n\nBug: 71887023\nTest: I tested manually by returning the new code for both @pm@ and\nother key value packages. No automated test exists for this file, and it\nwill be tricky to add this before IC.\n\nChange-Id: I4357a8b297c373eb81e25afb82d480b26f6642b6\n"
    },
    {
      "commit": "8056728f7c0b97d41fb79fbba0add985db2679ab",
      "tree": "651ee39228f9477881da468ea33acdd7a0b12ecc",
      "parents": [
        "a8c7794856c5794fa5b31cf5398b8f773650d6c7"
      ],
      "author": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Tue Jan 23 11:59:15 2018 +0000"
      },
      "committer": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Tue Jan 23 15:16:34 2018 +0000"
      },
      "message": "Move backup of @pm@ into its own state.\n\nPreviously it shared the INITIAL state with various set up work and\ninitializing the transport if needed. By moving it to its own state this\nwill mean we can retry a non-incremental backup of @pm@ if the transport\nindicates that it has lost the state.\n\nI removed the \"mStatus \u003d\u003d BackupTransport.TRANSPORT_NOT_INITIALIZED\" as\nthe mStatus could never have this value at that point.\nTRANSPORT_NOT_INITIALIZED is returned by the transport.performBackup(),\nwhich is not executed until after beginBackup() has returned.\n\nBug: 71887023\nTest: Manually tested init case, incremental case, @pm@ error case, init\nerror case. There are no unit tests for this file, and it\u0027s 1200 lines\nlong which makes writing them for IC difficult.\n\nChange-Id: I23b7512391068316f4c1039faf88cc27905f4492\n"
    },
    {
      "commit": "38902fc09ee55c7634f7e475988cff20a04e78c3",
      "tree": "12250a3cedef82031179a16e51ced273e4ad23e4",
      "parents": [
        "94920fbf043b68a0fa29342a93f191698bbfa3f4",
        "3d2f335c2144db7206842f130de4a96374cd33e3"
      ],
      "author": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Mon Jan 22 21:07:49 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 22 21:07:49 2018 +0000"
      },
      "message": "Merge \"Make various members private in PerformBackupTask.\""
    },
    {
      "commit": "3d2f335c2144db7206842f130de4a96374cd33e3",
      "tree": "9ebde00321c6158011d5bc5f1a36400b1e4d034a",
      "parents": [
        "2e54e410988333aaecb9757412e440144990fd5d"
      ],
      "author": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Mon Jan 22 15:16:06 2018 +0000"
      },
      "committer": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Mon Jan 22 16:10:36 2018 +0000"
      },
      "message": "Make various members private in PerformBackupTask.\n\nTest: None. No functional changes.\nChange-Id: Ia35bdd7637887b4c02a71e96e9037842078fdba4\n"
    },
    {
      "commit": "b56074b37b66d7044e4e0e2c10e9c50a99585792",
      "tree": "fa017e3620099dda4f33831af4fb677c10438a6e",
      "parents": [
        "20220cdb722fb6f92e9106e80507088ea570f984",
        "c3e509cacc41ca78611b1c8d0c34599f895cf009"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 19 21:54:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 21:54:36 2018 +0000"
      },
      "message": "Merge \"Clear calling uid in isAppEligibleForBackup() and variant\""
    },
    {
      "commit": "5d94c398eb17ea7e9ae7b834da69e11269b7e9b1",
      "tree": "21ebc199bff2cd56a5b1cbfccc631f369bd0859e",
      "parents": [
        "0013162ebe4c4b59d361eec44715fd2fdf0ae52f",
        "861b420bc3282da174523b309b8886fb0d50da58"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jan 19 20:57:49 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 20:57:49 2018 +0000"
      },
      "message": "Merge \"Binding on-demand #11: Dump TransportClients\""
    },
    {
      "commit": "c3e509cacc41ca78611b1c8d0c34599f895cf009",
      "tree": "e5f35fa29fd6f82c7b265f87c2d2e57be66eaaa2",
      "parents": [
        "5e1f854620ecf48febb6ef8ddc3bff856efda7b1"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jan 19 17:00:05 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jan 19 19:02:09 2018 +0000"
      },
      "message": "Clear calling uid in isAppEligibleForBackup() and variant\n\nThis method is called by bmgr backupnow. Bmgr pid is not system uid.\nWhen executing the method it fails with permission denied because it\ncan\u0027t bind to the transport. Before binding on-demand we haven\u0027t seen\nthis error because we didn\u0027t try to bind in the method, it was always\nbound.\n\nBug: 72215413\nTest: adb shell bmgr backupnow -all\nChange-Id: I82ad712e893abfec4727d568ab48a49945645eb4\n"
    },
    {
      "commit": "861b420bc3282da174523b309b8886fb0d50da58",
      "tree": "cc040a931be3f7aa5a23fd586ac5c20d41706c6e",
      "parents": [
        "8f0d71e3ee99cb3cee8409ec7b5448282aaadce7"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Jan 17 15:04:29 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jan 19 14:56:21 2018 +0000"
      },
      "message": "Binding on-demand #11: Dump TransportClients\n\nAnd adjust logs.\n\nChange-Id: I04fcfb77bac14db36cc30288878bbb65332deb81\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: adb shell dumpsys backup\n"
    },
    {
      "commit": "a4517cdb7d99d076bfed2a81ec9511fcae68487a",
      "tree": "25aaa76600a4de03d012ea5224bc3117b2e28ff3",
      "parents": [
        "8f0d71e3ee99cb3cee8409ec7b5448282aaadce7"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jan 19 11:22:44 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jan 19 12:09:15 2018 +0000"
      },
      "message": "Remove use of streams in TransportManager\n\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: Ie5d81ca9e8c8fcda482fa520aa46841800b88210\n"
    },
    {
      "commit": "070081bc4f3ed1863a917a5c2ce6aa8b813e7649",
      "tree": "271080c5bcfa2b4b65cde21915cadfc9d26c56e1",
      "parents": [
        "e8ffec166131d27e47fbf21c9db9f6812051b15f"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Jan 18 15:10:41 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Jan 18 19:20:49 2018 +0000"
      },
      "message": "Don\u0027t use transport binder with the lock held\n\nThere was a deadlock around the transport lock. We registered transports\nwith the transport lock held, this kicked-off transport onCreate()\nsynchronously, which called TransportManager\nupdateTransportAttributes(), which tried to acquire mentioned lock but\ncouldn\u0027t. This CL removes the lock for any call to the transport or\noperation that triggers a call to the transport (it was\nTransportClient.connect() or its variants).\n\nTest: Load GMSCore before fix, boot, register transports, check no ANR\nTest: m -j RunFrameworksServicesRoboTests\nTest: adb shell bmgr transport -c \u003ctransport\u003e, being registered \u0026 not\nBug: 72147303\nChange-Id: I72ca145d7fb73c0ef29c4aa1b620fea4969481db\n"
    },
    {
      "commit": "3fb6ea960f2cfd859c0c8207e5e5a470cb512a28",
      "tree": "4d5b3fff7ac6479274a113382f60a984d0f9ebd1",
      "parents": [
        "2baa9ab4be183ac1e432f08e8b5549d0bfa180c2",
        "96e0be0fd85c5476f1f269fd9006c00c9c230689"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 17 19:07:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 17 19:07:21 2018 +0000"
      },
      "message": "Merge \"Add BackupManager#isBackupServiceActive() system API\""
    },
    {
      "commit": "4e588baaa472bb6f31f1df6797ba87a483c511bf",
      "tree": "ecc192c4b13c5069f78883f7c51e7f6ec0a02ee9",
      "parents": [
        "ec26761260b82bfff69d7a6eff9f8d68ba9f1761",
        "aa56a6cde39b80fa1edd61052dc8ad595d4562cc"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Jan 17 15:39:45 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 17 15:39:45 2018 +0000"
      },
      "message": "Merge \"Move event logging to TransportClient and add connection event\""
    },
    {
      "commit": "96e0be0fd85c5476f1f269fd9006c00c9c230689",
      "tree": "8854cc031444b717069e3b277c269c38bd23519b",
      "parents": [
        "7d0e1f8065cc618ed8931f070777cda366e65fd0"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Tue Jan 16 16:14:54 2018 +0000"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Wed Jan 17 15:00:45 2018 +0000"
      },
      "message": "Add BackupManager#isBackupServiceActive() system API\n\nSo that GMSCore can find out and disable restore flow\nand Backup UI.\n\nBug: 33339643\nTest: gts-tradefed run gts -m GtsGmscoreHostTestCases -t com.google.android.gts.devicepolicy.DeviceOwnerTest#testBackupServiceActive (new GTS test in companion CL)\nTest: cts-tradefed run cts -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.DeviceOwnerTest#testBackupServiceEnabling\nChange-Id: I62c38dec2395d3aa926566d128b0067ce7d62c26\n"
    },
    {
      "commit": "ec2965de4642e43c519d526d065ea40f0de4a2ba",
      "tree": "0710ed8f01f4a199d0d5549a6d5a2e7c4a32ed61",
      "parents": [
        "7d0e1f8065cc618ed8931f070777cda366e65fd0"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Jan 17 11:21:19 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Jan 17 13:45:08 2018 +0000"
      },
      "message": "Dispose of TransportClient in updateStateForTransport()\n\nForgot this one :)\n\nChange-Id: I13126b94ad0272c912a3e1c3d2e8ee06692a1897\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: m -j RunFrameworksServicesRoboTests\nTest: adb shell bmgr transport [-c] \u003ctransport\u003e, check connections\n"
    },
    {
      "commit": "c141d08b703b7ccf754be92f8be3a7752fc15c1a",
      "tree": "b67928dd2d48c7a8fc63da8743479b6218d318ba",
      "parents": [
        "4fe359998771557a70555d06575790104c79c266"
      ],
      "author": {
        "name": "Lenka Trochtova",
        "email": "ltrochtova@google.com",
        "time": "Wed Dec 20 14:45:16 2017 +0100"
      },
      "committer": {
        "name": "Lenka Trochtova",
        "email": "ltrochtova@google.com",
        "time": "Tue Jan 16 22:24:11 2018 +0100"
      },
      "message": "New management API for making backups mandatory.\n\nLet the device owner make backups with a chosen backup\ntransport mandatory.\n\nBUG: 64012357\nTest: make RunFrameworksServicesRoboTests\nTest: manually together with the corresponding GmsCore change.\nTest: cts-tradefed run cts -m CtsDevicePolicyManagerTestCases --test\ncom.android.cts.devicepolicy.DeviceOwnerTest#testGetAndSetMandatoryBackupTransport\nTest: cts-tradefed run cts -m CtsBackupHostTestCase --test\nandroid.cts.backup.BackupDeviceOwnerHostSideTest#testMandatoryBackupTransport\n\nChange-Id: I9bfae5799beae3459659e697813b75a9b508ae55\n"
    },
    {
      "commit": "931abbc249ee9ed7e7403d5c2e23341b7ec468a6",
      "tree": "4c14e2d566297c2ef619bb4dd315fa6e00bb9c19",
      "parents": [
        "66792c4833f2c5db584bb3fc40ac494035319289",
        "41349c02a8867b956ff48752c2d3dffc124fc0fc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 16 18:39:27 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 16 18:39:27 2018 +0000"
      },
      "message": "Merge \"Binding on-demand #10: Remove permanent binding and add registration\""
    },
    {
      "commit": "aa56a6cde39b80fa1edd61052dc8ad595d4562cc",
      "tree": "b59d03e34a521a566b6009d3dab8f98b8fb7198b",
      "parents": [
        "41349c02a8867b956ff48752c2d3dffc124fc0fc"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jan 16 14:10:19 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jan 16 15:56:53 2018 +0000"
      },
      "message": "Move event logging to TransportClient and add connection event\n\nMove event logging from registration to TransportClient and add new\nevent for connection.\n\nChange-Id: I32022590a36b6f28f960e91f8880a0430e862852\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: m -j RunFrameworksServicesRoboTest\nTest: adb logcat -b events, check relevant events\n"
    },
    {
      "commit": "41349c02a8867b956ff48752c2d3dffc124fc0fc",
      "tree": "297fbb0857ac9ca7d4ca4df8ef57ab81f26f51f9",
      "parents": [
        "02c0e98600b6b0cdf912effea48877b5ddbafed9"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Jan 10 21:09:28 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jan 16 14:22:23 2018 +0000"
      },
      "message": "Binding on-demand #10: Remove permanent binding and add registration\n\nThis CL is the last of the P1 CLs for binding on-demand. During\ntransport-usage migration to binding on-demand the permanent-bound\ncode was still there and we piggybacked on it to register the\ntransports. Now that everything is migrated we removed the permanent\nbinding and used the registration code created in the CL #9\n(selectTransport) for registering all the transports.\n\nI put a 3s delay on registration after bring-up. Any operation that uses\nthe transport before that will gracefully fail.\n\nThe TransportBoundListener does not return a boolean anymore because it\ncan\u0027t fail anymore (we pass it the data it needs so that it doesn\u0027t need\nto be exposed to TransportNotRegistered exceptions). It\u0027s now called\nOnTransportRegisteredListener.\n\nEligible transports were a similar thing to valid transports from the\npermanent binding code, whose only need came from rebinding from what I\ncould tell. I saw no need for it anymore and removed it. If I missed\nsomething please shout :)\n\nI shuffled methods a bit in TransportManager.\n\nThere were a lot of changes to robo test infra to bring together\nTransportManager tests and the rest and re-use mocking infra.\n\nChange-Id: If61268228dd0bb724b718abd3dcafdad50e8b3dc\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: m -j RunFrameworksServicesRoboTest\nTest: runtest -p com.android.server.backup frameworks-services\nTest: gts-tradefed run commandAndExit gts-dev -m GtsBackupTestCases\nTest: gts-tradefed run commandAndExit gts-dev -m GtsBackupHostTestCases\nTest: cts-tradefed run commandAndExit cts-dev -m CtsBackupTestCases\nTest: adb shell bmgr enable true/false\nTest: adb shell bmgr list transports [-c]\nTest: adb shell bmgr transport \u003ctransport_name\u003e/-c \u003ctransport_component\u003e\nTest: adb shell bmgr restore \u003ctoken\u003e/\u003ctoken\u003e \u003cpackage\u003e/\u003cpackage\u003e\nTest: adb shell bmgr backup \u003cpacakge\u003e\nTest: adb shell bmgr run\nTest: adb shell bmgr wipe \u003ctransport\u003e \u003cpackage\u003e\nTest: adb shell bmgr fullbackup \u003cpackage\u003e\nTest: adb shell bmgr backupnow --all/\u003cpackages\u003e\nTest: adb shell cmd jobscheduler run -f android \u003cjob_id\u003e\nTest: adb shell dumpsys backup\nTest: D2D scenario\n"
    },
    {
      "commit": "0158d976c8abc5f5ff5cf4d84afda637e2d878d6",
      "tree": "aef5ccdd90e92625d715a065b8089742364bce22",
      "parents": [
        "060f3cc2b56ecf51f53ffecba19d5bc49d01ec48",
        "7b1d974d71a1c7033a56f443a39f76872789ce7b"
      ],
      "author": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Tue Jan 16 11:17:00 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 16 11:17:00 2018 +0000"
      },
      "message": "Merge \"Add FLAG_INCREMENTAL and FLAG_NON_INCREMENTAL to performBackup().\""
    },
    {
      "commit": "7b1d974d71a1c7033a56f443a39f76872789ce7b",
      "tree": "377705ce62a221fd0c28d2cffde6a29ec993837b",
      "parents": [
        "0fa4e1b744c6f344f2215519b7723529a514569b"
      ],
      "author": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Sat Jan 13 17:21:49 2018 +0000"
      },
      "committer": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Mon Jan 15 18:22:29 2018 +0000"
      },
      "message": "Add FLAG_INCREMENTAL and FLAG_NON_INCREMENTAL to performBackup().\n\nThese indicate if backup manager passed any previous state to the backup\nagent when building a backup. The transport will use these to decide\nwhether to clear any existing encryption related state for the app.\n\nI left the new flags as @hide for now.\n\nBug: b/71792427\nTest: Tested manually with a buid of GmsCore updated to process the new\nflag. I am attempting to write a robolectric test.\n\nChange-Id: Ica0f6f578cd7d1ad29af532a45a2ee6685c84747\n"
    },
    {
      "commit": "5a484dc45b086434096ebcd12c46884072ae8f4c",
      "tree": "1dad6ff363228c6f1d93e296ad0ac409385033a2",
      "parents": [
        "985cdcb88a262a905ddcc90b20177f2be292198b"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jan 02 15:53:44 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jan 09 12:37:06 2018 +0000"
      },
      "message": "Binding on-demand #9: selectBackupTransport[Async]\n\nMigrate selectBackupTransport()/selectBackupTransportAsync() to binding\non-demand. To mimic the bind-if-needed behavior that existed before for\nselectBackupTransportAsync we now register-if-needed in the selection.\nThis means a new registerTransport() method was created in the\nTransportManager. I intend to use this method with only few\nmodifications for the first-binding code.\n\nChange-Id: I39661cff0f7b2f8a27da37905dcd93e0aa9b1178\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: m -j RunFrameworksServicesRoboTest\nTest: adb shell bmgr transport \u003ctransport\u003e, observe logs\nTest: Robolectric tests for TransportManager will go in registration CL\n"
    },
    {
      "commit": "d8a0cb7556a0bb3cf29a0b96e4c4e91c853cddb0",
      "tree": "db27f27dc6623a8b63e97b7e8543f7f8c078c2c7",
      "parents": [
        "3ce996f288f9dff7304fd9d1b89255900ca2cfd9"
      ],
      "author": {
        "name": "Bartosz Fabianowski",
        "email": "bartfab@google.com",
        "time": "Fri Jan 05 11:56:26 2018 +0100"
      },
      "committer": {
        "name": "Bartosz Fabianowski",
        "email": "bartfab@google.com",
        "time": "Mon Jan 08 10:55:32 2018 +0100"
      },
      "message": "Start BackupManagerConstants content observer\n\nBackupManagerConstants has a content observer that is meant to be\nnotified whenever backup settings change. However, that observer is\nnever registered.\n\nBug: 71622864\nTest: cts-tradefed run cts-dev --module CtsBackupHostTestCase\nChange-Id: Icbd90ef3af83dd2f29e26a5d787505bcf5681154\n"
    },
    {
      "commit": "0b25273da202dba238e937ba2d471fd23109dbfb",
      "tree": "ea86b4bd9d3aca7bc14942383e6c6d180f16d0fe",
      "parents": [
        "96e622cd82e48d76e00ed04450b5ba5be1310168",
        "a8a01bffdf6a5566a2ebbad4a53464f3c0612814"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Fri Jan 05 22:46:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 05 22:46:08 2018 +0000"
      },
      "message": "Merge \"Ancestral restore versioning for PackageManagerBackupAgent\""
    }
  ],
  "next": "172bb616568cfa44da6f30885080269f5405e688"
}
