)]}'
{
  "log": [
    {
      "commit": "cc6cf51b80eabd199f797f40b76f7980c343962b",
      "tree": "1db1e94e54cec4da8d771afd1d802c72c21d3c2d",
      "parents": [
        "8a0f63bb588138a9e4f1ef7830e94282efe57c6b",
        "8c71784e9e83e914135e996591aa7903edd2fd96"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jun 22 14:34:54 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 22 14:34:54 2012 -0700"
      },
      "message": "am 8c71784e: Merge \"Initialize mJunkPath to false\"\n\n* commit \u00278c71784e9e83e914135e996591aa7903edd2fd96\u0027:\n  Initialize mJunkPath to false\n"
    },
    {
      "commit": "dbcfed9e2cad3175109aca4b55bbe41da7238a4f",
      "tree": "0d00f26132e510b1bb0c8758ecd09d9c57410064",
      "parents": [
        "a9543a3dad0da58f30580bdf99b76bc2ab97a2df"
      ],
      "author": {
        "name": "Haitao Feng",
        "email": "haitao.feng@intel.com",
        "time": "Fri Jun 22 09:20:26 2012 +0800"
      },
      "committer": {
        "name": "Haitao Feng",
        "email": "haitao.feng@intel.com",
        "time": "Fri Jun 22 09:20:26 2012 +0800"
      },
      "message": "Initialize mJunkPath to false\n\nChange-Id: Ib48bb1d91736d27f055528c3ba275237ff5ada07\n"
    },
    {
      "commit": "58a8d8d2d4b15cd4abf010680181359823ebfda4",
      "tree": "2d5eb4858fa0599a93671be236fe41949585a544",
      "parents": [
        "f99e81a6ff22b6b93dd057802e553f66c0a7b97b",
        "0e302bc884fa4b25eb391d625f2fb0eddc25d9b7"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 19 18:06:37 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 19 18:06:37 2012 -0700"
      },
      "message": "am 0e302bc8: Merge \"Disable debug output in SDK layoutlib.\" into jb-dev\n\n* commit \u00270e302bc884fa4b25eb391d625f2fb0eddc25d9b7\u0027:\n  Disable debug output in SDK layoutlib.\n"
    },
    {
      "commit": "4d7f301f94b9d2dda0ef109e9991ad2d77442f75",
      "tree": "f7a5bbab6a84abe5b9272b3e294e130c80e4ea72",
      "parents": [
        "1b36a68f607538bd090c33b31bd418169657ff6c"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 19 18:01:50 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 19 18:02:21 2012 -0700"
      },
      "message": "Disable debug output in SDK layoutlib.\n\nBug: 6697442\n\nChange-Id: I9741761342ea220c158aa124089430b0db80bf7e\n"
    },
    {
      "commit": "bce1011dd2a371c587d2e39ad8c3d446b63049d0",
      "tree": "3e99f4996919ff44364c895e95999f3f9c03d37b",
      "parents": [
        "eb02d40c6d068ffcbb822910c5449b7081d1ae51",
        "8cf489c1f509ad2414a887035ad3d6996d1931a3"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "raphael@google.com",
        "time": "Thu Jun 14 14:14:45 2012 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "raphael@google.com",
        "time": "Thu Jun 14 14:14:45 2012 -0700"
      },
      "message": "resolved conflicts for merge of 8cf489c1 to jb-dev-plus-aosp\n\nChange-Id: I06608e3c122b8f321429d457c51aa2213dd238b4\n"
    },
    {
      "commit": "8cf489c1f509ad2414a887035ad3d6996d1931a3",
      "tree": "9a2fc3f8ab1860b3cec34dc35eefd5fb7b452311",
      "parents": [
        "cfe75518ef23efede1359274c91c732c0ac7ccf3",
        "0f160c95122276c40ca84afe6fcd2b9cd800e35c"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Thu Jun 14 11:34:31 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 14 11:34:31 2012 -0700"
      },
      "message": "am 0f160c95: Merge \"Layoutlib Create: Find dependencies.\"\n\n* commit \u00270f160c95122276c40ca84afe6fcd2b9cd800e35c\u0027:\n  Layoutlib Create: Find dependencies.\n"
    },
    {
      "commit": "4306096a4351030cab4ea413b5e87460b60a84bf",
      "tree": "359ee2d75645d0d641f052fde11469628194add8",
      "parents": [
        "f01f6b6d379c911a2c1e350bc758cea26bfe6d9d"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Wed Jun 13 00:22:47 2012 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Wed Jun 13 15:44:54 2012 -0700"
      },
      "message": "Layoutlib Create: Find dependencies.\n\nUsage: layoutlib_create --list-deps /path/to/layoutlib.jar\n\nPrints:\n- all classes found in the Jar and the types they use (the dependencies).\n- all the dependencies missing from the Jar and what uses them.\n\nChange-Id: I8b2674df127e1494feed7a653282e88e4d2f5494\n"
    },
    {
      "commit": "6892f1ec9670432f1cab71813592077bea991a8b",
      "tree": "13dfe731323f7a32f0854d54da80aa8d3f54f438",
      "parents": [
        "19e046c4d2f11e6ed5d324122996080942e94569",
        "0f6471ace77387560988964ed0679f843bba6f1f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 12 12:41:36 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 12 12:41:36 2012 -0700"
      },
      "message": "am 0f6471ac: Merge \"Fix issue #6641368: can\\\u0027t launch gallery\" into jb-dev\n\n* commit \u00270f6471ace77387560988964ed0679f843bba6f1f\u0027:\n  Fix issue #6641368: can\u0027t launch gallery\n"
    },
    {
      "commit": "2bd8d0403be62df679f0f94ab4d84c9ae9a2e918",
      "tree": "64bab80cac947253c02794f0aea7d765aecb5e3b",
      "parents": [
        "a7e3a1e0e7d308e7e78a1992038a34485d04ab29"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 11 12:27:05 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 11 12:27:05 2012 -0700"
      },
      "message": "Fix issue #6641368: can\u0027t launch gallery\n\nThis is a revert of 1db36528b12395b9ed9bf8a1005a6d4ace737627,\nbut with comments added so I don\u0027t make this mistake again. :)\n\nChange-Id: I053216279e3721f08f32f561bb989736ef619f82\n"
    },
    {
      "commit": "f22eb96301aa1c4e0f7ac317daa64a617c21855c",
      "tree": "d85eda22d166b57293c05ae2e916eb63352f5f24",
      "parents": [
        "4835c17b13c08693cf9a370df86d660818f8d391",
        "c9fe6568f3e7e4d9dc6da072afc929b9a81001ed"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Jun 05 18:48:00 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 18:48:00 2012 -0700"
      },
      "message": "am c9fe6568: am 9e22d9c5: Merge \"Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\"\n\n* commit \u0027c9fe6568f3e7e4d9dc6da072afc929b9a81001ed\u0027:\n  Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\n"
    },
    {
      "commit": "c9fe6568f3e7e4d9dc6da072afc929b9a81001ed",
      "tree": "7b99d88b9c2c59836870644894ba9996cbbd5f74",
      "parents": [
        "44ff9b8f9294e015031fc9293974604771e5efdd",
        "9e22d9c514457c4b163d03b9241e4e28b1698368"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Jun 05 18:43:49 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 18:43:49 2012 -0700"
      },
      "message": "am 9e22d9c5: Merge \"Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\"\n\n* commit \u00279e22d9c514457c4b163d03b9241e4e28b1698368\u0027:\n  Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\n"
    },
    {
      "commit": "41bdb03ffb81d7bcbf6fa35d7b40e196635c86f3",
      "tree": "5eedea44e81362a897f143d2c43bbc60f669b370",
      "parents": [
        "36ac43ba9982a78b4a047c8970776505a3fab4da"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed May 30 18:02:55 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Jun 05 14:30:39 2012 -0700"
      },
      "message": "Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\n\nWith SDK 10.6 without _DARWIN_UNLIMITED_STREAMS aapt sometimes fails\nright away with the error \"Too many open files\" when calling fopen().\n\nChange-Id: Ifa7bd8a9530d706aa47f98be8186f1aefe943d76\n"
    },
    {
      "commit": "9f374b9de5a557a7977b24d41f45c3464cfff8c1",
      "tree": "7d2eba9b27fcddaf67d48fa22e1bebc2ff0b6dca",
      "parents": [
        "b25605cd7111bcab41ec10547f015bd2d6215c91",
        "44ff9b8f9294e015031fc9293974604771e5efdd"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Tue Jun 05 08:45:20 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 08:45:20 2012 -0700"
      },
      "message": "am 44ff9b8f: am 36ac43ba: Merge \"Tweak default ignore-assets path\"\n\n* commit \u002744ff9b8f9294e015031fc9293974604771e5efdd\u0027:\n  Tweak default ignore-assets path\n"
    },
    {
      "commit": "44ff9b8f9294e015031fc9293974604771e5efdd",
      "tree": "91eabfeb2a567799b801af23f5e59b23d735488c",
      "parents": [
        "3df4e1a2f1b4f0eb110c8983107b7c7fa21ed338",
        "36ac43ba9982a78b4a047c8970776505a3fab4da"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Tue Jun 05 08:41:16 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 08:41:16 2012 -0700"
      },
      "message": "am 36ac43ba: Merge \"Tweak default ignore-assets path\"\n\n* commit \u002736ac43ba9982a78b4a047c8970776505a3fab4da\u0027:\n  Tweak default ignore-assets path\n"
    },
    {
      "commit": "fcd738240a7d716e21721514202caa5bfb2dcb98",
      "tree": "caaa71a10f3154c2925f0c5b060126f74f1a81bf",
      "parents": [
        "5bf8f01be1cd9800e53b30117fe9ea7fb1153301",
        "dd251cab5b6e5b590cc0aeae8be8f885a7794e72"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 04 11:09:00 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 04 11:09:00 2012 -0700"
      },
      "message": "am dd251cab: Merge \"Fix build.\" into jb-dev\n\n* commit \u0027dd251cab5b6e5b590cc0aeae8be8f885a7794e72\u0027:\n  Fix build.\n"
    },
    {
      "commit": "bb47cf66ec72adff895d0e8b94c26f5d438be49a",
      "tree": "58824f18a2e3e751de8ef06e5cb2883bb19a36a5",
      "parents": [
        "6593be0c200f69d932e40e05e9df54b89c157c48"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 04 10:51:17 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 04 10:51:17 2012 -0700"
      },
      "message": "Fix build.\n\nChange-Id: I41415fed99d98406bc033289428bde59475c2917\n"
    },
    {
      "commit": "e0219c8baa9d63b3794f90ab772f1c19ecb74ec4",
      "tree": "cc5f1052ffefb73dcd46da1683d6bcfe6eda5adf",
      "parents": [
        "0748a5698776d1a9693a5449ffc983af26cc533b"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Mon Jun 04 10:38:13 2012 -0700"
      },
      "committer": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Mon Jun 04 10:41:38 2012 -0700"
      },
      "message": "Tweak default ignore-assets path\n\nAdd .DS_Store to the list of ignored files that are silently\nignored (other dot-files are ignored but aapt emits a \"(skipping \u003cx\u003e)\"\nmessage.)\n\nAlso, add a \"!\" prefix to the *~ pattern for Emacs/Vim/Gedit backup\nfiles.\n\nFinally, move the !*.scc pattern up in front of the .* pattern, such\nthat it doesn\u0027t match the earlier .* pattern (which is verbose, unlike\n!*.scc).\n\nChange-Id: Id3e96490f1802486aea8c58366d43e9d413971b8\n"
    },
    {
      "commit": "3df4e1a2f1b4f0eb110c8983107b7c7fa21ed338",
      "tree": "1d687db32a08d214e7522eae3d9850c7fcb59036",
      "parents": [
        "ae545bb87c8509c31a72bbc03c0bee7cb23a5133",
        "0748a5698776d1a9693a5449ffc983af26cc533b"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sat Jun 02 09:56:45 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jun 02 09:56:45 2012 -0700"
      },
      "message": "am 0748a569: Merge \"aapt: Remove terminal pointer incrementaion\"\n\n* commit \u00270748a5698776d1a9693a5449ffc983af26cc533b\u0027:\n  aapt: Remove terminal pointer incrementaion\n"
    },
    {
      "commit": "0748a5698776d1a9693a5449ffc983af26cc533b",
      "tree": "cd409bf30a0c15e69a7417a7c22f9c53af70965b",
      "parents": [
        "54a2a6df410ad860f048ef4ff653820787f68f3a",
        "c4293c14083d833bb5d13dc19e73daed8cbbb4ea"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sat Jun 02 09:21:36 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jun 02 09:21:37 2012 -0700"
      },
      "message": "Merge \"aapt: Remove terminal pointer incrementaion\""
    },
    {
      "commit": "f3b4c93e0da9af2db9e16864faa734cf70fecfe3",
      "tree": "7e9700c7556be59ccc6919bcb4cd0a3cdb50b7f6",
      "parents": [
        "09dfd60bc37585e2670e4ca997940256e5b21ac8",
        "ae5811c71405878b09eace395ec2b28e54eeb427"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 29 15:53:38 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 29 15:53:38 2012 -0700"
      },
      "message": "am ae5811c7: Merge \"Fix (mostly) issue #5109947: Race condition between retrieving a...\" into jb-dev\n\n* commit \u0027ae5811c71405878b09eace395ec2b28e54eeb427\u0027:\n  Fix (mostly) issue #5109947: Race condition between retrieving a...\n"
    },
    {
      "commit": "6ae8d1821822296df0606c9cd1c46708cc21cb58",
      "tree": "eb4b17b255b1f0e78078923474afcaad67755f12",
      "parents": [
        "3dac02265e42bf176e26b83da430ce15d6fd06df"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 23 13:12:42 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 29 13:33:09 2012 -0700"
      },
      "message": "Fix (mostly) issue #5109947: Race condition between retrieving a...\n\n...content provider and updating its oom adj\n\nThis introduces the concept of an \"unstable\" reference on a content\nprovider.  When holding such a reference (and no normal stable ref),\nthe content provider dying will not cause the client process to be\nkilled.\n\nThis is used in ContentResolver.query(), .openAssetFileDescriptor(),\nand .openTypedAssetFileDescriptor() to first access the provider\nwith an unstable reference, and if at the point of calling into the\nprovider we find it is dead then acquiring a new stable reference\nand doing the operation again.  Thus if the provider process dies\nat any point until we get the result back, our own process will not\nbe killed and we can safely retry the operation.\n\nArguably there is still the potential for a race -- if somehow the\nprovider is killed way late by the OOM killer after the query or\nopen has returned -- but this should now be *extremely* unlikely.\nWe also continue to have the issue with the other calls, but these\nare much less critical, and the same model can\u0027t be used there (we\nwouldn\u0027t want to execute two insert operations for example).\n\nThe implementation of this required some significant changes to the\nunderlying plumbing of content providers, now keeping track of the\ntwo different reference counts, and managing them appropriately.  To\nfacilitate this, the activity manager now has a formal connection\nobject for a client reference on a content provider, which hands to\nthe application when opening the provider.\n\nThese changes have allowed a lot of the code to be cleaned up and\nsubtle issues closed.  For example, when a process is crashing, we\nnow have a much better idea of the state of content provider clients\n(olding a stable ref, unstable ref, or waiting for it to launch), so\nthat we can correctly handle each of these.\n\nThe client side code is also a fair amount cleaner, though in the\nfuture there is more than should be done.  In particular, the two\nProviderClientRecord and ProviderRefCount classes should be combined\ninto one, part of which is exposed to the ContentResolver internal\nAPI as a reference on a content provider with methods for updating\nreference counts and such.  Some day we\u0027ll do that.\n\nChange-Id: I87b10d1b67573ab899e09ca428f1b556fd669c8c\n"
    },
    {
      "commit": "98a0607a314a7a6023fabdafaa8e470a1e800c09",
      "tree": "820f623b5b8b83061597cc24996cab7615f54e34",
      "parents": [
        "d4cb08df751e29338f4df1a76b303aa720f2bc00"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue May 22 11:24:22 2012 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Thu May 24 11:07:14 2012 -0700"
      },
      "message": "Merge \"Fix length of pattern.\" DO NOT MERGE.\n\nAfter skipping * with \"token++\", the length should decrease by 1 as\nwell.\n\n(merged from 996b073e813ba1a22a13282ccdebb664f14ba898)\n\nChange-Id: Ie6232ef603bb31e25e03b926e6c1bb92ac34902d\n"
    },
    {
      "commit": "ac9f50573dad2050d261850f1accbcea383cc6f0",
      "tree": "20b3b890015bf87346a6c5ebfa019d3f734b77e0",
      "parents": [
        "88ab8c8de4d8d2e2c1f3237024ecdefd77300916",
        "996b073e813ba1a22a13282ccdebb664f14ba898"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue May 22 11:43:14 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 22 11:43:14 2012 -0700"
      },
      "message": "am 996b073e: Fix length of pattern.\n\n* commit \u0027996b073e813ba1a22a13282ccdebb664f14ba898\u0027:\n  Fix length of pattern.\n"
    },
    {
      "commit": "996b073e813ba1a22a13282ccdebb664f14ba898",
      "tree": "0f59bedc48c4da4a49b82eac6170c5d8d7e37e6f",
      "parents": [
        "0eaeb69d1c4849da8ab1df70b84e90837193df67"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue May 22 11:24:22 2012 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue May 22 11:35:22 2012 -0700"
      },
      "message": "Fix length of pattern.\n\nAfter skipping * with \"token++\", the length should decrease by 1 as\nwell.\n\nChange-Id: I132eb7d12bb756f2f713c607e92741ca834aef81\n"
    },
    {
      "commit": "9c06ac09c3530c5f0bc0b47a3350eedb5b539c35",
      "tree": "4ce6121aa3126bd243e014b449df65c72296de1f",
      "parents": [
        "ee3bb6498adc801023798b4fc48b5dcd77e059f5",
        "6c255a3a378143af59021d29b4980b28f1ab4544"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Mon May 21 13:09:29 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 21 13:09:29 2012 -0700"
      },
      "message": "Merge \"Merge \"AAPT: support a new --ignore-assets flag.\"\" into jb-dev"
    },
    {
      "commit": "6c255a3a378143af59021d29b4980b28f1ab4544",
      "tree": "145d2632678e6227c664a046de8930ff2e3873be",
      "parents": [
        "43a760ba84a5357bae792a33ad4a0e946f02679c"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Mon May 07 16:16:46 2012 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "raphael@google.com",
        "time": "Fri May 18 20:34:44 2012 -0700"
      },
      "message": "Merge \"AAPT: support a new --ignore-assets flag.\"\n\nAAPT has a fixed built-in list of files and directories\nto ignore when parsing resource files. Over the years we\nalways had developers requiring specific patterns.\n\nAdded a command-line option for it:\n  aapt di --ignore-assets \"foo*:*.blah\"\n\nIf the env var ANDROID_AAPT_IGNORE is set, it is parsed\nto find which file/directory patterns to ignore.\n\nOtherwise a default is used that matches the current behavior.\n\nSDK Bug: 5343 24067\n\n(cherry-pick from AOSP 90897ed87bce639bf6bb2ccf15fbabb59b131bab)\n\nChange-Id: Ia4caa2a8188c8c1df143f884e459b8182645995f\n"
    },
    {
      "commit": "72669b5f4663937b09d33f9d951f0b86a03fa98b",
      "tree": "3daf749f3aa07123d471ab58c86ceaace6cee55f",
      "parents": [
        "099a220cf57f00732d347cd49422c849354d2e38",
        "13a0271cb81d497edbf93f3d6ecf4b9b8da4ee69"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 18 19:41:10 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 18 19:41:10 2012 -0700"
      },
      "message": "am 13a0271c: Merge \"Add aapt support for generating proguard rules for onClick methods.\" into jb-dev\n\n* commit \u002713a0271cb81d497edbf93f3d6ecf4b9b8da4ee69\u0027:\n  Add aapt support for generating proguard rules for onClick methods.\n"
    },
    {
      "commit": "9275197d35a99c3f187d18d0eda6ead3b8a32603",
      "tree": "ba364f6cf805ce6dac0d3eb8ced5d82d71cd956a",
      "parents": [
        "fb5c3dba4ddac023cfd4cdcabdfdbcf343197c94"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 18 19:22:14 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 18 19:23:19 2012 -0700"
      },
      "message": "Add aapt support for generating proguard rules for onClick methods.\n\nAlso fix Activity menu inflater when using the dark on light\ntheme wrapper to still be able to find onClick listeners.\n\nChange-Id: Ie206db26d1df96041bc477804e476b02ad99dc9d\n"
    },
    {
      "commit": "f67f834a9cb7ee9b743e79af85cb42bd45b5aa23",
      "tree": "44605c7c36f04f1c951a07374e32d325a856721a",
      "parents": [
        "38e34874a89b6e71464bfa3e89480252000765ad",
        "8748399f6f999d21eef9226baadb20f71dfb61ea"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Fri May 18 16:33:14 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 18 16:33:14 2012 -0700"
      },
      "message": "am 8748399f: am 61394501: Merge \"Support a new ANDROID_AAPT_IGNORE env var.\"\n\n* commit \u00278748399f6f999d21eef9226baadb20f71dfb61ea\u0027:\n  Support a new ANDROID_AAPT_IGNORE env var.\n"
    },
    {
      "commit": "38e34874a89b6e71464bfa3e89480252000765ad",
      "tree": "4d1c5a4945991dec9dcefbb85ca59ca28a83afe5",
      "parents": [
        "1b61dc2eb7f738bb49142db14a7d339e2fd90545",
        "2a9b85d7ccdd3b8e6be90454cdcb4be3b032cd64"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri May 18 16:33:10 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 18 16:33:10 2012 -0700"
      },
      "message": "am 2a9b85d7: am c0f17383: Merge \"Move kxml2 to prebuilts/misc\"\n\n* commit \u00272a9b85d7ccdd3b8e6be90454cdcb4be3b032cd64\u0027:\n  Move kxml2 to prebuilts/misc\n"
    },
    {
      "commit": "a4cae2847eb086742ff9d3b24a469242bd9ddae1",
      "tree": "7b64bbefff9c6a040d64ceaac1bc8bec8c4bc4cb",
      "parents": [
        "5f0d6063fac445f4628feeeafbc34dab35d34966",
        "4b51e293d86d60dc651c409ae0e25078a2170740"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 18 15:59:41 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 18 15:59:41 2012 -0700"
      },
      "message": "am 4b51e293: Merge \"Fix the preloaded-classes tool for JellyBean.\" into jb-dev\n\n* commit \u00274b51e293d86d60dc651c409ae0e25078a2170740\u0027:\n  Fix the preloaded-classes tool for JellyBean.\n"
    },
    {
      "commit": "613945011ef9f79388a1cf21acf514154e2d5af2",
      "tree": "f3ffbfd0d969139f01b9f349ea7821f4e4af0018",
      "parents": [
        "c0f17383579cf49f897fdd1d55aaf44b8d6be0da",
        "90897ed87bce639bf6bb2ccf15fbabb59b131bab"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Fri May 18 13:00:31 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 18 13:00:31 2012 -0700"
      },
      "message": "Merge \"Support a new ANDROID_AAPT_IGNORE env var.\""
    },
    {
      "commit": "c0f17383579cf49f897fdd1d55aaf44b8d6be0da",
      "tree": "d9e7f0a6611afb43096269bfc37008e8172a07ca",
      "parents": [
        "ad3f86a526c49ecd733564771b5c2ce7eade2a96",
        "bda124453d58d8b55d9026e4c5e7ae8c804e995a"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri May 18 09:51:03 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 18 09:51:04 2012 -0700"
      },
      "message": "Merge \"Move kxml2 to prebuilts/misc\""
    },
    {
      "commit": "98e00add5544df3d8fc1804bc0be825b2238701c",
      "tree": "79d6ce9ea61ba9e2f7c34334396abdcad4d1738f",
      "parents": [
        "c6015df128811a52faf918bd34d0d7296c8a6834"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 17 17:03:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 17 17:03:51 2012 -0700"
      },
      "message": "Fix the preloaded-classes tool for JellyBean.\n\nBug: 5213043\nChange-Id: I8178ca04da0bd72a90244983be5e8ecfbc1b0573\n"
    },
    {
      "commit": "095c2d315d3bdf4cdb61439d427413c0bd7796e1",
      "tree": "31ddc4f91d1631b8c3183120da12eab33732d147",
      "parents": [
        "2da87ec32e72c2c25998e2444155c00074cfbd40",
        "4286d6d115385391b75db8e6c4e397008ef9b3db"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 14 19:32:43 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 14 19:32:43 2012 -0700"
      },
      "message": "am 4286d6d1: Fix build.\n\n* commit \u00274286d6d115385391b75db8e6c4e397008ef9b3db\u0027:\n  Fix build.\n"
    },
    {
      "commit": "2da87ec32e72c2c25998e2444155c00074cfbd40",
      "tree": "49dd2b0d98e7b0e451c23c15738a5e4cdf0e24c4",
      "parents": [
        "58b0dcde83354bd1ae9091a7cbc7f207fb29960a",
        "2a7a6ca00ab176105b5bbfa6b17bb0dcd058d517"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 14 19:32:39 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 14 19:32:39 2012 -0700"
      },
      "message": "am 2a7a6ca0: Merge \"Implement new window cropping.\" into jb-dev\n\n* commit \u00272a7a6ca00ab176105b5bbfa6b17bb0dcd058d517\u0027:\n  Implement new window cropping.\n"
    },
    {
      "commit": "4286d6d115385391b75db8e6c4e397008ef9b3db",
      "tree": "a44118310b76995e9b1eed18f6707b062117504b",
      "parents": [
        "2a7a6ca00ab176105b5bbfa6b17bb0dcd058d517"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun May 13 16:03:39 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun May 13 16:03:39 2012 -0700"
      },
      "message": "Fix build.\n\nChange-Id: I53263d509559c70100cd78ad49f225f0dafd8891\n"
    },
    {
      "commit": "85afd1b6f871d471fdff1980134676a5f1690525",
      "tree": "94f1a2661418208e7969d659dc694353ff43d304",
      "parents": [
        "dca5fb9e7e193d6aed233e0650691675a56022a3"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun May 13 13:31:06 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun May 13 13:31:06 2012 -0700"
      },
      "message": "Implement new window cropping.\n\nThe window manager now performs the crop internally, evaluating\nit every animation from, to be able to update it along with\nthe surface position.\n\nChange-Id: I960a2161b9defb6fba4840fa35aee4e411c39b32\n"
    },
    {
      "commit": "bf1b5fa944158044a595706924b935b5577ec0f0",
      "tree": "7f1c394643715a533da215864c4858a762e8955d",
      "parents": [
        "2c51f2b949d7b07d1f349dad7b90ce7bb1314c1b",
        "421dceb0a4fd8f20349a0de277f82b56e71cb90b"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Thu May 10 10:45:30 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 10 10:45:30 2012 -0700"
      },
      "message": "am 421dceb0: Merge \"Making transition out of recents look better\" into jb-dev\n\n* commit \u0027421dceb0a4fd8f20349a0de277f82b56e71cb90b\u0027:\n  Making transition out of recents look better\n"
    },
    {
      "commit": "421dceb0a4fd8f20349a0de277f82b56e71cb90b",
      "tree": "092633533796bf65021ee895b1bd7d7a42cb99c2",
      "parents": [
        "dc442534070aa8ff4c07cae16fc5207ba6821651",
        "21385cd83d7d7938b57a4acbaa236dd4c7804ed4"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Thu May 10 10:35:19 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 10 10:35:19 2012 -0700"
      },
      "message": "Merge \"Making transition out of recents look better\" into jb-dev"
    },
    {
      "commit": "e2e0391389fce1a9fd9d5c5442ba1901b6d96211",
      "tree": "303919fb5787ef92da3a372b2d5a18abd2ee28c5",
      "parents": [
        "dfca63f37484b207ff8dfe5fefc553c5ce1d7bc4",
        "dd79ae6b7201b68dbe2a223d2f371ea1a473f6c4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 10 09:26:03 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 10 09:26:03 2012 -0700"
      },
      "message": "am dd79ae6b: Merge \"Add infrastructure for accessing \"unstable\" content providers.\" into jb-dev\n\n* commit \u0027dd79ae6b7201b68dbe2a223d2f371ea1a473f6c4\u0027:\n  Add infrastructure for accessing \"unstable\" content providers.\n"
    },
    {
      "commit": "90897ed87bce639bf6bb2ccf15fbabb59b131bab",
      "tree": "53b5b28bf5a41e41a35751f12becef9dd94a0dbe",
      "parents": [
        "ad3f86a526c49ecd733564771b5c2ce7eade2a96"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Mon May 07 16:16:46 2012 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Wed May 09 21:16:26 2012 -0700"
      },
      "message": "Support a new ANDROID_AAPT_IGNORE env var.\n\nAAPT has a fixed built-in list of files and directories\nto ignore when parsing resource files. Over the years we\nalways had developers requiring specific patterns.\nIf the env var ANDROID_AAPT_IGNORE is set, it is parsed\nto find which file/directory patterns to ignore.\nOtherwise a default is used that matches the current behavior.\n\nAdded a command-line option for it:\n  aapt di --ignore-assets \"foo*:*.blah\"\n\nSDK Bug: 5343 24067\n\nChange-Id: Ia4caa2a8188c8c1df143f884e459b8182645995f\n"
    },
    {
      "commit": "21385cd83d7d7938b57a4acbaa236dd4c7804ed4",
      "tree": "4437d4ba6ded58da748f2231c2d87c5c406b807e",
      "parents": [
        "0fa152912e55f2d08f0a8d1260332a81e5706694"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Thu May 03 10:57:31 2012 -0700"
      },
      "committer": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Wed May 09 20:25:28 2012 -0700"
      },
      "message": "Making transition out of recents look better\n\n- Fading out recents first, then scaling up app\nthumbnail\n- Fade Recents out over 130ms\n- Delay the window animation for 200ms first,\nthen animate for 200ms (previously we didn\u0027t delay\nand then animated for 300ms)\n\nBug: 6390075\n\nChange-Id: Ia8c753bf7ee03d2acef6eb2772b28d88fe10a682"
    },
    {
      "commit": "652b6d1e591f6684cda4b93d4712920f287991b4",
      "tree": "5ffe183aa2cbe66c8b8b89e8f3a809e4e7f4c603",
      "parents": [
        "a53de0629f3b94472c0f160f5bbe1090b020feab"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 09 18:18:40 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 09 18:18:40 2012 -0700"
      },
      "message": "Add infrastructure for accessing \"unstable\" content providers.\n\nWe have an API and some stuff that purports to this, but no real\nimplementation yet.\n\nChange-Id: I93555440014a50fdf79fa3f65318d90fb82265b4\n"
    },
    {
      "commit": "50e657e66ce6663fdff929cd365a3daf87cef9ae",
      "tree": "aaa26ff945d2339d74f98822c5db59f5cd294188",
      "parents": [
        "0916b463598a99400840c5d55a443bee2446b626",
        "024d3b2374497c86b55298a8dc4f2fbe258ce7ea"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed May 09 01:49:29 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 09 01:49:29 2012 -0700"
      },
      "message": "am 024d3b23: Merge \"Add missing native method to Canvas_Delegate.\" into jb-dev\n\n* commit \u0027024d3b2374497c86b55298a8dc4f2fbe258ce7ea\u0027:\n  Add missing native method to Canvas_Delegate.\n"
    },
    {
      "commit": "a394efa33531ce36c432872ec56ad0c93a9999e7",
      "tree": "54bf6369b4448c23fbac41b05db5c4fec356fa66",
      "parents": [
        "fbb7b072d87f15fce2b694054a27a8ec5db3daaf",
        "947f1c8db00bd3805838ff49a5f4d220df507b47"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 09 01:47:20 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 09 01:47:20 2012 -0700"
      },
      "message": "am 947f1c8d: Merge \"Move CancellationSignal to android.os package.\" into jb-dev\n\n* commit \u0027947f1c8db00bd3805838ff49a5f4d220df507b47\u0027:\n  Move CancellationSignal to android.os package.\n"
    },
    {
      "commit": "fbb7b072d87f15fce2b694054a27a8ec5db3daaf",
      "tree": "09ebd4b9f44ccdf4e0254188b187a179052fbd17",
      "parents": [
        "92f12822c18f988c2a5cfbac1b33dd1b0ffaa8e1",
        "6d6d186cd1a5df5fff73c8a731a81a9da3fea13b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 09 01:47:17 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 09 01:47:17 2012 -0700"
      },
      "message": "am 6d6d186c: Merge \"The \\\u0027localize\\\u0027 tool is dead.\" into jb-dev\n\n* commit \u00276d6d186cd1a5df5fff73c8a731a81a9da3fea13b\u0027:\n  The \u0027localize\u0027 tool is dead.\n"
    },
    {
      "commit": "e8e94a0743eae912658865645db75619533449b3",
      "tree": "2e6b0a58080ce153230664f9b299491b5a819ce8",
      "parents": [
        "2521bfdc01939967a25c74f0cf195a7ad81319e6",
        "41a4704b09f98723f4ddec895c9f2e651a5c0c8e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 09 01:45:49 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 09 01:45:49 2012 -0700"
      },
      "message": "am 41a4704b: Merge \"Small tweaks to orientation.\" into jb-dev\n\n* commit \u002741a4704b09f98723f4ddec895c9f2e651a5c0c8e\u0027:\n  Small tweaks to orientation.\n"
    },
    {
      "commit": "f18c68b83f4919cf903e249da056acb470b683af",
      "tree": "56ebc10498d0d25156114dc3b6787cb49af44b61",
      "parents": [
        "5602d02389c2b945e8d78ea34990933a8e1ddc8b"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue May 08 17:14:18 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue May 08 17:14:18 2012 -0700"
      },
      "message": "Add missing native method to Canvas_Delegate.\n\nChange-Id: I86288c942004e5489eacc43ba5e112cf56f94487\n"
    },
    {
      "commit": "947f1c8db00bd3805838ff49a5f4d220df507b47",
      "tree": "706e6101ae3e5bfb31b505d11e429256e33580cd",
      "parents": [
        "6d6d186cd1a5df5fff73c8a731a81a9da3fea13b",
        "a7771df3696954f0e279407e8894a916a7cb26cc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 08 10:51:12 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 08 10:51:12 2012 -0700"
      },
      "message": "Merge \"Move CancellationSignal to android.os package.\" into jb-dev"
    },
    {
      "commit": "6d6d186cd1a5df5fff73c8a731a81a9da3fea13b",
      "tree": "e466b0debd557c7954d9fd83624dfa5629b54bf3",
      "parents": [
        "4a337ec99e0d6b7f2f3b79b990809bf64a42f0ec",
        "436bbd1a6c227148c294117e725e03be75e01ebf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 08 10:45:38 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 08 10:45:38 2012 -0700"
      },
      "message": "Merge \"The \u0027localize\u0027 tool is dead.\" into jb-dev"
    },
    {
      "commit": "a7771df3696954f0e279407e8894a916a7cb26cc",
      "tree": "3615be79c515fad41808d2b84ac0221ba5a7e299",
      "parents": [
        "507f5586fb48f59f7b4f2fa0ca5387e4d4f2bd8d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 07 20:06:46 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 07 20:06:46 2012 -0700"
      },
      "message": "Move CancellationSignal to android.os package.\n\nBug: 6427830\nChange-Id: I39451bb1e1d4a8d976ed1c671234f0c8c61658dd\n"
    },
    {
      "commit": "daf5d894ef71c5674e83b11de8b408e3bdabe4c7",
      "tree": "37ab29946003c4d6b13d5f261c06f0737485241f",
      "parents": [
        "59bbef0cd781f4933fd8a0a85b6067f36e529e02"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 07 18:30:18 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 07 18:30:18 2012 -0700"
      },
      "message": "Small tweaks to orientation.\n\nImproved threshold for detecting external acceleration.\n\nBug: 5976859\nChange-Id: Iaf2298fba8eda72d1cacbb2f3aea72f460a9262f\n"
    },
    {
      "commit": "436bbd1a6c227148c294117e725e03be75e01ebf",
      "tree": "c0312cb3d52d2043e993eab54f6093f745e705db",
      "parents": [
        "476b03b0c0d5cae4d1b114c6f80858d59ba36cad"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 07 17:34:08 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 07 17:34:08 2012 -0700"
      },
      "message": "The \u0027localize\u0027 tool is dead.\n\nChange-Id: I6486e50fd1d2f82dd040371a308a2a756beadb64\n"
    },
    {
      "commit": "cf08a248878320296c3fc283b1baff390bf0e172",
      "tree": "fd8ecae2662634d7bb853be557fb21167e03ff68",
      "parents": [
        "6ad4cc8ca8fbe1d0039755759497305c1a6c53e1",
        "a08dc5de8d039a4fd0a8c1286147c6afd01d2edf"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 04 00:13:14 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 04 00:13:14 2012 -0700"
      },
      "message": "am a08dc5de: Merge \"Remove obsolete tool.\" into jb-dev\n\n* commit \u0027a08dc5de8d039a4fd0a8c1286147c6afd01d2edf\u0027:\n  Remove obsolete tool.\n"
    },
    {
      "commit": "fd1d99f5dd1749a8cecb4a98cddb91e911323eb8",
      "tree": "b118f59223942f1f61a74fd65a510dd1005b1593",
      "parents": [
        "6098c1f44b0f2010053f9ebb6d36e01830784fc5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu May 03 17:15:56 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu May 03 17:15:56 2012 -0700"
      },
      "message": "Remove obsolete tool.\n\nChange-Id: I750ad12e9ebc41d9e620942f3df09c7660340715\n"
    },
    {
      "commit": "3e2d59146df9e9e325dcc65018bb130b03242bbc",
      "tree": "54d3d73e5d71d8ae0e83bfd6516cb6befd7ece97",
      "parents": [
        "39b58ba2b299e1c97e13535aae9add530d942c7b",
        "13c04786ceec6aebe898bca7c62853af2e4e7c09"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue May 01 10:00:22 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue May 01 10:02:02 2012 -0700"
      },
      "message": "resolved conflicts for merge of 13c04786 to jb-dev-plus-aosp\n\nChange-Id: Ib7aa5a768f4606beb2a4387811cfed7c00cbc111\n"
    },
    {
      "commit": "39b58ba2b299e1c97e13535aae9add530d942c7b",
      "tree": "94247b9025407767a527abeded5c8cfebfabe1cb",
      "parents": [
        "a43d2589b1ce657d8af7702cd7b3e3114e7ae133",
        "bc2fb7b92e013779356c16685a388d5cdae6e93d"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue May 01 09:53:48 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue May 01 09:54:38 2012 -0700"
      },
      "message": "resolved conflicts for merge of bc2fb7b9 to jb-dev-plus-aosp\n\nChange-Id: I5386585e473201268c6ed8b05e0a16569d434ea2\n"
    },
    {
      "commit": "b2228eb7141354089f974a4db3b5224a0ad75fd4",
      "tree": "2b360bec8e2aa790c4ecee05b0486c60f42e55e6",
      "parents": [
        "9e3bc3f61df541271c8a1dfc5564cab853951aec",
        "249e3ed5400e5c7ab2e9aa8017f612d79d2e8089"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue May 01 09:20:32 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 01 09:20:32 2012 -0700"
      },
      "message": "Merge \"Runtime resource overlay: clean-up.\""
    },
    {
      "commit": "9e3bc3f61df541271c8a1dfc5564cab853951aec",
      "tree": "d8433af997868fe41e207c58577e1fb934dcb903",
      "parents": [
        "6a8186fb88455fcc418def0650b7b9f8f3573153",
        "c761d8b0086f9e92eb1e4b3a5683ae6afb84036a"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue May 01 08:49:37 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 01 08:49:38 2012 -0700"
      },
      "message": "Merge \"Build overlay packages just like regular packages.\""
    },
    {
      "commit": "bda124453d58d8b55d9026e4c5e7ae8c804e995a",
      "tree": "2692d58dee80a6999826d37bd331b8d7143a5567",
      "parents": [
        "d29032e362d41e81ed07d97b8103df855427cb14"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Apr 30 17:35:26 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Apr 30 17:35:26 2012 -0700"
      },
      "message": "Move kxml2 to prebuilts/misc\n\nChange-Id: Ie4b45d2073f26d8313843f9860cf658e288c850b\n"
    },
    {
      "commit": "5c58de3a523a384c47b0b1e0f5dd9728a74cd9f7",
      "tree": "1f765389f4c5153bf09f2cacb9fe87f74169dc67",
      "parents": [
        "3ea8761974a530218a246dc73583c8820b12bf0b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Apr 28 19:52:37 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 30 12:11:43 2012 -0700"
      },
      "message": "Add system insets to windows.\n\nThis will be used to determine which parts of a window a completely\nhidden by system UI elements (status bar, nav bar, system bar) so\nthat they can be clipped out from rendering.\n\nChange-Id: I2c6c6ac67dbdfeed82d2c089ef806fb483165bd9\n"
    },
    {
      "commit": "79c6346100b555a8a3d51b3b1c34dbbe99305b9a",
      "tree": "f1fa24b3be063a4a340ec15d19476691b181264e",
      "parents": [
        "a36b7ab04650b598ea08de1f95bb34c5e694167c",
        "12d3a94397c33fdb773a1eaaaa13cab80bf0c571"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 27 17:42:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 27 17:42:48 2012 -0700"
      },
      "message": "Merge \"When a window is first shown only draw once while animating.\" into jb-dev"
    },
    {
      "commit": "a36b7ab04650b598ea08de1f95bb34c5e694167c",
      "tree": "faabf03b4fe32aea432136414afedad6dcebf3fc",
      "parents": [
        "ffd6ea4523d8fa1210d2a7bb757cc65e1d18465f",
        "96ff709fe25632f6e27fa4c13c7d75dbbcfa38e0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 27 17:31:56 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 27 17:31:56 2012 -0700"
      },
      "message": "Merge \"Work around build break in layoutlib.\" into jb-dev"
    },
    {
      "commit": "96ff709fe25632f6e27fa4c13c7d75dbbcfa38e0",
      "tree": "9deab7479cde4ccd454b4b426e38c3de943662fa",
      "parents": [
        "771526c88f5cc4b56a41cb12aa06a28d377a07d5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 27 17:18:06 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 27 17:18:06 2012 -0700"
      },
      "message": "Work around build break in layoutlib.\n\nBug: 6413563\nChange-Id: Ia7101fba87f3784fd8159c75e4289f642913d099\n"
    },
    {
      "commit": "12d3a94397c33fdb773a1eaaaa13cab80bf0c571",
      "tree": "607f0f7677f8597227883ced5d97f27b0cf39c52",
      "parents": [
        "11dea2945124b166f167d4b5a23a059f33c04fa1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 27 14:16:30 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 27 15:21:44 2012 -0700"
      },
      "message": "When a window is first shown only draw once while animating.\n\nOn some hardware allocating a new graphics buffer is quite\nexpensive, which blocks updates to the UI.  This can cause\nglitches when performing window animations.\n\nTo reduce these glitches, the view hierarchy will now only\nallow itself to be drawn once if its window is being shown\nwhile the window manager is animating, not resuming draws\nuntil it is told that the animation is done.\n\nChange-Id: Ie15192f6fddbd0931b022a72c76ddd55ca266d84\n"
    },
    {
      "commit": "002f53770a7f6850eab4d7e381e91dc94d28968f",
      "tree": "d2d83fa4b29e498003fc5cd027bc818310a10e80",
      "parents": [
        "64ac862f7bb40f2ec2d65510904cf157b1cf60a5"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed Apr 25 18:53:49 2012 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Thu Apr 26 13:13:08 2012 -0700"
      },
      "message": "Apply --extra-packages in case --custom-pacakge is also specified.\n\nCherry-picked from master.\n\nChange-Id: I2d67b8821afdf064f4186ccd8def1b65f9a7dc88\n"
    },
    {
      "commit": "cb092e2b7fa46477651c8b8733d50307b0de9d6d",
      "tree": "c021b1e8481f91b00c2f34230abbc84bf41d1c37",
      "parents": [
        "a8d6ddee98e09a68030f4226b94f631e3b4c83c1"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Apr 23 17:41:37 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Apr 23 17:41:37 2012 -0700"
      },
      "message": "Fix Paint_Delegate with missing native method.\n\nChange-Id: I39638dcb323fdd1ec3cb58dcad05757145d09026\n"
    },
    {
      "commit": "68c33ca7ce1f142eb5f1e1f90118aeba4c9db1e3",
      "tree": "f598517d463bc750d7081e2bd84b1e325c254f32",
      "parents": [
        "1b965941713a395dc8003cf8ee29a40f92dd77aa"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 19 14:51:25 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 19 14:55:13 2012 -0700"
      },
      "message": "Add new API to find smallest/largest screen size.\n\nChange-Id: I790801fceaf84ee2e3b1c9d32828285ad3231d0e\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": "ac76e72272c957dc7609aa68224efa2d32c23cd0",
      "tree": "3fb89e515da0aabcfedddf871aa92ee0b1173c38",
      "parents": [
        "2c2ab0e07106942ee64dd66d6efa71e70b336b0d",
        "eabfb3a36e9469c5e219f92b39b7200104319185"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 16 17:34:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 17:34:25 2012 -0700"
      },
      "message": "Merge \"Add new scale-up window manager animation.\""
    },
    {
      "commit": "eabfb3a36e9469c5e219f92b39b7200104319185",
      "tree": "ef38c351e0d5f6b1a60b514c78a4396e3a2c20a6",
      "parents": [
        "455b7bb83ce4a12a72f5b8341eda19754d582293"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 16 16:28:22 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 16 17:32:50 2012 -0700"
      },
      "message": "Add new scale-up window manager animation.\n\nLike zoom thumbnail, but without the thumbnail.\n\nChange-Id: I9486dd204398b87c9e70ff0d05d03f4a22449cd6\n"
    },
    {
      "commit": "4aa14b912fa7b0e8f2f1deb3e66dab4668de1e12",
      "tree": "94c306cbcf94a0c1d46d97d863d498825429e455",
      "parents": [
        "455b7bb83ce4a12a72f5b8341eda19754d582293"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 13 19:18:41 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 16 11:34:15 2012 -0700"
      },
      "message": "Add new aapt dump badging output explaining implicit badging.\n\nNew uses-implied-feature and uses-implied-permission tell you\nabout any features or permissions that aapt is automatically\nadding to your app, and why it is doing so.\n\nChange-Id: I45edb055408e1259699c994f956166ce67e8db5d\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": "4527a9242127c28ad9472ec3b7677b444b3ef215",
      "tree": "b66d5ebfb607565f3ccc4f58978682483a69c7e4",
      "parents": [
        "9944ecd28e1c56c4e9f0a50ed6e8be2110ba5c31",
        "b6ec11ef372a498c4d5fd2317a015b808495a2ed"
      ],
      "author": {
        "name": "Dan Morrill",
        "email": "morrildl@google.com",
        "time": "Tue Apr 10 17:13:17 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 10 17:13:17 2012 -0700"
      },
      "message": "Merge \"Adding a line for android-debuggable to \u0027dump badging\u0027 if AndroidManifest.xml is configured as such. This is to be used by e.g. Play Store to warn the developer that they are about to publish a security hole.\""
    },
    {
      "commit": "29d6fa9d8b651b6940e6f3f9182f5b72c404c739",
      "tree": "87c56ad1fb531a82f86f81b7622e8dd95f4a1ecc",
      "parents": [
        "dc0dbbd4a005f16624978b95817b33156acac526",
        "31b0e0e86ad061cd8005e80817bcad017e2d56dd"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 06 11:11:32 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 06 11:11:32 2012 -0700"
      },
      "message": "Merge \"Implement call log permission compatibility.\""
    },
    {
      "commit": "31b0e0e86ad061cd8005e80817bcad017e2d56dd",
      "tree": "f69e9622ac7c1d06dbd78fcac3d5934f831417de",
      "parents": [
        "9828830611137bb751ab3512082a3bd31f439e38"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 05 19:33:30 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 05 19:33:30 2012 -0700"
      },
      "message": "Implement call log permission compatibility.\n\nIf a pre-JellyBean application requests read/write contacts, it\nwill implicitly be given read/write call log.\n\nChange-Id: I029db4b09fda737bb8fba4e1611355ebdbbfd34f\n"
    },
    {
      "commit": "ac14351e16e1258f1cb54e2bf772b8be004eb2b8",
      "tree": "55c22fe8e19d35764f00a6ffad899e4fd2c4ccd0",
      "parents": [
        "030711c39b6093024d784c1c3d7566bd5a3e3489"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 05 18:57:33 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 05 19:33:11 2012 -0700"
      },
      "message": "Move some APIs from window manager to input manager.\n\nSimplified input injection API down to just one call.\n\nRemoved all input state reading API.  It was only used by the\nwindow manager policy and required a permission that applications\ncould not obtain.  READ_INPUT_STATE is now unused and deprecated.\n\nChange-Id: I41278141586ddee9468cae0fb59ff0dced6cbc00\n"
    },
    {
      "commit": "5459c43b83c3a9d0406f01deffaadd2ef458518c",
      "tree": "9193ba676d54cf522aec320b089692c9fcecbbd8",
      "parents": [
        "5b4a57973c85afb2f5ec833dc2c202111399b871",
        "f87d19621dc2a30232bba1f51862a0b671eb9729"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 05 11:47:02 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 05 11:47:02 2012 -0700"
      },
      "message": "Merge \"Clean up status bar, system bar, navigation bar management.\""
    },
    {
      "commit": "f87d19621dc2a30232bba1f51862a0b671eb9729",
      "tree": "8bf53cb17770100b6fd1c1f31f1b27eb7121ce3e",
      "parents": [
        "5b86de1e6b8f597ab2444de0f2274546321f1810"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 04 12:48:24 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 04 16:00:45 2012 -0700"
      },
      "message": "Clean up status bar, system bar, navigation bar management.\n\nThe status bar and navigation bar are two completely separate\nelements, with their own semantics.  The system bar now classifies\nitself as a navigation bar, since that is really how it behaves.\n\nThis required rewriting the HDMI resizing code, so that it is\nall done by PhoneWindowManager since that is what is responsible\nfor the size of the navigation bar (and thus now system bar).  This\nactually gets rid of a fair amount of code, and means we can also\ndo the same thing for a pure navigation bar.\n\nLikewise the system bar now has the navigation bar ability to be\nhidden when requested by system UI flags.  To get the behavior\nwe want on Xoom, we only allow the nav bar to be hidden when it\nwill help provide a better aspect ratio for showing widescreen\nvideos.\n\nFinally the nav/system bar now animates when hidden and shown.\n\nChange-Id: Ie927154b68376a0b61802f99171ff56b8da92e7a\n"
    },
    {
      "commit": "ec4a50428d5f26a22df3edaf7e5b08f41d5cb54b",
      "tree": "cd47b15082ff35879cf6e22a86f44108f45920aa",
      "parents": [
        "58a40a3e92f8a53ac1068f0839dec4a1707fa6fb"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Apr 04 10:27:15 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Apr 04 12:05:59 2012 -0700"
      },
      "message": "Embed layout padding in nine patch images\n\n- Added a new custom PNG chunk that carries the layout padding ints.\n- Extract the padding ticks from .9.png images and store in the chunk.\n- Load the padding information at runtime into Bitmap and NinePatchDrawable.\n\n- The new chunk is ordered first so that it doesn\u0027t cause a problem in older\n  versions of the platform.\n\nBug: 6087201\n\nChange-Id: I5de46167a1d44b3ec21065b0c165e594b1dc8399\n"
    },
    {
      "commit": "b6ec11ef372a498c4d5fd2317a015b808495a2ed",
      "tree": "529b04c2ffa8665181f94555c601aaca496a094d",
      "parents": [
        "b3fa3960a03ef553e58bf1add88029a6c072c6b6"
      ],
      "author": {
        "name": "Dan Morrill",
        "email": "morrildl@google.com",
        "time": "Tue Apr 03 12:44:40 2012 -0700"
      },
      "committer": {
        "name": "Dan Morrill",
        "email": "morrildl@google.com",
        "time": "Tue Apr 03 14:42:05 2012 -0700"
      },
      "message": "Adding a line for android-debuggable to \u0027dump badging\u0027 if AndroidManifest.xml\nis configured as such. This is to be used by e.g. Play Store to warn the\ndeveloper that they are about to publish a security hole.\n\nChange-Id: Ib6f8537462cbc00ed0504435bdeee2aae0c5b69b\n"
    },
    {
      "commit": "c4293c14083d833bb5d13dc19e73daed8cbbb4ea",
      "tree": "1156b525c8c1ca2735e7fdd060374c4a9bc7961d",
      "parents": [
        "8ea93aa6adc0e46c8931d31d4f940cdde97c672f"
      ],
      "author": {
        "name": "Nobuhiro Hayashi",
        "email": "nobuhiro.hayashi@gmail.com",
        "time": "Mon Jan 30 18:42:20 2012 +0900"
      },
      "committer": {
        "name": "Nobuhiro Hayashi",
        "email": "nobuhiro.hayashi@gmail.com",
        "time": "Fri Mar 30 19:23:04 2012 +0900"
      },
      "message": "aapt: Remove terminal pointer incrementaion\n\nWhen initialization, \u0027end\u0027 pointer refers terminal\ncharacter in a string. But it is incremented in\nwhile loop. It occurs the access to non-secure memory.\n\nIssue detail\n  http://code.google.com/p/android/issues/detail?id\u003d24896\n\nChange-Id: I751d1154d797738c87a66374a66933528c045be5\n"
    },
    {
      "commit": "fbd0509f4746ae1ebca4ab91fc55ebd234ba9d3d",
      "tree": "c7ce19b712ec537ddd8757605b4e068df2e18686",
      "parents": [
        "d5f2374e13a7bcefbc7252b814d128794f22af93",
        "22f700a1b8fb9d2ac7b261e30a46a040928c23bc"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Mar 23 16:29:50 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 23 16:29:50 2012 -0700"
      },
      "message": "Merge \"Add Delegate for ViewRootImpl#isInTouchMode to prevent IPC call in Eclipse.\""
    },
    {
      "commit": "22f700a1b8fb9d2ac7b261e30a46a040928c23bc",
      "tree": "8c56dc423da3c3ec1e443f090c8426243265de48",
      "parents": [
        "0aa4713e47a53377720a043cf1b043ce31cb73da"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Mar 23 16:07:23 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Mar 23 16:07:23 2012 -0700"
      },
      "message": "Add Delegate for ViewRootImpl#isInTouchMode to prevent IPC call in Eclipse.\n\nAlso fix some new/removed method from BitmapFactory.\n\nChange-Id: I606bd8bee6ff1e2c6c9472b4672175bfdaff45de\n"
    },
    {
      "commit": "8078d8c8a282ca81344febe7256f63b1e805e3aa",
      "tree": "6bfb8ab0a389c2ae344088017bd0ceee1e913660",
      "parents": [
        "3c4da3cad04ca878a4a37fcca3f3e2ff51d03fcb"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 20 11:11:26 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Mar 23 14:13:13 2012 -0700"
      },
      "message": "Add new thumbnail animation.\n\nUse it for recent tasks switching.\n\nNot perfect yet by far, but something.\n\nAlso fix issue #6186758: Twitter crashes after tapping on a tweet on JRM75D\n\nChange-Id: I49bf6c94aafde875ac652dedaf96d6c08cc9e7d2\n"
    },
    {
      "commit": "a982dc05d7ca919c07f50e446549ef9dceadf6bd",
      "tree": "e9b0e1564069bf39447db97b966a01c6dda66609",
      "parents": [
        "54c546223cd550d2995ec6d956a8e7963311a0a6"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 22 18:43:07 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 22 18:43:07 2012 -0700"
      },
      "message": "frameworks/base: move Zip* from libandroidfw to libutils\n\nZipUtils is needed by build/tools, move it from libandroidfw\n(frameworks/base) to libutils (frameworks/native).\n\nChange-Id: I2b4b7adcdf68eb25ee7cba5dd3b69eadf0523af3\n"
    },
    {
      "commit": "fe75d62eba3935d2d1a4a7790fc7459ded241ad3",
      "tree": "71054bce03f3a52e59fb5dc4af890f93da50a259",
      "parents": [
        "80a6b33be276eb6c808fce13debb4bb7a489cdad"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Mar 19 14:08:58 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Mar 19 14:08:58 2012 -0700"
      },
      "message": "Use qsort_r_compat() as a portable wrapper for qsort_r().\n\nChange-Id: Ie79f81625947f4e95122047605d994c86e872e74\n"
    },
    {
      "commit": "80a6b33be276eb6c808fce13debb4bb7a489cdad",
      "tree": "87a9f32d2f21c9381cc51f9ce1d9fa84a255d5f2",
      "parents": [
        "cc67069aa7ea6d6b3a573b5917f43246d228290d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Mar 19 12:02:10 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Mar 19 12:02:10 2012 -0700"
      },
      "message": "Fix build break on glibc, for real.\n\nChange-Id: I8bbec237229b05f96c708d41f3c4da17e2a90e2b\n"
    },
    {
      "commit": "46fc395386f2277a0425b2c46be08fd91f6554f4",
      "tree": "fd748e51bea1b40e081d66332034f0a8fc3b5a60",
      "parents": [
        "5db7bc6eea9c9c7c84ae21a7cc0069ceee08a6d4"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Mar 19 11:48:12 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Mar 19 11:50:02 2012 -0700"
      },
      "message": "Fix build break on glibc hosts.\n\nChange-Id: Ida70bec6ea972d042982428353cbbc33cde25136\n"
    },
    {
      "commit": "c0f7366a15655c6973ea21029f1997f24c006cca",
      "tree": "ad9302a32cfbfa603ce5b58a6fa263c92953795a",
      "parents": [
        "c9fd9263feedac32e4f5b1f13a3246347efdc25f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 16 22:17:41 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Mar 17 14:12:57 2012 -0700"
      },
      "message": "aapt: Preprocess images in parallel.\n\nCurrently hardcoded to use up to 4 threads.\n\nThis change substantially reduces the amount of time spent\npreprocessing framework resources to just a few seconds.\n\nChange-Id: I02fdd283fb529a152aeb22ac87f278779fd77983\n"
    },
    {
      "commit": "c9fd9263feedac32e4f5b1f13a3246347efdc25f",
      "tree": "034a4002a842eae595f59f5d78d982e6316fb13d",
      "parents": [
        "61361f376b47d45966b1ca0d24d51622304c93c3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 16 19:25:20 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 16 22:25:15 2012 -0700"
      },
      "message": "Use quicksort to sort the string pool.\n\nThe current implementation of Vector::sort uses insertion sort\non the assumption that the data is mostly sorted.  It isn\u0027t.\n\nThis change brings the total time spent sorting packages by config\ndown to 500ms from about 93 seconds.\n\nBug: 6186278\nChange-Id: Iec8da11e09297acd6c73733d063b0fa9dacf69f7\n"
    },
    {
      "commit": "61361f376b47d45966b1ca0d24d51622304c93c3",
      "tree": "b634bf9370932e1b4c9296156b9c85777d87d01c",
      "parents": [
        "bf02b984738f6be5cc2e2d66b12aff7af99eb79e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 16 15:25:17 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 16 22:24:54 2012 -0700"
      },
      "message": "Add some comments about StringPool sort order.\n\nChange-Id: I57f24d46328a6bfef883819eaf95c03114d573bb\n"
    },
    {
      "commit": "bf02b984738f6be5cc2e2d66b12aff7af99eb79e",
      "tree": "5935f61cba1cf10d6f1b135c68e37d34424a72ff",
      "parents": [
        "4eb7fbb250feb34a7fe0df1eb2f4b76945d65c8b",
        "345b7eb8749d6954942fd4e961fff9f2f854934c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 16 19:10:57 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 16 19:10:57 2012 -0700"
      },
      "message": "Merge \"Remove dead code in StringPool.\""
    },
    {
      "commit": "4eb7fbb250feb34a7fe0df1eb2f4b76945d65c8b",
      "tree": "0e5529d5d71ca567aebdcf3d358b4b14a3e7cb98",
      "parents": [
        "dea50f05e43b2ad6ea392d7ddfbfa691f6903734",
        "8a9cfcc85260eadcc2c17c4a8911c6d93b642f39"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 16 19:10:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 16 19:10:47 2012 -0700"
      },
      "message": "Merge \"Make StringPool entry types trivially movable.\""
    },
    {
      "commit": "345b7eb8749d6954942fd4e961fff9f2f854934c",
      "tree": "9357978bf60889db44adb838760e261265a5d839",
      "parents": [
        "8a9cfcc85260eadcc2c17c4a8911c6d93b642f39"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 16 15:25:17 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 16 15:25:17 2012 -0700"
      },
      "message": "Remove dead code in StringPool.\n\nThe sorted string pool option was no longer used.\nNeither were strings with associated identifiers.\n\nChange-Id: Ic5f6368637fbeedfda873d63f4ad0f3ea9d0d603\n"
    },
    {
      "commit": "8a9cfcc85260eadcc2c17c4a8911c6d93b642f39",
      "tree": "7534c55dc00e91b64c61c9a830f5115cb304cad5",
      "parents": [
        "543ec1c808e0064371cdf491bb8ff1e08134ed93"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 16 15:24:32 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 16 15:24:32 2012 -0700"
      },
      "message": "Make StringPool entry types trivially movable.\n\nChange-Id: If93957a840a0f1cae2e6ef291eeeb1b0c7c20958\n"
    },
    {
      "commit": "5d701eddcf7f4abd5867ec3bf2091916d5ebbdf1",
      "tree": "20ef99ad3536036c82e74b616b998e960f7c107c",
      "parents": [
        "55ba267c097b5aadc265bbb9abc7ec5323c33194"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Mar 16 14:58:47 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Mar 16 15:14:02 2012 -0700"
      },
      "message": "LayoutLib: Properly support attr ns when used in styles.\n\nChange-Id: I885864588928589d7c9a34b94339917c5be47fa5\n"
    },
    {
      "commit": "a421f6c0ba8c354e2a81830e6402654bbf732780",
      "tree": "42a9806e866f8366fba62edb91d8f066513193cc",
      "parents": [
        "a1d2bd829d4804b7841d7c39c8d2ae438b634efb"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 22 10:21:02 2012 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Mar 15 16:23:51 2012 -0700"
      },
      "message": "Fix sdk layout rendering in JB.\n\nSince JB, com.android.internal.R does not contain all the resources,\ninstead only the ones that are accessed through Java.\nThis means we need to dynamically generate IDs for resources that are\nprivate and only accessed from other XML resources. This is done\nthrough the DynamicIdMap class.\n\nAlso add a PolicyManager and a PowerManager since those are now\nneeded by ViewRootImpl?!?\n\nChange-Id: If2ae8ad79502fa084d852664a44aefd46e01aec6\n"
    }
  ],
  "next": "a4972e951bf2bdb7afdafee95b3ab0c15b8bacae"
}
