)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "cd42acd9515bdce89d4f1401ee2888d684bf1918",
      "tree": "6c94609f6bbf2c6808409ab07c3490fe10881b6d",
      "parents": [
        "c86f234c51ebcb78164d850177eb2143112f9f65"
      ],
      "author": {
        "name": "Antonio Cansado",
        "email": "acansado@google.com",
        "time": "Wed Feb 17 13:03:38 2016 -0800"
      },
      "committer": {
        "name": "Antonio Cansado",
        "email": "acansado@google.com",
        "time": "Wed Feb 17 18:43:53 2016 -0800"
      },
      "message": "Implementation of data usage callbacks.\n\nNetworkStatsService will register data usage requests\nand keep data usage stats scoped to the request.\n\nThere are different types of data usage requests\n- scoped to a set of NetworkTemplate; these are restrictred to\ndevice owners and carrier apps and allow the caller to monitor\nall activity on the specified interfaces.\n- scoped to all uids visible to the user, if the user has\nandroid.Manifest.permission#PACKAGE_USAGE_STATS permission.\nThe set of uids may change over time, so we keep track of that.\n- scoped to a set of uids given by the caller, granted that\nthe caller has access to those uids.\n- scoped to the caller\u0027s own data usage. This doesn\u0027t require\nPACKAGE_USAGE_STATS.\n\nBug: 25812785\nChange-Id: Ie11f35fc1f29d0dbe82f7fc924b169bb55c76708\n"
    },
    {
      "commit": "f0a9d699feb9699979e8e64ef0dd909567890aa5",
      "tree": "cdc261e3399d002e17ca2526a8cfdc141234fd2b",
      "parents": [
        "342d93a90772cff55f1c444828aa01303796e9c1",
        "eac5a80775b683eb4da5b45cfcb053f662d9678f"
      ],
      "author": {
        "name": "Wei Liu",
        "email": "luciferleo@google.com",
        "time": "Thu Feb 04 23:42:49 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 04 23:42:49 2016 +0000"
      },
      "message": "Merge \"DO NOT MERGE ANYWHERE Start the FingnerprintService only if it has FEATURE_FINGERPRINT.\""
    },
    {
      "commit": "9086b10d6b2c018495ccbcabc049e1e6648a7de9",
      "tree": "9ce4e3516162ef16157efab14d2ef60c9e1eee8d",
      "parents": [
        "5650c523d664de84363441470cbf2aef7ecb139f"
      ],
      "author": {
        "name": "Wei Liu",
        "email": "luciferleo@google.com",
        "time": "Wed Feb 03 16:57:31 2016 -0800"
      },
      "committer": {
        "name": "Wei Liu",
        "email": "luciferleo@google.com",
        "time": "Thu Feb 04 18:24:34 2016 +0000"
      },
      "message": "DO NOT MERGE ANYWHERE Put the start of RttService behind a flag.\n\nWe can set config.disable_rtt in the init script to disable the\nRttService.\n\nb/26877020\n\nChange-Id: Ifb7fedc4764329dc09cae41f06bf6d5fc7426e5f\n(cherry picked from commit c47749f9908b5d98397379fb3bf80d330f9c8283)\n"
    },
    {
      "commit": "eac5a80775b683eb4da5b45cfcb053f662d9678f",
      "tree": "d7a19a42c0617fcd17bf883c2ae0d246b21a918d",
      "parents": [
        "37c80bc984790721777d0fd770060ee8262b6b55"
      ],
      "author": {
        "name": "Wei Liu",
        "email": "luciferleo@google.com",
        "time": "Wed Feb 03 14:31:37 2016 -0800"
      },
      "committer": {
        "name": "Wei Liu",
        "email": "luciferleo@google.com",
        "time": "Thu Feb 04 18:06:38 2016 +0000"
      },
      "message": "DO NOT MERGE ANYWHERE Start the FingnerprintService only if it has FEATURE_FINGERPRINT.\n\nb/26877020\n\nChange-Id: Idfef31edb7e67ae60c1b2205df326ed1c5657618\n(cherry picked from commit aae35640cd4e08186c01875e8d14962258e3d365)\n"
    },
    {
      "commit": "a89087542f774c585b6a6ec535fc294721710521",
      "tree": "ab18bd82a959dfd0afd2a8d1faba998435c56b2c",
      "parents": [
        "e909d94e03e2bd3eba0bb47b6295ae0bf6538c31"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 10 08:58:14 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 01 15:38:21 2016 -0800"
      },
      "message": "Frameworks/base: Add A/B OTA preopting\n\nAdd an OTA Dexopt service. Refactor package manager service and\npackage dex optimizer to reuse some code. Add knowledge about\nOTA flag to installer.\n\nBug: 25612095\nChange-Id: I7dd6bb468fea44b9d3acf0ac7d7404fb02d0f30a\n"
    },
    {
      "commit": "4f93c58b393bad5d0bcc4237fa66f14fb9c9ee28",
      "tree": "85ae8fa0f8d2896f0d4efdef184a3bca2623c067",
      "parents": [
        "8af734b80a44c8ec8775e1adbd2955b38a184564"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Wed Jan 27 19:05:43 2016 -0800"
      },
      "committer": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Wed Jan 27 20:27:42 2016 -0800"
      },
      "message": "Add account locked notification when users are encrypted\n\nFixes bug 26407543\n\nChange-Id: Ic66669cd5f75b5fa41449e33133439752cef112b\n"
    },
    {
      "commit": "a35b5539a95342799a18e95616c5e5751a198e4c",
      "tree": "fd49973b9fada0decd7c1743e8b39c54d3b47588",
      "parents": [
        "df6c8d0bc0073ebf1aa98ea26e1da93008b7c467"
      ],
      "author": {
        "name": "Peng Xu",
        "email": "pengxu@google.com",
        "time": "Wed Jan 20 00:05:45 2016 -0800"
      },
      "committer": {
        "name": "Peng Xu",
        "email": "pengxu@google.com",
        "time": "Wed Jan 27 16:37:22 2016 -0800"
      },
      "message": "Dynamic Sensor Discovery Implementation\n\nDefined the dynamic sensor meta data type and UUID of sensor, as well\nas the broadcast intent that is related to dynamic sensor status\nchange.\n\nModify SensorManager, SystemSensorManager and the JNI layer to support\ndynamic sensor discovery.\n\nAdded SensorNotificationService to notify apps that sensor connected\nor disconnected via broadcast.\n\nChange-Id: I28adfb005357d7e3983d65117d6865830c75027d\n"
    },
    {
      "commit": "a772e5fc062c8de48cb9c1d61755110f6b2e189b",
      "tree": "3ee387dd521a8d8d6c3bbc8841542ca07a5078aa",
      "parents": [
        "5c461fc36d79d13b037ef928beb38fdb64e94057"
      ],
      "author": {
        "name": "Arunesh Mishra",
        "email": "arunesh@google.com",
        "time": "Mon Jan 25 10:33:11 2016 -0800"
      },
      "committer": {
        "name": "Arunesh Mishra",
        "email": "arunesh@google.com",
        "time": "Wed Jan 27 12:49:20 2016 -0800"
      },
      "message": "SoundTrigger API improvements.\n\nThis CL implements the SoundTrigger API improvements as given in b/22860713. Only the java-level\nparts are implemented in this CL.\n\nKey changes include:\n\n* Addition of a SoundTriggerManager/SoundTriggerDetector system API to manage\n  the sound-trigger based sound models.\n* Addition of a SoundTriggerService service that manages all sound models\n  including voice (keyphrase) and sound-trigger based models.\n* Includes logic to write sound-trigger based models to the database.\n* VoiceInteractionManager service now uses SoundTriggerService instead of\n  SoundTriggerHelper.\n\nBug: 22860713\nChange-Id: I7b5c0ed80702527c4460372efeb5e542d3693a69\n"
    },
    {
      "commit": "aae84105d1b8cfe6144afbb82bc70481cb39f8c8",
      "tree": "b88cc7a9260362da18b514a027c6de18c5347463",
      "parents": [
        "2e98a11055015ecacd12d71b0ed553c13c7b00ef",
        "1e33dc8fdf3f722ecd32cc586b2a9515de24a242"
      ],
      "author": {
        "name": "Fyodor Kupolov",
        "email": "fkupolov@google.com",
        "time": "Fri Jan 22 18:21:15 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 22 18:21:15 2016 +0000"
      },
      "message": "Merge \"Use SystemService lifecycle API in input method service\""
    },
    {
      "commit": "1e33dc8fdf3f722ecd32cc586b2a9515de24a242",
      "tree": "996646e6c060ecfeeeb65d0d44cceb1f28ed3ef8",
      "parents": [
        "bcd2b7179afb2028eb7402467de42c4a9a2b13cb"
      ],
      "author": {
        "name": "Fyodor Kupolov",
        "email": "fkupolov@google.com",
        "time": "Thu Jan 21 12:02:58 2016 -0800"
      },
      "committer": {
        "name": "Fyodor Kupolov",
        "email": "fkupolov@google.com",
        "time": "Thu Jan 21 12:06:11 2016 -0800"
      },
      "message": "Use SystemService lifecycle API in input method service\n\nChange-Id: Ic17667df60b30e5355b61a3601ad27a000cab3a3\n"
    },
    {
      "commit": "a0e10434c49c6fe075e853da2046fd281318c4c4",
      "tree": "01f77c748877214426e95cfabc74bc01c8fd63e4",
      "parents": [
        "88f04309806ec9964235e02543c7e2dbd18d6b8a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 20 14:04:40 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 21 09:36:12 2016 +0000"
      },
      "message": "Extract APKs on install or OTA\n\nART will unzip APKs in memory during launch if an OAT file is not\npresent. To save the time and memory, this patch will invoke dex2oat\nwith \u0027--compiler-filter\u003dverify-at-runtime\u0027 to unzip the APK during\ninstall or after an OTA.\n\nChange-Id: I16583f9450ad60356123a29f7a6a649b2ab9999f\n"
    },
    {
      "commit": "370f0fedf59ef3ad15ad76a3e424aa0a0e6130f7",
      "tree": "23e36fa7022d206e02486b57beee965f3065e4fa",
      "parents": [
        "0b23389fc7ae47597bb56563f4ce909c80818d67",
        "4fd6c26410cd210a7948f94407d9b2f551badbdc"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Thu Jan 21 00:27:39 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 21 00:27:39 2016 +0000"
      },
      "message": "Merge \"Stop rebooting into recovery if uncrypt fails.\""
    },
    {
      "commit": "4fd6c26410cd210a7948f94407d9b2f551badbdc",
      "tree": "15550bde8bb7300b69511a168710182a5dc8441c",
      "parents": [
        "a0b16caf88f06189daaf4ded007c46db0dae5fe5"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Tue Jan 19 14:22:24 2016 -0800"
      },
      "committer": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Tue Jan 19 14:33:40 2016 -0800"
      },
      "message": "Stop rebooting into recovery if uncrypt fails.\n\nuncrypt needs to be called when an OTA package sits on /data. If uncrypt\nfails or gets skipped (likely due to unexpected runtime restart during\nthe reboot), we should abort the rebooting. Because otherwise a) it\nwould fail for sure when reboots into recovery; b) useful logs would be\ngone once it reboots.\n\nBug: 26444951\nChange-Id: Ic3bc682b03f003f197e277ed6b6886e85f364754\n"
    },
    {
      "commit": "7bdf3cff92d26f9a4a8b88f816f5313fe02d6a33",
      "tree": "4e4ae802c00c08f0804563ac72dc9c8fa727a800",
      "parents": [
        "4752ab714dc721c2f17a8104cc327e1c711a2640",
        "db4a79a5d7d348e9d2286d95d4e5a59dd484456f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jan 19 19:51:51 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 19 19:51:51 2016 +0000"
      },
      "message": "Merge \"Enable profile guided compilation on the framework side\""
    },
    {
      "commit": "db4a79a5d7d348e9d2286d95d4e5a59dd484456f",
      "tree": "6a13c648ce3054f50022131d740e9b91b93bc5a7",
      "parents": [
        "e53e428a7efd624459961da3f932b408f896453b"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Dec 23 18:55:08 2015 +0200"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jan 19 11:44:27 2016 -0800"
      },
      "message": "Enable profile guided compilation on the framework side\n\nThe background compilation service will trigger a profile based\ncompilation instead of a full one. If no profile information is\navailable the compilation is skipped (see installd).\n\nNote that the end decision whether or not to compile a package is taken\nby dext2oat. We can\u0027t make the decision here because this service runs\nunder system server which cannot read app\u0027s profile data.\n\nBug: 26080105\nChange-Id: I457ea8dea0557839c1f7cdc241770055732b0a4a\n"
    },
    {
      "commit": "3da7357951a1981ecf40391e19ad8e53b45cb046",
      "tree": "cfc394e8b0a0137a3a7203827c7248c718a7cb3c",
      "parents": [
        "f1fc5a0fe802f8cbf477b1ef54b25127818e091d",
        "e540b64aaf58460f7930a5e4937cee660215c948"
      ],
      "author": {
        "name": "Etan Cohen",
        "email": "etancohen@google.com",
        "time": "Fri Jan 15 01:29:48 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jan 15 01:29:48 2016 +0000"
      },
      "message": "Merge \"NAN: baseline NAN manager for discovery.\" into mm-wireless-dev\nam: e540b64aaf\n\n* commit \u0027e540b64aaf58460f7930a5e4937cee660215c948\u0027:\n  NAN: baseline NAN manager for discovery.\n"
    },
    {
      "commit": "20d329b08df7d1a94e6caee781f09e812a79c913",
      "tree": "d20d232df7945b7cfbfa5f8950317017e45bd625",
      "parents": [
        "4a4345b681f430bc76bed964eb3d4d569539130e"
      ],
      "author": {
        "name": "Etan Cohen",
        "email": "etancohen@google.com",
        "time": "Tue Sep 29 13:49:02 2015 -0700"
      },
      "committer": {
        "name": "Etan Cohen",
        "email": "etancohen@google.com",
        "time": "Thu Jan 14 11:34:07 2016 -0800"
      },
      "message": "NAN: baseline NAN manager for discovery.\n\nInitial framework for user API (all @hide for now). Supports:\n- NAN configuration\n- Publish/Subscribe \u003d Discovery\n- Message passing\n- Notifications\n\nBug: 26216681\nChange-Id: I72e467756a02f7b80c52fae916b9a47c8174af42\n"
    },
    {
      "commit": "57c54f25d8bbe976b7ed80a5a8ec5ba8584587f5",
      "tree": "701398eae3ea03aee61cff5502ba03d2f6f94924",
      "parents": [
        "768464c6c356f4d1ba1a7eaa74c13c937be863be"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Thu Jan 14 10:10:22 2016 -0800"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Thu Jan 14 10:11:43 2016 -0800"
      },
      "message": "MediaResourceMonitorService: Lift the condition for launching\n\nBug:26548364\nChange-Id: If10a8b1c4b2dcdcdab16c9dcc899d37af1224505\n"
    },
    {
      "commit": "ab064b3b3687424e14dccfd60ff9a8f93ec22c23",
      "tree": "51d153de4606a90f3beac1ea6a419304d2ae6fc9",
      "parents": [
        "4fce66668e45429bbba49b9fb35d3b8d095a466c",
        "2034a4c4c5edd1516d03b73a8c8d8600eb3d4cbc"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Wed Jan 13 18:21:00 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 13 18:21:00 2016 +0000"
      },
      "message": "Merge \"Add a way for SystemUI to receive media resource (e.g. A/V codec) usage\""
    },
    {
      "commit": "2034a4c4c5edd1516d03b73a8c8d8600eb3d4cbc",
      "tree": "592461a4450513754af35173ab23bbd378e7dc0a",
      "parents": [
        "d68cc200ec2f420df0c9c0e67628e7bf2e47e2d6"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Mon Dec 14 21:57:34 2015 +0900"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Tue Jan 12 10:54:34 2016 -0800"
      },
      "message": "Add a way for SystemUI to receive media resource (e.g. A/V codec) usage\n\nBug: 26175834\nChange-Id: If506a533c5c7b567e770217a9430bf68b539677a\n"
    },
    {
      "commit": "4175be2f4e1e27490f38c387525d0c0cba88b47b",
      "tree": "e6fa152fab6bc0a4314d1489c97cbda7bf006239",
      "parents": [
        "5aa86938b8b50a20830bc3d608321fc4c0afb0e8"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sat Jan 09 14:57:45 2016 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sat Jan 09 14:57:47 2016 -0700"
      },
      "message": "Triage SearchManagerService for missing apps.\n\nSearchables aren\u0027t available until after the user is unlocked.  We\ncould scan for them while locked, but we\u0027re aiming for a minimalist\nenvironment, and scanning them while locked would require us to send\na changed broadcast on every boot.\n\nSwitch to using new SystemService lifecycle for faster event\ndelivery.  Restore broken global search observer.  Verified that\napps on external storage are handled correctly.\n\nBug: 26471205\nChange-Id: Id99ffe2ea6db37a394454cc7dfa4eab10280ff35\n"
    },
    {
      "commit": "2f3e35376ada0327b34a71d7c45ac6e6d955d7dc",
      "tree": "fc5fa5133632d5c20750c869108cffe05d03704d",
      "parents": [
        "154a01ec81e595c178a4a56eb019c3af2b43a3f2"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Dec 21 14:16:43 2015 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Jan 04 13:19:02 2016 -0700"
      },
      "message": "More work towards triaging missing app behavior.\n\nMany places across the platform query package details without\ngracefully handling packages or components that go missing for\nvarious reasons.  This can cause annoying user data loss, such as\nresetting back to built-in apps or dropping of accounts, etc.\n\nThis change verifies that system callers have thought about these\nedge cases by logging if they use default matching behaviors without\nexplicitly marking themselves as being \"triaged.\"  (The logging is\ncurrently disabled by default.)\n\nAlso creates explicit definitions of supported flags for various\nincoming PackageManager calls, and defines a clear distinction\nbetween flag types:\n\n-- GET-style flags are used to request additional data that may have\nbeen elided to save wire space.\n\n-- MATCH-style flags are used to include components or packages that\nwould have otherwise been omitted from a result set by current system\nstate.\n\nThere are a handful of existing GET flags that better fit under the\nMATCH definition, so this change clones them to new constants and\nmarks the old ones as deprecated.\n\nFixes bug in JobSchedulerService to consider jobs from apps on\nexternal storage.  Revert some dialer behavior back to being\nuntriaged.\n\nChange-Id: I9b6ab0968241e3479bddbd78de0c51e3b9917318\n"
    },
    {
      "commit": "2a9e3f8e6813716ab88ca54fd04ae047dc9aaaeb",
      "tree": "2c320da3107bcf005afd2f501b0225ecc42b5aa7",
      "parents": [
        "5b0e5207e1b2de9fd533fa444b8d9a0acadd1513"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Dec 18 10:57:58 2015 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sat Dec 19 15:00:09 2015 -0700"
      },
      "message": "Better named encryption flags, start triaging.\n\nCreate distinct flags for encryption aware, unaware, and both, and\nname them like the other MATCH_ flags.\n\nStart adding logic to help triage all system internal callers to\nverify that they\u0027ve done their homework and thought about how to\nhandle apps while locked.  Call sites in the system should either\nask for explicit matching behavior, or explicitly use the DEFAULT\nmatch flag to indicate that they\u0027ve been triaged to use the\ndefault state-based matching.\n\nBug: 26250295\nChange-Id: I86214e5c4f71a6dc72f06930800388713aecd107\n"
    },
    {
      "commit": "dd18a0b69537954d1cc34929a1386deb54f12b14",
      "tree": "aa6d314a928ca9d179e6c284afe986d080c4ef7e",
      "parents": [
        "bf0bbc8742b54c2dfd842b730e8e2ec0ba7daa84"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Fri Dec 04 16:16:31 2015 -0800"
      },
      "committer": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Thu Dec 17 10:09:17 2015 -0800"
      },
      "message": "Add a framework service tracking VR mode state.\n\n- Implement a \"VR mode\" that may be enabled by a focused Activity.\n- Add a system service that tracks the current VR mode state and notifies\n  other core framework services of mode changes.\n- Extend NotificationListenerService to allow the bind/unbind lifecycle\n  of specified listeners to be triggered by system events.\n\nBug: 22855417\nBug: 25479708\n\nChange-Id: I1ac8692bbb5521bb6c7cfb9d2b56b98b720f8568\n"
    },
    {
      "commit": "ba398eaafefbc6d496686077e88da9d695b13bbc",
      "tree": "8d891d256cd5c0735c1ac49d05f648fe6b0885b2",
      "parents": [
        "eb2094ce24a329dee438870782a8940fbbdba4c4"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Wed Dec 16 15:28:23 2015 -0500"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Wed Dec 16 15:28:23 2015 -0500"
      },
      "message": "Remove DayNight themes from public API (again)\n\nBug: 22628106\nChange-Id: Id55c9e626813c70671a93aedf8b1e0cdaed45ec1\n"
    },
    {
      "commit": "6258dcd7ea5450726bc7bcb1fbd50e99f62f38fb",
      "tree": "308b291a3efe64c45e9d8eae804fe79e5977540a",
      "parents": [
        "752b070e327f3a7a1538c702566a251636dc806d"
      ],
      "author": {
        "name": "Gustav Sennton",
        "email": "gsennton@google.com",
        "time": "Fri Oct 30 19:25:37 2015 +0000"
      },
      "committer": {
        "name": "Gustav Sennton",
        "email": "gsennton@google.com",
        "time": "Fri Dec 11 14:29:44 2015 +0000"
      },
      "message": "Add functionality for changing WebView provider.\n\nMake it possible to change WebView provider (through a Developer\nsetting) and kill all apps using the old provider.\nThis includes checking the signatures of the WebView providers to make\nsure they are valid.\n\nNow that we can change WebView provider through a setting it is possible\nto change provider while some provider is being updated. Because of this\nwe now keep track of which provider should be in use in\nWebViewUpdateService to make sure we use the correct provider at all\ntimes.\n\nWe now also read WebView package meta data (name, package name, and\nsignature) from a separate xml file.\n\nMain bug: crbug.com/546185\n\nBug: 25338573\n\nChange-Id: I660fd1a40a5388f6569a06a7f0d029e8ff65945a\n"
    },
    {
      "commit": "6714030083b1d8ec5b2df6dfef08034d0d30c2fe",
      "tree": "91d98898b3c707d8327a0f67814b917b8ebd8060",
      "parents": [
        "8366fdd6a82b7887bb8227e7d209175c8a9dcb0c"
      ],
      "author": {
        "name": "Jack Yu",
        "email": "jackyu@google.com",
        "time": "Thu Dec 10 12:27:58 2015 -0800"
      },
      "committer": {
        "name": "Jack Yu",
        "email": "jackyu@google.com",
        "time": "Thu Dec 10 12:27:58 2015 -0800"
      },
      "message": "merge from master\n\nChange-Id: Ic03669db3f4595336a7dbc13ffc77d055d11acf9\n"
    },
    {
      "commit": "27c073796978106746e4a51f2100b29068ab37f6",
      "tree": "5626bb389b178d3a1806a28919a949c05e34ce57",
      "parents": [
        "a22d77e24737b785a33987647758cd3c1db85527"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 05 16:54:09 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 11 12:19:08 2015 +0000"
      },
      "message": "Remove performBootDexOpt and am\u0027s ensurePackageDexOpt.\n\nExcept common shared libraries and boot image, all compilations\nare now done through BackgroundDexOptService.\n\nChange-Id: Ib736e253c38b0c8085bc94e45f4e61a048f66e26\n"
    },
    {
      "commit": "e1aef85ff100c1beba215add2ff3238a4032c6ba",
      "tree": "6f3b9bbb82682230a2b2cbe71e7b3ae4991e5848",
      "parents": [
        "446433da24b7cfb7e7625675bb9dc4e17b05f3ba"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Thu Oct 15 17:28:35 2015 -0700"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Thu Oct 15 17:28:35 2015 -0700"
      },
      "message": "Use the SystemService lifecycle mechanism for AudioService\n\nThis will be needed to refactor user restriction handling.\n\nChange-Id: I4b77a020d631714e7f94bce5559190e3b78ec72c\n"
    },
    {
      "commit": "535570a7ce8fac764a45a603856d664227dba8c1",
      "tree": "a5ba080d1d2b5c1774f430840454103704a24195",
      "parents": [
        "0066b7b8d0b08514a405d70ff1dcf26d46a8874d",
        "979a22eaf9c62637c02ebd6f92ef6ea2888aa5be"
      ],
      "author": {
        "name": "Bryce Lee",
        "email": "brycelee@google.com",
        "time": "Sun Sep 27 15:11:22 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Sep 27 15:11:22 2015 +0000"
      },
      "message": "am 979a22ea: am 6ad696c3: am f0740e0a: Merge \"Add ThermalObserver system service to capture thermal state uevents.\" into cw-e-dev\n\n* commit \u0027979a22eaf9c62637c02ebd6f92ef6ea2888aa5be\u0027:\n  Add ThermalObserver system service to capture thermal state uevents.\n"
    },
    {
      "commit": "979a22eaf9c62637c02ebd6f92ef6ea2888aa5be",
      "tree": "2ee06d6dae9d34f648335092f77c179a9572c1b1",
      "parents": [
        "7e9f6fbf0fce5de5bb6506d3e5a2342d5e942ded",
        "6ad696c35b80f70f19de304b53bdbfc6f5a265d8"
      ],
      "author": {
        "name": "Bryce Lee",
        "email": "brycelee@google.com",
        "time": "Sat Sep 26 06:55:22 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Sep 26 06:55:22 2015 +0000"
      },
      "message": "am 6ad696c3: am f0740e0a: Merge \"Add ThermalObserver system service to capture thermal state uevents.\" into cw-e-dev\n\n* commit \u00276ad696c35b80f70f19de304b53bdbfc6f5a265d8\u0027:\n  Add ThermalObserver system service to capture thermal state uevents.\n"
    },
    {
      "commit": "bc58f59da6226c6f1d240c95d566186f679fc310",
      "tree": "778b861c7bf3544cdca8b07baec17bd3f46f5d7a",
      "parents": [
        "184440cea399d2332b5dc138a9e8a47e9cde3398"
      ],
      "author": {
        "name": "Bryce Lee",
        "email": "brycelee@google.com",
        "time": "Fri Sep 25 16:43:01 2015 -0700"
      },
      "committer": {
        "name": "Bryce Lee",
        "email": "brycelee@google.com",
        "time": "Fri Sep 25 16:43:01 2015 -0700"
      },
      "message": "Add ThermalObserver system service to capture thermal state uevents.\n\nBug: 21445745\nChange-Id: I980d60b66ca51942a1fd62502d6cf1f09208fc3a\n"
    },
    {
      "commit": "03f46af3e194d58e2db61fe59e32d42bec8b8312",
      "tree": "ea09cc117264b397922126c3a044d14984acba75",
      "parents": [
        "96d9953f74ab16a9a63ebfe4119d5340ec734e87",
        "d04c6d19a589a2a0f60650675438c59ac6900f45"
      ],
      "author": {
        "name": "Alex Hills",
        "email": "ahills@google.com",
        "time": "Mon Sep 14 21:24:53 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 14 21:24:53 2015 +0000"
      },
      "message": "am d04c6d19: resolved conflicts for 693e11e5 to mnc-dr-dev-plus-aosp\n\n* commit \u0027d04c6d19a589a2a0f60650675438c59ac6900f45\u0027:\n  Cherry-pick system theme rebase to fix square UI on round watches\n"
    },
    {
      "commit": "d04c6d19a589a2a0f60650675438c59ac6900f45",
      "tree": "d95bcb8f52894ff373694bee7a40f1846fd5da51",
      "parents": [
        "e8c98b77854d39606960b0b6f5b5332c61e9a3d9",
        "693e11e56f5fc945d7af5d5213c6d844c7b88a5d"
      ],
      "author": {
        "name": "Alex Hills",
        "email": "ahills@google.com",
        "time": "Mon Sep 14 16:37:12 2015 -0400"
      },
      "committer": {
        "name": "Alex Hills",
        "email": "ahills@google.com",
        "time": "Mon Sep 14 17:03:58 2015 -0400"
      },
      "message": "resolved conflicts for 693e11e5 to mnc-dr-dev-plus-aosp\n\nChange-Id: I701841759a80f434a09b086492e817ca23a6a2e6\n"
    },
    {
      "commit": "3d2337eeb5c8b28bace281d049c5ca8cd13c8b70",
      "tree": "3b81a0833a501bff2a45d168853872f06a7bc632",
      "parents": [
        "5a45dc960b42eae66661665ff9a6bcb7e4a02c16"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 17:27:04 2015 -0400"
      },
      "committer": {
        "name": "Alex Hills",
        "email": "ahills@google.com",
        "time": "Mon Sep 14 10:56:02 2015 -0400"
      },
      "message": "Cherry-pick system theme rebase to fix square UI on round watches\n\nOur system themes were based on configurations that were added post-\ninit of the system theme.\n\nI96e695441543379e4d5fdf3cc6f18d9e6cf953b4 broke this, because there\nwas a race condition in the code for rebasing themes\n\nIf8fecde76d62738a8e55eddf898eafc468afdba2 (the cherry-picked commit)\nfixes the race condition and adds the rebasing back in.\n\nThis change cherry picks If8fecde76d62738a8e55eddf898eafc468afdba2.\n\nBug:23387146\nChange-Id: I0725028e48599fc6cd9731ae16c71474dd5827e5\n"
    },
    {
      "commit": "6d444185e55315a0111162609b1f619ee268bf3a",
      "tree": "03b65350ff700e459a9c9e4e434828f1b40ae21c",
      "parents": [
        "3d21421a440bb86dcd80bad8bc85fb1e859cd0d8",
        "fcf9ab5ab3e158cea2559ed4e7274dbfeb0a6e77"
      ],
      "author": {
        "name": "Yasuhiro Matsuda",
        "email": "mazda@google.com",
        "time": "Thu Sep 03 00:12:30 2015 +0900"
      },
      "committer": {
        "name": "Yasuhiro Matsuda",
        "email": "mazda@google.com",
        "time": "Thu Sep 03 00:12:30 2015 +0900"
      },
      "message": "resolved conflicts for merge of fcf9ab5a to master\n\nChange-Id: I69ad6e525430c5c4fc3c274b8bf6ebf653716124\n"
    },
    {
      "commit": "fcf9ab5ab3e158cea2559ed4e7274dbfeb0a6e77",
      "tree": "b6b618aff85b0f88983ee76f31aa71e6956c38e1",
      "parents": [
        "082fb1d8cb70952cda4d5ee1e79af3ee4572271a",
        "ebf9465d213336819b15e3b21d02afce64470d4f"
      ],
      "author": {
        "name": "Yasuhiro Matsuda",
        "email": "mazda@google.com",
        "time": "Wed Sep 02 14:31:26 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 02 14:31:26 2015 +0000"
      },
      "message": "am ebf9465d: resolved conflicts for merge of ef57e5e0 to stage-aosp-master\n\n* commit \u0027ebf9465d213336819b15e3b21d02afce64470d4f\u0027:\n  Add trace code to system server.\n"
    },
    {
      "commit": "ebf9465d213336819b15e3b21d02afce64470d4f",
      "tree": "c561ddc0ab2431a8e525858d9e3aa214db744e9a",
      "parents": [
        "96343073d63c72afa75057129abea4f0d4f8c103",
        "ef57e5e03b042065e69c65e910065df7306d930c"
      ],
      "author": {
        "name": "Yasuhiro Matsuda",
        "email": "mazda@google.com",
        "time": "Wed Sep 02 22:48:13 2015 +0900"
      },
      "committer": {
        "name": "Yasuhiro Matsuda",
        "email": "mazda@google.com",
        "time": "Wed Sep 02 22:57:53 2015 +0900"
      },
      "message": "resolved conflicts for merge of ef57e5e0 to stage-aosp-master\n\nChange-Id: I1c31b38936dc74619dea27f0d5eecab43360bb8c\n"
    },
    {
      "commit": "1ab43d5978813f56899dbd3115fd7d9f96b4fe55",
      "tree": "9d8489fee92e85ba986d741bcb0be0658cbd0a2b",
      "parents": [
        "bd4c482be9c060d92919080c37e0d14fca94d2aa"
      ],
      "author": {
        "name": "Yasuhiro Matsuda",
        "email": "mazda@google.com",
        "time": "Tue Jun 30 17:07:32 2015 +0900"
      },
      "committer": {
        "name": "Yasuhiro Matsuda",
        "email": "mazda@google.com",
        "time": "Thu Aug 27 12:22:07 2015 +0900"
      },
      "message": "Add trace code to system server.\n\n- Add TRACE_TAG_SYSTEM_SERVER for tracing system server code.\n- Add a few more tracing code to the code paths related to boot.\n\nBUG: 21739901\nBUG: 22207144\nChange-Id: I08b424d2f83783f512c3818394099909cd55f327\n"
    },
    {
      "commit": "7309b123c423504bb18e3d78dd22a36f7271676a",
      "tree": "8e9f8a1e3d21e35ba51c0510da94ba7226ea8c2d",
      "parents": [
        "8c0a4d0f8b7160e94395e35fc4d396a71c217cb8"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Mon Aug 17 18:34:13 2015 -0700"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Tue Aug 25 13:29:04 2015 -0700"
      },
      "message": "Leverage WindowManagerInternal for private communication.\n\nThis CL changes following four methods from direct calling of\nWindowManagerService to calling via WindowManagerInternal.\n- getInputMethodWindowVisibleHeight\n  (introduced by I0e920ee79c526c3aea6872b063cf294e2ab081c8)\n- saveLastInputMethodWindowForTransition\n  (introduced by Idf7700271cf882dfbf35c9d16f0f173a791221bc)\n- isHardKeyboardAvailable\n  (introduced by I8a6a4a7efce50bfaec114117e33f97f27b1ef950)\n- setOnHardKeyboardStatusChangeListener\n  (introduced by Ica768083f95c33dc1e494a28ba7d8b6eb989b0ef)\n\nThis CL does mechanical code moving and does not change any behaviors.\n\nBug: 22285167\nChange-Id: I08e506050a0e495d62236b46e487848c967d185d\n"
    },
    {
      "commit": "02e8c2d4188a99077686451b320e7d1860e49bd7",
      "tree": "cc44b1e87d12cab49e8e31347017ac88519270fe",
      "parents": [
        "c87ad53299eec33371bb9669c1484db19b4e5451",
        "395cd017e66b81f9b223f5310cce9b827d156b4c"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Thu Aug 13 20:06:18 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 13 20:06:18 2015 +0000"
      },
      "message": "Merge \"Rebase system theme on configuration change\""
    },
    {
      "commit": "ae61c26534a3dd3a71bc4c7ab3993e6923f1a201",
      "tree": "79df531a504a0e5e73c39fc3124bb6b277bf4b9c",
      "parents": [
        "05f40a6a9f0ae154ffc609b3e2584418dd2dddd3",
        "0d2e3d3ea3cd1bd0f77b3fdd8da6b17261cdd799"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 12 11:02:48 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 12 11:02:48 2015 +0000"
      },
      "message": "am 0d2e3d3e: am c42acbdb: am 088c4155: am 86b6d204: am bf88205b: Fall back to persist.sys.language/country if locale isn\\\u0027t set.\n\n* commit \u00270d2e3d3ea3cd1bd0f77b3fdd8da6b17261cdd799\u0027:\n  Fall back to persist.sys.language/country if locale isn\u0027t set.\n"
    },
    {
      "commit": "0d2e3d3ea3cd1bd0f77b3fdd8da6b17261cdd799",
      "tree": "74c0799e9f8843355a40fb47c340c09bfe42357d",
      "parents": [
        "556b1f7330654012e3bb868a9d7867e3331306b1",
        "c42acbdb65d89b1e5fc1cafde4cbe0996c104f7a"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 12 10:55:33 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 12 10:55:33 2015 +0000"
      },
      "message": "am c42acbdb: am 088c4155: am 86b6d204: am bf88205b: Fall back to persist.sys.language/country if locale isn\\\u0027t set.\n\n* commit \u0027c42acbdb65d89b1e5fc1cafde4cbe0996c104f7a\u0027:\n  Fall back to persist.sys.language/country if locale isn\u0027t set.\n"
    },
    {
      "commit": "d29382aaf0dc68eb5a41621fedabeca4406efe06",
      "tree": "a1c4099a7c3dbe76a5ca70b3ce878efd229ed13f",
      "parents": [
        "d03c38e7041759dda3c11fc26c691661cfbe8e8b",
        "bf88205bef88f78ade5c6830e6203aa343387820"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 12 10:39:16 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 12 10:39:16 2015 +0000"
      },
      "message": "am bf88205b: Fall back to persist.sys.language/country if locale isn\\\u0027t set.\n\n* commit \u0027bf88205bef88f78ade5c6830e6203aa343387820\u0027:\n  Fall back to persist.sys.language/country if locale isn\u0027t set.\n"
    },
    {
      "commit": "86b6d204a5321bf2874c2cbee3452e674605c21f",
      "tree": "14ec31a6fb8e13120480f4a352586037c16aa232",
      "parents": [
        "e950a4b22caaf849bfeb68768931e0e793877119",
        "bf88205bef88f78ade5c6830e6203aa343387820"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 12 10:39:13 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 12 10:39:13 2015 +0000"
      },
      "message": "am bf88205b: Fall back to persist.sys.language/country if locale isn\\\u0027t set.\n\n* commit \u0027bf88205bef88f78ade5c6830e6203aa343387820\u0027:\n  Fall back to persist.sys.language/country if locale isn\u0027t set.\n"
    },
    {
      "commit": "bf88205bef88f78ade5c6830e6203aa343387820",
      "tree": "77928a8c4c09d75061796e6025368f0943c4b26c",
      "parents": [
        "e19b76cbb50db816c535d6d4a5bf125f52c04eba"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Aug 11 15:40:34 2015 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 12 11:03:46 2015 +0100"
      },
      "message": "Fall back to persist.sys.language/country if locale isn\u0027t set.\n\nThis will prevent users from losing their language setting when they\ntake an OTA to M.\n\nbug: 23021286\nChange-Id: Ifb66f6bf6a940ab745edac709321f3009ec6eab4\n"
    },
    {
      "commit": "395cd017e66b81f9b223f5310cce9b827d156b4c",
      "tree": "d665a33d763c8898782442db260bda6be3f63e24",
      "parents": [
        "5894b434aaf30933c26eb44689970926d274ed19"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 17:27:04 2015 -0400"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 17:27:04 2015 -0400"
      },
      "message": "Rebase system theme on configuration change\n\nAlso makes native theme accesses thread-safe to avoid a race condition\nwhen modifying the theme off the UI thread. Since drawable loading can\noccur off the UI thread, we need to ensure Theme access is thread-safe\nanyway.\n\nThis reverts commit c12ec70def2a5682c6cd7fdb3adaa82cc34d5bf6.\n\nChange-Id: If8fecde76d62738a8e55eddf898eafc468afdba2\n"
    },
    {
      "commit": "7bea76cecf14a1fcc5fe2847f6629a8c8901b938",
      "tree": "05c6793949ffb25766b0ecf5304089473ce106dd",
      "parents": [
        "c6659c3d649e1b3cd81b398c0d1fd601cb266494",
        "3e384531bed8f80867ce1bab9c8de315865be824"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 18:59:42 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 11 18:59:42 2015 +0000"
      },
      "message": "am 3e384531: am 1743988c: am 6c3a468c: am e720297f: am b4eb0640: Merge \"Avoid use-after-free race condition when rebasing theme\" into mnc-dev\n\n* commit \u00273e384531bed8f80867ce1bab9c8de315865be824\u0027:\n  Avoid use-after-free race condition when rebasing theme\n"
    },
    {
      "commit": "3e384531bed8f80867ce1bab9c8de315865be824",
      "tree": "2e44a983db008634e26093216e388d457e4b4e67",
      "parents": [
        "5e3e4f9b5832c4ddf3a4ad1944622966351e6ffe",
        "1743988cd7647af8c64c961d4ca5e9d4b4b7bc00"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 18:53:13 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 11 18:53:13 2015 +0000"
      },
      "message": "am 1743988c: am 6c3a468c: am e720297f: am b4eb0640: Merge \"Avoid use-after-free race condition when rebasing theme\" into mnc-dev\n\n* commit \u00271743988cd7647af8c64c961d4ca5e9d4b4b7bc00\u0027:\n  Avoid use-after-free race condition when rebasing theme\n"
    },
    {
      "commit": "3288e632501e30b10786f377be07f8a3f343cad3",
      "tree": "effc4b10ad3aa756ab05ac4a2eac18d6ee480e06",
      "parents": [
        "f18a0cfe13f5fa920be966d1bfc30ec2d37c3257",
        "b4eb06402fba62f94bb16cbe433fe99a8df7cb18"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 18:32:05 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 11 18:32:05 2015 +0000"
      },
      "message": "am b4eb0640: Merge \"Avoid use-after-free race condition when rebasing theme\" into mnc-dev\n\n* commit \u0027b4eb06402fba62f94bb16cbe433fe99a8df7cb18\u0027:\n  Avoid use-after-free race condition when rebasing theme\n"
    },
    {
      "commit": "e720297fd89d39325a34f0d8f54e55971aec7269",
      "tree": "bc41a9c7c6a6ab38af04e7866e3c965cce12cbef",
      "parents": [
        "5bba07eb01d923beea173712295d6b10c9762400",
        "b4eb06402fba62f94bb16cbe433fe99a8df7cb18"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 18:31:48 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 11 18:31:48 2015 +0000"
      },
      "message": "am b4eb0640: Merge \"Avoid use-after-free race condition when rebasing theme\" into mnc-dev\n\n* commit \u0027b4eb06402fba62f94bb16cbe433fe99a8df7cb18\u0027:\n  Avoid use-after-free race condition when rebasing theme\n"
    },
    {
      "commit": "c12ec70def2a5682c6cd7fdb3adaa82cc34d5bf6",
      "tree": "675a4890776210fa59308c912377c629a389433b",
      "parents": [
        "1fbc1b3b4b742cdba25d32d65a9813933a37005f"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 10:26:08 2015 -0400"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Aug 11 10:26:08 2015 -0400"
      },
      "message": "Avoid use-after-free race condition when rebasing theme\n\n... by never rebasing the theme. We don\u0027t need to do this unless the\nsystem theme is configuration-dependent, which it is not currently.\n\nBug: 22943781\nChange-Id: I96e695441543379e4d5fdf3cc6f18d9e6cf953b4\n"
    },
    {
      "commit": "ea6e001e3182120ed790ff07b446ad4feece45da",
      "tree": "6bbc024e8bf36b979db1889eebc3081dd57f7186",
      "parents": [
        "3ad8a7840b034426ea5cd5e48605bbcedf059a1c",
        "6f52ee259201c320fe69004623efd1748874f628"
      ],
      "author": {
        "name": "Zhentao Sun",
        "email": "robinvane@google.com",
        "time": "Thu Jul 23 22:08:05 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 23 22:08:05 2015 +0000"
      },
      "message": "am 6f52ee25: am e965289b: am f26a9a20: am c6cd1f9a: Added service that listens for gestures.\n\n* commit \u00276f52ee259201c320fe69004623efd1748874f628\u0027:\n  Added service that listens for gestures.\n"
    },
    {
      "commit": "6f52ee259201c320fe69004623efd1748874f628",
      "tree": "39f970919a35476588fd72bea14d6af0b82f3f33",
      "parents": [
        "a1d61552f99bfa4720bf3f51d10adfe2b16c5dc6",
        "e965289b57eb1782580bc5a6bc153d508b7176be"
      ],
      "author": {
        "name": "Zhentao Sun",
        "email": "robinvane@google.com",
        "time": "Thu Jul 23 21:50:08 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 23 21:50:08 2015 +0000"
      },
      "message": "am e965289b: am f26a9a20: am c6cd1f9a: Added service that listens for gestures.\n\n* commit \u0027e965289b57eb1782580bc5a6bc153d508b7176be\u0027:\n  Added service that listens for gestures.\n"
    },
    {
      "commit": "c6cd1f9a83b2807ef7434b6775a07e1e9208d4e0",
      "tree": "dc92ab99fec7f7bd61b1e6ace47a2c2113a69924",
      "parents": [
        "58adc7ad48990f2ffa0d4858bd6910dd9eb6aabc"
      ],
      "author": {
        "name": "Zhentao Sun",
        "email": "robinvane@google.com",
        "time": "Tue Jul 21 17:43:53 2015 -0700"
      },
      "committer": {
        "name": "Zhentao Sun",
        "email": "robinvane@google.com",
        "time": "Wed Jul 22 17:42:41 2015 -0700"
      },
      "message": "Added service that listens for gestures.\n\nAdded the GestureLauncherService that listens for camera launch gesture\nand starts the camera app.\nOEMs need to specify the sensor type of the camera launch gesture in\ntheir overlays.\nIn the future, we can add more gesture support in this service.\n\nChange-Id: I0769e7ca71e08bd9159aacf29bdcefd316efd2f0\n"
    },
    {
      "commit": "85235aae1c46ab5f2e22ddbb80c8451b10fae662",
      "tree": "c89700a50ae2320c7bd8b6e23d7b609fb122866f",
      "parents": [
        "66754545e7e6b1fc3f146e29c04ba7a36cbc0219",
        "e72d0d47b8d495f565cfcfb22dc0de2d35103c2e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 07 15:53:33 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 07 15:53:33 2015 +0000"
      },
      "message": "am e72d0d47: am 66c8a2f9: am 0254af6f: Merge \"Fix \"Bluetooh\" logging typo.\"\n\n* commit \u0027e72d0d47b8d495f565cfcfb22dc0de2d35103c2e\u0027:\n  Fix \"Bluetooh\" logging typo.\n"
    },
    {
      "commit": "0be2ab3b5e22a55bf6571f6cd0f1d7effbb648e4",
      "tree": "7a7993e506a4130c9ebeb3afed6e4a44abca473e",
      "parents": [
        "e6c99bfbe3519fd8db302b504e0a8a19ba2ea0af",
        "66c8a2f92acedaa05639ceb0737b95be2fd56281"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 07 15:48:59 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 07 15:48:59 2015 +0000"
      },
      "message": "am 66c8a2f9: am 0254af6f: Merge \"Fix \"Bluetooh\" logging typo.\"\n\n* commit \u002766c8a2f92acedaa05639ceb0737b95be2fd56281\u0027:\n  Fix \"Bluetooh\" logging typo.\n"
    },
    {
      "commit": "e72d0d47b8d495f565cfcfb22dc0de2d35103c2e",
      "tree": "549fd96c4b5d2392976c071847586634c4d170f4",
      "parents": [
        "57b4531d227ad598bce4b59d8ece7ddf2343f5a9",
        "66c8a2f92acedaa05639ceb0737b95be2fd56281"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 07 06:31:40 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 07 06:31:40 2015 +0000"
      },
      "message": "am 66c8a2f9: am 0254af6f: Merge \"Fix \"Bluetooh\" logging typo.\"\n\n* commit \u002766c8a2f92acedaa05639ceb0737b95be2fd56281\u0027:\n  Fix \"Bluetooh\" logging typo.\n"
    },
    {
      "commit": "7271613ed6d0c8bdf6fe146cec7d22b485ca1100",
      "tree": "9cdddba93cc8fd6255d519f21be1f13888016830",
      "parents": [
        "16d520fce6a3cecdc6b50e184a00b9585b86e512"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 06 22:10:36 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 06 22:10:36 2015 -0700"
      },
      "message": "Fix \"Bluetooh\" logging typo.\n\nChange-Id: I2b9aea64f1b53e100ead6e71835bf5935b410eb9\n"
    },
    {
      "commit": "86b81e91373e3d035b7afb69f1792e32f7f5fcd7",
      "tree": "96b7f2a5119aa0432bc2cf2bfc39a7a9bc9a537b",
      "parents": [
        "7b293b5556e78028449e287f275f32a1ad298293",
        "d1e2789b5f6c7d412763649d75ce029886a83d53"
      ],
      "author": {
        "name": "Bart Sears",
        "email": "bsears@google.com",
        "time": "Sat Jul 04 00:15:01 2015 -0700"
      },
      "committer": {
        "name": "Bart Sears",
        "email": "bsears@google.com",
        "time": "Sat Jul 04 00:15:01 2015 -0700"
      },
      "message": "resolved conflicts for merge of d1e2789b to master\n\nChange-Id: Ibfbae4ec1d692854a13eaa09deac3134c3524126\n"
    },
    {
      "commit": "658bf2fa6d3bb1121c3c96abb62ca01d3abe95db",
      "tree": "d7731d3d67f19b6a78565cdedaa4cc72bd5a3e0b",
      "parents": [
        "d3ecb3e6f04a0f76c886238af6bef1d10b987a42"
      ],
      "author": {
        "name": "Miao Chou",
        "email": "mcchou@google.com",
        "time": "Fri Jun 26 17:14:35 2015 -0700"
      },
      "committer": {
        "name": "Andre Eisenbach",
        "email": "eisenbach@google.com",
        "time": "Wed Jul 01 19:09:44 2015 +0000"
      },
      "message": "Add BluetoothService to reduce resuming time after reboot\n\nAs a subclass of SystemService, BluetoothService wraps around\nBluetoothManagerService to unlock Auto-enabling Bluetooth earlier by overriding\nonBootPhase() and removes the need to wait for BOOT_COMPLETED message.\n\nBug:21705209\nChange-Id: I2acc41370a750d8416e11e662e06392326741d2c\n"
    },
    {
      "commit": "70f6c38644a4a6e28c016c265e6987bf00dd61f1",
      "tree": "d5d639203d244ccc7d8081008682ab37a6ad729c",
      "parents": [
        "05298735d333d3335d07ac96aa9daca797ff3f45"
      ],
      "author": {
        "name": "Xiaohui Chen",
        "email": "xiaohuic@google.com",
        "time": "Tue Apr 28 14:21:43 2015 -0700"
      },
      "committer": {
        "name": "Xiaohui Chen",
        "email": "xiaohuic@google.com",
        "time": "Tue Jun 23 15:25:37 2015 -0700"
      },
      "message": "Introduce system user and primary user.\n\nBug: 19913735\nChange-Id: I2c7855915d778cf80a7154314321ddd90e2eaaac\n"
    },
    {
      "commit": "15d48a16f645509cb0c6a1f3abf52ddd233cd8b5",
      "tree": "0c9a53fda50dcca7549cd29eb3ac9c0151fb0830",
      "parents": [
        "9a08fe2aca44f190162b198a726bc406ed19c1c7"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Thu Jun 18 15:15:16 2015 -0700"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Thu Jun 18 15:15:16 2015 -0700"
      },
      "message": "DO NOT MERGE: Remove DayNight theme\n\nDo not go gentle into that good night,\nOld age should burn and rave at close of day;\nRage, rage against the dying of the light.\n\nThough wise men at their end know dark is right,\nBecause their words had forked no lightning they\nDo not go gentle into that good night.\n\nBug: 21854466\nChange-Id: I0b7cd116c23f7df88e94f31b3aee7dd22a102804\n"
    },
    {
      "commit": "2ff4d9277446e45ad467784c536c4b1353e0292f",
      "tree": "9683afea58d684f4e7f84a47f0c4f85c35cfa977",
      "parents": [
        "1738f4e254441e75380b8eef784a8066e159d467",
        "485c2f8c5715c12bd84a20f9746ce40a1ff15e70"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 12 21:02:07 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 12 21:02:07 2015 +0000"
      },
      "message": "am 485c2f8c: am 4f4d54f3: am 1c24a8cd: Merge \"If we\\\u0027re out of space, retry background dexopting later\" into mnc-dev\n\n* commit \u0027485c2f8c5715c12bd84a20f9746ce40a1ff15e70\u0027:\n  If we\u0027re out of space, retry background dexopting later\n"
    },
    {
      "commit": "2c9655b3d4c1fb0687baa14730c6d97ab5a56789",
      "tree": "5cedbe4d7e5ec6454ecd617f0bf4d15508b4586d",
      "parents": [
        "3aa16d761efb970f16aa913dcda9a3cc458cc227"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 12 13:06:45 2015 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 12 13:06:45 2015 -0700"
      },
      "message": "If we\u0027re out of space, retry background dexopting later\n\nGive it 4 hours to give the user time to do stuff, then retry;\nrepeat until we have space to work in.\n\nBug 20468442\n\nChange-Id: Id4b11abcc38a9e2a50a062f0067a13ce0ae831ad\n"
    },
    {
      "commit": "b8850932d766007b7a177ad2cbcaf08bfc1dcc9c",
      "tree": "fb66cf920d55ec16525695ad00dbcec38b67be57",
      "parents": [
        "037926125b0a359ddd880b1911e7f0df4cad5ae4",
        "3c27a2303fdb6b222b7b7628fea7bc3c159990ff"
      ],
      "author": {
        "name": "Steve Paik",
        "email": "spaik@google.com",
        "time": "Thu Jun 11 15:30:02 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 11 15:30:03 2015 +0000"
      },
      "message": "Merge \"Disable AssetAtlasService when PRELOAD_RESOURCES is turned off\""
    },
    {
      "commit": "3c27a2303fdb6b222b7b7628fea7bc3c159990ff",
      "tree": "86815c92fe009cadee4bf58eb5e7e705f8901080",
      "parents": [
        "5d1c54e777786e5de68b1148d883e4054d508c98"
      ],
      "author": {
        "name": "Steve Paik",
        "email": "spaik@google.com",
        "time": "Wed Jun 10 18:25:44 2015 -0700"
      },
      "committer": {
        "name": "Steve Paik",
        "email": "spaik@google.com",
        "time": "Wed Jun 10 18:25:44 2015 -0700"
      },
      "message": "Disable AssetAtlasService when PRELOAD_RESOURCES is turned off\n\nChange-Id: Ie77810219c8d5dbff7e9364b60db2d1ea50bd685\n"
    },
    {
      "commit": "0935f3ce512a62f943d2cc4daa65145ad6937c34",
      "tree": "6f6e6830d351f0adc857d897d9391783b0822126",
      "parents": [
        "11a8d67fbbaae0c55e1b3269d89d03cac0f3729d"
      ],
      "author": {
        "name": "Tim Kilbourn",
        "email": "tkilbourn@google.com",
        "time": "Thu May 28 11:48:43 2015 -0700"
      },
      "committer": {
        "name": "Tim Kilbourn",
        "email": "tkilbourn@google.com",
        "time": "Thu Jun 04 09:57:38 2015 -0700"
      },
      "message": "Refactor DropBoxManagerService as a SystemService.\n\nMove the binder stub inside the service and inherit from SystemService\nto take advantage of SystemServiceManager.\n\nChange-Id: Ic6fff50ccfcf6c9626ffca8d61f627c055608953\n"
    },
    {
      "commit": "e54d245b993e1347cb32c23a6bdc907a45fab324",
      "tree": "be087de6d12733ca9800724ac77103a0b2173964",
      "parents": [
        "424681e43e454bfcbceb863ddccb875ea57ec26f"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Wed May 06 10:41:43 2015 -0700"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Wed May 06 10:41:43 2015 -0700"
      },
      "message": "Improve keying for theme caches, rebase system theme on config change\n\nThemes now use an array of applied styles rather than a String to store\ntheir history. They are keyed based on a hash code computed from the\nhistory of applied styles. The themed drawable cache has been abstracted\nout into its own class.\n\nAlso updates system context to use DayNight as the default and ensures\nthat GlobalActions uses the correct context, which exercises the change.\n\nCTS tests have been added in another CL.\n\nBug: 20421157\nChange-Id: I9eb4b7dffd198ad24d02f656eaf0839570b59caa\n"
    },
    {
      "commit": "d1808401ca3bfd6b6b9a975c1e739b194d18f849",
      "tree": "50c16a5c966772fd3b3ac4f7d2e79c97252935c7",
      "parents": [
        "44b60be189183138437a3faf9a73388af0efcf44",
        "059ded5a7b7389b7eefc2502bd712228931ed107"
      ],
      "author": {
        "name": "Prerepa Viswanadham",
        "email": "dham@google.com",
        "time": "Tue May 05 01:05:57 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 05 01:06:38 2015 +0000"
      },
      "message": "Merge changes from topic \u0027mwd-merge-050415\u0027 into mnc-dev\n\n* changes:\n  Merge commit \u0027b6f59f4\u0027 into master_merge\n  Merge commit \u0027f6db0ce\u0027 into master_merge\n  Merge commit \u002717455a3\u0027 into master_merge\n  Merge commit \u0027b4d5b32\u0027 into master_merge\n  Merge commit \u0027a1a2fa7\u0027 into master_merge\n  Merge commit \u00278dfdb98\u0027 into master_merge\n  Merge commit \u0027eba66c3\u0027 into master_merge\n"
    },
    {
      "commit": "b9d71a6f89b1183f6389b1774652445a420c6cbf",
      "tree": "b6f17102b2f86b40630e4a7cd681721797a8f324",
      "parents": [
        "9fc943d1a69f2ab0f6d8285b09aef7e344a1fd1a"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Apr 30 10:38:13 2015 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri May 01 13:56:04 2015 -0700"
      },
      "message": "Add body sensors app op - framework base\n\nChange-Id: Idd5cd573fab3405e5b2a6e51d2d9d115650826e9\n"
    },
    {
      "commit": "df7f02b6e098dbcda6a6d52252c31ee2e02d8e00",
      "tree": "7c2b68e5cbade523fbffc9164415c8f65c9ec0ca",
      "parents": [
        "5a63f6c222874109ddbf4d9732d911532e0fea0c",
        "ad61b8336aa9627a6ae19580bbdc370dc8bd6810"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Thu Apr 30 12:47:20 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 30 12:47:20 2015 +0000"
      },
      "message": "am ad61b833: Merge \"Fix no vibration during shutdown.\"\n\n* commit \u0027ad61b8336aa9627a6ae19580bbdc370dc8bd6810\u0027:\n  Fix no vibration during shutdown.\n"
    },
    {
      "commit": "0b4daca9ba54b7252ea8c159218391380eb00c8a",
      "tree": "f613c1a320934f01ec040427c84ee00371cb13fe",
      "parents": [
        "5686780404a41901d226cc7ba506c1c0ba284713"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 27 09:47:32 2015 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 29 12:38:09 2015 -0700"
      },
      "message": "Implement user-settable power save whitelist.\n\nThe whitelist is now maintained by DeviceIdleController,\nwhich is moving out into its own independent system service.\nNetwork stats now queries it for the whitelist, instead of\ncollecting that itself.\n\nAlso did a few improvements in alarm manager -- made the\ncode for moving alarms out of the pending list more robust,\nand fixed the debug output to always print the contents of\nthe pending list even if we aren\u0027t in a pending state.  (That\nwould have helped me identify the problem much earlier.)\n\nChange-Id: I0f7119d4c553c3af4d77b2f71246fa6e2c13c561\n"
    },
    {
      "commit": "5d6443bf7c087167e47ea39b13e6af09cb43ad97",
      "tree": "0415e23f50ea376a96c4b28df732a238bc435f07",
      "parents": [
        "834a91dda7724974fbd93bc65b9dd7178edddcdd"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 10 20:15:01 2015 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 13 01:51:22 2015 -0700"
      },
      "message": "Set initial screen brightness earlier in the boot process.\n\nPreviously we had to wait for systemReady before setting the brightness\ndue to the order in which the display power controller was initialized.\nUnfortunately it could take us a rather long time to reach that stage,\nparticularly after an OTA where the screen would remain at maximum\nbrightness for minutes while \"Optimizing Apps\".\n\nThis change moves the brightness backlight setting code deeper\ninto the display manager which has a couple of nice side-benefits\nin that it now becomes much easier to coordinate display power mode\nchanges with display backlight changes.  So this change also resolves\nsome issued with changing the backlight while in DOZE_SUSPEND and\nensuring that backlight changes generally end up being performed\nbefore executing a power mode change except in the case where the\ndisplay needs to come out of suspend first.  (So now the backlight\nwill be set before entering DOZE from the ON state.)\n\nDeleted some dead code in LightService which was in the way.\n\nBug: 19029490\nChange-Id: I494b5223e676248daf2ff8be3ec338845977f73c\n"
    },
    {
      "commit": "9d21ee5d7755755cc5695a9d7cea00a05a4b92aa",
      "tree": "6209cce943f5000f6ce4b4d03ac2ad075d813b4d",
      "parents": [
        "75e4f353835d62c8625fb145e3aba1d442f93a90"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Fri Mar 20 22:18:55 2015 -0700"
      },
      "committer": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Tue Mar 31 12:01:22 2015 -0700"
      },
      "message": "Add CameraService to system server.\n\n- Adds a camera service to system server that forwards events to the\n  mediaserver camera service.\n- Notify the camera service when the device user changes.\n\nBug: 19186859\nChange-Id: I172a2ce46c8e8a131ae7e8dd99d60c5f4f0d6668\n"
    },
    {
      "commit": "c74e289a6537227ab80fa59da9d5d6f88dc9fe33",
      "tree": "ea311fc88c57608572ad1d51b57b454a8cdba729",
      "parents": [
        "6199bffef2eca134c44f0f56f8ddf9f0b8f41319",
        "edc524c90506d80e0fc5fb67e8de7b8f3ef53439"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Mar 30 19:39:25 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 30 19:39:27 2015 +0000"
      },
      "message": "Merge \"Add GraphicsStatsService\""
    },
    {
      "commit": "5781cd5b218dc3e5a19d8f69e6fb9f310bed4df6",
      "tree": "7c74f6c49adbe1da5d4b580bbdd69561116f76b9",
      "parents": [
        "1e650e26a7bb2f02635530a46ecd715f9911d40e"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Mar 27 13:23:41 2015 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Mar 27 13:23:41 2015 -0700"
      },
      "message": "Make the MIDI Manager optional, enabled by \"android.software.midi\" feature\n\nChange-Id: I76d442ea28beea4b9e2876bfef501d8f61403702\n"
    },
    {
      "commit": "edc524c90506d80e0fc5fb67e8de7b8f3ef53439",
      "tree": "098c18daa80655fe0fa3faab7c39332685c163ef",
      "parents": [
        "1cef4196886b0cc1238111d396c1e3665a5fd2ae"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 18 15:24:33 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Mar 27 11:50:56 2015 -0700"
      },
      "message": "Add GraphicsStatsService\n\nMore S\u0027s for More Speed\n\nSplit JankTracker\u0027s backing data from the\nclass to allow for data relocation to/from ashmem regions\n\nPack the jank tracking data to fit in 256 bytes\n\nChange-Id: Ife86a64b71a328fbd0c8075fe6a0404e081f725b\n"
    },
    {
      "commit": "221d2cbf2f418be8de22f5cf3d79a25be1b8d1be",
      "tree": "fb2139c98caa4c739e633b4c45402add6747d63c",
      "parents": [
        "e4df25eded03c110e5feca6ba811ae10dd03735c",
        "b4f01b966bd2ebf89623f9c65462b8b8b7034461"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Mar 24 22:30:13 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 24 22:30:14 2015 +0000"
      },
      "message": "Merge \"Remove the ability to disable audio service.\""
    },
    {
      "commit": "b4f01b966bd2ebf89623f9c65462b8b8b7034461",
      "tree": "ca779ab99ad750e0f90748d282ecfbc504622e2c",
      "parents": [
        "1cef4196886b0cc1238111d396c1e3665a5fd2ae"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Mar 24 12:40:15 2015 -0400"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Mar 24 17:22:13 2015 -0400"
      },
      "message": "Remove the ability to disable audio service.\n\nRunning in a configuration without audio service is not fully tested.\nRemove the configuration option for now. Also remove unused delegation\nlayer in SoundPool.\n\nBug: 19891112\nChange-Id: I47be0e32d54b8ef8fa25cf47b85eacf8a4969500\n"
    },
    {
      "commit": "88e98dfa59e68a860d8c3b462ec03bc0b06d6b5c",
      "tree": "10e846a1db4f2307eaa5a32c920e2e9ec0aee79b",
      "parents": [
        "e7f931c4505a6bd62e01bef5193dd724571a672b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 23 13:29:14 2015 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 24 11:03:49 2015 -0700"
      },
      "message": "More work on device idle mode.\n\n- There is now an API for people to find out about\n  its state.\n- Moved DeviceIdleController to be closer to the\n  power manager implementation, since they are\n  closely related.\n- Job scheduler now knows about idle state and doesn\u0027t\n  run jobs while the device is idle.\n- Battery stats now keeps track of \"idling\" vs \"idle mode\".\n  Idling is when we consider the device to be idle,\n  independent of whether we are actually in deep idle mode.\n  This allows us to keep track of longer-term changes\n  independently of cycling in and out of idle mode.\n- Battery stats also now keeps track of package changes in\n  its daily stats.\n- Small optimization to network policy manager service to\n  not touch uids that do not have the NETWORK permission.\n\nChange-Id: I0b3304fb3722c78cdfdd0c1eada7369ece7cbcf9\n"
    },
    {
      "commit": "356176177633a619f4a916248536e4e7a5fb9b2e",
      "tree": "32893c6fc11bae091e7ad4daa0e53c9e9757f726",
      "parents": [
        "2a16460c7c914729e9c256ce39d681524d53b7dc",
        "05199e83a460683e2af06212b0dc7310647e8502"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 23 18:33:08 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 23 18:33:10 2015 +0000"
      },
      "message": "Merge \"Set the appliance (tv/watch) in the configuration earlier\""
    },
    {
      "commit": "bf2673384cdea54eef2ca1c3e6ee35f5a3ce0e8a",
      "tree": "0439a8402f2e2bd7c33235abb0f62b05f2797a53",
      "parents": [
        "afa10ad39a7effd964d6afc83dab891e98856e1d",
        "56e629322f0739a04c8ff48915226ecf36a13b44"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Mar 22 20:03:54 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Mar 22 20:03:55 2015 +0000"
      },
      "message": "Merge \"Bring MountService into the SystemService world.\""
    },
    {
      "commit": "56e629322f0739a04c8ff48915226ecf36a13b44",
      "tree": "b19a76026e7aacd9809487f3a51e22aa1a99b22f",
      "parents": [
        "ed7cfb67e7e697e544ac1220170af741e9e117d6"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sat Mar 21 20:41:00 2015 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sat Mar 21 20:41:00 2015 -0700"
      },
      "message": "Bring MountService into the SystemService world.\n\nChange-Id: I7f7db49ff373b199f7b81f184a7c62bee682af67\n"
    },
    {
      "commit": "05199e83a460683e2af06212b0dc7310647e8502",
      "tree": "4848a34dfcd33fdccddaa9595c767b2deeb75adf",
      "parents": [
        "f9eb4b90fe4b00f9f9c8091eb6080d027a6fac9a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 19 14:37:11 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 19 14:40:25 2015 -0700"
      },
      "message": "Set the appliance (tv/watch) in the configuration earlier\n\nSome UI is displayed (boot/optimizing) before the configuration\nhas been completely set. This noteably happens for watches and\nTVs because UIModeManagerService hasn\u0027t started yet.\n\nUIModeManagerService is started earlier, and its dependency\nTwilightService is loaded during the \"all system services ready\"\nboot phase.\n\nb/18388692\n\nChange-Id: Iabdf8ac3eb04ebcb44779d752e19042769cc65c6\n"
    },
    {
      "commit": "8ad2af7e5b28f71e7bdfc1bb097937c6c1d22b18",
      "tree": "9b954b257d7c6e8ea50a4b7fb32e69cad5a0ad99",
      "parents": [
        "27eac1d58fe0b7ca3a2e27f5ed64eff232745f45"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 17 17:00:24 2015 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Mar 19 11:10:55 2015 -0700"
      },
      "message": "First stab at device idle mode.\n\nIntroduce a new device idle controller service that\nmonitor\u0027s the device state and determines when to go\nin to idle mode.  When in idle mode, all we do right\nnow is turn off network access the same as we do for\npower save mode.  Many more things should come in the\nfuture -- stopping the alarm manager from scheduling\n(most) alarms, telling GmsCore for it to stop doing\nstuff, etc.\n\nBattery stats now has state tracking for devie idle\nmode, as well as events for the reasons we can come\nout of idle mode (significant motion or the device\nbecoming active).  Also added new events noting when\npackages are installed.\n\nRenamed the \"low power\" event in battery stats to\n\"power save\" because the former was just way too\nconfusing.\n\nFinally, fix buffer size reading kernel wake locks.\n(Stupidly, just increasing the buffer size.  Ideally\nwe should try to be smarter and grow our buffer to\nfit the data available, but I\u0027ll leave that for\nanother time.)\n\nChange-Id: I0be2062466c83ee9d890c6cf5a228d9cc4090eca\n"
    },
    {
      "commit": "d3b371755df509cabbc5b4451df83309be5439b0",
      "tree": "70d3cd4df91e053459d63cdbc1d1a41c1a25f45b",
      "parents": [
        "28e6aeca3aad075ef4fd7aab08cd1ad1ff9eb555"
      ],
      "author": {
        "name": "riddle_hsu",
        "email": "riddle_hsu@htc.com",
        "time": "Thu Mar 19 01:11:55 2015 +0800"
      },
      "committer": {
        "name": "Riddle Hsu",
        "email": "riddle_hsu@htc.com",
        "time": "Wed Mar 18 19:01:36 2015 +0000"
      },
      "message": "Fix no vibration during shutdown.\n\nIn ShutdownThread:rebootOrShutdown, the vibrator is created\nby \"new SystemVibrator()\" which will use default constructor\nof Vibrator.\n\nAnd because system server is not bound application,\nActivityThread.currentPackageName will be null.\nThen the member mPackageName of Vibrator is null.\n\nWhen doing vibration:\nVibratorService.startVibrationLocked\n -\u003e mAppOpsService.startOperation\n -\u003e getOpsLocked (null package will get null op)\n -\u003e return MODE_ERRORED\n -\u003e no vibration\n\nhttps://code.google.com/p/android/issues/detail?id\u003d160830\n\nPass null context in SystemServer.performPendingShutdown\nbecause vibrator service is not ready, and from the call\nsequence, there is no available context to use.\n\nChange-Id: I3e0175ba6dc2e1a92787873eda4461fba6e89783\n"
    },
    {
      "commit": "0ea7b1b094def6b4db6b9b50df2e7dbf44c5c5ad",
      "tree": "e819b1a3b1daf6d99fba0f07a7b632a99d22b5fd",
      "parents": [
        "1569f98ce18c696d624af56a22a47f772d51b7c8"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Nov 25 21:52:12 2014 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Mar 05 16:06:43 2015 +0900"
      },
      "message": "Enable Ethernet if the device has FEATURE_USB_HOST.\n\nAny device that supports USB OTG is capable of running Ethernet\nvia a USB OTG cable and Ethernet to USB adapter.\n\nCurrently, we only start the Ethernet system service if the\ndevice has FEATURE_ETHERNET, but this requires that every device\nexplicitly declare FEATURE_ETHERNET, which causes bugs like\nhttp://b/18515146 , where the L OTA broke Ethernet on nakasi.\n\nTherefore, start the Ethernet service on all devices that have\nFEATURE_USB_HOST.\n\nBug: 18515146\nChange-Id: I3b4e85d1ad8e1aea9baa046a27f5b4dd68c42028\n"
    },
    {
      "commit": "08c7116ab9cd04ad6dd3c04aa1017237e7f409ac",
      "tree": "6ddb0659a3ecd024e0165ba050940bc40ea257fe",
      "parents": [
        "3062e57072145ba5e71ba8b2cf565d3453db04a7"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Sat Feb 28 13:12:17 2015 -0500"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Sat Feb 28 14:47:49 2015 -0500"
      },
      "message": "Remove unused imports in frameworks/base.\n\nChange-Id: I031443de83f93eb57a98863001826671b18f3b17\n"
    },
    {
      "commit": "6156017c2217d0fbbbb03434986250ec6bbd69d8",
      "tree": "2bf29bdfad945edeeb161b9ef9bb6b8108093042",
      "parents": [
        "7d85bc4c435bc37284a814fb8baf53980396ab5b"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Fri Feb 06 19:46:04 2015 -0500"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Mon Feb 09 17:13:38 2015 -0500"
      },
      "message": "Move AudioService to services.\n\n...and a few dependencies. Move remaining shared items to AudioSystem.\n\nChange-Id: Ib9623ff867678d34977337856bb0156e8cdaeeb5\n"
    },
    {
      "commit": "10024b3dc12a8552c1547b67810c77b865045cc8",
      "tree": "ad7f453999f8387077c40251355781e0d15cb4d1",
      "parents": [
        "34b064a1406ebb2eb10b5b1f24c845891748c238"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu Dec 11 13:44:20 2014 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Jan 14 16:51:54 2015 -0800"
      },
      "message": "MidiManager updates:\n\nMIDI ports are now implemented as file descriptors directly between the sender\nand receiver, so the MidiService is no longer in the message path.\n\nTo facilitate the above, each port has its own file descriptor, rather than multiplexing\nall ports on a device through a single socket.\n\nAdded a new class MidiDeviceServer, which is used by implementors of MIDI devices.\nThis replaces the MidiVirtualDevice class (which only was included in changes that were reviewed but never submitted).\n\nThe USB MIDI implementation has moved from the MIDI service to the USB service.\nThe USB MIDI implementation uses MidiDeviceServer as its interface, so we now have a common\ninterface for all MIDI device implementations.\n\nChange-Id: I8effd1583f344beb6c940c3a24dbf20b477a6436\n"
    },
    {
      "commit": "8c07abe2206bf885d9ecf3eb8659bddd6e2c6633",
      "tree": "a8592ce8d1d20b6a1e9a8927a67643dea1fc7ff8",
      "parents": [
        "dc460d3512d0861404bb7a076109f77f5c78ad82",
        "02775fca2b78af8089e9f50575ca639898f4f21c"
      ],
      "author": {
        "name": "Santos Cordon",
        "email": "santoscordon@google.com",
        "time": "Tue Dec 09 23:20:31 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 09 23:20:31 2014 +0000"
      },
      "message": "am 02775fca: am 8dd185b0: am 5d2c1e69: (Telecom-system part 3) Adding Telecom Loader Service\n\n* commit \u002702775fca2b78af8089e9f50575ca639898f4f21c\u0027:\n  (Telecom-system part 3) Adding Telecom Loader Service\n"
    },
    {
      "commit": "02775fca2b78af8089e9f50575ca639898f4f21c",
      "tree": "90d0667739942a10de6bec60c4576c283be2f6db",
      "parents": [
        "ea06d6ceb70a0a091cae674bb7296bb470f7e594",
        "8dd185b08fae8d41bec558ab5a63012454cbb78e"
      ],
      "author": {
        "name": "Santos Cordon",
        "email": "santoscordon@google.com",
        "time": "Tue Dec 09 00:18:08 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 09 00:18:08 2014 +0000"
      },
      "message": "am 8dd185b0: am 5d2c1e69: (Telecom-system part 3) Adding Telecom Loader Service\n\n* commit \u00278dd185b08fae8d41bec558ab5a63012454cbb78e\u0027:\n  (Telecom-system part 3) Adding Telecom Loader Service\n"
    },
    {
      "commit": "5d2c1e69ecb851121177396ac376dee1fb41d421",
      "tree": "a51a21da5660fa306eb1f6da4a88c17edd59981a",
      "parents": [
        "4df65bf1eb454814954421403da9f8b5fcb82180"
      ],
      "author": {
        "name": "Santos Cordon",
        "email": "santoscordon@google.com",
        "time": "Fri Nov 21 15:20:15 2014 -0800"
      },
      "committer": {
        "name": "Santos Cordon",
        "email": "santoscordon@google.com",
        "time": "Mon Dec 08 23:30:10 2014 +0000"
      },
      "message": "(Telecom-system part 3) Adding Telecom Loader Service\n\nBug: 18112269\nChange-Id: I85ab03156bf906fdc72b459c4c68240ab3bf1894\n"
    },
    {
      "commit": "67f8e8bd8927f24147d7a1edd6ec3db1a54233b2",
      "tree": "9f559cd794ceeb33e8b1a92bbdfcfe0937602c2c",
      "parents": [
        "0927c43c38c2ef12e8b15490adf0d5d3796c39b7"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Mon Dec 01 13:54:59 2014 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Mon Dec 08 10:45:37 2014 -0800"
      },
      "message": "MIDI Manager work in progress\n\nStill to do:\n\nAdd MidiInputPort and MidiOutputPort classes\nSchedule sending MIDI events in the future\nSecurity/permissions\nReconsider interface for virtual devices\nLook into performance optimizations\n\nChange-Id: I9b7d63b196996a04be0a830efa913043da1328a8\n"
    },
    {
      "commit": "6ec2cbd8d2b26714d5771e5560bdd2b5b042287b",
      "tree": "ce057746c26239e853d8972cdf9b712612335488",
      "parents": [
        "7dedb1242567061b5651c671a221185b1ba901c8",
        "c25cfc57e0d863b002620f5e7dd14822418c678f"
      ],
      "author": {
        "name": "dcashman",
        "email": "dcashman@google.com",
        "time": "Mon Dec 01 23:59:50 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 01 23:59:50 2014 +0000"
      },
      "message": "am c25cfc57: am 24d02652: Merge \"Prevent EntropyMixer from registering with service manager.\"\n\n* commit \u0027c25cfc57e0d863b002620f5e7dd14822418c678f\u0027:\n  Prevent EntropyMixer from registering with service manager.\n"
    },
    {
      "commit": "24d02652bf8df12a41acf500d958109ef3d99b9a",
      "tree": "8c62e9d909acb3816ca572c75ec110333a0fc9b8",
      "parents": [
        "c859b85cb530e608da775bb18744a996483a0311",
        "fe8afa99a7109e7237b5e51271f6a94101dc7e68"
      ],
      "author": {
        "name": "dcashman",
        "email": "dcashman@google.com",
        "time": "Mon Dec 01 23:49:25 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 01 23:49:26 2014 +0000"
      },
      "message": "Merge \"Prevent EntropyMixer from registering with service manager.\""
    },
    {
      "commit": "fe8afa99a7109e7237b5e51271f6a94101dc7e68",
      "tree": "d01faad0eb6e026caaabbc0cf9399a55e0757b9b",
      "parents": [
        "fc54573373ff965aa40cccdc1ab11c1c880c8930"
      ],
      "author": {
        "name": "dcashman",
        "email": "dcashman@google.com",
        "time": "Tue Nov 25 12:59:12 2014 -0800"
      },
      "committer": {
        "name": "dcashman",
        "email": "dcashman@google.com",
        "time": "Wed Nov 26 13:50:30 2014 -0800"
      },
      "message": "Prevent EntropyMixer from registering with service manager.\n\nEntropyMixer is designed to be triggered in two ways, as either the\nresult of a self-set timer or of one of three system broadcasts.  It is not\nmeant to be triggered in any other way, so exposing it via servicemanager\nis undesirable.\n\nBug: 18106000\n\nCherry-pick of commit: 9287e0dd272b85b475e33bcbd7d868517a0f98f9\n\nChange-Id: I9aeb35e7ffde75090f4234ea193514fb883b1425\n"
    },
    {
      "commit": "9fd6d9d9952b14bbef7e3f31250ae11a6a7a5b49",
      "tree": "75ecc940d766321c5aed07a5b9347b678f2129d7",
      "parents": [
        "0e0dbf9367371a0315461f9afd5167d56fc9428c",
        "4e3f5d3fe41c0ecf68f5c5f2a4bb89ea79ffab15"
      ],
      "author": {
        "name": "dcashman",
        "email": "dcashman@google.com",
        "time": "Wed Nov 26 17:22:59 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 26 17:23:01 2014 +0000"
      },
      "message": "Merge \"Remove if(true) line.\""
    }
  ],
  "next": "0e0dbf9367371a0315461f9afd5167d56fc9428c"
}
