)]}'
{
  "log": [
    {
      "commit": "14c716c911dea7eeb28a0040d7807d6ea83464a9",
      "tree": "28887b48aab6c86d8ac10f9c08768d5f62eefbe6",
      "parents": [
        "0db51ad50ef0791b196c33759f3ad2c59b2d9395"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Mar 05 20:39:04 2018 +0000"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Mar 05 20:40:23 2018 +0000"
      },
      "message": "Revert \"Allow restoring of apps that rotated key\"\n\nThis reverts commit 313d225cd19885979596cf690103a8d77e19c3dc.\n\nReason for revert: b/74159113\n\nChange-Id: I483ecdd80d26fca8451cd270b4fcbe34379839cb\n"
    },
    {
      "commit": "9371be3b88e2bcd6da6223b4cf59a00d32147133",
      "tree": "c5ba317009d78804fed0b9e82711f926642f00ae",
      "parents": [
        "8ab50a9ea4caeccafba160097e640d42b6156ed9",
        "760c1f552c42e11a2fc1ca32acf474ad846217d5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 28 14:26:34 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 28 14:26:34 2018 +0000"
      },
      "message": "Merge \"Bmgr about running backups\""
    },
    {
      "commit": "760c1f552c42e11a2fc1ca32acf474ad846217d5",
      "tree": "81b0596cc81f60dee2670d492724f68319a3321c",
      "parents": [
        "53346e39ecc7b21758246d8eb302f73c29e2f718"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Feb 28 12:10:18 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Feb 28 12:11:26 2018 +0000"
      },
      "message": "Bmgr about running backups\n\nSays that backups can be canceled if one already running. Put message\nfor running backups in dumpsys for checking.\n\nBug: 72484277\nTest: Triggered backup, checked dumpsys and bmgr backupnow\nChange-Id: I028cf663858e374389f50175aaf5a3e8c9d45e42\n"
    },
    {
      "commit": "961f409d377e25dba091b065d36190deb56eb84d",
      "tree": "e90479c3044df4e2db6708edcbbab0ef8d2a0c5a",
      "parents": [
        "6dd84bef21718a46fe8b408db9f8f39e97f385d9",
        "313d225cd19885979596cf690103a8d77e19c3dc"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Wed Feb 28 10:08:14 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 28 10:08:14 2018 +0000"
      },
      "message": "Merge \"Allow restoring of apps that rotated key\""
    },
    {
      "commit": "0b0ebb616dd09a51fbe541cef4a713e598adcb77",
      "tree": "f9c0afdcbf21e583f0c8217a43e619204afb3c7c",
      "parents": [
        "8c18d38a8a171ef97c80f2d16755a906732bc3d1",
        "1b9877ab44a45542300adcd3f8a2f84c1d0933cc"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Tue Feb 27 17:39:58 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 27 17:39:58 2018 +0000"
      },
      "message": "Merge \"Move transport constant to BackupTransport API\""
    },
    {
      "commit": "1b9877ab44a45542300adcd3f8a2f84c1d0933cc",
      "tree": "9e3ed836b2793c9819bd0a3738b7dd619b01e724",
      "parents": [
        "6611f83f5ce645954ca9a41d579d147be2178813"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Tue Feb 20 12:06:56 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Tue Feb 27 15:17:56 2018 +0000"
      },
      "message": "Move transport constant to BackupTransport API\n\nPreviously, the transport registration extra was a private\nconstant. Since GMSCore depends on this value being passed, moving\nit to a public API prevents having to define it twice in\nframework and GMSCore, and ensures compatibility between the two.\n\nTODO: Update GMSCore with this constant once this drops\ninto GMSCore.\n\nBug: 72730566\nTest: 1) m -j ROBOTEST_FILTER\u003dTransportManagerTest RunFrameworksServicesRoboTests\n2) m -j ROBOTEST_FILTER\u003dTransportClientManagerTest RunFrameworksServicesRoboTests\n\nChange-Id: I8f7a2ca0275047a5d3cc1a530cd86499d0170f2f\n"
    },
    {
      "commit": "12b6bafcf443723c0479d255af373df201d1ae6f",
      "tree": "2991476be70e97b49179762cca20856ecef97ac5",
      "parents": [
        "ff589c95302cbdf14f9c536cb5d8644984af2861"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Feb 26 14:07:01 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Feb 27 12:24:34 2018 +0000"
      },
      "message": "More tests for ActiveRestoreSession\n\nAround restoreAll() and restoreSome(). And some small refactorings in\nrestore code paths.\n\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: I0ff446ef4dcf15eade189c79e90a22c0f2eda0d6\n"
    },
    {
      "commit": "313d225cd19885979596cf690103a8d77e19c3dc",
      "tree": "92d6fb89eaba22f00bb1bebd3b3b36db226af28d",
      "parents": [
        "53346e39ecc7b21758246d8eb302f73c29e2f718"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Wed Feb 07 17:47:10 2018 +0000"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Feb 26 11:05:40 2018 +0000"
      },
      "message": "Allow restoring of apps that rotated key\n\nRestoring of apps that rotated key wouldn\u0027t be possible due to\nexplicit signature matching.\nAmend signature matching strategies to take into account\napps that have rotated key.\n\nTest: atest frameworks/base/services/tests/servicestests/src/com/android/server/backup/utils/AppBackupUtilsTest.java\nTest: atest frameworks/base/services/tests/servicestests/src/com/android/server/pm/backup/BackupUtilsTest.java\nTest: m -j RunFrameworksServicesRoboTests\nTest: runtest -p com.android.server.backup frameworks-services\nBug: 64686581\nBug: 34345052\nChange-Id: I91b5ae0afb6f2714ceae02b4d4dc202d6cd4fe4e\n"
    },
    {
      "commit": "92c8756876c440564ff36199c9ef95d50af57429",
      "tree": "d22da1fd8eceb4427ecbad594708c3fee9e2d2ed",
      "parents": [
        "add2d38cfc243f0faecb6a6d73addd22eeffab17"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Fri Feb 23 15:16:04 2018 +0000"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Fri Feb 23 15:16:08 2018 +0000"
      },
      "message": "Support bmgr wipe also for full backup apps\n\nPreviously we\u0027d only really clear data for K/V packages,\nnow we consult with the journal of ever backed apps.\n\nBug: 28405555\nTest: manual (adb shell bmgr wipe com.google.android.gms/.backup.BackupTransportService com.android.wallpaperbackup\n      after adb shell bmgr backupnow --all)\nTest: m -j RunFrameworksServicesRoboTests\nTest: runtest -p com.android.server.backup frameworks-services\nChange-Id: If99cb2c8ab9ddc05386d634818f4585ec47efc00\n"
    },
    {
      "commit": "c31222f009beb4de7b37275a29d5947ae98c15ee",
      "tree": "b5674acd601f2a461e03dd60ab208a9b4cfbf6a1",
      "parents": [
        "0eb747e51eb19ad328d08c3a2e435cbedda0e352"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Thu Feb 15 14:50:40 2018 +0000"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Thu Feb 15 14:50:44 2018 +0000"
      },
      "message": "Add Backup and Restore directory OWNERS\n\nBug: 73454476\nChange-Id: Id28cbf7d919e95720c51d6a14388e9fea9d84650\n"
    },
    {
      "commit": "0eb747e51eb19ad328d08c3a2e435cbedda0e352",
      "tree": "3244074fd2e289cd9f36cf93416b2f355574b50a",
      "parents": [
        "74d8796defbb97a6474c91c1a578518cc61c8e36",
        "36c5613a933807389e39b36e678513794fd0a7dc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 15 13:57:50 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 15 13:57:50 2018 +0000"
      },
      "message": "Merge \"Update transport connection with registration info\""
    },
    {
      "commit": "36c5613a933807389e39b36e678513794fd0a7dc",
      "tree": "8df1331e409636368675346b2206089d614e1a09",
      "parents": [
        "bcaeb104c2d678a1d35aed925f6b9570223216b0"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Fri Feb 09 16:01:07 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Feb 15 10:40:01 2018 +0000"
      },
      "message": "Update transport connection with registration info\n\nWhen connecting to a transport, let the transport\nknow if this connection is for registration. This is to\nprevent updating transport attributes during registration\nin GMSCore.\n\nBug: 72730566\nTest: 1) m -j ROBOTEST_FILTER\u003dTransportManagerTest RunFrameworksServicesRoboTests\n2) m -j ROBOTEST_FILTER\u003dTransportClientManagerTest RunFrameworksServicesRoboTests\n3) adb reboot; adb logcat | grep BackupTransportManager; check no errors with \"...not registered tried to change description\"\n4) GMSCore Robo tests\nChange-Id: I5adf6ea3e668a8e8ed8c568728d109814b6f8975\n"
    },
    {
      "commit": "bbab23ff97688f33c5cc41d5d0e134c0d9f58c6c",
      "tree": "495d74767efc00b7aebc085751ee61af1636bff6",
      "parents": [
        "b5cc72055fd3f4a8476f1b00931bc96ba366a859"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 07 15:34:27 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 08 02:19:42 2018 -0800"
      },
      "message": "Frameworks: Annotate trivial @GuardedBy in services/ misc\n\nAdd @GuardedBy for simple functions that require a single lock\nand are named XYZLocked.\n\nDerived by errorprone.\n\nBug: 73000847\nTest: m\nTest: m javac-check-framework RUN_ERROR_PRONE\u003dtrue\nChange-Id: Id1d9fbe5018250e3b9d1466fc5f670d5ad902fa3\n"
    },
    {
      "commit": "d38749b6ff3f2cf35f656e16ee09eeafd8afb7c0",
      "tree": "b17ac405deae0a636ba3b279ad1f3726ac304cb4",
      "parents": [
        "c41d14828faf780c786f967f1dd781d3fb883e6a"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Thu Jan 25 12:46:07 2018 +0000"
      },
      "committer": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Mon Jan 29 12:43:20 2018 +0000"
      },
      "message": "Update adb backup/restore confirmation activity on new intent\n\nNow, if adb backup/restore is currently active and the activity is\npassed a new intent, the activity instance would be updated with the new intent.\nSame for if the activity is relaunched.\n\nBefore, the activity would ignore intent changes and use old tokens and\nviews, leading to backing up/restoring wrong files.\n\nBug: 65723308\nTest: adb backup -f old.ab -all; ctrl-c; adb backup -f new.ab -all;\ngts-tradefed run commandAndExit gts-dev -m GtsBackupHostTestCases\nChange-Id: Ifa11efecf82a682a578dab7e5795328ab7d0c054\n"
    },
    {
      "commit": "fe4ae0c5b1bc3b31adc4cc2c5a0197e29e97b6bc",
      "tree": "be5ee1a4cb2113a220cf4a8a7fdfcb33fd1f2dd4",
      "parents": [
        "1caef5b882111f1911fd3438fb11fbf5793a89a5"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Thu Jan 25 15:24:00 2018 +0000"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Fri Jan 26 10:37:32 2018 +0000"
      },
      "message": "Rename RefactoredBackupManagerService to BackupManagerService\n\nThe interface will be removed in a subsequent CL, it will be\neasier to deal with merge conflicts.\n\nTest: 1) m -j RunFrameworksServicesRoboTests\n      2) runtest -p com.android.server.backup frameworks-services\nBug: 65823538\nChange-Id: I37c4c6758c646e1b18889ed05aa1b1d7c6129cf0\n"
    },
    {
      "commit": "1e7f8014a846bfe3f42ac92a0d706528689e6eca",
      "tree": "a4f7d2580d442f6f12e0f564d507fa2534fb6786",
      "parents": [
        "6fef13975a255d33e076ba25408e75db6393dfe0",
        "3184cc99486fca8d55287a96cb91f87603378201"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 25 16:08:15 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 25 16:08:15 2018 +0000"
      },
      "message": "Merge \"Binding on-demand #12: Log and unbind dangling TransportClients\""
    },
    {
      "commit": "3184cc99486fca8d55287a96cb91f87603378201",
      "tree": "b6f55e7346e3a582e720f70bbfb7e9a7fb6bff57",
      "parents": [
        "b5253b65a4325501384605aec09a28e40198c844"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Sat Jan 20 16:54:58 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Jan 25 12:38:04 2018 +0000"
      },
      "message": "Binding on-demand #12: Log and unbind dangling TransportClients\n\nExtracted connection in TransportClient to static class with weak\nreference to TransportClient so that TransportClient is garbage\ncollected when left undisposed. Created finalize method that logs,\nunbinds TransportClient and warns using CloseGuard.\nAlso adjusted some logging.\n\nBug: 17140907\nTest: m -j RunFrameworksServicesRoboTests\nTest: Manually left a dangling TransportClient and observed logs and\nconnections\n\nChange-Id: I30f89e7c27579089ba29936483abd1b60c9e8e37\n"
    },
    {
      "commit": "39194c0582463be17513b9ba82802a703b10c934",
      "tree": "bcf9779268b4336a3a1dcccfd38a38d893cefeb2",
      "parents": [
        "3746a7cabb175b31751e479f6b233fcf80ac1cc4"
      ],
      "author": {
        "name": "Robert Berry",
        "email": "robertberry@google.com",
        "time": "Thu Jan 11 13:50:56 2018 +0000"
      },
      "committer": {
        "name": "Robert Berry",
        "email": "robertberry@google.com",
        "time": "Thu Jan 25 09:28:55 2018 +0000"
      },
      "message": "Add #getTransportFlags to BackupDataOutput\n\nThis allows a BackupAgent to check whether the transport has client-side\nencryption enabled. It can then use this information to decide whether\nto back up more sensitive data.\n\nBug: 72299360\nTest: Manually verified full \u0026 kv backup agents receive transport flags\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: Ibd9b5f9479815e1721e9d6b7663d892b9ab3fcae\n"
    },
    {
      "commit": "f5b99ad2ea12e65ac66321fdf57e3b031f3985d0",
      "tree": "6f779e8865b4107dce3f5f0628ef781cb3407666",
      "parents": [
        "8056728f7c0b97d41fb79fbba0add985db2679ab"
      ],
      "author": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Tue Jan 23 13:53:29 2018 +0000"
      },
      "committer": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Tue Jan 23 17:16:28 2018 +0000"
      },
      "message": "Let the transport ask for non-incremental backup.\n\nAdd a new performBackup() return code TRANSPORT_PACKAGE_DATA_LOST. If\nthe transport returns this then delete the state for the package and\nimmediately retry it. Thus the retry will be a non-incremental backup.\n\nI have left the new constant as @hide to unblock this change. I will add\nthis to the current API review change: ag/3477872.\n\nBug: 71887023\nTest: I tested manually by returning the new code for both @pm@ and\nother key value packages. No automated test exists for this file, and it\nwill be tricky to add this before IC.\n\nChange-Id: I4357a8b297c373eb81e25afb82d480b26f6642b6\n"
    },
    {
      "commit": "8056728f7c0b97d41fb79fbba0add985db2679ab",
      "tree": "651ee39228f9477881da468ea33acdd7a0b12ecc",
      "parents": [
        "a8c7794856c5794fa5b31cf5398b8f773650d6c7"
      ],
      "author": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Tue Jan 23 11:59:15 2018 +0000"
      },
      "committer": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Tue Jan 23 15:16:34 2018 +0000"
      },
      "message": "Move backup of @pm@ into its own state.\n\nPreviously it shared the INITIAL state with various set up work and\ninitializing the transport if needed. By moving it to its own state this\nwill mean we can retry a non-incremental backup of @pm@ if the transport\nindicates that it has lost the state.\n\nI removed the \"mStatus \u003d\u003d BackupTransport.TRANSPORT_NOT_INITIALIZED\" as\nthe mStatus could never have this value at that point.\nTRANSPORT_NOT_INITIALIZED is returned by the transport.performBackup(),\nwhich is not executed until after beginBackup() has returned.\n\nBug: 71887023\nTest: Manually tested init case, incremental case, @pm@ error case, init\nerror case. There are no unit tests for this file, and it\u0027s 1200 lines\nlong which makes writing them for IC difficult.\n\nChange-Id: I23b7512391068316f4c1039faf88cc27905f4492\n"
    },
    {
      "commit": "38902fc09ee55c7634f7e475988cff20a04e78c3",
      "tree": "12250a3cedef82031179a16e51ced273e4ad23e4",
      "parents": [
        "94920fbf043b68a0fa29342a93f191698bbfa3f4",
        "3d2f335c2144db7206842f130de4a96374cd33e3"
      ],
      "author": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Mon Jan 22 21:07:49 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 22 21:07:49 2018 +0000"
      },
      "message": "Merge \"Make various members private in PerformBackupTask.\""
    },
    {
      "commit": "3d2f335c2144db7206842f130de4a96374cd33e3",
      "tree": "9ebde00321c6158011d5bc5f1a36400b1e4d034a",
      "parents": [
        "2e54e410988333aaecb9757412e440144990fd5d"
      ],
      "author": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Mon Jan 22 15:16:06 2018 +0000"
      },
      "committer": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Mon Jan 22 16:10:36 2018 +0000"
      },
      "message": "Make various members private in PerformBackupTask.\n\nTest: None. No functional changes.\nChange-Id: Ia35bdd7637887b4c02a71e96e9037842078fdba4\n"
    },
    {
      "commit": "b56074b37b66d7044e4e0e2c10e9c50a99585792",
      "tree": "fa017e3620099dda4f33831af4fb677c10438a6e",
      "parents": [
        "20220cdb722fb6f92e9106e80507088ea570f984",
        "c3e509cacc41ca78611b1c8d0c34599f895cf009"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 19 21:54:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 21:54:36 2018 +0000"
      },
      "message": "Merge \"Clear calling uid in isAppEligibleForBackup() and variant\""
    },
    {
      "commit": "5d94c398eb17ea7e9ae7b834da69e11269b7e9b1",
      "tree": "21ebc199bff2cd56a5b1cbfccc631f369bd0859e",
      "parents": [
        "0013162ebe4c4b59d361eec44715fd2fdf0ae52f",
        "861b420bc3282da174523b309b8886fb0d50da58"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jan 19 20:57:49 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 20:57:49 2018 +0000"
      },
      "message": "Merge \"Binding on-demand #11: Dump TransportClients\""
    },
    {
      "commit": "c3e509cacc41ca78611b1c8d0c34599f895cf009",
      "tree": "e5f35fa29fd6f82c7b265f87c2d2e57be66eaaa2",
      "parents": [
        "5e1f854620ecf48febb6ef8ddc3bff856efda7b1"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jan 19 17:00:05 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jan 19 19:02:09 2018 +0000"
      },
      "message": "Clear calling uid in isAppEligibleForBackup() and variant\n\nThis method is called by bmgr backupnow. Bmgr pid is not system uid.\nWhen executing the method it fails with permission denied because it\ncan\u0027t bind to the transport. Before binding on-demand we haven\u0027t seen\nthis error because we didn\u0027t try to bind in the method, it was always\nbound.\n\nBug: 72215413\nTest: adb shell bmgr backupnow -all\nChange-Id: I82ad712e893abfec4727d568ab48a49945645eb4\n"
    },
    {
      "commit": "861b420bc3282da174523b309b8886fb0d50da58",
      "tree": "cc040a931be3f7aa5a23fd586ac5c20d41706c6e",
      "parents": [
        "8f0d71e3ee99cb3cee8409ec7b5448282aaadce7"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Jan 17 15:04:29 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jan 19 14:56:21 2018 +0000"
      },
      "message": "Binding on-demand #11: Dump TransportClients\n\nAnd adjust logs.\n\nChange-Id: I04fcfb77bac14db36cc30288878bbb65332deb81\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: adb shell dumpsys backup\n"
    },
    {
      "commit": "a4517cdb7d99d076bfed2a81ec9511fcae68487a",
      "tree": "25aaa76600a4de03d012ea5224bc3117b2e28ff3",
      "parents": [
        "8f0d71e3ee99cb3cee8409ec7b5448282aaadce7"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jan 19 11:22:44 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jan 19 12:09:15 2018 +0000"
      },
      "message": "Remove use of streams in TransportManager\n\nTest: m -j RunFrameworksServicesRoboTests\nChange-Id: Ie5d81ca9e8c8fcda482fa520aa46841800b88210\n"
    },
    {
      "commit": "070081bc4f3ed1863a917a5c2ce6aa8b813e7649",
      "tree": "271080c5bcfa2b4b65cde21915cadfc9d26c56e1",
      "parents": [
        "e8ffec166131d27e47fbf21c9db9f6812051b15f"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Jan 18 15:10:41 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Jan 18 19:20:49 2018 +0000"
      },
      "message": "Don\u0027t use transport binder with the lock held\n\nThere was a deadlock around the transport lock. We registered transports\nwith the transport lock held, this kicked-off transport onCreate()\nsynchronously, which called TransportManager\nupdateTransportAttributes(), which tried to acquire mentioned lock but\ncouldn\u0027t. This CL removes the lock for any call to the transport or\noperation that triggers a call to the transport (it was\nTransportClient.connect() or its variants).\n\nTest: Load GMSCore before fix, boot, register transports, check no ANR\nTest: m -j RunFrameworksServicesRoboTests\nTest: adb shell bmgr transport -c \u003ctransport\u003e, being registered \u0026 not\nBug: 72147303\nChange-Id: I72ca145d7fb73c0ef29c4aa1b620fea4969481db\n"
    },
    {
      "commit": "3fb6ea960f2cfd859c0c8207e5e5a470cb512a28",
      "tree": "4d5b3fff7ac6479274a113382f60a984d0f9ebd1",
      "parents": [
        "2baa9ab4be183ac1e432f08e8b5549d0bfa180c2",
        "96e0be0fd85c5476f1f269fd9006c00c9c230689"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 17 19:07:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 17 19:07:21 2018 +0000"
      },
      "message": "Merge \"Add BackupManager#isBackupServiceActive() system API\""
    },
    {
      "commit": "4e588baaa472bb6f31f1df6797ba87a483c511bf",
      "tree": "ecc192c4b13c5069f78883f7c51e7f6ec0a02ee9",
      "parents": [
        "ec26761260b82bfff69d7a6eff9f8d68ba9f1761",
        "aa56a6cde39b80fa1edd61052dc8ad595d4562cc"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Jan 17 15:39:45 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 17 15:39:45 2018 +0000"
      },
      "message": "Merge \"Move event logging to TransportClient and add connection event\""
    },
    {
      "commit": "96e0be0fd85c5476f1f269fd9006c00c9c230689",
      "tree": "8854cc031444b717069e3b277c269c38bd23519b",
      "parents": [
        "7d0e1f8065cc618ed8931f070777cda366e65fd0"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Tue Jan 16 16:14:54 2018 +0000"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Wed Jan 17 15:00:45 2018 +0000"
      },
      "message": "Add BackupManager#isBackupServiceActive() system API\n\nSo that GMSCore can find out and disable restore flow\nand Backup UI.\n\nBug: 33339643\nTest: gts-tradefed run gts -m GtsGmscoreHostTestCases -t com.google.android.gts.devicepolicy.DeviceOwnerTest#testBackupServiceActive (new GTS test in companion CL)\nTest: cts-tradefed run cts -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.DeviceOwnerTest#testBackupServiceEnabling\nChange-Id: I62c38dec2395d3aa926566d128b0067ce7d62c26\n"
    },
    {
      "commit": "ec2965de4642e43c519d526d065ea40f0de4a2ba",
      "tree": "0710ed8f01f4a199d0d5549a6d5a2e7c4a32ed61",
      "parents": [
        "7d0e1f8065cc618ed8931f070777cda366e65fd0"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Jan 17 11:21:19 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Jan 17 13:45:08 2018 +0000"
      },
      "message": "Dispose of TransportClient in updateStateForTransport()\n\nForgot this one :)\n\nChange-Id: I13126b94ad0272c912a3e1c3d2e8ee06692a1897\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: m -j RunFrameworksServicesRoboTests\nTest: adb shell bmgr transport [-c] \u003ctransport\u003e, check connections\n"
    },
    {
      "commit": "c141d08b703b7ccf754be92f8be3a7752fc15c1a",
      "tree": "b67928dd2d48c7a8fc63da8743479b6218d318ba",
      "parents": [
        "4fe359998771557a70555d06575790104c79c266"
      ],
      "author": {
        "name": "Lenka Trochtova",
        "email": "ltrochtova@google.com",
        "time": "Wed Dec 20 14:45:16 2017 +0100"
      },
      "committer": {
        "name": "Lenka Trochtova",
        "email": "ltrochtova@google.com",
        "time": "Tue Jan 16 22:24:11 2018 +0100"
      },
      "message": "New management API for making backups mandatory.\n\nLet the device owner make backups with a chosen backup\ntransport mandatory.\n\nBUG: 64012357\nTest: make RunFrameworksServicesRoboTests\nTest: manually together with the corresponding GmsCore change.\nTest: cts-tradefed run cts -m CtsDevicePolicyManagerTestCases --test\ncom.android.cts.devicepolicy.DeviceOwnerTest#testGetAndSetMandatoryBackupTransport\nTest: cts-tradefed run cts -m CtsBackupHostTestCase --test\nandroid.cts.backup.BackupDeviceOwnerHostSideTest#testMandatoryBackupTransport\n\nChange-Id: I9bfae5799beae3459659e697813b75a9b508ae55\n"
    },
    {
      "commit": "931abbc249ee9ed7e7403d5c2e23341b7ec468a6",
      "tree": "4c14e2d566297c2ef619bb4dd315fa6e00bb9c19",
      "parents": [
        "66792c4833f2c5db584bb3fc40ac494035319289",
        "41349c02a8867b956ff48752c2d3dffc124fc0fc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 16 18:39:27 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 16 18:39:27 2018 +0000"
      },
      "message": "Merge \"Binding on-demand #10: Remove permanent binding and add registration\""
    },
    {
      "commit": "aa56a6cde39b80fa1edd61052dc8ad595d4562cc",
      "tree": "b59d03e34a521a566b6009d3dab8f98b8fb7198b",
      "parents": [
        "41349c02a8867b956ff48752c2d3dffc124fc0fc"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jan 16 14:10:19 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jan 16 15:56:53 2018 +0000"
      },
      "message": "Move event logging to TransportClient and add connection event\n\nMove event logging from registration to TransportClient and add new\nevent for connection.\n\nChange-Id: I32022590a36b6f28f960e91f8880a0430e862852\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: m -j RunFrameworksServicesRoboTest\nTest: adb logcat -b events, check relevant events\n"
    },
    {
      "commit": "41349c02a8867b956ff48752c2d3dffc124fc0fc",
      "tree": "297fbb0857ac9ca7d4ca4df8ef57ab81f26f51f9",
      "parents": [
        "02c0e98600b6b0cdf912effea48877b5ddbafed9"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Jan 10 21:09:28 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jan 16 14:22:23 2018 +0000"
      },
      "message": "Binding on-demand #10: Remove permanent binding and add registration\n\nThis CL is the last of the P1 CLs for binding on-demand. During\ntransport-usage migration to binding on-demand the permanent-bound\ncode was still there and we piggybacked on it to register the\ntransports. Now that everything is migrated we removed the permanent\nbinding and used the registration code created in the CL #9\n(selectTransport) for registering all the transports.\n\nI put a 3s delay on registration after bring-up. Any operation that uses\nthe transport before that will gracefully fail.\n\nThe TransportBoundListener does not return a boolean anymore because it\ncan\u0027t fail anymore (we pass it the data it needs so that it doesn\u0027t need\nto be exposed to TransportNotRegistered exceptions). It\u0027s now called\nOnTransportRegisteredListener.\n\nEligible transports were a similar thing to valid transports from the\npermanent binding code, whose only need came from rebinding from what I\ncould tell. I saw no need for it anymore and removed it. If I missed\nsomething please shout :)\n\nI shuffled methods a bit in TransportManager.\n\nThere were a lot of changes to robo test infra to bring together\nTransportManager tests and the rest and re-use mocking infra.\n\nChange-Id: If61268228dd0bb724b718abd3dcafdad50e8b3dc\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: m -j RunFrameworksServicesRoboTest\nTest: runtest -p com.android.server.backup frameworks-services\nTest: gts-tradefed run commandAndExit gts-dev -m GtsBackupTestCases\nTest: gts-tradefed run commandAndExit gts-dev -m GtsBackupHostTestCases\nTest: cts-tradefed run commandAndExit cts-dev -m CtsBackupTestCases\nTest: adb shell bmgr enable true/false\nTest: adb shell bmgr list transports [-c]\nTest: adb shell bmgr transport \u003ctransport_name\u003e/-c \u003ctransport_component\u003e\nTest: adb shell bmgr restore \u003ctoken\u003e/\u003ctoken\u003e \u003cpackage\u003e/\u003cpackage\u003e\nTest: adb shell bmgr backup \u003cpacakge\u003e\nTest: adb shell bmgr run\nTest: adb shell bmgr wipe \u003ctransport\u003e \u003cpackage\u003e\nTest: adb shell bmgr fullbackup \u003cpackage\u003e\nTest: adb shell bmgr backupnow --all/\u003cpackages\u003e\nTest: adb shell cmd jobscheduler run -f android \u003cjob_id\u003e\nTest: adb shell dumpsys backup\nTest: D2D scenario\n"
    },
    {
      "commit": "0158d976c8abc5f5ff5cf4d84afda637e2d878d6",
      "tree": "aef5ccdd90e92625d715a065b8089742364bce22",
      "parents": [
        "060f3cc2b56ecf51f53ffecba19d5bc49d01ec48",
        "7b1d974d71a1c7033a56f443a39f76872789ce7b"
      ],
      "author": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Tue Jan 16 11:17:00 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 16 11:17:00 2018 +0000"
      },
      "message": "Merge \"Add FLAG_INCREMENTAL and FLAG_NON_INCREMENTAL to performBackup().\""
    },
    {
      "commit": "7b1d974d71a1c7033a56f443a39f76872789ce7b",
      "tree": "377705ce62a221fd0c28d2cffde6a29ec993837b",
      "parents": [
        "0fa4e1b744c6f344f2215519b7723529a514569b"
      ],
      "author": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Sat Jan 13 17:21:49 2018 +0000"
      },
      "committer": {
        "name": "Oscar Key",
        "email": "okey@google.com",
        "time": "Mon Jan 15 18:22:29 2018 +0000"
      },
      "message": "Add FLAG_INCREMENTAL and FLAG_NON_INCREMENTAL to performBackup().\n\nThese indicate if backup manager passed any previous state to the backup\nagent when building a backup. The transport will use these to decide\nwhether to clear any existing encryption related state for the app.\n\nI left the new flags as @hide for now.\n\nBug: b/71792427\nTest: Tested manually with a buid of GmsCore updated to process the new\nflag. I am attempting to write a robolectric test.\n\nChange-Id: Ica0f6f578cd7d1ad29af532a45a2ee6685c84747\n"
    },
    {
      "commit": "5a484dc45b086434096ebcd12c46884072ae8f4c",
      "tree": "1dad6ff363228c6f1d93e296ad0ac409385033a2",
      "parents": [
        "985cdcb88a262a905ddcc90b20177f2be292198b"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jan 02 15:53:44 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jan 09 12:37:06 2018 +0000"
      },
      "message": "Binding on-demand #9: selectBackupTransport[Async]\n\nMigrate selectBackupTransport()/selectBackupTransportAsync() to binding\non-demand. To mimic the bind-if-needed behavior that existed before for\nselectBackupTransportAsync we now register-if-needed in the selection.\nThis means a new registerTransport() method was created in the\nTransportManager. I intend to use this method with only few\nmodifications for the first-binding code.\n\nChange-Id: I39661cff0f7b2f8a27da37905dcd93e0aa9b1178\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: m -j RunFrameworksServicesRoboTest\nTest: adb shell bmgr transport \u003ctransport\u003e, observe logs\nTest: Robolectric tests for TransportManager will go in registration CL\n"
    },
    {
      "commit": "d8a0cb7556a0bb3cf29a0b96e4c4e91c853cddb0",
      "tree": "db27f27dc6623a8b63e97b7e8543f7f8c078c2c7",
      "parents": [
        "3ce996f288f9dff7304fd9d1b89255900ca2cfd9"
      ],
      "author": {
        "name": "Bartosz Fabianowski",
        "email": "bartfab@google.com",
        "time": "Fri Jan 05 11:56:26 2018 +0100"
      },
      "committer": {
        "name": "Bartosz Fabianowski",
        "email": "bartfab@google.com",
        "time": "Mon Jan 08 10:55:32 2018 +0100"
      },
      "message": "Start BackupManagerConstants content observer\n\nBackupManagerConstants has a content observer that is meant to be\nnotified whenever backup settings change. However, that observer is\nnever registered.\n\nBug: 71622864\nTest: cts-tradefed run cts-dev --module CtsBackupHostTestCase\nChange-Id: Icbd90ef3af83dd2f29e26a5d787505bcf5681154\n"
    },
    {
      "commit": "0b25273da202dba238e937ba2d471fd23109dbfb",
      "tree": "ea86b4bd9d3aca7bc14942383e6c6d180f16d0fe",
      "parents": [
        "96e622cd82e48d76e00ed04450b5ba5be1310168",
        "a8a01bffdf6a5566a2ebbad4a53464f3c0612814"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Fri Jan 05 22:46:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 05 22:46:08 2018 +0000"
      },
      "message": "Merge \"Ancestral restore versioning for PackageManagerBackupAgent\""
    },
    {
      "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": "7323eecba36991e161d621c001d35e8cccb258ab",
      "tree": "7b23b7dabb3266c39b69de74e6145832c2f17aad",
      "parents": [
        "79c238ada6e7072f62f807781d58d314ed2f17a9"
      ],
      "author": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Mon Dec 18 14:01:48 2017 -0800"
      },
      "committer": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Thu Jan 04 13:26:28 2018 -0800"
      },
      "message": "Disable installation via adb restore\n\nTest: tried to install apk via adb restore -\u003e was not installed\nBug: 16298482\nChange-Id: I91e61cd229499f2ba8519554f4836f1e0b9f6404\n"
    },
    {
      "commit": "79c238ada6e7072f62f807781d58d314ed2f17a9",
      "tree": "7ddce85f1fbd5a5850d82b998c83de7621e47b79",
      "parents": [
        "ec397abf931a39ed1c3d36f0af4ee9a68b883b07"
      ],
      "author": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Wed Dec 13 15:59:07 2017 -0800"
      },
      "committer": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Thu Jan 04 13:26:28 2018 -0800"
      },
      "message": "Use modern install method in backup service\n\nTest: adb backup -apk myApp -f backup ; adb restore backup\nChange-Id: I2bbcb0487ecc525a6dc8a2693b15ce624db275b0\n"
    },
    {
      "commit": "a8a01bffdf6a5566a2ebbad4a53464f3c0612814",
      "tree": "756a66cbe5c7947475dd544cf6c0f8d47d9002d9",
      "parents": [
        "7efb442ab4deab0b91d525ea8e9f4fad204bea92"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Tue Jan 02 11:08:41 2018 +0000"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Thu Jan 04 13:52:03 2018 +0000"
      },
      "message": "Ancestral restore versioning for PackageManagerBackupAgent\n\nIntroduced usage of ANCESTRAL_RECORD_KEY, based on which value\nthe restore set can be parsed in multiple ways by different\nRestoreDataConsumers.\n\nTest: manual - D2D and cloud for different scenarios (O-\u003eP, P-\u003eP, Q-\u003eP)\nTest: O-\u003eP and P-\u003eP will be covered by our automatic e2e tests\nTest: a CTS test will be added to verify that backups of PMBA\n      generated on Android P+ always contain the ANCESTRAL_RECORD_KEY,\n      and it\u0027s always the first key\nBug: 64988620\nChange-Id: I4634f403da4aefdeb09dc5ca621c4ac349583251\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": "9fcc8ffd7bdc2e604df39ebaf9a5e9fd1385de4e",
      "tree": "3b4112fce3ca06d8e9eac11e3b7f1965ad48fb51",
      "parents": [
        "37d870bc09bc5a5ad2244838ddeaa1f2426da58d"
      ],
      "author": {
        "name": "Bartosz Fabianowski",
        "email": "bartfab@google.com",
        "time": "Tue Jan 02 18:10:18 2018 +0100"
      },
      "committer": {
        "name": "Bartosz Fabianowski",
        "email": "bartfab@google.com",
        "time": "Wed Jan 03 09:14:47 2018 +0100"
      },
      "message": "Send backup success notification to background apps as well\n\nWhen the backup manager is configured to notify one or more apps of\nsuccessful backups, the notifications should be sent to apps that are\ncurrently stopped as well.\n\nBug: 63885845\nTest: cts-tradefed run cts-dev --module CtsBackupHostTestCase\nChange-Id: I7086aee105229e0f8db4b1ec26639d53a4e0af37\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": "7b3701a32c184e7e11d69ece78d879b7f263a1c0",
      "tree": "28bca3e30c33a24ffe5e2c67c92c53424dd4c279",
      "parents": [
        "81265cf6ff0f96b1b1028b94aa4982434bf44425"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Dec 20 15:35:52 2017 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Dec 20 15:35:52 2017 +0000"
      },
      "message": "Log d when transport updates its attributes\n\nBug: 17140907\nTest: Triggered an update and checked logs\nChange-Id: I21926086ec0078872f3840737f77f79417178f6c\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\""
    },
    {
      "commit": "efdede0f4a04dda8eb1a3e527962f727e4725839",
      "tree": "511f71eed865e4b89e732904debb84dfd809e0a2",
      "parents": [
        "57e6b4fb4d9be6ac8d01bf0ea2debddb10216039",
        "1d99c391ecd30c27be2e8f61aa9ec64546d15d4b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 12 00:48:22 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 12 00:48:22 2017 +0000"
      },
      "message": "Merge \"Cancel alarms \u0026 jobs when an app\u0027s data is cleared\""
    },
    {
      "commit": "998fdaa63622a8769b50a01fff14d9cc2251632f",
      "tree": "e48a4af8ae3d55314304c250b52f398851515943",
      "parents": [
        "7742160e39096d5f94c22992d404170931f72854"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Dec 05 17:27:45 2017 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Dec 11 14:09:41 2017 +0000"
      },
      "message": "Binding on-demand #5: PerformUnifiedRestoreTask usage\n\nMigrate restore flow and related.\n\nChange-Id: Ib61863e401067d7d4a9669982be8b3d87af0caa2\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: adb shell bmgr restore \u003cset\u003e \u003cpackage\u003e and observed logs\nTest: adb shell bmgr restore \u003cset\u003e and observed logs\nTest: Backed-up and re-installed app, observing logs\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: Looking into adding GTS/CTS for restore scenarios\n"
    },
    {
      "commit": "1d99c391ecd30c27be2e8f61aa9ec64546d15d4b",
      "tree": "76e3378f4da2b13f1c6295d18570c7ff43173eb9",
      "parents": [
        "ab39cc5797ae7d2298b25f543cbb2e175356ebe7"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Dec 07 16:54:04 2017 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Dec 08 13:53:42 2017 -0800"
      },
      "message": "Cancel alarms \u0026 jobs when an app\u0027s data is cleared\n\nIn the same bit of code, fix a system restore issue:  in the\ncourse of setup + restore, we reestablish permission grants and\nnotification state up front for the to-be-restored app, and\nthen bring in its data.  However, a data wipe is part of the\nprologue for that data delivery -- so we were inadvertently\nunwinding the permission grants and notification state restore\nthat we\u0027d just performed.  Now, we distinguish the restore flow\nfrom other clear-data operations so we don\u0027t unwind that operation.\n\nFinally take the opportunity to elide a lot of copypasta code into\na single predicate-driven implementation.\n\nBug: 67508896\nBug: 69538432\nTest: atest android.app.cts.AlarmManagerTest\n\nChange-Id: I15c912c3c99645599ae9bd6fb7337fa86b4e5757\n"
    },
    {
      "commit": "e0b2ee52d2f274a2d46b2e6695e42d2764c39fa7",
      "tree": "b108622b940a6d004b50b2768f6738fecbb4dfb8",
      "parents": [
        "23627fbff5f13629e997a00b006a1ebdc423e735"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Dec 05 09:46:29 2017 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Dec 08 21:00:15 2017 +0000"
      },
      "message": "Convert services to Android.bp\n\nSee build/soong/README.md for more information.\n\nTest: m checkbuild\nExempt-From-Owner-Approval: trivial conversion\nChange-Id: I417409281c928ea667d937090d2a0d9d72a449a2\n"
    },
    {
      "commit": "f93a0918b6a04b9b13780532f5ddba1cd4a3942e",
      "tree": "82ace3c188945bf0ce5acbc99d3167acd1719dbe",
      "parents": [
        "7742160e39096d5f94c22992d404170931f72854"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Dec 04 14:11:24 2017 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Dec 06 11:55:56 2017 +0000"
      },
      "message": "Binding on-demand #4: PerformClearTask usage\n\nMigeate the clear flow.\n\nChange-Id: Id268f772ae0f7a88b3e060c9597d777e0b73121a\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: adb shell bmgr wipe \u003ctransport\u003e \u003cpackage\u003e and observed logs\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\n"
    },
    {
      "commit": "3accca05ddcad9d0b1b313eae49f273e39121d3c",
      "tree": "7aca880abfecad17d7e3e1ad82e7891e480078a3",
      "parents": [
        "dc3a8c7f84bf3673e184ce4acc592a1df9402746"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 20 09:32:11 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 04 13:02:10 2017 -0800"
      },
      "message": "Add major version code to platform.\n\nIt turns the version code into almost a 64-bit integer, with the\nnew major part being the upper 32 bits.\n\nThe only tricky part about this is the backup manager, since it\nstored 32-bit version codes in its backup data sets.  This is dealt\nwith by, when the major version code is not 0, writing MIN_INT as\nthe version code and following that by the full long version code,\nwhich we can detect when reading.  Note that this makes backup sets\ncontaining apps with major version codes incompatible with older\nversions of the platform.\n\nBug: 64459786\nTest: Added in Change-Id: Iab8a682b62103babd6c16a56b8dc1e97d7078658\nChange-Id: Ibfffe235bbfcf358b3741abd3f7197fdb063d3f3\n"
    },
    {
      "commit": "728dceac63884f90aa9f2d4a297fdbda96d5922a",
      "tree": "6a6492c350d3af05a87565de84c2e8c67426e5e6",
      "parents": [
        "514a7403b39b7ba22094747e10e22ef4f8ef1f26"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Nov 30 16:17:26 2017 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Dec 01 16:21:23 2017 +0000"
      },
      "message": "Remove old BackupManagerService\n\nAs discussed, only removed the class, local interface and trampoline\nstill exist. That will go into a next CL.\n\nBug: 65823538\nTest: make RunFrameworksServicesRoboTests\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 backupnow \u003ckv and full-backup packages\u003e\nTest: adb backup \u0026 adb restore\nChange-Id: Ifcb4c02e364b8c4899ff376ff20cd8c89fc1af28\n"
    },
    {
      "commit": "ab953332bca70799b908ae0bfffb10c5d7a7a7f7",
      "tree": "bc065b9b9e2192fd065ddc28afc901aba6c23c30",
      "parents": [
        "26e57037a3bcc875c26a9e540f1a8ed185a49d38"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Nov 22 22:10:32 2017 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Thu Nov 30 14:26:13 2017 +0000"
      },
      "message": "Binding on-demand #3: updateTransportAttributes() API\n\nThis CL introduces the updateTransportAttributes() API to be used by the\ntransport hosts. It doesn\u0027t actually use the description attributes yet,\nthis will go in another CL. This is because I want to test that CL\ntogether with transport usage. Tests are lacking for TransportManager\nand BMS, I\u0027ll still add them, but I\u0027m trying to migrate Robolectric\nfirst.\n\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: make RunFrameworksServicesRoboTests\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\nChange-Id: I56f7b5a5026d21d8f11afb371d5560d4913c5f2a\n"
    },
    {
      "commit": "4719ed513e68ac0c89f5830b2d50edb960b6ba34",
      "tree": "9f8a82bad735e44e26ec598ff0add93f6e0ea720",
      "parents": [
        "79af02db0331fa85ec70ddc042a9c6ad24de5c8a"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Nov 15 17:21:42 2017 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Nov 24 11:02:45 2017 +0000"
      },
      "message": "Binding on-demand #2: PerformFullTransportBackupTask usage\n\nMigrate the full-backup task to use binding on-demand\n\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: make RunFrameworksServicesRoboTests\nTest: runtest -p com.android.server.backup frameworks-services\nTest: adb shell bmgr backupnow \u003cpackages\u003e\n      With transports manually unbound and also canceled the operation a\n      few times. Then inspected TransportClient logcat\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: Manually unbound before GTS/CTS above.\n\nChange-Id: I15abe970db0b9858e0e2e4eb666358db3a9d50ad\n"
    },
    {
      "commit": "af547f4a15a7d6121306a5e973ae7f3709e5df3a",
      "tree": "57a3e809a68342123a3392860010ad1a2f08937a",
      "parents": [
        "cdee25d735ba32462870f60e490b746bde128569"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Mon Nov 13 15:49:41 2017 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Nov 21 15:01:47 2017 +0000"
      },
      "message": "Binding on-demand #1: TransportClient infra + PerformBackupTask usage\n\nThis CL introduces TransportClient infra-structure and integration in\nTransportManager, plus a few unit tests. Also start using binding\non-demand for PerformBackupTask.\n\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: make RunFrameworksServicesRoboTests\nTest: runtest -p com.android.server.backup frameworks-services\nTest: adb shell bmgr backupnow \u003cpackages\u003e\n      With transports manually unbound and also canceled the operation a\n      few times. Then inspected TransportClient logcat\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: Manually unbound before GTS/CTS above.\nChange-Id: I63cbde27131205787d90663603a4f8f61d187607\n"
    },
    {
      "commit": "d85c85f9d08132292bb2b6bc7790e2b9b3fa3561",
      "tree": "c9c15bca3c446e4e9eff106ea5e4badc6cb41b46",
      "parents": [
        "a544f25b1aa4f89389496decfdbacd11a0567d39",
        "a9565cb48761461693f44cccb71ce32e31232606"
      ],
      "author": {
        "name": "Peter Visontay",
        "email": "pvisontay@google.com",
        "time": "Fri Nov 03 11:53:20 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 03 11:53:20 2017 +0000"
      },
      "message": "Merge \"In backup/restore code wrap Binder.restoreCallingIdentity() in finally{}.\""
    },
    {
      "commit": "2eccd0262827259d15ceaa0fca975d3243c3a699",
      "tree": "f69abf0b0c0ddba496019c189cbf4ec9d857d70e",
      "parents": [
        "6b0ea8ae9334f2aab85fe470690133844dc0e8ee"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Wed Nov 01 13:44:23 2017 -0700"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Wed Nov 01 14:49:10 2017 -0700"
      },
      "message": "Make the battery saver knobs hidden public,\n\nso other components (system UI, settings, etc) can use them.\n\nBug: 68769804\nTest: Build \u0026 presubmit\nChange-Id: I30fe78e49d2187bee7c7aeba735cd9c26fc332a5\n"
    },
    {
      "commit": "a9565cb48761461693f44cccb71ce32e31232606",
      "tree": "ac3f288bbe9a7fe4ac6b3b6cad0507761e80ced4",
      "parents": [
        "c19d96c828d0a8d68896816055d0bad385e9b851"
      ],
      "author": {
        "name": "Peter Visontay",
        "email": "pvisontay@google.com",
        "time": "Wed Nov 01 18:44:01 2017 +0000"
      },
      "committer": {
        "name": "Peter Visontay",
        "email": "pvisontay@google.com",
        "time": "Wed Nov 01 18:44:01 2017 +0000"
      },
      "message": "In backup/restore code wrap Binder.restoreCallingIdentity() in finally{}.\n\nTest: none.\nBug: 68755611\nChange-Id: Ic4326f3b50060be117ca7556cde15b0db10cc239\n"
    },
    {
      "commit": "387267eafebaed8abe031efcb6d6379292503d48",
      "tree": "5729161789c292bf3140d79bb99052d0436940f9",
      "parents": [
        "aeff5b880b095e148e0243907d384d6f1d0a4c20"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Wed Oct 18 15:55:49 2017 +0100"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Fri Oct 20 11:00:38 2017 +0100"
      },
      "message": "Don\u0027t overly call transport.transportDirName()\n\nTest: runtest -p com.android.server.backup frameworks-services\nBug: 63401141\nChange-Id: I485bd98f805fd6be689765e77a582820c53e9bc0\n"
    },
    {
      "commit": "8808609896023165274092265cc2b51597d6a388",
      "tree": "d4c7e36c14fab1f3427efff75010ec4b3f6dea89",
      "parents": [
        "cd9932a1fee2ef38ee07e5ef7ca2fd31bf7a4708"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Oct 11 15:50:51 2017 -0700"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Thu Oct 12 13:37:02 2017 +0100"
      },
      "message": "Fix backup server\n\nMea culpa.  Properly do the trampoline indirection dance so\nthat we can asynchronously bring up the service components.\nWe\u0027d previously accidentally introduced an ordering problem such\nthat the init process... didn\u0027t.\n\nBug: 67676879\nTest: \u0027adb shell dumpsys backup\u0027 and \u0027adb shell bmgr list transports\u0027 after boot\nChange-Id: I3e9a904a009f4745727e5eb13f7307c6deda1e4f\n"
    },
    {
      "commit": "73093a477dbf4422cccf19233e691c5d2fdf21f3",
      "tree": "799163e7ebbb8e7e5fb6e1d1da4496b0e95629f7",
      "parents": [
        "d5ad2ff575c30c8b8e308b01d70d1d0acf9c3137"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Oct 03 15:27:56 2017 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Oct 05 14:45:17 2017 -0700"
      },
      "message": "Backup OS service now processes unlock off the main thread\n\nWe now perform the slow work of unlocking the primary user on the\nbackground handler thread rather than on the main thread.  This\nis expected to shave 150ms+ off of our total unlock latency on\nsome products.\n\nBug: 63389800\nTest: manual\nChange-Id: I70be032a64de3270476615fd9dde1b427e19aa91\n"
    },
    {
      "commit": "66c94726c9e65c4cb048d302bf3860f68751d35c",
      "tree": "b1ee4b91030fb4ee4cdd55d7ebd6c94201fcb6bf",
      "parents": [
        "a4fabd3ef26eada64f6bca2909342fb374b888b0"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Oct 04 12:58:29 2017 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Oct 04 16:00:24 2017 -0700"
      },
      "message": "Fix system server crash when told to init backup transports\n\nRefactor + merge gone awry; and pay attention to typed vs typeless\nuse of toArray().\n\nChange-Id: I031ded949a6e3f2a296c9bf007129e4ebf796a4b\nFix: 67419822\nTest: adb root \u0026\u0026 adb wait-for-device \u0026\u0026 \\\n      adb shell cmd activity broadcast -a android.app.backup.intent.INIT\n"
    },
    {
      "commit": "43f2d3d3374f8c8f40fc1035135d294c8853254e",
      "tree": "6da0a8cd75e7580b6ba0cb0d6e39572db061b503",
      "parents": [
        "2f3072bcf4cb8b8efc342d70cc758b5b145ba09b"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Sep 27 15:39:54 2017 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Sep 29 12:20:34 2017 -0700"
      },
      "message": "Reduce lock interactions in backup transport management\n\n1. process package update broadcasts on our background thread rather\n   than on the main looper thread\n\n2. don\u0027t synchronize unnecessarily around access to simple\n   transport metadata\n\nWe mustn\u0027t block the main looper thread for anything that might wind\nup interlocked with calls to the transport, because those might take\narbitrary amounts of time.  We were previously entering such an\nimplicitly interlocked code path during package-changed broadcast\nhandling, and in pathological cases were causing the watchdog to\nrestart the system.  This situation is addressed in a couple of ways:\nfirst, by no longer performing package-update work on the main looper\nthread at all; and second, by eliminating lock reliance entirely from\ndata-access paths that don\u0027t actually need it.\n\nBug: 65438129\nBug: 64133971\nTest: manual + CTS\nChange-Id: I361ad4a0729f319db7339bd341a6d33aa3b64fed\n"
    },
    {
      "commit": "bef5f4a64f7a4b09609aeb9bec7fbd1224c712c5",
      "tree": "fff008c88503b37f029f2c0b5afa96cc1f92bc74",
      "parents": [
        "de893f3f0a73e453ed3e3eca39df02829db4f0d4"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Wed Sep 27 18:16:30 2017 +0100"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Thu Sep 28 14:10:56 2017 +0100"
      },
      "message": "Switch to use RefactoredBackupManagerService\n\nKeeping the legacy BackupManagerService for now, but we\u0027ll remove\nit in a few weeks if there\u0027s no issues noticed.\nIn case of any problems, this CL can be cleanly reverted as a fallback.\n\nTest: pretty much all we got in store\n1) runtest -p com.android.server.backup frameworks-services\n2) make gts -j40 \u0026\u0026 gts-tradefed run gts -m GtsBackupHostTestCases\n3) make cts -j40 \u0026\u0026 cts-tradefed run cts -m CtsBackupTestCases\n4) make pts -j40 \u0026\u0026 pts-tradefed run pts -m PtsBackupHostSideTestCases\n5) manual: \"adb shell bmgr backupnow --all\" and then cloud restore,\n   D2D scenarios (both as source and target)\nBug: 65823538\nChange-Id: I701764995c4fe2611a4941aecb45315aa457658e\n"
    },
    {
      "commit": "9464a3160d3f7eb9713f50f61e2fda47d903d6d0",
      "tree": "03123357dc17c27f73ca445152aff1ff8d8709eb",
      "parents": [
        "c1741631d8fd5bd0a8576442e88c6b67e2df4408"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Tue Sep 19 11:35:59 2017 +0100"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Tue Sep 19 11:44:41 2017 +0100"
      },
      "message": "[RefactoredBMS] Use buffered DataInputStream vs RandomAccessFile\n\nThis CL replicates ag/2239004 in RefactoredBMS.\n\nTest: runtest -p com.android.server.backup frameworks-services\nBug: 37973765\nChange-Id: Id83445d433987730c5cdf9b9684b647baf3c3d1b\n"
    },
    {
      "commit": "c1741631d8fd5bd0a8576442e88c6b67e2df4408",
      "tree": "307deab6b001fb1dc384b9660c53322dc3b9c04b",
      "parents": [
        "9d395bb3e2bda2188db25645c75c5ca74ad40c79"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Tue Sep 19 11:07:58 2017 +0100"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Tue Sep 19 11:08:15 2017 +0100"
      },
      "message": "[RefactoredBMS] Refresh in-memory SharedPreferences instances after restore\n\nThis CL replicates ag/2284557 in RefactoredBMS (only the BMS part, the\nrest is already live code).\n\nTest: runtest -p com.android.server.backup frameworks-services\nBug: 37973765\nChange-Id: I4f6cb85b879e0ee7b2b20ac998977f8c6d8fdfe0\n"
    },
    {
      "commit": "9d395bb3e2bda2188db25645c75c5ca74ad40c79",
      "tree": "f39bdb7c1fdc8e7b326abcd1f366c88c7b3b682a",
      "parents": [
        "fcd615fad2747e2259eb35d30a5a019ccf2431e7"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Tue Sep 19 10:46:38 2017 +0100"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Tue Sep 19 10:46:43 2017 +0100"
      },
      "message": "[RefactoredBMS] Tear down agent after preflight rejection\n\nThis CL replicates ag/2520584 in RefactoredBMS.\n\nTest: runtest -p com.android.server.backup frameworks-services\nBug: 37973765\nChange-Id: I13ac110dbc197df473dd6a0cf24866133dfefab8\n"
    },
    {
      "commit": "fcd615fad2747e2259eb35d30a5a019ccf2431e7",
      "tree": "8f4a099bedf639eb2b0ec80e3d0e7554bf4c032b",
      "parents": [
        "89c8a9fa5fdba8fcca62dcde142821a7178f0b2a"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Tue Sep 19 10:34:07 2017 +0100"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Tue Sep 19 10:34:12 2017 +0100"
      },
      "message": "[RefactoredBMS] Do not perform backup/restore of instant apps\n\nThis CL replicates ag/2256021 in RefactoredBMS.\n\nTest: runtest -p com.android.server.backup frameworks-services\nBug: 37973765\nChange-Id: Icf615b97025aa09681f9d25b1de3f94e60a45ee4\n"
    },
    {
      "commit": "5c90ff0f26dc3e87c70702a1a09b587cb4c82568",
      "tree": "fbf45ae06271023cb24c065b6b91c4e0a5f901f2",
      "parents": [
        "e601150ae2646f4eb98b320e1c90ccafef7545b9"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Sep 18 16:07:28 2017 +0100"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Sep 18 17:00:22 2017 +0100"
      },
      "message": "[RefactoredBMS] Correct scope of \"disabled?\" check viz backup/restore decisions\n\nThis CL replicates ag/2204901 in RefactoredBMS.\nAlso adjusts tests and adds new ones for appIsDisabled method.\n\nTest: runtest -p com.android.server.backup frameworks-services\nBug: 37973765\nChange-Id: Ibaa15ba935ca1ada657e912b18a5a0b3bcffd00f\n"
    },
    {
      "commit": "5246299c58888ac1ccf2acc5c6ffdbd070c251eb",
      "tree": "95a6cf7a3ef6562aecbc1a17df9f78c6c075e851",
      "parents": [
        "f9b74cc7ef0e3fc6b95e4a988361b46e90bdfd5d"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Sep 18 14:32:42 2017 +0100"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Sep 18 14:32:47 2017 +0100"
      },
      "message": "[RefactoredBMS] Don\u0027t mix \"current dataset\" tokens for different backup transports\n\nThis CL replicates ag/2191170 in RefactoredBMS.\n\nTest: runtest -p com.android.server.backup frameworks-services\nBug: 37973765\nChange-Id: Ic3fd528071cef8143e2c3f6b659722f951f0deb9\n"
    },
    {
      "commit": "f9b74cc7ef0e3fc6b95e4a988361b46e90bdfd5d",
      "tree": "483c7fcdc296265ea9886197af6122d060fecdfc",
      "parents": [
        "78ec67a264b6b25b3353514c4f9ce5ea1b9fb1f3"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Sep 18 14:15:56 2017 +0100"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Sep 18 14:18:17 2017 +0100"
      },
      "message": "[RefactoredBMS] Ensure backup doesn\u0027t reuse ack tokens nearby in time\n\nThis CL replicates both ag/2551800 and ag/2613950 in RefactoredBMS.\n\nTest: runtest -p com.android.server.backup frameworks-services\nBug: 37973765\nChange-Id: I5e42dee67d587adabbfb81de03f3205d92a46add\n"
    },
    {
      "commit": "78ec67a264b6b25b3353514c4f9ce5ea1b9fb1f3",
      "tree": "e34e8f62ac9a0d03a3dc0b123e931ffb35948aca",
      "parents": [
        "f95cf5d9c3981c0fb1f51493574232ca356428aa"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Sep 18 13:44:12 2017 +0100"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Sep 18 13:44:31 2017 +0100"
      },
      "message": "[RefactoredBMS] Eliminate a race condition that could lead to\ncalling PBT#finalizeBackup() twice\n\nThis CL replicates ag/2510127 in RefactoredBMS.\n\nTest: runtest -p com.android.server.backup frameworks-services\nBug: 37973765\nChange-Id: Ic8571c08dd92386d0e4f79d7866aeb0f19f38106\n"
    },
    {
      "commit": "f95cf5d9c3981c0fb1f51493574232ca356428aa",
      "tree": "f2f27dae38b48393d9b8f7acf9d83f0ddc2013d0",
      "parents": [
        "3f09d6cf3be9ac72e560fc6d6c7d672db2e0744c"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Sep 18 13:34:39 2017 +0100"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Sep 18 13:34:44 2017 +0100"
      },
      "message": "[RefactoredBMS] Offload the mRunningFullBackupTask.handleCancel()\ncall from the main thread to another thread\n\nThis CL replicates both ag/2135862 and ag/2465381 in RefactoredBMS.\n\nTest: runtest -p com.android.server.backup frameworks-services\nBug: 37973765\nChange-Id: I895cb27bc910d9970ab1c33cd54a773b8f9b6cf6\n"
    },
    {
      "commit": "3f09d6cf3be9ac72e560fc6d6c7d672db2e0744c",
      "tree": "23ae2840bf7ac24ba65086b433f544a1c71f3b3c",
      "parents": [
        "3d87a5bfaf70ba994d7b82b50fbe79d36cb2d5ea"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Sep 18 13:23:47 2017 +0100"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Sep 18 13:23:51 2017 +0100"
      },
      "message": "[RefactoredBMS] Add log before doRestoreFinished is called on BackupAgent.\n\nThis CL replicates ag/2140301 in RefactoredBMS.\n\nTest: runtest -p com.android.server.backup frameworks-services\nBug: 37973765\nChange-Id: I2c2795c89035dd6c38aee8aec4e4a95cfdba0846\n"
    },
    {
      "commit": "3d87a5bfaf70ba994d7b82b50fbe79d36cb2d5ea",
      "tree": "c7c5afece338dfddcb5aac5c597c628a386061a3",
      "parents": [
        "a7924a6795556d29d8a4c49b0781d2b43a5639dd"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Sep 18 12:23:49 2017 +0100"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Sep 18 12:25:50 2017 +0100"
      },
      "message": "[RefactoredBMS] Add tracing for UserState and a few services\n\nThis CL replicates ag/2500023 in RefactoredBMS.\n\nTest: adb shell am instrument -w -e package com.android.server.backup com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner\nBug: 37973765\nChange-Id: I3d638a98ff61954797d9e5a70a28e0c2962112c6\n"
    },
    {
      "commit": "a7924a6795556d29d8a4c49b0781d2b43a5639dd",
      "tree": "5bff30e44a2321bc049aaafb1d89019ca6d33628",
      "parents": [
        "bcd3f07cc2514f1304580e0a4cb7d140d7178018"
      ],
      "author": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Sep 18 12:20:29 2017 +0100"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Mon Sep 18 12:20:34 2017 +0100"
      },
      "message": "[RefactoredBMS] Call removeMessages() only for certain operations in RefactoredBackupManagerService#handleCancel()\n\nThis CL replicates ag/2147459 in RefactoredBMS.\n\nTest: adb shell am instrument -w -e package com.android.server.backup com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner\nBug: 37973765\nChange-Id: I55d1825477ce82c47fd5850bf00f34ee8c1b9fc0\n"
    },
    {
      "commit": "bcc0c1d1139872b64b0466d03761bc37eb05720b",
      "tree": "18cbe892aba1f538e6107ae56653c606b0405283",
      "parents": [
        "8c8ded0e11216c55ebedacb38ac7a85829a23a4c"
      ],
      "author": {
        "name": "Tim Zheng",
        "email": "timzheng@google.com",
        "time": "Thu Sep 14 18:48:27 2017 -0700"
      },
      "committer": {
        "name": "Tim Zheng",
        "email": "timzheng@google.com",
        "time": "Fri Sep 15 11:50:09 2017 -0700"
      },
      "message": "BackupManagerService uses BackupManagerConstants.\n\nThis change update the backup manager service to use newly created\nBackupManagerConstants for some configuration parameters.\n\nThis is part 2 of the change.\n\nTest: Used \u0027adb logcat -b system\u0027 to verify the settings worked.\nBug: 63351792\nChange-Id: Ia6c9a2afbbaf3481a742a67c48ce9995c1ce6483\n"
    },
    {
      "commit": "cc1e76a4b3b4e19ebc340c93a36a3dfef09598e5",
      "tree": "315631bcab4bbb1a5254bebae872622ee2a49ee7",
      "parents": [
        "cc25dd924bee6e8c42ea3b9a5ab46ec47fdb7682"
      ],
      "author": {
        "name": "Tim Zheng",
        "email": "timzheng@google.com",
        "time": "Wed Aug 30 17:46:19 2017 -0700"
      },
      "committer": {
        "name": "Tim Zheng",
        "email": "timzheng@google.com",
        "time": "Thu Sep 14 16:32:21 2017 -0700"
      },
      "message": "Add a backup manager constants secure settings.\n\nThis change add one secure settings which is a key value list consisting\nof 7 individual settings; it also provides a class to get these settings\nand use the default values specified in default.xml file when the settings\nare missing.\n\nThis is the first part of a 2 part change. A subsequent change will use\nthese settings in backup service manger for setting up backup frequency.\n\nTest: This change builds. Manual tests will be included in part 2 of the\nchange.\nBug: 63351792\nChange-Id: I62baddbf3e0b96af6b7de3dfdeac3479e5b3ded8\n"
    },
    {
      "commit": "5176c02501054da21d2729339037c66416c09528",
      "tree": "b3c7d165a93e09be239cf49cd085e632385f689a",
      "parents": [
        "1683efe4eca1bc6e9ebb9fe9b9997dc608354e9b"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Sep 13 12:53:34 2017 +0100"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Wed Sep 13 14:10:20 2017 +0100"
      },
      "message": "Add logs to IOExceptions during adb backup\n\nTest: Run adb backup\nBug: 65435587\nChange-Id: I744cb2878654b716858d7c9bedeb12fb9978df6b\n"
    },
    {
      "commit": "39be7faab29984412611f387b1c0bc0296e2a6b4",
      "tree": "eb78b5ce1127f27727fc3e2e4dea5312ad81b424",
      "parents": [
        "b71ec00c2d9133e84aa61c460933cf5387028ea0",
        "a80316daa30ecdfd5e198fcb494d32b89d80b05c"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Sep 04 11:15:39 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 04 11:15:39 2017 +0000"
      },
      "message": "Merge \"Set flags on the correct Intent, please\" into oc-mr1-dev am: 33894b2998\nam: a80316daa3\n\nChange-Id: I486096da329ccfed44ba6e5e9f6e14af47db8932\n"
    },
    {
      "commit": "ed961d90ea737f72d85b8a9105c191ed2a9b8f23",
      "tree": "be36af528a070ae7a93a99129a435a8498310188",
      "parents": [
        "16da1f545cbb81ab49f585b3aa45e6aff2bf4c3f"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Sep 01 13:37:22 2017 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Sep 01 13:39:10 2017 -0700"
      },
      "message": "Set flags on the correct Intent, please\n\nBug: 65115426\nTest: passes CTS backup suite\nChange-Id: I497d077f563fef7b0800df626d15651c721d4ca7\n"
    },
    {
      "commit": "026e93323eea6197b8cf86a13b635504359737eb",
      "tree": "141fa0562b216b572d30b0eb9687ed5c1b203595",
      "parents": [
        "d27f7ffc2dcf3f40eb444786f23e2c51ec70549b"
      ],
      "author": {
        "name": "Artem Iglikov",
        "email": "artikz@google.com",
        "time": "Thu Jun 01 13:06:29 2017 +0100"
      },
      "committer": {
        "name": "Artem Iglikov",
        "email": "artikz@google.com",
        "time": "Fri Sep 01 15:28:31 2017 +0100"
      },
      "message": "Add tests for TransportManager#ensureTransportReady().\n\nThis involves some refactoring, so that TransportManager doesn\u0027t use API\nnot available in pre-O.\n\nBug: 37616038\nTest: make RunFrameworksServicesRoboTests\nChange-Id: I6a79bdbbee2a37a9fecff7865bdec37be2c7e59a\n"
    },
    {
      "commit": "bd476eae4ba26389dc83402d0b0ae07d6d4e73c5",
      "tree": "4667e2efc673ab9481292b9018d424378d92b35f",
      "parents": [
        "f4627b889f2ce36ff79e16e4d43046de41a3072c"
      ],
      "author": {
        "name": "Artem Iglikov",
        "email": "artikz@google.com",
        "time": "Fri Sep 01 10:57:26 2017 +0100"
      },
      "committer": {
        "name": "Artem Iglikov",
        "email": "artikz@google.com",
        "time": "Fri Sep 01 11:03:03 2017 +0100"
      },
      "message": "Update TransportManager tests.\n\nThis applies changes that disappeared for some reason from ag/2314382\n\nBug: 37616038\nTest: make RunFrameworksServicesRoboTests\nChange-Id: Iabfafd8c6afaac7304194f7645d08ef9e6f3b3aa\n"
    },
    {
      "commit": "5ed1dab192c82bbc25ac8713963df25c76f47b50",
      "tree": "6fba6f9016659490f5eb4a2a015e45adfb3d183d",
      "parents": [
        "4b950cf674c7215de3c7ab650c9eb7c82fb47569"
      ],
      "author": {
        "name": "Artem Iglikov",
        "email": "artikz@google.com",
        "time": "Thu May 25 15:56:05 2017 +0100"
      },
      "committer": {
        "name": "Artem Iglikov",
        "email": "artikz@google.com",
        "time": "Thu Aug 31 16:59:28 2017 +0100"
      },
      "message": "Add a test for TransportManager#onPackageAdded().\n\nAlso set up robolectric tests for framework services.\n\nBug: 37616038\nTest: make RunFrameworksServicesRoboTests\nChange-Id: Ia27a58365a0826ec5bc9f8a7544024b52cfbb3ec\n"
    },
    {
      "commit": "0d0d180305c63c7d57b8936ae2a2c00e4d9d4a14",
      "tree": "2a4ea8a0b98bf5c37f21dd5933c6850e65f001b0",
      "parents": [
        "6bce107c600e3aabdc536b1cfa4aa73ea7ce754b",
        "13889d75c7ea6c83d5833ea9c8668f0564abf687"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Aug 22 20:02:06 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 22 20:02:06 2017 +0000"
      },
      "message": "Merge \"Merge \"Solve AppBackupUtils.signaturesMatch() policies\" into oc-mr1-dev am: a743c01d00\" into oc-mr1-dev-plus-aosp\nam: 13889d75c7\n\nChange-Id: Ifd1afbf731cfb10d2e37d86d0c5b1d64011eb9d6\n"
    },
    {
      "commit": "cbcc34e4da20d904da607c119a2b313cefff303a",
      "tree": "665a68e3ec72e35f2fffe9b625122b288da014cf",
      "parents": [
        "51baf77a48a619a11a9585d76a2fcfd656c88b52"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Aug 18 14:27:31 2017 +0100"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Aug 22 15:54:04 2017 +0100"
      },
      "message": "Solve AppBackupUtils.signaturesMatch() policies\n\nNow we reject unsigned apps, either source or target. Also\nadded javadoc.\n\nBug: 37977154\nTest: runtest -p com.android.server.backup frameworks-services\nChange-Id: I44df43d5322ae64d97f8b19c20db508033301f91\n"
    },
    {
      "commit": "5f1d35ee21fa59f77e91291a2b243f4f6b8d1857",
      "tree": "8819d6cf82c37552c15f0b67002ee9bd5f258527",
      "parents": [
        "5f830ad23638794cc56eaa7ecfaab9e5deecd39c",
        "a1109ef8da76fad3ff7974cbba2e90f7638cdb3c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 09 14:09:17 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 09 14:09:17 2017 +0000"
      },
      "message": "Merge \"Locking changes in ProcessedPackagesJournal\""
    },
    {
      "commit": "a1109ef8da76fad3ff7974cbba2e90f7638cdb3c",
      "tree": "51c4ffaeeb76e1b0fc6c0b03cb19cf0df3a20797",
      "parents": [
        "cc316654199482c101da310a68eff70e9dd9c591"
      ],
      "author": {
        "name": "Robert Berry",
        "email": "robertberry@google.com",
        "time": "Mon Jul 17 09:56:44 2017 +0100"
      },
      "committer": {
        "name": "Michal Karpinski",
        "email": "mkarpinski@google.com",
        "time": "Wed Aug 09 13:12:05 2017 +0100"
      },
      "message": "Locking changes in ProcessedPackagesJournal\n\nA follow-up CL to apply the code feedback from the first one.\n\nBug: 36850431\nTest: adb shell am instrument -w -e package com.android.server.backup com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner\nChange-Id: I8785eb358658757b329ac871194243c47e6d87a9\n"
    },
    {
      "commit": "bfcff7be3099338fffca4af65967c030d47dd0e4",
      "tree": "0a6c6b44e9ee3f903c6980fc1222a3b6c290379a",
      "parents": [
        "0c8eab49c8b5565304aa85eb00cf82eb78b6300e",
        "dae011cc5ab26dd29f07432a13cc263b7b6675c7"
      ],
      "author": {
        "name": "Robert Berry",
        "email": "robertberry@google.com",
        "time": "Tue Aug 08 21:43:36 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 08 21:43:36 2017 +0000"
      },
      "message": "Merge \"Do not remove uninstalled packages from journal\" into oc-mr1-dev am: b152fb8d30\nam: dae011cc5a\n\nChange-Id: I2940aafdf07b572ee69d988599a2f8084c290dab\n"
    }
  ],
  "next": "b152fb8d30501eea5b4d660fce3def7766ae9a15"
}
