)]}'
{
  "log": [
    {
      "commit": "3c365cb21da4913c1eba00cce3052a04ecbdc014",
      "tree": "1b1125946a67a7d44a0e6587b58f19fb33f10955",
      "parents": [
        "f93526c1a69bf7d451d60d5b1a880406199bac82",
        "16a91c0ca7ca8a8f8496a23a957f610fba72794c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 22 09:17:50 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 22 09:17:50 2018 +0000"
      },
      "message": "Merge \"Policy transparency for mandatory backups.\""
    },
    {
      "commit": "c53c47fa3a2fa0650ffe6c3f7eba8008004f6aa4",
      "tree": "ebaf0f046134bc8f8e525ce59452b45f6d7d3cb8",
      "parents": [
        "357ae21266b57018d243f14bf7fda97c98de4ec9"
      ],
      "author": {
        "name": "Sudheer Shanka",
        "email": "sudheersai@google.com",
        "time": "Tue Jan 16 12:01:00 2018 -0800"
      },
      "committer": {
        "name": "Sudheer Shanka",
        "email": "sudheersai@google.com",
        "time": "Fri Jan 19 11:12:44 2018 -0800"
      },
      "message": "Load admin data in DPMS asynchronously during boot.\n\nBug: 71902030\nBug: 71710099\nTest: atest services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java\nTest: Ran boot tests - go/run-boottest\nTest: manual\nChange-Id: I34970c6f41877c7e3ece4843d47831374d455067\n"
    },
    {
      "commit": "16a91c0ca7ca8a8f8496a23a957f610fba72794c",
      "tree": "c0b5ff9cfa2e2cba6d10f1a60c040c2cb70cb1d8",
      "parents": [
        "a17274fb0521e500554a94b6c7cc6a46ea4c49b1"
      ],
      "author": {
        "name": "Lenka Trochtova",
        "email": "ltrochtova@google.com",
        "time": "Wed Jan 17 11:03:30 2018 +0100"
      },
      "committer": {
        "name": "Lenka Trochtova",
        "email": "ltrochtova@google.com",
        "time": "Fri Jan 19 20:01:24 2018 +0100"
      },
      "message": "Policy transparency for mandatory backups.\n\nBug: 64012357\nTest: atest FrameworksServicesTests:com.android.server.devicepolicy.DevicePolicyManagerTest#testCreateAdminSupportIntent\n\nChange-Id: I54140d676285eb78345bda28427aa02339f65e5b\n"
    },
    {
      "commit": "8bd6865532cc05cc378f5cf282db55a3675aa915",
      "tree": "b4f935a9282fbf0827eb37c36070e88004b77053",
      "parents": [
        "5e1f854620ecf48febb6ef8ddc3bff856efda7b1",
        "2c082aeeb7410e8341e57562b8e1bad8e88300ec"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 19 17:56:28 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 17:56:28 2018 +0000"
      },
      "message": "Merge \"Notify device owner when user is started / stopped / switched\""
    },
    {
      "commit": "2c082aeeb7410e8341e57562b8e1bad8e88300ec",
      "tree": "33137b62656027676bcc7fc762b0f4b42632101f",
      "parents": [
        "cfd1b4b263da8fac7bda724fae0e42e618256871"
      ],
      "author": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Wed Jan 17 18:26:03 2018 +0000"
      },
      "committer": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Fri Jan 19 15:17:00 2018 +0000"
      },
      "message": "Notify device owner when user is started / stopped / switched\n\n- Similar to onUserAdded / onUserRemoved, notify DPC when user is started / stopped / switched, as these operation is asynchronous.\nUse cases:\n1. As a asynchronous callback for startUserInBackground / stopUser / logoutUser / switchUser\n2. For COMP, can be used to detect work mode turning on or off\n\nBug: 72092112\nTest: com.android.cts.devicepolicy.DeviceOwnerTest#testCreateAndManageUser_StopOnStart\nTest: com.android.cts.devicepolicy.DeviceOwnerTest#testCreateAndManageUser_LogoutOnStart\nChange-Id: I6fa28711419053694131d7792f3e0d1d2e76ac29\n"
    },
    {
      "commit": "792d58fbcef3da36dbde5fd8b0cf5a5b972bd12e",
      "tree": "a5d52a2c41d21d788f2e9c690029b560aaa367f7",
      "parents": [
        "e6c2b50229bb370b57fd769c28496c550c50c499"
      ],
      "author": {
        "name": "Vladislav Kuzkokov",
        "email": "vkuzkokov@google.com",
        "time": "Mon Jan 15 15:04:05 2018 +0100"
      },
      "committer": {
        "name": "Vladislav Kuzkokov",
        "email": "vkuzkokov@google.com",
        "time": "Thu Jan 18 17:18:54 2018 +0100"
      },
      "message": "Implement Policy to disable printing.\n\nThis adds a new \"isPrintingEnabled\" policy (true by default)\nand hooks it into PrintManagerService.\n\nBug: 64140119\nTest: manual\n\nChange-Id: Ifb0f6772af51e6185135e9dcf5551e9ef0d88af3\n"
    },
    {
      "commit": "1721004ec9287952803c22f16b70bce1e03ca044",
      "tree": "96a2294dec702bf606d91bcf0a44c84b11b41b79",
      "parents": [
        "af7b167f751f99ab583c0aa24d4ef9b8dfda4b6e",
        "93ae42b04debca35cdc23feef0cf54c9e6ca4400"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 17 23:55:47 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 17 23:55:47 2018 +0000"
      },
      "message": "Merge \"Customize user switch dialog\""
    },
    {
      "commit": "f68bf1a8194fbc9e7754c43be9bfbe7b6ab2ea0d",
      "tree": "c8eaaba0b51a2fe45b39bc3a5765400a05c5ec56",
      "parents": [
        "d494cd8215eb8f1599a42577e7c19b418f6982e0",
        "5149d716e530d8e5afa5787cb2f0b286a84fce76"
      ],
      "author": {
        "name": "Antoan Angelov",
        "email": "arangelov@google.com",
        "time": "Wed Jan 17 21:32:15 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 17 21:32:15 2018 +0000"
      },
      "message": "Merge \"Add metadata to validate incoming administrator during transfer of ownership.\""
    },
    {
      "commit": "93ae42b04debca35cdc23feef0cf54c9e6ca4400",
      "tree": "d10c10fe79c4ee8615b9b20897684271ea465c9a",
      "parents": [
        "7d0e1f8065cc618ed8931f070777cda366e65fd0"
      ],
      "author": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Thu Jan 11 15:10:12 2018 +0000"
      },
      "committer": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Wed Jan 17 18:51:19 2018 +0000"
      },
      "message": "Customize user switch dialog\n\n- Introduced DevicePolicyManager to set messaging for switching out of and into user 0\n- Introduced coressponeding API to get the message\n\nBug: 71787514\nTest: Set start and end session message with TestDPC, change is reflected\nTest: Restart the device, switch message is still enforced\nTest: Clear the message with TestDPC, reverted back to default\nChange-Id: I527eca6f151cee35459abad7ae9dcdeef486148f\n"
    },
    {
      "commit": "4ba2c3f4ec13db6836055ed553cd908b4b30b71f",
      "tree": "855537a8e98c0abdd6ed481b216d2603ddc719d3",
      "parents": [
        "52c3685613554319651df6db00162f575ce38e4e",
        "1416bd022f344b4fdeadcbdbf2f87e19f0fac7e7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 17 18:08:45 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 17 18:08:45 2018 +0000"
      },
      "message": "Merge \"Ensure a user\u0027s SP does\u0027t change.\""
    },
    {
      "commit": "5149d716e530d8e5afa5787cb2f0b286a84fce76",
      "tree": "1c65edc4f36010327ff492fcff0db5a98e5160d1",
      "parents": [
        "f24977b523c17f276a236be6fea784f8d4ee32db"
      ],
      "author": {
        "name": "arangelov",
        "email": "arangelov@google.com",
        "time": "Thu Jan 11 19:48:14 2018 +0000"
      },
      "committer": {
        "name": "Antoan Angelov",
        "email": "arangelov@google.com",
        "time": "Wed Jan 17 14:31:19 2018 +0000"
      },
      "message": "Add metadata to validate incoming administrator during transfer of ownership.\n\nBug: 69543092\nTest: cts-tradefed run cts-dev --module DevicePolicyManager --test com.android.cts.devicepolicy.MixedDeviceOwnerHostSideTransferTest#testTransfer\nTest: cts-tradefed run cts-dev --module DevicePolicyManager --test com.android.cts.devicepolicy.MixedDeviceOwnerHostSideTransferTest#testTransferNoMetadata\nChange-Id: Iccefb37836d0f88e9d4f692ecf9aba6d3197ad08\n"
    },
    {
      "commit": "7d0e1f8065cc618ed8931f070777cda366e65fd0",
      "tree": "ba36fd49fab0dc3beadb8e4dcb0b32c8aa30ceb9",
      "parents": [
        "d7330ca1100b9cfa494513d6c19600217e6a4d23",
        "832ccb07aa6b8c7ff23d148da26cfed5c8957149"
      ],
      "author": {
        "name": "Benjamin Franz",
        "email": "bfranz@google.com",
        "time": "Wed Jan 17 10:47:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 17 10:47:29 2018 +0000"
      },
      "message": "Merge \"Also inform activity manager that lock task packages changed\""
    },
    {
      "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": "1416bd022f344b4fdeadcbdbf2f87e19f0fac7e7",
      "tree": "17b23b2aeea60fb75eec2f601152a525254d1cde",
      "parents": [
        "23374d63ecfd076c41c855bc59f63570cf265a7c"
      ],
      "author": {
        "name": "Andrew Scull",
        "email": "ascull@google.com",
        "time": "Fri Jan 05 18:33:58 2018 +0000"
      },
      "committer": {
        "name": "Andrew Scull",
        "email": "ascull@google.com",
        "time": "Tue Jan 16 18:14:23 2018 +0000"
      },
      "message": "Ensure a user\u0027s SP does\u0027t change.\n\nChanges of the SP are caused by untrusted credential reset which can be\ntriggered by certain admin modes. When such an admin is active, the SP\nneeds to be cached. Untrusted reset will be removed in a future release\nat which point this caching can also be removed.\n\nBug: 71527305\nTest: runtest frameworks-services -p com.android.server.locksettings\nTest: cts-tradefed run cts-dev -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy\nChange-Id: I54f3b299b79ce019ba679b5550d37fd090b679fb\n"
    },
    {
      "commit": "832ccb07aa6b8c7ff23d148da26cfed5c8957149",
      "tree": "b36c9c76946367cb5f9dcf3c5643792c3182dcb9",
      "parents": [
        "c539b9b841bc35e09560b5c3eed4944c7e4ef951"
      ],
      "author": {
        "name": "Benjamin Franz",
        "email": "bfranz@google.com",
        "time": "Tue Jan 16 15:47:18 2018 +0000"
      },
      "committer": {
        "name": "Benjamin Franz",
        "email": "bfranz@google.com",
        "time": "Tue Jan 16 15:47:18 2018 +0000"
      },
      "message": "Also inform activity manager that lock task packages changed\n\nWhen user data is cleared in DevicePolicyManager, we clear the lock\ntask packages list. We should also forward that information to the\nActivityManager, so they can do relevant clean up; in particular this\nwill stop any running lock tasks.\n\nBug: 68688028\nTest: manual\nChange-Id: I0f40e7e08efd5ad2ca20b50ffa1032ddb13d1adb\n"
    },
    {
      "commit": "23374d63ecfd076c41c855bc59f63570cf265a7c",
      "tree": "e5c894005881dae572c88c19848593950edf41e5",
      "parents": [
        "1fc0927d4a3ff03d107f7bfd2d99528cc3761e05",
        "b6ef86985dd79923c08ea6ecb1c8c56fa76b5193"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 15 13:56:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 15 13:56:36 2018 +0000"
      },
      "message": "Merge \"Move startUserInBackground to standalone and avoid user from being stopped unnecessarily\""
    },
    {
      "commit": "82548f4bc32cab54fd8f3959c245659b8e04cae2",
      "tree": "5d44a55a74c503f4129d22a2ecc65727f4396d6b",
      "parents": [
        "98fe2bcaeef65c4eb30d880da408d9c96efd42d3",
        "cc391c2c13b30c494908309659509f8426af48ea"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 13 16:40:41 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 13 16:40:41 2018 +0000"
      },
      "message": "Merge \"Implement DISALLOW_SHARE_INTO_MANAGED_PROFILE\""
    },
    {
      "commit": "cc391c2c13b30c494908309659509f8426af48ea",
      "tree": "cd3f44778ab171e0a48b33eebba95cdb2c658b71",
      "parents": [
        "79131f7a227eb5f2bbd4e6ea29e14d834c634101"
      ],
      "author": {
        "name": "Rubin Xu",
        "email": "rubinxu@google.com",
        "time": "Tue Jan 02 20:37:35 2018 +0000"
      },
      "committer": {
        "name": "Rubin Xu",
        "email": "rubinxu@google.com",
        "time": "Fri Jan 12 19:01:40 2018 +0000"
      },
      "message": "Implement DISALLOW_SHARE_INTO_MANAGED_PROFILE\n\nAdd a user restriction to allow profile owners to enforce a stronger\nisolation of managed profile by preventing users sharing data into\nthe profile. This is achieved by disabling a subset of built-in cross\nprofile intent filters added by ManagedProvisioning during profile\ninflation.\n\nImplementation wise, DevicePolicyManagerService listens for the restriction\nchange and notifies ManagedProvisioning to modify the built-in intent\nfilters. This is needed since ManagedProvisioning has ground truth of all\nbuilt-in intent filters and manages them. It also has the advantage that\nManagedProvisioning only needs to run when a policy change happens.\n\nTest: cts-tradefed run cts-dev -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.ManagedProfileTest#testDisallowSharingIntoProfileFromPersonal\nTest: cts-tradefed run cts-dev -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.ManagedProfileTest#testDisallowSharingIntoProfileFromProfile\nBug: 63911046\nChange-Id: Ia6d12a5086627d1280325cd19d6e3a0752dae633\n"
    },
    {
      "commit": "b6ef86985dd79923c08ea6ecb1c8c56fa76b5193",
      "tree": "877ce86352e0d993d0257594b5dd9dc7986ba28c",
      "parents": [
        "2884b9f749601219c5b6ab83266c6e9182e3cb9e"
      ],
      "author": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Tue Jan 09 14:16:36 2018 +0000"
      },
      "committer": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Fri Jan 12 15:07:22 2018 +0000"
      },
      "message": "Move startUserInBackground to standalone and avoid user from being stopped unnecessarily\n\n- Removed START_USER_IN_BACKGROUND in createAndMaangeUser\n- Added startUserInBackground that can return whether user is started. It checks for whether more users can be started without stopping existing users.\n- Added canStartMoreUsers in UserController and ActivityManagerService\n- Updated javadoc of a few user management API in DevicePolicyManager\n- In UserController.startUser, return false if maximum running user limit is reached when starting user in background\n- Only stop guest or ephemeral user that is being switched out in stopGuestOrEphemeralUserIfBackground\n\nBug: 71694116\nTest: Create 3 ephemeral users, can startUserInBackground for first two but failed for the third.\nTest: Switch to first user, second user is not affected.\nTest: Switch out first user, second and third user is not affected. Can startUserInBackground for third user at this point.\nChange-Id: I46aa1d8788851b10b5b169ac656cb982791de479\n"
    },
    {
      "commit": "c80c67e7bc96691b6e3700bac49e819ad52db0ae",
      "tree": "e9115a436eca8b77eb4aa7ab20645a458c960549",
      "parents": [
        "c9c82958ab21cb987be8c57b69a1e43037c30543"
      ],
      "author": {
        "name": "Lucas Dupin",
        "email": "dupin@google.com",
        "time": "Mon Dec 04 14:29:10 2017 -0800"
      },
      "committer": {
        "name": "Lucas Dupin",
        "email": "dupin@google.com",
        "time": "Thu Jan 11 13:15:31 2018 -0800"
      },
      "message": "Allow custom keyguard \"prompt reason\"\n\nAdds the possibility of presenting a custom message on\nthe keyboard if you\u0027re trying to dismiss the keyguard.\n\nThis is particularly useful when you\u0027re showing the\nbouncer because custom authentication (SmarLock)\nfailed.\n\nTest: launch FLAG_SHOW_WHEN_LOCKED activity and\n      call KeyguardManager#requestDismissKeyguard\nFixes: 63940122\nChange-Id: I0d88c0e59521887efa56d74874062b2b14970e4e\n"
    },
    {
      "commit": "5b9f065754d670d5e6389422894385b322b78acc",
      "tree": "cee57db66c4101ca42a8e00dff277884c7b286b1",
      "parents": [
        "fdb4c48cb2f38611010cd24f926365c36b84cf12",
        "101c353a7d039b352cbfe9146807f072ff340469"
      ],
      "author": {
        "name": "Sudheer Shanka",
        "email": "sudheersai@google.com",
        "time": "Thu Jan 11 18:45:15 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 11 18:45:15 2018 +0000"
      },
      "message": "Merge \"Update DPMS to push active admins info to UsageStatsService.\""
    },
    {
      "commit": "f79af5e4a14fb5bdeeaec05973751c28b1d62dae",
      "tree": "0d5e24e01660f98cece9b6feebadbd519ad91d4c",
      "parents": [
        "9e79ca004f02684f0ef545b06e6d6a827006cb5d",
        "8bae4eaa4db74c71d5658d8ee1905be8ecf4dfc2"
      ],
      "author": {
        "name": "Antoan Angelov",
        "email": "arangelov@google.com",
        "time": "Thu Jan 11 11:18:05 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 11 11:18:05 2018 +0000"
      },
      "message": "Merge \"Call PROFILE/DEVICE_OWNER_CHANGED broadcast and onTransferCompleted callback upon a successful transfer.\""
    },
    {
      "commit": "101c353a7d039b352cbfe9146807f072ff340469",
      "tree": "5ec0d522bfc17e9878ee347476dcfcfb4a74cc4d",
      "parents": [
        "d5a6d9b8dd7f099ae208749f6b2fa8f1c9be8624"
      ],
      "author": {
        "name": "Sudheer Shanka",
        "email": "sudheersai@google.com",
        "time": "Mon Jan 08 16:28:42 2018 -0800"
      },
      "committer": {
        "name": "Sudheer Shanka",
        "email": "sudheersai@google.com",
        "time": "Wed Jan 10 17:19:55 2018 -0800"
      },
      "message": "Update DPMS to push active admins info to UsageStatsService.\n\nBug: 71710099\nTest: atest services/tests/servicestests/src/com/android/server/usage/AppStandbyControllerTests.java\nTest: atest services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java\nChange-Id: Ia46be9008470b0228978306b9992560fc4f2c586\n"
    },
    {
      "commit": "8bae4eaa4db74c71d5658d8ee1905be8ecf4dfc2",
      "tree": "911d1d704e1c115153fb58418b26dcbed7a48636",
      "parents": [
        "acb394d13a906fd73ba6e2d670c588b61b910cbc"
      ],
      "author": {
        "name": "arangelov",
        "email": "arangelov@google.com",
        "time": "Wed Dec 20 20:26:46 2017 +0000"
      },
      "committer": {
        "name": "arangelov",
        "email": "arangelov@google.com",
        "time": "Wed Jan 10 21:07:44 2018 +0000"
      },
      "message": "Call PROFILE/DEVICE_OWNER_CHANGED broadcast and onTransferCompleted callback upon a successful transfer.\n\nTest: cts-tradefed run cts-dev --module DevicePolicyManager --test com.android.cts.devicepolicy.MixedProfileOwnerHostSideTransferTest#testTransferOwnerChangedBroadcast\nTest: cts-tradefed run cts-dev --module DevicePolicyManager --test com.android.cts.devicepolicy.MixedProfileOwnerHostSideTransferTest#testTransferCompleteCallback\nTest: cts-tradefed run cts-dev --module DevicePolicyManager --test com.android.cts.devicepolicy.MixedDeviceOwnerHostSideTransferTest#testTransferOwnerChangedBroadcast\nTest: cts-tradefed run cts-dev --module DevicePolicyManager --test com.android.cts.devicepolicy.MixedDeviceOwnerHostSideTransferTest#testTransferCompleteCallback\nBug: 69542936\nBug: 69543044\nChange-Id: Ifbe3ac0029794eba185e538e5a490073d5309f0b\n"
    },
    {
      "commit": "7fbe61dc20b790135e795c788f645f5f976a22d4",
      "tree": "7763633ae19263317ca976b73db84025bd4e06b6",
      "parents": [
        "0ff8dabf2c258389ee6a633b4c7f99477b63071a"
      ],
      "author": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Thu Jan 04 15:45:38 2018 +0000"
      },
      "committer": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Tue Jan 09 11:13:22 2018 +0000"
      },
      "message": "Update on a few DevicePolicyManager APIs for affiliated PO\n\n- Disallow managed profile from disabling keyguard and statusBar as it\n  has no effect\n- Removed the ability for affiliated profile owner to set device owner\n  lockscreen message, as the message is not per user but set globally,\n  where the original intention is to set a per user lockscreen message\n- Updated javadoc accordingly\n\nBug: 64383519\nTest: Invoking setKeyguardDisabled and setStatusBarDisabled with managed profile fails\nChange-Id: Ib3fdf44f55a7c5913ea38647c582bc962329c842\n"
    },
    {
      "commit": "67f2c224a56b44fccb3022127834dde4210d64af",
      "tree": "564a5f3b8bc05d0830310e071f9bcdaa2a32d0ce",
      "parents": [
        "7e11cc11c82ef24fb01d93ddd0654e20b2be3b48"
      ],
      "author": {
        "name": "arangelov",
        "email": "arangelov@google.com",
        "time": "Thu Jan 04 15:52:12 2018 +0000"
      },
      "committer": {
        "name": "arangelov",
        "email": "arangelov@google.com",
        "time": "Thu Jan 04 15:52:12 2018 +0000"
      },
      "message": "Fix broken build due to missing imports in device owner transfer functionality.\n\nTest: None\nChange-Id: Ib3563349fe754bd47166d473387ab1fb21c441c8\n"
    },
    {
      "commit": "7e11cc11c82ef24fb01d93ddd0654e20b2be3b48",
      "tree": "b97ffeafc176e1e7726377ac4950d45fd7e906e1",
      "parents": [
        "8612b376abd502b249cfc18afd34e8dd942edb99",
        "8c586ec4819c8a0cbd5a56a78e8f5cf869f565b0"
      ],
      "author": {
        "name": "Antoan Angelov",
        "email": "arangelov@google.com",
        "time": "Thu Jan 04 15:07:03 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 04 15:07:03 2018 +0000"
      },
      "message": "Merge \"Add device owner transfer functionality.\""
    },
    {
      "commit": "8c586ec4819c8a0cbd5a56a78e8f5cf869f565b0",
      "tree": "75107c2a71db7cbb37401c6a00f825046312bef3",
      "parents": [
        "26b8722de6fcab8a3b127450bae1534a61918178"
      ],
      "author": {
        "name": "arangelov",
        "email": "arangelov@google.com",
        "time": "Mon Dec 11 20:10:11 2017 +0000"
      },
      "committer": {
        "name": "arangelov",
        "email": "arangelov@google.com",
        "time": "Wed Jan 03 13:16:58 2018 +0000"
      },
      "message": "Add device owner transfer functionality.\n\nTest: cts-tradefed run cts-dev --module DevicePolicyManager --test com.android.cts.devicepolicy.MixedDeviceOwnerTransferTest\nTest: bit FrameworksServicesTests:com.android.server.devicepolicy.DevicePolicyManagerTest\nBug: 69542799\nChange-Id: I2119aebc1554c804c8dd41383fd10e8354e77620\n"
    },
    {
      "commit": "94d56761249a8e8c073867c17bba59b4a898f113",
      "tree": "a5d48db4ef71a6e105810d282ea3c8af32e42697",
      "parents": [
        "ea713a3882d11675ca067ad63ab01a664d012f3b"
      ],
      "author": {
        "name": "Eran Messeri",
        "email": "eranm@google.com",
        "time": "Thu Dec 21 20:50:54 2017 +0000"
      },
      "committer": {
        "name": "Eran Messeri",
        "email": "eranm@google.com",
        "time": "Tue Jan 02 23:36:15 2018 +0000"
      },
      "message": "DPM: Implement Device ID attestation\n\nEnable requesting inclusion of device identifiers in the attestation\nrecord issued for keys generated by generateKeyPair.\nThis is done by passing an array of flags with values indicating which\nidentifiers should be included.\nSince the attestation record will include sensitive identifiers, it can\nonly be requested by the DPC in Device Owner mode or by the Delegated\nCert Installer in Device Owner mode.\n\nDesign note:\nDevicePolicyManager defines its own set of constants for the different\nidentifier types (ID_TYPE_*) and prior to calling\nDevicePolicyManagerService it translates them to the values defined by\nAttestationUtils (which is not a public class).\nThe reason is to allow re-use of code in AttestationUtils for preparing\nthe attestation arguments.\nIn theory, these constants could be moved from AttestationUtils to\nDevicePolicyManager, however that would create a dependency on DPM from\nKeystore, which logically does not make sense as Keystore is independent\nof the DPM (and in a lower level of the system, conceptually).\n\nBug: 63388672\nTest: cts-tradefed run commandAndExit cts-dev -a armeabi-v7a -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.DeviceOwnerTest#testKeyManagement; runtest frameworks-services -c com.android.server.devicepolicy.DevicePolicyManagerTest#testTranslationOfIdAttestationFlag\nChange-Id: Ifb42e8e813fa812a08203b4a81d15b1f91152354\n"
    },
    {
      "commit": "db980f4a3cc3e0f858cc050ff8f59128a31ef3f4",
      "tree": "dd966dee811059c7616802874adf4700becef681",
      "parents": [
        "792bbf66d4d67ccd7047924e06d06480057f622f"
      ],
      "author": {
        "name": "Naomi Musgrave",
        "email": "nmusgrave@google.com",
        "time": "Tue Nov 28 10:56:47 2017 +0000"
      },
      "committer": {
        "name": "Naomi Musgrave",
        "email": "nmusgrave@google.com",
        "time": "Thu Dec 21 15:34:11 2017 +0000"
      },
      "message": "Add id to SecurityEvent.\n\nTest: runtest --path frameworks/base/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java\nTest: runtest --path frameworks/base/services/tests/servicestests/src/com/android/server/devicepolicy/SecurityEventTest.java\nBug: 63910201\nChange-Id: I053ec9d6c8281d637ace5dc89057e5f7b5ad6554\n"
    },
    {
      "commit": "af5bac3d2350dc60f645ef6ece93d6a5417c50a9",
      "tree": "888af77c1649a9c90a8df4ca1791d92f7e05a215",
      "parents": [
        "b85b8389cf008e9c7b01b2ac3120c51b174d65cc",
        "28939988f0da2f37bac87a6929a1584ad18fdeba"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 21 13:37:42 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 21 13:37:42 2017 +0000"
      },
      "message": "Merge \"Profile lock timeout.\""
    },
    {
      "commit": "a82824272cc0d7c522fed96cf9d0b97dc2087a33",
      "tree": "adf8531adac9ba9f1fa44811d6f0212990147bf5",
      "parents": [
        "5d35adf0e2e1589d6aee5b4d4c047a948074f328",
        "ecf0f22e5831832afb48c86abfaa81234c8db619"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 20 08:43:56 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 20 08:43:56 2017 +0000"
      },
      "message": "Merge \"DPM: Implement installing certificates for generated keys\""
    },
    {
      "commit": "f7ca81fbc99888076d56666475a33b7b1a40fbd7",
      "tree": "e00bdb587a926c94371db356e3ffd7b36a67cb09",
      "parents": [
        "e51ffaa6aca7d8413bc51e9d472ca664d23869e5",
        "7f31bb047820bd5bbf3baab461d24d49f1128052"
      ],
      "author": {
        "name": "Andrew Scull",
        "email": "ascull@google.com",
        "time": "Tue Dec 19 18:01:56 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 19 18:01:56 2017 +0000"
      },
      "message": "Merge \"DPMS: password blacklist\""
    },
    {
      "commit": "d93cecec44db1479494d520c162cd4d3aa860561",
      "tree": "209155995623b29b068e1a00291ef593c5252504",
      "parents": [
        "04c17bec55e1982547dc331757ea893afbdffd1c"
      ],
      "author": {
        "name": "Naomi Musgrave",
        "email": "nmusgrave@google.com",
        "time": "Wed Dec 06 12:06:26 2017 +0000"
      },
      "committer": {
        "name": "Naomi Musgrave",
        "email": "nmusgrave@google.com",
        "time": "Tue Dec 19 16:05:01 2017 +0000"
      },
      "message": "Handle overflow of id in NetworkEvent.\n\nTest: runtest --path frameworks/base/services/tests/servicestests/src/com/android/server/devicepolicy/NetworkEventTest.java\nBug: 63910201\nChange-Id: I48e1ac0fabae4db7913ce6698a1cf932898d9642\n"
    },
    {
      "commit": "7f31bb047820bd5bbf3baab461d24d49f1128052",
      "tree": "8f81088ee322e9cb8bcf03ae0a8ad74d4b56d748",
      "parents": [
        "171fec8c356ffa8cd4837092fce3b5cd5e2712fe"
      ],
      "author": {
        "name": "Alexandru-Andrei Rotaru",
        "email": "rotaru@google.com",
        "time": "Thu Sep 07 16:29:48 2017 +0100"
      },
      "committer": {
        "name": "Andrew Scull",
        "email": "ascull@google.com",
        "time": "Mon Dec 18 17:05:18 2017 +0000"
      },
      "message": "DPMS: password blacklist\n\nAllows admins to blacklist passwords so they cannot be enrolled by the\nuser or the admin.\n\nTest: bit FrameworksServicesTests:com.android.server.devicepolicy.PasswordBlacklistTest\nTest: bit FrameworksServicesTests:com.android.server.devicepolicy.DevicePolicyManagerTest\nTest: cts-tradefed run cts -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPasswordBlacklist\nTest: cts-tradefed run cts -m CtsAdminTestCases -t android.admin.cts.DevicePolicyManagerTest\n\nBug: 63578054\nChange-Id: I8949ac929c760b66dc719cb058a9f88dc9cad727\n"
    },
    {
      "commit": "ecf0f22e5831832afb48c86abfaa81234c8db619",
      "tree": "06616aa20a0ffe77805d314c2b24bae9a3866534",
      "parents": [
        "171fec8c356ffa8cd4837092fce3b5cd5e2712fe"
      ],
      "author": {
        "name": "Eran Messeri",
        "email": "eranm@google.com",
        "time": "Mon Dec 11 12:32:13 2017 +0000"
      },
      "committer": {
        "name": "Eran Messeri",
        "email": "eranm@google.com",
        "time": "Mon Dec 18 13:26:01 2017 +0000"
      },
      "message": "DPM: Implement installing certificates for generated keys\n\nAdd a new method in the DevicePolicyManager to associate certificates (and\nset the user-visibility) with a given key alias.\nConceptually, the new method, setKeyPairCertificate is very similar to\ninstallKeyPair, except it does not install a key, only certificates.\n\n(The new setKeyPairCertificate, together with generateKeyPair is\nfunctionally equivalent to installKeyPair, except the keys are generated\nin hardware rather than supplied externally).\n\nBug: 63388672\nTest: cts-tradefed run commandAndExit cts-dev -a armeabi-v7a -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.DeviceOwnerTest#testKeyManagement -l DEBUG\nChange-Id: Idbfe151f6e5311766decbc1a010bff78dc60249f\n"
    },
    {
      "commit": "c4f87e9ceb4d5ce78c1663912bc166e0d41554aa",
      "tree": "2ea863f0692a2e91d1b4ee31df19b770666eab72",
      "parents": [
        "0630ad6d152e3ece554d804968ad83da85ab753d"
      ],
      "author": {
        "name": "Pavel Grafov",
        "email": "pgrafov@google.com",
        "time": "Thu Oct 26 16:34:25 2017 +0100"
      },
      "committer": {
        "name": "Pavel Grafov",
        "email": "pgrafov@google.com",
        "time": "Thu Dec 14 20:53:27 2017 +0000"
      },
      "message": "Introduce DISALLOW_UNIFIED_PASSWORD.\n\nWhen DISALLOW_UNIFIED_PASSWORD is enforced by managed profile\nowner, the user is disallowed to user single lock for both primary\nuser and the profile.\n\nDMP.isUsingUnifiedPassword() can be called by DPC to check if\nthis restriction is obeyed.\n\nTest: make cts-verifier\nTest: cts-tradefed run cts -m CtsDevicePolicyManagerTestCases -t\n  com.android.cts.devicepolicy.ManagedProfileTest#testIsUsingUnifiedPassword\nTest: cts-tradefed run cts -m CtsAdminTestCases -t\n  android.admin.cts.DevicePolicyManagerTest#testIsUsingUnifiedPassword_failIfNotProfileOwner\nBug: 63909482\nChange-Id: Ib758e32d4bf4012d805185bce874f481e17576ba\n"
    },
    {
      "commit": "a173064047d304837d907b9b39ece5c14adf2b25",
      "tree": "6b8716f7f503e84cb257b3154bf5cdded48e43f9",
      "parents": [
        "7d6688f35e37a96579db8ae2342eda3239a92c3c"
      ],
      "author": {
        "name": "Eran Messeri",
        "email": "eranm@google.com",
        "time": "Mon Dec 11 17:48:47 2017 +0000"
      },
      "committer": {
        "name": "Eran Messeri",
        "email": "eranm@google.com",
        "time": "Thu Dec 14 18:09:05 2017 +0000"
      },
      "message": "DevicePolicyManager: Support attestation for generated keys.\n\nIf the KeyGenParameterSpec passed into\nDevicePolicyManager.generateKeyPair contains an attestation challenge,\nrequest an attestation record for the newly-generated key with the\nchallenge provided.\n\nThis particular implementation was chosen, rather than letting the\nattestation record be generated at the same time as key generation, to\navoid having the attestation chain stored in Keystore and associated\nwith the generated alias.\n\nThe rationale is that this is a key that is potentially accessible by\nmultiple applications and the attestation chain may end up being sent\nas a TLS client certificate chain, for example.\n\nAs the attestation challenge should be unique per device, to avoid\nthe potential of sending / sharing unique device information, by\nexplicitly requesting an attestation record after key generation, the\nattestation record is only returned to the generateKeyPair client and\nnot persistend in Keystore.\n\nBug: 63388672\nTest: New CTS test to be run with: \u0027cts-tradefed run commandAndExit cts-dev -a armeabi-v7a -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.DeviceOwnerTest#testKeyManagement -l DEBUG\u0027\nChange-Id: I95a9aef179173b571b533301ac438c675e8fe702\n"
    },
    {
      "commit": "08841efcdf4ff8cf5d743fd5f6f995730b5f876f",
      "tree": "2b109afd792e2f0be819bb6e49f96bfc40168322",
      "parents": [
        "a1ac208ac86e342d63e408fe4715dd559f982b50"
      ],
      "author": {
        "name": "arangelov",
        "email": "arangelov@google.com",
        "time": "Thu Nov 23 15:29:42 2017 +0000"
      },
      "committer": {
        "name": "arangelov",
        "email": "arangelov@google.com",
        "time": "Thu Dec 14 11:46:47 2017 +0000"
      },
      "message": "Add profile owner transfer functionality.\n\nTest: cts-tradefed run cts-dev --module DevicePolicyManager --test com.android.cts.devicepolicy.TransferProfileOwnerTest\nTest: bit FrameworksServicesTests:com.android.server.devicepolicy.DevicePolicyManagerTest\nBug: 69542817\n\nChange-Id: I824fcb334e0ca3157fb67920f7583b309a14bf85\n"
    },
    {
      "commit": "6a8df9c25e6869d171af71f49ed87847f0b212a2",
      "tree": "0adaf0dfff66df653c1aaafdef533998b2237273",
      "parents": [
        "37e9278c7799719180549384d7390079a10e46ea",
        "2b6d7b1e8979afab1563fc2fe29ec998db01ed51"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 13 16:22:50 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 13 16:22:50 2017 +0000"
      },
      "message": "Merge \"Remove some duplication.\""
    },
    {
      "commit": "05e90071ecdcb1c1c0d1b2e6f3ae451195636035",
      "tree": "dd520c7e3b047e7f60f91f0175ee2591ba5c3549",
      "parents": [
        "777f745bfe85b001065821c0c4fec4bd0c3b24f5",
        "b6a9f94d6718894fdd382708a9d87696f055e71e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 13 03:05:23 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 13 03:05:23 2017 +0000"
      },
      "message": "Merge \"Add getDisallowedSystemApps to  DevicePolicyManager\""
    },
    {
      "commit": "b6a9f94d6718894fdd382708a9d87696f055e71e",
      "tree": "0fdd2238f144aa5a85be0a0b24342257d5911fc1",
      "parents": [
        "1f940bf57f71197ae313030d2e66bbb4ec44a1e7"
      ],
      "author": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Tue Nov 07 11:28:56 2017 +0800"
      },
      "committer": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Tue Dec 12 18:47:29 2017 +0000"
      },
      "message": "Add getDisallowedSystemApps to  DevicePolicyManager\n\n- The getDisallowedSystemApps is based on OverlayPacakgesProvider which\n  is moved from ManagedProvisinoing\n- getDisallowedSystemApps will be used by ManagedProvisioning\n- createAndManageUser will now use getDisallowedSystemApps to disable\n  disallowed system apps when creating users\n- LEAVE_ALL_SYSTEM_APPS_ENABLED can be passed to createAndManageUser to\n  enable all system apps\n- ACTION_MANAGED_USER_CREATED will be broadcasted to ManagedProvisioning\n  after managed user is created to take a system app snapshot\n\nBug: 65842187\nTest: OverlayPackagesProviderTest passes\nTest: Disallowed system apps does not appear in device owenr, managed\n      profile, and managed users\nTest: System app snapshot is created after provisinoing device owner,\n      managed profile and managed users\nChange-Id: I86f870f7814b5700cf5539e889fb6998514d110f\n"
    },
    {
      "commit": "a22a7c2f97cd4ae98c5b24837a47a9cd8267736d",
      "tree": "da62fdcdc58c3a7b3b6e85bcb799d0a8d21605d9",
      "parents": [
        "112d859e254f72ffbb2dd0d741d79df1317c1471",
        "8d6e18c879d138b7e9bc3bfdccf85440e98163bd"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 12 18:40:04 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 12 18:40:04 2017 +0000"
      },
      "message": "Merge \"Add DevicePolicyManager.isEphemeralUser\""
    },
    {
      "commit": "2b6d7b1e8979afab1563fc2fe29ec998db01ed51",
      "tree": "b3608d9cb242c8adcbe34c789715bc06480a7b5c",
      "parents": [
        "ec646687c3549a670020ec24fe563d9b418b30a0"
      ],
      "author": {
        "name": "Pavel Grafov",
        "email": "pgrafov@google.com",
        "time": "Tue Dec 12 16:32:29 2017 +0000"
      },
      "committer": {
        "name": "Pavel Grafov",
        "email": "pgrafov@google.com",
        "time": "Tue Dec 12 17:50:33 2017 +0000"
      },
      "message": "Remove some duplication.\n\nOnly admins that require PASSWORD_QUALITY_COMPLEX are now\ntaken into account for minimum lower/upper case letter counts\nas specified in the docs.\n\nTest: cts-tradefed run cts --module CtsDevicePolicyManagerTestCases --test\ncom.android.cts.devicepolicy.DeviceAdminHostSideTestApi23\nTest: cts-tradefed run cts --module CtsDevicePolicyManagerTestCases --test\ncom.android.cts.devicepolicy.DeviceAdminHostSideTestApi24\n\nChange-Id: I0bfba7a5843d0acfa753cf0eb474769107feef43\n"
    },
    {
      "commit": "efdede0f4a04dda8eb1a3e527962f727e4725839",
      "tree": "511f71eed865e4b89e732904debb84dfd809e0a2",
      "parents": [
        "57e6b4fb4d9be6ac8d01bf0ea2debddb10216039",
        "1d99c391ecd30c27be2e8f61aa9ec64546d15d4b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 12 00:48:22 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 12 00:48:22 2017 +0000"
      },
      "message": "Merge \"Cancel alarms \u0026 jobs when an app\u0027s data is cleared\""
    },
    {
      "commit": "5343fcb77df55d01655c9f7bad074c9c7b75ea72",
      "tree": "d9c69f2e19cdc956efd161c0111eab8559d624c0",
      "parents": [
        "0b62766d27da6867cc6d00347cd81427a6ec9e86"
      ],
      "author": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Tue Dec 05 16:49:19 2017 +0000"
      },
      "committer": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Mon Dec 11 14:13:00 2017 +0000"
      },
      "message": "Introduce API to enable existing packages on shared users\n\n- Also unhide setKeepUninstalledPackages\n- installExistingPackage accpets delegation API because all app\n  managemnet PIs did the same, including setKeepUninstalledPackages and\n  enableSytemApp\n\nBug: 70017947\nBug: 65842106\nTest: Install apps already installed in u0 in shared user should succeed\nTest: Install apps in setKeepUninstalledPackages cache in shared user\n      should succeed\nTest: Install apps via delegated package should succeed\nTest: Install apps via unaffiliated profile owner should fail\nTest: Install apps not installed in any user or in APK cache shoudl fail\nChange-Id: Iba563b2050abd0d1f46bfa06cfc0526b7b476b3b\n"
    },
    {
      "commit": "8d6e18c879d138b7e9bc3bfdccf85440e98163bd",
      "tree": "1db224f1479061ee1577a3f79419756d0ed12d90",
      "parents": [
        "0b62766d27da6867cc6d00347cd81427a6ec9e86"
      ],
      "author": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Fri Dec 08 18:11:27 2017 +0000"
      },
      "committer": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Mon Dec 11 13:44:00 2017 +0000"
      },
      "message": "Add DevicePolicyManager.isEphemeralUser\n\nBug: 67580550\nTest: The AP returns false in primary user.\nTest: Create ephemeral user with createAndManageUser, ensure the API return true.\nChange-Id: I1e670ca8a8c6171ddb94a1e4b1cb1a958f12919d\n"
    },
    {
      "commit": "0b62766d27da6867cc6d00347cd81427a6ec9e86",
      "tree": "9dd4e46904f18228cd24ab7738ebe51b5d8f706a",
      "parents": [
        "92beccfe584ad743e05bc50ebad73187a21d016d",
        "d795827c31a7a8d10fd512476f058e4ac6846ced"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 11 06:35:31 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 11 06:35:31 2017 +0000"
      },
      "message": "Merge \"API Review: Drop \"Button\" in is/setLogoutEnabled method\""
    },
    {
      "commit": "1d99c391ecd30c27be2e8f61aa9ec64546d15d4b",
      "tree": "76e3378f4da2b13f1c6295d18570c7ff43173eb9",
      "parents": [
        "ab39cc5797ae7d2298b25f543cbb2e175356ebe7"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Dec 07 16:54:04 2017 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Dec 08 13:53:42 2017 -0800"
      },
      "message": "Cancel alarms \u0026 jobs when an app\u0027s data is cleared\n\nIn the same bit of code, fix a system restore issue:  in the\ncourse of setup + restore, we reestablish permission grants and\nnotification state up front for the to-be-restored app, and\nthen bring in its data.  However, a data wipe is part of the\nprologue for that data delivery -- so we were inadvertently\nunwinding the permission grants and notification state restore\nthat we\u0027d just performed.  Now, we distinguish the restore flow\nfrom other clear-data operations so we don\u0027t unwind that operation.\n\nFinally take the opportunity to elide a lot of copypasta code into\na single predicate-driven implementation.\n\nBug: 67508896\nBug: 69538432\nTest: atest android.app.cts.AlarmManagerTest\n\nChange-Id: I15c912c3c99645599ae9bd6fb7337fa86b4e5757\n"
    },
    {
      "commit": "e0b2ee52d2f274a2d46b2e6695e42d2764c39fa7",
      "tree": "b108622b940a6d004b50b2768f6738fecbb4dfb8",
      "parents": [
        "23627fbff5f13629e997a00b006a1ebdc423e735"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Dec 05 09:46:29 2017 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Dec 08 21:00:15 2017 +0000"
      },
      "message": "Convert services to Android.bp\n\nSee build/soong/README.md for more information.\n\nTest: m checkbuild\nExempt-From-Owner-Approval: trivial conversion\nChange-Id: I417409281c928ea667d937090d2a0d9d72a449a2\n"
    },
    {
      "commit": "d795827c31a7a8d10fd512476f058e4ac6846ced",
      "tree": "037e843dba25ad616d04b9eff0d96b4fbfe11f8a",
      "parents": [
        "a044c1d27e9380d649b6b9dadfb582136be5fa79"
      ],
      "author": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Fri Dec 08 11:30:52 2017 +0000"
      },
      "committer": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Fri Dec 08 11:32:23 2017 +0000"
      },
      "message": "API Review: Drop \"Button\" in is/setLogoutEnabled method\n\nBug: 70336452\nTest: Logout button can still be controlled\n\nChange-Id: I2ac24c4dec1ce90a77037a6415b4a6f77e959965\n"
    },
    {
      "commit": "b2795710f33ce03f4106b4bbd3b41faec0c31bad",
      "tree": "020ae2fc5a5d7770f6868df4947dbd9036bffc72",
      "parents": [
        "f20ed0321032d70d715eb1ccdde338689a30c7f1",
        "852c8f121f2e502e1e8503bfc230dccb81b681d4"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 07 18:20:45 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 07 18:20:45 2017 +0000"
      },
      "message": "Merge \"DevicePolicyManager: Add key generation functionality.\""
    },
    {
      "commit": "852c8f121f2e502e1e8503bfc230dccb81b681d4",
      "tree": "27c90a754791b77990afbcb369cac3fad401a3bf",
      "parents": [
        "d52efa56adaca0bc70fb72082c7c663adcb669cc"
      ],
      "author": {
        "name": "Eran Messeri",
        "email": "eranm@google.com",
        "time": "Wed Nov 15 05:55:52 2017 +0000"
      },
      "committer": {
        "name": "Eran Messeri",
        "email": "eranm@google.com",
        "time": "Thu Dec 07 15:12:30 2017 +0000"
      },
      "message": "DevicePolicyManager: Add key generation functionality.\n\nThis is the crux of the Verified Access feature implementation:\nAdding the ability to generate KeyChain keys directly by the\nsecure hardware, rather than installing software-generated keys\ninto KeyChain.\n\nAdd generateKeyPair to the DevicePolicyManager, which delegates key\ngeneration (via the DevicePolicyManagerService) to the KeyChainService.\n\nDesign highlights:\n* The key generation is delegated via the DevicePolicyManagerService to\n  check that only authorized callers request key generation in KeyChain.\n* KeyChainService performs the actual key generation so it owns the key\n  in Keystore outright.\n* DevicePolicyManagerService then grants the calling app access to the\n  Keystore key, so it can actually be used.\n* Loading the public/private key pair, as well as attestation\n  certificate chain, is done in the client code (DevicePolicyManager)\n  to save parceling / unparceling those objects across process\n  boundaries twice (for no good reason).\n\nNOTE: The key attestation functionality (that includes Device ID) is\nmissing/untested. Will be added in a follow-up CL as this one is quite\nbig already.\n\nHIGHLIGHT FOR REVIEWERS:\n* API: New API in DevicePolicyManager.\n\nBug: 63388672\nTest: cts-tradefed run commandAndExit cts-dev -a armeabi-v7a -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.DeviceOwnerTest#testKeyManagement -l DEBUG; adb shell am instrument \u0027android.security.tests/android.support.test.runner.AndroidJUnitRunner\u0027 (After building the KeystoreTests target and installing the apk)\nChange-Id: I73762c9123f32a94d454ba4f8b533883b55c44cc\n"
    },
    {
      "commit": "28939988f0da2f37bac87a6929a1584ad18fdeba",
      "tree": "f79197c70ae1d770faaebf8a271207ac7a95d82c",
      "parents": [
        "f5cf390e416e964b915b8dcf3339230c93756547"
      ],
      "author": {
        "name": "Pavel Grafov",
        "email": "pgrafov@google.com",
        "time": "Tue Oct 03 15:11:52 2017 +0100"
      },
      "committer": {
        "name": "Pavel Grafov",
        "email": "pgrafov@google.com",
        "time": "Wed Dec 06 17:43:17 2017 +0000"
      },
      "message": "Profile lock timeout.\n\nWhen a managed profile has separate lock (a.k.a work challenge)\nand maximum screen off timeout set by admin, this timeout will\nonly cause the profile to get locked, not the whole device.\n\nPowerManagerService now tracks some per-profile state for profiles\nthat have lock timeout set by admin and have separate lock:\n1. timeout set by admin.\n2. wake lock summary\n3. last activity time\n4. whether the profile is considered active\n5. whether the profile got locked last time it went inactive.\n\nWake lock summaries and last activity times are updated at the\nsame time as global wake lock summary/user activity is updated.\n\nTest: cts-tradefed run commandAndExit cts-dev -a armeabi-v7a -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.ManagedProfileTest\nTest: runtest -c com.android.server.devicepolicy.DevicePolicyManagerTest frameworks-services\nBug: 63908311\nChange-Id: Ief7be4e0bf12bdbedef94a129a13d07a9f98e75c\n"
    },
    {
      "commit": "af9bb8d99ed48a4070827060c9208e7bbbc54b3f",
      "tree": "68c184a0b0fd0fdcc5a3b9e5da6c0ada1f65d4b3",
      "parents": [
        "7742160e39096d5f94c22992d404170931f72854"
      ],
      "author": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Wed Dec 06 14:38:25 2017 +0000"
      },
      "committer": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Wed Dec 06 14:38:25 2017 +0000"
      },
      "message": "Introduce more user management APIs\n\n- boolean stopUser(ComponentName admin, UserHandle userHandle)\n- boolean logoutUser(ComponentName admin)\n- List\u003cUserHandle\u003e getManageableUsers(ComponentName admin)\n- Introduced Injector.binderWithCleanCallingIdentity\n\nBug: 67580550\nTest: manually try each added API with a DPC on both primary and non-prijmray user.\nTest: CTS tracked in b/67581357\nChange-Id: I9789b9b29978d47bc22be6ecad6c5577e0f8eb5b\n"
    },
    {
      "commit": "1beccb0fc230d9e2030ad951d483fb0026ea2d49",
      "tree": "64efd3158c950e35823ea99990643cb3ba32c5e8",
      "parents": [
        "d5b9266f013f917dc314bb2151164a5a752fa548",
        "044588599c97ceff70d74a133c9eb01a028db00c"
      ],
      "author": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Tue Dec 05 20:16:24 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 05 20:16:24 2017 +0000"
      },
      "message": "Merge \"Introduce logout button and DevicePolicyManager API to enable it\""
    },
    {
      "commit": "0de748d833bef8e08329ef1abb9b681391e34ac8",
      "tree": "6d47c3373ced842bf670065192e7e41e72c49c4d",
      "parents": [
        "5826e469e9d03eaa5511d413733edde0a1b99048"
      ],
      "author": {
        "name": "yuemingw",
        "email": "yuemingw@google.com",
        "time": "Wed Nov 15 19:22:27 2017 +0000"
      },
      "committer": {
        "name": "Yueming Wang",
        "email": "yuemingw@google.com",
        "time": "Mon Dec 04 21:56:46 2017 +0000"
      },
      "message": "Implement DevicePolicyManager.setSystemSettings.\n\nb/67627818\nBug: 67627818\nTest: runtest -x services/tests/servicestests/src/\ncom/android/server/devicepolicy/DevicePolicyManagerTest.java\n\ndesign doc: https://docs.google.com/document/d/\n1rvEg5jE3lMhjH-OA0iTLBUY2opM96fg7BrP81MoPnmg/edit#\n\nChange-Id: If5f5c280957085480872f2d59ed59309cf288145\n"
    },
    {
      "commit": "044588599c97ceff70d74a133c9eb01a028db00c",
      "tree": "9d95d28f2be0a80b3dfb13e38278fb9f87f1ce03",
      "parents": [
        "5826e469e9d03eaa5511d413733edde0a1b99048"
      ],
      "author": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Mon Nov 27 18:21:23 2017 +0000"
      },
      "committer": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Mon Dec 04 21:42:44 2017 +0000"
      },
      "message": "Introduce logout button and DevicePolicyManager API to enable it\n\nBug: 67843538\nTest: Manual test with CloudDpc that logout button can be controlled by DevicePolicyManager API and only enabled in shared userse\nTest: Logout button can actually exit the user and ActivityManager log shows that user is stopped\nTest: CTS is tracked in b/67843605\nChange-Id: I9f27050654958ce55f574dd05ff80609255ffeb4\n"
    },
    {
      "commit": "3dd076b065c2fcf95d963288d09effb635f966e1",
      "tree": "75633cf76c9f602e35a3641e64a720e58cfd5afe",
      "parents": [
        "31c417e86d3d9421e46912d4910ef28683f56b74",
        "dabae88659901d135ef807bff5dec49d86f91961"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 30 20:26:49 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 30 20:26:49 2017 +0000"
      },
      "message": "Merge \"Allow secondary user POs on affiliated devices more DPM APIs\""
    },
    {
      "commit": "dabae88659901d135ef807bff5dec49d86f91961",
      "tree": "5de57447d46be4fa75a8712fdbf4a415a350d0ec",
      "parents": [
        "1dd06c0e563b57b6ab86166f792636d9f8c7fb0f"
      ],
      "author": {
        "name": "Benjamin Franz",
        "email": "bfranz@google.com",
        "time": "Tue Aug 08 12:33:19 2017 +0100"
      },
      "committer": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Thu Nov 30 16:38:19 2017 +0000"
      },
      "message": "Allow secondary user POs on affiliated devices more DPM APIs\n\n- DevicePolicyManager.setKeyguardDisabled\n- DevicePolicyManager.setStatusBarDisabled\n- DevicePolicyManager.setDeviceOwnerLockScreenInfo\n- PackageInstaller install and uninstall apps\n\nBug: 64383519\nTest: Can set keyguard disabled, status bar disabled and lock screen message in\n      affliated PO\nTest: Can install and uninstall apps in affiliated PO\nTest: CTS tracked in b/68925683\n\nChange-Id: I71be25098436ba0b42050478c049850c2b21f6f4\n"
    },
    {
      "commit": "031a2f1aafbc4e39ab5601567862d498e8949538",
      "tree": "66cfedb4c02c51a7635ad56d75b87e606f85a3eb",
      "parents": [
        "05013b377266f9e4e2651c6aa819960479dc3676"
      ],
      "author": {
        "name": "Lenka Trochtova",
        "email": "ltrochtova@google.com",
        "time": "Mon Oct 16 18:41:39 2017 +0200"
      },
      "committer": {
        "name": "Lenka Trochtova",
        "email": "ltrochtova@google.com",
        "time": "Thu Nov 30 10:27:35 2017 +0100"
      },
      "message": "Make DevicePolicyManagerService more customizable (per-device).\n\nAdd a config to override the DPMS implementation class to\nbe instantiated from the Lifecycle.\nAdd a hasFeature method to the Injector class.\n\nBUG: 63753860\nTest: manual with TestDPC\n\nChange-Id: I71ef518c49b2233744defdfb7c31019cb228d678\n"
    },
    {
      "commit": "3b501194ab042502f508f7a250748cbb82b45b7e",
      "tree": "ce470d764303f170d741045eb269be3307c61da9",
      "parents": [
        "fff65245fab542ca9de2bf904743095fd0697d6a"
      ],
      "author": {
        "name": "Naomi Musgrave",
        "email": "nmusgrave@google.com",
        "time": "Fri Oct 27 14:52:44 2017 +0100"
      },
      "committer": {
        "name": "Naomi Musgrave",
        "email": "nmusgrave@google.com",
        "time": "Fri Nov 24 16:38:05 2017 +0000"
      },
      "message": "Add id to NetworkEvent.\n\nTest: runtest --path frameworks/base/services/tests/servicestests/src/com/android/server/devicepolicy/NetworkEventTest.java\n\nBug: 63910201\nChange-Id: Iaac35fe27529937d2de7e3f096f6e94889cf8b85\n"
    },
    {
      "commit": "19d19048e46a44f9cd92f9b3c2b45d9603283f15",
      "tree": "e42d13f7541b8f038533d58780fe708745feebd8",
      "parents": [
        "5f52b4dfe539e2c8226e173630645df1285daae5"
      ],
      "author": {
        "name": "Eran Messeri",
        "email": "eranm@google.com",
        "time": "Mon Nov 20 12:48:52 2017 +0000"
      },
      "committer": {
        "name": "Eran Messeri",
        "email": "eranm@google.com",
        "time": "Tue Nov 21 17:01:39 2017 +0000"
      },
      "message": "DevicePolicyManager: Make installed keys user-selectable by default.\n\nAfter Change-Id: Ibaba2ddd4f94fced1a2a7bfcfb91189302ec7f3a was merged,\nKeyChain, by default, made keys installed in it not user-selectable,\nwhich means users could not choose those keys in the Certificate\nSelection prompt.\nThis is the correct behaviour (secure by default), but means the\nDevicePolicyManager has to explicitly set keys as user-selectable\nto be compatible with the previous behaviour.\n\nThis CL does the following:\n* Adding an installKeyPair variant to the DevicePolicyManager to\n  allow specifying user-selectability of the key.\n* Make old installKeyPair variants delegate to the new variant,\n  with the default of setting installed keys user-selectable.\n* Modify the DevicePolicyManager service definition and service to\n  take the extra user-selectability parameter and set the value\n  in KeyChain.\n\nNote that the reason the CTS test started failing is not related to\nthis change but a CTS Verifier test should catch the problem this\nCL is solving.\n\nPart of the fix for b/69337278\n\nBug: 69337278\nTest: cts-tradefed run commandAndExit cts-dev -a armeabi-v7a -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.DeviceOwnerTest#testKeyManagement\nChange-Id: Ifc240ed4a20a9d00bc6140dfb45bd1140e1f8260\n"
    },
    {
      "commit": "1a6e667cb6e9211908d02eb21c50c006473376f9",
      "tree": "302d161f3ca154978de4359d670e10705729c5d2",
      "parents": [
        "7c0abe1920d1e8d413e5c11252f02ccc4d4d7ca7"
      ],
      "author": {
        "name": "Ricky Wai",
        "email": "rickywai@google.com",
        "time": "Fri Oct 27 14:46:01 2017 +0100"
      },
      "committer": {
        "name": "Ricky Wai",
        "email": "rickywai@google.com",
        "time": "Wed Nov 08 18:57:46 2017 +0000"
      },
      "message": "Add Network security watchlist service\n\nNetwork security watchlist service is a service to monitor all potential\nharmful network traffic. By setting a network watchlist, any connections\nthat visit any site from watchlist will be logged.\n\nLogs will be aggregated everyday and encoded using differential\nprivacy before exporting it from framework.\n\nThis feature is disabled now, run \"setprop ro.network_watchlist_enabled true\" to enable it.\n\nAll network events are handled in an async bg thread, it should not\ncause any delay in netd. Also, it uses the hooks in enterprise network logging,\nso we can run netd_benchmark to measure the impact to netd.\n\nHere are the things not included in this CL:\n- ConfigUpdater to get and set watchlist\n- Differential privacy encoding logic and reporting\n- CTS\n- Memory and performance optimization for internal watchlist data structure\n\nTest: manual - turn on the feature, hard code a watchlist xml, process\nthat visited that domain is being logged in sqlite.\nTest: run netd_benchmark - seems no obvious performance change.\nTest: bit FrameworksCoreTests:android.net.NetworkWatchlistManagerTests\nTest: runtest frameworks-net\nTest: runtest frameworks-services -p com.android.server.net.watchlist\n\nBug: 63908748\n\nChange-Id: I09595178bac0070a867bc5e0501a7bf2c840e398\n"
    },
    {
      "commit": "ab57e18da1b249db29e54ce33ad58117652a7e0d",
      "tree": "125cad3681a0ae91ceba16863fe1a5682ada762d",
      "parents": [
        "5b11eec535d5b60b8e8d5059cc3ec4e433d8c3d9",
        "e078db7539da53bac754ac2442dc07a156718417"
      ],
      "author": {
        "name": "Charles He",
        "email": "qiurui@google.com",
        "time": "Fri Oct 27 07:57:06 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 27 07:57:06 2017 +0000"
      },
      "message": "Merge \"DPM: introduce setLockTaskFeatures().\""
    },
    {
      "commit": "e078db7539da53bac754ac2442dc07a156718417",
      "tree": "79c505828af8353c90d0f9b6a08b4f0c62ce5eca",
      "parents": [
        "9b874662672b4fccdcdb82c963bcc0c7028806f8"
      ],
      "author": {
        "name": "Charles He",
        "email": "qiurui@google.com",
        "time": "Thu Oct 19 18:03:20 2017 +0100"
      },
      "committer": {
        "name": "Charles He",
        "email": "qiurui@google.com",
        "time": "Tue Oct 24 18:13:19 2017 +0100"
      },
      "message": "DPM: introduce setLockTaskFeatures().\n\nAdd new DPM APIs to control which SystemUI features are enabled during\nLockTask mode:\n* setLockTaskFeatures()\n* getLockTaskFeatures()\n* int flags representing various configurable SystemUI features\n\nBug: 65813398\nTest: bit FrameworksServicesTests:com.android.server.devicepolicy.DevicePolicyManagerTest\nTest: bit FrameworksServicesTests:com.android.server.am.LockTaskControllerTest\nTest: cts-tradefed run cts-dev --module DevicePolicyManager -t com.android.cts.devicepolicy.DeviceOwnerTest#testLockTask_deviceOwnerUser\nChange-Id: I0ee3cf6dbe2234ec29d1384195dadc0f290aa73b\n"
    },
    {
      "commit": "e43cdf7509736d28bdcd016d43c4cbea751052da",
      "tree": "0bba866196c194aadce8a9bc84ef3c2c161ee77b",
      "parents": [
        "d3903e95a73eb542ebdeb703cf13301db639b21b"
      ],
      "author": {
        "name": "yuemingw",
        "email": "yuemingw@google.com",
        "time": "Thu Oct 12 16:52:11 2017 +0100"
      },
      "committer": {
        "name": "yuemingw",
        "email": "yuemingw@google.com",
        "time": "Mon Oct 23 10:53:15 2017 +0100"
      },
      "message": "Add setTime and setTimeZone API.\n\nFix: 67497358\nTest: wait for cts test in the following cl. For unitest:\n runtest -x services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java\n\nAdd setTime and setTimeZone API in devicepolicymanager.\nAdd unitest for each API.\nFollowing design doc: https://docs.google.com/document/d/1NV93mr2CT157S_haru1QbKo9HLeP9iPM9eMiGfVmfCM/edit\n\nChange-Id: I188c27b0b99137b6f01e42ae1ad49356ce0a81b2\n"
    },
    {
      "commit": "e0fa2c04089c3e3bec38d84ae8905388190a4462",
      "tree": "b8e93c0dc3e8c92da579d377963f78c5ed7d1e6d",
      "parents": [
        "6f2118d76334f9851528cfee215b261b0f7e5d31",
        "0eb9738d1708d9aa7846782046e6828ffc9fe901"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 05 18:30:33 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 05 18:30:33 2017 +0000"
      },
      "message": "Merge changes I616184fa,Ibc1500f5\n\n* changes:\n  Move mPermissions from package settings\n  Move DefaultPermissionGrantPolicy\n"
    },
    {
      "commit": "0eb9738d1708d9aa7846782046e6828ffc9fe901",
      "tree": "b69244eb3a2ccd9ff80cfcea23e85b7c88b743f0",
      "parents": [
        "82b0842051a93764e96a68072da1a220f00c2c27"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Tue Oct 03 16:57:22 2017 -0700"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Thu Oct 05 07:18:10 2017 -0700"
      },
      "message": "Move mPermissions from package settings\n\nCreate a settings class only for use with permissions. It\u0027s\nsubservient [and should only be accessed directly by] package\nsettings or the permission manager. The rest of the permission\nrelated data needs to be moved to permission settings. At\nwhich point we can start pulling the permission methods out of\nthe package manager service and into the permission manager.\n\nWe still have a somewhat tight relationship between package\nmanager and the permission manager. It\u0027s unclear how far we need\nto separate them and if relying entirely on an internal\ninterface is sufficient.\n\nBug: 63539144\nTest: Manual. Builds and runs\nTest: cts-tradefed run commandAndExit cts-dev -m CtsAppSecurityHostTestCases -t android.appsecurity.cts.PermissionsHostTest\nTest: cts-tradefed run commandAndExit cts-dev -m CtsPermissionTestCases\nTest: cts-tradefed run commandAndExit cts-dev -m CtsPermission2TestCases\nTest: bit FrameworksServicesTests:com.android.server.pm.PackageManagerSettingsTests\nChange-Id: I616184fa2135a11687e4ce615884f861466fdebe\n"
    },
    {
      "commit": "f7f67dc538d0f8ff8968fc7fed87447c79ce8db0",
      "tree": "8df9102844245c885b45c9d568a9021d3d5160a6",
      "parents": [
        "466df70cc58c97497fa4ab27c5b3ba473a1f2b3a"
      ],
      "author": {
        "name": "yuemingw",
        "email": "yuemingw@google.com",
        "time": "Fri Sep 08 14:23:53 2017 +0100"
      },
      "committer": {
        "name": "yuemingw",
        "email": "yuemingw@google.com",
        "time": "Mon Oct 02 21:03:44 2017 +0100"
      },
      "message": "Add a new WipeData API that allows an input string for the reason to wipe user.\n\nTest: bit FrameworksServicesTests:com.android.server.devicepolicy.DevicePolicyManagerTest\n\nFix: 31177807\n\nChange-Id: I0b46f4d029d285d5018875f03285551f6b822376\n"
    },
    {
      "commit": "da781cccbfe41fec63fee8e4f96d8f77b2a63136",
      "tree": "6a873d6cfff19d4a84d16875b09acdbc50d736d0",
      "parents": [
        "955c04ed6e896a451005a0669e73aa30bac1aa1f",
        "81efd59ed7b113c587d81ad5e80135d6c3b1aa54"
      ],
      "author": {
        "name": "Rubin Xu",
        "email": "rubinxu@google.com",
        "time": "Fri Sep 08 17:33:55 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 08 17:33:55 2017 +0000"
      },
      "message": "Merge \"Merge \"Always treat password as sufficient if no password policy is set\" into oc-mr1-dev am: f72a2f2c93\" into oc-mr1-dev-plus-aosp\nam: 81efd59ed7\n\nChange-Id: Ib8e1b7df0d85c960f028c9db98554a935d068d27\n"
    },
    {
      "commit": "25102ef75e01e3cb691aacf1c5f5d953e835cfa1",
      "tree": "ea44d170374e6ff9366e8a59720fb72ac0445b21",
      "parents": [
        "60d670e8260928f2bebe0c76d1db63ffb37285c6"
      ],
      "author": {
        "name": "Rubin Xu",
        "email": "rubinxu@google.com",
        "time": "Fri Sep 08 12:08:26 2017 +0100"
      },
      "committer": {
        "name": "Rubin Xu",
        "email": "rubinxu@google.com",
        "time": "Fri Sep 08 14:08:09 2017 +0100"
      },
      "message": "Always treat password as sufficient if no password policy is set\n\nHandle the special case when work profile is freshly created on a FDE device\n\nTest: cts-tradefed run cts-dev -m CtsDevicePolicyManagerTestCases\n      -t com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPasswordSufficientInitially\nBug: 63887564\nChange-Id: Ie8e430d4ff63be74fb2d4fc3ad3a8735f1de48b0\n"
    },
    {
      "commit": "d375476bda6226ce4c8ad57671114a7320161559",
      "tree": "819bc57d90d2d64517fe76cfc37dfbccd32caca6",
      "parents": [
        "3d6e6a63e9ab8b11a56bf103e112713599534d06",
        "c17f1d412b682ee12f30bc77b3b5275a5898fc7e"
      ],
      "author": {
        "name": "Rubin Xu",
        "email": "rubinxu@google.com",
        "time": "Wed Sep 06 12:27:42 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 06 12:27:42 2017 +0000"
      },
      "message": "Merge \"Fix resetPasswordWithToken before user unlock\" into oc-mr1-dev am: 2e21fba2b5\nam: c17f1d412b\n\nChange-Id: If147939b9c74803ca2c6177e770736b0e82fdc96\n"
    },
    {
      "commit": "7cf4509c31f3dc1c32f89c26867a50c4ed0d5618",
      "tree": "7a1c82cbd4ec85d720132398a399f25eb1544130",
      "parents": [
        "2dac2cce5a2f28ae368e7e6af6fb4e49ac22c5b4"
      ],
      "author": {
        "name": "Rubin Xu",
        "email": "rubinxu@google.com",
        "time": "Mon Aug 28 11:47:35 2017 +0100"
      },
      "committer": {
        "name": "Rubin Xu",
        "email": "rubinxu@google.com",
        "time": "Tue Sep 05 14:49:00 2017 +0100"
      },
      "message": "Fix resetPasswordWithToken before user unlock\n\n1. Fix system server crash when resetPasswordWithToken is called before use\n   unlock, due to DPMS enforces user is unlocked when calculating password\n   sufficiency.\n2. Propogate new password metric from LockSettingsService to DPMS after a\n   password reset with token, and fix a bug where stale quality was used.\n\nBug: 64923343\nBug: 64928518\nBug: 65286643\nTest: cts-tradefed run cts-dev -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.ManagedProfileTest#testResetPasswordWithTokenBeforeUnlock\nTest: cts-tradefed run cts-dev -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testResetPasswordWithToken\nTest: runtest frameworks-services -p com.android.server.locksettings\nTest: cts-tradefed run cts-dev -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.DeviceAdminHostSideTestApi24#testRunDeviceOwnerPasswordTest\nTest: runtest frameworks-core -c android.app.admin.PasswordMetricsTest\nTest: runtest frameworks-services -c com.android.server.devicepolicy.DevicePolicyManagerTest\nChange-Id: Ibb3736547b3b36da4a8a67af711e08a38427aa56\n"
    },
    {
      "commit": "79abc1da355c3e852a6f11b81e7c83c3d894bb19",
      "tree": "b958afd29f253988f4b69cdc0041089985086499",
      "parents": [
        "a1f7fb9b5b7f090c0e070a878ae9b7c62733bced",
        "714f77b94692ecebb5fc40573a3eeb18b3df449e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 01 12:42:39 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 01 12:42:39 2017 +0000"
      },
      "message": "Merge \"Send admin enabled broadcast in foreground queue\""
    },
    {
      "commit": "714f77b94692ecebb5fc40573a3eeb18b3df449e",
      "tree": "7999ffd6bc8868893cf3c54b37ebcde8584795be",
      "parents": [
        "409c1b955b45b61569890030033cf1c9e2304807"
      ],
      "author": {
        "name": "Benjamin Franz",
        "email": "bfranz@google.com",
        "time": "Tue Aug 01 14:18:35 2017 +0100"
      },
      "committer": {
        "name": "Benjamin Franz",
        "email": "bfranz@google.com",
        "time": "Fri Sep 01 12:02:29 2017 +0100"
      },
      "message": "Send admin enabled broadcast in foreground queue\n\nCurrently admin enabled broadcast is sent as a background broadcast\nupon ACTION_USER_STARTED. This can lead to delays on managed secondary\nusers. During that period the admin has no chance to apply any\npolicies, effectively leaving the user unmanaged. Sending it as a\nforeground broadcast should speed up that process.\n\nUsing a foreground broadcast on ACTION_USER_STARTED can cause a race\ncondition where the user is not unlocked yet and therefore the\nbroadcast is omitted (unless the receiver is direct boot aware).\nSending the broadcast upon ACTION_USER_UNLOCKED fixes that issue.\n\nBug: 64382185\nTest: manual\nChange-Id: I3a89ba2e64cd6013723699cc1211b0144db254a6\n"
    },
    {
      "commit": "4456a99918f00d6da50ffb98bfe6baf9e63c2bae",
      "tree": "08be52148286433fe612a8559ea6744878e9b955",
      "parents": [
        "6307647e2493e19673f733fdc471e6150df43f72",
        "32a3bf35210bf4d46d1cf33d63434df1eda1ab6a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 01 10:59:45 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 01 10:59:45 2017 +0000"
      },
      "message": "Merge \"Update DPM.setKeyguardDisabled to also dismiss the keyguard\""
    },
    {
      "commit": "6307647e2493e19673f733fdc471e6150df43f72",
      "tree": "7c01c2a0af2eb5590ff29da24ed980083e5379a1",
      "parents": [
        "f4627b889f2ce36ff79e16e4d43046de41a3072c",
        "77c94a9c03cf92a2325b442c863a19e5fd58f255"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 01 09:59:49 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 01 09:59:49 2017 +0000"
      },
      "message": "Merge \"Create a flag to allow starting managed user in background\""
    },
    {
      "commit": "32a3bf35210bf4d46d1cf33d63434df1eda1ab6a",
      "tree": "d399353579926b579a9e90633c40c85aa934fd53",
      "parents": [
        "409c1b955b45b61569890030033cf1c9e2304807"
      ],
      "author": {
        "name": "Benjamin Franz",
        "email": "bfranz@google.com",
        "time": "Fri Aug 04 15:01:52 2017 +0100"
      },
      "committer": {
        "name": "Benjamin Franz",
        "email": "bfranz@google.com",
        "time": "Fri Sep 01 09:19:39 2017 +0100"
      },
      "message": "Update DPM.setKeyguardDisabled to also dismiss the keyguard\n\nCurrently if the keyguard is shown, setKeyguardDisabled does not\ndismiss it but disables it for the future. This change also dismisses\nthe keyguard in this situation.\n\nTest: manual\nBug: 64383815\nChange-Id: Idb89f363510a18c741d335d96d11c5492c0eaee3\n"
    },
    {
      "commit": "77c94a9c03cf92a2325b442c863a19e5fd58f255",
      "tree": "ea80c815fefb56b8bb314b8f7913268044a18cdf",
      "parents": [
        "b1671e0e1affc085e0e196e79ee1185d03a5ae91"
      ],
      "author": {
        "name": "Benjamin Franz",
        "email": "bfranz@google.com",
        "time": "Wed Aug 09 14:16:03 2017 +0100"
      },
      "committer": {
        "name": "Benjamin Franz",
        "email": "bfranz@google.com",
        "time": "Thu Aug 31 16:11:47 2017 +0100"
      },
      "message": "Create a flag to allow starting managed user in background\n\nCurrently DPM.createAndManageUser does not start the user in the\nbackground, leading to a potential race between user having access to\nthe secondary user and admin having time to push policies. To mitigate\nthis we\u0027re adding a flag that allows secondary users to be started in\nbackground as part of the API. The admin can then apply policies before\nswitching to that user.\n\nBug: 64382185\nTest: cts-tradefed run singleCommand cts -m DevicePolicyManager --test\ncom.android.cts.devicepolicy.DeviceOwnerTest#testCreateAndManageUser_StartUserInBackground\n--abi arm64-v8a\nChange-Id: Id6f6ab7584a249680c8554c21977cbb69a220332\n"
    },
    {
      "commit": "326be275726047c7e3b3ada5d85a58649b377b81",
      "tree": "4e20650c8469335b9a8c98f2e69518559faf97d9",
      "parents": [
        "2456be8db8861c383e5cfe775b04e4e5b7889a35",
        "a77e35782cb0aa4b6ea0afa864424ea2dc09e79b"
      ],
      "author": {
        "name": "Benjamin Franz",
        "email": "bfranz@google.com",
        "time": "Thu Aug 31 08:59:30 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 31 08:59:30 2017 +0000"
      },
      "message": "Merge \"Profile Owner API to clear application data\""
    },
    {
      "commit": "a77e35782cb0aa4b6ea0afa864424ea2dc09e79b",
      "tree": "372db3b74e78042210e3a60e363c52a85ef5a7a5",
      "parents": [
        "b1671e0e1affc085e0e196e79ee1185d03a5ae91"
      ],
      "author": {
        "name": "Benjamin Franz",
        "email": "bfranz@google.com",
        "time": "Fri Jun 23 12:01:44 2017 +0100"
      },
      "committer": {
        "name": "Benjamin Franz",
        "email": "bfranz@google.com",
        "time": "Tue Aug 29 12:18:02 2017 +0100"
      },
      "message": "Profile Owner API to clear application data\n\nThis new API lets DOs clear application data on a per package basis. It\ncan be used to reset misbehaving packages as well as for a light-weight\nsession model where employees log in to a device and have their data\ncleared when they log out.\n\nTest: cts-tradefed run singleCommand cts -m DevicePolicyManager --test\ncom.android.cts.devicepolicy.DeviceOwnerTest#testClearApplicationData\n--abi arm64-v8a\nBug: 63910199\nChange-Id: I6a03ae90fffe6159172ea7e46f9b8b69efeabcfe\n"
    },
    {
      "commit": "35af532ffd62b6ee3a3eb46b55b589e5f68290a8",
      "tree": "1e8886db6ef39436c791af7916b4975cba5d813b",
      "parents": [
        "391415435b71fd10dbc0c1c16fe5c4dd8affa4bd",
        "4dd85d5fb296c432fb80091fae30c7cc1be29293"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 15 15:16:07 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 15 15:16:07 2017 +0000"
      },
      "message": "Merge \"DPC should not be allowed to grant development permission\""
    },
    {
      "commit": "4dd85d5fb296c432fb80091fae30c7cc1be29293",
      "tree": "b672df19d27ca3bc9ded5e329c0737c3dae811e1",
      "parents": [
        "0a869e85189526bfc19795bd8c1de9e913d83dee"
      ],
      "author": {
        "name": "Tony Mak",
        "email": "tonymak@google.com",
        "time": "Thu Aug 10 14:19:43 2017 +0100"
      },
      "committer": {
        "name": "Tony Mak",
        "email": "tonymak@google.com",
        "time": "Thu Aug 10 14:37:55 2017 +0100"
      },
      "message": "DPC should not be allowed to grant development permission\n\nTest: cts-tradefed run cts-dev --module CtsDevicePolicyManagerTestCases --t  com.android.cts.devicepolicy.MixedDeviceOwnerTest#testPermissionGrant_developmentPermission\nTest: cts-tradefed run cts-dev --module CtsDevicePolicyManagerTestCases --t  com.android.cts.devicepolicy.MixedProfileOwnerTest#testPermissionGrant_developmentPermission\nTest: cts-tradefed run cts-dev --module CtsDevicePolicyManagerTestCases --t  com.android.cts.devicepolicy.MixedDeviceOwnerTest#testPermissionGrant\nTest: cts-tradefed run cts-dev --module CtsDevicePolicyManagerTestCases --t  com.android.cts.devicepolicy.MixedProfileOwnerTest#testPermissionGrant\nTest: Run \"Permissions lockdown\" test in CtsVerifier\n\nBug: 62623498\n\nChange-Id: If83d8edd0eea99145421e967ae47fdc264a5cf7c\n"
    },
    {
      "commit": "aa6f51811ebbe1acad688bfea59e1b153fc3904b",
      "tree": "f5616a5cfc60db9bac95b25c5bc29dc5feb68d6f",
      "parents": [
        "47d8634cb76323e5f6d200800704093c1dec8b8b",
        "c2fabb2f8e7109e20cc8ea446bcaca3f7397ec09"
      ],
      "author": {
        "name": "Christine Franks",
        "email": "christyfranks@google.com",
        "time": "Thu Aug 10 05:53:11 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 10 05:53:11 2017 +0000"
      },
      "message": "Merge \"Add settings and reset operations for demo users\" into oc-dr1-dev am: 88710dead0 am: 8121e6c162\nam: c2fabb2f8e\n\nChange-Id: Ie286d80440bfdb0de87e4f34a45acfdc99998bda\n"
    },
    {
      "commit": "8121e6c162c9b9d8551a6471cc03ccbdb424b61c",
      "tree": "2b7a32b5aab8360297a7ba4dac82c530981a2b45",
      "parents": [
        "c75f43c1ab9aac7a0c791f24462c26161dc41296",
        "88710dead09434df19f872e5114f19e09680323c"
      ],
      "author": {
        "name": "Christine Franks",
        "email": "christyfranks@google.com",
        "time": "Thu Aug 10 05:37:57 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 10 05:37:57 2017 +0000"
      },
      "message": "Merge \"Add settings and reset operations for demo users\" into oc-dr1-dev\nam: 88710dead0\n\nChange-Id: Id1b8515e9323731f7bacd55d850460f00fc2c651\n"
    },
    {
      "commit": "9a18f5fa409d99e09bed57626d5a600142fd7009",
      "tree": "0a303dd0696e5f54caecbf704f43c08ab8b948ba",
      "parents": [
        "0a3684eb451ae226b522d83088653b9f4f06e7bd"
      ],
      "author": {
        "name": "Christine Franks",
        "email": "christyfranks@google.com",
        "time": "Mon Aug 07 14:28:35 2017 -0700"
      },
      "committer": {
        "name": "Christine Franks",
        "email": "christyfranks@google.com",
        "time": "Wed Aug 09 19:18:20 2017 -0700"
      },
      "message": "Add settings and reset operations for demo users\n\n- Allow Global settings to be set in demo mode\n- Allow Secure settings to be set by demo users\n- Allow fully enabling apps for demo users\n- Send enable broadcast as foreground broadcast\n\nBug: 62712426\nTest: runtest -c \\\ncom.android.server.devicepolicy.DevicePolicyManagerTest \\\nframeworks-services\n\nChange-Id: Icd5d1eda12aa6b97bd4770713710a982bb0fc8e5\n"
    },
    {
      "commit": "1882302d4341c675d631b0264bd93aef4419059b",
      "tree": "09b85c2b9e21c7804fe86ed26e1e38c368066d0f",
      "parents": [
        "9c6f4bfba728cd099206516c457466130cff2272"
      ],
      "author": {
        "name": "Benjamin Franz",
        "email": "bfranz@google.com",
        "time": "Fri Aug 04 16:19:43 2017 +0100"
      },
      "committer": {
        "name": "Benjamin Franz",
        "email": "bfranz@google.com",
        "time": "Fri Aug 04 16:19:43 2017 +0100"
      },
      "message": "Allow ephemeral user creation via createAndManageUser\n\nEphemeral users where initially created for split system users. Make\nthem available on all systems. This CL is initially for evaluation\npurpose to see how advanced they are in the current system.\n\nTest: manual\nBug: 64381943\nChange-Id: Ia9caa8e07037a64055f2033113806b8c559a75af\n"
    },
    {
      "commit": "d019d4c3156237d8bf2a993070331f61628c1046",
      "tree": "89d486bf712a45a812c49a2989fca98135b3a620",
      "parents": [
        "4c79c7b411cd40b378000de735886a59359ddb9e",
        "b128d9cd777b87d759ee885adf308dd163e0552e"
      ],
      "author": {
        "name": "Christine Franks",
        "email": "christyfranks@google.com",
        "time": "Tue Jul 11 14:53:59 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 11 14:53:59 2017 +0000"
      },
      "message": "Merge \"Support demo mode and demo users\" into oc-dr1-dev am: 2f87ca1637\nam: b128d9cd77\n\nChange-Id: I317aa17cefa918483aeec0cc58df89dd18f59472\n"
    },
    {
      "commit": "361b825c0dc0d2b0bb1726da7c31c92f3c4e8a35",
      "tree": "9e243d9c2e4725d3e64306c54d423d8e5d8b9a3d",
      "parents": [
        "037503dfa02e1278f5d43b5710340f89e0ae379c"
      ],
      "author": {
        "name": "Christine Franks",
        "email": "christyfranks@google.com",
        "time": "Fri Jun 23 18:12:46 2017 -0700"
      },
      "committer": {
        "name": "Christine Franks",
        "email": "christyfranks@google.com",
        "time": "Mon Jul 10 17:49:42 2017 -0700"
      },
      "message": "Support demo mode and demo users\n\nBug: 62712426\nTest: run cts -m CtsDevicePolicyManagerTestCases -t \\\ncom.android.cts.devicepolicy.DeviceOwnerTest#testCreateAndManageEphemeralUser\nand\nrun cts -m CtsDevicePolicyManagerTestCases -t \\\ncom.android.cts.devicepolicy.DeviceOwnerTest# \\\ntestCreateAndManageEphemeralUserFailsWithoutSplitSystemUser\nand\nruntest -c com.android.server.devicepolicy.DevicePolicyManagerTest \\\nframeworks-services\nChange-Id: I77a71a994fe0f4f1f8c5df7c4ccf493aafa8fefe\n"
    },
    {
      "commit": "4a29c52456f439c231b290e6d94b4951413cfa89",
      "tree": "02eb89428a613f855506678670c54fdec7187bea",
      "parents": [
        "7162057fa46856e746b67011e4bc6a134f5afbb3"
      ],
      "author": {
        "name": "Pavel Grafov",
        "email": "pgrafov@google.com",
        "time": "Fri Jun 30 12:50:33 2017 +0100"
      },
      "committer": {
        "name": "Pavel Grafov",
        "email": "pgrafov@google.com",
        "time": "Fri Jun 30 12:50:33 2017 +0100"
      },
      "message": "Set ro.device_owner when DO is present.\n\nDo not wait until deivce_provisioned is set. This logic is currently used\nfor Wear devices and since nothing except security logging now depends on\nthis property, we can safely set it to \"true\" if there is a DO on the device.\n\nBug: 35342467\nTest: manual, setting a DO before SUW triggers setting of the property.\n      property to be set.\nTest: cts-tradefed run cts -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.DeviceOwnerTest\n\nChange-Id: I2c179194fb8f0f4bef96bb21dbf2522ba99afcec\n"
    },
    {
      "commit": "3dce99c9ab94362738c83d02a1f3fd14c08395ac",
      "tree": "fbcbc069d8bfd0d018901f9317236ccf3c17bb02",
      "parents": [
        "87b90a1950b86165eca2093b87b20acc85b8403b",
        "8954507d8c012be60e1b2a91aa15beac68f792b6"
      ],
      "author": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Tue Jun 27 13:09:42 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jun 27 13:09:42 2017 +0000"
      },
      "message": "Merge \"Fix deadlock in NetworkLoggingHandler\" into oc-dev am: ba18b0c683\nam: 8954507d8c\n\nChange-Id: I4688c240fbed0e82caf114579ed2e6f5946e0ee0\n"
    },
    {
      "commit": "9f8409338697b52389b7e8bd0f2bcb7ea49ba667",
      "tree": "412fc1972629a93f119355cc772faebce14a4f6b",
      "parents": [
        "23ed7d76998859a39a5f81c48869fc063d6d4a79",
        "ba18b0c6831ddbc19ef42748ff65d54d8329afda"
      ],
      "author": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Tue Jun 27 13:04:36 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jun 27 13:04:36 2017 +0000"
      },
      "message": "Merge \"Fix deadlock in NetworkLoggingHandler\" into oc-dev\nam: ba18b0c683\n\nChange-Id: I80adc11fae6eb7ed72c1f304a560e2a5c9f93108\n"
    },
    {
      "commit": "08a8783c56539b4a990a8c95d7f5011a263848b8",
      "tree": "39498fef7406b81f1786aee2b9dad24e734097d8",
      "parents": [
        "7fce51594ee2393642dccaf277f204928fff86ad"
      ],
      "author": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Mon Jun 26 19:13:56 2017 +0100"
      },
      "committer": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Tue Jun 27 11:38:00 2017 +0100"
      },
      "message": "Fix deadlock in NetworkLoggingHandler\n\nStop NetworkLoggingHandler holding a lock\nwhen calling back into DevicePolicyManagerService.\n\nTest: cts-tradefed run cts -m CtsDevicePolicyManagerTestCases --test com.android.cts.devicepolicy.DeviceOwnerTest#testNetworkLoggingWithSingleUser\nTest: cts-tradefed run cts -m CtsDevicePolicyManagerTestCases --test com.android.cts.devicepolicy.DeviceOwnerTest#testNetworkLoggingWithTwoUsers\n\nBug: 62966480\nChange-Id: I41c3edca8922008a9d838d71ddcc50883699bc74\n"
    },
    {
      "commit": "f4f9cec234bf147f0067cef2791a26eaa2cde0a0",
      "tree": "5ae890c04c08931f0253fe30ca90fc0634d3aaaa",
      "parents": [
        "f69d450b6f0a1c3dcaead83943dfe98fceffff47"
      ],
      "author": {
        "name": "yinxu",
        "email": "yinxu@google.com",
        "time": "Mon Jun 19 10:28:19 2017 -0700"
      },
      "committer": {
        "name": "yinxu",
        "email": "yinxu@google.com",
        "time": "Fri Jun 23 10:56:55 2017 -0700"
      },
      "message": "Add flag to wipe eUICC data\n\nAdd a new flag in the DevicePolicyManager so that we can Use\nEuiccManager#eraseSubscriptions(PendingIntent) to erase all the carrier data\nfrom eUICC chip if the user choose to \"ERASE\" from the Android device manager.\n\nBug: 37277944\nTest: E2E\nChange-Id: Ia78090a00d956c645725be4fd591e02ded8ec467\n"
    },
    {
      "commit": "fabfcb05281be6841799d2e31cf9c89cc39ef79b",
      "tree": "475ae06e9a5cdb8997c8018ce1bacfe7d7e70847",
      "parents": [
        "bcee3cc3fa57263cf253dd652e4d90c030c49b5a"
      ],
      "author": {
        "name": "Eric Sandness",
        "email": "sandness@google.com",
        "time": "Wed May 03 18:28:56 2017 +0100"
      },
      "committer": {
        "name": "Eric Sandness",
        "email": "sandness@google.com",
        "time": "Fri May 12 15:33:42 2017 +0100"
      },
      "message": "Stop saving password metrics to disk\n\nPreviously, DevicePolicyManager saved password stats (number of letters,\nnumber of symbols, etc) to disk for FDE devices. This made it possible\nfor the isActivePasswordSufficient() API to return a result before the\npassword was entered for the first time after a reboot. Access to these\nstats would significantly narrow the space of possible passwords an\nattacker would need to explore.\n\nGoing forward, every time either the password or the password\nrequirements change, a flag will be persisted indicating whether the\ncurrent password meets the requirements. Before the password is entered\nfor the first time after a reboot, isActivePasswordSufficient() simply\nreturns the value of this flag. (After the password is entered for the\nfirst time, isActivePasswordSufficient() uses password stats saved in\nmemory, as is the case today.)\n\nThis creates a window where isActivePasswordSufficient() may return an\nincorrect value before the password is entered for the first time, if\nthe requirements are changed after startup so that the current password\nno longer meets the requirements. This has been deemed an acceptable\ncompromise in order to avoid storing potentially sensitive data.\n\nTest: runtest -c com.android.server.devicepolicy.DevicePolicyManagerTest\nframeworks-services\n\nBug: 34218769\nChange-Id: I5d3cd008a9ee2787bcb10ed5455bb61c6014ae00\n"
    },
    {
      "commit": "09c529a9bc85bfd0d50b65f447472ad064eac16c",
      "tree": "e80a4720b48132a5cacddc6950d26821eebf2e55",
      "parents": [
        "456882b5ae58e3e62a725663ccb2328d8b074526"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Mon May 01 10:05:28 2017 -0700"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Wed May 10 11:57:19 2017 -0700"
      },
      "message": "Reconnect to DAService after binding is dead\n\n- When the DO/PO process crashes twice with a short interval, AM gives up\nand the binding will be \"died\".  Once binding is in this state it\u0027ll never\nbe re-connected.\n\n(Still, DO/PO can disable and re-enable their DAS to force DPMS to bind again\nthough.)\n\n- Detect this and re-connect after one hour.\n\n- Back-off time will be exponentially increased and never reset until DPMS\nexplicitly re-connects, which happens when:\n-- the device rebooted,\n-- the user stopped and re-started, or\n-- the DAS is disabled and re-enabled.\n\nTest: adb shell am instrument -e class com.android.server.am.PersistentConnectionTest -w com.android.frameworks.servicestests\nTest: adb shell am instrument -e class com.android.server.devicepolicy.DevicePolicyConstantsTest -w com.android.frameworks.servicestests\nTest: adb shell am instrument -e class com.android.server.devicepolicy.DevicePolicyManagerTest -w com.android.frameworks.servicestests\nTest: cts-tradefed run cts-dev --skip-device-info --skip-preconditions --skip-system-status-check com.android.compatibility.common.tradefed.targetprep.NetworkConnectivityChecker -a armeabi-v7a -l VERBOSE -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.DeviceAdminServiceDeviceOwnerTest\nTest: cts-tradefed run cts-dev --skip-device-info --skip-preconditions --skip-system-status-check com.android.compatibility.common.tradefed.targetprep.NetworkConnectivityChecker -a armeabi-v7a -l VERBOSE -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.DeviceAdminServiceProfileOwnerTest\n\nBug 37711907\n\nChange-Id: Ie0b227a94e6ce85d72a969a4dea1020baf734e2f\n"
    },
    {
      "commit": "5bb8294f926dcaf4a7288ba4457d84d57bb4ab53",
      "tree": "f3e6b8ced29b8f93d7aa4dfe594454b46ee4ab0e",
      "parents": [
        "d95344d8aaf466ffaf62ffc3384019e99038ded9",
        "9c6458dd58106538e790bbc702dbc10798e1bd18"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Apr 29 19:49:31 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 29 19:49:35 2017 +0000"
      },
      "message": "Merge \"Add managed profile whitelist to control NotificationListenerServices\" into oc-dev"
    },
    {
      "commit": "2c20a0f8852f0d0d179614fbcb86be06833cd2aa",
      "tree": "5d710ddd95dada0ede7d328c5a73c184af820128",
      "parents": [
        "8ae5e04636cb094fe941de4f3ee0cb71dcbdb3c7",
        "17e1b5da53d508c3eccc9a6be276f0b6dacfc246"
      ],
      "author": {
        "name": "Andrew Scull",
        "email": "ascull@google.com",
        "time": "Fri Apr 28 17:41:48 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 28 17:42:00 2017 +0000"
      },
      "message": "Merge \"Expand abbreviation in constant identifier.\" into oc-dev"
    },
    {
      "commit": "17e1b5da53d508c3eccc9a6be276f0b6dacfc246",
      "tree": "7e6980d08778e0eaa205dbf577a41bd15003b5f3",
      "parents": [
        "0c21500920cac1e736f877e950e28eaa0b8b3f81"
      ],
      "author": {
        "name": "Andrew Scull",
        "email": "ascull@google.com",
        "time": "Tue Apr 25 14:44:24 2017 +0100"
      },
      "committer": {
        "name": "Andrew Scull",
        "email": "ascull@google.com",
        "time": "Fri Apr 28 11:49:50 2017 +0100"
      },
      "message": "Expand abbreviation in constant identifier.\n\nThe abbreviation is not in common use. Also remove FBE from\ndocumentation as it also isn\u0027t used elsewhere.\n\nTest: Build success\nBug: 37621349\nChange-Id: Icf19be5e96e71dcd45aa7cac8f58b05b6d77d02b\n"
    }
  ],
  "next": "4f4f6f83c20162814e95e9ca0654eee89a818bde"
}
