)]}'
{
  "commit": "e8a403d57c8ea540f8287cdaee8b90f0cf9626a3",
  "tree": "13d471ba15c34ba265de9393e09b376a4b61a11f",
  "parents": [
    "ea168d229d316c84652e88ad0f19adbaa884d731"
  ],
  "author": {
    "name": "Tao Bao",
    "email": "tbao@google.com",
    "time": "Thu Dec 31 07:44:55 2015 -0800"
  },
  "committer": {
    "name": "Tao Bao",
    "email": "tbao@google.com",
    "time": "Fri Feb 19 11:31:45 2016 -0800"
  },
  "message": "Add support for update-on-boot feature.\n\nAdd a separate system service RecoverySystemService to handle recovery\nrelated requests (calling uncrypt to de-encrypt the OTA package on the\n/data partition, setting up bootloader control block (aka BCB) and etc).\n\nWe used to trigger uncrypt in ShutdownThread before rebooting into\nrecovery. Now we expose new SystemApi (RecoverySystem.processPackage())\nto allow the caller (e.g. GmsCore) to call that upfront before\ninitiating a reboot. This will reduce the reboot time and get rid of the\nprogress bar (\"processing update package\"). However, we need to reserve\nthe functionality in ShutdownThread to optionally call uncrypt if\nfinding that\u0027s still needed.\n\nIn order to support the update-on-boot feature, we also add new\nSystemApis scheduleUpdateOnBoot() and cancelScheduledUpdate() into\nandroid.os.RecoverySystem. They allow the caller (e.g. GmsCore) to\nschedule / cancel an update by setting up the BCB, which will be read by\nthe bootloader and the recovery image. With the new SystemApis, an\nupdate package can be processed (uncrypt\u0027d) in the background and\nscheduled to be installed at the next boot.\n\nBug: 26830925\nChange-Id: Ic606fcf5b31c54ce54f0ab12c1768fef0fa64560\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6ec434cfbf5440f97cc1589af98a2c3d41969013",
      "old_mode": 33188,
      "old_path": "Android.mk",
      "new_id": "6c0e8ff83ec703578525aba06630265507c886c0",
      "new_mode": 33188,
      "new_path": "Android.mk"
    },
    {
      "type": "modify",
      "old_id": "2e9e08fff41ea58a69721f968e6b4cb75cb3f694",
      "old_mode": 33188,
      "old_path": "api/system-current.txt",
      "new_id": "5f828df6f6e535e719a095b4ed99c648335840b5",
      "new_mode": 33188,
      "new_path": "api/system-current.txt"
    },
    {
      "type": "modify",
      "old_id": "5eed781d76c3607138211b04272121a6e34ba47d",
      "old_mode": 33188,
      "old_path": "core/java/android/app/SystemServiceRegistry.java",
      "new_id": "1fd6a5ac0bde1e21ee2c4e0e09d47338dda4698a",
      "new_mode": 33188,
      "new_path": "core/java/android/app/SystemServiceRegistry.java"
    },
    {
      "type": "modify",
      "old_id": "0cdbef0b770bda94924382eebed88924f261e8ec",
      "old_mode": 33188,
      "old_path": "core/java/android/content/Context.java",
      "new_id": "b935b256b88056950544bdf46a468dd10bef98a6",
      "new_mode": 33188,
      "new_path": "core/java/android/content/Context.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "12830a4996aa8e8ef551593255bb629ae98cff03",
      "new_mode": 33188,
      "new_path": "core/java/android/os/IRecoverySystem.aidl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d6f712ea32406a54cb905465b1ee1ce2dc30f019",
      "new_mode": 33188,
      "new_path": "core/java/android/os/IRecoverySystemProgressListener.aidl"
    },
    {
      "type": "modify",
      "old_id": "314b7d5491ff0c4f043a6092b8cdf7bba674f6a0",
      "old_mode": 33188,
      "old_path": "core/java/android/os/PowerManager.java",
      "new_id": "dcc28d6f01a9aea1f4b382d9dc13f8ac11475484",
      "new_mode": 33188,
      "new_path": "core/java/android/os/PowerManager.java"
    },
    {
      "type": "modify",
      "old_id": "154c9bbab312eb6952a0f29a019ea0a62b84d8c3",
      "old_mode": 33188,
      "old_path": "core/java/android/os/RecoverySystem.java",
      "new_id": "ddcd63520549e5e3c6e6453b224fd80274956243",
      "new_mode": 33188,
      "new_path": "core/java/android/os/RecoverySystem.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d237fe7b4c3e6eb8044bc6e05e7edd4e34fde8b3",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/RecoverySystemService.java"
    },
    {
      "type": "modify",
      "old_id": "dbaa598fb1b26a9bbabf07cbc8484b827b036910",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/power/PowerManagerService.java",
      "new_id": "f901f9565fcc907bc810ff56b66b8337a34cba5b",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/power/PowerManagerService.java"
    },
    {
      "type": "modify",
      "old_id": "ac6a28e91ca8c7a24545d51417c1ab26524c4ca4",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/power/ShutdownThread.java",
      "new_id": "26f9ffd8fa74d6093d45c9e5c45240cfd52d84cc",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/power/ShutdownThread.java"
    },
    {
      "type": "modify",
      "old_id": "ac972a9c6863359c3d99e19fde19fc6a4e2d734f",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/SystemServer.java",
      "new_id": "f53f0a9e64ad49de1aac23917d6208bd0ea36d14",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/SystemServer.java"
    }
  ]
}
