)]}'
{
  "log": [
    {
      "commit": "4a5eeb9c727d77bb57fef87a70c8c9cc23dbfee3",
      "tree": "28a357f9dd84cede672e2f8d6281a130b6d4ce7b",
      "parents": [
        "ebb9e69513b690881a5bad7bf45c6f32e0fc7062"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 06 10:49:04 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 06 10:49:04 2014 -0700"
      },
      "message": "AudioService/WireAccessoryManager: change boot completion detection method\n\nBOOT_COMPLETED intent is not a reliable way for system services\nto detect boot completion. The intent broadcast can be significantly\ndelayed and there is no guaranty that system services\nreceive it before apps.\n\nUse a systemReady() method called by SystemServer instead.\n\nBug: 14323903.\nChange-Id: I781596a3545e7a1e719799982347cbcd9a4c9009\n"
    },
    {
      "commit": "67e2196d07dd4dc1f3ce82fdaaa34cdbce89e1ce",
      "tree": "eb4bb9d5fc69356ba7f74f6b65a7b21afb9c9204",
      "parents": [
        "4a26164316b0d9a6d97dfbb85a2ac176384bb985",
        "a278ea7cecb59a73586e5dd74ec05e85caa370c5"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu May 01 17:11:34 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 01 17:11:34 2014 +0000"
      },
      "message": "Merge \"Add dump to MediaSessionService\""
    },
    {
      "commit": "a278ea7cecb59a73586e5dd74ec05e85caa370c5",
      "tree": "0fd4023e67758e0b31ca6671e40db5ec2cb5c2d0",
      "parents": [
        "4e8cf1508f22f88203cd9bf4467aaddd3f4502c6"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Apr 24 14:49:01 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Tue Apr 29 11:08:57 2014 -0700"
      },
      "message": "Add dump to MediaSessionService\n\nAdds a dump implementation for debugging MediaSessionService. Also\nfixes some synchronize calls that weren\u0027t using the same lock object.\n\nChange-Id: I14343f853398749c8ce7ebf91f72729abc9132d9\n"
    },
    {
      "commit": "e929bee9bbb418b52fea877f5fff1449aab247fb",
      "tree": "18defb24caf25e9effd0105a40c8a296eb22e494",
      "parents": [
        "812ad2265ed1386b347c98f48cc8a2b2925541b3",
        "734a78fb867384dfb84f5f42f65b4681562d62b5"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 28 14:15:06 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 28 14:15:06 2014 -0700"
      },
      "message": "Merge commit \u0027734a78fb\u0027 into manualmerge\n\nConflicts:\n\tcore/java/android/app/WallpaperManager.java\n\nChange-Id: Id103f540329ea484ff2e0829a0fc8158621f3dd3\n"
    },
    {
      "commit": "734a78fb867384dfb84f5f42f65b4681562d62b5",
      "tree": "bdc85d0dc5b0ce4a9aeae848f3a7aa28973a6c45",
      "parents": [
        "d937f2750c6edc2c1a03901605b22dad02b89147",
        "8ea2d4512248ec612356f558ac35534c3e4c6db6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 28 20:33:09 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 28 20:33:09 2014 +0000"
      },
      "message": "am 8ea2d451: Merge \"Various CTS fixes\" into klp-modular-dev\n\n* commit \u00278ea2d4512248ec612356f558ac35534c3e4c6db6\u0027:\n  Various CTS fixes\n"
    },
    {
      "commit": "5568772e8161205b86905d815783505fd3d461d8",
      "tree": "e9dca0c30f4c44a92aaf24769e59c826d104a640",
      "parents": [
        "01c70711d5e4f1c3405bcd169be70605e92166f2"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Apr 09 18:07:19 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 28 08:54:16 2014 -0700"
      },
      "message": "Derive fingerprint at runtime when undefined.\n\nSome devices leave \"ro.build.fingerprint\" undefined at build time,\nsince they need to build it from the components at runtime.\n\nBug: 13340779\nChange-Id: I4d74398817af22079a11c196dc6742b85d2bfb61\n"
    },
    {
      "commit": "2c8d67c9b0574f229809d99b3d55aa411fad0c84",
      "tree": "3d2e629d590b8cfb826199f9c616a9600bb03ee6",
      "parents": [
        "eea94f060a917a5c6195a81d8825551a430a8d69"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Apr 23 13:46:21 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 25 11:07:39 2014 -0700"
      },
      "message": "Various CTS fixes\n\nWallpaperManager should always do a null check on the service object.\nSystemServer should always bring up the DevicePolicyManagerService,\nand let the service do appropriate default no-ops if the feature\nis not supported.\n\nChange-Id: Iaaf12b60ed375fe2e341ec11faa10c9344d7d9da\n"
    },
    {
      "commit": "522ff52f88a0ddac3221fc32defd2f6cccaf04c4",
      "tree": "5b2a0c566a7198f8eeb7a3ff35a662db4ab3dfb6",
      "parents": [
        "24a4ce35661f59054d9bbc9c3326639d003526fb",
        "91097de49b0f683b00e26a75dbc0ac6082344137"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 25 17:02:18 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 25 17:02:19 2014 +0000"
      },
      "message": "Merge \"Initial implementation of new voice interaction API.\""
    },
    {
      "commit": "91097de49b0f683b00e26a75dbc0ac6082344137",
      "tree": "82c3185634a71233ce2e81a3645b07b1ba55f412",
      "parents": [
        "23af77a3cd1febc740d885ff03ead09837df269c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 04 18:02:06 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 24 17:48:58 2014 -0700"
      },
      "message": "Initial implementation of new voice interaction API.\n\nThis gives a basic working implementation of a persist\nrunning service that can start a voice interaction when\nit wants, with the target activity(s) able to go through\nthe protocol to interact with it.  It may even work when\nthe screen is off by putting the activity manager in the\ncorrect state to act like the screen is on.\n\nIncludes a sample app that is a voice interation service\nand also has an activity it can launch.\n\nNow that I have this initial implementation, I think I\nwant to rework some aspects of the API.\n\nChange-Id: I7646d0af8fb4ac768c63a18fe3de43f8091f60e9\n"
    },
    {
      "commit": "0792d37385e60aa8d73f8df174d0a32f4f618bc4",
      "tree": "8cd01ee00014cf398d1d184da0b30bcbeb44efd4",
      "parents": [
        "12e75126909152c448f70c48f3d2f2884cb359bd"
      ],
      "author": {
        "name": "Jungshik Jang",
        "email": "jayjang@google.com",
        "time": "Wed Apr 23 17:57:26 2014 +0900"
      },
      "committer": {
        "name": "Jungshik Jang",
        "email": "jayjang@google.com",
        "time": "Fri Apr 25 08:37:51 2014 +0900"
      },
      "message": "Implement skeleton of new HDMI Control Service.\n\nHdmiCecService is a system service handling HDMI-CEC features\nand command. Recently we found out that industry has more\nrequirements to support HDMI-CEC. Also, MHL is another\nstandard should be in our pocket. Basically, MHL is\na standard to support communication between mobile device\nand TV or Av device. As CEC is a control standard over HDMI\ncable, MHL has control channel for peer device.\nThere behavior is very similiar. Both have commands that\ncan change Tv\u0027s current input and can send/receive key\nto other device to control other deivce or TV.\n\nIn order to cover both CEC and MHL, current HdmiCecService\nimplementation has limitation. We had several\nsession of discussion and decided to refactor\nHdmiCecService into HdmiControlService.\nFor each standard it will have separate controller instance\nlike HdmiCecController and HdmiMhlController.\n\nIn this change I didn\u0027t touch original HdmiCecService\nbecause some component, like cast receiver, uses HdmiCecService.\nFor a while we will keep HdmiCecService until HdmiControlService\naccomodates all features of HdmiCecService.\n\nChange-Id: I5485280ab803dbf071d898bfbe34be0b11ce7958\n"
    },
    {
      "commit": "6a4b220f1263d95fdefe6361c2bc87bbb04bbed0",
      "tree": "082ceb00c7d9255d3a6a129b3e66e16fee40ac3f",
      "parents": [
        "4660c9e064ebaec9ebb260c2853a8dab868ccdc2"
      ],
      "author": {
        "name": "Jeff Davidson",
        "email": "jpd@google.com",
        "time": "Wed Apr 16 17:29:40 2014 -0700"
      },
      "committer": {
        "name": "Jeff Davidson",
        "email": "jpd@google.com",
        "time": "Mon Apr 21 16:04:05 2014 -0700"
      },
      "message": "Initial implementation of NetworkScoreManager\u0027s backing service.\n\nThis service will ultimately be responsible for propagating scores\ndown to lower-level network subsystems. For now, it just keeps scores\nin memory and exposes these for debugging purposes via \"adb shell\ndumpsys network_score\".\n\nThis change also adds provisioning of a default scorer. When\nNetworkScoreService is first initialized, it checks to see if it has\never set a default scorer; if not, it reads a package name from a\nbuild config property and attempts to set it as the default.\n\nAlso add autogenerated equals/hashCode methods to all parcelables.\n\nBug: 14111427\nBug: 13786258\nChange-Id: I02271171653d42e12acd240b73b9e23950744f6b\n"
    },
    {
      "commit": "5784b39843bd3d6112352ff3b736a6498107911c",
      "tree": "283136a069498786c722cd46cc146bab570ff4e5",
      "parents": [
        "77ecf0bb9687a4841a4880267bdb2cd7de05055f",
        "4f58263d02f296430a9653126d28501e95c7bb6c"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Apr 08 22:04:20 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 08 22:04:20 2014 +0000"
      },
      "message": "Merge \"Launcher APIs and broadcasts for managed profiles\""
    },
    {
      "commit": "3957091ba8f08c02b5e781098cb955a5f697a1ff",
      "tree": "c8739c677c87e62ea6c1e8bc45de027d1e65d87c",
      "parents": [
        "53c2cf799fddfae7f6fc9ca1840ea345308b79ee"
      ],
      "author": {
        "name": "Jae Seo",
        "email": "jaeseo@google.com",
        "time": "Thu Feb 20 18:23:25 2014 -0800"
      },
      "committer": {
        "name": "Jae Seo",
        "email": "jaeseo@google.com",
        "time": "Tue Apr 08 13:35:21 2014 -0700"
      },
      "message": "Initial round of Television Input Framework\n\nThis provides APIs to control and create individual television inputs on\nthe system which will later be hosted by television applications.\n\nChange-Id: I6866d28e78175a1bff2c32a85c5d77e94d0cd60c\n"
    },
    {
      "commit": "4f58263d02f296430a9653126d28501e95c7bb6c",
      "tree": "ee424e547166ddfc5da545654ac9ee2908803b02",
      "parents": [
        "2d925545b6190153928658ce320d9b681baad882"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Feb 19 14:31:52 2014 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Apr 08 10:51:05 2014 -0700"
      },
      "message": "Launcher APIs and broadcasts for managed profiles\n\nUserManager\n- Corp badging\n- Querying list of managed profiles\n\nLauncher API\n- LauncherApps and Service to proxy changes in managed profile\n  to the launcher in the primary profile\n- Querying and launching launchable apps across profiles\n\nChange-Id: Id8f7b4201afdfb5f414d04156d7b81300119289e\n"
    },
    {
      "commit": "b325345ef0adf2849350d339de1ec5f92b67b7ae",
      "tree": "4854de7dd193e43d8f88d1feecb2028932e36169",
      "parents": [
        "ceb9b437f701f68411fcbef7e83b5df45834f9d9",
        "6259933ec99dee566f200c5fdfe1756ee72b1513"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Wed Apr 02 22:15:15 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 02 22:15:16 2014 +0000"
      },
      "message": "Merge \"Switch framework Holo references to Quantum.Light\""
    },
    {
      "commit": "b69bb445585a083b8e4ff8a13a1a1a63e9c22a6a",
      "tree": "c30ee3134a77533f0cc74d5184852a6de352d62c",
      "parents": [
        "fb0873268cd2602cf3b0eaf90485824a814561c3",
        "71ab4f4f48a9b8b485d80adf18d568ef6265b1e8"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 02 11:50:57 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 02 11:52:07 2014 +0100"
      },
      "message": "resolved conflicts for merge of 71ab4f4f to master\n\nChange-Id: I888c231f7579523e12fbd68f820f0775019e51e0\n"
    },
    {
      "commit": "71ab4f4f48a9b8b485d80adf18d568ef6265b1e8",
      "tree": "ca12bff66cf7347fa38937f5aea088e2583bbac5",
      "parents": [
        "04c2a5571620927f702af3707845b1b05769dc46",
        "ea9e5ecac1e5240370f0e3f998b9c8b159ee9320"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 02 10:41:24 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 02 10:41:24 2014 +0000"
      },
      "message": "am ea9e5eca: am 17b1b8fe: Merge \"Move zygote startup logic to the frameworks.\"\n\n* commit \u0027ea9e5ecac1e5240370f0e3f998b9c8b159ee9320\u0027:\n  Move zygote startup logic to the frameworks.\n"
    },
    {
      "commit": "ea9e5ecac1e5240370f0e3f998b9c8b159ee9320",
      "tree": "f3cbeb7e387593aad1afe4550c0fbcc639a13892",
      "parents": [
        "095ece10095ecb8c76e3ed4fb0dd1e23a5ced22b",
        "17b1b8fe8c0c8f05f2077acc82428881bf591a78"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 02 10:35:38 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 02 10:35:38 2014 +0000"
      },
      "message": "am 17b1b8fe: Merge \"Move zygote startup logic to the frameworks.\"\n\n* commit \u002717b1b8fe8c0c8f05f2077acc82428881bf591a78\u0027:\n  Move zygote startup logic to the frameworks.\n"
    },
    {
      "commit": "973b4663b0b5ee62006522bf4742af076096e548",
      "tree": "d30579e0b8a4342f6071983f481015860a44fd67",
      "parents": [
        "b3cafa56205942343930e4fbb0a3d50d6e33a046"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Mar 31 13:41:26 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 02 10:18:43 2014 +0100"
      },
      "message": "Move zygote startup logic to the frameworks.\n\nThe Zygote class is now in com.android.internal.os. It is\nresponsible for the vast majority of work before and after\nthe call to fork(). It calls back into the Runtime via\nthe new dalvik.system.ZygoteHooks class to allow the Runtime\nto perform pre fork cleanup and post fork initialization.\n\nThe native code in Zygote.cpp is a direct and straightforward\nport of the existing code in art. Most differences are\nsuperficial, for example :\n- We use C style logging (ALOGE) instead of stream based\n  logging.\n- We call env-\u003eFatalError() instead of using LOG(FATAL)\n\nChange-Id: Ia101fb2af12d23894fe57e4134d2bc6d142e5059\n"
    },
    {
      "commit": "6259933ec99dee566f200c5fdfe1756ee72b1513",
      "tree": "78196ea29921d4331a576922a564568f6894a207",
      "parents": [
        "6f127c9b6c249ca1cd17c07a8476edd0fcc1f04d"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Apr 01 14:57:39 2014 -0700"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue Apr 01 14:57:39 2014 -0700"
      },
      "message": "Switch framework Holo references to Quantum.Light\n\nChange-Id: Ib545a143f1959b6104adbc9d594dd626851d90b3\n"
    },
    {
      "commit": "e531e2ec6b311c35b077cc228e832b3f1530dffa",
      "tree": "1c085e7c6c55fe84b3d3497b9323e4467dc4cc7b",
      "parents": [
        "b11952d6f6851dbd1da447da967f6e07984942fe",
        "3b2a9d22794cb9f1c2a28884b5c3ba92ecc6ff96"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Mar 31 20:14:37 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 31 20:14:37 2014 +0000"
      },
      "message": "am 3b2a9d22: Merge \"Change when the SELinux relabel of /data/data occurs.\"\n\n* commit \u00273b2a9d22794cb9f1c2a28884b5c3ba92ecc6ff96\u0027:\n  Change when the SELinux relabel of /data/data occurs.\n"
    },
    {
      "commit": "3b2a9d22794cb9f1c2a28884b5c3ba92ecc6ff96",
      "tree": "d669108571126c88f810ec6bf10ad4e96e1ceab5",
      "parents": [
        "e3434fc4fb164b66e529e675dfc31652a4c69cb5",
        "172d38bcda8d05793db13eb763a280ac2ee36fab"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Mar 31 20:09:31 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 31 20:09:31 2014 +0000"
      },
      "message": "Merge \"Change when the SELinux relabel of /data/data occurs.\""
    },
    {
      "commit": "82142c21dd333307682d5f4bb09de3ab3ccfa06c",
      "tree": "d0d750d27ba27084498138dba9e6bbc70cc20a81",
      "parents": [
        "ff2144ccb4215acf4587fc628493b3d49dca6043"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Thu Mar 27 14:56:59 2014 +0100"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Mon Mar 31 21:18:28 2014 +0200"
      },
      "message": "Define trust agent framework components\n\nAdds the TrustManager system service that allows\nregistering for changes to the trust status and\nreporting events that are important to trust agents.\n\nBug: 13723878\nChange-Id: I7d0d2ea86fd755702d31aa5d49cac038a6cd4301\n"
    },
    {
      "commit": "439cf5b433123970a94388cf9309d9ea4d31b3cb",
      "tree": "13c85d682902107a6152f4dfdc5f7d0cd7d01db0",
      "parents": [
        "546bec8ebf2cf865e88d02cc8cb29563ad224967",
        "56a8f8b48ff1d0855209307b9076d6e9b348b59b"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Mar 31 13:16:16 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 31 13:16:16 2014 +0000"
      },
      "message": "am 56a8f8b4: resolved conflicts for merge of 439145f0 to klp-modular-dev-plus-aosp\n\n* commit \u002756a8f8b48ff1d0855209307b9076d6e9b348b59b\u0027:\n  Don\u0027t make isSafeMode a field on the Zygote class.\n"
    },
    {
      "commit": "56a8f8b48ff1d0855209307b9076d6e9b348b59b",
      "tree": "ed630a6b5c3effd310874e5651542b4e4ffeb766",
      "parents": [
        "303d666f2e2b37120e0e9de206ce127e2a532026",
        "439145f0e7701d0cf9d5934f92d9c717995511b9"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Mar 31 13:54:30 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Mar 31 14:10:53 2014 +0100"
      },
      "message": "resolved conflicts for merge of 439145f0 to klp-modular-dev-plus-aosp\n\nThis isn\u0027t a straightforward conflict resolution. This code\nhas changed significantly. mSafeMode is now a flag on the activity\nmanager service, and is set when SystemServer calls enterSafeMode.\n\nChange-Id: I1e8ff524566c5e44bb6bf3b138cdebb70004aca3\n"
    },
    {
      "commit": "439145f0e7701d0cf9d5934f92d9c717995511b9",
      "tree": "be769cd244f666331fcaba02b7190fdb76a715da",
      "parents": [
        "0e3f3c70226640759d5d705233fbe59f525355bb",
        "ab561f5b4073055c414866ff3dbe8372263474a7"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Mar 31 12:42:14 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 31 12:42:14 2014 +0000"
      },
      "message": "am ab561f5b: Merge \"Don\\\u0027t make isSafeMode a field on the Zygote class.\"\n\n* commit \u0027ab561f5b4073055c414866ff3dbe8372263474a7\u0027:\n  Don\u0027t make isSafeMode a field on the Zygote class.\n"
    },
    {
      "commit": "d1a8d9f45288e1e8aadfc543fab7087c2eec2f30",
      "tree": "a92e1e659994ad06fcecbe921b2bf4c9b083b8fb",
      "parents": [
        "91bbb75c75568dee854fb10633f8ce3683265ffd"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 28 13:10:41 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Mar 31 13:16:45 2014 +0100"
      },
      "message": "Don\u0027t make isSafeMode a field on the Zygote class.\n\nThis field is written and read exclusively by the system server,\nand should therefore belong to the SystemServer class.\n\nChange-Id: I2708a9a45c0c9cd1a6f563e8cc5844bd8c424bf7\n"
    },
    {
      "commit": "155e3133407e590f18e7e16eddc6fc743f35b0fd",
      "tree": "115c5c5adf6d7226d521cfe91a7c77ed3c3a3a78",
      "parents": [
        "6a14146b379b33a6bf947f02b2550fa97c5619b6",
        "d511bc17d614b1291f1b85f84180c1db157d2790"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Mar 28 22:16:38 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 28 22:16:38 2014 +0000"
      },
      "message": "am d511bc17: Merge \"[ActivityManager] Fix a bug: unable to start activity after starting activities during screen off.\"\n\n* commit \u0027d511bc17d614b1291f1b85f84180c1db157d2790\u0027:\n  [ActivityManager] Fix a bug: unable to start activity after starting activities during screen off.\n"
    },
    {
      "commit": "d511bc17d614b1291f1b85f84180c1db157d2790",
      "tree": "23976cc97b3849ecc2244e4330474b44043d54b4",
      "parents": [
        "e328056ddcba0edd0e49b4697dfcc84f3658cb39",
        "82a91631d58d0d378ae93afc034aef3b44aef81b"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Mar 28 20:27:32 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 28 20:27:33 2014 +0000"
      },
      "message": "Merge \"[ActivityManager] Fix a bug: unable to start activity after starting activities during screen off.\""
    },
    {
      "commit": "ff3362f0d8378d616f39cbcf8b86b6f03e7d30b9",
      "tree": "86abf57f42539f0ceff15bff7308c37cb1892d61",
      "parents": [
        "49c061501dbcff0dd6f6621afa76136d0857622a",
        "739e1941217b0882560f78169e1456b1909a2d10"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Mar 28 20:23:34 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 28 20:23:34 2014 +0000"
      },
      "message": "Merge \"DO NOT MERGE - [ActivityManager] Ensure consistency behavior when a background activity brings another existed activity to front.\""
    },
    {
      "commit": "172d38bcda8d05793db13eb763a280ac2ee36fab",
      "tree": "093367ca561ab9095da3270d99c793b3e3defbf6",
      "parents": [
        "55a655091a30667ba7c091dc22d350c0bb8d8641"
      ],
      "author": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Thu Mar 27 10:00:58 2014 -0400"
      },
      "committer": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Fri Mar 28 12:24:29 2014 -0400"
      },
      "message": "Change when the SELinux relabel of /data/data occurs.\n\nPerform the relabel of the /data/data/\u003cpkg\u003e directories\nwhen the app is being scanned by the PMS. The impetus\nfor this change was that the data directories of forward\nlocked apps were receiving the wrong label during an\nOTA. Because the PMS doesn\u0027t actually scan forward locked\napps til later in the boot process, the prior restorecon\ncall was actually applying the default label of\nsystem_data_file for all such apps. By performing a\nrestorecon on each individual app as they are entered into\nthe PMS we can handle them correctly. This mechanism also\nallows us to pass down the seinfo tag as part of the\nrestorecon call which drops our need to rely on the contents\nof packages.list.\n\nChange-Id: Ie440cba2c96f0907458086348197e1506d31c1b6\nSigned-off-by: rpcraig \u003crpcraig@tycho.ncsc.mil\u003e\n"
    },
    {
      "commit": "a282441038b8a82be1b9b6afc41145e5570ce377",
      "tree": "b3f184f9a1de8b4f706008eab94e067b1c93dd1e",
      "parents": [
        "f0ffa8a38e90f64912686833dba9823b251fae57",
        "0fd4c656d0dbaf01eb845b8c64f6b27d5141f8b6"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Mar 27 20:01:11 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 27 20:01:11 2014 +0000"
      },
      "message": "Merge \"Do not show Home behind full screen activity\""
    },
    {
      "commit": "0fd4c656d0dbaf01eb845b8c64f6b27d5141f8b6",
      "tree": "2c7a8ac376dee757df2bb7cce1c15d46272c0802",
      "parents": [
        "dac298005ce3c1361e27bb740e4b518765d43d77"
      ],
      "author": {
        "name": "Yevgen Pronenko",
        "email": "yevgen.pronenko@sonymobile.com",
        "time": "Fri Mar 14 11:57:06 2014 +0100"
      },
      "committer": {
        "name": "Henrik Baard",
        "email": "henrik.baard@sonymobile.com",
        "time": "Thu Mar 27 07:54:37 2014 +0100"
      },
      "message": "Do not show Home behind full screen activity\n\nWhen ensureActivitiesVisibleLocked goes through foreground activity\nstack and reaches non-fullscreen activity, it sets showHomeBehindStack\nvariable to true.\n\nIf there is a fullscreen activity behind, showHomeBehindStack remains\nunchanged, which causes Home application to be displayed anyway.\nIn this case user will see a fullscreen activity and Home activity\nsimultaneously.\n\nTo fix the issue we set showHomeBehindStack to false when we reach\nfullscreen activity in the activity stack.\n\nThis was made visible by the following commit:\n446ef1de8d373c1b017df8d19ebf9a47811fb402\n\nChange-Id: I535c1283a4e26f5cf606375b837d4b7195324af0\n"
    },
    {
      "commit": "e6e25554d345a94ba40c36fcb120a3d76fc15eca",
      "tree": "d5c3db9000fbbec135249eca30502962a11692a1",
      "parents": [
        "80470cdf6c6995f4afe8d5e2c4b6e898625173fb"
      ],
      "author": {
        "name": "Stephen Smalley",
        "email": "sds@tycho.nsa.gov",
        "time": "Wed Mar 26 09:19:12 2014 -0400"
      },
      "committer": {
        "name": "Stephen Smalley",
        "email": "sds@tycho.nsa.gov",
        "time": "Wed Mar 26 09:19:12 2014 -0400"
      },
      "message": "Note libselinux dependency on packages.list format changes.\n\nChange-Id: I3c34a86f5706c4fca826a8634936131e4e4fc297\nSigned-off-by: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\n"
    },
    {
      "commit": "739e1941217b0882560f78169e1456b1909a2d10",
      "tree": "77bb6331260a09cb772fefe1d87b9127fd81087b",
      "parents": [
        "80470cdf6c6995f4afe8d5e2c4b6e898625173fb"
      ],
      "author": {
        "name": "riddle_hsu",
        "email": "riddle_hsu@htc.com",
        "time": "Wed Mar 26 20:43:17 2014 +0800"
      },
      "committer": {
        "name": "riddle_hsu",
        "email": "riddle_hsu@htc.com",
        "time": "Wed Mar 26 20:43:17 2014 +0800"
      },
      "message": "DO NOT MERGE - [ActivityManager] Ensure consistency behavior when a background activity brings another existed activity to front.\n\nSymptom: ANR occurs on previous activity.\nRoot Cause:\nIn KK, when a background activity starts another existed background activity (bring to front),\nif current focused stack is not the same as the stack of target starting activity,\nit will still resume the top of target stack, even the top activity on the target stack may not the same as target activity.\nAnd it will result incorrect focus, press back key will send to previous stack\u0027s top then popup ANR on previous activity:\n\"Reason: Waiting because no window has focus but there is a focused application\".\n\nBy original code comment, it looks \u0027bring to front\u0027 should not happen in this issue case.\n// If the target task is not in the front, then we need\n// to bring it to the front...  except...  well, with\n// SINGLE_TASK_LAUNCH it\u0027s not entirely clear.  We\u0027d like\n// to have the same behavior as if a new instance was\n// being started, which means not bringing it to the front\n// if the caller is not itself in the front.\n\nIf the caller and target are in the same stask, it will just deliver new intent without changing task order (the same behavior as JellyBean).\nSo the patch concept is just to avoid to use target stack to resume top when caller and target are in different stack.\n\nSolution: Do not allow to resume another stack top if non-top activity try to bring existed activity to front.\nIt may not be a good solution, just a reminder for the issue case.\n\nReproduce steps:\nAssume A, B, C are different app tasks.\nWhen the application stack is like:\n  Top C\n      B\n      A\n\n #Case 1: Home is foreground\n  A starts B with NEW_TASK, C will resume, focus still stays at Home, and window order does not update.\n  Then press back key or volumn key will result ANR on Home.\n\n #Case 2: App is foreground (Resumed activity is C)\n  A starts Home, Home will resume, focus still stays at C, and window order does did not update.\n  Then press back key or volumn key will result ANR on C.\n\nChange-Id: If05070123b248e2335791e43a4d4ddee6db11d84\n"
    },
    {
      "commit": "10bf6354a536152719bf4524429aa5739836c541",
      "tree": "ee0d72a8257a59bb84835d30dde674a08c9c571b",
      "parents": [
        "f53d1a01972d04402b48476d6a8173285516edd3"
      ],
      "author": {
        "name": "Yuhao Zheng",
        "email": "yuhaozheng@google.com",
        "time": "Tue Mar 25 15:00:45 2014 -0700"
      },
      "committer": {
        "name": "Yuhao Zheng",
        "email": "yuhaozheng@google.com",
        "time": "Tue Mar 25 15:00:45 2014 -0700"
      },
      "message": "Wifi hotspot stack initial hook up\n\nAdd a dummy wifi hotspot service for futher development use. This is to\nresolve the different between master branch and kwd branch, such that future\ndevelopment can go into kwd and being auto-merged to master.\n\nbug: 5485670\nChange-Id: Ica58de445dd050a9f0b817f8e4accaa2478299c5\n"
    },
    {
      "commit": "39f7068ed903f747d6885117dc1bac69f626ae91",
      "tree": "004b27997551802d900f102a57a055b09ac1b874",
      "parents": [
        "557a93e104f1fec69ed05b2d0ff26c78bca4c5d6"
      ],
      "author": {
        "name": "Koji Fukui",
        "email": "koji.fukui@sonymobile.com",
        "time": "Fri Mar 14 21:20:21 2014 +0900"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "takeshi.aimi@sonymobile.com",
        "time": "Tue Mar 25 11:25:32 2014 +0900"
      },
      "message": "Don\u0027t wait for finishing animation when second display is disconnected\n\nBasically WindowManagerService wait for finishing animation when\na window is removed. But when second display is disconnected, windows\non second display can\u0027t be shown even if animation is waited for.\nOn the contrary, it keeps on waiting for finishing the animation\nin special case.\n\nWith this fix windows are immediately removed without waiting for\nanimation when second display is disconnected.\n\nChange-Id: I1354c193c04db394a21a11c174e10c8e7da17a0e\n"
    },
    {
      "commit": "a42cb8b0e2b8fdfbac1a6590d6b60814caa01088",
      "tree": "d903e1aca9c2345e98dbe99188524feef35b21c3",
      "parents": [
        "fb40d78c57711585c9eaed467601bf3adb4f60f9",
        "a67e34c80fb5b1936fe0beeea3faec3218ead1a3"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Mar 21 13:11:02 2014 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Mar 21 13:11:02 2014 -0700"
      },
      "message": "resolved conflicts for merge of a67e34c8 to master\n\nChange-Id: I597525886260884c9b2dfc7945e01eb8138a58c2\n"
    },
    {
      "commit": "82a91631d58d0d378ae93afc034aef3b44aef81b",
      "tree": "5b341e6e486c44eecf7e75b11bcde523f0e9f210",
      "parents": [
        "4308a5230e2887c1ee12e7bdc60e0b93212637ab"
      ],
      "author": {
        "name": "leo_hsu",
        "email": "leo_hsu@htc.com",
        "time": "Fri Mar 21 12:27:16 2014 +0800"
      },
      "committer": {
        "name": "leo_hsu",
        "email": "leo_hsu@htc.com",
        "time": "Fri Mar 21 12:27:16 2014 +0800"
      },
      "message": "[ActivityManager] Fix a bug: unable to start activity after starting activities during screen off.\n\nSymptom: Unable to start any activity.\nRoot Cause: ActivityStack.mPausingActivity() points to a destroyed activity of a died process, so that ActivityStackSupervisor.allPausedActivitiesComplete() always returns false.\nSolution: Set mPausingActivity to null in ActivityStack.cleanUpActivityLocked().\nReproduce steps:\n    a. Turn screen off.\n    b. A background service starts an activity X (in process X).\n    c. A background service starts a no-history activity Y (in process Y), but the main thread of Y was blocked.\n    d. A background service starts Y 3~4 times --\u003e this causes am_failed_to_pause on X.\n    e. Main thread of Y is freed finally --\u003e this causes Y crash for android.view.WindowManager$BadTokenException.\n    f. Turn screen on, X is shown on screen, but neither back key nor home key can work because mPausingActivity is Y.\n\nChange-Id: I320b3db407e2d4cc745c8ca22a6e548742234242\n"
    },
    {
      "commit": "f2fecf48f740a079cf9015ea8c2695039ca11d81",
      "tree": "587908d20a49ea3fb1aa692dc64047dfc26ad899",
      "parents": [
        "a5853b177c80052246c361e0bc2b0e5809cfeef2",
        "c61f4dd744b1b0396703aa58eb22fc31d2b7050e"
      ],
      "author": {
        "name": "Jinsuk Kim",
        "email": "jinsukkim@google.com",
        "time": "Fri Mar 21 02:37:00 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 21 02:37:00 2014 +0000"
      },
      "message": "am c61f4dd7: Merge \"Add HDMI-CEC service\" into klp-modular-dev\n\n* commit \u0027c61f4dd744b1b0396703aa58eb22fc31d2b7050e\u0027:\n  Add HDMI-CEC service\n"
    },
    {
      "commit": "c61f4dd744b1b0396703aa58eb22fc31d2b7050e",
      "tree": "1b3b816f486fb1969ac8d01a01337c4e3aff5129",
      "parents": [
        "1fe28b20f1cfc6d2542f8b0bfe48355f3a58067b",
        "4f512fb451c8ddcea852645c5c24314c20c0974b"
      ],
      "author": {
        "name": "Jinsuk Kim",
        "email": "jinsukkim@google.com",
        "time": "Fri Mar 21 02:32:38 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 21 02:32:38 2014 +0000"
      },
      "message": "Merge \"Add HDMI-CEC service\" into klp-modular-dev"
    },
    {
      "commit": "4f512fb451c8ddcea852645c5c24314c20c0974b",
      "tree": "315ec495986e5dfff86f21705045de17b4f63764",
      "parents": [
        "fd6b99750bfab7f930ee375a79009874a3196165"
      ],
      "author": {
        "name": "Jinsuk Kim",
        "email": "jinsukkim@google.com",
        "time": "Fri Feb 28 17:41:17 2014 +0900"
      },
      "committer": {
        "name": "Jinsuk Kim",
        "email": "jinsukkim@google.com",
        "time": "Thu Mar 20 16:40:22 2014 +0900"
      },
      "message": "Add HDMI-CEC service\n\nThis CL adds a system service handling HDMI-CEC protocol. The service\nis equipped with the capability sending/receiving HDMI-CEC messages\n\nNot all the messages are in place. Currently it has messages to support\na few features only, as follows:\n\n- One touch play\n- System information\n- Routing control (partially - active source status maintenance only)\n- Device OSD transfer\n- Power status\n\nIt will be extended to cover the wider usages in the follow up CLs.\n\nThe CEC standard version referenced in the implementation is 1.3a.\n\nChange-Id: Ifed0b02f52ebf098eddb3bd0987efbf353b7e8fe\n"
    },
    {
      "commit": "2b74a24a52a8f685ea8e81ff7b4f55e724733267",
      "tree": "654bfc5799dc50cc4ac89b567316f999207ac2c9",
      "parents": [
        "dac298005ce3c1361e27bb740e4b518765d43d77"
      ],
      "author": {
        "name": "Minoru Aoi",
        "email": "minoru.x.aoi@sonymobile.com",
        "time": "Thu Mar 13 12:00:34 2014 +0900"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "takeshi.aimi@sonymobile.com",
        "time": "Thu Mar 20 11:35:33 2014 +0900"
      },
      "message": "Set ScreenshotSurface secure if any secure content is shown.\n\nThe screenrecord command can record secure content during rotation.\nThis is because the ScreenshotSurface surface for rotation animation\nis not set secure even though its screenshot contains secure content.\n\nChange-Id: I5a70be71ddfc26de4230e7d4fe547210c2154210\n"
    },
    {
      "commit": "0aa5163c13caff1a3864548bf5e587b041895058",
      "tree": "1c73ae734aa466cf6d862cb993c8b5f01826ea9e",
      "parents": [
        "19fc55e1e3a51aba4db985d186d1f4ec075d7ca1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 19 17:49:09 2014 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Mar 19 18:34:52 2014 -0700"
      },
      "message": "Get rid of noise during boot.\n\nThis log is not an error, it is a warning, don\u0027t spam a stack\ncrawl when it happens.\n\nChange-Id: I6038e3625cc0c16af9e54887b5e7ec451d9f864d\n"
    },
    {
      "commit": "4385343fd82058c397a46530458ae58999f75639",
      "tree": "78aa8b716683b556f60337dd5e6f6b42f4276edd",
      "parents": [
        "7cb1dfe690b2d700ce212712287dfd59c2c8e43f"
      ],
      "author": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Tue Mar 04 11:57:23 2014 -0500"
      },
      "committer": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Wed Mar 19 17:37:37 2014 +0000"
      },
      "message": "Allow PMS to restorecon directories under /data.\n\nThis change applies a relabel to both /data/data and\n/data/user directories on boot. Not every boot will\napply this relabeling however. The appropriate\nseapp_contexts is hashed and compared to\n/data/system/seapp_hash to decide if the relabel\nshould occur.\n\nChange-Id: I05e8b438950ddb908e46c9168ea6ee601e6d674f\nSigned-off-by: rpcraig \u003crpcraig@tycho.ncsc.mil\u003e\n"
    },
    {
      "commit": "eff08c4ffe41e0a52ddd2c8c9d968482bae5935d",
      "tree": "e427dd5192262a4c974c96315b1fab64fe4adb14",
      "parents": [
        "d88d817498327462f42e50348239eac59147f310"
      ],
      "author": {
        "name": "Akira Numata",
        "email": "akira.numata@sonymobile.com",
        "time": "Thu Mar 13 13:36:31 2014 +0900"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "takeshi.aimi@sonymobile.com",
        "time": "Tue Mar 18 05:41:30 2014 +0000"
      },
      "message": "Insufficient ProcessRecord cleanup when persistent process is killed\n\nWhen persistent process with Service restarts, ActivityManagerService\ndoes not reset ProcessRecord#hasClientActivites to false\n(because ProcessRecord of persistent process is continued using\nafter killing).\n\nIt disturbs updating LRU list in ActivityManagerService, and then,\nwhen new process calls ActivityManagerProxy#publishContentProviders,\nSecurityException happens because of no entry in the list.\n\nBug: 13517358\n\nChange-Id: I46b064f71a4f7025ade1bf117801352a7ab22e6a\n"
    },
    {
      "commit": "10caca13da7c6acde00411dfb4ab128c75b24e86",
      "tree": "12accb66b519610632b4dbee1e8480a24064775a",
      "parents": [
        "c4c484c6a77b6b88030f1cb7e810918d8ad92146",
        "f5f6487e5999f6b4984e03bf6fe831ed83f5f4b6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 17 23:32:32 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 17 23:32:32 2014 +0000"
      },
      "message": "am f5f6487e: am d8e585e7: am 006209c2: Merge \"Remove reflection instantiation of Accessibility\" into klp-modular-dev\n\n* commit \u0027f5f6487e5999f6b4984e03bf6fe831ed83f5f4b6\u0027:\n  Remove reflection instantiation of Accessibility\n"
    },
    {
      "commit": "d8e585e7e5ce77e0bf8c11838387f012b9ab9a1a",
      "tree": "c40762c2070b36a9c8df80c4b87a0158f5e87d37",
      "parents": [
        "d292aac5eb48f6970ba4795265bd45761c063209",
        "006209c2fc1b6deef10f6d52831e9cef35cca212"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 17 19:58:19 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 17 19:58:19 2014 +0000"
      },
      "message": "am 006209c2: Merge \"Remove reflection instantiation of Accessibility\" into klp-modular-dev\n\n* commit \u0027006209c2fc1b6deef10f6d52831e9cef35cca212\u0027:\n  Remove reflection instantiation of Accessibility\n"
    },
    {
      "commit": "6c6cd5012b48cba44beeb2861966f11789fd978b",
      "tree": "c2e5b364aecb4cb0acc51cc4fd39ed338553050f",
      "parents": [
        "aa737c49df79749fe92b89d745eba7442762e2b5"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 17 12:54:03 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 17 12:54:03 2014 -0700"
      },
      "message": "Remove reflection instantiation of Accessibility\n\nAccessibility is mandatory so reflection is not required.\n\nChange-Id: Ie5c7b0bba26809425fe0f66efcc09c333138b21f\n"
    },
    {
      "commit": "4cde773435074809672f9de6a47b26de902a83d1",
      "tree": "6c8be75255b1b26dd7b08b9538f25ed932531505",
      "parents": [
        "629daddd03b598616de7c30a13b1f9f9b11b98fe",
        "d5c69462c6ebc71d13e353f179c7549bb75d1dc5"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@android.com",
        "time": "Fri Mar 14 17:48:00 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 14 17:48:01 2014 +0000"
      },
      "message": "Merge \"remove unnecessary switchUser call\""
    },
    {
      "commit": "f31760c63401be72748487c9d4fce3fecdedede4",
      "tree": "f6ee522f589207c3ef3e3b4235c78c6a78108d9f",
      "parents": [
        "792f38ddd9e8d25b2c8bf0d67363dbfa56550636"
      ],
      "author": {
        "name": "Dave Platt",
        "email": "dplatt@google.com",
        "time": "Fri Mar 07 14:48:22 2014 -0800"
      },
      "committer": {
        "name": "Dave Platt",
        "email": "dplatt@google.com",
        "time": "Thu Mar 13 23:16:30 2014 +0000"
      },
      "message": "NsdService does not clean up after exiting clients\n\nWhen a client of the NsdService exits, NsdService should\nclean up the requests it has sent to the mDNS daemon:\ncancel any pending resource-discovery and resource-resolution\nqueries, and remove any services registered by this client.\n\nIf this isn\u0027t done, several bad things happen. The daemon will\ncontinue to run unnecessarily, will report service discoveries\nthat can\u0027t be forwarded on to the client, and will continue to\nadvertise service ports for an application which is no longer\nrunning until the device is rebooted (mDNS pollution).\n\nBug: 9801184\nChange-Id: I0aa7311480322aefcff16f902fbbf34f50985d38\n"
    },
    {
      "commit": "d5c69462c6ebc71d13e353f179c7549bb75d1dc5",
      "tree": "40684a0bdf8c4e1b09967793c976cdb2b11cff3b",
      "parents": [
        "792f38ddd9e8d25b2c8bf0d67363dbfa56550636"
      ],
      "author": {
        "name": "Jianzheng Zhou",
        "email": "jianzheng.zhou@freescale.com",
        "time": "Thu Oct 10 14:02:09 2013 +0800"
      },
      "committer": {
        "name": "Jianzheng Zhou",
        "email": "jianzheng.zhou@freescale.com",
        "time": "Thu Mar 13 09:09:22 2014 +0800"
      },
      "message": "remove unnecessary switchUser call\n\nIf userId doesn\u0027t change, no need to do switchuser.or it will\nintroduce some tweak for gps modules in quick off/on because\nthey need cost time in off/on.\n\nChange-Id: Ie5e408dc8be69c8a63a18bcb2cfe478cef4d70e6\nSigned-off-by: Jianzheng Zhou \u003cjianzheng.zhou@freescale.com\u003e\n"
    },
    {
      "commit": "0efbd9a463c848118c7685f4bfc8765a82caa761",
      "tree": "4c091a048fd013b99927089c5f2127868c2b6156",
      "parents": [
        "5de03b18ea455c0250cbd01912282f28d8635910"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Jan 30 14:19:51 2014 -0800"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Fri Mar 07 12:32:44 2014 -0800"
      },
      "message": "ART profiler usage.\n\nThis is a change to add args to some of the profiler related\nfunctions, including installd commands.\n\nAlso read properties and set command line options for the runtime\nprofiling parameters.\n\nChanged calls to isDexOptNeeded() to isDexOptNeededInternal().  This\nneeds additional arguments passed for profiles.\n\nBug: 12877748\nChange-Id: I1a426c9309d760bac0cf92daa298defee62287c1\n\nConflicts:\n\tcore/jni/AndroidRuntime.cpp\n"
    },
    {
      "commit": "27ad525c7e91bde38d6c9e3e67ab38b97eb7eed0",
      "tree": "dec1f3dbb92932fd36b4f947aa2867ad0ef0ab9e",
      "parents": [
        "29e55bef771ee1453017fbf73bb4de62d356e4fc"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Dec 19 14:49:36 2013 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 07 13:48:04 2014 +0000"
      },
      "message": "Inform libcore of time format pref. changes.\n\n- Introduce a boolean extra for intent TIME_CHANGED that\n  specifies if the user wants a 24 hour format or not.\n- Have the ActivityManagerService inform running processes\n  of changes to this preference.\n- Add plumbing in ActivityThread to inform j.t.DateFormat\n\nChange-Id: I05fafb903ae54e39c03a048b7a219dc5a93fd472\n"
    },
    {
      "commit": "a0b4d0ce471cf10888bac4d4ec5b97fd562ad756",
      "tree": "e08221485b3c2e2869ac6c731630a0d641fc51f9",
      "parents": [
        "9404752d50a60319f0d2f53c212fad7c7cd8fb8e",
        "c36a5b9c3664d1b1e9787503161154d5b3470872"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Mar 04 15:19:17 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 04 15:19:17 2014 +0000"
      },
      "message": "Merge \"Avoid duplication of AppWindowToken in created Task\""
    },
    {
      "commit": "c36a5b9c3664d1b1e9787503161154d5b3470872",
      "tree": "8e0da5a121505ea0f06b503385658591a241910c",
      "parents": [
        "2ba70fd49bfcbb516e75c198c106764609335feb"
      ],
      "author": {
        "name": "Yevgen Pronenko",
        "email": "yevgen.pronenko@sonymobile.com",
        "time": "Wed Feb 19 10:33:07 2014 +0100"
      },
      "committer": {
        "name": "Henrik Baard",
        "email": "henrik.baard@sonymobile.com",
        "time": "Tue Mar 04 15:07:34 2014 +0100"
      },
      "message": "Avoid duplication of AppWindowToken in created Task\n\nWhen WindowManagerService creates a new Task, it passes atoken to the\nTask constructor. In this case atoken is added to mAppTokens list by\nthe Task constructor and then it is added manually again by calling\nnewTask.mAppTokens.add(atoken). As a result, the same atoken is present\nin mAppTokens list twice.\n\nWhen another window token is added to the list, it may be placed in\nbeetwen duplicated tokens and corresponding window will be hidden from\nthe screen by corresponding duplicated windows.\nFrom user perspective it means that some windows will not be displayed\non the screen.\n\nThe issue is fixed by avoid adding atoken to mAppTokens list manually\nwhen it was added already in Task constructor.\n\nChange-Id: I10628e68186160fffdde07beb7d84ab3cecb7051\n"
    },
    {
      "commit": "16678ac66f7e6d5ce414536b7534d1e823f7ab30",
      "tree": "304b39fd7d36c0c7a642fd85a1b6fb422f77af47",
      "parents": [
        "e4dae5f2c26f5992a31f8ce15811fc082647ddb8",
        "8554a0933b5c70f637af4a326e8011c91ca6d4b8"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Thu Feb 27 22:01:28 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 27 22:01:29 2014 +0000"
      },
      "message": "Merge \"Fixed upgrading from forward-lock application to system application\""
    },
    {
      "commit": "3651cb7b4a0c3c731905301e868cca1c3af5aa21",
      "tree": "593f3d3142abaeff32bc347302d49b3dfc99e4ca",
      "parents": [
        "952862085ad0b9f28b966b444a3c5a28c3152896",
        "cd9cd758d6dc884220f86ff10812c9e33a978de5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 24 22:25:19 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 24 22:25:19 2014 +0000"
      },
      "message": "am cd9cd758: am c213b3a3: am f7f80d7b: Merge \"Start the dream manager even if dreams are not supported.\" into klp-modular-dev\n\n* commit \u0027cd9cd758d6dc884220f86ff10812c9e33a978de5\u0027:\n  Start the dream manager even if dreams are not supported.\n"
    },
    {
      "commit": "c213b3a34ccee7cfa72dab281cfa950e5f7df6fc",
      "tree": "fe2743140530e213de7ec95ea138c79aa40411ea",
      "parents": [
        "c004c9a87f0d4afa3a01f39922ad934def93c776",
        "f7f80d7b54b11d432bb6e72da526edf369128ea7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 24 22:18:32 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 24 22:18:32 2014 +0000"
      },
      "message": "am f7f80d7b: Merge \"Start the dream manager even if dreams are not supported.\" into klp-modular-dev\n\n* commit \u0027f7f80d7b54b11d432bb6e72da526edf369128ea7\u0027:\n  Start the dream manager even if dreams are not supported.\n"
    },
    {
      "commit": "f7f80d7b54b11d432bb6e72da526edf369128ea7",
      "tree": "a8b3a6da7ee79f875b868f60f785c8b36bd25497",
      "parents": [
        "ffda464851008f750246f343c939d8003071cd23",
        "e0dd3ca81d9355701164742d53695cf6d15cfdca"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 24 22:15:59 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 24 22:16:00 2014 +0000"
      },
      "message": "Merge \"Start the dream manager even if dreams are not supported.\" into klp-modular-dev"
    },
    {
      "commit": "e0dd3ca81d9355701164742d53695cf6d15cfdca",
      "tree": "4903d33f11495a8268cfa166b8da85598554b0de",
      "parents": [
        "2687550272ba061448f5d5b914700dc335299ee7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 24 13:57:53 2014 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 24 14:07:27 2014 -0800"
      },
      "message": "Start the dream manager even if dreams are not supported.\n\nThe dreams manager also manages dozing.  It has a minimal footprint\nso there is no real reason to disable the component (it just makes\ndebugging more difficult).\n\nImproved the documentation of the config_dreamsSupported resource\nto clarify exactly what it controls.\n\nBug: 12494706\nChange-Id: I78244846f7c1ddfd11bc1605af59b0db91337971\n"
    },
    {
      "commit": "4c90185a351fcabdca38e6fa767ddbb1ddc907de",
      "tree": "01c0dfcb26d96d66ce7eeb56e5c1d97c57512f3c",
      "parents": [
        "dc8d7db35aae71ea747457cc1073fe8d60a8b277",
        "542b55d9a4bee2f98f8a0a6948e0873c5faaddc7"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Feb 22 00:20:57 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Feb 22 00:20:57 2014 +0000"
      },
      "message": "am 542b55d9: am c8661519: am 83930aa0: Merge \"Fix broken IME when decrypting storage\" into klp-modular-dev\n\n* commit \u0027542b55d9a4bee2f98f8a0a6948e0873c5faaddc7\u0027:\n  Fix broken IME when decrypting storage\n"
    },
    {
      "commit": "c866151926b7672a58a7312c8083612bdc567fb4",
      "tree": "961b51a7ade9be9e42cfbed84f2ebadb981dae7a",
      "parents": [
        "d7d37256c4bab388e99dae5e16b80a59756cc97d",
        "83930aa09aecef7429d8a1c07b80f10b7e2e13f6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 21 22:17:26 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 21 22:17:26 2014 +0000"
      },
      "message": "am 83930aa0: Merge \"Fix broken IME when decrypting storage\" into klp-modular-dev\n\n* commit \u002783930aa09aecef7429d8a1c07b80f10b7e2e13f6\u0027:\n  Fix broken IME when decrypting storage\n"
    },
    {
      "commit": "8793dd873d53fe947b2cf68f39d4cb774ac0cc74",
      "tree": "554a795264d0f122667758b1e78d2e9bee0841fb",
      "parents": [
        "2cb6c60c0d2de3bc743c043aca963db6fe52662f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 21 14:06:47 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 21 14:06:47 2014 -0800"
      },
      "message": "Fix broken IME when decrypting storage\n\nBug:13113499\nChange-Id: Icf767864c8ff694fd569b9237ae1004cc20204a2\n"
    },
    {
      "commit": "38bf51466881b726f42832743d8cca6ee67bb148",
      "tree": "f2273799ae619f0f9b81ea0997009f2457d1cf54",
      "parents": [
        "05cebdc2abd05b0dca351306cb039245d50c67ae"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Wed Feb 19 16:39:36 2014 -0800"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Fri Feb 21 09:53:19 2014 -0800"
      },
      "message": "Move time setting code from SystemClock to AlarmManagerService\n\nOn devices using /dev/rtc instead of /dev/alarm, updating the\ntime-of-day clock and RTC are separate syscalls.  Hence the clock and\nRTC could be left in inconsistent states if two threads called\nSystemClock.setCurrentTimeMillis() simultaneously.\n\nBy moving this code into AlarmManagerService, we can put a global lock\naround AlarmManagerService.setTime() and prevent the race condition.\n\nNote that access to SystemClock.setCurrentTimeMillis() is now gated by\nandroid.permission.SET_TIME, where before it was gated by filesystem\npermissions (i.e., could the process write to /dev/alarm or /dev/rtc).\n\nChange-Id: Ia34899a4cde983656305fd2ef466dfe908ed23c8\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "4de3f481bc59ab4b766dc027e41aff7cda9d62f7",
      "tree": "49232000eaf4d8686816ed7211b351e976ad4950",
      "parents": [
        "2b3c14bf75c71524a0fcbc3e9d1fdab9aa6c3473"
      ],
      "author": {
        "name": "Ashok Bhat",
        "email": "ashok.bhat@arm.com",
        "time": "Mon Jan 27 16:00:23 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Feb 20 12:10:24 2014 +0000"
      },
      "message": "AArch64: Make AssetAtlasService 64-bit compatible\n\nChanges in this patch include\n\n[x] Long(64-bit) is used to store native pointers in\n    AssetAtlasService and related classes as they can be 64-bit.\n\n[x] Some minor changes have been done to conform with\n    standard JNI practice (e.g. use of jint instead of int\n    in JNI function prototypes)\n\nChange-Id: Ib4c77c134e3ad5b21732e20cde9a54a0b16bdab1\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\n"
    },
    {
      "commit": "332886854438809e956fb232b69879e33b5dc2bb",
      "tree": "ddda4e05eba4ed396691ff90b8f2e498d9c8e699",
      "parents": [
        "ff699570f62113b4df5b0efd74b9df8b9dbcd1a9",
        "01fe661ae5da3739215d93922412df4b24c859a2"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Feb 20 00:25:10 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 20 00:25:10 2014 +0000"
      },
      "message": "Merge \"Initial round of MediaSession APIs\""
    },
    {
      "commit": "01fe661ae5da3739215d93922412df4b24c859a2",
      "tree": "fbc2bb43edec44c553256de377312741f87f434f",
      "parents": [
        "d63b4314b85e982a1d70d4064af59851f476dd36"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Feb 13 14:19:04 2014 -0800"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Wed Feb 19 13:41:37 2014 -0800"
      },
      "message": "Initial round of MediaSession APIs\n\nThis is far from complete but puts the basic components in place\nfor an app to interact with media sessions.\n\nChange-Id: Icfe313f90ad76ae56badbe42b0e43fc5f68db36f\n"
    },
    {
      "commit": "f542a33c8de852fe3706a01e960fa0546b536e25",
      "tree": "051d1d8668f909986ee267e33ad5dc8d39244b56",
      "parents": [
        "a78068e7a3af53cc2b590902f74074d1781513da"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 19 12:29:58 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 19 12:29:58 2014 -0800"
      },
      "message": "Fix build due to change in SystemServiceManager\n\nChange-Id: I0fabb98b7b84e5c721757d20df4eac501ca21cc0\n"
    },
    {
      "commit": "a78068e7a3af53cc2b590902f74074d1781513da",
      "tree": "51e9324e75740ea3bec3f3c32d557af2eb15bfe3",
      "parents": [
        "55b8ddc30386ec15073304b1f9fabc7eb789f52e",
        "13c839962e246517a7a95326610ea30c529d79dc"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 19 19:48:05 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 19 19:48:05 2014 +0000"
      },
      "message": "am 13c83996: am 1c532c2e: am 4b07b26e: Merge \"Make UsbService optional\" into klp-modular-dev\n\n* commit \u002713c839962e246517a7a95326610ea30c529d79dc\u0027:\n  Make UsbService optional\n"
    },
    {
      "commit": "1c532c2e2d8464ef7ddd0cc5914f3b1ab2dc49c2",
      "tree": "864b094489e8d2ab165dd1aa8f5fb3eba9626adf",
      "parents": [
        "04520a01b8469729379e73a7995a188ffea2b187",
        "4b07b26e8654df52ca80bb2165ebdf9352ab9337"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 19 19:41:26 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 19 19:41:26 2014 +0000"
      },
      "message": "am 4b07b26e: Merge \"Make UsbService optional\" into klp-modular-dev\n\n* commit \u00274b07b26e8654df52ca80bb2165ebdf9352ab9337\u0027:\n  Make UsbService optional\n"
    },
    {
      "commit": "fcb87369b17c69923b80b58e6ea9f6c9d7bc8c74",
      "tree": "a45fbcb7b00807f32885c58715e77ff293d12656",
      "parents": [
        "60097a9c5a7214cb73d0bc966adef767743f8798"
      ],
      "author": {
        "name": "Junu Kim",
        "email": "junu.kim7@gmail.com",
        "time": "Wed Feb 19 16:25:21 2014 +0900"
      },
      "committer": {
        "name": "Junu Kim",
        "email": "junu.kim7@gmail.com",
        "time": "Wed Feb 19 16:25:21 2014 +0900"
      },
      "message": "A background started service is removed from mStartingBackground when timeout.\nFix is to make sure mStartingBackground is updated to remove one.\n\nChange-Id: I0e42beb550d33e6e400349b85bbb89848e18d520\n"
    },
    {
      "commit": "5441745effb885589c03050b59885e8a3ad96ad6",
      "tree": "0e06886c33fa2c5e8bffc728bc7ede248381f803",
      "parents": [
        "93b55c1149bb4a03b0df7887182265969af2ab71",
        "019b1f2668ac17f5e52b6ce32a524d26134a062a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 18 23:03:37 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 18 23:03:37 2014 +0000"
      },
      "message": "am 019b1f26: am 2ea983a5: am 3d9bcb90: Create FEATURE_ constants for print and backup\n\n* commit \u0027019b1f2668ac17f5e52b6ce32a524d26134a062a\u0027:\n  Create FEATURE_ constants for print and backup\n"
    },
    {
      "commit": "2ea983a567bf536f71dd620e1b215d5aeebce531",
      "tree": "a81e530c49e61cc3f5a861d3f2ebb153332247d1",
      "parents": [
        "37d894a42b5744e3e5def5fbfcc641fe3afa2063",
        "3d9bcb90ee6c0ffff93642539ae64fb672c7f14a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 18 22:57:37 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 18 22:57:37 2014 +0000"
      },
      "message": "am 3d9bcb90: Create FEATURE_ constants for print and backup\n\n* commit \u00273d9bcb90ee6c0ffff93642539ae64fb672c7f14a\u0027:\n  Create FEATURE_ constants for print and backup\n"
    },
    {
      "commit": "2cb6c60c0d2de3bc743c043aca963db6fe52662f",
      "tree": "ec6963bb443a13698459a1029ecd49bfc8a5d816",
      "parents": [
        "3d9bcb90ee6c0ffff93642539ae64fb672c7f14a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 14 17:19:56 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 18 14:57:09 2014 -0800"
      },
      "message": "Make UsbService optional\n\nTweaked the services Android.mk to build dependencies\nwhen building with mm[m].\n\nChange-Id: I6dad511c652bcacc085f27ede5f8f22a6982c6bd\n"
    },
    {
      "commit": "3d9bcb90ee6c0ffff93642539ae64fb672c7f14a",
      "tree": "f23fc306bbdebacd1106c9f5b7d839b114188e68",
      "parents": [
        "3048191b4cf9eff7a72b84065dec2b3dd1e89b3c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 18 14:05:14 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 18 14:33:00 2014 -0800"
      },
      "message": "Create FEATURE_ constants for print and backup\n\nBug:13079822\n\nChange-Id: I6f4b759951d45989e8aad4011fae431ee2ecae0c\n"
    },
    {
      "commit": "02a64daefece8ccdc40935c7bc865a8966249c44",
      "tree": "c386b46c4b8dca87ba42612e4b7e6cba480d6de0",
      "parents": [
        "234b0b037ee1f8dc50c846279216a8e4d779ff56",
        "1da35f71d2889699864d0cd8f76a6ee8caacfb5b"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 18 17:11:09 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 18 17:11:10 2014 +0000"
      },
      "message": "Merge \"Tethering: Skip link local addresses when enabling NAT\""
    },
    {
      "commit": "234b0b037ee1f8dc50c846279216a8e4d779ff56",
      "tree": "b45bef230a4d300af976550f3efd6214b51c7bc9",
      "parents": [
        "a14d9c318a1d358902a76aff733303c5509bb5fc",
        "5fb5df001332d5fb05152e7a78d0b28a48ca559e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 18 17:10:02 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 18 17:10:02 2014 +0000"
      },
      "message": "Merge \"Fix, MountService now only sends one onShutDownComplete\""
    },
    {
      "commit": "8554a0933b5c70f637af4a326e8011c91ca6d4b8",
      "tree": "84ee3066f3f362d5c92c2331671ed58dc2cf1963",
      "parents": [
        "a14d9c318a1d358902a76aff733303c5509bb5fc"
      ],
      "author": {
        "name": "Brice Jaglin",
        "email": "brice.jaglin@sonyericsson.com",
        "time": "Mon Jun 25 21:51:39 2012 +0900"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Tue Feb 18 14:37:09 2014 +0100"
      },
      "message": "Fixed upgrading from forward-lock application to system application\n\nFixes the case when the app on system is newer than the\ncurrently installed. Something that can happen e.g. after\na FOTA update.\n\nChange-Id: I102e9cdd5693d5e66667c0c8989dc2643c72dd16\n"
    },
    {
      "commit": "509a243c2c5ebc9cc55324bd9a03a5b560d81cfb",
      "tree": "2aca8431c1c23c4a57dd5e5b943450d30d68f7da",
      "parents": [
        "d7043f0084237200b6aab5d101c8ab6d3ab495c6",
        "26c6b783d2ab24c3753fa83241beb98c6f1e85d1"
      ],
      "author": {
        "name": "Ben Gruver",
        "email": "bgruv@google.com",
        "time": "Fri Feb 14 21:15:49 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 14 21:15:50 2014 +0000"
      },
      "message": "Merge \"Check the return value of listFiles on the ifw directory\""
    },
    {
      "commit": "26c6b783d2ab24c3753fa83241beb98c6f1e85d1",
      "tree": "17bc90a072f291bdc012a10a3fb5fcebcda56fe1",
      "parents": [
        "a9bb594da6aff97ba927ba67a34486d0b9c1b4a0"
      ],
      "author": {
        "name": "Ben Gruver",
        "email": "bgruv@google.com",
        "time": "Mon Sep 30 17:03:34 2013 -0700"
      },
      "committer": {
        "name": "Ben Gruver",
        "email": "bgruv@google.com",
        "time": "Fri Feb 14 13:07:11 2014 -0800"
      },
      "message": "Check the return value of listFiles on the ifw directory\n\nlistFiles can return null if the directory doesn\u0027t exist\n\nBug: 10497143\nChange-Id: Ie4cbdf18a259a9641669a4e6b9bf49b4879acc67\n"
    },
    {
      "commit": "88aaef71289177644f723d3d0f20f34a6f9b3d2c",
      "tree": "1ac6363de0a0b74a046ccd929e431bf60acc0328",
      "parents": [
        "00aefc8fa85f7a1dd171d7b0d906630abba7fc93",
        "ce0552f360d8c8f0bc45095293be369800ce9c93"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Feb 14 09:50:37 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 14 09:50:37 2014 +0000"
      },
      "message": "am ce0552f3: am 8a4c2bb1: am 567f7ca4: Refactor dream manager to new pattern.\n\n* commit \u0027ce0552f360d8c8f0bc45095293be369800ce9c93\u0027:\n  Refactor dream manager to new pattern.\n"
    },
    {
      "commit": "8a4c2bb1f07cf1d971290a7310d7b71aceb71590",
      "tree": "3b6cd55bc5dd14616f8360d30e3adf839eb5b551",
      "parents": [
        "dc3561df118a17a099285c9be312fb66f91314ec",
        "567f7ca424280ae957b04d4f3df690055f2d41df"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Feb 14 09:14:09 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 14 09:14:09 2014 +0000"
      },
      "message": "am 567f7ca4: Refactor dream manager to new pattern.\n\n* commit \u0027567f7ca424280ae957b04d4f3df690055f2d41df\u0027:\n  Refactor dream manager to new pattern.\n"
    },
    {
      "commit": "567f7ca424280ae957b04d4f3df690055f2d41df",
      "tree": "8ed338015b00d163576d03d0aa5cf67b85c5b42b",
      "parents": [
        "474f1fbe8d87563909c3cb69ec921d427cd1f0b0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 30 23:38:03 2014 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 13 23:26:59 2014 -0800"
      },
      "message": "Refactor dream manager to new pattern.\n\nChange-Id: I99ab4bd98d56a290368dc4b24e5bb24e0656b522\n"
    },
    {
      "commit": "bba3a694b8400fd340c0400bf42ef3d79a4285b1",
      "tree": "14c1eb67ea3a2520670bf5910d06811982b1522a",
      "parents": [
        "a9bb594da6aff97ba927ba67a34486d0b9c1b4a0",
        "c5ac15a3e11c03951e269b243674858411204b67"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Thu Feb 13 04:26:33 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 13 04:26:33 2014 +0000"
      },
      "message": "Merge \"Telephony API extension v2\""
    },
    {
      "commit": "67754d93c4bfb2da1831b1dd2b40c12a838b1028",
      "tree": "8ea3d4f1c262d60d848d2d986972ea8c86d83b5b",
      "parents": [
        "578087e39845a0c9a728ba18963f498d1f69b279",
        "48d22323ce39f9aab003dce74456889b6414af55"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Tue Feb 11 21:29:58 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 11 21:29:58 2014 +0000"
      },
      "message": "Merge \"Runtime resource overlay, iteration 2\""
    },
    {
      "commit": "b823bd45600fc339ae2e618d5fe506ace74ada4a",
      "tree": "0af3e43af5bfc341edd9c1c5614a89ecb07875fc",
      "parents": [
        "f44a3f1e00e38b09f70efed3eaf771871435e478",
        "0d552f7d8b793f44c9442c19683a5433004b023e"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 11 14:29:09 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 11 14:29:09 2014 +0000"
      },
      "message": "Merge \"Use long to store pointers in ConsumerIrService\""
    },
    {
      "commit": "cab8617b8ccea3a99b1ee15e15915c512a10c738",
      "tree": "48d07ae2e7f69eadd4e7cd8c7d20c4ea6b37bda1",
      "parents": [
        "33fa09b1ffe8d14d146de4b2632103d831ff8988",
        "25df673b849de374cf1de40250dfd8a48b7ac28b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 11 08:33:50 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 11 08:33:50 2014 +0000"
      },
      "message": "am 25df673b: am 1b51c9cb: Merge \"Make SystemService constructor take a Context.\" into klp-modular-dev\n\n* commit \u002725df673b849de374cf1de40250dfd8a48b7ac28b\u0027:\n  Make SystemService constructor take a Context.\n"
    },
    {
      "commit": "25df673b849de374cf1de40250dfd8a48b7ac28b",
      "tree": "bcd207313c36f123e2ccd2230e3ee31e5089e38f",
      "parents": [
        "2d6b55aaa9dd03f7d934f7a192989513b1087357",
        "1b51c9cb96fe2a0818289857a016521eed1ec183"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 11 08:18:34 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 11 08:18:34 2014 +0000"
      },
      "message": "am 1b51c9cb: Merge \"Make SystemService constructor take a Context.\" into klp-modular-dev\n\n* commit \u00271b51c9cb96fe2a0818289857a016521eed1ec183\u0027:\n  Make SystemService constructor take a Context.\n"
    },
    {
      "commit": "b880d880c6cd989eacc28c365fc9a41d31900da1",
      "tree": "660d93bbe7f1b74aa9eac16ac69efe16f67f346e",
      "parents": [
        "d9f9da396b41f394991f676bc74dcfc59c7070a8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 10 19:47:07 2014 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 10 20:01:43 2014 -0800"
      },
      "message": "Make SystemService constructor take a Context.\n\nThis change simplifies the process of initializing a SystemService\nby folding the onCreate() step back into the constructor.  It removes\nsome ambuiguity about what work should happen in the constructor and\nshould make it possible for services to retain most of their final\nfields after refactoring into the new pattern.\n\nChange-Id: I25f41af0321bc01898658ab44b369f9c5d16800b\n"
    },
    {
      "commit": "5fb5df001332d5fb05152e7a78d0b28a48ca559e",
      "tree": "74217b0f979a01d958ee255cfdff5f79dcc8be1e",
      "parents": [
        "56062983f1e07295c812fba0e22ce579a35b6f76"
      ],
      "author": {
        "name": "Rickard Helldin",
        "email": "rickard.helldin@sonymobile.com",
        "time": "Fri Feb 07 09:35:04 2014 +0100"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "takeshi.aimi@sonymobile.com",
        "time": "Mon Feb 10 23:21:25 2014 +0900"
      },
      "message": "Fix, MountService now only sends one onShutDownComplete\n\nThe event onShutDownComplete are sent only when all\nvolumes are shutdown. (Not one for every volume.)\n\nChange-Id: I6af521ee8285ca581efac7d3c5f013dfbff3ee30\n"
    },
    {
      "commit": "ff27e6bc44097485abfde24f396399e5eec9ff6d",
      "tree": "4a8965aae6efbaf903ef1189b8e4b3640d33fa12",
      "parents": [
        "cccae25fc7cd3daf68dee3d3ca7665a5ea12f097",
        "41a17c2e72d61be0a060bf43b669623462a23f13"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Fri Feb 07 23:30:23 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 07 23:30:24 2014 +0000"
      },
      "message": "Merge \"Use canonical path for /vendor/app\""
    },
    {
      "commit": "0d552f7d8b793f44c9442c19683a5433004b023e",
      "tree": "9c375fb51a1a726f3ecbfb30cda3ec8d0c85c288",
      "parents": [
        "449273e2d575041ffe1a5d435666d36923de888b"
      ],
      "author": {
        "name": "Ashok Bhat",
        "email": "ashok.bhat@arm.com",
        "time": "Fri Feb 07 12:26:17 2014 +0000"
      },
      "committer": {
        "name": "David Butcher",
        "email": "david.butcher@arm.com",
        "time": "Fri Feb 07 18:12:23 2014 +0000"
      },
      "message": "Use long to store pointers in ConsumerIrService\n\nChange-Id: I4e6562b7dc09f87ad80b1e862b614a370d37feb5\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\n"
    },
    {
      "commit": "6ea720bacb805e88fc3b8634bbd9dc7fa918beaa",
      "tree": "1f8c3656723e667cbdcba7842a296a6f81211343",
      "parents": [
        "449273e2d575041ffe1a5d435666d36923de888b",
        "e8467194dc8d56b5cf418b025b041737754b98b3"
      ],
      "author": {
        "name": "Dan Sandler",
        "email": "dsandler@android.com",
        "time": "Fri Feb 07 15:59:08 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 07 15:59:08 2014 +0000"
      },
      "message": "Merge \"Make sure to turn off led after pulse()\""
    },
    {
      "commit": "9f97de13359662c2709eed227b3fab2ce7d5dabc",
      "tree": "7eb16083cd5fd9d30999dfdead280311084c3e5a",
      "parents": [
        "2b1252ddd2650cb38918cb85d2a3711b2cfa8db5",
        "a5a93f559d337ad5b79716b05ea43707eb779dc8"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 06 20:25:51 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 06 20:25:51 2014 +0000"
      },
      "message": "am a5a93f55: am 7f416631: Merge \"Check feature bits before loading optional services\" into klp-modular-dev\n\n* commit \u0027a5a93f559d337ad5b79716b05ea43707eb779dc8\u0027:\n  Check feature bits before loading optional services\n"
    },
    {
      "commit": "a5a93f559d337ad5b79716b05ea43707eb779dc8",
      "tree": "aeaf5708202369f8035298433acd9376552c1fbe",
      "parents": [
        "7bd287b70a1c95c96663a6028e9809fd3844f55a",
        "7f416631413e75a1756bd316a2e1906725d72f24"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 06 20:16:30 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 06 20:16:30 2014 +0000"
      },
      "message": "am 7f416631: Merge \"Check feature bits before loading optional services\" into klp-modular-dev\n\n* commit \u00277f416631413e75a1756bd316a2e1906725d72f24\u0027:\n  Check feature bits before loading optional services\n"
    },
    {
      "commit": "898c13df7b9b12ff10062f3542593e12fbe0c119",
      "tree": "323bc4d7da06b48af2079f44c5f8d346d265e956",
      "parents": [
        "df88d73092c62a1a3cd2b2056ca63ae2e70cc238"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 28 15:34:50 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 05 19:26:40 2014 +0000"
      },
      "message": "Check feature bits before loading optional services\n\nAt startup, we check with PackageManager whether a system service is\navailable before attempting to load it. A system service is available\nif its associated feature (similar to hardware features) is present.\nThis does not remove unavailable services from the compiled jar.\n\nChange-Id: I13571805083aa4e65519a74acb52efd17b9fb3d7"
    },
    {
      "commit": "48d22323ce39f9aab003dce74456889b6414af55",
      "tree": "510aa964078d251874e2c0e7c8556f237b5710c4",
      "parents": [
        "65a05fd56dbc9fd9c2511a97f49c445a748fb3c5"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sonymobile.com",
        "time": "Fri Jan 31 14:43:27 2014 +0100"
      },
      "committer": {
        "name": "Zoran Jovanovic",
        "email": "zoran.jovanovic@sonymobile.com",
        "time": "Mon Feb 03 11:20:30 2014 +0100"
      },
      "message": "Runtime resource overlay, iteration 2\n\nSupport any number of overlay packages. Support any target package.\n\nUPDATED PACKAGE MATCHING\n------------------------\nIn Runtime resource overlay, iteration 1, only a single overlay package\nwas considered. Package matching was based on file paths:\n/vendor/overlay/system/framework-res.apk corresponded to\n/system/framework-res.apk. Introduce a more flexible matching scheme\nwhere any package is an overlay package if its manifest includes\n\n    \u003coverlay targetPackage\u003d\"com.target.package\"/\u003e\n\nFor security reasons, an overlay package must fulfill certain criteria\nto take effect: see below.\n\nTHE IDMAP TOOL AND IDMAP FILES\n------------------------------\nIdmap files are created by the \u0027idmap\u0027 binary; idmap files must be\npresent when loading packages. For the Android system, Zygote calls\n\u0027idmap\u0027 as part of the resource pre-loading. For application packages,\n\u0027idmap\u0027 is invoked via \u0027installd\u0027 during package installation (similar\nto \u0027dexopt\u0027).\n\nUPDATED FLOW\n------------\nThe following is an outline of the start-up sequences for the Android\nsystem and Android apps. Steps marked with \u0027+\u0027 are introduced by this\ncommit.\n\nZygote initialization\n   Initial AssetManager object created\n+    idmap --scan creates idmaps for overlays targeting \u0027android\u0027, \\\n           stores list of overlays in /data/resource-cache/overlays.list\n   AssetManager caches framework-res.apk\n+  AssetManager caches overlay packages listed in overlays.list\n\nAndroid boot\n   New AssetManager\u0027s ResTable acquired\n     AssetManager re-uses cached framework-res.apk\n+    AssetManager re-uses cached \u0027android\u0027 overlays (if any)\n\nApp boot\n   ActivityThread prepares AssetManager to load app.apk\n+  ActivityThread prepares AssetManager to load app overlays (if any)\n   New AssetManager\u0027s ResTable acquired as per Android boot\n\nSECURITY\n--------\nOverlay packages are required to be pre-loaded (in /vendor/overlay).\nThese packages are trusted by definition. A future iteration of runtime\nresource overlay may add support for downloaded overlays, which would\nlikely require target and overlay signatures match for the overlay to\nbe trusted.\n\nLOOKUP PRIORITY\n---------------\nDuring resource lookup, packages are sequentially queried to provide a\nbest match, given the constraints of the current configuration. If any\npackage provide a better match than what has been found so far, it\nreplaces the previous match. The target package is always queried last.\n\nWhen loading a package with more than one overlay, the order in which\nthe overlays are added become significant if several packages overlay\nthe same resource.\n\nHad downloaded overlays been supported, the install time could have been\nused to determine the load order. Regardless, for pre-installed\noverlays, the install time is randomly determined by the order in which\nthe Package Manager locates the packages during initial boot. To support\na well-defined order, pre-installed overlay packages are expected to\ndefine an additional \u0027priority\u0027 attribute in their \u003coverlay\u003e tags:\n\n    \u003coverlay targetPackage\u003d\"com.target.package\" priority\u003d\"1234\"/\u003e\n\nPre-installed overlays are loaded in order of their priority attributes,\nsorted in ascending order.\n\nAssigning the same priority to several overlays targeting the same base\npackage leads to undefined behaviour. It is the responsibility of the\nvendor to avoid this.\n\nThe following example shows the ResTable and PackageGroups after loading\nan application and two overlays. The resource lookup framework will\nquery the packages in the order C, B, A.\n\n        +------+------+-     -+------+------+\n        | 0x01 |      |  ...  |      | 0x7f |\n        +------+------+-     -+------+------+\n            |                           |\n        \"android\"                Target package A\n                                        |\n                       Pre-installed overlay B (priority 1)\n                                        |\n                       Pre-installed overlay C (priority 2)\n\nChange-Id: If49c963149369b1957f7d2303b3dd27f669ed24e\n"
    },
    {
      "commit": "c6c633608ad4cd77ed21227b0bdb11eb79797c31",
      "tree": "b21c39081539be374502f1d4de16c39b59e0c4ad",
      "parents": [
        "ab71f8b68fee0f2a4f2049c4345b5334948c9df9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jan 30 13:14:01 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jan 30 13:16:48 2014 -0800"
      },
      "message": "frameworks/base: Rename persist.sys.dalvik.vm.lib to allow new default\n\nBug: 12798969\nChange-Id: Ibb7ed86867e4dca53ad7fe33326b08e6f5e664c4\n"
    },
    {
      "commit": "41a17c2e72d61be0a060bf43b669623462a23f13",
      "tree": "1383387e1cbf7767424ea1b2965408c11f620b91",
      "parents": [
        "db3278ab429860161e5baa26f141de95a48de0cb"
      ],
      "author": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Thu Jan 30 09:39:00 2014 +0100"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Thu Jan 30 09:45:23 2014 +0100"
      },
      "message": "Use canonical path for /vendor/app\n\nIt wasn\u0027t possible to start apps installed in /vendor/app\non a device where /vendor was a symbolic link to /system/vendor.\nThis is currently the default configuration for android (see\ninit.rc)\n\nDuring installation a dex file is created at:\n/data/dalvik-cache/vendor@app@blah.blah.apk@classes.dex\n\nBut dalvik would fail to start this app with the following error:\nI/dalvikvm( 3453): Unable to open or create cache for /system/vendor/app/blah.apk \\\n(/data/dalvik-cache/system@vendor@app@blah.blah.apk@classes.dex)\n\nNote that dalvik were trying to start /system/vendor/app while the\napp was installed in /vendor. There was a conflict between the\npackage manager and dalvik on how to interpret paths. This change\nmakes the package manager consistent with dalvik.\n\nChange-Id: I1c7e3c3ae45f97dd742cbf06f7965a7405c821a7\n"
    }
  ],
  "next": "6e09eb4c6753f8e5cbd04f9b0c7b65046d27afdb"
}
