)]}'
{
  "log": [
    {
      "commit": "05dc66ada6b61a6bdf806ffaa62617ac5394695d",
      "tree": "a7e395476241706de31498185a5c2ccb979bcb54",
      "parents": [
        "e43111fad31ad8e36a66df52a8c6002799996413"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 02 14:41:58 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 02 15:37:57 2011 -0800"
      },
      "message": "Fade out the mouse pointer after inactivity or other events.\n\nFades out the mouse pointer:\n- after 15 seconds of inactivity normally\n- after 3 seconds of inactivity in lights out mode\n- after a non-modifier key down\n- after a touch down\n\nExtended the native Looper to support enqueuing time delayed\nmessages.  This is used by the PointerController to control\npointer fade timing.\n\nChange-Id: I87792fea7dbe2d9376c78cf354fe3189a484d9da\n"
    },
    {
      "commit": "32a55cf66e12e5e56d2e05b73c6bef453477c2bb",
      "tree": "e5709c24f92bc304bfc32f75b8f23911092c5f40",
      "parents": [
        "d752c3b3e6c576ed1f18e86a7b18c33dc7c65791"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 25 16:11:44 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 25 16:20:52 2011 -0800"
      },
      "message": "Fix sp\u003c\u003e conversion operator / constructor\n\nsome of the conversion operators were not using the proper\npointer type when calling incStrong/decStrong, usually it\nhas no bad consequences, but for some implementation\nof the ref-counted object it could lead to recording the wrong\nowner id.\n\nChange-Id: If574b9069b8a4cf6e0911a992c8f095aba799995\n"
    },
    {
      "commit": "ffbe826804e150013acbf3ab25bd405bbbd186fc",
      "tree": "51fae9c95265246e6de2100556cb7d68746f9614",
      "parents": [
        "a28f6f11f22963e3679537e83f243edeaa5ee17c",
        "ec122eb46b6ce8f6e8bb3e08c34e575de666cd3e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 24 16:23:51 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 24 16:23:51 2011 -0800"
      },
      "message": "Merge \"Fix some issues with RefBase debugging.\""
    },
    {
      "commit": "6152bbc65016e526f25d24a66b92d6aa822f6ee0",
      "tree": "c889b96609acef1ddde26a338e1b4a0e5a802074",
      "parents": [
        "7b76c8d3fc25aedea6edfed9638b008faa2f6ae8",
        "c2b3cda097d2f8ac9211360aa82995d693e0764c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 24 10:01:31 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 24 10:01:31 2011 -0800"
      },
      "message": "Merge \"Bug 3362814 Fix SMP race in access to mRequestExit\""
    },
    {
      "commit": "ec122eb46b6ce8f6e8bb3e08c34e575de666cd3e",
      "tree": "c5d6d30e2802f8e9671731cc16095c6040358f09",
      "parents": [
        "47b8adec3904535c8d8ce2b6e42ecd736f2d90ce"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 16 20:23:43 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 23 22:21:41 2011 -0800"
      },
      "message": "Fix some issues with RefBase debugging.\n\nFirst slipt sp\u003c\u003e out of RefBase into StrongPointer.h so it can be reused\nmore easily and to make it clear that it doesn\u0027t require RefBase.\n\nNote: the rest of the change only affects the system when DEBUG_REFS is enabled.\n\nThe main problem we fix here is that the owner id associated with each\nreference could get out of date when a sp\u003c\u003e or wp\u003c\u003e was moved, for\ninstance when they\u0027re used in a Vector\u003c \u003e.\n\nWe fix this issue by calling into RefBase::moveReferences from\na template specialization for sp\u003cTYPE\u003e and wp\u003cTYPE\u003e of the\ntype helpers. RefBase::moveReferences() has then a chance to\nupdate the owner ids.\n\nThere is a little bit of trickery to implement this generically in\nRefBase, where we need to use a templatized functor that can turn\na sp\u003cTYPE\u003e* casted to a void* into a RefBase*.\n\nIntroduced a new debug option DEBUG_REFS_FATAL_SANITY_CHECKS\ncurrently set to 0 by default as there seem to be an issue\nwith sp\u003cANativeWindow\u003e which trips the sanity checks.\n\nChange-Id: I4825b21c8ec47d4a0ef35d760760ae0c9cdfbd7f\n"
    },
    {
      "commit": "c2b3cda097d2f8ac9211360aa82995d693e0764c",
      "tree": "8a6baf03da30391ff32d3a269df42dda278f701b",
      "parents": [
        "282ff9ae3f798dec325ce6b868f053649b596a8c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 01 11:32:29 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 23 17:49:59 2011 -0800"
      },
      "message": "Bug 3362814 Fix SMP race in access to mRequestExit\n\nAlso fix an unlikely SMP race in access to mHoldSelf on entry to _threadLoop.\n\nChange-Id: I6cbc0b94739c7dd5e77e8a5ba0da22cdc0b1a4db\n"
    },
    {
      "commit": "a688b574d294faae5f56224908b40856c5045aac",
      "tree": "2af92697194f007d9e0beb044c005a863ac40a85",
      "parents": [
        "5fb008e3800032be18c6d5f1e7ace4d7c2661e26"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 16 15:23:08 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 22 18:08:58 2011 -0800"
      },
      "message": "Remove RefBase.h dependency on TextOutput.h\n\nChange-Id: I72cd6b98ef82b4868fe1c8ec87862cf43fb4ee73\n"
    },
    {
      "commit": "bb9d394b21bdfeb1ceb4cf6e4ed0306e39757b15",
      "tree": "dbe7d5b2eef96e80ed4a3a1595e1a26cb19e228d",
      "parents": [
        "9497144281b92dd5293ea734d668217bcf4e86e9"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 16 10:13:53 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 16 10:56:32 2011 -0800"
      },
      "message": "Clean up use of HAVE_ANDROID_OS\n\nHAVE_ANDROID_OS was defined as \"1\" for targets, but never defined as \"0\"\nfor non-targets. Changing them to #ifdef should be safe and matches\nall the other uses of HAVE_ANDROID_OS throughout the system.\n\nChange-Id: I82257325a8ae5e4e4371ddfc4dbf51cea8ea0abb\n"
    },
    {
      "commit": "ec2cd74ee3d43f6d1e6865bf8e576b4b42635a86",
      "tree": "342ee750c0b159e2aa70eaefeb429261590515b6",
      "parents": [
        "853f284c0b80540cf447af0e6e704d7a05947efd",
        "1314bdb2b22ae3613c3e08ae278dbc70f90b965c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Jan 30 16:32:44 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jan 30 16:32:44 2011 -0800"
      },
      "message": "am 1314bdb2: am e88fa50b: Merge from open-source gingerbread\n\n* commit \u00271314bdb2b22ae3613c3e08ae278dbc70f90b965c\u0027:\n  fix failing thread object run\n"
    },
    {
      "commit": "1314bdb2b22ae3613c3e08ae278dbc70f90b965c",
      "tree": "4555994fbcf7b80f5ce9c76922f467aec65df71c",
      "parents": [
        "a1f5e82f37c77af7b1d630b5bca715d1742f1234",
        "e88fa50be8d6709ef58b7aeb01c5efa059bcac2e"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Jan 30 16:19:59 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jan 30 16:19:59 2011 -0800"
      },
      "message": "am e88fa50b: Merge from open-source gingerbread\n\n* commit \u0027e88fa50be8d6709ef58b7aeb01c5efa059bcac2e\u0027:\n  fix failing thread object run\n"
    },
    {
      "commit": "e88fa50be8d6709ef58b7aeb01c5efa059bcac2e",
      "tree": "23fd178258f1fc5144dd026fdecaf9e9468a459d",
      "parents": [
        "c12cdda949e6b916dd9e6fa4b30ab8b0d1898faa",
        "65aef1517b070e695e00e9603bf79c166dc4913f"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Jan 30 15:29:52 2011 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Jan 30 15:30:03 2011 -0800"
      },
      "message": "Merge from open-source gingerbread\n\nChange-Id: I56f2ed37187796807fbf0de15274a85164f9432c\n"
    },
    {
      "commit": "371de9695508073fbbde8181eb230e99cb045206",
      "tree": "8b725299fe6b9638dad8cc3dc538a23ae86377ac",
      "parents": [
        "bda99568d84530c6442af0602e9c12e6cb897780",
        "a1f5e82f37c77af7b1d630b5bca715d1742f1234"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sat Jan 29 23:07:48 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 29 23:07:48 2011 -0800"
      },
      "message": "am a1f5e82f: am a30063d8: am 25eb0464: Merge \"Normalize output from aapt d\"\n\n* commit \u0027a1f5e82f37c77af7b1d630b5bca715d1742f1234\u0027:\n  Normalize output from aapt d\n"
    },
    {
      "commit": "a1f5e82f37c77af7b1d630b5bca715d1742f1234",
      "tree": "c7b1d7c8c18f5d74370558cbcf48ca6747661096",
      "parents": [
        "71bb59f9e6799083830077dbb7e0f1effdd3faf7",
        "a30063d80c08434ac3c7316f338c6d54110449ab"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sat Jan 29 23:04:50 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 29 23:04:50 2011 -0800"
      },
      "message": "am a30063d8: am 25eb0464: Merge \"Normalize output from aapt d\"\n\n* commit \u0027a30063d80c08434ac3c7316f338c6d54110449ab\u0027:\n  Normalize output from aapt d\n"
    },
    {
      "commit": "e75d87266b59fc76cfb1b9bbc9a4734b8fd1664f",
      "tree": "ae73c7cc248d11204cc4057e77574bf466d1f0c0",
      "parents": [
        "e31ecf61042171242e6f31f22df7691c40f189b2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jan 27 19:37:40 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jan 27 21:56:33 2011 -0800"
      },
      "message": "Fix issue #3392073: At times soft keyboard comes up in...\n\n...gallery while attaching picture to gmail message\n\nIn various places we could block switching the IME target incorrectly.\n\nChange-Id: I7e647fb35f4ea6f2e39eb7efd911420ea9ee64fa\n"
    },
    {
      "commit": "2d9299b39d4802a68bfd083a06de347bf1c0721d",
      "tree": "fc298c640dd3543014caba479459057a58659fb7",
      "parents": [
        "e59e0309a1301908eae0075db02413fda90848d5"
      ],
      "author": {
        "name": "Ritu Srivastava",
        "email": "rsrivast@sta.samsung.com",
        "time": "Tue Jan 25 16:23:08 2011 -0800"
      },
      "committer": {
        "name": "Madan Ankapura",
        "email": "mankapur@sta.samsung.com",
        "time": "Tue Jan 25 21:48:54 2011 -0800"
      },
      "message": "fix failing thread object run\n\nA previously exited Thread object refuses to run again, if the\nthread-id of the caller, conincides with the thread-id it previously\nused in the worker thread. Hence reset the previously used worker\nthread-id to -1 when it exits.\n\n Signed-off-by: Ritu Srivastava \u003crsrivast@sta.samsung.com\u003e\n\nChange-Id: I873925c312a43ec8a16392b98cc959042ff6bfd2\n\nSigned-off-by: Madan Ankapura \u003cmankapur@sta.samsung.com\u003e\n"
    },
    {
      "commit": "41f4d4d84790f49a0771c3ebfd12d87a5b879f94",
      "tree": "46202c299f6ad14ed6f46d4131912688fa926b68",
      "parents": [
        "e9739d09cb53fd05cc9229049b3d54c7f6816450"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 04 11:58:04 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 12 18:28:25 2011 -0800"
      },
      "message": "Fix issue 3302649.\n\nThe cause of the problem is that AudioTrack::start() can fail if it is called from a newly created\nthread that has the same ID as the AudioTrack callback thread that has just been stopped and not yet exited.\nThis is possible as the thread ID used by the Thread class is not the TID.\n\nThe fix consists in clearing the thread ID before exiting the thread loop.\n\nChange-Id: I8b5f6a63feeaeb9a01267380e85f6f1456e7aa01\n"
    },
    {
      "commit": "730ba19bc8c097fdcbee3adb04e86d435640bb72",
      "tree": "be2dc030fe91f723e708a652dea7da9ee30b3690",
      "parents": [
        "8f49c025ca5b4ed84290fb9e5e0b7acb1c139b35"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 04 11:58:04 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 04 11:58:04 2011 -0800"
      },
      "message": "Fix issue 3302649.\n\nThe cause of the problem is that AudioTrack::start() can fail if it is called from a newly created\nthread that has the same ID as the AudioTrack callback thread that has just been stopped and not yet exited.\nThis is possible as the thread ID used by the Thread class is not the TID.\n\nThe fix consists in clearing the thread ID before exiting the thread loop.\n\nChange-Id: I66e679665c384403cb3ba2c31746f5de72d5836d\n"
    },
    {
      "commit": "9872bf4a2d4ae1e7ded170c8e74d400fe6be9bfb",
      "tree": "4040c675a82cdab2888c72e56188d8cd91ae547b",
      "parents": [
        "69ebb984f230a523dc316bdb2c9e9c28111364fd"
      ],
      "author": {
        "name": "Shachar Shemesh",
        "email": "lingnu@gmail.com",
        "time": "Mon Dec 20 17:38:33 2010 +0200"
      },
      "committer": {
        "name": "Shachar Shemesh",
        "email": "lingnu@gmail.com",
        "time": "Tue Jan 04 20:52:08 2011 +0200"
      },
      "message": "Normalize output from aapt d\n\nMake the output from aapt dump --values resources and aapt dump xmltree normalized, so that it is unambigously displayed\nregardless of the content of the strings.\n\nChange-Id: Ia3bff36c4ee1e9a44f474534e154830948beabdf\n"
    },
    {
      "commit": "83c09685f2e62bc3cf7e71bc61d903f4b9ccaeb4",
      "tree": "c8bc2824e0d2e2b353b3d16ecf5836ab8fd9e67c",
      "parents": [
        "dd830c21149c336139b28560c0e6fba9f3d0e0fc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Dec 23 17:50:18 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Dec 29 13:19:53 2010 -0800"
      },
      "message": "Add initial support for cursor-based pointing devices.\n\nSome parts stubbed out but you can plug in a mouse and move\na green cursor around to interact with the UI.\n\nChange-Id: I80d597a7f11d3bd92041890f74b3c77326975e6e\n"
    },
    {
      "commit": "ddb76c4644756b31be948d70aaa8ee541dd94999",
      "tree": "782d260d2da982941148be7c1a0a0780749cdfdc",
      "parents": [
        "8028a951c3aa74990907efb9376d1093d84084af"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 24 12:56:06 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Dec 08 11:21:30 2010 -0800"
      },
      "message": "Change assets to use 64-bit API\n\nThe asset system and supporting libraries were using off_t instead of\noff64_t to access files larger than 2GB (32-bit signed). This change\nreplaces all off_t with off64_t and lseek64.\n\nThere is a new utils/Compat.h added for Mac OS compatibility.\n\nAlso fixed some size-related compiler warnings.\n\nBug: 3205336\nChange-Id: I9097b3cb7a602e811fe52f245939d8975da55e9e\n"
    },
    {
      "commit": "9065504a63d6bf37bf621191fda1d1fe4da76ee3",
      "tree": "500948db3ef54c52fc65f52f4ab4a220e4504009",
      "parents": [
        "d6a46103bfbed17451abf0fb608d7b778597846c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Dec 02 13:50:46 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Dec 02 16:01:32 2010 -0800"
      },
      "message": "Improve support for external keyboards.\n\nUse Vendor ID, Product ID and optionally the Version to\nlocate keymaps and configuration files for external devices.\n\nMoved virtual key definition parsing to native code so that\nEventHub can identify touch screens with virtual keys and load\nthe appropriate key layout file.\n\nCleaned up a lot of old code in EventHub.\n\nFixed a regression in ViewRoot\u0027s fallback event handling.\n\nFixed a minor bug in FileMap that caused it to try to munmap\nor close invalid handled when released if the attempt to map\nthe file failed.\n\nAdded a couple of new String8 conveniences for formatting strings.\n\nModified Tokenizer to fall back to open+read when mmap fails since\nwe can\u0027t mmap sysfs files as needed to open the virtual key\ndefinition files in /sys/board_properties/.\n\nChange-Id: I6ca5e5f9547619fd082ddac47e87ce185da69ee6\n"
    },
    {
      "commit": "47e6b1b5eef8ee99872f278f66bc498c4fcca0d8",
      "tree": "ef5a7c87b8dca433ea9707c1289ae7c8d2ba3787",
      "parents": [
        "735206f121cb2a11b3397870e6565178627e0aa3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 29 17:37:49 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 30 17:15:49 2010 -0800"
      },
      "message": "Support non-orientation aware keyboards and other devices.\n\nFixed a bug with dpad keys on external keyboards being rotated\naccording to the display orientation by adding a new input device\nconfiguration property called \"keyboard.orientationAware\".\n\nAdded a mechanism for overriding the key layout and key character\nmap in the input device configuration file using the new\n\"keyboard.layout\" and \"keyboard.characterMap\" properties.\n\nAlso added \"trackball.orientationAware\", \"touch.orientationAware\" and\n\"touch.deviceType\" configuration properties.\n\nRewrote the configuration property reading code in native code\nso that it can be used by EventHub and other components.\n\nAdded basic support for installable idc, kl, and kcm files\nin /data/system/devices.  However, there is no provision for\ncopying files there yet.\n\nDisabled long-press character pickers on full keyboards so that\nkey repeating works as expected.\n\nChange-Id: I1bd9f0c3d344421db444e7d271eb09bc8bab4791\n"
    },
    {
      "commit": "a6210d061bb79e5c10ed88c99111df51e52e4472",
      "tree": "c789bd306c908846fcfa1e8b6b74435daddc9974",
      "parents": [
        "7ffd0871e6b8d7ab9443bef6e8b2a31674d1f623"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 19 13:13:07 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 19 13:52:19 2010 -0800"
      },
      "message": "Fix SDK build on Windows due to use of mmap.\n\nChange-Id: Id4bd9a6f932285c93c5853e540efc20b99876564\n"
    },
    {
      "commit": "6b53e8daa69cba1a2a5a7c95a01e37ce9c53226c",
      "tree": "db912c6cdf230ef7f2cf406c545b3bbae3f09ea2",
      "parents": [
        "a914f340ae5b267dc3ab36c1156c795b8fa18f5d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Nov 10 16:03:06 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 18 09:49:03 2010 -0800"
      },
      "message": "Added support for full PC-style keyboards.\n\nBREAKING CHANGE: Redesigned the key character map format to\naccomodate full keyboards with more comprehensive suite of modifiers.\nOld key character maps will not work anymore and must be updated.\nThe new format is plain text only and it not compiled to a binary\nfile (so the \"kcm\" tool will be removed in a subsequent check-in).\n\nAdded FULL keyboard type to support full PC-style keyboards.\n\nAdded SPECIAL_FUNCTION keyboard type to support special function\nkeypads that do not have any printable keys suitable for typing\nand only have keys like HOME and POWER\n\nAdded a special VIRTUAL_KEYBOARD device id convention that maps\nto a virtual keyboard with a fixed known layout.  This is designed\nto work around issues injecting input events on devices whose\nbuilt-in keyboard does not have a useful key character map (ie.\nwhen the built-in keyboard is a special function keyboard only.)\n\nModified several places where events were being synthesized\nto use the virtual keyboard.\n\nRemoved support for the \"qwerty\" default layout.\nThe new default layout is \"Generic\".  For the most part \"qwerty\"\nwas being used as a backstop in case the built-in keyboard did\nnot have a key character map (probably because it was a special\nfunction keypad) and the framework needed to be able to inject\nkey events anyways.  The latter issue is resolved by using the\nspecial VIRTUAL_KEYBOARD device instead of BUILT_IN_KEYBOARD.\n\nAdded the concept of a key modifier behavior so that\nMetaKeyKeyListener can distinguish between keyboards that use\nchorded vs. toggled modifiers.\n\nWrote more robust key layout and key character map parsers\nto enable support for new keyboard features and user installable\nkey maps.\n\nFixed a bug in InputReader generating key ups when keys\nare released out of sequence.\n\nUpdated tons of documentation.\n\nCurrently QwertyKeyListener is being used for full keyboards\nwith autotext and capitalization disabled.  This mostly works\nbut causes some problems with character pickers, etc.\nThese issues will be resolved in subsequent changes.\n\nChange-Id: Ica48f6097a551141c215bc0d2c6f7b3fb634d354\n"
    },
    {
      "commit": "300ba6846949f5b21c6d93d7698dbc39716cf832",
      "tree": "f00aed47d06332a09aa6909a6605b0743661c981",
      "parents": [
        "d781089731127bd9199d47f53b170895868b8750"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Nov 09 14:37:23 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Nov 12 15:53:40 2010 -0800"
      },
      "message": "Split UTF functions from String8/16\n\nSplit out all the UTF-8/16/32 handling code from String8/16 to its own\nfile to allow better reuse of code.\n\nChange-Id: If9ce63920edc75472c38da4adce0d13cda9ad2f7\n"
    },
    {
      "commit": "5c4cf8cd7ccd76f25a8433096774b44a6dd8ead8",
      "tree": "51ef6e7399b75a089cf68f6ec0eaeaa0c2760b28",
      "parents": [
        "460119b7ea7a4ca8490db9af5c2983419dd816b0"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Nov 02 11:27:21 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Nov 02 11:27:31 2010 -0700"
      },
      "message": "Fix default return code for getResource\n\nReorganization of getResource to allow for other densities accidentally\noverrode the default return code for getResource from BAD_VALUE to\nBAD_INDEX. This corrects the default return to BAD_VALUE which restores\nother things to working.\n\nBug: 3155824\nChange-Id: I13dafff85bc6978c5f5435fc09ab0474c7885c4d\n"
    },
    {
      "commit": "55fc850cf992cdcb0993cb109d2f716613c0dbdd",
      "tree": "2277f806e14fb8a6b422dde687ac9779176ae83b",
      "parents": [
        "490d7c5deda8d602f916942d7002757082274b9b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Oct 28 14:47:01 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 29 12:47:07 2010 -0700"
      },
      "message": "Add path to get different DPI drawables\n\nAllow a caller to request a different density than their current display\nallows. This can mean a device displaying mdpi can get a resource that\u0027s\nin hdpi and have it pretend to be in mdpi resolution. If a drawable\nthat\u0027s returned is not in the requested density, it will set it at the\nappropriate density to be scaled up later on.\n\nThe API for this is hidden currently.\n\nBug: 3134688\nChange-Id: I6c3908cbdef4907b8d3f1576df9e3b0e7af1755a\n"
    },
    {
      "commit": "da36c84a9706b1a7a1052113dcec527d0c71156e",
      "tree": "7666f00d7920a601b7cc3dd4e715dd2b1bbad76e",
      "parents": [
        "0865f7629a6fc0dba81cb42451b3eba6f34efe9d",
        "7ba8c44ef7ba22d83a670e50314d69d0ddce1b9c"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 22 09:14:28 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 22 09:14:28 2010 -0700"
      },
      "message": "am 7ba8c44e: am 8ad30b5b: Merge \"Initialized check in ZipFileRO::findEntryByName\" into gingerbread\n\nMerge commit \u00277ba8c44ef7ba22d83a670e50314d69d0ddce1b9c\u0027\n\n* commit \u00277ba8c44ef7ba22d83a670e50314d69d0ddce1b9c\u0027:\n  Initialized check in ZipFileRO::findEntryByName\n"
    },
    {
      "commit": "0b224238781fdd6d11f76a30376bc1556e1d217a",
      "tree": "f5cb7107a1028d8902fe163ab706b8de02f570fa",
      "parents": [
        "703aae06c0925b19657877bb1872bb2f28874969"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Oct 21 15:18:28 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Oct 21 15:25:12 2010 -0700"
      },
      "message": "Initialized check in ZipFileRO::findEntryByName\n\nIf a ZipFileRO object is uninitialized, the hash table will not have\nbeen initialized. This condition wasn\u0027t checked in findEntryByName.\n\nBug: 3121109\nChange-Id: Ib696e0e7e0cb4dd0fb2e456d6a847e5e8f4fe14e\n"
    },
    {
      "commit": "385a753dead6ef15f2e30eae47f73e642b3ef7ed",
      "tree": "ae4e55f4c7903e62f23802c7d49ad97ae5b2f0a7",
      "parents": [
        "a376d030a2075909219926d622b71016418d7dcd",
        "368fdba47a49f249aa4346edaf3f45291ca6a7ff"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Thu Oct 21 07:39:10 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Thu Oct 21 07:39:10 2010 -0700"
      },
      "message": "resolved conflicts for merge of 368fdba4 to master\n\nChange-Id: I42b7b433c86a71a5da5db67109f056a280077c9d\n"
    },
    {
      "commit": "431bb2269532f2514861b908d5fafda8fa64da79",
      "tree": "c862fe87c2525c18057728a75f2b3da9cdc30d2b",
      "parents": [
        "1858031946b3627b599475c5894655362e510351"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Mon Oct 18 19:13:23 2010 -0400"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Tue Oct 19 15:08:05 2010 -0400"
      },
      "message": "Reduce logging.\n\nRemember, the system and main logs are\n    - Shared resources\n    - Primarily for recording problems\n    - To be used only for large grained events during normal operation\n\nBug: 3104855\nChange-Id: I136fbd101917dcbc8ebc3f96f276426b48bde7b7\n"
    },
    {
      "commit": "497a92cc5ba2176b8a8484b0a7da040eac0e887b",
      "tree": "2d9bd7a2ef24754fa83a36f440ee45fd8a32b9fb",
      "parents": [
        "cd9afc3722a1edebf0e6f7172627930052c81ce4"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 12 17:55:08 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 15 16:00:07 2010 -0700"
      },
      "message": "Add keycodes and meta-key modifiers to support external keyboards.\n\nAdded new key maps for external keyboards.  These maps are intended to\nbe shared across devices by inheriting the \"keyboards.mk\" product\nmakefile as part of the device\u0027s product definition.\n\nOne of the trickier changes here was to unwind some code in\nMetaKeyKeyListener that assumed that only the low 8 bits of the meta key\nstate were actually used.  The new code abandons bitshifts in favor\nof simple conditionals that are probably easier to read anyways.\nThe special meta key state constants used by MetaKeyKeyListener\nare now (@hide) defined in KeyEvent now so as to make it clearer that they\nshare the same code space even if those codes are not valid for KeyEvents.\n\nThe EventHub now takes care of detecting the appropriate key layout\nmap and key character map when the device is added and sets system\nproperties accordingly.  This avoids having duplicate code in\nKeyCharacterMap to probe for the appropriate key character map\nalthough the current probing mechanism has been preserved for legacy\nreasons just in case.\n\nAdded support for tracking caps lock, num lock and scroll lock and\nturning their corresponding LEDs on and off as needed.\n\nThe key character map format will need to be updated to correctly support\nPC style external keyboard semantics related to modifier keys.\nThat will come in a later change so caps lock doesn\u0027t actually do\nanything right now except turn the shiny LEDs on and off...\n\nAdded a list of symbolic key names to KeyEvent and improved the toString()\noutput for debug diagnosis.  Having this list in a central place in the\nframework also allows us to remove it from Monkey so there is one less\nthing to maintain when we add new keycodes.\n\nBug: 2912307\nChange-Id: If8c25e8d50a7c29bbf5d663c94284f5f86de5da4\n"
    },
    {
      "commit": "cd9afc3722a1edebf0e6f7172627930052c81ce4",
      "tree": "636be59fa3dd6fc05de7de8d5b36817897fda9d2",
      "parents": [
        "3577e98ffac36e3961597cbb0341501ccac3be4a",
        "729503c280e0d5b2621a8b7a6c93dd20fe1f5d0f"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "raphael@google.com",
        "time": "Fri Oct 15 14:28:15 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 15 14:28:15 2010 -0700"
      },
      "message": "am 729503c2: am 848a2bc4: Merge \"MinGW/Cygwin requires open() in O_BINARY mode.\" into gingerbread\n\nMerge commit \u0027729503c280e0d5b2621a8b7a6c93dd20fe1f5d0f\u0027\n\n* commit \u0027729503c280e0d5b2621a8b7a6c93dd20fe1f5d0f\u0027:\n  MinGW/Cygwin requires open() in O_BINARY mode.\n"
    },
    {
      "commit": "fcab0f5502410b975afe045354bbae31ccba68a5",
      "tree": "184b37e57a998580c15fdaa98d7d8bf0c9155a90",
      "parents": [
        "10aca41e51934822dc492cb69b69cef37f42ad42",
        "8fda1636e3e35f060b9046294efd3c062a1fdb84"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 15 14:00:58 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 15 14:00:58 2010 -0700"
      },
      "message": "am 8fda1636: am bdf8034c: Merge \"OBB: use PBKDF2 for key generation.\" into gingerbread\n\nMerge commit \u00278fda1636e3e35f060b9046294efd3c062a1fdb84\u0027\n\n* commit \u00278fda1636e3e35f060b9046294efd3c062a1fdb84\u0027:\n  OBB: use PBKDF2 for key generation.\n"
    },
    {
      "commit": "5c4d4da4b74aff0a47a1da566ed30594e07661b3",
      "tree": "9066c3bc2bfe21d71bd791435c379ab093fbd2ba",
      "parents": [
        "3bb1044243ad38da35ccddc3e0d6d92d64fefe3e"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "raphael@google.com",
        "time": "Wed Oct 13 19:13:48 2010 -0700"
      },
      "committer": {
        "name": "Raphael",
        "email": "raphael@google.com",
        "time": "Wed Oct 13 21:55:15 2010 -0700"
      },
      "message": "MinGW/Cygwin requires open() in O_BINARY mode.\n\nAlsso printf %zd is not supported on MinGW/Cygwin.\n\nChange-Id: I03811dabb46e2b05dd1d8abcc0ff97b125c77d54\n"
    },
    {
      "commit": "3b1abba6bbc895d63da3e82e9b158c01bd12eddd",
      "tree": "1296e8c25a2927c94783eda83100c061fc9fe379",
      "parents": [
        "dfc07279fc6205c38f5f39cb5ba4f0aef6b593a4"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 13 15:00:07 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 13 18:25:33 2010 -0700"
      },
      "message": "OBB: use PBKDF2 for key generation.\n\nSwitch to using PBKDF2 for the key generation for OBBs. Any previously\ngenerated OBBs will stop being read correctly. A small pbkdf2gen program\nis available to allow generation of appropriate keys with the salts.\n\nBug: 3059950\nChange-Id: If4305c989fd692fd1150eb270dbf751e09c37295\n"
    },
    {
      "commit": "d5da367024c36b317b101fc066a7a4cf992c7d58",
      "tree": "87cf98a6514557be5427c462349a0ee9deb9a9dd",
      "parents": [
        "bcf74accafcdac6c7a940ce28982fc0ef08e111b",
        "22cb4ef8ce9c4d5536ac5cee5c40b82bfa56ccc5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Oct 10 12:52:40 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Oct 10 12:52:40 2010 -0700"
      },
      "message": "am 22cb4ef8: am d577cfd7: Merge \"Switch Looper back to using poll() instead of epoll().\" into gingerbread\n\nMerge commit \u002722cb4ef8ce9c4d5536ac5cee5c40b82bfa56ccc5\u0027\n\n* commit \u002722cb4ef8ce9c4d5536ac5cee5c40b82bfa56ccc5\u0027:\n  Switch Looper back to using poll() instead of epoll().\n"
    },
    {
      "commit": "415d8c38199e258dfce92cdb0c69e056b3b51ef8",
      "tree": "5bf6d167a19b272f2a153df6010a7dd6f58a274f",
      "parents": [
        "930d6c3cd5ad387489eb1d35a38beeafe54166b6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Oct 05 15:35:37 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Oct 07 13:26:39 2010 -0700"
      },
      "message": "Switch Looper back to using poll() instead of epoll().\n\nAdded a couple of micro-optimizations to avoid calling wake() unnecessarily\nand reduce JNI overhead slightly.\n\nFixed a minor issue where we were not clearing the \"next\" field of Messages\nreturned by the MessageQueue so the Message would hold on to its successor\nand potentially prevent the GC from collecting it if the message were leaked\nsomehow.\n\nChange-Id: I488d29417ce0cdd7d0e447cda76ec978ef7f811c\n"
    },
    {
      "commit": "4f65ea60555ef01e6ca0cd64acc0ef698640c853",
      "tree": "b3078773f7d362251cab92b32ac8c12f25adb690",
      "parents": [
        "0f935ebfffee769c3c707813bf9db7d50996d785",
        "bfa33b9484e2c0a019ab81f30261b9696df23a9b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Oct 05 17:02:42 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 05 17:02:42 2010 -0700"
      },
      "message": "am bfa33b94: am f84a5918: Merge \"Use pread() in ZipFileRO for Linux\" into gingerbread\n\nMerge commit \u0027bfa33b9484e2c0a019ab81f30261b9696df23a9b\u0027\n\n* commit \u0027bfa33b9484e2c0a019ab81f30261b9696df23a9b\u0027:\n  Use pread() in ZipFileRO for Linux\n"
    },
    {
      "commit": "259ec46e8e80a9f1d0b5c7a3865a498110a7f11b",
      "tree": "c2987b5a006425d41438227011f5b9b5a6febb15",
      "parents": [
        "106950f20bd352ed72ddf4490b2e19d305e36a74"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Oct 04 14:20:14 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Oct 04 15:17:19 2010 -0700"
      },
      "message": "Use pread() in ZipFileRO for Linux\n\nAssetManager instances are created by zygote and passed to all its\nchildren so that they don\u0027t have to individually open\nframeworks-res.apk. This creates a problem for determining the current\nfile offset when using lseek() on those files, because you can\u0027t\nguarantee the cross-process locking of a mutex. Luckily, Linux\nimplements pread() to get around this suckiness.\n\nThe problem is that only Linux implements this, so we have to keep the\nold locking for use on host builds with aapt and friends. aapt doesn\u0027t\nhave this same problem of sharing file descriptors across forked\nprocesses, so we can keep the local AutoMutex to protect accesses of\nthose files.\n\nChange-Id: Ibe9f11499a53fe345f50fbaea438815ec0fd363e\n"
    },
    {
      "commit": "6d95c0d941fa0d9ea50b74e60baf82956a4d4452",
      "tree": "89b9d1f34e4ccbba4ef98dfea8f3f8911dcc8b3d",
      "parents": [
        "51d2adab83837425dae8062b7ff2a5bd1e732dd9",
        "ac7540733cafcca5bdb1842e1ebcb396ba064583"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Oct 04 07:54:06 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 04 07:54:06 2010 -0700"
      },
      "message": "am ac754073: am b58b2714: Merge \"ZipFileRO: moar logging and wrap close\" into gingerbread\n\nMerge commit \u0027ac7540733cafcca5bdb1842e1ebcb396ba064583\u0027\n\n* commit \u0027ac7540733cafcca5bdb1842e1ebcb396ba064583\u0027:\n  ZipFileRO: moar logging and wrap close\n"
    },
    {
      "commit": "6cb241f9024c6923715cf4e9eeaf803a7d258750",
      "tree": "455507c53e8e0d20dee11d1888cebd67ff947523",
      "parents": [
        "306137d97f40a4f807c54a75210343c9262360d1"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 01 18:28:28 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 01 18:30:59 2010 -0700"
      },
      "message": "ZipFileRO: moar logging and wrap close\n\nThere is apparently still a race upon reading the entry Local File\nHeader that can\u0027t be tracked down, so move the LFH check inside the\nmutex-protected block so we can call lseek again to see where we are\nwhen we log an error.\n\nAlso, close() can fail so use TEMP_FAILURE_RETRY on it so we don\u0027t\nunwittingly leak file descriptors when Mean Mr. EINTR comes a-knocking.\n\nChange-Id: I753abad0bd882fe28f7281c406fa76f64393ef4c\n"
    },
    {
      "commit": "26b4e0411ee1b5c2d18aad72f4e51b19926f9f1c",
      "tree": "1b91e696fbc56263b5b3c7fa6dfc5320aef64782",
      "parents": [
        "dcdab6aef1a4e24234982698908a24a9925ce9ab",
        "c55f6da7281d34a4b875975cdf68f5062dfe4b34"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Sep 24 15:22:44 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 24 15:22:44 2010 -0700"
      },
      "message": "am c55f6da7: am 0b606263: Merge \"Revert \"Revert \"Free created FileMap when uncompressing files\"\"\" into gingerbread\n\nMerge commit \u0027c55f6da7281d34a4b875975cdf68f5062dfe4b34\u0027\n\n* commit \u0027c55f6da7281d34a4b875975cdf68f5062dfe4b34\u0027:\n  Revert \"Revert \"Free created FileMap when uncompressing files\"\"\n"
    },
    {
      "commit": "dcdab6aef1a4e24234982698908a24a9925ce9ab",
      "tree": "c660ca1552cbff42aaa76b329111875b75ea0706",
      "parents": [
        "0b783bc2e4ea2454fda4107d559eefee36b19623",
        "3e07c0007b10fbda945516acaf6b2a8787a6ca06"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Sep 24 15:22:38 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 24 15:22:38 2010 -0700"
      },
      "message": "am 3e07c000: am 74865ef6: Merge \"Add locking around ZIP seeking\" into gingerbread\n\nMerge commit \u00273e07c0007b10fbda945516acaf6b2a8787a6ca06\u0027\n\n* commit \u00273e07c0007b10fbda945516acaf6b2a8787a6ca06\u0027:\n  Add locking around ZIP seeking\n"
    },
    {
      "commit": "ba606d46f446003f068f27388707923e57e6bf26",
      "tree": "595ef1adfc96a68bbaaee2d9f73063c422f72392",
      "parents": [
        "6458fa0fce4bce7f3f9cccbacf9116f6f08abdf1"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Sep 24 09:11:28 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Sep 24 09:11:28 2010 -0700"
      },
      "message": "Revert \"Revert \"Free created FileMap when uncompressing files\"\"\n\nThis revert reverts commit a19ef306bd0a257c67b50f5e0e669e9fe52b0889.\n"
    },
    {
      "commit": "6458fa0fce4bce7f3f9cccbacf9116f6f08abdf1",
      "tree": "e0ffbaae8f45022b61189e96f99faffc36cca3b4",
      "parents": [
        "7f459df9f94bc52e53d42894dea4702394fbad5c"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Sep 24 07:57:37 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Sep 24 08:05:51 2010 -0700"
      },
      "message": "Add locking around ZIP seeking\n\nSince we switched to seeking to the LFH to verify its existence instead\nof a huge mmap of the file, we have to guarantee that another seek\ndoesn\u0027t happen before we finish our read on the LFH.\n\nChange-Id: If8135d9cb6f2f5cc4db734eafa4f6b5f6269c62a\n"
    },
    {
      "commit": "fdc85679cc300e9f7ee75040c25bef1826372ff0",
      "tree": "d3e00874739e423061101bc7e630408104bf337f",
      "parents": [
        "862d6c2cc97acb86bb5fe577b8b923d4638dd944",
        "4ec134cdba52b663506562c6406b07915820b007"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 21 15:57:13 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 21 15:57:13 2010 -0700"
      },
      "message": "am 4ec134cd: am cce0cd13: Merge \"Looper: use pthread_once for TLS key initialization.\" into gingerbread\n\nMerge commit \u00274ec134cdba52b663506562c6406b07915820b007\u0027\n\n* commit \u00274ec134cdba52b663506562c6406b07915820b007\u0027:\n  Looper: use pthread_once for TLS key initialization.\n"
    },
    {
      "commit": "134b4ae90103a7b205cd84d0491a4868cb102a7c",
      "tree": "3f6a8d6cef9954bcabc05cedda8fc33596d084f7",
      "parents": [
        "34d3aeaf7f5dd744f46220f7730913468256ae9c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 21 15:11:18 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 21 15:26:51 2010 -0700"
      },
      "message": "Looper: use pthread_once for TLS key initialization.\n\nAlso fix a Valgrind complaint by zeroing out the entire epoll event\nstruct since otherwise the data field union would be partly\nuninitialized (but not in a harmful way).\n\nChange-Id: I2091ce517e87fcad7c9caf90e2c5e4854a7ca465\n"
    },
    {
      "commit": "a2135836d1f9f134060c1cf20d5971c5cc833fc0",
      "tree": "e5fea6c22a28a834ede060418732ae4ca9cc289d",
      "parents": [
        "c6cb8d6dfb9273e7f4dda22b44ce86be3926a977",
        "a8d95248bdbb8ea0933ecf86d2859964324978a7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Sep 18 00:16:29 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Sep 18 00:16:29 2010 -0700"
      },
      "message": "am a8d95248: am 7d4739be: Merge \"Reduce lock thrashing in native Looper.\" into gingerbread\n\nMerge commit \u0027a8d95248bdbb8ea0933ecf86d2859964324978a7\u0027\n\n* commit \u0027a8d95248bdbb8ea0933ecf86d2859964324978a7\u0027:\n  Reduce lock thrashing in native Looper.\n"
    },
    {
      "commit": "960498728904a1a6ea65171f0cfb3b41187c29ae",
      "tree": "f789343e9aeaf4af635cee25e965f188a46ee8ce",
      "parents": [
        "838e93ed19879ce3d88b5be51630137d6a6999c6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 17 17:01:23 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 17 17:01:23 2010 -0700"
      },
      "message": "Reduce lock thrashing in native Looper.\n\nIn the common case, there is nothing interesting happening on the native\nLooper besides occasional wake ups.  There is no point grabbing the\nsemaphore then.\n\nChange-Id: Ib5c426d0e158dfa37891b7ff5537b6f833592fad\n"
    },
    {
      "commit": "ec8ae3ce1aa5f2d006780e2bb40bb491538da357",
      "tree": "7115a5d178198929abc49a43be56a4e1bbca09f9",
      "parents": [
        "711f82784fadb93d488b829c04bda35860903a67",
        "d3576ef8906798d91da3ee88a103f4bedcab169e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 17:29:57 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 16 17:29:57 2010 -0700"
      },
      "message": "am d3576ef8: am 1ac48eab: Merge \"Ensure input dispatcher and native looper handles EINTR.\" into gingerbread\n\nMerge commit \u0027d3576ef8906798d91da3ee88a103f4bedcab169e\u0027\n\n* commit \u0027d3576ef8906798d91da3ee88a103f4bedcab169e\u0027:\n  Ensure input dispatcher and native looper handles EINTR.\n"
    },
    {
      "commit": "7dae0e47abb5c1fb852c10b3ba0bc6464dd76e96",
      "tree": "fb36ff43a393b81bc1bdbbf6cde025853561b8ac",
      "parents": [
        "6abea1ebc29c7bc8397f0470d57a4e485b5d4ee3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 17:04:52 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 17:04:52 2010 -0700"
      },
      "message": "Ensure input dispatcher and native looper handles EINTR.\n\nChange-Id: I0a42db5f273b9bfe4ab174e4ee65d5d852f9f6bc\n"
    },
    {
      "commit": "49478536b6b8b28f33398393bed5e939085af7af",
      "tree": "a83f41bc6da9dd267005ad23b0b32c6f40f860d0",
      "parents": [
        "a5ab8ce602ecfd897805e185c89a6eff0c78aabe",
        "14bc6b5d0677e5c454a67775c852f90389bb4567"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 15 12:32:29 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 15 12:32:29 2010 -0700"
      },
      "message": "am 14bc6b5d: am 09340a4b: Merge \"Replace epoll() with poll() and rename PollLoop to Looper.\" into gingerbread\n\nMerge commit \u002714bc6b5d0677e5c454a67775c852f90389bb4567\u0027\n\n* commit \u002714bc6b5d0677e5c454a67775c852f90389bb4567\u0027:\n  Replace epoll() with poll() and rename PollLoop to Looper.\n"
    },
    {
      "commit": "4fe6c3e51be77e35f40872cdbca6c80f8f8b7ecb",
      "tree": "5cbcfad147ad1bf26deb384e41d27f4e6bfcdb80",
      "parents": [
        "c891d2b3529b9cf24ef4781a585cd4784815e711"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Sep 13 23:17:30 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 14 01:59:45 2010 -0700"
      },
      "message": "Replace epoll() with poll() and rename PollLoop to Looper.\n\nAs part of this change, consolidated and cleaned up the Looper API so\nthat there are fewer distinctions between the NDK and non-NDK declarations\n(no need for two callback types, etc.).\n\nRemoved the dependence on specific constants from sys/poll.h such as\nPOLLIN.  Instead looper.h defines events like LOOPER_EVENT_INPUT for\nthe events that it supports.  That should help make any future\nunder-the-hood implementation changes easier.\n\nFixed a couple of compiler warnings along the way.\n\nChange-Id: I449a7ec780bf061bdd325452f823673e2b39b6ae\n"
    },
    {
      "commit": "b3787d57fffbb898f4767f7a94031cafe974a0b0",
      "tree": "305041731ad251326cd7e6c2a98500253ada83f9",
      "parents": [
        "2f761760459fe27c8e9f96569bb7f28fc5b58bab",
        "0f0541e40cfef51eb5c3769e53c1aa853b53aaf6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 12 17:15:19 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Sep 12 17:15:19 2010 -0700"
      },
      "message": "am 0f0541e4: am b88102f5: Input dispatcher ANR handling enhancements.\n\nMerge commit \u00270f0541e40cfef51eb5c3769e53c1aa853b53aaf6\u0027\n\n* commit \u00270f0541e40cfef51eb5c3769e53c1aa853b53aaf6\u0027:\n  Input dispatcher ANR handling enhancements.\n"
    },
    {
      "commit": "b88102f5b7e51552a3576cf197b4c8cf96f193d1",
      "tree": "c714dce33893a048f42a36e78b25dc0bc971b1c3",
      "parents": [
        "11fe181e16501103d7c0f70344661ea2ef5d3df9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 08 11:49:43 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 12 16:52:03 2010 -0700"
      },
      "message": "Input dispatcher ANR handling enhancements.\n\nThis change is essentially a rewrite of the main input dispatcher loop\nwith the target identification folded in.  Since the input dispatcher now\nhas all of the window state, it can make better decisions about\nwhen to ANR.\n\nAdded a .5 second deadline for processing app switch keys.  This behavior\npredates Gingerbread but had not previously been ported.\n\nFixed some timing inaccuracies in the ANR accounting that could cause\napplications to ANR sooner than they should have.\n\nAdded a mechanism for tracking key and motion events that have been\ndispatched to a window so that appropriate cancelation events can be\nsynthesized when recovering from ANR.  This change helps to keep\napplications in sync so they don\u0027t end up with stuck buttons upon\nrecovery from ANRs.\n\nAdded more comments to describe the tricky parts of PollLoop.\n\nChange-Id: I13dffca27acb436fc383980db536abc4d8b9e6f1\n"
    },
    {
      "commit": "84d10ad4294d6da4ce8e434100fc1f130f5a07de",
      "tree": "8d34d4e56fa260f533a00d65a9e68ae504951f98",
      "parents": [
        "203e9529c5d9a883088cc28439e003106397d6a4",
        "510951e98bdb861130f38c087956cd05e0b41dcd"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 09 23:11:22 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 09 23:11:22 2010 -0700"
      },
      "message": "am 510951e9: am a8512a71: Always set the scheduling group when starting a new thread.\n\nMerge commit \u0027510951e98bdb861130f38c087956cd05e0b41dcd\u0027\n\n* commit \u0027510951e98bdb861130f38c087956cd05e0b41dcd\u0027:\n  Always set the scheduling group when starting a new thread.\n"
    },
    {
      "commit": "a8512a71d3c2e3e67bbccf11251ed594d66f1f25",
      "tree": "8550bb81ded879af0ce408e8028e6a87812335eb",
      "parents": [
        "a7d868d4f99dfaf85e13498210aecf1ad8efd859"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 09 15:50:18 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 09 22:12:25 2010 -0700"
      },
      "message": "Always set the scheduling group when starting a new thread.\n\nChange-Id: Ia33acf13fc3752707f3819928c36315e223fa1bd\n"
    },
    {
      "commit": "a009dde6f481464fe60e3fca5ead9fcfab03ddcf",
      "tree": "7e7f58d3e332e99843e29d4b5fec97a4bfe16c00",
      "parents": [
        "5c69544826258bf047fc72c871c18e4a5b24d873",
        "2a08e2a9f881d06a03e36367585137e05706f592"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 07 19:41:00 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 07 19:41:00 2010 -0700"
      },
      "message": "am 2a08e2a9: am a19ef306: Revert \"Free created FileMap when uncompressing files\"\n\nMerge commit \u00272a08e2a9f881d06a03e36367585137e05706f592\u0027\n\n* commit \u00272a08e2a9f881d06a03e36367585137e05706f592\u0027:\n  Revert \"Free created FileMap when uncompressing files\"\n"
    },
    {
      "commit": "a19ef306bd0a257c67b50f5e0e669e9fe52b0889",
      "tree": "b8019dfbf7003ecb1e03fc9894a8f6e0fd140351",
      "parents": [
        "883bbb72284736b5601f9e96d1116969c51b75de"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 07 19:30:22 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 07 19:30:22 2010 -0700"
      },
      "message": "Revert \"Free created FileMap when uncompressing files\"\n\nThis reverts commit 52b8235238fb4d8cf141020cc1ae33880929dc3f.\n\nmunmap() on a region that overlaps something else (e.g, the ZIP Central\nDirectory in this case) unmaps those other regions as well making the\nZipFileRO class unhappy. Revert this for now until we can have FileMap\ndeal with this craziness.\n"
    },
    {
      "commit": "347262622b86410ff8a4ff3530ab3688b6a20b21",
      "tree": "f596d33ff54ab5169a7c52e19319b63d0e200e63",
      "parents": [
        "7dea769319701f4e883fc448507967b806b9b245",
        "a1205f07a6f0c745e8f42f16fe38c06af04143c7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 18:52:06 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 07 18:52:06 2010 -0700"
      },
      "message": "am a1205f07: am 2d3739d4: Merge \"Modify native ALooper to take an explicit ident.\" into gingerbread\n\nMerge commit \u0027a1205f07a6f0c745e8f42f16fe38c06af04143c7\u0027\n\n* commit \u0027a1205f07a6f0c745e8f42f16fe38c06af04143c7\u0027:\n  Modify native ALooper to take an explicit ident.\n"
    },
    {
      "commit": "42c03e579aade011b451e2a13ea3f44a2ef0056a",
      "tree": "1716fbd88e2beb816d303c3d3fa0ca1785b8db61",
      "parents": [
        "6e86915e8f5dfffa60ae5d1a4ca9aa74912fd026"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 15:28:30 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 15:46:55 2010 -0700"
      },
      "message": "Modify native ALooper to take an explicit ident.\n\nThe ALooper API now uses an explicit \"identifier\" for the integer\nthat is returned rather than implicitly using the fd.  This allows\nthe APIs that had the fd to be a little more sane.\n\nChange-Id: I8507f535ad484c0bdc4a1bd016d87bb09acd7ff0\n"
    },
    {
      "commit": "6aa616c94aff14687ace1cb3ee1874a044a89821",
      "tree": "7d95323c9c81ea962d660a27662d1ae92cad355f",
      "parents": [
        "49706753163e5da5d2484685ab74aee3e5cf8069",
        "05dff838946abb01caa3c3172cf0f367964a0b6d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 14:48:28 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 07 14:48:28 2010 -0700"
      },
      "message": "am 05dff838: am 11bbe200: Hopefully fix the build.\n\nMerge commit \u002705dff838946abb01caa3c3172cf0f367964a0b6d\u0027\n\n* commit \u002705dff838946abb01caa3c3172cf0f367964a0b6d\u0027:\n  Hopefully fix the build.\n"
    },
    {
      "commit": "49706753163e5da5d2484685ab74aee3e5cf8069",
      "tree": "47d3d4e6721202e413d182e98e4ac064590965d2",
      "parents": [
        "babb35ed75e56e07734d07ecb688c009a4e3161d",
        "b8bcfed5524a37ee51e3f1129f1df91bc4a59cb4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 14:47:51 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 07 14:47:51 2010 -0700"
      },
      "message": "am b8bcfed5: am f703b77c: Merge \"Add system property to turn off scheduling groups.\" into gingerbread\n\nMerge commit \u0027b8bcfed5524a37ee51e3f1129f1df91bc4a59cb4\u0027\n\n* commit \u0027b8bcfed5524a37ee51e3f1129f1df91bc4a59cb4\u0027:\n  Add system property to turn off scheduling groups.\n"
    },
    {
      "commit": "11bbe200cba150cfa5593bb87b54f3072a5ab2c5",
      "tree": "c9dd463aac220da1e76767e4d35f02df2f72704a",
      "parents": [
        "f703b77c96a6d133fda534158eaf6190ff7c87f7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 12:32:19 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 12:32:19 2010 -0700"
      },
      "message": "Hopefully fix the build.\n\nChange-Id: Id8cd92c0895c9939e1386ef488bd1309a3be3568\n"
    },
    {
      "commit": "84bb52ed614f3a13370c923a8bc2a8b7c6db8d30",
      "tree": "343bb945db493f71b75b55f99ed1da0a8424d4c3",
      "parents": [
        "69717ccd13bb5568b912701ab39d603cfa7091cc"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 03 17:07:07 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 11:19:11 2010 -0700"
      },
      "message": "Add system property to turn off scheduling groups.\n\nDo this:\n\nadb shell setprop debug.sys.noschedgroups 1\n\nChange-Id: I6e06a74205fd45ee1526ce71fe33944465d39984\n"
    },
    {
      "commit": "871603074739320b8e7a82772da12c48587f3a40",
      "tree": "76d1bc76ad5ec3368779ad286e348e3207e80905",
      "parents": [
        "355a17c4f853c235a18380e71e1aa446f72fa5eb",
        "8d5250c601504da7a7fde3a3fd7b1c51335becdf"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Sep 02 15:53:26 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 02 15:53:26 2010 -0700"
      },
      "message": "am 8d5250c6: am 2e246549: Merge \"Add better debug output for ResourceType errors\" into gingerbread\n\nMerge commit \u00278d5250c601504da7a7fde3a3fd7b1c51335becdf\u0027\n\n* commit \u00278d5250c601504da7a7fde3a3fd7b1c51335becdf\u0027:\n  Add better debug output for ResourceType errors\n"
    },
    {
      "commit": "68c2e915fdf4ac4c9f48c0b182e9190620014bc6",
      "tree": "56596567acca43fc12755f2117dd17d8feda5586",
      "parents": [
        "3010713f50aa6ac189b1990421cfab1d426bc601"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Sep 02 14:58:47 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Sep 02 14:58:47 2010 -0700"
      },
      "message": "Add better debug output for ResourceType errors\n\nAn error code is returned as -ESOMETHING, but the debug code was\nprinting out 0x%08x for these codes making -74 print out as 0xffffffb5\nwhich is kind of silly.\n\nChange-Id: I7d77fb3da2e146845949f121404f662b47288e61\n"
    },
    {
      "commit": "7a97e5a21ef1fdb1985aa146bea91e82fad907db",
      "tree": "9078aaa67881af96b7a05021358dc888974fc34d",
      "parents": [
        "71eaac0880b8a7841c743cd512cbe6bdf8996b7b",
        "8e724905261bf4913bac75adc64fb08ed5ba8b7d"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 27 16:18:44 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 27 16:18:44 2010 -0700"
      },
      "message": "am 8e724905: am ad6731b0: Merge \"Add debugging to ZipFileRO\" into gingerbread\n\nMerge commit \u00278e724905261bf4913bac75adc64fb08ed5ba8b7d\u0027\n\n* commit \u00278e724905261bf4913bac75adc64fb08ed5ba8b7d\u0027:\n  Add debugging to ZipFileRO\n"
    },
    {
      "commit": "6329fdbded79bc659fedcd6b7051de8840a5de64",
      "tree": "2e91336275212b84f321ffd9148a711b7d47c911",
      "parents": [
        "1b400c7763e63505bafd496953764c3e97c2be5b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 27 12:47:32 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 27 12:47:34 2010 -0700"
      },
      "message": "Add debugging to ZipFileRO\n\nSome assets are failing to read from ZIP files. This adds a bit more\ndebugging to figure out what\u0027s going on.\n\nChange-Id: Id90e10546c54c85069a34478fbc28bc2523bda5d\n"
    },
    {
      "commit": "e0e6a0fc8e7962b7a6f68281fbb038c546dcdf7a",
      "tree": "0da557053098f7fcf0fc84622da3c2c90ebd8f36",
      "parents": [
        "108ef58d9b5eaea9edaff59026c438dd0e356700",
        "b90b9d54eb6bbc3a4045ff0bf46d3366822e835e"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Aug 24 09:02:28 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 24 09:02:28 2010 -0700"
      },
      "message": "am b90b9d54: am 6be23712: Merge \"Free created FileMap when uncompressing files\" into gingerbread\n\nMerge commit \u0027b90b9d54eb6bbc3a4045ff0bf46d3366822e835e\u0027\n\n* commit \u0027b90b9d54eb6bbc3a4045ff0bf46d3366822e835e\u0027:\n  Free created FileMap when uncompressing files\n"
    },
    {
      "commit": "e49564e0f710ba4a1405cfdfde068cb776ee474e",
      "tree": "e3dfafb6e37ed94f247cd87313a88174ca943bef",
      "parents": [
        "a6a0fe436b37693a57d23be99da89024cdc99c9d",
        "821afa9aec8d3a4ffd2e72ce797d8097eaf13973"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Sat Aug 21 09:41:12 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Aug 21 09:41:12 2010 -0700"
      },
      "message": "am 821afa9a: am 54d41379: Merge \"Add OBB flags to support overlays\" into gingerbread\n\nMerge commit \u0027821afa9aec8d3a4ffd2e72ce797d8097eaf13973\u0027\n\n* commit \u0027821afa9aec8d3a4ffd2e72ce797d8097eaf13973\u0027:\n  Add OBB flags to support overlays\n"
    },
    {
      "commit": "52b8235238fb4d8cf141020cc1ae33880929dc3f",
      "tree": "e388b060cd0cca28ebfe3697b6acf7cf4c5e0406",
      "parents": [
        "54d41379357d1d800d0a7bd7c5dc56111710482a"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 19 18:39:58 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 19 18:39:58 2010 -0700"
      },
      "message": "Free created FileMap when uncompressing files\n\nChange-Id: Ice22c4ecb7c129b74bf60cd66ae79e110b017a4a\n"
    },
    {
      "commit": "02ca31fbae9f35dd30f79de6927fae11b549391a",
      "tree": "dc037f02f42db20ba1f086e707fd53a71ea4c4c5",
      "parents": [
        "baf3869b88ab4e31f792dbe08f61725bc3619ea8"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 12 07:36:02 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 18 09:34:58 2010 -0700"
      },
      "message": "Add OBB flags to support overlays\n\n* Add flags field in OBB footer to support overlays.\n\n* Remove unused \u0027crypto\u0027 and \u0027filesystem\u0027 fields in obbtool (could\n  later be supported in the \"flags\" field of the OBB footer).\n\n* Add notes to document OBB classes before shipping.\n\nChange-Id: I386b43c32c5edef55210acb5d3322639c08010ba\n"
    },
    {
      "commit": "1f5a8d96da2f0d095196113a2bfa901c18592206",
      "tree": "8a78eb80ac7100d044e269400ba6d9e622799cc5",
      "parents": [
        "bf0cb26a1c6305f2a7795c2498591b6189cc5b79",
        "80328ba09606bd0825d7d4c9a4f213d1de09e53a"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 11 14:15:20 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 11 14:15:20 2010 -0700"
      },
      "message": "am 80328ba0: am 8ea71511: Merge \"Initial tool for OBB manipulation\" into gingerbread\n\nMerge commit \u002780328ba09606bd0825d7d4c9a4f213d1de09e53a\u0027\n\n* commit \u002780328ba09606bd0825d7d4c9a4f213d1de09e53a\u0027:\n  Initial tool for OBB manipulation\n"
    },
    {
      "commit": "6e7ac5f0bceddf51947fbf3b376e278df0735603",
      "tree": "36772b5b1e134baddbc24b73bb59ee701c3acc58",
      "parents": [
        "a02b8b05dd1e8b8cf169e1f89542ef835b11fc13"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jul 19 10:31:34 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 11 11:24:41 2010 -0700"
      },
      "message": "Initial tool for OBB manipulation\n\nAdd \"obbtool\" host command for adding, removing, and querying Opaque\nBinary Blob (OBB) information from a file.\n\nChange-Id: Id2ac41e687ad2a500c362616d6738a8ae7e8f5c3\n"
    },
    {
      "commit": "7b6d0d99b6904b511996267efae215fe9cb5e98f",
      "tree": "85c1f63b5ba66ec77d5c9ecd5a2b44229ed67699",
      "parents": [
        "ea65ec23f6dc18e978ab6dcf23d3c2b27a0c2109",
        "679ac09a5c22175354f3a04b28456b323839530e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 11 00:50:56 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 11 00:50:56 2010 -0700"
      },
      "message": "am 679ac09a: am a5ae50cd: Merge \"More native work.\" into gingerbread\n\nMerge commit \u0027679ac09a5c22175354f3a04b28456b323839530e\u0027\n\n* commit \u0027679ac09a5c22175354f3a04b28456b323839530e\u0027:\n  More native work.\n"
    },
    {
      "commit": "08d5b8fad8d46ccb64db2fdcb4d66972ec87bf48",
      "tree": "7e2e67603ec8a2ca164548301b65a2b733df76a0",
      "parents": [
        "091c5238a00ca51dc69b8b09459e6ac88e1eb077"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 04 11:12:40 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 11 00:29:59 2010 -0700"
      },
      "message": "More native work.\n\nImplement save/restore of state, and add native APIs for\nconfiguration information.\n\nChange-Id: I2a3ddc2ba605db58d7c8b2b31b9215fb323f90b5\n"
    },
    {
      "commit": "91fc6e8c89f176e157083c3fb06f05af01f61fc3",
      "tree": "7fb6533e1c6ce0139b6f59e7af16927e52412493",
      "parents": [
        "072671f0ee5bb506a2668280e18cb12c9492ed12",
        "d7ce227bcb854f048124bbc487eba844c6599142"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 06 19:04:09 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 06 19:04:09 2010 -0700"
      },
      "message": "am d7ce227b: am 818490ab: Fix String8::operator+\n\nMerge commit \u0027d7ce227bcb854f048124bbc487eba844c6599142\u0027\n\n* commit \u0027d7ce227bcb854f048124bbc487eba844c6599142\u0027:\n  Fix String8::operator+\n"
    },
    {
      "commit": "818490ab2abe36dfc6c13d01fea5220bd64cca8c",
      "tree": "6d4cb2b5e7c04d620b3c5d52b349a600129c3e44",
      "parents": [
        "5723dfe8c87d0887b8926f43637ed300466890d2"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 05 16:21:23 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 06 09:00:10 2010 -0700"
      },
      "message": "Fix String8::operator+\n\nThe LHS was ignored when using:\n  String8 + String8\n  String8 + (const char*)\n\nAdd unit tests for above.\n\nBug: 2898473\nChange-Id: Ic8fe7be668b665c36aaaa3fc3c3ffdfff0fbba25\n"
    },
    {
      "commit": "d70cbb8943947f433b8f1f4527daf86f9b0827e9",
      "tree": "8fc8ab5456735c7f71d840a43536f6e3a7899eb2",
      "parents": [
        "bc9151bcad5d1b1d14bb900fcc50ba08c06f87d4",
        "aec3e36fd4f8cdcc53110bbcd7f0afa20bf315d4"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 05 12:07:48 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 05 12:07:48 2010 -0700"
      },
      "message": "am aec3e36f: am 2d817f75: Free scanBuf in ZipFileRO\n\nMerge commit \u0027aec3e36fd4f8cdcc53110bbcd7f0afa20bf315d4\u0027\n\n* commit \u0027aec3e36fd4f8cdcc53110bbcd7f0afa20bf315d4\u0027:\n  Free scanBuf in ZipFileRO\n"
    },
    {
      "commit": "2d817f75969cf3942ae3bcb9d194b9c095288dc7",
      "tree": "4e575bd35a1ba634708e84341d9a8b19b7f84c17",
      "parents": [
        "7d146197873e9bd5c1618a4ae10bcd13c821e1ce"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 04 16:30:40 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 04 16:53:56 2010 -0700"
      },
      "message": "Free scanBuf in ZipFileRO\n\nIn the success case, the 65kB scanBuf was not freed!\n\nAlso, get rid of annoying complaints about ssize_t from printf in error\ncases.\n\nChange-Id: If154ac19bf47637f898b4ec8c8e27c9a073a7b81\n"
    },
    {
      "commit": "1fdacef18d6491eab1b76e75bb315bb075a01a18",
      "tree": "4b3b7046dd58740e8f4744ba0be2c0291b00ebbc",
      "parents": [
        "2571356e560bd44b3f0d4e466210b50d4511d24d",
        "06abd0a6a833beda1c0e68aed44912d145745a42"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 29 14:04:07 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 29 14:04:07 2010 -0700"
      },
      "message": "am 06abd0a6: am 571180c4: Merge \"Attempt to fix the SDK build\" into gingerbread\n\nMerge commit \u002706abd0a6a833beda1c0e68aed44912d145745a42\u0027\n\n* commit \u002706abd0a6a833beda1c0e68aed44912d145745a42\u0027:\n  Attempt to fix the SDK build\n"
    },
    {
      "commit": "466b22b76e438b3419cedbe782ab71b8ade18260",
      "tree": "c407a0750d7a221815fbf07087ec3173a0250587",
      "parents": [
        "6dea6f4e71b53e421564d783c227cbe0a2469183"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 29 13:16:38 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 29 13:42:45 2010 -0700"
      },
      "message": "Attempt to fix the SDK build\n\nOn the assumption that the local min() function declaration is in\nconflict with some \u0027min\u0027 #define floating around, rename the local\nfunction to min_of().\n\nChange-Id: I62aa27f213c6093cc78805de611cf4aa75f0eef2\n"
    },
    {
      "commit": "98d4a5cfd4e3c18ae86e56c12b202aa6a2199d1b",
      "tree": "3f41d254f55925dd7d117c3e413795cc3428b47b",
      "parents": [
        "e65923f513cb294b309d7af90fa31076f1284618",
        "4dc8ead1b4e63165c0a9e65adfbe46159758947a"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@android.com",
        "time": "Wed Jul 28 18:18:28 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 28 18:18:28 2010 -0700"
      },
      "message": "am 4dc8ead1: am 7b40518e: Merge \"Change unistd.h to stddef.h to be correct\" into gingerbread\n\nMerge commit \u00274dc8ead1b4e63165c0a9e65adfbe46159758947a\u0027\n\n* commit \u00274dc8ead1b4e63165c0a9e65adfbe46159758947a\u0027:\n  Change unistd.h to stddef.h to be correct\n"
    },
    {
      "commit": "a4879bad704981da014206380eca93163f4c5a2b",
      "tree": "43ba2e498263f9901d449f473aa53f3f5ee954e3",
      "parents": [
        "e30de4e6a312aa921633d119f2518f4b07a7effa"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:46:12 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:46:12 2010 -0700"
      },
      "message": "Change unistd.h to stddef.h to be correct\n\nsize_t should be defined through inclusion of stddef.h instead of unistd.h\n\nChange-Id: Ieaadacfca1e1c44c2533ea95f73fc060c1519b52\n"
    },
    {
      "commit": "d1548557ab6376868ea669b08d741bac3ce5e6d3",
      "tree": "a295342a25e5d82b9ea34c0f960b587a8ff7881d",
      "parents": [
        "fdbb58cb11ac459ca6ea83725a6314379002ec09",
        "47cf709aa3c07d2573340187edb5e11ea75824b1"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:41:36 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 28 16:41:36 2010 -0700"
      },
      "message": "am 47cf709a: am 8c5d9430: Merge \"Add unistd.h for size_t typedef to fix sim-eng\" into gingerbread\n\nMerge commit \u002747cf709aa3c07d2573340187edb5e11ea75824b1\u0027\n\n* commit \u002747cf709aa3c07d2573340187edb5e11ea75824b1\u0027:\n  Add unistd.h for size_t typedef to fix sim-eng\n"
    },
    {
      "commit": "9d90ed71ccf45bc1e422ee2abc9acf0a806b9319",
      "tree": "388949d378d71236471652b5f26d6f6f73580e6c",
      "parents": [
        "bae6fe242ff9a97840ff0c5d9d87c0575d261682"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:31:24 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:31:24 2010 -0700"
      },
      "message": "Add unistd.h for size_t typedef to fix sim-eng\n\nChange-Id: Ida4f1742547f39539b601f13182c722aa7cf863e\n"
    },
    {
      "commit": "9835d6127280a10ae2bfab31d9ad6b8b8c74762c",
      "tree": "7f8b7b5658c0554af014dacf84759c1314fd8b07",
      "parents": [
        "16edf317cdf000fe0bd808259703e0341d55df02",
        "1de9f490b5c3f293b3748be3d4ccf3f78cdf460b"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jul 28 15:41:30 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 28 15:41:30 2010 -0700"
      },
      "message": "am 1de9f490: am bae6fe24: Merge \"Support streaming of compressed assets \u003e 1 megabyte\" into gingerbread\n\nMerge commit \u00271de9f490b5c3f293b3748be3d4ccf3f78cdf460b\u0027\n\n* commit \u00271de9f490b5c3f293b3748be3d4ccf3f78cdf460b\u0027:\n  Support streaming of compressed assets \u003e 1 megabyte\n"
    },
    {
      "commit": "b100cbf178e91d6652ebbad3ed36684cacb9d10e",
      "tree": "acb386c8adee2d0390193fc631f841f8d76ea5d7",
      "parents": [
        "0c39b6c65bcb96ed6438c7d792a67708409d8f0f"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jul 26 11:24:18 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jul 28 15:33:28 2010 -0700"
      },
      "message": "Support streaming of compressed assets \u003e 1 megabyte\n\nCompressed assets larger than one megabyte are now decompressed on demand\nrather than being decompressed in their entirety and held in memory.  Reading\nthe data in order is relatively efficient, as is seeking forward in the stream.\nSeeking backwards is supported, but requires reprocessing the compressed data\nfrom the beginning, so is very inefficient.\n\nIn addition, the size limit on compressed assets has been eliminated.\n\nChange-Id: I6e68247957e6c53e7e8ba70d12764695f1723bad\n"
    },
    {
      "commit": "eb857f12d605659b385d168ef1ea7d4ba5193585",
      "tree": "fda7ab277e7ef292f58175d8ce6a4e1251e69786",
      "parents": [
        "c0eb6d6388ad4e7301a6813b4cf2edf6845bedba",
        "f7adbe10c23ca86e70a6e3a8b1a90ebe23142d29"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 16 10:06:33 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 16 10:06:33 2010 -0700"
      },
      "message": "resolved conflicts for merge of f7adbe10 to master\n\nChange-Id: I898a5e53b180adaee2337c0c0b9896c799d056e7\n"
    },
    {
      "commit": "e33348ba54cd68d6936cffd4507037c14d4b10c2",
      "tree": "1429dd836a48b3f49ee2a27623ff47b5c272c827",
      "parents": [
        "bd623daff1f261a0e794f059d90ba5907eb5a89a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 15 23:54:05 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 16 00:02:48 2010 -0700"
      },
      "message": "Fix bug with phantom input windows.\n\nAdd dumpsys integration for the native input dispatcher.\nAdd some InputDevice API stubs.\nAdd an appendFormat helper method to String8 for printf style\nstring formatting mainly for debugging purposes.\nUse generic ArrayList\u003cWindowState\u003e everywhere in WindowManagerService\nto eliminate unnecessary casts all over.\n\nChange-Id: I9d1e3bd90eb7222d10620200477f11b7bfd25e44\n"
    },
    {
      "commit": "c0689d0b6c2ff9139c67d097549b2092ab9c46a8",
      "tree": "9462d7239a340e45b6a8a75db5575f2e7a0d63e6",
      "parents": [
        "25fd875da6a4a7f8951e0eeae83cacb3abbe01fb",
        "d1313da5999e06be16e52527cfba443f66b333a1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 15 10:24:10 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 15 10:24:10 2010 -0700"
      },
      "message": "am d1313da5: am eb6e0df1: Don\\\u0027t build framework tests for simulator target.\n\nMerge commit \u0027d1313da5999e06be16e52527cfba443f66b333a1\u0027\n\n* commit \u0027d1313da5999e06be16e52527cfba443f66b333a1\u0027:\n  Don\u0027t build framework tests for simulator target.\n"
    },
    {
      "commit": "eb6e0df18a6567d38caa039ba0b0e49e2e9b46c3",
      "tree": "b2250fd3fcb9f7171b0066b03f47aa08415bb550",
      "parents": [
        "c98e431119867dbc4ae3da52d5c374607c0f67b9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 14 22:40:08 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 14 22:55:02 2010 -0700"
      },
      "message": "Don\u0027t build framework tests for simulator target.\n\nChange-Id: I70f29c7eb307e4f3ec5702f4eb9d97b4342e2f36\n"
    },
    {
      "commit": "6ac7674e143f9716312f048da3f25ca83b646315",
      "tree": "53fe0d254223187c268773539fc37bc5f2a415ce",
      "parents": [
        "e5e285509fdba2b996006e610e0d2888450230f0",
        "89ee578b7053d27a50922f82feb94bf6054b330c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jul 13 17:48:56 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 13 17:48:56 2010 -0700"
      },
      "message": "am 89ee578b: am fd035829: Add initial gamepad support.\n\nMerge commit \u002789ee578b7053d27a50922f82feb94bf6054b330c\u0027\n\n* commit \u002789ee578b7053d27a50922f82feb94bf6054b330c\u0027:\n  Add initial gamepad support.\n"
    },
    {
      "commit": "fd03582995e0fce963dd0fa0669e3211b74c0dd7",
      "tree": "8f7fe0e2a437620a7cbe4e494f71fe8ccfdbe2eb",
      "parents": [
        "c0a7e690bfd32dd897ceccd04dd0fa6bf6e9cee6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 30 16:10:35 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jul 13 17:04:57 2010 -0700"
      },
      "message": "Add initial gamepad support.\n\nChange-Id: I0439648f6eb5405f200e4223c915eb3a418b32b9\n"
    },
    {
      "commit": "f27c6c100113dafdba7c4ee849a76d126079270f",
      "tree": "ed325aaec2f0243b5e7f56d741e2a58d01750f29",
      "parents": [
        "d815f79766984fce499e147ecbacc01914683f74",
        "ceb8465e974ba5fa971ffe1b5b74e94a1bd53f97"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jul 12 11:22:45 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 12 11:22:45 2010 -0700"
      },
      "message": "am ceb8465e: am 87bb1857: Merge changes I2337051b,I19b426cb into gingerbread\n\nMerge commit \u0027ceb8465e974ba5fa971ffe1b5b74e94a1bd53f97\u0027\n\n* commit \u0027ceb8465e974ba5fa971ffe1b5b74e94a1bd53f97\u0027:\n  Tweak ObbFile class\n  Allow things that can install packages to set Obb paths\n"
    },
    {
      "commit": "87bb18579a5eea2e24af78af8c0f54f5455ce8fd",
      "tree": "4538368088979c951572d317c7b9af696194c25a",
      "parents": [
        "faccac7616795859af257777900db514d425a106",
        "87315aa1f0b64efcef416628215be89851cc4736"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jul 12 11:18:34 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 12 11:18:34 2010 -0700"
      },
      "message": "Merge changes I2337051b,I19b426cb into gingerbread\n\n* changes:\n  Tweak ObbFile class\n  Allow things that can install packages to set Obb paths\n"
    },
    {
      "commit": "87315aa1f0b64efcef416628215be89851cc4736",
      "tree": "e7000fef6bfe18391398e4cd04399054f3a0c18e",
      "parents": [
        "e059b2784fcc89c6cd43301cc6af89cf3b8101f7"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jul 12 09:02:18 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jul 12 09:11:24 2010 -0700"
      },
      "message": "Tweak ObbFile class\n\n* Move error messages around to clarify the errors.\n\n* Add extra error check when reading a file.\n\n* Seek to the end of a file when writing the signature so the users of\n  the API don\u0027t have to remember to do it.\n\nChange-Id: I2337051b9f9fa8147c5900237deec790dcd92436\n"
    },
    {
      "commit": "d8a6271bb1da4ee2a8ae126b532f1b5f302decb8",
      "tree": "5de91054c0b6d73707104eb6ae30d0c612e94665",
      "parents": [
        "2a57917a5cc10cbfea9a2f7ed7b040ce80c6705b",
        "49159f0748c704e53a7bd754f26113d9ab844a97"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 08 19:10:17 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 08 19:10:17 2010 -0700"
      },
      "message": "am 49159f07: am 74bf59b4: Merge \"Add new glue code for writing native apps.\" into gingerbread\n\nMerge commit \u002749159f0748c704e53a7bd754f26113d9ab844a97\u0027\n\n* commit \u002749159f0748c704e53a7bd754f26113d9ab844a97\u0027:\n  Add new glue code for writing native apps.\n"
    }
  ],
  "next": "28e230352b24b190d6750aa38a79b69e2fada067"
}
