)]}'
{
  "log": [
    {
      "commit": "729bf1cf17579ac32230b73fa6515f46a5bdd68e",
      "tree": "8319606ce071eacef008b5a9f26962926fb015ac",
      "parents": [
        "dd4fd2e23e82167b1400cfec7879e49afbb9ff6a",
        "e497ad26c8ea3e74cee39248515958ad4abd7655"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 04 22:20:19 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 04 22:20:19 2019 +0000"
      },
      "message": "Merge \"Create a default package name for device level events.\""
    },
    {
      "commit": "9c6f72bae330d707a8c961b313ce87fb69834800",
      "tree": "1c3bb89bfbc7219955b11712da87142639f491fd",
      "parents": [
        "8ac0a656a8611653e49c5a3b0520d4f63f02be7a"
      ],
      "author": {
        "name": "Varun Shah",
        "email": "varunshah@google.com",
        "time": "Fri Jan 25 21:13:56 2019 -0800"
      },
      "committer": {
        "name": "Varun Shah",
        "email": "varunshah@google.com",
        "time": "Fri Jan 25 21:13:56 2019 -0800"
      },
      "message": "Removed AppUsageLimit#isGroupLimit API.\n\nBug: 123354775\nTest: atest FrameworksServicesTests:AppTimeLimitControllerTests\nChange-Id: I7082aaac0071be8d5bc444c6f8521576bf513cff\n"
    },
    {
      "commit": "e497ad26c8ea3e74cee39248515958ad4abd7655",
      "tree": "fa8b5e806fbed668fa355e651eaaf65a0115d987",
      "parents": [
        "658db85cd0dcc4bda3eb997464bd7b0066ef206f"
      ],
      "author": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Fri Jan 25 15:54:57 2019 -0800"
      },
      "committer": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Fri Jan 25 15:54:57 2019 -0800"
      },
      "message": "Create a default package name for device level events.\n\nDevice level event like DEVICE_SHUTDOWN does not have package name,\nbut some user code always expect a non-null packageName for every event.\nCreate a default packageName for these device level events.\n\nChange-Id: Iee49794bdc6f5cb7b30d50f7421ac0de2a33c858\nFix: b/123429960\nTest: NA.\n"
    },
    {
      "commit": "2546cef56cdf8767c4bb600251aed8c15dd6a7ae",
      "tree": "e7e029bf221c31709f9f24791a4565c527051dda",
      "parents": [
        "203445c85380a750a10cbbd2a57a0d87f382922e"
      ],
      "author": {
        "name": "Varun Shah",
        "email": "varunshah@google.com",
        "time": "Fri Jan 11 15:50:54 2019 -0800"
      },
      "committer": {
        "name": "Varun Shah",
        "email": "varunshah@google.com",
        "time": "Wed Jan 23 20:30:25 2019 -0800"
      },
      "message": "Added APIs for App Usage Limits.\n\nAdded a new AppUsageLimit group observer which follows the same pattern as\nother UsageGroups. This specific observer allows the launcher to query\nfor the AppUsageLimit, available via the new LauncherApps API below. The\nobserver can be registered and unregistered via the respective new APIs in\nUsageStats.\n\nLauncherApps has a new API which allows it to get the AppUsageLimit for\na specified package and user, initally set via the API in UsageStats.\nThis new API allows the launcher to query specifics about the limit such\nas how much usage time the limit has, and how much total usage time is\nremaining.\n\nBug: 117409586\nTest: atest FrameworksServicesTests:AppTimeLimitControllerTests\nTest: atest android.app.usage.cts.UsageStatsTest#testObserveUsagePermissionForRegisterObserver\nTest: atest android.app.usage.cts.UsageStatsTest#testObserveUsagePermissionForUnregisterObserver\nTest: manual (mmma frameworks/base/tests/UsageStatsTest/)\nChange-Id: Ifaffab629409e9191e40404a949c8df70bd3f7cb\n"
    },
    {
      "commit": "0b4ab1f1714ba236f03c15981efe7f3a803495cf",
      "tree": "b6610486fa3000d56ad17b4be36406ff0fa6a92b",
      "parents": [
        "9e10c879141b269ed8f03644e01a734ca5c31794"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Mon Jan 07 13:59:10 2019 -0800"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Tue Jan 22 22:19:21 2019 -0800"
      },
      "message": "Add Task Root package info to UsageEvent\n\nBug: 113094946\nTest: manual (use \"adb shell dumpsys usagestats apptimelimit\" to verify\napps at the root of tasks are considered active)\nTest: atest cts/tests/tests/app.usage/src/android/app/usage/cts/UsageStatsTest.java#testTaskRootEventField\nTest: atest cts/tests/tests/app.usage/src/android/app/usage/cts/UsageStatsTest.java#testUsageSourceAttribution\nTest: atest UsageStatsDatabaseTest\n\nChange-Id: I40f86743d33c13892de0e59ae02c9ebddb606ee7\n"
    },
    {
      "commit": "b1d243a51b003066bb64a791af2752435f0efe7c",
      "tree": "845fcc8f050e7122d9ae3d473b59358694cb0aa1",
      "parents": [
        "1960cd48596d0e47e7963e2d66071219b460d554"
      ],
      "author": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Thu Dec 13 12:02:00 2018 -0800"
      },
      "committer": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Wed Jan 16 11:13:58 2019 -0800"
      },
      "message": "UsageStats DEVICE_SHUTDOWN event.\n\nDEVICE_SHUTDOWN event is used to close all open usage events that do\nnot have matching closing event when device is shut down. For example,\nACTIVITY_RESUMED or FOREGROUND_SERVICE_START are open events, the\nDEVICE_SHUTDOWN event will close the usage session of the open events.\n\nAt orderly shutdown like selecting Power Off or Restart after pressing\npower button, a DEVICE_SHUTDOWN event is sent to UsageStats.\nUsageStats persists UsageStatsDatabase to disk immediately.\n\nWhen power button is pressed for 3.5 seconds (configured by\nconfig_veryLongPressTimeout in config.xml). A DEVICE_SHUTDOWN\nevent is sent to UsageStats. UsageStats persists UsageStatsDatabase\nto disk immediately.\n\nThis is the mechanism that we do not lose UsageStats data when the\ndevice is shut down.\n\nWhen the device boots up, if the last event is not\nDEVICE_SHUTDOWN, we add a DEVICE_SHUTDOWN with timestamp set to be the last\ntime database file is persisted. This is to handle the case device\nshutdown abruptly due to power drained or cold temperature.\n\nBug: 111464278\nTest: atest UsageStatsTest.java\nChange-Id: I1e88063ba71d09042d02c6deb9f07d8581a15c30\n"
    },
    {
      "commit": "266dd3bfd797b21cd405f26e36cc069dcb39a949",
      "tree": "922000806d20b6974451ad594efd8ddbe83be9c4",
      "parents": [
        "021705003288238bbc70ca7bf5711f6b1ae45924",
        "36778525bacc646742f42e74a83fe2f563e4d0ef"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Tue Jan 08 06:50:24 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 08 06:50:24 2019 +0000"
      },
      "message": "Merge \"Add Usage Reporting Api to UsageStatsManager\""
    },
    {
      "commit": "36778525bacc646742f42e74a83fe2f563e4d0ef",
      "tree": "1ccb3a130f725269e36f1ff7b65160bbbf951212",
      "parents": [
        "183bdcf1d3e764dcf19fb9da38b96bed7f7f52a4"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Mon Nov 12 11:06:19 2018 -0800"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Mon Jan 07 14:56:06 2019 -0800"
      },
      "message": "Add Usage Reporting Api to UsageStatsManager\n\nThe Usage Reporting Api allows apps to report usage within the app to\nplatform. Apps with the the OBSERVE_APP_USAGE permission may register\nobservers that use the reported in-app usage.\n\nTest: manual (using the included Usage Reporter App)\nTest: atest CtsUsageStatsTestCases:UsageReportingTest\nTest: atest FrameworksServicesTests:AppTimeLimitControllerTests\nBug: 112486938\n\nChange-Id: Iddd6f0993bbbf68a2032b34d473ef8d67da7747a\n"
    },
    {
      "commit": "63c0ad4dbb12895c1bb102e97147242c6b97a9da",
      "tree": "ff4ba75575ab371eb00a1989fddb4273230ebc17",
      "parents": [
        "89ebdecf75fdf4fdfa366c27479235098f39faea"
      ],
      "author": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Mon Dec 17 10:13:17 2018 -0800"
      },
      "committer": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Mon Dec 17 10:13:17 2018 -0800"
      },
      "message": "Reduce UsageStatsXmlV1 log messages.\n\nWhen parsing newly added fields from Xml database, must catch\nthe IOException because the new fields do not exist in old Xml database.\nThis is not really an error. Change Log.e to Log.i, do not print the\nfull stack.\n\nChange-Id: I5ba86790f7c8eadf4f5dd20d28f9348a23201f87\nFix: 121085733\nTest: atest UsageStatsDatabaseTest.java\n"
    },
    {
      "commit": "03d1240ef3b7ca1e1f24c823ad3e1ddb16a8a40b",
      "tree": "3f8b0c071937750b519f0f788df93d5fef174a25",
      "parents": [
        "52fe5dd97fb749aad4f570914a22aebf8d0de1c1"
      ],
      "author": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Thu Dec 06 18:00:37 2018 -0800"
      },
      "committer": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Wed Dec 12 10:07:14 2018 -0800"
      },
      "message": "UsageStats tracking of screen usage.\n\n1. Add UsageStats Event types:\nACTIVITY_RESUMED is synonym to existing MOVE_TO_FOREGROUND.\nACTIVITY_PAUSED is synonym to existing MOVE_TO_BACKGROUND.\nACTIVITY_STOPPED when an activity becomes invisible on the UI.\n2. In UsageStats.java, add API getLastTimeVisible() to report last time the\napp is visible (ACTIVITY_RESUMED or ACTIVITY_PAUSED), add API getTotalTimeVisible()\nto report total time the app is visible.\nThe existing API getLastTimeUsed() can report last time the app is in\nforeground (AKA have focus).\nThe existing API getTotalTimeInForeground() can report total time the\napp is in foreground (AKA have focus).\n3. UsageStats.getTotalTimeVisible() can report screen usage for\nsplit-screen mode and picture-in-picture mode.\n4. Because in the same package, activity can be instantiated multiple times,\nIn UsageEvents.Event class, add a member mInstaceId for activity\u0027s\ninstance ID, add interface getInstanceId() to retrieve the instance ID.\n\nBug: 112002260\nTest: frameworks/base/services/tests/servicestests/src/com/android/server/usage/UsageStatsDatabaseTest.java\natest frameworks/base/core/tests/coretests/src/android/app/usage/UsageStatsTest.java\n\nChange-Id: Ibcef2488e9620804c9f9220b027f976e8fa0c98b\n"
    },
    {
      "commit": "1ca78d6198c21899a245a634e1059138c03b5230",
      "tree": "6255e7d5a93766dd40e5a5f0b7f94729cf0f5039",
      "parents": [
        "dca59bf42029b86d1cf56b041a14d43221336553",
        "746b82aa9d31a531811ce4e4d2771d4c578409c9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 27 01:00:35 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 27 01:00:35 2018 +0000"
      },
      "message": "Merge \"Catch IOException when failed to parse new fields.\""
    },
    {
      "commit": "746b82aa9d31a531811ce4e4d2771d4c578409c9",
      "tree": "664b892b2cd08dd1aef232b2f413c552230c261d",
      "parents": [
        "9d7964b973aaa5179b9c29356d04bca07a2b719b"
      ],
      "author": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Wed Nov 21 09:45:00 2018 -0800"
      },
      "committer": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Mon Nov 26 22:40:43 2018 +0000"
      },
      "message": "Catch IOException when failed to parse new fields.\n\nWhen parsing from a XML file written by previous code, the new fields\nwill get an IOException, catch the IOException and let the new fields\nto have default value.\n\nChange-Id: I2b2a494bf17aaf1383a6cc469d9c2addd6cac9c3\nFix: 119822293\nTest: test com.google.android.gts.backup.UsageStatsRestoreHostSideTest#testUsageStatsRestore\n"
    },
    {
      "commit": "7e5bf5c54fcf3e3982fff7532a9b87afaa51e37f",
      "tree": "3451986550e60ddc50a4e237a6db74cf1147749b",
      "parents": [
        "d6764f85032d9dd3ed5e6a3a0097c39529fe5c80"
      ],
      "author": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Tue Nov 20 16:18:48 2018 -0800"
      },
      "committer": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Mon Nov 26 11:14:40 2018 -0800"
      },
      "message": "Do not update AppStandbyController on foreground service events\n\nChange-Id: I3ce067c9e7aae50aaf9784f1a63618c6cbaea2cc\nFix: 119781710\nTest: atest HostsideRestrictBackgroundNetworkTests#testAppIdleMetered_enabled\n"
    },
    {
      "commit": "917a71d4f9bc4f0f3f56062efd4ad11d015e11fa",
      "tree": "31516454a798a30e7a7255be86be66cde0314f66",
      "parents": [
        "b1c6ba026d1de0857a28f64980678d0eb49ee5f3"
      ],
      "author": {
        "name": "Esteban Talavera",
        "email": "etalavera@google.com",
        "time": "Tue Nov 13 07:55:08 2018 +0000"
      },
      "committer": {
        "name": "Esteban Talavera",
        "email": "etalavera@google.com",
        "time": "Thu Nov 15 10:46:08 2018 +0000"
      },
      "message": "Expand notification generates USER_INTERACTION event\n\nBug: 118376048\nTest: runtest systemui-notification\nChange-Id: Idbfac239783aa6371bdef4127125f30c27b74e3d\n"
    },
    {
      "commit": "81f977753ab7f948c0e05f6876cff0e630d86b41",
      "tree": "02a7905f6ded8d33ca721d44fda3c448c5403a99",
      "parents": [
        "3bd12f7d8a3d8b57962bffe06774ba37cb1b9b78",
        "e361a23bba60ae77fc5e09666c44f9159eb8a0d0"
      ],
      "author": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Tue Nov 13 18:16:19 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 13 18:16:19 2018 +0000"
      },
      "message": "Merge \"Add UsageStats events for foreground service start/stop.\""
    },
    {
      "commit": "a66a53194c6661a90cf8a4bd629b9adf825918c8",
      "tree": "cbc54f968af60b972bc930af0105510cc2ed8c5c",
      "parents": [
        "dc7073dd284a94f544d1d7d69fcc22458808821c",
        "ae9811d44f6bcc18f498e82c9fb468f146c5d358"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 13 03:29:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 13 03:29:21 2018 +0000"
      },
      "message": "Merge \"Add null checks to removing AppTimeLimit observers\""
    },
    {
      "commit": "e361a23bba60ae77fc5e09666c44f9159eb8a0d0",
      "tree": "566ab038052384728df63952af3a2190f80f451b",
      "parents": [
        "581cccdde99adfae7d05b51fa86acdb83d80b1bf"
      ],
      "author": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Thu Oct 04 15:05:21 2018 -0700"
      },
      "committer": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Mon Nov 12 17:41:03 2018 -0800"
      },
      "message": "Add UsageStats events for foreground service start/stop.\n\n1. Send FOREGROUND_SERVICE_START event when foreground service starts.\nSend FOREGROUND_SERVICE_STOP event when foreground service stops.\n2. One app can multiple foreground services and multiple services can be\nstarted. Because this, in UsageStats, change mLastForegroundEvent to\nclassName to event map, do this for both activity and foreground\nservice. Change UsageStatsProto and UsageStatsXmlV1 to support this\nchange.\n3. Add more test cases in UsageStatsTest.java.\n\nTest: start music player which is foreground service, observce these\ntwo events when start play and pause play.\n\nChange-Id: I3dc14f5b73cc114a53b8c51f90d3011d9ace35ac\nBug: 112002260\nTest: atest UsageStatsTest#testForegroundService\natest frameworks/base/services/tests/servicestests/src/com/android/server/usage/UsageStatsDatabaseTest.java\natest frameworks/base/core/tests/coretests/src/android/app/usage/UsageStatsTest.java\n"
    },
    {
      "commit": "ae9811d44f6bcc18f498e82c9fb468f146c5d358",
      "tree": "fd5ceaf0a80b1ec490a8cfef291b17251bfc6882",
      "parents": [
        "b95e7b7bc210b142b1d64cf16cf8634d768ac236"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Mon Nov 12 14:45:25 2018 -0800"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Mon Nov 12 16:55:34 2018 -0800"
      },
      "message": "Add null checks to removing AppTimeLimit observers\n\nAlso some minor touch up\n\nTest: atest FrameworksServicesTests:AppTimeLimitControllerTests\nChange-Id: Ibcecb483bc28ba6b1dcd0158e946137abb0e54e4\nFixes: 119371427\n"
    },
    {
      "commit": "1e8947c5da9d71cfff741a538b74c614d33caf61",
      "tree": "8fdf0c7a92bc2b6c34e794e6959d8a1e74edf1ab",
      "parents": [
        "7d54535d6259b631a97599cc97f90b61c3fc2774"
      ],
      "author": {
        "name": "Kweku Adams",
        "email": "kwekua@google.com",
        "time": "Mon Nov 05 18:06:13 2018 -0800"
      },
      "committer": {
        "name": "Kweku Adams",
        "email": "kwekua@google.com",
        "time": "Thu Nov 08 13:58:50 2018 -0800"
      },
      "message": "Informing app idle listeners on enabled state changes.\n\nCurrently, if AppStandbyController is enabled after some listeners have\nalready registered, the listeners will be told that the system is in a\nstate of parole even though AppStandbyController thinks it\u0027s not in\nparole. This change informs AppIdleStateChangeListeners when\nAppStandbyController\u0027s enabled state changes as well so that they can be\nin the correct state.\n\nI also removed the call to setAppIdleEnabled() in onBootPhase() since\nupdateSettings() is called right afterwards and that also calls\nsetAppIdleEnabled().\n\nBug: 112329453\nTest: atest AppStandbyControllerTests\nalso check logs to confirm that NetworkPolicyManagerService and\nJobSchedulerService\u0027s listeners switch from ON to OFF when the system is\nready.\n\nChange-Id: I88bc293c70b459f54f75f92126ad306d6ab8d9b7\n"
    },
    {
      "commit": "5287e1fe489525e95295be4c6444762225b99d07",
      "tree": "ad36b7c0d8b17054afeb4a517eb3b06adaa60f18",
      "parents": [
        "b3431dfbbbea0fb01da5337eb2f8daee6d0ccc68",
        "d9231a098420ff86adfa0ed868e299cc3c4739c1"
      ],
      "author": {
        "name": "Risan",
        "email": "risan@google.com",
        "time": "Wed Oct 31 14:08:54 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 31 14:08:54 2018 -0700"
      },
      "message": "Merge \"isReservedSupported\u003dtrue when running as container\" am: e0076e4145 am: a228f69e07\nam: d9231a0984\n\nChange-Id: Id2f4862faa57099d6b15f06567bdb53fd2f33b03\n"
    },
    {
      "commit": "12adf3a985ad5ed24e6ab467f55d33d2ec15c783",
      "tree": "1fcdf8e14b823f836049ac334335451f409acde1",
      "parents": [
        "e42fbe4606eaec8f753e4853ea1130734b8da21b"
      ],
      "author": {
        "name": "Risan",
        "email": "risan@google.com",
        "time": "Mon Oct 29 20:43:43 2018 -0600"
      },
      "committer": {
        "name": "Risan",
        "email": "risan@google.com",
        "time": "Mon Oct 29 20:43:43 2018 -0600"
      },
      "message": "isReservedSupported\u003dtrue when running as container\n\nTest: Remove first_sdk_check from StorageHostTest#testVerify, log\nBuild.IS_CONTAINER inside isReservedSupported function, run on sailfish.\nIt shows that Build.IS_CONTAINER\u003dfalse and the test still passes (i.e.,\nisReservedSupported is correctly true).\nAlso checked that Build.IS_CONTAINER in isReservedSupported is true in\nARC++.\nBug: 111287848\n\nChange-Id: I9af1f6cce5bab75ef941989bf279cf40c52e62b0\n"
    },
    {
      "commit": "0f47284af35376cf1b1f1e009a930d99be154db7",
      "tree": "126ac0deb6d8ba097908df3ca73af34b70843bb3",
      "parents": [
        "148eba158ca7a7473b46d97793db76315ae76329"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Tue Oct 23 23:02:48 2018 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Mon Oct 29 16:21:24 2018 -0700"
      },
      "message": "Refactor AppTimeLimitController for Session Observers\n\nIntroducing the concept of Usage Session Observers to UsageStats. A\nsession observer monitors usage within individual \"continuous\" sessions\n(brief gaps of non usage may be allowed in a session and still be\nconsidered continuous)\n\nThe new session observer in AppTimeLimitController are both similar and\ndifferent enough from the current app usage observer to warrant\nrefactoring TimeLimitGroup into an OOP friendly abstract base class.\n\nAdded some Observer App handling to avoid clash between registered\nobservers from multiple apps.\n\nReworded packages to observed and usage entities to accomodate future\nchanges, where usage may come from more than just app usage.\n\nReworded moveToForeground/Background to generic usage and allow multiple\nusage entities to be active at the same time to accomodate future\nchanges, where more than just the foreground app can be considered used.\n\nTest: atest FrameworksServicesTests:AppTimeLimitControllerTests\nBug: 111465038\nChange-Id: I63aebf8b0aa5516111bd6d5e142525d0bee6ef58\n"
    },
    {
      "commit": "0e1ce140a2c79cbc5dea462ccd2fecd1bae113e6",
      "tree": "82b1bf20f69854be54fe71261bbaac59926b1e55",
      "parents": [
        "f6f95875b6c46581a3dcacde854de606275908de",
        "596c33086a160025d9812acdd7dea4d14a988977"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Wed Oct 24 02:17:00 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 24 02:17:00 2018 +0000"
      },
      "message": "Merge changes from topic \"UsageStatsDatabaseUpgradeAttempt2\"\n\n* changes:\n  Add ProtoInputStream and UsageStatsProto to art profiles\n  Upgrade UsageStatsDatabase to version 4 (attempt 2)\n  Move UsageStatsDatabase upgrade backup to seperate folder\n"
    },
    {
      "commit": "7609b7535f80da5665e4ee3a7ad2acf294372a5a",
      "tree": "c743eb140b14819c627211dbe649648fd34a4c81",
      "parents": [
        "dfe87a6d16cdb73480c1775e1abbdf9f72054774"
      ],
      "author": {
        "name": "Varun Shah",
        "email": "varunshah@google.com",
        "time": "Mon Oct 15 15:07:47 2018 -0700"
      },
      "committer": {
        "name": "Varun Shah",
        "email": "varunshah@google.com",
        "time": "Fri Oct 19 16:48:55 2018 -0700"
      },
      "message": "Prevents uninstalled packages from being added to the DB.\n\nApps trying to set the standby bucket for a package that was uninstalled\nwill now be blocked to prevent uninstalled package entries from\nappearing in the App Standby DB.\n\nBug: 116190365\nTest: atest com.android.server.usage.AppIdleHistoryTests\nTest: atest com.android.server.usage.AppStandbyControllerTests\nTest: atest cts/tests/tests/app.usage/src/android/app/usage/cts/UsageStatsTest.java\nTest: atest vendor/xts/gts-tests/tests/usagestats/src/com/google/android/usagestats/gts/UsageStatsTests.java\nChange-Id: If421c46f3459eced78ae260e88749022ed5cf7a2\n"
    },
    {
      "commit": "d083f6b875346037a86dc0457bc5780427c49973",
      "tree": "1bf0c46ba5eca5969f7e71bf749b95af56d23782",
      "parents": [
        "dc4663238280422012afe5e0da16c5931e1c58c2"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Thu Oct 11 17:45:00 2018 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Fri Oct 12 14:09:31 2018 -0700"
      },
      "message": "Upgrade UsageStatsDatabase to version 4 (attempt 2)\n\nIf version 4 causes any regression, this CL should be reverted.\nThe other UsageStatsDatabase changes are not safe to revert.\n\nBug: 111422946\nTest: atest UsageStatsDatabase\nChange-Id: I8af08a25c596397ec319d457bfa5c51b73beb4df\n"
    },
    {
      "commit": "dc4663238280422012afe5e0da16c5931e1c58c2",
      "tree": "ee7f8b23fa0bde4618fc6c139f7b08192cca0846",
      "parents": [
        "908d785aaaef94f2d310d60887bb7d87f59758b2"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Wed Oct 10 23:51:51 2018 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Fri Oct 12 14:09:31 2018 -0700"
      },
      "message": "Move UsageStatsDatabase upgrade backup to seperate folder\n\nDuring a UsageStatsDatabase version upgrade, move backup files to a\nseperate folder to reduce the chance of accidentally picking up the\nbackup file.\n\nChange-Id: I0052cb25388703c328cd7160f523d8542cf424d7\nFixes: 117224541\nTest: atest UsageStatsDatabaseTest\n"
    },
    {
      "commit": "3efa16d29f62477e2656b922f05b9ccf3dc74954",
      "tree": "f3f3a3dfa8b378553193a7da73a4f8df98ce87ce",
      "parents": [
        "c90bc15dc87ac1709def3424bd5306678f0844ac"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Wed Oct 03 08:58:18 2018 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Wed Oct 03 18:52:36 2018 +0000"
      },
      "message": "Revert UsageStatsDatabase to version 3\n\nChange-Id: I650caeaed954ff2d0921b88a000c8f2be37df078\nFixes: 117177943\nBug: 117224541\nTest: run google/template/local --template:map test\ngoogle/continuous/boot-successive  --no-first-boot --successive-boot\n--boot-count 2 --granular-boot-info  -f\nSystemServerTiming_StartUsageService    (See go/run-boottest)\n"
    },
    {
      "commit": "c90bc15dc87ac1709def3424bd5306678f0844ac",
      "tree": "f2077949ccc2d3b7df0b4fda96445e41f65a8838",
      "parents": [
        "c8c26365a4bc237cccb462ef903c837f73833c23"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Mon Sep 10 15:17:57 2018 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Fri Sep 28 16:48:35 2018 -0700"
      },
      "message": "Pool Package and Class names when writing UsageStats to disk\n\nWrite the package and class names at the top of the proto file and\nreplace each instance of those strings in the rest of the protobuf with\nthe index of said string.\n\nSome rough number on the impact of this change plus the previous proto\nchange:\nFile size on disk reduces to ~13% of XML file size!!!\nFile read time reduces to ~32-45% of XML read time!\nFile write time clock at around ~102-107% of XML write time.\n\nBug: 111422946\nFixes: 111449191\nTest: atest UsageStatsDatabaseTest\nChange-Id: I6bcce54a2431a964bda2c03bd3be1f3d4b4156e1\n"
    },
    {
      "commit": "c8c26365a4bc237cccb462ef903c837f73833c23",
      "tree": "37cd90fe4168c24ea3480b058f079bd52769f36b",
      "parents": [
        "c210031d085b510450c49bf2da0ac7bd9024c4be"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Fri Sep 07 14:59:25 2018 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Fri Sep 28 16:48:23 2018 -0700"
      },
      "message": "Upgrade UsageStatsDatabase from XML to Protobuf\n\nAdd the relevant methods to read from ProtoInputStream to\nvarious classes.\n\nAlso add some framework to handle version changes in\nUsageStatsDatabase. There is some risk of users losing all their current\nUsageStats data, if something goes horribly wrong. The debug flag and a\nkeep backup files flag are temporarily set in UsageStatsDatabase with\nthis change. They will both be unset in the future before the Q release.\n\nSome rough number on the impact of this change:\nProto file size on disk reduces to ~47% of XML file size :)\nProto file read time reduces to ~55% of XML file read :)\nProto file write time increases ~17% over the XML file write :(\n\nThere will be a follow up CL to address the file write time regression\n\nBug: 111422946\nFixes: 111449927\nTest: atest UsageStatsDatabaseTest\nChange-Id: I084aea796ed2163c42947d52396a36cc7c5562a2\n"
    },
    {
      "commit": "8ce7ed95a0f1eca6a425a7795f0709652f43355a",
      "tree": "3a95bdc4827c89ffc01091656a045223bb32dc50",
      "parents": [
        "22f9af73dbb11c4012b60cae4a1855155c98df21"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 05 16:53:00 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 05 17:02:08 2018 -0700"
      },
      "message": "Frameworks: Annotate trivial @GuardedBy in services\n\nAdd @GuardedBy for simple functions that require locks and have a name in\none of the frameworks naming styles for locks (\"^.*(Locked|LPw|LPr|L[a-zA-Z]|UL|AL|NL)$\").\n\nDerived by errorprone.\n\nBug: 73000847\nTest: m\nChange-Id: If70bb03313388af34d547efca20fb5115de95bf1\n"
    },
    {
      "commit": "ddcac2c78d93118c0fb05889cf5b9b25ff077f40",
      "tree": "e02dae2c173801b1abc1c0dd4685a07325a0df64",
      "parents": [
        "3c3beb6e3c8afabaf7afad4084e5dda7b309d2ee",
        "2795cca1cfa9f3004eb63525c135289d19e63f4e"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Fri Aug 31 17:22:07 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 31 17:22:07 2018 -0700"
      },
      "message": "Set AppStandbyController charging state on init\nam: 2795cca1cf\n\nChange-Id: I67b2d6bd5a6f1a5bbc5f8c6e70d6d6516d67a791\n"
    },
    {
      "commit": "8b7725b77aa5bb3fb186bbddf57da503020a7d7e",
      "tree": "c9a254ba349e9fdd77b5e557dd4b961da6e552c3",
      "parents": [
        "2ff717464900fdbb3d6eb4b68e670a0b430b58f7"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Aug 27 13:44:31 2018 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Aug 29 21:20:00 2018 +0000"
      },
      "message": "Show the diff instead of current time for last parole time.\n\nSo the time shown will be how long ago the last parole happened.\nThis is easier to read than when the last parole happened, in\ntime since epoch.\n\n... mChargingStable\u003dfalse mLastAppIdleParoledTime\u003d+15s666ms\n\n\nBug: 112880101\nTest: adb shell dumpsys usagestats\nChange-Id: Ieddf752e811a95a95e63d621e9cd9f26957b51a8\n"
    },
    {
      "commit": "2795cca1cfa9f3004eb63525c135289d19e63f4e",
      "tree": "e3ba58b7d357d40b996e310192bc6d010ba0a8c8",
      "parents": [
        "421449a4a66d39ece6436b2413746c91139a6d57"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Thu May 31 15:16:00 2018 -0700"
      },
      "committer": {
        "name": "Po-Chien Hsueh",
        "email": "pchsueh@google.com",
        "time": "Wed Aug 29 15:00:30 2018 +0800"
      },
      "message": "Set AppStandbyController charging state on init\n\nTest: manual (restart device and \"adb shell dumpsys usagestats | grep\nmCharging\u003d\")\nTest: CtsHostsideNetworkTests\nFixes:80545083\n\nChange-Id: I0592622b83525159eeca611b3cc1021347bc53ca\nMerged-In: I0592622b83525159eeca611b3cc1021347bc53ca\n(cherry-picked from 13b1e1774cfc6a568f57b9500f16dd2b26da3cd3)\n(cherry picked from commit 4d5b4b03c8065fc6421456a6135f6d247d2d1dd5)\n"
    },
    {
      "commit": "5518cf584b7759ddd0b326a9b9213d28d7d8c041",
      "tree": "f80d54e786c508813d9d469295430fa1327527fa",
      "parents": [
        "be3a75cb550f9a009cbcd40242923e2659a6ac70"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 24 17:37:59 2018 -0600"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 24 17:38:02 2018 -0600"
      },
      "message": "No permissions needed for static disk attributes.\n\nDetecting if a storage device has quota or resgid support isn\u0027t\nsensitive, so we\u0027re okay letting anyone ask about it.\n\nBug: 112175169\nTest: atest android.appsecurity.cts.StorageHostTest#testFullDisk\nChange-Id: I1e45eeade0d0d8ea242afca274b45a68972e6b57\n"
    },
    {
      "commit": "06ea043275c61d4121ad6264e8ec895ce9586694",
      "tree": "6d745842441696b52042fec52c714f3a75f498c1",
      "parents": [
        "d91a2df672deba5baae8540f89fcc1de2bdc0838",
        "5b79bfa7631c9cc66db5762db7e4d2c085f9a64d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 08 23:50:42 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 23:50:42 2018 +0000"
      },
      "message": "Merge \"Add missing app standby parameters to controller dump\""
    },
    {
      "commit": "8c8a9a1e3395777efe397ef7d05dfd90fac61727",
      "tree": "1d7e3950c04ce8769d416bb8c83958aff80af88e",
      "parents": [
        "d447b5cfc6f9e95ea7238c292033ce19719a208f",
        "bc9abc6589d26984690434feaa622b566c4ecbe1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 20 05:50:28 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 05:50:28 2018 +0000"
      },
      "message": "Merge \"Add null check for LastEvent in UserUsageStatsService\""
    },
    {
      "commit": "bc9abc6589d26984690434feaa622b566c4ecbe1",
      "tree": "5f0897d07a23dc8fef3b49a3a65a54ef66e93ce6",
      "parents": [
        "e4c818f44045ceb57b090de46a750f2459bc0a53"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Thu Jul 19 12:02:19 2018 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Thu Jul 19 12:02:19 2018 -0700"
      },
      "message": "Add null check for LastEvent in UserUsageStatsService\n\nChange-Id: Ie57233ccb23f1399234b1dbb6ae490de9595e71f\nFixes: 111630625\nTest: manual\n"
    },
    {
      "commit": "766d24e06c87b7c7e204c356fe29e7109f6d1cfd",
      "tree": "19cbe44cd0ef72c1364ee5096b63681b0ea46924",
      "parents": [
        "93dd49f93876cf9064823cd936a67b76cec2c301",
        "e4c818f44045ceb57b090de46a750f2459bc0a53"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 17 02:45:52 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 17 02:45:52 2018 +0000"
      },
      "message": "Merge \"Log Wtf when UsageStats missing over a day of events\""
    },
    {
      "commit": "e4c818f44045ceb57b090de46a750f2459bc0a53",
      "tree": "6fb8eda80e6f9df0729e1bcac5972802430339d7",
      "parents": [
        "f52474bc41e2f58b8b8b8bfabe3c66b9197ff148"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Tue Jul 03 19:25:32 2018 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Mon Jul 16 16:26:32 2018 -0700"
      },
      "message": "Log Wtf when UsageStats missing over a day of events\n\nBug: 110930764\nTest: manual (hardcode future time in printLast24HrEvents)\nChange-Id: Ia254f7512bfa549966dda3674140772504dbbffd\n"
    },
    {
      "commit": "a4dd6efdc176e28754eef1dd1118b6ba6e304628",
      "tree": "e8581227e1120d9ecc8b9f2c0cccca8426cfe775",
      "parents": [
        "e72ec1761f576d953c7d362d891f44f4b5432a71",
        "9d629c85fdb703d8afee52ff56255e9172b1eff3"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Jul 16 14:00:20 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 16 14:00:20 2018 -0700"
      },
      "message": "Merge \"Fix crash on calling getAppStandbyBucket()\" into pi-dev am: 632c036d8c\nam: 9d629c85fd\n\nChange-Id: I9760ced42479a795c03ecefd24ed6b7597294421\n"
    },
    {
      "commit": "99e1424e0aa9e7dc4a5ccbff011d7161201921d1",
      "tree": "dd4d2321b9047847151970961210a3c2116ad2cd",
      "parents": [
        "c4cf07a16f27ed795cfea6b0f2e650b63f2b5552"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Jul 11 10:44:17 2018 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Jul 11 10:44:17 2018 -0700"
      },
      "message": "Fix crash on calling getAppStandbyBucket()\n\nMATCH_ANY_USER, which was locked down recently, is not\nreally needed in this context, so removed it.\n\nBug: 111145886\nTest: cts CtsAppUsageHostTestCases\nChange-Id: I1bb9df0c7370015365bea414599b2b83084a1846\n"
    },
    {
      "commit": "3ab7781d1f38e335f8cf36cc4b8cc8006734e2aa",
      "tree": "0c0f5ea3048636efe419790368dfe76c4f7b60d1",
      "parents": [
        "8077622e413f947bc53f570c4847517e5e09b1ac"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Mon Jul 09 14:29:33 2018 -0700"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Tue Jul 10 14:11:34 2018 -0700"
      },
      "message": "Clean up sync manager and fix the lock screen blocked sync issue.\n\n- Fix the issue where when a sync starts when the user is locked, the sync\nis enqueued and waits for the 10 minute timeout, which drains the battery.\n\nNow, in this case, we finished the job right away, and if it\u0027s a non-periodic\nsync, we ask the job scheduler to reschedule.\n\n- Clean up all the mess and unnecessary code.\n\nFixes: 79433653\nTest: manual: Add an account, remove it, make sure all the sync operations are\ngone from dumpsys content.\nTest: manual: Use the requestsync command while the user is locked and\nmake sure the sync won\u0027t stuck.\n\nChange-Id: I8cfd6a80715336ebea3793b2ed10b59d90cd8e52\n"
    },
    {
      "commit": "5b79bfa7631c9cc66db5762db7e4d2c085f9a64d",
      "tree": "00896951cc1c35978a494cd543b6acc7b627b25b",
      "parents": [
        "8a962e56f3633acfff7c8e5a952852b01e60fe2a"
      ],
      "author": {
        "name": "Esteban Talavera",
        "email": "etalavera@google.com",
        "time": "Thu Jul 05 15:15:22 2018 +0100"
      },
      "committer": {
        "name": "Esteban Talavera",
        "email": "etalavera@google.com",
        "time": "Thu Jul 05 15:15:44 2018 +0100"
      },
      "message": "Add missing app standby parameters to controller dump\n\nTest: adb shell dumpsys usagestats\n\nChange-Id: Iacbbbab8608ebd871ab9fcf56b20be51dc847d52\n"
    },
    {
      "commit": "565aa509524c0d3d078f03088ce19aff2c7bee62",
      "tree": "b5de6af75d20a19a226191045d01f2314f2cae56",
      "parents": [
        "a6b1d730932709aca0f27c2265614d448ac5f57b",
        "e717e0cb4eb2465c62d31cfd46275484c5a3ad07"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 03 21:15:15 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 03 21:15:15 2018 +0000"
      },
      "message": "Merge \"Initial UsageStatsDatabase Perf tests\""
    },
    {
      "commit": "f7cc6b28c186707e4b4f3165e23ad28729d08367",
      "tree": "70b5b561d28647b2436957f746551ed6b3b406e0",
      "parents": [
        "038f1a19ac84dd04097a573df3cc56d8d64a9ed3"
      ],
      "author": {
        "name": "Beverly",
        "email": "beverlyt@google.com",
        "time": "Thu Jun 28 15:38:45 2018 -0400"
      },
      "committer": {
        "name": "Beverly Tai",
        "email": "beverlyt@google.com",
        "time": "Thu Jun 28 19:41:11 2018 +0000"
      },
      "message": "Ignore user portion when checking for system uid\n\nIn UsageStatsService, the calling uid is considered\nfrom the system regardeless of the curret user id\n\nChange-Id: I5c33db37c585ac918a09ad9014bb819b1e24d7f8\nFixes: 110527624\nTest: manual\n"
    },
    {
      "commit": "e717e0cb4eb2465c62d31cfd46275484c5a3ad07",
      "tree": "b46f775bde78cc59fb3a28ea6189121b9caec2b7",
      "parents": [
        "f52474bc41e2f58b8b8b8bfabe3c66b9197ff148"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Tue Jun 19 14:44:35 2018 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Thu Jun 21 15:59:49 2018 -0700"
      },
      "message": "Initial UsageStatsDatabase Perf tests\n\nA suite of simple performance test for UsageStatsDatabase. They measure\nthe time it take to write and read UsageEvents to and from a file.\n\nBug: 110428559\nTest: atest UsageStatsPerfTests\nChange-Id: If1558515e1da9e22fb56bc13f8e89c10c51a1625\n"
    },
    {
      "commit": "5dc1edfe1698e5d859c9b9680e503324a44c4225",
      "tree": "dfbae66d7cc8a731690aac23f1c63b52b5003714",
      "parents": [
        "218871ee3ffffea964658be327ffd06e1e3eed61"
      ],
      "author": {
        "name": "Julia Reynolds",
        "email": "juliacr@google.com",
        "time": "Tue Jun 12 10:19:02 2018 -0400"
      },
      "committer": {
        "name": "Julia Reynolds",
        "email": "juliacr@google.com",
        "time": "Thu Jun 14 11:16:30 2018 -0400"
      },
      "message": "Fix notification interruption stats\n\n- Write channelid to xml\n- Fix issue querying packages by user\n\nTest: manual\nBug: 79607096\nChange-Id: I77b1a532d364fcf97a4dba9d83ce97b93650a88c\n"
    },
    {
      "commit": "0ebb10d59662ddd726b65b12e0ecb195107a36be",
      "tree": "403152612429745d93df9d17ef4a3ce5517a80e6",
      "parents": [
        "143acd359c900f502dd73788af7ec859c2e69b46",
        "13b1e1774cfc6a568f57b9500f16dd2b26da3cd3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 08 02:27:26 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 08 02:27:26 2018 +0000"
      },
      "message": "Merge \"Set AppStandbyController charging state on init\""
    },
    {
      "commit": "13b1e1774cfc6a568f57b9500f16dd2b26da3cd3",
      "tree": "f3342120261abf1a9789be9314aad68c38b1ae88",
      "parents": [
        "e42868974bda97f00dfd63559074bb02c1fc6531"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Thu May 31 15:16:00 2018 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Thu Jun 07 18:33:22 2018 +0000"
      },
      "message": "Set AppStandbyController charging state on init\n\nTest: manual (restart device and \"adb shell dumpsys usagestats | grep\nmCharging\u003d\")\nTest: CtsHostsideNetworkTests\nFixes:80545083\n\nChange-Id: I0592622b83525159eeca611b3cc1021347bc53ca\n"
    },
    {
      "commit": "82d3041f30818c605cca2a41861a77d58aafae3c",
      "tree": "857b67265b3cee53f1d1296b0f5289c93646a3e3",
      "parents": [
        "b4e4fc3a1e2cc43207a73629790757b3157687a7"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Jun 06 10:48:03 2018 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Jun 06 19:51:24 2018 +0000"
      },
      "message": "DO NOT MERGE Fix security exception due to incorrect flags\n\nCaught by test UsageStatsTest due to stricter checks for\nMATCH_ANY_USER.\n\nChange-Id: Ie884c7007a8588a222773fba8d7967bcdf2a528a\nFixes: 109700742\nTest: atest CtsUsageStatsTestCases:UsageStatsTest\n"
    },
    {
      "commit": "1b61d018ec348fab7d0d470ac1dbe9019f2ad6c9",
      "tree": "9644d921ea8d05c2b8b771bc9801096aa29c43a5",
      "parents": [
        "f90662feb2808bf0171ab09442faaf7e1f5ae1e8"
      ],
      "author": {
        "name": "Julia Reynolds",
        "email": "juliacr@google.com",
        "time": "Mon May 21 14:11:43 2018 -0400"
      },
      "committer": {
        "name": "Julia Reynolds",
        "email": "juliacr@google.com",
        "time": "Wed Jun 06 14:26:49 2018 -0400"
      },
      "message": "Allow cross user usage event queries\n\nFor multipackage requests, caller must be system uid or hold\ninteract_across_users if not requesting fate for the same user.\n\nFor single package requests, caller must be system uid or the\nsame package and hold interact_across_users if not requesting data\nfor the current user.\n\nIn both cases the caller must have the usagestats permission.\n\nTest: couldn\u0027t find automated tests for this file; manual\nBug: 79142791\nChange-Id: I8d650f8e875e0e4578cb48c9ba42e821342852a0\n"
    },
    {
      "commit": "da4db580210716499cbe5c87fa4a89011eaccc6d",
      "tree": "897b4f8d43703427d4b358ff476e071d782cbb9d",
      "parents": [
        "17b5748a03ad291b902a00cb55028a160324db2b",
        "d8cf91c5f8b8cf6358934363a8133df50d183fb0"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Thu May 24 22:14:27 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 24 22:14:27 2018 -0700"
      },
      "message": "Merge \"Tweak exemption for sync requests made by FG apps\" into pi-dev am: 621fd20f55\nam: d8cf91c5f8\n\nChange-Id: Icac177c8d404ce20d5e894d85df2b72a001d6d9a\n"
    },
    {
      "commit": "621fd20f5591a3d5846e7bbdb8d5624e2b8b8dab",
      "tree": "0391a270d7a6fbea7f735fab1dc28b1f9fba432c",
      "parents": [
        "0726f5c82a180001e7ad99e335740ba1473bb22e",
        "d5f25d2cd882c89965b6538082556d9469f72288"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Thu May 24 23:22:09 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 24 23:22:09 2018 +0000"
      },
      "message": "Merge \"Tweak exemption for sync requests made by FG apps\" into pi-dev"
    },
    {
      "commit": "d5f25d2cd882c89965b6538082556d9469f72288",
      "tree": "35933c6e4705b547df7e96cff84f38139d7d475f",
      "parents": [
        "fab8e71697c3ab47ad3e53864b22542a9a34fa2f"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Tue May 22 16:02:17 2018 -0700"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Wed May 23 14:50:05 2018 -0700"
      },
      "message": "Tweak exemption for sync requests made by FG apps\n\nExemption given to a sync request made by a foreground app (including\nPROCESS_STATE_IMPORTANT_FOREGROUND).\nAt the schedule time, we promote the sync adapter app for a higher bucket:\n- If the device is not dozing (so the sync will start right away)\n  promote to ACTIVE for 1 hour.\n- If the device is dozing (so the sync *won\u0027t* start right away),\npromote to WORKING_SET for 4 hours, so it\u0027ll get a higher chance to be started once the\ndevice comes out of doze.\n- When the sync actually starts, we promote the sync adapter app to ACTIVE for 10 minutes,\nso it can schedule and start more syncs without getting throttled, even when the first\noperation was canceled and now we\u0027re retrying.\n\nTest: atest cts/tests/tests/syncmanager/\nTest: Manual test with \"requestsync -f\" and \"am set-standby-bucket\", while checking\n\"dumpsys usagestats\"\nTest: settings put global app_idle_constants \\\n  exempted_sync_scheduled_nd_duration\u003d1,exempted_sync_scheduled_d_duration\u003d2,exempted_sync_start_duration\u003d3\n  and check \"dumpsys usagestats\" and make sure the constants are properly updated.\nFixes: 72443754\n\nChange-Id: I233d8e4be85769150830bac798abc04810f4cc7b\n"
    },
    {
      "commit": "452936192fa1a249fda1ea8a9e757c4edc9d2bac",
      "tree": "7e6f9c45b0a158bfb18f641bdfb72616332776ee",
      "parents": [
        "9f402f41e2fd39da51b6f7c6c1d85dd62a289fc4",
        "20e682910de540ddfcb7d566eb4856d263e9817e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 23 21:49:56 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 23 21:49:56 2018 +0000"
      },
      "message": "Merge \"DO NOT MERGE Allow cross user usage event queries\" into pi-dev"
    },
    {
      "commit": "a0058b47e3e3ba816abd50ad279175b5aa1e9841",
      "tree": "ec12eedc397a4c0a771c6b30997b959ec97af13e",
      "parents": [
        "ab38e73af6cdc8070a02cacb30a5d628bf1b4806"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Tue May 22 16:32:23 2018 -0700"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Wed May 23 08:14:50 2018 -0700"
      },
      "message": "Make \"am set-standby-bucket\" reset active/working left time\n\nThis is needed for manual testing the fix for b/72443754.\n\nTest: atest cts/tests/tests/app.usage/src/android/app/usage/cts/UsageStatsTest.java\nTest: atest cts/tests/tests/batterysaving\nBug: 72443754\nChange-Id: I13ac03917c0a5a08859c44930406e7a82ebf1a07\n"
    },
    {
      "commit": "20e682910de540ddfcb7d566eb4856d263e9817e",
      "tree": "12c4f056c4919c52bbbde2237237c7a7f655da96",
      "parents": [
        "6433ac13bd3520781d7c5a5ba698f59acf8083c4"
      ],
      "author": {
        "name": "Julia Reynolds",
        "email": "juliacr@google.com",
        "time": "Mon May 21 14:11:43 2018 -0400"
      },
      "committer": {
        "name": "Julia Reynolds",
        "email": "juliacr@google.com",
        "time": "Wed May 23 09:51:13 2018 -0400"
      },
      "message": "DO NOT MERGE Allow cross user usage event queries\n\nFor multipackage requests, caller must be system uid or hold\ninteract_across_users if not requesting fate for the same user.\n\nFor single package requests, caller must be system uid or the\nsame package and hold interact_across_users if not requesting data\nfor the current user.\n\nIn both cases the caller must have the usagestats permission.\n\nTest: couldn\u0027t find automated tests for this file; manual\nBug: 79142791\nChange-Id: I8d650f8e875e0e4578cb48c9ba42e821342852a0\n"
    },
    {
      "commit": "d8611ecd360cce2b16372c6c0b29540b98929e43",
      "tree": "70ff63e3bf90c5ea9396185ef64696566dbedd4c",
      "parents": [
        "b504a2f65b70b9baa319cd97693c9c94a602890c"
      ],
      "author": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Wed May 16 16:39:42 2018 -0700"
      },
      "committer": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Wed May 16 16:53:58 2018 -0700"
      },
      "message": "Added a command to return app_standby_enabled\n\nThe only way to know the runtime state was check dumpsys usagestats, and\nparse through a lot of output.\nThis makes it easier to retreive the state.\n\nTest: adb shell settings put global app_standby_enabled 0\nadb shell dumpsys usagestats is-app-standby-enabled\n\nBug: 74336662\nChange-Id: Ibe80d27bdf940682b9e4c3c14f93b4871f9f1746\n"
    },
    {
      "commit": "98fd4fa0f40a5e06641d0f7b73d2102766f7319e",
      "tree": "42195304cc0d85084de6d2b55f6e72b75b434df7",
      "parents": [
        "1c60953f9da5714b3ebabf0b6546e8fbf06b1597",
        "c870309921dab30893f26409625058f0eddf5a18"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri May 11 19:03:11 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 11 19:03:11 2018 +0000"
      },
      "message": "Merge \"Add limits to App Usage Observer Api\" into pi-dev"
    },
    {
      "commit": "c870309921dab30893f26409625058f0eddf5a18",
      "tree": "43ffed0b4eaef0890bfac26f4211ff10c0feac2e",
      "parents": [
        "e93daa46591ceb2ad9a8cb80eee230e80be19d27"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Tue May 01 16:02:45 2018 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Fri May 04 14:43:04 2018 -0700"
      },
      "message": "Add limits to App Usage Observer Api\n\nAdded a minimum time limit for App Time Limit Observers and a maximum\nnumber of observers an app can register to AppTimeLimitController\n\nAlso fix small bug with mDpmInternal initialization\n\nChange-Id: I8c0861d79711149f3ecd92ba4660f7b207e9b921\nFixes: 78890515\nFixes: 79230583\nTest: atest AppTimeLimitController\nTest: atest cts/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/ProfileOwnerTest.java#testAppUsageObserver\n"
    },
    {
      "commit": "b3972f9d2351a877fc0be5841da3289d5a487ebf",
      "tree": "9dbd8506b1261b01743f2058700c3b6c215680fc",
      "parents": [
        "da8e229b9c310c2f82111764c654ff687287e02c",
        "5ca5cb6c5350d8f79beb418251cad90eb152813e"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Wed May 02 00:23:23 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 02 00:23:23 2018 +0000"
      },
      "message": "Merge \"Add Stable Charging Threshold for AppStandby\" into pi-dev"
    },
    {
      "commit": "10b77a39a266e376c4cb7beef3d9543073f75466",
      "tree": "5c1910384c2b02a68fbda2aeb4db8bb874c1b667",
      "parents": [
        "019ec44307661ea88cc0b0a38e4cdf12cbbe1941",
        "60aa35b756707a16d310c222a36edbcef9d56ed4"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 26 22:58:40 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 26 22:58:40 2018 +0000"
      },
      "message": "Merge \"Using a list to store usage events\" into pi-dev"
    },
    {
      "commit": "5ca5cb6c5350d8f79beb418251cad90eb152813e",
      "tree": "fa42deba289f02766720947590128ac6d86a566b",
      "parents": [
        "46e58e1b4086aa0e3eb62f9cdae0eefaea08943f"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Wed Apr 25 16:12:59 2018 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Thu Apr 26 15:44:58 2018 -0700"
      },
      "message": "Add Stable Charging Threshold for AppStandby\n\nDelay parole when charging to ensure the device has some time to charge\nand avoid a spike is activity on plug in.\n\nChange-Id: If85f097249aeed6b64f43a22f4d25ff0a070febb\nFixes: 78040839\nTest: atest AppStandbyControllerTests\n"
    },
    {
      "commit": "4620d9b3a3e09884683e0a76c6b85b76405b276b",
      "tree": "295b1470034cac69bd1e0e66aaee9c16635c9afa",
      "parents": [
        "630f58ea04a033ac8ec9960bff07227720fd1c38",
        "4b976ad270c624b9ebd3721f0a4499edbe7379dc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 25 23:37:43 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 25 23:37:43 2018 +0000"
      },
      "message": "Merge \"Add ADAPTIVE_BATTERY_MANAGEMENT_ENABLED\" into pi-dev"
    },
    {
      "commit": "60aa35b756707a16d310c222a36edbcef9d56ed4",
      "tree": "19f4d5c720b2e044ed2bb6ea5538bb532e61d175",
      "parents": [
        "fe36369c075661b61437863a17ff4d1916ca4456"
      ],
      "author": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Tue Apr 24 18:52:46 2018 -0700"
      },
      "committer": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Wed Apr 25 16:36:35 2018 -0700"
      },
      "message": "Using a list to store usage events\n\nMoving UsageEvent.Event objects to an array list sorted on the event\ntimestamps as there can be multiple events with the same timestamps.\n\nTest: atest android.app.usage.EventListTest\nExisting tests:\natest android.app.usage.cts.UsageStatsTest\n\nBug: 74406113\nChange-Id: Idc7f2a8db6e5a9499b3b0b74efbf014b17fa495f\n"
    },
    {
      "commit": "4b976ad270c624b9ebd3721f0a4499edbe7379dc",
      "tree": "7c91237cc6b291a9bcb94ce27214b330c4faec05",
      "parents": [
        "a5843ebb5936e3e5d951bf80438e9c55d430dcda"
      ],
      "author": {
        "name": "Lei Yu",
        "email": "jackqdyulei@google.com",
        "time": "Thu Apr 19 10:38:58 2018 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Apr 19 11:47:38 2018 -0700"
      },
      "message": "Add ADAPTIVE_BATTERY_MANAGEMENT_ENABLED\n\nAPP_STANDBY_ENABLED is controlled by server side to do experiment.\nBefore this CL, Adaptive Battery is hooked up to this flag, so\neven though if user turns it off, it may be turned on by server.\n\nAdd a high level ADAPTIVE_BATTERY_MANAGEMENT_ENABLED to control\nthe feature in settings UI side.\n\nAppStandbyController looks at both flags and enables standby\nonly if both are true.\n\nBug: 78153913\nTest: Build\n      Manually change both flags (through UI and adb)\n      Verify dumpsys usagestats shows the correct state\n      for mAppIdleEnabled.\nChange-Id: I1fb4461f382e1ee87000fdc38962d94a17891c1e\n"
    },
    {
      "commit": "113a0fa35a1bf91b6a45380dec5ce25cb7ec4def",
      "tree": "688c90a257541d49575e26451ea968ef1df59a81",
      "parents": [
        "1074688a265db2d44b244f2f57b9ac081f825e99"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Fri Mar 30 12:45:18 2018 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Wed Apr 18 15:21:32 2018 -0700"
      },
      "message": "No AppStandby tracking of non existent packages and add parole window\n\nDisallow attempts to change standby bucket of nonexistent packages.\nAlso, add a parole window for idle apps. When parole for idle apps is\nready to be set, check that there is network availabilty. If there is\nnone, wait for network or the end of the parole window before setting\nparole.\n\nChange-Id: I7b8786f59b8da76325f2591cc7b1f86753d52d7b\nFixes: b/71857185\nFixes: b/74345840\nTest: atest android.app.usage.cts.UsageStatsTest#testIgnoreNonexistentPackage\nTest: manual (enable DEBUG and COMPRESS_TIME in AppStandbyController)\n"
    },
    {
      "commit": "6d63103aa59fddd9c17c1ecb08e607d5fe058e49",
      "tree": "ef4afcc58b1b1832fc31890206a7e3fc206382f4",
      "parents": [
        "167032ab002714d26a14735bbcdc072c5fa693b7"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 16 09:57:29 2018 -0600"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 16 09:57:31 2018 -0600"
      },
      "message": "Use OS package name when identity cleared.\n\nIf we pass through the original calling package name, it obviously\nwon\u0027t match UID 1000.\n\nBug: 78104140\nTest: builds, boots\nChange-Id: Id0acf0b038e25a113674fa2f43ff93ba05144c1f\n"
    },
    {
      "commit": "5a8bcd90315c24e2f16176fd13922b2a92752cd5",
      "tree": "6c05f7553d421b541286347ca0299217730dd8c8",
      "parents": [
        "213639c93e6795c248c18ab2c16858ac28f36abd"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Apr 13 13:29:59 2018 -0600"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Fri Apr 13 19:32:25 2018 +0000"
      },
      "message": "OP_GET_USAGE_STATS should be noted, not checked.\n\nPer email feedback, we should be using \"noteOp\" instead of \"checkOp\"\nwhen testing if caller holds OP_GET_USAGE_STATS, so that we record\nthat caller used the operation.\n\nBug: 77662908\nTest: builds, boots\nExempt-From-Owner-Approval: keep tests passing\nChange-Id: I3a60345d590534fdbc2c1248e0d30dc85a5d6772\n"
    },
    {
      "commit": "3378aa9f88101d77bc52c1a00b257c752bd8c193",
      "tree": "beb84eddc97d4567b1c5a0637fcd3250f025550e",
      "parents": [
        "b5dcf7d3ac4f8b213085eb266588acb2117b4044"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Mar 30 17:43:49 2018 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Mar 30 17:43:49 2018 -0700"
      },
      "message": "Work on issue #74404949: Screen state usage API\n\nAdd events for the keyguard being shown and hidden.\n\nBug: 74404949\nTest: atest CtsUsageStatsTestCases:UsageStatsTest\\#testInteractiveEvents\nChange-Id: I038e03cf4ba80669d7d17c3d66b98ee81050abc8\n"
    },
    {
      "commit": "75ad2496ebd8162771687510dfe40b5316cb38bc",
      "tree": "304a8849055ac733e93287ce529777ea44621096",
      "parents": [
        "2011f2333d1b9d0930223dbb3587a40e2d1b80bb"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Wed Mar 28 14:42:42 2018 -0700"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Thu Mar 29 14:53:02 2018 -0700"
      },
      "message": "AppStandby exemption: sync requested by FG apps\n\nBug: 72443754\nFix: 72443754\n\nTest: atest ${ANDROID_BUILD_TOP}/frameworks/base/services/tests/servicestests/src/com/android/server/content/SyncOperationTest.java\nTest: Manual test with contacts sync:\n\nPrecondition: Put the contacts sync in RARE bucket.\n\nadb shell dumpsys deviceidle tempwhitelist -r com.google.android.syncadapters.contacts\nadb shell am make-uid-idle com.google.android.syncadapters.contacts\nadb shell am set-standby-bucket com.google.android.syncadapters.contacts 40\n\nTest 1: Toggle contacts sync from the Settings -\u003e Account\n\n- Make sure a sync happens.\n\nTest 2: Mutate a contact on the WEB\n\n- Sync is scheduled, but won\u0027t run because it has no network access.\n- am set-standby-bucket com.google.android.syncadapters.contacts 30\n- Sync run runs.\n\nTest 3. adb shell requestsync -n ACCOUNT -t com.google -a com.android.contacts\n\n- Sync is scheduled but won\u0027t run.\n\nTest 4. adb shell requestsync -n ACCOUNT -t com.google -a com.android.contacts -f\n\n- Sync is scheduled but it still won\u0027t run.\n\nTest 5. adb shell requestsync -n ACCOUNT -t com.google -a com.android.contacts -F\n\n- Sync now runs\n\nChange-Id: I1eb972ed321d2a1a782ae23ccb806671926d3e6b\n"
    },
    {
      "commit": "50c069e489068cb7f70145303352141016e19017",
      "tree": "3588a45c8fdb87058aed4a68a1c2a915f1019596",
      "parents": [
        "37594c892de575cfbfe02db23088a7f4c22c22e3",
        "3154dcf94a4f451d2b32607b30cdd070e61bd2ae"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 29 06:03:17 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 29 06:03:17 2018 +0000"
      },
      "message": "Merge \"Fallback to ML prediction after short ACTIVE states\" into pi-dev"
    },
    {
      "commit": "37594c892de575cfbfe02db23088a7f4c22c22e3",
      "tree": "4f4b78ce33589888fe765900e9837af096a3c529",
      "parents": [
        "e33543ff6942e5b56b8fcb6fe0fd06db91aa5210",
        "80c4be88e0c108e3cb4c528c078c53fde6676af3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 29 05:51:24 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 29 05:51:24 2018 +0000"
      },
      "message": "Merge \"Add slice pinning to list of reasons for usage\" into pi-dev"
    },
    {
      "commit": "3154dcf94a4f451d2b32607b30cdd070e61bd2ae",
      "tree": "7d9bd214a5b4f9a6d094d633e64365c28733a5be",
      "parents": [
        "11866a4242fce0df45ff95930e3453093c68e8ea"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Mar 27 18:24:04 2018 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Mar 28 13:49:21 2018 -0700"
      },
      "message": "Fallback to ML prediction after short ACTIVE states\n\nWhen an app is temporarily elevated to ACTIVE state for some\nreason, keep track of the last predicted bucket and drop back\nto that if the ACTIVE state ends.\n\nAlso keep track of prediction during a forced ACTIVE state, even\nif it\u0027s not applied right away.\n\nBug: 77158823\nTest: atest AppStandbyControllerTests\nChange-Id: Ic6de6c24bb25c5392ac5b41a2c05889d94f23436\n"
    },
    {
      "commit": "ced54398cc0dfd2f782153560c2ffd0eb8743045",
      "tree": "d5e6a868ec1b33c2fd8e91287c9e8eed6e3b47a0",
      "parents": [
        "d52c532df7c7c481bf6e482c37f4e0ee02618fce"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Feb 26 13:07:42 2018 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 27 13:27:20 2018 -0700"
      },
      "message": "Work on issue #74404949: Screen state usage API\n\nAdd usage stats tracking of screen time.  There are two new\nevents, one for when the device is an interactive state, the\nother for when it is non-interactive.  Also add a whole new\nusage stats API for retrieving aggregated data that is associated\nwith general events, not particular packages.  In this case\nit allows you to find the time the device spent interactive\nand non-interactive and the count of the transitions in to\neach of those states.\n\nBug: 74404949\nTest: atest CtsUsageStatsTestCases:UsageStatsTest\\#testInteractiveEvents\n\nChange-Id: Ibe6d55e2aecb0c8519b1358644378ec5c7a4250d\n"
    },
    {
      "commit": "80c4be88e0c108e3cb4c528c078c53fde6676af3",
      "tree": "98527f7e4a0bb6f8bb8b1de8e305f0607a929cc2",
      "parents": [
        "294ad785342f0eaaf41c59d819edd559450a4a2a"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Mar 26 10:54:04 2018 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Mar 26 15:56:20 2018 -0700"
      },
      "message": "Add slice pinning to list of reasons for usage\n\nBug: 73455786\nTest: atest AppStandbyControllerTests\nChange-Id: Ia7980a8396a47d88959051329409f0ff39e81977\n"
    },
    {
      "commit": "7f53c7bc975041cb3ba1be7a1e33d305abaf1ddf",
      "tree": "4d4f2285f0d538135ab36bac454f293941fe2d59",
      "parents": [
        "6da53af9c55ba2231cd2f47c7dffb150f2c22a89"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sun Mar 25 21:55:50 2018 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sun Mar 25 21:55:50 2018 -0700"
      },
      "message": "Shorter bucket elevation for system_interaction and sync_adapter\n\nDon\u0027t keep the app in ACTIVE for too long after an indirect\nuse of the app. Also don\u0027t mark as used, so bucketing algorithm\ncan override quickly.\n\nBug: 74340258\nTest: atest AppStandbyControllerTests\nChange-Id: I3b8014873aaf881de07304b64039da211a63a525\n"
    },
    {
      "commit": "8808edb063650f4497e6a31f8fbe4d2bcbdf227f",
      "tree": "44042aaed8444b4f2810c777b4587d9e967da716",
      "parents": [
        "ea4f21f62e18580d2829810abcc1a3e6d2d1676a",
        "bc813eb26e3027856114a26312e36e4bad86bd86"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Mar 23 19:13:22 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 23 19:13:22 2018 +0000"
      },
      "message": "Merge \"Provide app launch count in UsageStats\" into pi-dev"
    },
    {
      "commit": "bc813eb26e3027856114a26312e36e4bad86bd86",
      "tree": "a19f4c10792816809309bf64bba518ea676f7372",
      "parents": [
        "9531b70cae96e8e59d38bd91d636cbe084574f3a"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Mar 20 19:37:46 2018 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Mar 22 13:51:57 2018 -0700"
      },
      "message": "Provide app launch count in UsageStats\n\nThis counts the number of times the app was launched from outside\nthe app and ignores intra-app activity transitions.\n\nIntroduce a new permission for registering to observe app usage.\n\nFixes a bug where Settings couldn\u0027t force the app into another\nbucket if it was recently launched.\n\nBug: 74335821\nFixes: 76100712\nTest: Manual test using Settings\nTest: UsageStatsTest to verify permission change\nChange-Id: Ibd343c1cfa37089a3ac6fc30ba3194e21a9be499\n"
    },
    {
      "commit": "1918ef7569e90c70246e535478b26732b82d92d3",
      "tree": "1f0e89e4d85c2d5f531fff7fc74d2b9471171215",
      "parents": [
        "fc4ae7ec0eea2351afcff2a08a21247e10533c79"
      ],
      "author": {
        "name": "Jason Monk",
        "email": "jmonk@google.com",
        "time": "Wed Mar 14 09:20:39 2018 -0400"
      },
      "committer": {
        "name": "Jason Monk",
        "email": "jmonk@google.com",
        "time": "Wed Mar 21 10:03:29 2018 -0400"
      },
      "message": "UsageEvents for slices pinning\n\nTest: atest frameworks/base/services/tests/servicestests\nBug: 73455786\nChange-Id: I6a37f5525c29d3f47aa37e262c8834840309ba44\n"
    },
    {
      "commit": "a8bb9d255fe933938dab8c7ceec94b4fcd984847",
      "tree": "950caeba2669c34bd777b6a937f5ff4ff6595c24",
      "parents": [
        "3b0450d4a96b8caa24bb2ae0a8d29bfc1ff4e7d3",
        "62ec27e97f68513c5637383fb72de469c5e903c1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 16 22:40:46 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 16 22:40:46 2018 +0000"
      },
      "message": "Merge \"App Time Limits API in UsageStats\" into pi-dev"
    },
    {
      "commit": "62ec27e97f68513c5637383fb72de469c5e903c1",
      "tree": "ce5ceae6a6e2939674f9a6633acdb84a81e19bf5",
      "parents": [
        "200de1cc86c38bc34317c500f808be40baf341d0"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sun Mar 11 14:42:06 2018 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Mar 15 17:07:28 2018 -0700"
      },
      "message": "App Time Limits API in UsageStats\n\nAllow setting groups of apps to control usage time limits on.\nApplies only to activity time in the foreground.\n\nUpdated UsageStatsTest app to be able to add an observer for\na 30 second timeout across multiple comma separated package\nnames.\n\nBug: 74335821\nTest: atest FrameworksServicesTests:AppTimeLimitControllerTests\n      Install and run frameworks/base/tests/UsageStatsTest\n\nChange-Id: I677c30b4f211f7acf72c9766df3d8c1ac56a4b4e\n"
    },
    {
      "commit": "1fac86e6cdb3ca9d0b3b3ba8515d81a3b4e00b9b",
      "tree": "8e6618948223402d100891bcaf92357594bd7e2d",
      "parents": [
        "4b306e5e23b2554b61329e8e0f41bb2dfa97d4a5"
      ],
      "author": {
        "name": "Julia Reynolds",
        "email": "juliacr@google.com",
        "time": "Wed Mar 07 08:30:37 2018 -0500"
      },
      "committer": {
        "name": "Julia Reynolds",
        "email": "juliacr@google.com",
        "time": "Mon Mar 12 09:34:48 2018 -0400"
      },
      "message": "Log interruptive notifications\n\nFirst pass only logs audibly interruptive notfications; visually\ninterruptive notifications will be added in a future CL\n\nTest: runtest systemui-notification, cts\nBug: 74318867\nChange-Id: I604495bd4af9741ec52c38e4faa17cc87e2a522b\n"
    },
    {
      "commit": "1088cbb7701ba2de8fd4e01e3d9bfb7c343346e6",
      "tree": "ba9c6caa18d278b66d3c8f708c4a6307b13a8c74",
      "parents": [
        "3dc91c1426ef4da53ea85039c047d25b2de4ef47"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Thu Mar 01 12:45:16 2018 -0800"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Fri Mar 09 20:12:47 2018 +0000"
      },
      "message": "Add -c option for dumpsys usagestats\n\nBug: 73657997\nTest: manual (adb shel dumpsys usagestats -c)\nChange-Id: If37006290b0b8a63e1b51fb9b035ba6a62f7a9b3\n"
    },
    {
      "commit": "c0fe0626f6b9676ef1fde7c2f9a42f3922683b5d",
      "tree": "f7c0f24ceea01c4736be6292c8593526ab73d850",
      "parents": [
        "b93a014cc8ba9c87ad84bafcb4013d2bd83eedc5",
        "217ccda8ac8f38137882a0f9fefeac8e53dc4ed6"
      ],
      "author": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Sat Mar 03 01:32:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 03 01:32:21 2018 +0000"
      },
      "message": "Merge \"An api to query usage events for the caller\""
    },
    {
      "commit": "78646e58a30d2230f26e04fe4ec21939dd3301a3",
      "tree": "bf1e9f148283461e244e4865be5160417a544ae3",
      "parents": [
        "964f01b32843a6eada3d9bb5af45b6c5dc2544d5"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Tue Feb 27 15:54:27 2018 -0800"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Tue Feb 27 17:46:26 2018 -0800"
      },
      "message": "Add null check in usagestats dump\n\n(also adjust the time stamp for easier parsing)\n\nChange-Id: I708c9fe68aa85b4897e95cca6b9d53522eef0d29\nFixes: 73960916\nTest: manual\n"
    },
    {
      "commit": "217ccda8ac8f38137882a0f9fefeac8e53dc4ed6",
      "tree": "b2fd48091b0f0252d6063bd77016e3642986e9e1",
      "parents": [
        "f3537c2054e4bfd627dd488e25564e07fb4009da"
      ],
      "author": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Fri Feb 23 17:57:12 2018 -0800"
      },
      "committer": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Tue Feb 27 15:45:05 2018 -0800"
      },
      "message": "An api to query usage events for the caller\n\nAdded an api which apps can query to find out about their own usage\nevents. This is useful in understanding the apps historical bucket\nchanges.\n\nTest: atest android.app.usage.cts.UsageStatsTest#testQueryEventsForSelf\n\nFixes: 71906213\nChange-Id: Ie6144cfe515fd0748a317835918a9d8cf1aea007\n"
    },
    {
      "commit": "2b2988946293c89761607e05eb1eb53e1e1c80f8",
      "tree": "60ae3776ca93b8e361b9d2da2da3552c6ecb080d",
      "parents": [
        "60cebe02a0c39351b26215062403548c53b178a9",
        "743e0ad61a050c521bad72063d5b388003f4d07a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 26 18:49:54 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 26 18:49:54 2018 +0000"
      },
      "message": "Merge \"No heavy processing on UID observer thread\""
    },
    {
      "commit": "119be9a5fc4033eba570ec94b94862401ee84570",
      "tree": "e7740f03ebb24af98bd058784447ac1bf8ab8e6f",
      "parents": [
        "a8e26b2e16f1bf800072194055ade22e1f1df4be"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sun Feb 18 22:23:00 2018 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Feb 23 10:45:39 2018 -0800"
      },
      "message": "Improve reporting of bucketing reason\n\nKeep track of main and sub reason for bucket change\n\nBug: 73178753\nTest: atest AppIdleHistoryTests\nChange-Id: I4936281ac06046bb5ffed9f3306efa24c7fd47ab\n"
    },
    {
      "commit": "23ea41c4e76599cc63c051edaec52e3dc7f2d372",
      "tree": "0317fb8f3118e09603e0f410170d34bf7095aa4f",
      "parents": [
        "dced4bb3c31f967875bbc034a713cc58cc882775",
        "868bde247c76e309232b1e3e6a873bde725acc22"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 23 09:28:33 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 23 09:28:33 2018 +0000"
      },
      "message": "Merge \"Using ParceledListSlice for {get|set}AppStandbyBuckets\""
    },
    {
      "commit": "868bde247c76e309232b1e3e6a873bde725acc22",
      "tree": "591fe40c637c4947d352188d55e5a63607f824ab",
      "parents": [
        "5e589b7fec1fa27d1179d28daa6daa9f4f4eab1f"
      ],
      "author": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Tue Feb 20 20:59:52 2018 -0800"
      },
      "committer": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Wed Feb 21 21:23:09 2018 -0800"
      },
      "message": "Using ParceledListSlice for {get|set}AppStandbyBuckets\n\nUsageStats.getAppStandbyBuckets and setAppStandbyBuckets deal with large\nmaps of packages to buckets which may exceed the IPC transaction size\nlimit. Using ParceledListSlice to send and receive data across binder.\n\nTest: atest android.app.usage.cts.UsageStatsTest#testGetAppStandbyBuckets\nAnd manually:\nadb shell am get-standby-bucket --user 0\nadb shell am set-standby-bucket \u003cpackage1\u003e active \u003cpackage2\u003e rare ...\nLocally, added protectionLevel development to permission\nCHANGE_APP_IDLE_STATE and tested setAppStandbyBuckets with a test app.\n\nBug: 70890569\nChange-Id: Ic1fb0465137d1b830d3ad1fbf3ac8698a409c623\n"
    },
    {
      "commit": "06e4940237e51d04aa196dc74016a6f9b35e38c3",
      "tree": "2fca1a8b93cf685b840384a84f490b166322fde9",
      "parents": [
        "9cdcb3e380bae61a411526b006423d91aa2e3066"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Tue Feb 20 23:39:09 2018 -0800"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Wed Feb 21 12:24:15 2018 -0800"
      },
      "message": "Dump last 24 hours of UsageStats events\n\nOn calling dumpsys usagestats, the last 24 hours of events will be\ndumped rather than the events since the arbitrary time point\n(also increase timestamp granularity to seconds)\n\nFixes: 73657997\nTest: manual (adb shell dumpsys usagestats)\n\nChange-Id: I92f1f17b4119d2023ed9b81e0610c19f62503bf0\n"
    },
    {
      "commit": "743e0ad61a050c521bad72063d5b388003f4d07a",
      "tree": "8173ac4bb5225620a7fd214c7f005f9de4e5832e",
      "parents": [
        "62b618eef6749283382b325264daeddb31294a2f"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Tue Feb 20 16:01:11 2018 -0800"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Tue Feb 20 16:01:11 2018 -0800"
      },
      "message": "No heavy processing on UID observer thread\n\nBug: 73505782\nTest: boot and launch several apps.\nChange-Id: I7dd5809fac2c4e38c0ff73e6015150a7a0b9a608\n"
    },
    {
      "commit": "bbbad9cc0fc1def37bcec1fc8626e3c0ab6e3491",
      "tree": "bc2928a393f1244b0db50623ab4e76e7ba451b8e",
      "parents": [
        "d591904d1d95707e7de97f2805b666f9ce32ec53"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sat Feb 10 16:46:38 2018 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Feb 14 09:26:46 2018 -0800"
      },
      "message": "Cascading timeouts for App Standby\n\nFixes overlapping of predictions, strong usage events\nand mild usage events which have forced durations.\n\nHaving separate timeouts for ACTIVE and WORKING_SET\nand moving between them when necessary prevents\ngetting stuck in the wrong state (higher) for longer\nthan necessary.\n\nBug: 73294677\nTest: atest FrameworksServicesTests:AppStandbyControllerTests\nChange-Id: I35530e62cffe2c86945b5da64a41704f807708ce\n"
    },
    {
      "commit": "f9420f4dddebc89db11ee04d1ef22e9944fc1396",
      "tree": "5d83c511d5566e186658b1fc55b7a6d62ea9a31d",
      "parents": [
        "1c12690fc69c7d95e1c8a003e075a8074f8b58ba",
        "7ec89411677867e9a215ca8a3ace6585fe426d82"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 08 22:16:09 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 08 22:16:09 2018 +0000"
      },
      "message": "Merge \"Track notification clicked events in UsageStats\""
    },
    {
      "commit": "7ec89411677867e9a215ca8a3ace6585fe426d82",
      "tree": "44753d523b70b07c13be6ab3a08f08c63387ff55",
      "parents": [
        "af5a66bf822e68e9803cddecb81c180b99bd5861"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Feb 07 08:48:49 2018 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Feb 08 09:09:31 2018 -0800"
      },
      "message": "Track notification clicked events in UsageStats\n\nExpose some of the new events as SystemApi.\n\nMake some of the timeouts configurable in AppStandbyController.\n\nMake NOTIFICATION_SEEN event upgrade app to WORKING_SET for\n12 hours. This is not perfect though and will require further\ntweaking as it may result in the app becoming elevated higher\nfor much longer than necessary.\n\nChange-Id: I62401cfabddf51b6f80b9bba8a358285b8cf9a51\nFixes: 72741441\nFixes: 72067231\nFixes: 72537465\nFixes: 72536347\nTest: atest CtsUsageStatsTestCases:UsageStatsTests\n"
    },
    {
      "commit": "bbab23ff97688f33c5cc41d5d0e134c0d9f58c6c",
      "tree": "495d74767efc00b7aebc085751ee61af1636bff6",
      "parents": [
        "b5cc72055fd3f4a8476f1b00931bc96ba366a859"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 07 15:34:27 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 08 02:19:42 2018 -0800"
      },
      "message": "Frameworks: Annotate trivial @GuardedBy in services/ misc\n\nAdd @GuardedBy for simple functions that require a single lock\nand are named XYZLocked.\n\nDerived by errorprone.\n\nBug: 73000847\nTest: m\nTest: m javac-check-framework RUN_ERROR_PRONE\u003dtrue\nChange-Id: Id1d9fbe5018250e3b9d1466fc5f670d5ad902fa3\n"
    },
    {
      "commit": "80db94c52620c01af6b44b57d545504e89867bba",
      "tree": "261ca97b32e7f6e95376df097c524bd42e0268b7",
      "parents": [
        "af5a66bf822e68e9803cddecb81c180b99bd5861"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Feb 05 14:17:39 2018 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Feb 06 00:29:30 2018 +0000"
      },
      "message": "Fix crash in GmsCore due to permission issue\n\nRelax the permission requirement for UsageStats\nAPI querying inactive state of apps across users.\n\nBug: 72953020\nFixes: 72942083\nTest: Manual -- create a secondary user\nChange-Id: I9c5e12f718d9f424c99aa72dd70470c4b083c13f\n"
    },
    {
      "commit": "777b1537c2d8afbd3a422bb64d6f5f2f101dc1c3",
      "tree": "ba9e6d33956f47cd990b2deb846942a21551d9a2",
      "parents": [
        "faf852539a2dc11e10520f223f3c29c47cf3008d"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sun Jan 28 23:20:07 2018 +0000"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Feb 02 15:46:31 2018 +0000"
      },
      "message": "Fix an issue with apps EXEMPTED after OTA\n\nAfter an OTA, all system apps were being\npushed into EXEMPTED for 4 hours because\nof a race with the boot phase resulting in\nit appearing as if app standby was disabled.\n\nAnother bug in updating the state out of EXEMPTED\nwas preventing checkIdleStates() from fixing\nthe issue soon after.\n\nBug: 72835804\nTest: Manual:\n        Manually delete /data/system/usagestats/version\n        Reboot\n        Verify that correct apps are EXEMPTED\n      Automated:\n        atest FrameworksServicesTests:AppStandbyControllerTests\nChange-Id: Ib53f0c45e5c2e2456442f6782ad5ca9b9d0c3d72\n"
    },
    {
      "commit": "55c84552cc0cab34f13084c219a0f4c4487e512b",
      "tree": "beb11da071fc5850e5c8cd07ecba579ef19d037b",
      "parents": [
        "52f8309a4075a3f3ef7c7a07bcebec0164968dbe",
        "d117b293aec3fc2de0f6508cb8975af4dbd6a6a3"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@android.com",
        "time": "Fri Jan 26 18:21:04 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 26 18:21:04 2018 +0000"
      },
      "message": "Merge \"Let the job scheduler know when the user interacts with an app\""
    }
  ],
  "next": "c7904e1d055d64ce363b4623a6a1f0777fe848fa"
}
