)]}'
{
  "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": "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": "ba557c860a51d1d3c9fc1acb4eaa07f499258bb9",
      "tree": "ffd1052568c863a03c2837ef2420fd481a5ccd26",
      "parents": [
        "3e72c4de15a61444edb7d1176ee5556644ae532c",
        "fd1d729574bb7e98c9f98dadbde170c968dc55af"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 20 18:53:40 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 18:53:40 2018 +0000"
      },
      "message": "Merge \"Increase PerformBackupTask unit coverage 2\""
    },
    {
      "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": "c6955626a9d4c97df10e4d16dc3184f55a09124b",
      "tree": "03a3c39ca393c359f1e3fd04115460ca7e58bfb9",
      "parents": [
        "09fa6568868aba5d8c31da2fbf956816e317d026",
        "c1b6ca05ef46de3e6f253c86da8013db2d4c1912"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jul 17 12:46:20 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 17 12:46:20 2018 +0000"
      },
      "message": "Merge \"Increase PerformBackupTask unit coverage\""
    },
    {
      "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": "62863825e08cd79f272f5ebfb11c728843b5b2a5",
      "tree": "5fbcff9ebc8a72e972574c68d82b82447dca23d4",
      "parents": [
        "9a936e967760e0d9e7787f0a4642c692c6d5c969"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Jun 27 12:50:44 2018 +0100"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jun 29 07:18:26 2018 +0000"
      },
      "message": "Fix file matching w/ full-backup rules xml\n\nDocumentation is pretty vague:\nhttps://developer.android.com/guide/topics/data/autobackup#XMLSyntax.\n\nBut there were a couple of issues:\n* It was prematurely returning false without consuming the rest of the\n  includes (cause of the bug linked).\n* It was using string comparison for checking if a file is in a\n  directory, which ended up flagging directories such as \"a/b\" as\n  containing files \"a/b.txt\".\n\nReviewers,\n\n* Please, pay full attention to test cases.\n* Since this is code move + code change, set diff as 2..latest to check\nchanges to the function.\n\nBug: 110720194\nTest: atest BackupUtilsTest\nTest: Backup and restore app w/ multiple directory includes, verify\n      everything restored\n\nChange-Id: Ic0fea43156ce8fb641af69ae73679289a20c291c\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": "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": "c8b9ff7b35742ac7680a3d3bc7795b4db8badb40",
      "tree": "b053bc978b228768daff5913ffa3628b13aeca28",
      "parents": [
        "48ad814926967cde019f4a42bcb2332b4bccbc58"
      ],
      "author": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Tue Apr 17 00:47:24 2018 -0700"
      },
      "committer": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Fri May 18 11:04:14 2018 -0700"
      },
      "message": "Avoid spamming native_set_position_mode by caching\n\nBug: 78116022\nChange-Id: I1a8522cad8b884cdb6ad21cbd897831cb8bf9372\nFixes: 78116022\nTest: m -j ROBOTEST_FILTER\u003dGnssPositionModeTest RunFrameworksServicesRoboTests\nTest: Built and manually tested.\n"
    },
    {
      "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": "455c5738a77637112b667f602852345cc0aa7b7d",
      "tree": "ec533be4e843f7d7ef9199659de6e76927541a8e",
      "parents": [
        "75e965baa85bec6abb44875d24de314322d0f73e",
        "0cb2b6a77a70eaa92f08ac0aae787fc77b041bee"
      ],
      "author": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Thu Apr 26 22:45:13 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 26 22:45:13 2018 -0700"
      },
      "message": "Merge \"Refactor GnssNavigationMessageProvider\" into pi-dev am: 04489c6320\nam: 0cb2b6a77a\n\nChange-Id: Ic9e83c089fffc1c59ab8a1d065730ce218f34cab\n"
    },
    {
      "commit": "23d921627c1c955a34bd2360d1c1f860090c7ea9",
      "tree": "3b6e41c0ffcbd560bfa00cc8abeb2c3749866db4",
      "parents": [
        "13d650d7cfbc328a3d02b9a252646252cacfac9e"
      ],
      "author": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Thu Apr 19 06:03:00 2018 -0700"
      },
      "committer": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Wed Apr 25 19:18:45 2018 -0700"
      },
      "message": "Refactor GnssNavigationMessageProvider\n\nBug: 77974819\nChange-Id: I1a904c7436fd3c47e0c0616f39af1ca6c039011a\nFixes: 77974819\nTest: m -j ROBOTEST_FILTER\u003dGnssNavigationMessageProviderTest RunFrameworksServicesRoboTests\n"
    },
    {
      "commit": "4d7c998b339b20ea0ec102a698af3f76eac3d615",
      "tree": "f212178ef22b3bcf49f334b7190d8ea31e712303",
      "parents": [
        "45d85735db2d8d1849f6f1206412ce8369824563",
        "a964ebe48478213d81cfd1b6f52c66be06175954"
      ],
      "author": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Wed Apr 25 18:52:35 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 25 18:52:35 2018 -0700"
      },
      "message": "Merge \"Refactor GnssMeasurementsProvider\" into pi-dev am: 13d650d7cf\nam: a964ebe484\n\nChange-Id: I8b2c38f37f8f738430ee58f53a7995151de6afee\n"
    },
    {
      "commit": "31f6a261ba2bd9195bc1eb723389b50fbc596bd7",
      "tree": "3b236ff3ce0d36349d8568eaba53ec7386ab5fea",
      "parents": [
        "03d6b03bac75fc13f90e85e49e06b374fa86e5f8",
        "87bbfe0529955ef98af457022a953d17d43ec040"
      ],
      "author": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Tue Apr 24 21:31:19 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Apr 24 21:31:19 2018 -0700"
      },
      "message": "Merge \"Refactor GnssGeofenceProvider\" into pi-dev am: 728cb519a5\nam: 87bbfe0529\n\nChange-Id: I18a1dc4af712e41c958a63bbcefccb59579d76b0\n"
    },
    {
      "commit": "8de215096092cbe08e99fb2f8a8af54e3328fa52",
      "tree": "2db2bee5dd7420ee8d06b154c42b35bba3030ab3",
      "parents": [
        "728cb519a5c734af0b7befa52d803d9d090a20aa"
      ],
      "author": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Mon Apr 23 01:40:25 2018 -0700"
      },
      "committer": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Tue Apr 24 21:18:06 2018 -0700"
      },
      "message": "Refactor GnssMeasurementsProvider\n\nBug: 77974102\nChange-Id: I9d993bd7a4a32ab2eef293c0efae3109348e7577\nFixes: 77974102\nTest: m -j ROBOTEST_FILTER\u003dGnssMeasurementsProviderTest RunFrameworksServicesRoboTests\n"
    },
    {
      "commit": "890ca8b508064a7653302ec301e249bf05d32f76",
      "tree": "34b18569e72a82b254b3243a3a6545ecd53483da",
      "parents": [
        "d5a1bb621a05d414ed630643898f98081893f71b"
      ],
      "author": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Mon Apr 16 22:11:31 2018 -0700"
      },
      "committer": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Mon Apr 23 22:01:46 2018 -0700"
      },
      "message": "Refactor GnssGeofenceProvider\n\nBug: 77974401\nChange-Id: Id377b14f9f6c47e031a863ee9096c9b5c66ebf08\nFixes: 77974401\nTest: m -j ROBOTEST_FILTER\u003dGnssGeofenceProviderTest RunFrameworksServicesRoboTests\n"
    },
    {
      "commit": "a37fd550f36187f15d2b3b978fac4014a15d5dd9",
      "tree": "3e435d7892b54840df7e82b4c14e80299daf81d9",
      "parents": [
        "4cb8826c287286cab1d89a4f44fa117c31391e43",
        "5e138ef62b8b31c99418cb0499cba59f28576c8c"
      ],
      "author": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Mon Apr 23 21:11:25 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 23 21:11:25 2018 -0700"
      },
      "message": "Merge \"Refactor GnssBatchingProvider\" into pi-dev am: 4257db35fe\nam: 5e138ef62b\n\nChange-Id: I7cc7a6ab2c9368089802b46c365aa30488a53c36\n"
    },
    {
      "commit": "4257db35fe7333a40329b8d107b8e30fd547d3d9",
      "tree": "7ab12a4908ba7b9b13f5cc87d38f62638f84839a",
      "parents": [
        "fd5166ddac5fceb3942cef9f95ff2920eac1ac84",
        "3557cc71ea9fe06e4352ce8657d2a4ea1c144994"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 24 03:56:20 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 24 03:56:20 2018 +0000"
      },
      "message": "Merge \"Refactor GnssBatchingProvider\" into pi-dev"
    },
    {
      "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": "3557cc71ea9fe06e4352ce8657d2a4ea1c144994",
      "tree": "5b345ca1012b470ac8d273588851d85a945da8d1",
      "parents": [
        "ae4518c73673f3f88c9752ad23532e884f0aaed3"
      ],
      "author": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Wed Mar 21 12:48:36 2018 -0700"
      },
      "committer": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Thu Apr 19 17:57:08 2018 -0700"
      },
      "message": "Refactor GnssBatchingProvider\n\nBug: 77974758\nFixes: 77974758\nTest: m -j ROBOTEST_FILTER\u003dGnssBatchingProviderTest RunFrameworksServicesRoboTests\n\nChange-Id: I907265358abdd5486dc1040c7d7bf912942bcb1d\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": "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": "14257cd2cca76151b4f31d79c513c599bbecdb90",
      "tree": "efe5e93b570592e82ce5fd44599d3186962a5bd0",
      "parents": [
        "5c96717321eea598c336d25a23471a61681016fe",
        "954238347ab80715d756abf38a11445951e401bf"
      ],
      "author": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Thu Apr 05 17:05:12 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 05 17:05:12 2018 -0700"
      },
      "message": "Merge \"Implements GNSS satellite blacklist\" into pi-dev am: b1bcab2210\nam: 954238347a\n\nChange-Id: I51f967e6d295a4c4e089af5b2b60a5f806d344f0\n"
    },
    {
      "commit": "66c7ea91b413c9d812047288efb343c16b23d865",
      "tree": "a469a605de399859073eda1e6e34d2da454a1027",
      "parents": [
        "6a95a2cc52ee10b74dacc560cfb9e41243fcd31f"
      ],
      "author": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Sun Mar 11 17:17:15 2018 -0700"
      },
      "committer": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Thu Apr 05 08:57:04 2018 -0700"
      },
      "message": "Implements GNSS satellite blacklist\n\nBug: 38269641\n\nTest: m -j ROBOTEST_FILTER\u003dGnssSatelliteBlacklistHelperTest RunFrameworksServicesRoboTests\nTest: atest SettingsBackupTest\nTest: Tested with adb on device\n\nChange-Id: Ifaa330bf74353ea5c8826f0000d1935258b8dbf2\n"
    },
    {
      "commit": "a1862b587f05b6ba36eda81a67748baaf66afc48",
      "tree": "7d5024db00ede50dee62df6ea8a3dbb802788f3e",
      "parents": [
        "fd533c751b31ea584c1aee29175b74718a191247"
      ],
      "author": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Tue Feb 20 17:05:59 2018 -0800"
      },
      "committer": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Tue Apr 03 21:20:06 2018 -0700"
      },
      "message": "Add NtpTimeHelper\n\n- Refactor GnssLocationProvider around handleInjectNtpTime\n- Add robolectric test for NtpTimeHelper\n\nBug: 73319937\nBug: 38269641\nTest: m -j ROBOTEST_FILTER\u003dNtpTimeHelperTest RunFrameworksServicesRoboTests\n\nChange-Id: Ie551a64641b03386c00cb2de5bbaee41150cc40c\n"
    },
    {
      "commit": "5b07d5bc6b28235d14dca3a526fee82ce8fb3b62",
      "tree": "c94369418872a16bfa5ba167bb4481f4bd5d10fc",
      "parents": [
        "1edca2c31f0391732d8c10f487fca7d982dd4d87",
        "a1e8fd61a691e1c6acd97b8031a6527d954ebdee"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Mar 29 12:04:40 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 29 12:04:40 2018 +0000"
      },
      "message": "Merge \"Unrevert update references to backup agent timeouts\""
    },
    {
      "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": "c87c4c38400932c0b2cf7f8d190e5236f79c37ba",
      "tree": "500420d267228334f772da6a6817fbf3ea664499",
      "parents": [
        "973d4bc7db54cee48258c8b12f5092bcce477f73"
      ],
      "author": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Tue Feb 20 17:05:59 2018 -0800"
      },
      "committer": {
        "name": "Yu-Han Yang",
        "email": "yuhany@google.com",
        "time": "Wed Mar 28 01:21:48 2018 +0000"
      },
      "message": "Add NtpTimeHelper\n\n- Refactor GnssLocationProvider around handleInjectNtpTime\n- Add robolectric test for NtpTimeHelper\n\nBug: 73319937\nTest: m -j ROBOTEST_FILTER\u003dNtpTimeHelperTest RunFrameworksServicesRoboTests\n\nChange-Id: Ie551a64641b03386c00cb2de5bbaee41150cc40c\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": "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": "292e654ed2f64ed9f478eb2d609d1e098114f1c1",
      "tree": "9db9d847ede269ba1356d1a2a90392bf4d9f0d50",
      "parents": [
        "cbeeed1255c0414afea45292a58bd533b67efa07"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Mar 02 12:57:22 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Mar 05 17:12:53 2018 +0000"
      },
      "message": "More tests for PerformBackupTask\n\nTests around new request non-incremental flag from the transport. Also moved\nthe tests to the right package.\n\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: I1f6475c669b22a858d8a4ec01b926153eb73b70e\n"
    },
    {
      "commit": "c3ec538d4ef299bef2b7abd4b99ff84265fd5e8e",
      "tree": "0cf172f518931ebcee1678437105be19d22897e6",
      "parents": [
        "0f0d1ab1d370bb3f99a288a85b03f9b551eb1383"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Mar 02 09:32:28 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Mar 02 14:17:21 2018 +0000"
      },
      "message": "Add transport tests\n\nSome tests that were lacking.\n\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: Ia6800e950e96d7481d5c74f62147ad3b9b1493ba\n"
    },
    {
      "commit": "c22741ba320fad65ac468169ab9cfc72bc579e32",
      "tree": "a349b80bebe58bd774de98008f17e6a988451269",
      "parents": [
        "5240541e0173116bf0a088241057ad2e63fc9113",
        "cea93536bc47a76d4e8ea420990e39f4e54d712b"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Feb 28 13:49:26 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 28 13:49:26 2018 +0000"
      },
      "message": "Merge \"More tests for ActiveRestoreSession - 2\""
    },
    {
      "commit": "cea93536bc47a76d4e8ea420990e39f4e54d712b",
      "tree": "8a6e8b9438aff0b7ae32f43796c2b5d97241001b",
      "parents": [
        "12b6bafcf443723c0479d255af373df201d1ae6f"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Feb 28 11:05:18 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Feb 28 11:07:30 2018 +0000"
      },
      "message": "More tests for ActiveRestoreSession - 2\n\nAround restorePackage().\n\nTest: m - j RunFrameworksServicesRoboTests\nChange-Id: I291d899d5bb786a1d394e758698418718d6c4d9b\n"
    },
    {
      "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": "c709366f0b9716012a63e04117dac2211c514f0d",
      "tree": "57c2ca55244543e0557e46437b1629a3e745e830",
      "parents": [
        "8a771ee9f47bb6456a6410c6403a1d1ed345e7fe",
        "12b6bafcf443723c0479d255af373df201d1ae6f"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Feb 27 15:05:02 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 27 15:05:02 2018 +0000"
      },
      "message": "Merge \"More tests for ActiveRestoreSession\""
    },
    {
      "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": "cea9e6df275fefda6aff584404372df786df8304",
      "tree": "fdbe889e6c9e99d5ef3093c0d3e1b70741e7482b",
      "parents": [
        "020c03aa55f4ad423dc7b54d2a44415661c4b844"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 22 18:06:44 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 26 08:11:21 2018 -0800"
      },
      "message": "Frameworks: Annotate JUnit4 tests with @Test \u0026 @Ignore\n\nMollify Errorprone.\n\nBug: 72076216\nBug: 73792882\nTest: m javac-check RUN_ERROR_PRONE\u003dtrue\nTest: m RunFrameworksServicesRoboTests\nTest: atest AppStateTrackerTest\nTest: atest ActivityRecordTests\nChange-Id: I8c496067e850a6c1dc17fdadc0a39c621e3a2f68\n"
    },
    {
      "commit": "ff589c95302cbdf14f9c536cb5d8644984af2861",
      "tree": "de1c84cf7b28f5826d024f19e46ae16a1b5a1695",
      "parents": [
        "55a3fe78c3f642c873193c4fd1cf2fcc1849ea55"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Sun Feb 25 12:51:25 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Feb 26 10:30:58 2018 +0000"
      },
      "message": "Remove FrameworkShadowPackageManager\n\nRobolectruc upstreamed this and we picked up in 3.6.1 already :)\n\nTest: m - j RunFrameworksServicesRoboTests\nChange-Id: I9df1d1dfc56c5aa1d27e36396ddd21c053a3199d\n"
    },
    {
      "commit": "b5e0931dcd0745dba4633dce9853114b1ee15a46",
      "tree": "fa49d31710dd1906f5c6ca4c35c69da40d6fa548",
      "parents": [
        "72b7966b06b6aea1bc0f558f655e7510e6d01fc5"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Feb 19 13:55:23 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Feb 22 13:18:02 2018 +0000"
      },
      "message": "Extend XML parser to allow optional requiredFlags attribute\nfor \u003cinclude /\u003e rules in \u003cfull-backup-content\u003e specification\n\nGive an app developer the option to include files based on the\ntransport flags exposed by the transport. This allows conditionally\nincluding files as long as the transport identifies itself as\nfor instance encrypted or device-to-device.\n\nExtend the parsing mechanism to read optional requiredFlags\nattributes, and extend existing structures to encompass\nthat data for BackupAgent to retrieve and act on it\nbased on FullBackupDataOutput#getTransportFlags().\n\n-- Changes in robotests/\n\nThe old version of this CL (that already got reverted) broke our Robolectric\nsuite because it added an inner class to FullBackup and a dependency on it from\nBackupAgent. FullBackup wasn\u0027t being built from Android tree (instead it was in\na prebuilt Robolectric snapshot jar of the framework) but BackupAgent was,\nwhich resulted in not finding the inner class.\n\nSo, also in this CL. Changing our tests to include everything under\nplatform/base/core/java/android/app/backup from Android tree.\n`m -j RunFrameworksServicesRoboTests` is green now\n\nBug: 72484288\nTest: m -j RunFrameworksServicesRoboTests\nTest: runtest frameworks-core -c android.app.backup.FullBackupTest\nTest: make cts -j40 \u0026\u0026 cts-tradefed run cts -m CtsBackupHostTestCases -t android.cts.backup.FullbackupRulesHostSideTest\nChange-Id: Ideaed59f8337257aa6a882ff0ce80c170b17d55e\n"
    },
    {
      "commit": "8553d277459f57e623aac27c145c0c9895454395",
      "tree": "2cd75d960b3e4eb58a877ffc45467c86331af184",
      "parents": [
        "142f5717d335e59ee6c0302ba3cc28a31df6aacd"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Feb 13 11:16:37 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Feb 16 14:27:37 2018 +0000"
      },
      "message": "Add tests for ActiveRestoreSession\n\nAdded first set around getAvailableRestoreSets() plus some tidy-up\naround setup and unused stubs.\n\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: I9b3bf548251f1262907de96407184bd1822b3429\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": "228a649635253cb1d321fa8597be01b2f5579960",
      "tree": "bdc63b0740ba26b9fb0063808f9ec58d6bc812e9",
      "parents": [
        "b97ea7ea23cf7af6eaf98fd3db8318922d54318f"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Sat Feb 10 13:08:52 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Feb 12 09:18:12 2018 +0000"
      },
      "message": "More unit tests for PerformBackupTask\n\nAround transport and agent failures. Caught a few possible errors, check\nTODOs.\n\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: I9d04f4253511032473885ce6c0856c52639f2957\n"
    },
    {
      "commit": "b97ea7ea23cf7af6eaf98fd3db8318922d54318f",
      "tree": "acffbaa4045ab52c199c9b89f184836d9d787d05",
      "parents": [
        "44dbca0999d1c20237383ff9a2199a21ccc4d4d4"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Feb 08 15:26:15 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Feb 08 15:39:10 2018 +0000"
      },
      "message": "Add tests for PerformBackupTask\n\nTests for agent/transport interaction and some more.\n\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: Ie90044bdbdd32e6cfa70d6228841fec2d9fb0188\n"
    },
    {
      "commit": "03b767733c3efea4bcb0f57122a809091966d90d",
      "tree": "1098f68f3d70e3e01de12765d00f8d8626193f15",
      "parents": [
        "88ca395b5bc5e820b0cd459aff6edf6db5926afc"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jan 30 17:43:47 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jan 30 17:52:08 2018 +0000"
      },
      "message": "Annotation for package in FrameworkRobolectricTestRunner\n\nMakes it easier to maintain the tests.\n\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: I798b7c980b4e3426baa6a205d4ca16f82b42109d\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": "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": "2ab9c4c95362e4c7860a71983226504ee6c2bf37",
      "tree": "ea41a17ff1a6636000ddf1585a0c65f1f080ca4a",
      "parents": [
        "9ec040771540a731da7f6260097253c4dd463137"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Wed Jan 17 16:39:59 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Wed Jan 17 16:52:46 2018 +0000"
      },
      "message": "Rename Robo tests to BackupManagerServiceTest\n\nBug: 71988336\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: I79acd816e2e1fc320fd2bea39692ed52cf56a67e\n"
    },
    {
      "commit": "9ec040771540a731da7f6260097253c4dd463137",
      "tree": "0a879275de3951294f0a51bd718360eb39a91c35",
      "parents": [
        "7e269fca403581f19bfa8dbcffb039fbe40dd48d"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Tue Jan 16 14:30:59 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Wed Jan 17 16:50:45 2018 +0000"
      },
      "message": "Move BackupManagerServiceTest to Robolectric framework\n\nBug: 71988336\nTest: m -j ROBOTEST_FILTER\u003dBackupManagerServiceRoboTest RunFrameworksServicesRoboTests\nChange-Id: I81c45267ef98b66c05383bfdca9a1b5ab4ccbfbd\n"
    },
    {
      "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": "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": "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": "789bf281266eda90b2471af6bcc86e2d1e4cdcaa",
      "tree": "406c5e1880349e7b1aa270bff8f783c16b92690a",
      "parents": [
        "2bb444136a10731f73fe7e7052a0fcbec0472262"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Mon Jan 15 12:10:38 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Mon Jan 15 12:31:58 2018 +0000"
      },
      "message": "Update transport tests for binding on-demand to support SDK 26 API\n\nAfter Robo 3.5.1 upgrade, these tests should support the new SDK.\n\nBug: 69153972\nTest: m -j RunFrameworkServicesRoboTests\nChange-Id: I12be8668b0c8bb7933cc1a30717356d86f1f3737\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": "172bb616568cfa44da6f30885080269f5405e688",
      "tree": "257c3952ffe7390bcbec2fd4386751886aeea459",
      "parents": [
        "d9757a7d59a6ea91c82eee32c7e87a8f42a84cf3",
        "516ac95746bd1091732e4bc407e2941debdc38d9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 05 18:35:55 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 05 18:35:55 2018 +0000"
      },
      "message": "Merge \"Remove transport dir name from TransportClient\""
    },
    {
      "commit": "a068cd68c03b09c1a49f6c50d8c305e6cbf0287b",
      "tree": "73c0e5015f08928fc66fb41b0944f870978d0375",
      "parents": [
        "61823f3a23750d672947ba7b5bb6dd4f1ff5503f",
        "fa51853ae56ed74a0c854c01851cb1435453005f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 05 18:21:53 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 05 18:21:53 2018 +0000"
      },
      "message": "Merge \"Binding on-demand #8: Miscellaneous usages\""
    },
    {
      "commit": "516ac95746bd1091732e4bc407e2941debdc38d9",
      "tree": "997414fcfea8c38d8433dc6f33b54706d192df87",
      "parents": [
        "fa51853ae56ed74a0c854c01851cb1435453005f"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Jan 04 14:16:32 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jan 05 16:57:51 2018 +0000"
      },
      "message": "Remove transport dir name from TransportClient\n\nTo be able to re-use the TransportClient infra for transport\nregistration, I need to remove transport dir name property from\nTransportClient because it\u0027s not available before registration\nitself. As a result callsites that used getTransportDirName()\nfrom TransportClient will have to go through the\nTransportManager for that. Bryan suggested that the\nTransportClient wasn\u0027t the best place for the property before.\n\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: m -j RunFrameworksServicesTests\nChange-Id: I3fa335faf97d63adfad1a929336073a70fc8bc02\n"
    },
    {
      "commit": "fa51853ae56ed74a0c854c01851cb1435453005f",
      "tree": "d9ae04564295053eb2b8621f55fa2f64b63bb1a3",
      "parents": [
        "dc4cb146315240441fc8d9c05fe8dd63370a7c57"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jan 02 16:01:53 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jan 05 16:33:33 2018 +0000"
      },
      "message": "Binding on-demand #8: Miscellaneous usages\n\nMigrate usages of the transport binder to binding on-demand:\n* getDestinationString()\n* isAppEligibleForBackup()\n* dump()\n\nFor getDestinationString() we\u0027ll be introducing an invisible bug for\npeople that haven\u0027t updated GMSCore to include the usage of\nupdateTransportAttributes() API introduced in earlier CL. The bug is\nthat that text won\u0027t change, it\u0027ll remain constant. It\u0027s invisible\nbecause currently only place that uses that method is Settings in some\ncircumstances that depend on the transport, and those circunstances\ndon\u0027t happen with our transports. Check http://ag/1831025.\n\nFor isAppEligibleForBackup(), a new filterAppsEligibleForBackup() is\ncreated and there we bind on-demand.\n\nChange-Id: Idc9e31f0e8eda8531e204c05a84fafdaf0247d08\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: adb shell dumpsys backup, observe destination of transports\nTest: adb shell bmgr backupnow --all, observe only eligible apps got backed-up\nTest: Force-loaded settings screen and observed destination string\nTest: m -j RunFrameworksServicesRoboTests\n"
    },
    {
      "commit": "7f97228e29690d63dba3e6a9d47fcd4e71398e94",
      "tree": "a60523be1f3347a730e21fa9a9e323df237b629a",
      "parents": [
        "9fcc8ffd7bdc2e604df39ebaf9a5e9fd1385de4e"
      ],
      "author": {
        "name": "Bartosz Fabianowski",
        "email": "bartfab@google.com",
        "time": "Wed Jan 03 11:49:06 2018 +0100"
      },
      "committer": {
        "name": "Bartosz Fabianowski",
        "email": "bartfab@google.com",
        "time": "Wed Jan 03 12:43:09 2018 +0100"
      },
      "message": "Address review comments from 02a1c08\n\nThis CL addresses a few remaining review comments from 02a1c08,\n\"Add notification on succesful backups\"\n\nBug: 63885845\nTest: make RunFrameworksServicesRoboTests\nChange-Id: Id42777a213c37400f24f6ecb11ecacbd55a2e123\n"
    },
    {
      "commit": "a67d10763a9a65639c37aa118482c297b85decdd",
      "tree": "7b328d78ab84bbdbcc7d7302fa1ed09dd84eee69",
      "parents": [
        "ea713a3882d11675ca067ad63ab01a664d012f3b",
        "79155590e67a30f520677d9d22e215365d595a73"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jan 02 11:34:33 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 02 11:34:33 2018 +0000"
      },
      "message": "Merge \"Binding on-demand #7: PerformInitializeTask usage\""
    },
    {
      "commit": "02a1c08096b705f8091951ac7d9afb7f7166b66f",
      "tree": "abc8470ea4de080ad9135a73925af858a7524e73",
      "parents": [
        "2301211526232de0f444160cdbde0da2ed3faeb9"
      ],
      "author": {
        "name": "Denis Kuznetsov",
        "email": "antrim@google.com",
        "time": "Wed Dec 27 16:21:22 2017 +0100"
      },
      "committer": {
        "name": "Denis Kuznetsov",
        "email": "antrim@google.com",
        "time": "Thu Dec 28 20:12:03 2017 +0100"
      },
      "message": "Add notification on succesful backups\n\nBug: 63885845\nTest: make RunFrameworksServicesRoboTests\n\nChange-Id: I6c8d04de7f5d7e82d695b1bf36de0aa27452db19\n"
    },
    {
      "commit": "79155590e67a30f520677d9d22e215365d595a73",
      "tree": "a7f6919b8a3e1e6429d96eeae517582aebbff896",
      "parents": [
        "edf829f41bd9147525e88eeef9828951fa44cc0d"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Dec 21 20:47:17 2017 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Dec 22 17:06:20 2017 +0000"
      },
      "message": "Binding on-demand #7: PerformInitializeTask usage\n\nMigrate transport initialization task to binding on-demand. Added\nRobolectric tests for the task as well.\n\nBug: 17140907\nTest: m -j RunFrameworksServicesRoboTest\nTest: adb shell bmgr init \u003ctransport\u003e, observed logs \u0026 transport dir\nChange-Id: I2d6c1acd31741169080edef2f938fabf43b0649a\n"
    },
    {
      "commit": "2447687352bcc92c0ce4b857e0d9d13a14ce06f0",
      "tree": "99db400c2dedc92b9936efec352f0e3117ff346a",
      "parents": [
        "81265cf6ff0f96b1b1028b94aa4982434bf44425"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Dec 21 11:43:16 2017 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Dec 21 11:46:00 2017 +0000"
      },
      "message": "Use testng for utilities in tests\n\nFrameworks services tests and cts already use it.\n\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: Ib613997e9a7278f6b424cd4ce4aa16c112756564\n"
    },
    {
      "commit": "7f14edea1d84bde1824529178c609fa5961051d2",
      "tree": "956d48f9cfd0a052dd9111dd72652671f19a2af3",
      "parents": [
        "c4cded9c80a50b29141fbd5d34dbeeeb186df6a7"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Dec 08 19:55:03 2017 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Dec 15 16:32:30 2017 +0000"
      },
      "message": "Binding on-demand #6: Transport attributes usage\n\nMigrate the attribute queries from the Transport to the\nTransportManager. Migrate all calls except currentDestinationString\nbecause that\u0027s the one that changes and we should only migrate\nafter we have GMSCore that implements the push-from-transport\nmodel.\n\nLooking at method recordInitPendingLocked(), we only sent\nMSG_RETRY_INIT if the transport threw while calling transportDirName\nor the binder was null. With binding on-demand both of these cases\ncan\u0027t happen - i.e. we can\u0027t fail anymore. So, I removed the\nmessage entirely.\n\nChange-Id: I45a305704274c8b0c88637e3ccafc658639b2dfa\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: m -j RunFrameworksServicesRoboTests\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: runtest -p com.android.server.backup frameworks-services\nTest: adb shell bmgr backupnow \u003cpackages\u003e\nTest: adb shell bmgr fullbackup \u003cpackages\u003e\nTest: adb shell cmd jobscheduler run -f android \u003cjob_id\u003e\nTest: adb shell bmgr enable false (being enabled before)\nTest: adb shell dumpsys backup\nTest: adb shell bmgr init \u003ctransport\u003e\nTest: Observed logs and used debugger to check proper code was being\nTest: called in above commands\n"
    },
    {
      "commit": "c4cded9c80a50b29141fbd5d34dbeeeb186df6a7",
      "tree": "6da9a551123c10a077c571c6f292c0bd2aa75a5f",
      "parents": [
        "7d42374ee610c4ef0728eb49a39b7b96d7214798",
        "998fdaa63622a8769b50a01fff14d9cc2251632f"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Dec 14 13:19:46 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 14 13:19:46 2017 +0000"
      },
      "message": "Merge \"Binding on-demand #5: PerformUnifiedRestoreTask usage\""
    }
  ],
  "next": "90a880232847fd7d963c5805c9b76db66df115d8"
}
