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