)]}'
{
  "log": [
    {
      "commit": "d430354c6b6b3b39c35e8af90007414c325ccb2d",
      "tree": "5a7a6dc7796b3594f182bad99ecf55b675c27349",
      "parents": [
        "04f0cab79d1499a5fe27330bb30dd94151b82880",
        "9ae000ca8c05ad6f700ad7bf119bbc92fb964b57"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 13 17:22:48 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 13 17:22:49 2014 +0000"
      },
      "message": "Merge \"Revert \"Split AndroidRuntime into AndroidRuntimeBase base-class and the rest.\"\""
    },
    {
      "commit": "9ae000ca8c05ad6f700ad7bf119bbc92fb964b57",
      "tree": "39535e468bacaef05410d512d0794c41d27f8181",
      "parents": [
        "7825334929b098b36e1144872200e75ba6d24b13"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 13 17:22:33 2014 +0000"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 13 17:22:33 2014 +0000"
      },
      "message": "Revert \"Split AndroidRuntime into AndroidRuntimeBase base-class and the rest.\"\n\nThis reverts commit 7825334929b098b36e1144872200e75ba6d24b13.\n\nChange-Id: I1702eb3ff9d7192d64039c8bf4bc3fc5d8e458c4\n"
    },
    {
      "commit": "04f0cab79d1499a5fe27330bb30dd94151b82880",
      "tree": "f3d5102898d98059da36881bb9f6637cbde1f645",
      "parents": [
        "f6475c7204759a57bc730e2bbaefb3448a77c141",
        "7825334929b098b36e1144872200e75ba6d24b13"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 13 16:35:02 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 13 16:35:03 2014 +0000"
      },
      "message": "Merge \"Split AndroidRuntime into AndroidRuntimeBase base-class and the rest.\""
    },
    {
      "commit": "7825334929b098b36e1144872200e75ba6d24b13",
      "tree": "18f4d807ba8d59e0849ccd2032164d1613dddb9b",
      "parents": [
        "faa91f852e9526b2f112122da9ae0956526cf662"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 06 15:25:25 2014 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 12 15:00:05 2014 -0800"
      },
      "message": "Split AndroidRuntime into AndroidRuntimeBase base-class and the rest.\n\nAndroidRuntimeBase (exported by libandroid_runtime_base.so) is all you need\nto link against to gain the ability to do AndroidRuntimeBase::getJNIEnv()\nthus minimizing build dependencies.\n\nChange-Id: Ia7f0c94c8c02b974c068e0db34774827f96aa95b\n"
    },
    {
      "commit": "d5c8044e7e1f1402fdd4a035690329294ab07b33",
      "tree": "7963a5beae4395899c6b3892d18f1fd8f08e9606",
      "parents": [
        "cbdec7dd8c45f70c678029783ab2f5657f6b36bd",
        "1cbea39fe1740d7d1c3e4aa0e4771a99a56c79ef"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Feb 12 14:41:25 2014 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Feb 12 14:41:25 2014 -0800"
      },
      "message": "resolved conflicts for merge of 1cbea39f to master\n\nChange-Id: Ib33484546c6a03cbc4cd96e97d9d785d68e10700\n"
    },
    {
      "commit": "1cbea39fe1740d7d1c3e4aa0e4771a99a56c79ef",
      "tree": "609e7c7ad6a58d44191de97af33a11d9a5e1c78d",
      "parents": [
        "7594767e55e011101ed9341f01d40730fdbd4cc7",
        "dd3d95f182a634acdcc1b1e8e4954234d048eb54"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Feb 12 14:05:30 2014 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Feb 12 14:08:06 2014 -0800"
      },
      "message": "resolved conflicts for merge of dd3d95f1 to klp-volantis-dev\n\nChange-Id: I96c0f0da852a0b3cf8aef9158678d38aa30f456f\n"
    },
    {
      "commit": "d9e385b111ebf811beb0f29178a2fbd4d667509f",
      "tree": "99be89e7fadb00b002536146ee76ac5d415c5a3d",
      "parents": [
        "4e795ebe1783623a28a988f77b4f0f11d54e73be"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 11 13:56:21 2014 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@google.com",
        "time": "Tue Feb 11 22:47:42 2014 +0000"
      },
      "message": "Fix build.\n\nAt least part of what is broken.  Other stuff still seems to be.\n\nChange-Id: I367dc0377bd5b4e59d9d9b68f3506bf1d64aa591\n(cherry picked from commit 32bb5fae353b5bb6275e75952e89c514c7369cee)"
    },
    {
      "commit": "32bb5fae353b5bb6275e75952e89c514c7369cee",
      "tree": "e1cb0e8fbdd8c7aa03f1971e4a55da7f8e6d7b68",
      "parents": [
        "6adfd86ca94f3eabb93fb1b4a0b9b0ea50895dcd"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 11 13:56:21 2014 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 11 14:22:14 2014 -0800"
      },
      "message": "Fix build.\n\nAt least part of what is broken.  Other stuff still seems to be.\n\nChange-Id: I367dc0377bd5b4e59d9d9b68f3506bf1d64aa591\n"
    },
    {
      "commit": "47b80be208fcc1d4824bc24959080233a44041db",
      "tree": "2aacece40a95afd54ecd3e446c83fb0a7db4a448",
      "parents": [
        "43750f19e74edf64c1f1332a2e39de0372845d38",
        "be49403a0362c18edaeafe59ac09baac14294dee"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Tue Feb 11 20:44:38 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 11 20:44:38 2014 +0000"
      },
      "message": "am be49403a: am 0cd115e1: am 578087e3: Merge \"New command line tool \\\u0027idmap\\\u0027\"\n\n* commit \u0027be49403a0362c18edaeafe59ac09baac14294dee\u0027:\n  New command line tool \u0027idmap\u0027\n"
    },
    {
      "commit": "d6b473713f43dec0828971854fe1018642cfaf27",
      "tree": "4f946766a00098f6f7e33ed74a6e6df7dbab40df",
      "parents": [
        "66ebe94757b18146d429855274e451545ed7ea75"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Feb 10 15:56:36 2014 -0800"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Feb 11 10:47:36 2014 -0800"
      },
      "message": "Move inputservice over to frameworks/native\n\nRemove all of the pieces except the PointerController and SpriteController over\nto frameworks/native in preparation for inputflinger. Those two need to stay in\nframeworks/base for now because they depend on Skia currently. In the long run\nthey should be merged into either the InputManager or the WindowManager rather\nthan as a part of the inputservice / inputflinger.\n\nTry 2.\n\nChange-Id: I84259356d3eb8efc5aefb9d6b311b5fc590ea3ed\n"
    },
    {
      "commit": "91447d88f2bdf9c2bf8d1a53570efef6172fba74",
      "tree": "dc46e96130696c26e8fd3883227314ef5c0b7ad1",
      "parents": [
        "378c6775a62d9c461cde51f06c1b14bb014c78fd"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 21 15:32:36 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Feb 10 15:50:16 2014 +0000"
      },
      "message": "Extended locales in AAPT / AssetManager.\n\nSupport 3 letter language codes, script codes \u0026\nvariants. The bulk of the changes are related to\nthe implementation of command line filtering of\nlocales etc. The previous code assumed that the\nvalue of each \"axis\" (locale, density, size etc.)\ncould be represented by a 4 byte type. This is\nno longer the case.\n\nThis change introduces a new class, AaptLocaleValue\nwhich holds a (normalized) locale parsed from a\ndirectory name or a filter string. This class takes\nresponsibility for parsing locales as well as\nwriting them to ResTable_config structures, which is\ntheir representation in the resource table.\n\nThis includes minor changes at the java / JNI level\nfor AssetManager. We now call locale.toLanguageTag()\nto give the native layer a well formed BCP-47 tag.\nI\u0027ve removed some duplicated parsing code in\nAssetManager.cpp and replaced them with functions on\nResTable_config. The native getLocales function has\nbeen changed to return well formed BCP-47 locales as\nwell, so that the corresponding java function can use\nLocale.forLanguageTag to construct a Locale object\nout of it.\n\nFinally, this change introduces default and copy\nconstructors for ResTable_config to prevent having\nto memset() the associated memory to 0 on every\nstack allocation.\n\nChange-Id: I899a56a9a182ee6be52b9389d1ae59266f5482e9\n"
    },
    {
      "commit": "378c6775a62d9c461cde51f06c1b14bb014c78fd",
      "tree": "a91dcdabe03325db4f22b07ed863bbd012a70efb",
      "parents": [
        "dd99d87a125526fc31ef3601a5f1c0edace99a7a"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Jan 20 13:57:11 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Feb 10 15:33:30 2014 +0000"
      },
      "message": "AssetManager support for 3 letter lang/country codes.\n\n- 3 letter codes are packed into the existing 32 bit locale\n  field in ResTable_config\n- We introduce new fields for script / variant information.\n\nNote that we define a \"match\" between two ResTable_config\nstructures to be purely on the basis of their language \u0026\ncountry (disregarding the script and the variant). However,\nconfigs with scripts and variants are considered to be more\nspecific than those without.\n\nChange-Id: I3c2e909ebbebdbbd0ab72a639d531b2b9fdbd9b9\n"
    },
    {
      "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": "65a05fd56dbc9fd9c2511a97f49c445a748fb3c5",
      "tree": "f832a1d344dc2102ebbf247a46dcd2839761161a",
      "parents": [
        "c064a1b5d9a68bb5513e6ed64a067ab822e98764"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sonymobile.com",
        "time": "Fri Jan 31 14:01:52 2014 +0100"
      },
      "committer": {
        "name": "Zoran Jovanovic",
        "email": "zoran.jovanovic@sonymobile.com",
        "time": "Mon Feb 03 09:47:16 2014 +0100"
      },
      "message": "New command line tool \u0027idmap\u0027\n\nIntroduce a new tool \u0027idmap\u0027 to handle generation and verification of\nidmap files. The tool is modelled on \u0027dexopt\u0027, and is intended to be\nused similarly, notably by \u0027installd\u0027.\nSee cmds/idmap/idmap.cpp for further documentation on \u0027idmap\u0027.\n\nNote: this commit is interdependent on a commit in project build/ to add\n\u0027idmap\u0027 to PRODUCT_PACKAGES.\n\nNote: the changes to androidfw are only stubs. The actual implementation\nwill be provided in Runtime resource overlay, iteration 2.\n\nChange-Id: I7131b74ece1e46c8a9c0a31d103e686aa07da2bb\n"
    },
    {
      "commit": "7c4887f66bfa3dad16f8b03dc825ade96d7de130",
      "tree": "9ed404cd4e19d5a28b75fe132fae66bce4550276",
      "parents": [
        "e05b7b50e234e8ed2471f5ad96bb3d715067e9f3"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Jan 27 17:32:37 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Jan 31 13:47:27 2014 +0000"
      },
      "message": "Change ResourceType cookies to int32_t.\n\nAlso change the order of parameters in ResTable constructors\nto avoid ambiguity.\n\n(cherry picked from commit 00b314436f4fdfada4bbf1e79ec12e9fa38aeaf1)\n\nChange-Id: I874c5d03c134dc3c331fba423b5280366296287c\n"
    },
    {
      "commit": "00b314436f4fdfada4bbf1e79ec12e9fa38aeaf1",
      "tree": "d1d6075692ef537e80d05255a13204a61f0f8a04",
      "parents": [
        "729b12c7a91f9caa65af77197cf6a8814a5a2051"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Jan 27 17:32:37 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 28 16:27:52 2014 +0000"
      },
      "message": "Change ResourceType cookies to int32_t.\n\nAlso change the order of parameters in ResTable constructors\nto avoid ambiguity.\n\nChange-Id: If7bfa1f640dddca39b9f26a3ce84081fa7b6e6e3\n"
    },
    {
      "commit": "a0c6260705c841f501282e0e337970ca9a00e064",
      "tree": "5bbe084bd77b819306f743d5fba14ab4a9fff55e",
      "parents": [
        "f85e41f29a0e9313c2d4725f9d9648591ea49f3b"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Jan 24 13:51:51 2014 +0000"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 27 10:31:11 2014 -0800"
      },
      "message": "AssetManager cookies should be int32_t and not void*.\n\nCookies are really indices into vectors and arrays, so\nthey don\u0027t need to be void*. We choose int32_t instead\nof size_t to allow their width to be well specified.\n\nChange-Id: I319f271bd4f102dee7cb9f00df4c75ea697456f5\n"
    },
    {
      "commit": "ca0b0c18e7eef130e40679b0e77bbcd9a8c901cc",
      "tree": "0de7e7dc08faddb8fc32dbd148fb85e6fa48fda3",
      "parents": [
        "90f58dbf79057b185b04c5003c8bcae10116409b"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Dec 16 15:04:10 2013 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 27 10:31:11 2014 -0800"
      },
      "message": "Fix MCC/MNC typo\n\nManual merge of https://android-review.googlesource.com/70831 across\nthe header refactoring.\n\nChange-Id: I28b6a61e89b68d914124122882976a9d2f81a609\n"
    },
    {
      "commit": "560566d2915c03bed338fc532ac7f7aa3620cfdf",
      "tree": "05c38c1fdcea2989eab2ff6e2934afa4f1f09326",
      "parents": [
        "e1aa223657dd1def8609b377afa86a024bfd4e14"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Dec 03 13:16:03 2013 +0000"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 27 10:31:11 2014 -0800"
      },
      "message": "Reimplement ZipFileRO in terms of libziparchive.\n\nThis lets us share zip archive processing code with both\nthe runtime (Art, dalvik) and critical java code\n(StrictJarFile).\n\nThis change also moves several utility methods to ZipUtils\nand dedups code across several zip inflation methods.\n\nOne of the side effects of this change is that several\nprocessing loops are now O(n) instead of O(n^2).\n\nbug: 10193060\n\n(cherry picked from commit afd31e08299008fdc5c2813f21b2573f29dc53df)\n\nChange-Id: Iae67e62f1dc6dfc3f43e29bc38e3ffd1cb14d191\n"
    },
    {
      "commit": "16c4d154dca43c662571129af31b27433b919a32",
      "tree": "ca326aee44fd70c7db61f7a9632c0d29f6565414",
      "parents": [
        "9ab9b93eae8b2fc747d6101cf0e4c19b2218715f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jan 24 13:27:13 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 27 10:31:10 2014 -0800"
      },
      "message": "Revert \"move libandroidfw to frameworks/native\"\n\nThis reverts commit 84b6292c33d71b5739828d08aa8101d1954577f2.\n"
    },
    {
      "commit": "745d4efc8369d255341d810790132660e33d3b61",
      "tree": "f28ae30721d932409fd8189ac6ef5c0289d106c2",
      "parents": [
        "9fc157a4767f54d1cff53dc9489638b67aec2da3"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Jan 27 11:17:22 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Jan 27 11:20:24 2014 +0000"
      },
      "message": "AssetManager cookies should be int32_t and not void*.\n\nCookies are really indices into vectors and arrays, so\nthey don\u0027t need to be void*. We choose int32_t instead\nof size_t to allow their width to be well specified.\n\n(cherry picked from commit ebfdd0f467e39c3af8d92cade78263935340acb7)\n(cherry picked from commit a7fa2e592e2e579e5acdb903dba83fc074ebc215)\n(cherry picked from commit a9d5701b034ed2d9771b3f0943e1add00741d7cd)\n\nChange-Id: I2aed3db568b6fdc487bf99e2c5dd123206736fda\n"
    },
    {
      "commit": "4482e7cb67c516453a67d73e98a085a5f3576953",
      "tree": "c3e17c68af640b8ed4c4f1881e7798ef4095f154",
      "parents": [
        "a0ab49bb52f44eac97f81117d6864edd6a2e0487"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sonymobile.com",
        "time": "Tue Nov 26 14:48:22 2013 +0100"
      },
      "committer": {
        "name": "Zoran Jovanovic",
        "email": "zoran.jovanovic@sonymobile.com",
        "time": "Mon Dec 16 12:42:36 2013 +0100"
      },
      "message": "Fix ResTable_config::CONFIG_* typo (MCC vs MNC)\n\nIn commit 08d5b8f, the ResTable_config::CONFIG_* enum was incorrectly\nchanged to assign the same value to both CONFIG_MCC and CONFIG_MNC:\n    - CONFIG_MCC \u003d 0x0001,\n    - CONFIG_MNC \u003d 0x0002,\n    + CONFIG_MCC \u003d ACONFIGURATION_MCC,\n    + CONFIG_MNC \u003d ACONFIGURATION_MCC,\n\nThis commit assigns CONFIG_MNC the value ACONFIGURATION_MNC, as\nintended.\n\nChange-Id: I3b8799914a55debdb3ff30a82ada7ad990c49970\n"
    },
    {
      "commit": "afd31e08299008fdc5c2813f21b2573f29dc53df",
      "tree": "7f83dd8f1e7ed71d4fe8ce280841e43ce275ac6d",
      "parents": [
        "6e2d0c1d91f644ab50e0c0b7cae4306262a4ca41"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Dec 03 13:16:03 2013 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Dec 09 16:23:16 2013 +0000"
      },
      "message": "Reimplement ZipFileRO in terms of libziparchive.\n\nThis lets us share zip archive processing code with both\nthe runtime (Art, dalvik) and critical java code\n(StrictJarFile).\n\nThis change also moves several utility methods to ZipUtils\nand dedups code across several zip inflation methods.\n\nOne of the side effects of this change is that several\nprocessing loops are now O(n) instead of O(n^2).\n\nbug: 10193060\n\nChange-Id: I3c7188496837a47246c4f342e45485a70fef3169\n"
    },
    {
      "commit": "84b6292c33d71b5739828d08aa8101d1954577f2",
      "tree": "d39f8bbaf0f20fa086038741e117278bb67ba1b2",
      "parents": [
        "92a6f3018ace5aa2d5ea74e7d378b6960b5e053e"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu Oct 03 10:30:18 2013 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu Oct 03 10:30:18 2013 -0700"
      },
      "message": "move libandroidfw to frameworks/native\n\nChange-Id: Ic5b8a2742c7141156ab0f00ca29097bfe92bce60\n"
    },
    {
      "commit": "87eac99a21772ae56018cb81db6966557b459554",
      "tree": "f41cab7353b4ffd8c757bc67a95e34091ca7f971",
      "parents": [
        "bdd61696c6720faa14ca9fdf180e519138b3d087"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Mon Sep 09 17:44:59 2013 -0700"
      },
      "committer": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Tue Sep 10 20:47:43 2013 -0700"
      },
      "message": "Remove dependency on JNIHelp header side effects.\n\nBug: 10680559\nChange-Id: I47870d6c48906e0a420c52b7bc5945ffe29c68a2\n"
    },
    {
      "commit": "52a9a10b6b8c7b7a9f97777541841b94d4fd9754",
      "tree": "aaf72e50f157c69abc8be70991c16e93bef47fc4",
      "parents": [
        "0dff7064897afd4e07993bac28ae877aaeb1b5e3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 02 01:38:38 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 06 13:07:42 2013 -0700"
      },
      "message": "Clearly separate consumer and producer interfaces\n\nBug: 9265647\nChange-Id: Ic68e91788d0a05251e1d2fb9f9d4de403c7099bf\n"
    },
    {
      "commit": "83ad4e393ae8223745924ac9b37949c8efbce3f2",
      "tree": "469ca23b4b673f98a9c5e17983778b3b41201443",
      "parents": [
        "0281b406365080bce90d8562950cfcfd83b48303"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 05 13:27:39 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 05 14:12:50 2013 -0700"
      },
      "message": "Remove an unused C zip API.\n\nChange-Id: I10ae849bdedf3e3bb97547c4f9e5a20742e9d6b1\n"
    },
    {
      "commit": "d45c68dd24fe3dd510af5a9591b5e2f509b56772",
      "tree": "f9a3d18ecce9509eddcc2b4c5899e2b7c90765a2",
      "parents": [
        "af728bd201195799c8e993ece145d607b9ca67df"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 31 12:14:24 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 31 15:57:49 2013 -0700"
      },
      "message": "Resource memory optimization.\n\nDon\u0027t ever need the cached UTF-16 string conversions on the\ndevice.  Don\u0027t need to create those strings, and don\u0027t need\nto create the lookup array for them at all.  This requires\nfixing all of the remaining places in the platform where we\ninteracted with the resources with the blind assumption that\nthe strings are UTF-16.\n\nChange-Id: Ia0e5a150499837471e494e85b23b05fa06e0cf1d\n"
    },
    {
      "commit": "9d3b1a424c5c61e24e9659d15fb353026a00d925",
      "tree": "0e543391e3ac7b6ac0bff377e08cd2e233ef7363",
      "parents": [
        "8f5e3d13e166e4873e130a5ef7c987333dbac917"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 01 19:07:15 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 01 20:11:42 2013 -0700"
      },
      "message": "Move input library code to frameworks/native.\n\nNo longer compile libandroidfw as a static library on the device\nsince it already exists as a shared library.  Keeping the static\nlibrary would force us to provide a static library version of\nlibinput for the device as well which doesn\u0027t make sense.\n\nChange-Id: I3517881b87b47dcc209d80dbd0ac6b5cf29a766f\n"
    },
    {
      "commit": "1f5762e646bed2290934280464832782766ee68e",
      "tree": "123bcdf3ba4c98f885631b02bb90803b7885e438",
      "parents": [
        "9f3e1175657425115e863fdb256b83cadedc33e9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 06 20:20:34 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 07 17:09:46 2013 -0700"
      },
      "message": "libutils clean-up\n\nChange-Id: I11ee943da23a66828455a9770fc3c5ceb4bbcaa9\n"
    },
    {
      "commit": "fb903a45d7b924c1dfacadaa99ebdf93fd8a1de4",
      "tree": "6db6caa0c8d1cb6ac02175c5e2721fc8e5e605dd",
      "parents": [
        "007d4d7040c9b41de584e79ba7dbd15d25f54971"
      ],
      "author": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Mon Mar 18 21:17:26 2013 +0000"
      },
      "committer": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Fri Apr 26 15:07:09 2013 +0100"
      },
      "message": "Allow compiling aapt for the device\n\nChanges:\n\n- The static device version of libandroidfw now includes\n  the extra functions needed by aapt. I could only find\n  a few host tools that use the static library, so this is\n  hopefully not a problem.\n\n- The pseudolocalization code is moved into aapt.\n  It was previously in libhost, but only used by aapt.\n\nChange-Id: Ib393ebb7dcebee8abbb628cbe5255ea1679674ac\n"
    },
    {
      "commit": "a44dd26a75e24cc021802288fb81f4761e47be6b",
      "tree": "ce61491d8a35cc7a61af5597f6709b3c92504a54",
      "parents": [
        "c3d0a81a4a1809446bc1fa9abc9b5b74b01e676e"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Apr 10 21:12:00 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Apr 22 17:01:51 2013 -0700"
      },
      "message": "Rewrite input handling for native applications\n\nBug: 8473020\nChange-Id: Ic4353d8924ab877bec21aff8c2dba9fe725bf906\n"
    },
    {
      "commit": "bdb706e48d71af498156efbb10d0f0c1fcef8878",
      "tree": "d7fc1d7057e9055fa23d1c49adcdbe7dd34799c3",
      "parents": [
        "8299f683f3fbe7ba0f5387b062b31de117882dba",
        "c6091c64c90e9557ea58e0d7cf75915aea7c6c3e"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Apr 05 21:43:31 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 05 21:43:31 2013 +0000"
      },
      "message": "Merge \"Pipe through device resolution information\" into jb-mr2-dev"
    },
    {
      "commit": "1951ce86c21445ac191e4d2d95233f4f5c096b56",
      "tree": "8c68eb0fe87565bcdaf7cd8bd2a56a03319bede5",
      "parents": [
        "41c076715da58990dc9b0be749bba28fc75d3b78"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 04 22:45:12 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 04 22:45:12 2013 -0700"
      },
      "message": "Correctly manage the lifecycle of IME InputChannels.\n\nInputChannels are normally duplicated when sent to a remote process\nover Binder but this does not happen if the recipient is running within\nthe system server process.  This causes problems for KeyGuard because the\nInputMethodManagerService may accidentally dispose the channel\nthat KeyGuard is using.\n\nFixed the lifecycle of InputChannels that are managed by the IME\nframework.  We now return a duplicate of the channel to the application\nand then take care to dispose of the duplicate when necessary.\nIn particular, InputBindResult disposes its InputChannel automatically\nwhen returned through Binder (using PARCELABLE_WRITE_RETURN_VALUE).\n\nBug: 8493879\nChange-Id: I08ec3d13268c76f3b56706b4523508bcefa3be79\n"
    },
    {
      "commit": "c6091c64c90e9557ea58e0d7cf75915aea7c6c3e",
      "tree": "f5f69d5bbd0270d7a1b7564920e6f31f381704cd",
      "parents": [
        "77d94957d793aba16a1352d25d5555bf59fe74e7"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Apr 01 20:56:04 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Apr 04 18:10:37 2013 -0700"
      },
      "message": "Pipe through device resolution information\n\nBug: 8424494\nChange-Id: Iafeeee0d5cd29342c1cdc86b9616222aaa5d1b94\n"
    },
    {
      "commit": "29479ebe1007361222bf6ab4d5e2a27927d4b8e8",
      "tree": "704baab78634aac8fb8139e8a9ea212714d4d26d",
      "parents": [
        "c145317d0b19fbd1e7aff8519696146853367b89"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 14 14:36:04 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 15 12:47:40 2013 -0800"
      },
      "message": "clean-up following Surface split\n\nChange-Id: I853a76d92d957ee38a36fcdd280d6407ec316987\n"
    },
    {
      "commit": "56a2301c7a1169a0692cadaeb48b9a6385d700f5",
      "tree": "7dfa8ab456c4e2915c095383d37847caa0d013be",
      "parents": [
        "b41af58f49d371cedf041443d20a1893f7f6c840"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 12 15:41:49 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 12 15:41:49 2013 -0800"
      },
      "message": "Implement issue #6646859: 4K!!!!  4K!!!!  4K!!!!\n\nChange-Id: Ib05a2eb6a03db50074805a437a3639a7d10684a0\n"
    },
    {
      "commit": "1df477acf60538f9de18bd597e090d075fa83509",
      "tree": "a163bd932074c49b9fac6792ca85d12569559dd5",
      "parents": [
        "b06870bf49055721bd43b5bbd742feb8422fc071"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Jan 31 16:19:18 2013 -0800"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Feb 01 16:29:59 2013 -0800"
      },
      "message": "Add initial plumbing for brightness keys\n\nChange-Id: I595e8a25e6c245e4b22f06df9a8acdbb75e4b041\n"
    },
    {
      "commit": "d47f7d8b5fe3a3861d7cbdc5f912235407823c8e",
      "tree": "b4c4e636bac379ded38550ade39e39c2d86467ea",
      "parents": [
        "4e7ec240cabbdf3ac9776a691be0a46ea4e2e69e"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 18 09:48:38 2012 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 18 11:22:21 2012 -0800"
      },
      "message": "Rename ISurfaceTexture and SurfaceTexture\n\nThe C++ class names don\u0027t match what the classes do, so rename\nISurfaceTexture to IGraphicBufferProducer, and SurfaceTexture to\nGLConsumer.\n\nBug 7736700\n\nChange-Id: I08e677faf2ebb418ef131d0a8008e01037db0e50\n"
    },
    {
      "commit": "7b172a49a90ea6784dbfe0002474f9d4fd4ace1a",
      "tree": "05db15b0b2b922fa644199d48d8769624bacbe34",
      "parents": [
        "e4d08f11c49ff4c554df80c12fa2b5b04831e2f5",
        "58ed5d748c0b9b64845975ef5844ad313de7c3f6"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 13:08:25 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 07 13:08:25 2012 -0800"
      },
      "message": "am 58ed5d74: am 768d9e1a: Merge \"Correct executable bit for source files\"\n\n* commit \u002758ed5d748c0b9b64845975ef5844ad313de7c3f6\u0027:\n  Correct executable bit for source files\n"
    },
    {
      "commit": "58ed5d748c0b9b64845975ef5844ad313de7c3f6",
      "tree": "507af3879bc894eb854712a1fe6c0953805a895c",
      "parents": [
        "9197d170b770f2b87abd0cd0e13dcf71e5a181c2",
        "768d9e1a72ceee7d4a5f608776b87b62d6ce4a04"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 11:52:12 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 07 11:52:12 2012 -0800"
      },
      "message": "am 768d9e1a: Merge \"Correct executable bit for source files\"\n\n* commit \u0027768d9e1a72ceee7d4a5f608776b87b62d6ce4a04\u0027:\n  Correct executable bit for source files\n"
    },
    {
      "commit": "3a084af2e90849aaa8beb3a610189e3399c63ea0",
      "tree": "ba4b87d227674fd68f9ea395649fde32778620f0",
      "parents": [
        "9d547d6934f64189e368c0b190fb4cf49c95a557"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 10:19:47 2012 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 10:27:31 2012 -0800"
      },
      "message": "Correct executable bit for source files\n\nMany media files and source code files were marked as executable in Git.\nRemove those.\n\nAlso a shell script and python script were not marked as executable.\n\nChange-Id: Ieb51bafb46c895a21d2e83696f5a901ba752b2c5\n"
    },
    {
      "commit": "c59b2f9a774c024fe8c893d956cd2749a6bd2673",
      "tree": "b039afcd6164ad08a273665b6320d98aa5b5aea5",
      "parents": [
        "e0e9e9462c8035c1883a0bd16ee62d861c77e550"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Oct 24 12:31:10 2012 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Oct 24 12:31:10 2012 -0700"
      },
      "message": "More changes to fix PDK build:\n\nmove screencap back to frameworks/base\nmove libdiskusage to frameworks/native\n\nChange-Id: I8abe425c4bbf305bbe8650094c40c16df8c6d5e4\n"
    },
    {
      "commit": "4fbbda4cecb078bd3867f416b02cc75f5455284f",
      "tree": "e4d988ec4be9e86e7fa5a2cfb1e20ecb1342ce72",
      "parents": [
        "5e21bf934b2a71b595deb9856a2044eea4dbce86"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Sep 24 18:34:07 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Sep 25 17:34:48 2012 -0700"
      },
      "message": "Handle multi-user mountObb() requests.\n\nSince emulated external storage paths differ based on execution\ncontext, carefully fix up paths for various use-cases:\n\n1. When sending paths to DefaultContainerService, always scope\n   OBB paths as belonging to USER_OWNER.\n2. When sending paths to vold, always build emulated storage paths\n   visible to root.\n3. Always use the original untouched path when talking with apps.\n\nMount OBB containers using shared app GID, so that an app can read\nthe mount point across users.\n\nHandle legacy paths like \"/sdcard\" by resolving the canonical path\nbefore sending to MountService.  Move tests to servicestests, and\nadd tests for new path generation logic.\n\nBug: 7212801\nChange-Id: I078c52879cd08d9c8a52cc8c83ac7ced1e8035e7\n"
    },
    {
      "commit": "83d616a9c7b9505153d258511eb5c16b552e268d",
      "tree": "4df9620550008dc0e3e0daf21f442b9fe6cc8051",
      "parents": [
        "7a8cce3d8a6fb781d840ddf60324a301f5a3f2d9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 09 20:33:43 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Sep 10 15:48:47 2012 -0700"
      },
      "message": "Make input system aware of multiple displays.\n\nThe input system needs to know about the window that has\nfocus, even if it is on a secondary display.  So now we\nsend it the list of all windows and indicate which display\nthey are on.  We filter the list of windows as necessary\nwhen delivering touch events.\n\nTo keep things simple, monitor input channels and input\nfilters are not supported except on the main display.\nWe also do not pass the display id to applications; it is\nonly used inside the input system for now.\n\nProperly scale touch coordinates based on the viewport.\nThis will be needed to ensure that touch works on external\ndisplay as well as when the internal display is being used\nto simulate a different resolution.\n\nChange-Id: I1815579a52fcc852c519b5391fc7ab8767c2dc59\n"
    },
    {
      "commit": "cbad976b2a36a0895ca94510d5208a86f66cf596",
      "tree": "06422b1c420f27faede921f0813dbfc228ca030d",
      "parents": [
        "14c625188affcce2e6db3c8b2f96b63eeb0f10a0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 04 21:57:59 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 07 13:26:31 2012 -0700"
      },
      "message": "Add support for Wifi display.\n\nChange-Id: I99693786cf9d07d07d3400046c55eb4933730b80\n"
    },
    {
      "commit": "035ce2ca92742894f7f906c93d7d217c647aa19a",
      "tree": "091278302dd86f6009db3d86ff95dd607fef8c11",
      "parents": [
        "167611811d4fd6318bc366128590701274488e84",
        "5f7979993979466c79ab4f38d83c6f2aca361662"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Tue Sep 04 15:01:03 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 15:01:03 2012 -0700"
      },
      "message": "Merge \"Add support for \"-rtl\" in resources\" into jb-mr1-dev"
    },
    {
      "commit": "64a55af0ac700baecb0877235eb42caac59a3560",
      "tree": "0f3c36ce8204e6cf8eedf04ce9ae24373239ddd8",
      "parents": [
        "0b722fe9ce98d97dbcb6fefd170b85ab7037e528"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 26 02:47:39 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 14:34:54 2012 -0700"
      },
      "message": "Add plumbing for new surface flinger display API.\n\nCleaned up the implementation of Surface and SurfaceSession\nto use more consistent naming and structure.\n\nAdded JNI for all of the new surface flinger display API calls.\n\nEnforced the requirement that all Surfaces created by\nthe window manager be named.\n\nUpdated the display manager service to use the new methods.\n\nChange-Id: I2a658f1bfd0437e1c6f9d22df8d4ffcce7284ca2\n"
    },
    {
      "commit": "5f7979993979466c79ab4f38d83c6f2aca361662",
      "tree": "90c8b098b3c9a53a90c039641b0b7ba379d6b4eb",
      "parents": [
        "5e8e41e41aecd2a4951659a1f3507f3371e0cc47"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Jun 15 20:16:41 2012 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Aug 23 14:55:33 2012 -0700"
      },
      "message": "Add support for \"-rtl\" in resources\n\n- fix bug #7035019 Need to have \"-rtl\" support for Resource\n\nChange-Id: Ic82145c2ac672729d8a6c695a5f343276a1a0a2c\n"
    },
    {
      "commit": "b696de5c10ebcc7bf42d8487fc0e56e0e937754d",
      "tree": "3339fd190bad6be36c5e2ba8f57ebc11a5bb972b",
      "parents": [
        "155fc70252fd9ccee1f05da4e6966a99ec86d499"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 27 15:38:50 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 27 18:14:56 2012 -0700"
      },
      "message": "Move and rename user activity event type constants.\n\nChange-Id: Ie565808796773b6896e71ddfac6aaaf8031de846\n"
    },
    {
      "commit": "de7a8ead2467a4a152a5a9b2416c8048f1b48bbb",
      "tree": "5ab60322af4c99c1c24eb96f44883a77a867d843",
      "parents": [
        "82134f76936be049cc4b23a894ba7decc1d59952"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 13 18:28:57 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jun 14 04:16:26 2012 -0700"
      },
      "message": "Add new ASSIST key and map it to the global assist intent.\n\nMoved some duplicate code from SearchPanelView and LockScreen\nover to SearchManager to avoid creating yet another copy of it\nin PhoneWindowManager.\n\nBug: 6594275\nChange-Id: Ib4ebcd6817639d17548952ab2ce7cb876c05777c\n"
    },
    {
      "commit": "51df04b93e8e362edd867abd7efaf1659b8b8b82",
      "tree": "5c416d400d53da96891465fd5b602e063925622b",
      "parents": [
        "a5b0698231459ac5b54cf8e8952ac5c2b2b2198b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 03 23:14:14 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 04 12:34:03 2012 -0700"
      },
      "message": "Port the legacy velocity tracker strategy.\n\nFor comparison purposes, port the legacy velocity tracker\nalgorithm as it behaved prior to ICS.\n\nBug: 6413587\nChange-Id: I7e8e56584dcdb1a3c660ca9d8f9c5bd5d868e449\n"
    },
    {
      "commit": "a5b0698231459ac5b54cf8e8952ac5c2b2b2198b",
      "tree": "cc91df96eaa76fe98969e40f9b4e9b4dd0babbd3",
      "parents": [
        "18f329e9480fca75210bb7496e5b4bc987b4ad8f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 03 22:46:07 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 04 12:34:03 2012 -0700"
      },
      "message": "Implement a second order integrating VT strategy.\n\nBug: 6413587\nChange-Id: I51bc7b8cbff22b10b728fc84ee15370e9984dd55\n"
    },
    {
      "commit": "18f329e9480fca75210bb7496e5b4bc987b4ad8f",
      "tree": "8be6eebdeb6dfd2cd64e0715048db571209a7096",
      "parents": [
        "433927c52f2758e3e69f69d7e03d571ee4f18a26"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 03 14:18:26 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 04 12:34:03 2012 -0700"
      },
      "message": "Implement a weighted least squares VelocityTracker strategy.\n\nNo change to the default strategy.\n\nBug: 6413587\nChange-Id: I08eb6f9a511e65ad637359b55b5993c26ba93b40\n"
    },
    {
      "commit": "1fbbc0716f9b70c6dcee00c4550757077ef7f7b5",
      "tree": "3e6ba76e20907a8f1073e9872d12a82903043bc6",
      "parents": [
        "f47e76e2c78e78e26110786e99548d718d177c32",
        "53dd12a66884540b87fe428383e2f79d0f5e32ba"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 03 21:16:38 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jun 03 21:16:38 2012 -0700"
      },
      "message": "Merge \"Implement an integrating VelocityTracker strategy.\" into jb-dev"
    },
    {
      "commit": "f47e76e2c78e78e26110786e99548d718d177c32",
      "tree": "654c967f3332be1ee918cc4d8ab1f35451db7e13",
      "parents": [
        "cc822a769e752c2845dc795f05b7b35b5b3f6614",
        "9eb7d86181729c3eb769d71123c4ce9ffc868f08"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 03 21:16:18 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jun 03 21:16:18 2012 -0700"
      },
      "message": "Merge \"Make velocity tracker strategy configurable.\" into jb-dev"
    },
    {
      "commit": "53dd12a66884540b87fe428383e2f79d0f5e32ba",
      "tree": "7493fd04d9e2ad3143b679b9ae30829877ef38e4",
      "parents": [
        "9eb7d86181729c3eb769d71123c4ce9ffc868f08"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 01 13:24:04 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 03 19:23:58 2012 -0700"
      },
      "message": "Implement an integrating VelocityTracker strategy.\n\nThis algorithm better tolerates certain kinds of errors in the\ntouch input than the least squares strategy but it may underestimate\nthe velocity of accelerating movements.  This algorithm is\nmainly of interest as a baseline for testing and comparison with the\nleast squares algorithm, which remains the default.\n\nBug: 6413587\nChange-Id: I8ddb50084e44875e234717907e5b06d03f59788c\n"
    },
    {
      "commit": "9eb7d86181729c3eb769d71123c4ce9ffc868f08",
      "tree": "5844b6bfd4c9eac8bc5015fa54f5255a376805c8",
      "parents": [
        "6e8e41a336dfc0c43b672fd105a23aa48c93ec67"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 01 12:39:25 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 03 19:21:49 2012 -0700"
      },
      "message": "Make velocity tracker strategy configurable.\n\nThis change is very useful for testing purposes because it makes it\neasy to compare different implementations to see how they behave.\n\nThere is no change to the current default strategy.\n\nBug: 6413587\nChange-Id: I4d8567aa4160571ba9fa397ce419882cd9366749\n"
    },
    {
      "commit": "486590963e2207d68eebd6944fec70d50d41116a",
      "tree": "7a176c6cda01c64980c5c27f9bf495b64d08c84f",
      "parents": [
        "20c15a4271ea3a7fb2210430bfc53f611603cf76"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 31 15:21:51 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 31 17:22:27 2012 -0700"
      },
      "message": "Skip eglSwapBuffers() call when we do not draw to GL\n\nThe fix is to track when we issue GL drawing commands, and to skip the\ncall to eglSwapBuffers() when a DisplayList does not result in\nany actual rendering calls to GL.\n\nIssue #6364143 QuickMuni list items and buttons flicker instead of fade\n\nChange-Id: I60a02c61a58c32d92481a1e814b4c8a49c6a37a3\n"
    },
    {
      "commit": "90729403d50488566eb4ae0e09bb1be21979a633",
      "tree": "52f3abce5411493e204de30f273bfa955c95af59",
      "parents": [
        "dcab190bd23f632f278af448b0c85b4cadcc6692"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 14 18:46:18 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 14 18:57:05 2012 -0700"
      },
      "message": "Detect when pointer has stopped moving.\n\nSome input devices do not generate ACTION_MOVE events while all\npointers have stopped, thereby lulling the VelocityTracker into\na false sense of complacency.  Before handling the following sample,\nreset the VelocityTracker state so as not to be influenced by\nearlier samples before the pointer stopped.  The velocity after\nstopping is assumed to be discontinuous.\n\nBug: 6413587\nChange-Id: I6387bc036ff141d083d3d17a89e37eeaa3188349\n"
    },
    {
      "commit": "7174a491bc1f89da65eaef3be25f3ea3f3e3bab5",
      "tree": "2171b655c03b965e92a68889ff5bdfea6da10757",
      "parents": [
        "85bd0d62830a098c1bdc720dfdcf4fe1b18b657c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 14 17:00:27 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 14 18:31:53 2012 -0700"
      },
      "message": "Improve touch event resampling.\n\nFixed a few bugs related to the id-to-index mapping for\npointer coordinates.\n\nTightened the bounds on the resampling time interval to\navoid predicting too far into the future.\n\nOnly lerp X and Y components of motion events.\n\nAlter the future to satisfy past predictions.  (Rewrite touch\nevents to conceal obvious discontinuities.)\n\nAdded a system property to control whether resampling is enabled\nfor debugging purposes.\n\nBug: 6375101\nChange-Id: I35972d63278bc4e78148053a4125ad9abeebfedb\n"
    },
    {
      "commit": "85bd0d62830a098c1bdc720dfdcf4fe1b18b657c",
      "tree": "7b1d7b8335caabd8d2f641e5b56a31ff58d6d2b7",
      "parents": [
        "0d607fbe546ac943de38dad33ae681b09efec6ea"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun May 13 15:30:42 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun May 13 16:10:57 2012 -0700"
      },
      "message": "More VelocityTracker refactoring.\n\nBug: 6413587\nChange-Id: Ida1152e7a34d5fe5caab5e6b5e1bc79f6c7a25e6\n"
    },
    {
      "commit": "8a90e6e3174083f274538567d851f98478fc83e9",
      "tree": "2ac01015731bac0d759c8e7b6526ffa4874a369b",
      "parents": [
        "2f0957607411b99810226ad38d59cf18718b86d0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 11 12:24:35 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 11 12:32:56 2012 -0700"
      },
      "message": "Minor refactoring before starting on velocity tracker changes.\n\nBug: 6413587\nChange-Id: I5eba2bb57193bff78cb3740de5f87aca0b31d154\n"
    },
    {
      "commit": "fd23e3ed976b22b9a92ddb2cb3a46f9d2a0ce23f",
      "tree": "b3d9f4d12fe2d93ba9979e6d66b1d9f4de016178",
      "parents": [
        "af67fc65bf113b028ff33e71cd6a45810018c273"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 09 13:34:28 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 09 13:34:28 2012 -0700"
      },
      "message": "Fix bugs in fallback key handling.\n\nIf a fallback key is generated using a key plus a modifier,\nthen it\u0027s possible we might get a different fallback key\ngenerated if the modifier has changed.  PhoneWindowManager\nneeds to remember which fallback is last generated for a\ngiven key code so that it can apply the same fallback action.\n\nWhen generating cancellation events, it\u0027s important to have\npreserved the policyFlags of the original event.  Otherwise\nwe may not dispatch the cancellation properly.  For example,\nsome actions are not performed if the POLICY_FLAG_TRUSTED\nis not specified.\n\nRemember the metaState associated with a key event so we can\ninclude it when canceled.\n\nTell the policy when a fallback is being cancelled so that it\ncan clean up its state.\n\nAfter a SEARCH shortcut is invoked, clear the flag indicating\nthat a shortcut is pending.  This is to prevent SEARCH from\ngetting stuck down in the case where we might forget to send\nthe up.  (Shouldn\u0027t happen anymore after the prior fixes.)\n\nBug: 5616255\nChange-Id: I68f0a9679c7af464eaf31c099f2aa50b53fecf1f\n"
    },
    {
      "commit": "0632b35b6828cd4324b3d218c2e38f895e819aad",
      "tree": "671bc68d2d73cc08001ad1fda16795bd8bf6f3d4",
      "parents": [
        "5a00661bd6a1bfe82656c51d23a3ac6be99602a2",
        "daa3753a04699724d2cfe824ac1f5a266d643a05"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 01 18:39:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 01 18:39:00 2012 -0700"
      },
      "message": "Merge \"Improve handling of built-in keyboard.\" into jb-dev"
    },
    {
      "commit": "daa3753a04699724d2cfe824ac1f5a266d643a05",
      "tree": "ddc33d395dd0f3d01a95775397356983fb28a076",
      "parents": [
        "32c8113510b2774f865e8ac763976b90d9db2706"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 01 15:54:03 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 01 16:34:20 2012 -0700"
      },
      "message": "Improve handling of built-in keyboard.\n\nThe window manager policy made some incorrect assumptions about the\nmeaning of the Configuration.keyboard field.  We need to be more\ncareful about distinguishing between built-in and external keyboards.\n\nMost of this change is to move the determination of the parts of\nthe Configuration related to input devices into the WindowManagerService\nleveraging new features of the InputManagerService to good effect.\n\nThen we plumb through the flag that indicates whether a device\nis internal or external so that we can be more particular about\nhow the lid switch effects changes to the Configuration.\n\nBug: 6424373\nChange-Id: I36a1c22ade35e578955465a25940a33f227b9763\n"
    },
    {
      "commit": "92bc5d086ab250c8a1cb9b5e6d5273a0ba75e698",
      "tree": "ae5ce3e0fc5c00ed0d5eceb37ca600bb3ecff1ad",
      "parents": [
        "8ccfbdddabf3387a1ac9d46bd057bea64eb30ef3"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 01 11:20:20 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 01 11:20:20 2012 -0700"
      },
      "message": "Revert \"Add header for forward compatibility\"\n\nGPL build fix mistakenly merged into master\n\nThis reverts commit fd862e9828d544f593a622f2914d1257366ae802.\n"
    },
    {
      "commit": "771526c88f5cc4b56a41cb12aa06a28d377a07d5",
      "tree": "71c36f271192ee66f069f0d1130a73e91b8302b9",
      "parents": [
        "330314c6fb7c178c0f0da65d6aa8c9e7d3004568"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 27 15:13:25 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 27 15:58:42 2012 -0700"
      },
      "message": "Resample touch events on frame boundaries.\n\nBug: 6375101\nChange-Id: I8774e366306bb2b6b4e42b913525bf25b0380ec3\n"
    },
    {
      "commit": "5bbd4b4f5fc19302fa017ad6afee6eb2d489d91a",
      "tree": "2bc118a5ef332003cc7f6791968076c48b3cf84b",
      "parents": [
        "9e6d4b035d4f012d23264d3d2bc946b1ca02dba1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 20 19:28:00 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 20 20:11:12 2012 -0700"
      },
      "message": "Get alias for Bluetooth devices.\n\nBluetooth devices can be renamed by the user.  Make the\ninput system aware of the user-specified name and transparently\npass it down to applications.  This enables the keyboard\nlayout picker Settings UI to use device names that are\nconsistent with what the user set in the Bluetooth UI.\n\nBug: 6363157\nChange-Id: I8eea26ce2c69c2a3f09c8de02e9e847610e0419c\n"
    },
    {
      "commit": "9a2bbf680e3b5b98051b9f2913ab6bd31b77f79a",
      "tree": "0e6d9dc80e52a02873462a0e051e34fd6f657bbc",
      "parents": [
        "f35ea5d25b286e166bdc43a589a45b56b6358499"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 18 14:09:10 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 18 15:01:57 2012 -0700"
      },
      "message": "Improve handling of certain keyboard layout properties.\n\nAutomatically choose a default value for the \u0027number\u0027 property\nbased on the characters that the key can generate.\n\nDon\u0027t generate any character when ctrl, alt or meta is\npressed unless the behavior exactly matches the modifier keys\nthat are pressed.\n\nSimplified the basic keyboard layouts taking into account the\nnew features.\n\nBug: 6110399\nChange-Id: Ibc0f0b50c2dcf3f962a33ac77c24d2993b77637d\n"
    },
    {
      "commit": "6957b60378597ee5bffd9ac125cd8aff1142664f",
      "tree": "550b41abc78665e1a2c4257cced3dc3e5c3ba9b5",
      "parents": [
        "62d52f9ff8b57fcd5f7fc6e2373ec5851eb80757",
        "4a3862f6b0a8971b6ab5b1c46735b28e7604d0db"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 19:21:34 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 19:21:34 2012 -0700"
      },
      "message": "Merge \"Add Dvorak keyboard layout.\""
    },
    {
      "commit": "4a3862f6b0a8971b6ab5b1c46735b28e7604d0db",
      "tree": "4091176054868659d2fa6bec36540f56c08bd116",
      "parents": [
        "6ec6f79e1ac1714e3b837796e99f07ff88f66601"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 18:50:05 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 18:50:05 2012 -0700"
      },
      "message": "Add Dvorak keyboard layout.\n\nAdded support for mapping both scan codes and HID usages to\nKeyLayoutMap and KeyCharacterMap.  Keyboard overlays can\nnow influence how key events are mapped to key codes.\n\nBug: 6110399\nChange-Id: I6619fd2d3e1337c55928f89869dbc45b535c7ccf\n"
    },
    {
      "commit": "420489ca1f92b290f4737fb675bfd3db9cdbed29",
      "tree": "f77b82c1d51a6ef84858397b29cdd494949f1f72",
      "parents": [
        "4db3ca7f814c54ca80211053c583df5163237a60",
        "6ec6f79e1ac1714e3b837796e99f07ff88f66601"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 17:59:03 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 17:59:03 2012 -0700"
      },
      "message": "Merge \"Support loading keyboard layout overlays from resources.\""
    },
    {
      "commit": "6ec6f79e1ac1714e3b837796e99f07ff88f66601",
      "tree": "02aa55617bfa6dd2eb0bec29156e279c8afaaa0d",
      "parents": [
        "a3bc565882dd3984e995363642b1295fe3d24d10"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 16:52:41 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 17:56:32 2012 -0700"
      },
      "message": "Support loading keyboard layout overlays from resources.\n\nAdded the concept of a keyboard layout overlay, which is\na key character map file that has \"type OVERLAY\".\n\nAdded support for loading keyboard layout overlays from\nresources dynamically.  The layouts are reloaded whenever they\nare changed in the Settings application or an application\nis installed.  This is somewhat more aggressive than necessary\nso we might want to optimize it later.\n\nBefore system-ready, the input system uses just the generic\nkeyboard layouts that are included on the device system image.\nAfter system-ready, it considers the user\u0027s selected keyboard\nlayout overlay and attempts to load it as necessary.  We need to\nwait until system-ready before doing this because we need to\nbe in a state where it is safe to start applications or access\ntheir resources.\n\nBug: 6110399\nChange-Id: Iae0886d3356649b0d2440aa00910a888cedd8323\n"
    },
    {
      "commit": "3844067c3c6cca954250a734d8bd8dad673bb846",
      "tree": "62bf68255ea257d145358d498b0b1ea4752ea4fc",
      "parents": [
        "87459dbc595100f345cadb480afaa98eb07c7445",
        "a6d62b76ad8f09bd677fa115fbb71fdae2510552"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Apr 17 12:08:25 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 17 12:08:25 2012 -0700"
      },
      "message": "am a6d62b76: am 4f998a1e: am fd862e98: Add header for forward compatibility\n\n* commit \u0027a6d62b76ad8f09bd677fa115fbb71fdae2510552\u0027:\n  Add header for forward compatibility\n"
    },
    {
      "commit": "fd862e9828d544f593a622f2914d1257366ae802",
      "tree": "6236131fe9b1e6a5c82a8dbaee355806c6a8230e",
      "parents": [
        "3d7f0cb3d9724eb4a45611127e0986538e838964"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Apr 17 10:45:52 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Apr 17 10:56:17 2012 -0700"
      },
      "message": "Add header for forward compatibility\n\nChange-Id: I6e3da852d50fc14cfb6fb50f7dd867f37daea19d\n"
    },
    {
      "commit": "a47425a13c19f95057df78b8bb65bb25657e8753",
      "tree": "675c0d6bf611f2427bb3d11315d410bf9087b20a",
      "parents": [
        "c2346134bb519a54d50655cbef940fc3fdec60a9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 04:09:27 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 17:01:15 2012 -0700"
      },
      "message": "Add support for input devices that have vibrators.\n\nAdded a getVibrator() method to InputDevice which returns a Vibrator\nassociated with that input device.  Its uses the same API as the\nsystem vibrator which makes it easy for applications to be modified\nto use one or the other.\n\nBug: 6334179\nChange-Id: Ifc7f13dbcb778670f3f1c07ccc562334e6109d2e\n"
    },
    {
      "commit": "af9e8d38184c6ba4d2d3eb5bde7014a66dd8a78b",
      "tree": "50cf9dd27d673bc5b3f75e6e18e9577873eecd6c",
      "parents": [
        "cc1169831921d9295b2fc01c1eaf7e9b00836f53"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 17:32:48 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 18:54:54 2012 -0700"
      },
      "message": "Notify applications when input devices change.\n\nThis change allows the InputManager to keep track of what input\ndevices are registered with the system and when they change.\nIt needs to do this so that it can properly clear its cache of\ninput device properties (especially the key map!) when changes\noccur.\n\nAdded new API so that applications can register listeners for\ninput device changes.\n\nFixed a minor bug in EventHub where it didn\u0027t handle EPOLLHUP\nproperly so it would spam the log about unsupposed epoll events\nuntil inotify noticed that the device was gone and removed it.\n\nChange-Id: I937d8c601f7185d4299038bce6a2934fe4fdd2b3\n"
    },
    {
      "commit": "3d7f0cb3d9724eb4a45611127e0986538e838964",
      "tree": "76bd9d03c494a61de6677c0c53c002509e35643e",
      "parents": [
        "544f89aece46e8f4bbe4eed93116c8736e68ac07"
      ],
      "author": {
        "name": "Teng-Hui Zhu",
        "email": "ztenghui@google.com",
        "time": "Thu Apr 12 09:57:04 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Apr 12 10:59:57 2012 -0700"
      },
      "message": "Update header for forward compatibility\n\nChange-Id: Idf38142dc073dce14741e8da005e7d2eaf9242de\n"
    },
    {
      "commit": "49ccac530b5a798e3c4a79b66b51b8546a0deed1",
      "tree": "0b25fa1110effb7e8aa46905928b0b159daa96ab",
      "parents": [
        "db13a6bf788cc48af86c8acf6f74b416dfd84199"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 11 18:27:33 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 11 20:28:09 2012 -0700"
      },
      "message": "Refactor key code mapping.\n\nAdded handling for EV_MSC / MSC_SCAN which typically reports\nthe HID usage associated with a key.  This will enable key maps\nto map keys with HID usages that Linux does not natively recognize.\n\nRemoved keyCode and flags fields from EventHub RawEvent since\nthey don\u0027t necessarily make sense in isolation now that we\npay attention to HID usage codes too.\n\nRemoved the fallback code for mapping keys and axes.  In practice,\nan input device should be self-sufficient.  We should not ever\nneed to look at the built-in keyboard\u0027s key map.  In fact, there\nusually isn\u0027t a built-in keyboard anyhow.  This code was originally\nworking around a problem where we weren\u0027t loading the key map\nfor touch screens with virtual keys, which has long since been fixed.\n\nChange-Id: I0a319bdec44be9514f795526347397e94d53a127\n"
    },
    {
      "commit": "7b6a75872bd2df96a23453d31c2e2e7fcc373554",
      "tree": "4ef0ab122aa11dc7b039693cfce420b8be063996",
      "parents": [
        "d1f3de40ba50f0a3c4545139ea57242612f52971"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Apr 11 14:32:02 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Apr 11 14:32:02 2012 -0700"
      },
      "message": "Pass width/height parameters to webview\n\nWhen webview draws into an fbo layer, it needs to know the\nsize of that surface to create the rendering transform appropriately.\nThis change copies in the current viewport size to the structure that\nis passed to the webview.\n\nChange-Id: I7160b0836d00834134c799c95a439cdc045e2035\n"
    },
    {
      "commit": "9f25b7fdf216c9ef0bd2322cd223eeaf0d60f77f",
      "tree": "b0b509a261874435cab3f5f1a727c02b399bd91c",
      "parents": [
        "54ae14749bc7f9e73cfda35a8b49f9efa80a77fb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 10 14:30:49 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 10 18:23:58 2012 -0700"
      },
      "message": "Request key maps from input manager service.\n\nInstead of each application loading the KeyCharacterMap from\nthe file system, get them from the input manager service as\npart of the InputDevice object.\n\nRefactored InputManager to be a proper singleton instead of\nhaving a bunch of static methods.\n\nInputManager now maintains a cache of all InputDevice objects\nthat it has loaded.  Currently we never invalidate the cache\nwhich can cause InputDevice to return stale motion ranges if\nthe device is reconfigured.  This will be fixed in a future change.\n\nAdded a fake InputDevice with ID -1 to represent the virtual keyboard.\n\nChange-Id: If7a695839ad0972317a5aab89e9d1e42ace28eb7\n"
    },
    {
      "commit": "544f89aece46e8f4bbe4eed93116c8736e68ac07",
      "tree": "87969a0b012a964d47d87d7a10d7042e52ad51d7",
      "parents": [
        "c70e89e2a024645d425b49db2bbf3f20ed68e518"
      ],
      "author": {
        "name": "Teng-Hui Zhu",
        "email": "ztenghui@google.com",
        "time": "Mon Apr 09 14:51:48 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Apr 10 07:35:54 2012 -0700"
      },
      "message": "Update SurfaceTexture interface for forward compatibility\n\nChange-Id: I32d224428c0127800714a976b4d7bb68cc7c2464\n"
    },
    {
      "commit": "e38fdfae9196afd1bdc14c5ec6c12793af1e2550",
      "tree": "54523ccf3fc36a1b50410e2cb6e6d1f7230c40cf",
      "parents": [
        "dc0dbbd4a005f16624978b95817b33156acac526"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 06 14:51:01 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 06 14:57:19 2012 -0700"
      },
      "message": "Add a unique input device descriptor.\n\nThe purpose of the input device descriptor is to make it possible\nto associate persistent settings for each input device, such as the\nkeyboard layout.\n\nThe descriptor is a hash of the information we have about the\ndevice, such as its vendor id, product id, unique id, name,\nor location.\n\nBug: 6110399\nChange-Id: Idb80f946819b3f0dbf4e661bb0a753dbc2b60981\n"
    },
    {
      "commit": "c70e89e2a024645d425b49db2bbf3f20ed68e518",
      "tree": "3c59db831a4e09010b2ecbf3142c631c229706f0",
      "parents": [
        "8ea93aa6adc0e46c8931d31d4f940cdde97c672f"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Apr 03 13:53:46 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Apr 03 14:44:38 2012 -0700"
      },
      "message": "Fix hybrid build\n\nChange-Id: Ieef556473e1878d1319f9844fb0bbb974637999e\n"
    },
    {
      "commit": "56bad16f0200b7afff12fcc45c82723cf467cfee",
      "tree": "a27204dd2fab7e108e0b1920739ddee51faf8b56",
      "parents": [
        "b6a80077dca5a17f33350075485a534d7ed8fa2b",
        "7511f9cd2ff39075ff56c2558c785caffc8b4383"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 02 17:08:13 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 02 17:08:13 2012 -0700"
      },
      "message": "Merge \"Add Japanese specific key codes.\""
    },
    {
      "commit": "7511f9cd2ff39075ff56c2558c785caffc8b4383",
      "tree": "25f1eeba677060cfdc52fb75ea58107c0591a8b2",
      "parents": [
        "d56feb91b4b1ac9cd0e9b37dfa20d137825fbbfd"
      ],
      "author": {
        "name": "Yang Chuang",
        "email": "Yang_Chuang@asus.com",
        "time": "Fri Feb 10 15:18:26 2012 +0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 02 15:19:45 2012 -0700"
      },
      "message": "Add Japanese specific key codes.\n\nThese keys are specific to Japanese hardware keyboard which can be\nused by input method.\n\nPatch ported from AOSP, with the addition of EISU and KANA mappings.\n\nChange-Id: I647473cdd257458e3b9d134b0fc623eae946c3e0\n"
    },
    {
      "commit": "8f3b8e32993d190a26c70c839a63d8ce4c3b16d9",
      "tree": "8e49ffa8f5405f22b8bb12be9e5607ec6a0fc00a",
      "parents": [
        "e6c966caa3aff3099e6fb00caefa10387f57b9c3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 27 16:33:45 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Apr 02 15:15:07 2012 -0700"
      },
      "message": "Allow fine-grained control over functors execution\n\nAdds non-drawing execution mode\n\nChange-Id: I82f92cf1b9a3b9ff2ca6d7427c4e02b73e04e6bf\n"
    },
    {
      "commit": "4be004163071d550d72389ea1772bf6a6f95d345",
      "tree": "d874d69c8050db4f87147c8010bc30dc5ba72736",
      "parents": [
        "a00377682123de4d55927f097feffe885330451d"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Mar 28 13:57:51 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Mar 28 13:57:51 2012 -0700"
      },
      "message": "Move services/powermanager from frameworks/base to frameworks/native\n\nMove services/powermanager into frameworks/native so audioflinger can\nuse it.  Note that this is not the same as a PowerManagerService,\nwhich is part of systemserver and handles turning the screen on and\noff, etc.  This is just a binder interface to allow taking wakelocks.\n\nChange-Id: I1142e6d9ddbb651cc19ac07d946fa24d8feed8a3\n"
    },
    {
      "commit": "d927a1d99630c05ff773f0e9e8791ca9a965e020",
      "tree": "760f8a19e317d68f937eda312efab59200880ecd",
      "parents": [
        "f9c1f9935b349fe1a3f27be4462026dd212f8b78"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 28 10:42:44 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 28 10:42:44 2012 -0700"
      },
      "message": "Deleted the media, camera, drm related files since they are relocated\n\nChange-Id: I9bc5573ee07e30b305b5b879023aa9ec69e10b91\n"
    },
    {
      "commit": "56485fe62882065688e70fcb1f4b5c3894ed2c87",
      "tree": "253c902bca219766169277bb2d27aa6135535ddf",
      "parents": [
        "994c26b2a600a5a9fb9fbada9c6299c0488ecda7",
        "6554943a1dd6854c0f4976900956e556767b49e1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 26 16:51:22 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 16:51:22 2012 -0700"
      },
      "message": "Merge \"Use a status_t return type for GL functors\""
    },
    {
      "commit": "6554943a1dd6854c0f4976900956e556767b49e1",
      "tree": "82d43bbb28af4feeb6c358077ac1083ca3598e7b",
      "parents": [
        "a9dd820184ee4d083bd9b2af735dcf50b78fc6cd"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 26 16:45:05 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 26 16:45:05 2012 -0700"
      },
      "message": "Use a status_t return type for GL functors\n\nWebView needs more fine-grained control over the behavior of the\nframework upon execution of the display lists. The new status_t\nallows WebView to requests its functor to be re-executed directly\nwithout causing a redraw of the entire hierarchy.\n\nChange-Id: I97a8141dc5c6eeb6805b6024cc1e76fce07d24cc\n"
    },
    {
      "commit": "8296628ed89d98a76a904cbca53ffeb62db8bbda",
      "tree": "64b4249682259ea70326e36ad1f1b5bf00ae0081",
      "parents": [
        "b3e2e24f789d41d6c38b8ad4c252cf9f6e2122d8",
        "30b8a65c5c2b950eaa95a0ce6792a05c30c86a08"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 26 12:28:38 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 12:28:38 2012 -0700"
      },
      "message": "Merge \"mv libcpustats from frameworks/base to /native\""
    },
    {
      "commit": "30b8a65c5c2b950eaa95a0ce6792a05c30c86a08",
      "tree": "bcab87c2c2391e97f5f8d266967da50e007f6c38",
      "parents": [
        "7061b5ffb37ea15f235effa1faaf22bb1750c7f5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 26 12:22:57 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 26 12:22:57 2012 -0700"
      },
      "message": "mv libcpustats from frameworks/base to /native\n\nOK to lose history\n\nChange-Id: I05ce0452f16a396cff6e18db5424492f3a6f6861\n"
    },
    {
      "commit": "b3e2e24f789d41d6c38b8ad4c252cf9f6e2122d8",
      "tree": "3db78e2b9860b33fc0a75cdd9e3ddba2f97410db",
      "parents": [
        "61bf87428c0f3366d0c4ec203ff96331b7ec3546",
        "9b8e496f4d143280deff137c5f30ca8907bc28db"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:43:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 11:43:06 2012 -0700"
      },
      "message": "Merge \"Provisional support for secure decryption of media streams.\""
    },
    {
      "commit": "9b8e496f4d143280deff137c5f30ca8907bc28db",
      "tree": "f6136e4a5bf55c67ac721f1fc94b8d6aadc0fa6f",
      "parents": [
        "7061b5ffb37ea15f235effa1faaf22bb1750c7f5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:13:27 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:24:04 2012 -0700"
      },
      "message": "Provisional support for secure decryption of media streams.\n\nChange-Id: Ib3982a9c960bfdb0cb7e1b174440b141b194cfbe\n"
    },
    {
      "commit": "383c4b3e63b02dfb348db7504af0efefa7b6a682",
      "tree": "a175275540540538a95ebf26fbc24d75d88317a0",
      "parents": [
        "56ca534e65427bdefb7674060f5faa94539b6995",
        "f5e18125498b768d4528e4d1c19533c2b16f338b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 11:23:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 11:23:49 2012 -0700"
      },
      "message": "Merge \"reorganize SoundPool and JetPlayer code.\""
    },
    {
      "commit": "f5e18125498b768d4528e4d1c19533c2b16f338b",
      "tree": "f86eceeef1fbda2032eb708de15aa15ee37dc4a6",
      "parents": [
        "9321ad6a7567a28116f15240688d474993539922"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 10:47:22 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 10:54:41 2012 -0700"
      },
      "message": "reorganize SoundPool and JetPlayer code.\n\nReorganize SoundPool and JetPlayer code to be ready for the\ncreation of libmedia_native.\n\nSplit SoundPool between libsoundpool (JNI) and libmedia(sound pool implementation).\nRemove dependencies on nativehelper/jni.h from JetPlayer.\n\nChange-Id: I130c6014173b714329929dd82c5dfb70b757a610\n"
    },
    {
      "commit": "4acee00352b6c420f235c9b35010849ceaa9fc14",
      "tree": "7eb45d0fe52cca80b184e15b64b175a90a4a0f54",
      "parents": [
        "39581f92482e000af2fe0575843d0752d164f9ae"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 12:07:35 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 26 07:25:48 2012 -0700"
      },
      "message": "Add TRACK_FAST for IAudioFlinger::createTrack\n\nCurrently not implemented by client or server\n\nChange-Id: Ib11dda57db3eeb871bcc7b546e340078776875f5\n"
    },
    {
      "commit": "39581f92482e000af2fe0575843d0752d164f9ae",
      "tree": "a5e25c538fc7e781e8d9e400b94914c7c80b851f",
      "parents": [
        "9ea03b9f29f6ec28ba4ced36c84328f48828f86d",
        "84569cc4e106ff4d6c6855b46e546572c5dda6b2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 26 07:16:37 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 07:16:37 2012 -0700"
      },
      "message": "Merge \"IAudioFlinger::createTrack and openRecord flags\""
    }
  ],
  "next": "8dd6574809cc9799cf43a7349769eaeb70b63e2d"
}
