)]}'
{
  "log": [
    {
      "commit": "655e66bceba7595a2b80e7a328433e6ed5dc28a9",
      "tree": "79dfc3c3008d34e4969a1c123da90ce27a207edf",
      "parents": [
        "86de0590b94bcce27e3038c27464bed510bb564a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 23 15:51:41 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 23 17:28:29 2012 -0800"
      },
      "message": "Inform ContentObservers about the changed content Uri.\n\nAdded a new method ContentObserver.onChange(boolean, Uri) that\nreceives the changed content Uri.  This can help applications make\nbetter decisions about how to interpret a change notification.\n\nChange-Id: I8e35378b6485fe22c5bc240ba07557d269af0836\n"
    },
    {
      "commit": "86de0590b94bcce27e3038c27464bed510bb564a",
      "tree": "0f192948c6ed5b80d4efd0219bd6c6b74b12ced9",
      "parents": [
        "bd4c9f13022e875c8b420248214482a5f5b46618"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 23 13:01:18 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 23 13:01:18 2012 -0800"
      },
      "message": "Clean up content observer code.\n\nImproved the documentation a little bit.\n\nFixed a bug in ContentService wherein if a ContentObserver was\npassed as an argument and its deliverSelfNotifications() method\nreturned true, then notifyChange would tell all observers that\nthe change was a self-change even though it was only a self-change\nfrom the perspective of the provided observer.\n\nDeprecated ContentObservable.notifyChange since it is never\nused and in general it shouldn\u0027t be because we want the notification\nto be posted to the handler.\n\nChange-Id: Idde49eb40777e011a068f2adae8a32f779dfb923\n"
    },
    {
      "commit": "bd4c9f13022e875c8b420248214482a5f5b46618",
      "tree": "40312c8d7c92c0b6a4b8fb89820e855d1c2b8826",
      "parents": [
        "4b57553e693c9705e8363d3e0e9d881261b3e6fa"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 20 16:18:46 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 20 16:18:46 2012 -0800"
      },
      "message": "Delete dead code.\n\nThis API has never been used or exposed, time for it to go away.\n\nChange-Id: Ie199ed0731d0a620d6608b2adbea1083f87276cd\n"
    },
    {
      "commit": "4b57553e693c9705e8363d3e0e9d881261b3e6fa",
      "tree": "b6468f5b5a28610452b1748c421f4766e07f3182",
      "parents": [
        "8592baa347f5874b4f36713b6ca2edcedbb3f071"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 20 12:34:34 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 20 13:08:03 2012 -0800"
      },
      "message": "Initialize SQLite as part of the android runtime.\n\nThis ensures that the SQLite library is always correctly configured\nand initialized before other framework or application code has\na chance to use it.  This is important because initialization has\nto happen at most once so we need to get it right and prevent races.\n\nThis change makes it possible to omit the SQLite auto-initialization\nworkaround from the SQLite library, potentially saving a few cycles\nhere and there.\n\nChange-Id: Ifbed8685ee44aa1e9c0b391e233b0257fa738e4f\n"
    },
    {
      "commit": "8592baa347f5874b4f36713b6ca2edcedbb3f071",
      "tree": "b77c9f3d61128ca31b0de8635abfd988da35c831",
      "parents": [
        "46deab0a694e7e3c79980904706a4d09bbda001a",
        "05bd7b5dafd97bf1eb69a2b031eefa4d0ae2b2e5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 19:54:16 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 19:54:16 2012 -0800"
      },
      "message": "Merge \"Don\u0027t need to link to libsqlite from media JNI library.\""
    },
    {
      "commit": "46deab0a694e7e3c79980904706a4d09bbda001a",
      "tree": "dabd60e0396a1c2992f368bff9fbafba56331474",
      "parents": [
        "b815d0f80ae58bc48008186d3919e7c6e51fb43e",
        "254fba8960b018a29c5fe422b8a0fd9eeedbf3e4"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 19:54:05 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 19:54:05 2012 -0800"
      },
      "message": "Merge \"Clean up SQLiteDebug natives.\""
    },
    {
      "commit": "b815d0f80ae58bc48008186d3919e7c6e51fb43e",
      "tree": "96d71dd12dadf555803cbc841673839bb4a82a05",
      "parents": [
        "20c53cb3aa8489c11004ac718c0891273391ac8c",
        "48a4789686412390f9efd3bad0bfcaa3efbf9bfc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 19:53:38 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 19:53:38 2012 -0800"
      },
      "message": "Merge \"Remove custom SQLITE_UNCLOSED error code.\""
    },
    {
      "commit": "20c53cb3aa8489c11004ac718c0891273391ac8c",
      "tree": "23fc0441930d415ce690d1be6cc0526b414f92ab",
      "parents": [
        "22d418437e44587cb0fba4353515719453269189",
        "e1103cfc781b09d1a227f448374473093a451d6f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jan 19 18:53:27 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 18:53:27 2012 -0800"
      },
      "message": "Merge \"Remove obsolete TODO comments\""
    },
    {
      "commit": "22d418437e44587cb0fba4353515719453269189",
      "tree": "dbebce7f76ba71031a68fd39fc7299edd862f08c",
      "parents": [
        "90bd18737a5ce16708003363683744cfd0480d83"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 19 18:33:25 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 19 18:33:25 2012 -0800"
      },
      "message": "Fix the build, for real\n\nChange-Id: I6263f7e5e3ae2f7efe045f8b464c0ed1b87fc793\n"
    },
    {
      "commit": "90bd18737a5ce16708003363683744cfd0480d83",
      "tree": "2723999582d486a82093f5ff93bb20d0481d272d",
      "parents": [
        "d2f0dcd182fbc0423d206919e81f3845fb9b8155",
        "65447287cb4112cf74483c87be70bcd00b622e2d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 19 18:16:11 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 18:16:11 2012 -0800"
      },
      "message": "Merge \"Fix build\""
    },
    {
      "commit": "65447287cb4112cf74483c87be70bcd00b622e2d",
      "tree": "680812088a11ccaabc7c6eb093595f71b8dd1598",
      "parents": [
        "68fc1dfce050f1406f751e71cadd1b9fdb0f825c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 19 18:15:24 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 19 18:15:24 2012 -0800"
      },
      "message": "Fix build\n\nChange-Id: I0e0f6a613cdad3ec075da9b84e3532dd492f0162\n"
    },
    {
      "commit": "05bd7b5dafd97bf1eb69a2b031eefa4d0ae2b2e5",
      "tree": "86ed59fcd60d14916256ab1df1d1c4f3c923262e",
      "parents": [
        "254fba8960b018a29c5fe422b8a0fd9eeedbf3e4"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 17:56:05 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 18:13:19 2012 -0800"
      },
      "message": "Don\u0027t need to link to libsqlite from media JNI library.\n\nMedia JNI library doesn\u0027t actually use libsqlite.\n\nChange-Id: If8017444d259779d459ef2da83119814e31454c2\n"
    },
    {
      "commit": "254fba8960b018a29c5fe422b8a0fd9eeedbf3e4",
      "tree": "818b8904d425dd00deff3c4ee461d5bc9d0a5243",
      "parents": [
        "48a4789686412390f9efd3bad0bfcaa3efbf9bfc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 17:06:44 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 18:13:18 2012 -0800"
      },
      "message": "Clean up SQLiteDebug natives.\n\nIn particular, ensure that the database is initialized.\n\nChange-Id: Ifa69a9dfa9d008af79beadbd1a25e90d0d29e66c\n"
    },
    {
      "commit": "d2f0dcd182fbc0423d206919e81f3845fb9b8155",
      "tree": "1c2e12890b625fc29a26b7bb67cd485b04f45a8c",
      "parents": [
        "bad12166190a7e8087eb5db0ae8df9a4e5843fde",
        "68fc1dfce050f1406f751e71cadd1b9fdb0f825c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 19 17:42:10 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 17:42:10 2012 -0800"
      },
      "message": "Merge \"Remove unused code\""
    },
    {
      "commit": "68fc1dfce050f1406f751e71cadd1b9fdb0f825c",
      "tree": "b77dabe0c0ded8067cafb5278fe4cfc5a4ed002a",
      "parents": [
        "f9d9c065ed75f1196316a9a31f92309f602cef76"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 19 17:41:39 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 19 17:41:39 2012 -0800"
      },
      "message": "Remove unused code\n\nChange-Id: Ife0a43f3cfe64a1e74401b10bf74d37cbeefb5af\n"
    },
    {
      "commit": "bad12166190a7e8087eb5db0ae8df9a4e5843fde",
      "tree": "4700ded79b115118b067b7f7415d3fcc6a0438f3",
      "parents": [
        "fa78fe0d70fe7e6a9eb19680888b617ea57eaad4",
        "f9d9c065ed75f1196316a9a31f92309f602cef76"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 19 17:34:26 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 17:34:26 2012 -0800"
      },
      "message": "Merge \"Deprecate unused APIs\""
    },
    {
      "commit": "f9d9c065ed75f1196316a9a31f92309f602cef76",
      "tree": "ca552893d80825f16728e613d2aa341b1cdd92d9",
      "parents": [
        "75582e889d4895483309e38364266073be6d46b8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 19 16:53:41 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 19 17:16:38 2012 -0800"
      },
      "message": "Deprecate unused APIs\n\nChange-Id: I0107e246b632dda96b8b025217936954f1f46283\n"
    },
    {
      "commit": "e1103cfc781b09d1a227f448374473093a451d6f",
      "tree": "3addcf44c627cbcea5ec428ebfd7ff3e49c2b05c",
      "parents": [
        "fa78fe0d70fe7e6a9eb19680888b617ea57eaad4"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jan 19 17:07:27 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jan 19 17:14:16 2012 -0800"
      },
      "message": "Remove obsolete TODO comments\n\nChange-Id: Ie2353f11c4bbea5699cf9b824bb4b6aa113e3472\n"
    },
    {
      "commit": "48a4789686412390f9efd3bad0bfcaa3efbf9bfc",
      "tree": "aa0d8ceb607941d9362390adce8156b7c03b6baa",
      "parents": [
        "2a293b61cb0efbf24994d74ed980f58b820bb35a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 16:39:03 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 16:39:03 2012 -0800"
      },
      "message": "Remove custom SQLITE_UNCLOSED error code.\n\nThis error code was introduced at some point to help track when\na database could not be closed because a statement was not finalized.\nNow that the DB wrappers have been rewritten, it is technically no longer\npoossible for this to happen, so we can remove this.\n\nChange-Id: Ibbd55debbf390af436d6533aebff9726b1ff29e7\n"
    },
    {
      "commit": "fa78fe0d70fe7e6a9eb19680888b617ea57eaad4",
      "tree": "1e860d8e88d311b8b034f155a58c965cc5dc0c44",
      "parents": [
        "a6885fa366116c9dbc8ecba2abe32bf516912e8f",
        "efbeb9b4023b28ad4fea5f1a611e503336d2f419"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 19 14:40:44 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 14:40:44 2012 -0800"
      },
      "message": "Merge \"Make sure the ThrottledSource reports the proper mime type\""
    },
    {
      "commit": "a6885fa366116c9dbc8ecba2abe32bf516912e8f",
      "tree": "ff17853b01e929cc2aab4423e576b22bd6834cd8",
      "parents": [
        "ea33f4bca5def40c75214dedb3ea63c70b2a462a",
        "214f459b2c35ac0d95ad8ae9e2a68b94807ceba0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 14:19:28 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 14:19:28 2012 -0800"
      },
      "message": "Merge \"Remove no longer needed EventHub usleep() optimization.\""
    },
    {
      "commit": "efbeb9b4023b28ad4fea5f1a611e503336d2f419",
      "tree": "60304777d2b8f78df8add64cad595e9b94ba3563",
      "parents": [
        "92ecdd63033a53b3c6301a9dc94c2438e498f27b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 19 14:17:49 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 19 14:17:49 2012 -0800"
      },
      "message": "Make sure the ThrottledSource reports the proper mime type\n\nof the underlying source.\n\nChange-Id: I7cfd5c9f10d4b07781ed82fbdc9bf3db2e86cf84\n"
    },
    {
      "commit": "214f459b2c35ac0d95ad8ae9e2a68b94807ceba0",
      "tree": "c9070f7a5d0e8acf07c7a8603cb253edf4d0aabe",
      "parents": [
        "4130554b452a8462a83f97051240f1aec8590650"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 22 17:21:17 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 14:16:09 2012 -0800"
      },
      "message": "Remove no longer needed EventHub usleep() optimization.\n\nThis optimization is no longer needed now that the kernel evdev\ndriver\u0027s poll() implementation only wakes up the poll after\nthe final sync.\n\nChange-Id: If237776861df9cfac3086e744d3bbf3484d4c53b\n"
    },
    {
      "commit": "ea33f4bca5def40c75214dedb3ea63c70b2a462a",
      "tree": "ffa4b7c429491212a5babc478bb97dc8bf64c939",
      "parents": [
        "3e8d7cfd1e6e65a60a9f6b7e174672dc9a281e49",
        "4130554b452a8462a83f97051240f1aec8590650"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 14:11:47 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 14:11:47 2012 -0800"
      },
      "message": "Merge \"Fix line wrapping.\""
    },
    {
      "commit": "4130554b452a8462a83f97051240f1aec8590650",
      "tree": "d947199bac924e8068be8d81cd3b105a9ea6a129",
      "parents": [
        "6534c0e0548332801cffaa0977af165025030297"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Oct 05 11:14:13 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 14:08:48 2012 -0800"
      },
      "message": "Fix line wrapping.\n\nChange-Id: I41199d1145d2435eee046a7e5006dcdce0986821\n"
    },
    {
      "commit": "3e8d7cfd1e6e65a60a9f6b7e174672dc9a281e49",
      "tree": "3d5451e846d9edb9c02a2de1864e4213e923d2df",
      "parents": [
        "cd836bbb8be8f4c93d6086a30da616c3b00f859e",
        "2a293b61cb0efbf24994d74ed980f58b820bb35a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 14:05:39 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 14:05:39 2012 -0800"
      },
      "message": "Merge \"Clean up SQLite debugging code.\""
    },
    {
      "commit": "2a293b61cb0efbf24994d74ed980f58b820bb35a",
      "tree": "b181f785aa2ec48ac88162a651d28e9417ec75d2",
      "parents": [
        "6534c0e0548332801cffaa0977af165025030297"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 14:02:22 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 14:02:22 2012 -0800"
      },
      "message": "Clean up SQLite debugging code.\n\nDeleted a bunch of dead / useless code.\nRaised number of logged operations in dumpsys dbinfo to 20.\n\nChange-Id: I88344ff57a978f200c1f0172141d91e430caa1a9\n"
    },
    {
      "commit": "cd836bbb8be8f4c93d6086a30da616c3b00f859e",
      "tree": "9b47af598f1193983249af57c7de582eff2a04ad",
      "parents": [
        "e988e0c31ca16160dee1b7c689ac31cd70fe43a2",
        "5bf2802ad9de237ccc014489dd36ff4baadadfaa"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 19 13:17:43 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 13:17:43 2012 -0800"
      },
      "message": "Merge \"Fix broken drawCircle LayoutLib.\""
    },
    {
      "commit": "e988e0c31ca16160dee1b7c689ac31cd70fe43a2",
      "tree": "23e24ad56635efd8e7cbd0d0ef381bff84c0d8d4",
      "parents": [
        "b3ca0fe66c1def11a04b18e6872318deb0340b9b",
        "3562931af97354ca028f3e1ff4bed45a9d6bfc26"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 19 10:52:46 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 10:52:46 2012 -0800"
      },
      "message": "Merge \"resolved conflicts for merge of 05683c85 to master\""
    },
    {
      "commit": "b3ca0fe66c1def11a04b18e6872318deb0340b9b",
      "tree": "d38359f1b934d0a095fa2cdc39c38e69e9aecb89",
      "parents": [
        "bdf7f9658044d4c55c4826a88a41822045557ee5",
        "c171402318c1d71df961221f4ed1660fbedd08cc"
      ],
      "author": {
        "name": "Gilles Debunne",
        "email": "debunne@google.com",
        "time": "Thu Jan 19 10:23:32 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 10:23:32 2012 -0800"
      },
      "message": "Merge \"Touch slop added to double tap detection\""
    },
    {
      "commit": "bdf7f9658044d4c55c4826a88a41822045557ee5",
      "tree": "af4327197ed63747aae40ccd23ff5eb8c6c018cb",
      "parents": [
        "de9f0036ef58a55ca89a3c427a462bd84b5751c3",
        "14568c3f76cc4d3ad75dfd0206a3dc2130135c58"
      ],
      "author": {
        "name": "Gilles Debunne",
        "email": "debunne@google.com",
        "time": "Thu Jan 19 10:23:18 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 10:23:18 2012 -0800"
      },
      "message": "Merge \"Fixes around extract mode\""
    },
    {
      "commit": "de9f0036ef58a55ca89a3c427a462bd84b5751c3",
      "tree": "a4b4564c27c17fec3d9d0ed26aeb7889b9036ea0",
      "parents": [
        "00db1f52b1c12d3670a0419305aa7548f7932aa0",
        "96fae5e088916e1da8d4afaf40758ceec6e7187a"
      ],
      "author": {
        "name": "Teng-Hui Zhu",
        "email": "ztenghui@google.com",
        "time": "Thu Jan 19 10:00:40 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 10:00:40 2012 -0800"
      },
      "message": "Merge \"Support full screen back to back playing using javascript\""
    },
    {
      "commit": "3562931af97354ca028f3e1ff4bed45a9d6bfc26",
      "tree": "d84f59054a51278b9554ad0e2008a8dc3799bae9",
      "parents": [
        "92ecdd63033a53b3c6301a9dc94c2438e498f27b",
        "05683c85965b880d634177c789451dd044fcbd6f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 19 10:00:02 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 19 10:00:02 2012 -0800"
      },
      "message": "resolved conflicts for merge of 05683c85 to master\n\nChange-Id: I7846b7da8c5813b7a9b1f3f71aede0229689ff0d\n"
    },
    {
      "commit": "00db1f52b1c12d3670a0419305aa7548f7932aa0",
      "tree": "f3fdce954da5322c414d7367f9f55b330f6b8210",
      "parents": [
        "92ecdd63033a53b3c6301a9dc94c2438e498f27b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 16 14:41:30 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 07:42:11 2012 -0800"
      },
      "message": "Rename JNI implementation to match Java method\n\nandroid_media_AudioTrack_native_write renamed to\nandroid_media_AudioTrack_native_write_byte, since the Java method name\nis called native_write_byte.\n\nChange-Id: I85ef092cf3f5a01d275fc4ef127b4b6d190139e8\n"
    },
    {
      "commit": "92ecdd63033a53b3c6301a9dc94c2438e498f27b",
      "tree": "787c5dfc67dbd03247411de308a0dcefc6bedd87",
      "parents": [
        "adf10837719627e725187e26a2e3654ba97245c8",
        "a6dafea172ac344f38cf4255c8896766f10b7b55"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 06:10:37 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 06:10:37 2012 -0800"
      },
      "message": "Merge \"Fix incorrect includes of AudioTrack.h\""
    },
    {
      "commit": "adf10837719627e725187e26a2e3654ba97245c8",
      "tree": "4718d14b84f20d23523e8ee87e09ea3cefb1b8ca",
      "parents": [
        "6808516e8e2327ddf4a6b2f3528d3a4d3ff105b3",
        "8f397cdd4c53e1a2a96bc4bdaeded59a007c85b8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 06:09:20 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 06:09:20 2012 -0800"
      },
      "message": "Merge \"Simplify range check for audio_mode_t (continued)\""
    },
    {
      "commit": "6808516e8e2327ddf4a6b2f3528d3a4d3ff105b3",
      "tree": "3c8540d06b93b701fc9b80083cd01276d1341d1b",
      "parents": [
        "f4a93d0965f5e4c6ea22798a83823174fa9f38eb",
        "22c4241a13c65b3d5ec715004a3391016967549b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 06:09:05 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 06:09:05 2012 -0800"
      },
      "message": "Merge \"Add units to time periods\""
    },
    {
      "commit": "f4a93d0965f5e4c6ea22798a83823174fa9f38eb",
      "tree": "0afcbaef88559add4aafd020a4e5c302c7a4fc20",
      "parents": [
        "0d7a9979651511eb69bab14068fc0bee5d1a8441",
        "05d331090f81704f6f1a06582b93e5789549ed3a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 06:08:53 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 06:08:53 2012 -0800"
      },
      "message": "Merge \"Use const const strings for arrays and pointers to strings\""
    },
    {
      "commit": "0d7a9979651511eb69bab14068fc0bee5d1a8441",
      "tree": "d77c126a642d7b554d8a67b93c083f68720bdf42",
      "parents": [
        "e119bd144207b9b89ec7d52ee619bdbcda8ab497",
        "b737dbb5c4457bfff5c0248a903e1fa764489732"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 06:08:40 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 06:08:40 2012 -0800"
      },
      "message": "Merge \"For booleans, use ! instead of \u003d\u003d false\""
    },
    {
      "commit": "e119bd144207b9b89ec7d52ee619bdbcda8ab497",
      "tree": "2db63e53cecb85d7a0b3c2dd5fd9dc173587994d",
      "parents": [
        "6534c0e0548332801cffaa0977af165025030297",
        "29a0909c5f777230b9f34ef0703fed3cd4633833"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 06:08:12 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 06:08:12 2012 -0800"
      },
      "message": "Merge \"Replace run-time stream types by compile-time\""
    },
    {
      "commit": "6534c0e0548332801cffaa0977af165025030297",
      "tree": "af39621862e80f19994f7c8639a8ff90ac06c08f",
      "parents": [
        "a37a108cfbaa23bcddaaeab4b838bec262bc2441",
        "a9be4154e8dac0de3db5ee42e878beb0639e70e6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 18 18:31:06 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 18:31:06 2012 -0800"
      },
      "message": "Merge \"Fix issues with reentrant SQLite triggers.\""
    },
    {
      "commit": "a9be4154e8dac0de3db5ee42e878beb0639e70e6",
      "tree": "55b9c6df70a28a36cf97df1e3ed0181b8434a20e",
      "parents": [
        "dc89357810976556d20483c7fe161b68ed4d2acf"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 18 15:29:57 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 18 18:29:20 2012 -0800"
      },
      "message": "Fix issues with reentrant SQLite triggers.\n\nModified SQLiteConnection and SQLiteSession to support\nreentrant execution of SQLite operations, as might occur\nwhen a custom function is invoked by a trigger.\n\nBug: 5884809\nChange-Id: I253d828b2801bd06b1bbda7caa7da3f040a642bb\n"
    },
    {
      "commit": "a37a108cfbaa23bcddaaeab4b838bec262bc2441",
      "tree": "f97813b3a3b55f9d7f9235fce45492b620c486fe",
      "parents": [
        "e7bdf2d9d0107afadddb6498331cd21be260d23c",
        "75582e889d4895483309e38364266073be6d46b8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 18 18:14:27 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 18:14:27 2012 -0800"
      },
      "message": "Merge \"Add basic code required for drawPicture()\""
    },
    {
      "commit": "75582e889d4895483309e38364266073be6d46b8",
      "tree": "a8898f4f3fd113699201b0f7d46a868ad92f9eba",
      "parents": [
        "84fce187b0ae79adc5b4e64c26f72c8ed59e9703"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 18 18:13:35 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 18 18:13:35 2012 -0800"
      },
      "message": "Add basic code required for drawPicture()\n\nChange-Id: Ib9e73cd4b932836d4debe920200f8d1c1861c2d4\n"
    },
    {
      "commit": "e7bdf2d9d0107afadddb6498331cd21be260d23c",
      "tree": "33c74ae808a5bb166633d3dc6e96d2bc18106d35",
      "parents": [
        "4785a6ff8d48f51813611f2cab998b235ce2bbca",
        "84fce187b0ae79adc5b4e64c26f72c8ed59e9703"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 18 18:11:09 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 18:11:09 2012 -0800"
      },
      "message": "Merge \"Don\u0027t crash on Canvas.drawPicture()\""
    },
    {
      "commit": "84fce187b0ae79adc5b4e64c26f72c8ed59e9703",
      "tree": "8fc08a1f20f43585bd00881fe728c602d1307733",
      "parents": [
        "671d6cf460531825a321edb200523d0faa7792c9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 18 18:09:54 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 18 18:09:54 2012 -0800"
      },
      "message": "Don\u0027t crash on Canvas.drawPicture()\n\nImplementation yet to come but prevent app crashes.\n\nChange-Id: I81d6851ebf776a98e13c606bab272a03aec406ee\n"
    },
    {
      "commit": "4785a6ff8d48f51813611f2cab998b235ce2bbca",
      "tree": "746b2e1deb9af261392e32966bb05c16d03fd37d",
      "parents": [
        "170bfe32ab8971805d56f8870758cbc46060d1ef",
        "671d6cf460531825a321edb200523d0faa7792c9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 18 18:01:34 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 18:01:34 2012 -0800"
      },
      "message": "Merge \"Full support for Canvas.drawPosText\""
    },
    {
      "commit": "671d6cf460531825a321edb200523d0faa7792c9",
      "tree": "7fde21ba8f48911629c3dd67a1138bd6a569c084",
      "parents": [
        "fb9ffe02609c9c4ffca64927e72bc935cfe87768"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 18 12:39:17 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 18 18:00:12 2012 -0800"
      },
      "message": "Full support for Canvas.drawPosText\n\nThis also introduces a small optimization when rendering text.\n\nChange-Id: Iff620ac97bf878eaac406bccc6daa07052c93890\n"
    },
    {
      "commit": "5bf2802ad9de237ccc014489dd36ff4baadadfaa",
      "tree": "b1a7d91193d66de13924be8d0b58d9637ed2a76e",
      "parents": [
        "170bfe32ab8971805d56f8870758cbc46060d1ef"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 18 17:08:53 2012 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 18 17:08:53 2012 -0800"
      },
      "message": "Fix broken drawCircle LayoutLib.\n\nChange-Id: I5e23bbe0119e385fa2f77854a8f88128351d3759\n"
    },
    {
      "commit": "05683c85965b880d634177c789451dd044fcbd6f",
      "tree": "ca9743cc23131cc45690f93570d15217e21eb45a",
      "parents": [
        "7b6231a44e21fbf5b2bc2a5eff2231139ac4088f",
        "db2e71635968f455ad4f41b2e24fb8b909c24ca0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 18 16:08:06 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 18 16:08:06 2012 -0800"
      },
      "message": "am db2e7163: Merge \"AudioFlinger: mix track only when really ready (2)\" into ics-mr1\n\n* commit \u0027db2e71635968f455ad4f41b2e24fb8b909c24ca0\u0027:\n  AudioFlinger: mix track only when really ready (2)\n"
    },
    {
      "commit": "170bfe32ab8971805d56f8870758cbc46060d1ef",
      "tree": "e6fd3ff0d707b4cbc211ac27a0209e6465098592",
      "parents": [
        "d3f2f59c46b3979a76eae02cfb4a7071425556e1",
        "7b6231a44e21fbf5b2bc2a5eff2231139ac4088f"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Wed Jan 18 16:08:04 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 18 16:08:04 2012 -0800"
      },
      "message": "am 7b6231a4: am aba79851: Merge \"Use new preferredAPN URI avoiding onApnChanged() call with self-change\" into ics-mr1\n\n* commit \u00277b6231a44e21fbf5b2bc2a5eff2231139ac4088f\u0027:\n  Use new preferredAPN URI avoiding onApnChanged() call with self-change\n"
    },
    {
      "commit": "d3f2f59c46b3979a76eae02cfb4a7071425556e1",
      "tree": "400230d2b31ace2627373db077d0435004992bb8",
      "parents": [
        "03cbb97e4ef89590cbcb4cb682ec0d90d601e8dd",
        "6de74ff2a45591455cbb5c21d78904065e89ec89"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jan 18 16:07:28 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 16:07:28 2012 -0800"
      },
      "message": "Merge \"Fix edge cases leading to backup hanging forever\""
    },
    {
      "commit": "a6dafea172ac344f38cf4255c8896766f10b7b55",
      "tree": "001a395bf1753e632aa35f056e45c77741641942",
      "parents": [
        "540c35f7aa01f7eba849148ea8b22eff351ce16d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 14:54:46 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 16:06:47 2012 -0800"
      },
      "message": "Fix incorrect includes of AudioTrack.h\n\nRemove unnecessary includes of AudioTrack.h.\nUse forward declaration of class names in preference to #include when possible.\n\nChange-Id: I12982811fa75c2c7695d8bbfa595a7aaec047dc0\n"
    },
    {
      "commit": "7b6231a44e21fbf5b2bc2a5eff2231139ac4088f",
      "tree": "0babc9278f801b1edbf8d0a9c022af0bc9e53557",
      "parents": [
        "a6a0d134ebfb0931473c5e54f21ff543e08b4a91",
        "aba798510129327a046d57844381382fb1faa3ba"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Wed Jan 18 16:05:43 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 18 16:05:43 2012 -0800"
      },
      "message": "am aba79851: Merge \"Use new preferredAPN URI avoiding onApnChanged() call with self-change\" into ics-mr1\n\n* commit \u0027aba798510129327a046d57844381382fb1faa3ba\u0027:\n  Use new preferredAPN URI avoiding onApnChanged() call with self-change\n"
    },
    {
      "commit": "db2e71635968f455ad4f41b2e24fb8b909c24ca0",
      "tree": "7ec96e0d02104d31079bfcd564b4b4f04fab892c",
      "parents": [
        "aba798510129327a046d57844381382fb1faa3ba",
        "71c4496a9757438afd30b4404824f296f6158a49"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 18 16:05:31 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 16:05:31 2012 -0800"
      },
      "message": "Merge \"AudioFlinger: mix track only when really ready (2)\" into ics-mr1"
    },
    {
      "commit": "aba798510129327a046d57844381382fb1faa3ba",
      "tree": "dcdd4b046415d015e9603597e8007421869c9bf7",
      "parents": [
        "04f3848986efda8cf006f575d2e4990f120a1bc8",
        "1e6329d4545955d5ebb440d09be9eb974ab3a2a6"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Wed Jan 18 16:03:24 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 16:03:24 2012 -0800"
      },
      "message": "Merge \"Use new preferredAPN URI avoiding onApnChanged() call with self-change\" into ics-mr1"
    },
    {
      "commit": "8f397cdd4c53e1a2a96bc4bdaeded59a007c85b8",
      "tree": "0645973f704fb1d7ddf415e0f79221c40c62fee3",
      "parents": [
        "540c35f7aa01f7eba849148ea8b22eff351ce16d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 14:58:32 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 15:57:40 2012 -0800"
      },
      "message": "Simplify range check for audio_mode_t (continued)\n\nMissed one place in earlier CL of same name\n\nChange-Id: I0dd25364d0b8d5d731c02d352f139a0c8d4df1a8\n"
    },
    {
      "commit": "96fae5e088916e1da8d4afaf40758ceec6e7187a",
      "tree": "a7ce5292b913fd9be3083da14658c772b8b46861",
      "parents": [
        "d7678a1684966cac10717b34b161b5241b9865c5"
      ],
      "author": {
        "name": "Teng-Hui Zhu",
        "email": "ztenghui@google.com",
        "time": "Wed Jan 18 15:25:51 2012 -0800"
      },
      "committer": {
        "name": "Teng-Hui Zhu",
        "email": "ztenghui@google.com",
        "time": "Wed Jan 18 15:53:01 2012 -0800"
      },
      "message": "Support full screen back to back playing using javascript\n\nbug:5766427\n\nChange-Id: I0117e50a3e547ac8c33cf966bef18e6d75f98660\n"
    },
    {
      "commit": "22c4241a13c65b3d5ec715004a3391016967549b",
      "tree": "1a7a05e04dea33cea1ab035191be387cdab45a5f",
      "parents": [
        "540c35f7aa01f7eba849148ea8b22eff351ce16d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 09 08:33:38 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 15:45:55 2012 -0800"
      },
      "message": "Add units to time periods\n\nChange-Id: Ib980e2676cecf5d9b0c2e388da6dc8e370df8abb\n"
    },
    {
      "commit": "05d331090f81704f6f1a06582b93e5789549ed3a",
      "tree": "bd0d6ec1721fc122b7ecd6cb9637d1d95885c15a",
      "parents": [
        "540c35f7aa01f7eba849148ea8b22eff351ce16d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 09 08:41:22 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 15:44:48 2012 -0800"
      },
      "message": "Use const const strings for arrays and pointers to strings\n\nChange-Id: I0a073e17ebf6ad59e7edbedac104c6fa4bcaf9c9\n"
    },
    {
      "commit": "6de74ff2a45591455cbb5c21d78904065e89ec89",
      "tree": "70c9ca44545f3e67e3a61d5e69b0763f8f7d4c9a",
      "parents": [
        "ea77ed02e44ebd177e3c7e1797d9cb804820ce43"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jan 17 15:20:32 2012 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jan 18 15:44:47 2012 -0800"
      },
      "message": "Fix edge cases leading to backup hanging forever\n\nPlug a couple of apparent code paths (one not obviously reachable, but\nfixed here on general principles) that could lead to a backup pass\ngetting confused partway through and simply never properly completing.\nIn this state it would leave its wakelock held forever until next\nreboot.  Bug 5828859.\n\nThose fixes are a total of two lines of code. The rest of the patch\nadds a textual journal of the most recently completed (or ongoing!)\nbackup pass\u0027s progress, with an eye to being able to isolate any such\nissues that may crop up in the future.\n\nChange-Id: If8a5e8aba11db5a1e618d8b9c9ba3038dd5377a1\n"
    },
    {
      "commit": "b737dbb5c4457bfff5c0248a903e1fa764489732",
      "tree": "3e8b35b7122a708257a2d1d4e03b2b12dab6f462",
      "parents": [
        "540c35f7aa01f7eba849148ea8b22eff351ce16d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 15:54:24 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 15:42:59 2012 -0800"
      },
      "message": "For booleans, use ! instead of \u003d\u003d false\n\nChange-Id: Ibc115936d2d0b0b7744ebe9b52839ea5b42c4edd\n"
    },
    {
      "commit": "03cbb97e4ef89590cbcb4cb682ec0d90d601e8dd",
      "tree": "007ad01fe425e1a2ec0a5c6e4d1e32b4d5c1d1e6",
      "parents": [
        "ea77ed02e44ebd177e3c7e1797d9cb804820ce43",
        "1f541a042347a789256434a3c548d62565388e96"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Wed Jan 18 15:42:46 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 15:42:46 2012 -0800"
      },
      "message": "Merge \"Run ComputePerf multiple times.\""
    },
    {
      "commit": "1f541a042347a789256434a3c548d62565388e96",
      "tree": "0ec93cf777f0f748ee1a77fd3c2465de8984ad47",
      "parents": [
        "fb9ffe02609c9c4ffca64927e72bc935cfe87768"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Wed Jan 18 15:06:57 2012 -0800"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Wed Jan 18 15:06:57 2012 -0800"
      },
      "message": "Run ComputePerf multiple times.\n\nChange-Id: I715c726f15416685b715a14a25c9595d9a9a124b\n"
    },
    {
      "commit": "ea77ed02e44ebd177e3c7e1797d9cb804820ce43",
      "tree": "88478009dd14e8c97eb8f2afde0d27fc3d229b6b",
      "parents": [
        "2a16b1374413abe513c0b60597262d45360138f7",
        "a6a0d134ebfb0931473c5e54f21ff543e08b4a91"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Wed Jan 18 14:51:35 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 18 14:51:35 2012 -0800"
      },
      "message": "am a6a0d134: am 04f38489: Merge \"Fix DeviceDefault theme/style bugs where parent styles were incorrectly specified.\" into ics-mr1\n\n* commit \u0027a6a0d134ebfb0931473c5e54f21ff543e08b4a91\u0027:\n  Fix DeviceDefault theme/style bugs where parent styles were incorrectly specified.\n"
    },
    {
      "commit": "a6a0d134ebfb0931473c5e54f21ff543e08b4a91",
      "tree": "bebfdc9ee1bfacf0d5cd26b740d0e425b7948853",
      "parents": [
        "c891c6eff7ab320092af4ec5b235f83866f66261",
        "04f3848986efda8cf006f575d2e4990f120a1bc8"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Wed Jan 18 14:49:30 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 18 14:49:30 2012 -0800"
      },
      "message": "am 04f38489: Merge \"Fix DeviceDefault theme/style bugs where parent styles were incorrectly specified.\" into ics-mr1\n\n* commit \u002704f3848986efda8cf006f575d2e4990f120a1bc8\u0027:\n  Fix DeviceDefault theme/style bugs where parent styles were incorrectly specified.\n"
    },
    {
      "commit": "04f3848986efda8cf006f575d2e4990f120a1bc8",
      "tree": "f2bd572b9536ff938cebeb770303136c31f7f678",
      "parents": [
        "013dbcf0783f55efbb75e6c2794478c27d172c8c",
        "c8fcde2b6b1cd74bd4ae48cc46b8ee6242c7a450"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Wed Jan 18 14:47:20 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 14:47:20 2012 -0800"
      },
      "message": "Merge \"Fix DeviceDefault theme/style bugs where parent styles were incorrectly specified.\" into ics-mr1"
    },
    {
      "commit": "2a16b1374413abe513c0b60597262d45360138f7",
      "tree": "4c68c0cdc630c3c099763c14fc6fdf0679c7d242",
      "parents": [
        "d9fdd9fd7862b0d56094fa9846fb7c730ec305a8",
        "5aa73ae58f049379a97bc86add541f27170c02a4"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 18 14:43:16 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 14:43:16 2012 -0800"
      },
      "message": "Merge \"Improve heuristics for orientation detection.\""
    },
    {
      "commit": "c171402318c1d71df961221f4ed1660fbedd08cc",
      "tree": "975cb80a56e7f533e6d1999584475e9ef3aea714",
      "parents": [
        "b2d81fead90f556279d611b6f15881c663558ad5"
      ],
      "author": {
        "name": "Gilles Debunne",
        "email": "debunne@google.com",
        "time": "Tue Jan 17 13:59:23 2012 -0800"
      },
      "committer": {
        "name": "Gilles Debunne",
        "email": "debunne@google.com",
        "time": "Wed Jan 18 14:40:53 2012 -0800"
      },
      "message": "Touch slop added to double tap detection\n\nSimilar to what is done in GestureDetector\n\nRemoved all gesture constants. Only one one them is used on MOVE\n(added an early exit test), the 2 others on UP or DOWN where\nperformance is not such an issue.\n\nChange-Id: Icd58ead5078f94f86786f934ddf81aa5ec9bf549\n"
    },
    {
      "commit": "d9fdd9fd7862b0d56094fa9846fb7c730ec305a8",
      "tree": "da16bda1d81bf893e87026a2eec886bc2057fb58",
      "parents": [
        "ca917ac1e6d2cca9f3a673d8453621ddc4e6602b",
        "17146c7cc007c21b3ec36f8dec76aded15e7a53f"
      ],
      "author": {
        "name": "Michael Kolb",
        "email": "kolby@google.com",
        "time": "Wed Jan 18 14:00:52 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 14:00:52 2012 -0800"
      },
      "message": "Merge \"Prevent IME from popping up on startup\""
    },
    {
      "commit": "ca917ac1e6d2cca9f3a673d8453621ddc4e6602b",
      "tree": "a5265476659348f6c3a99033e33f880f67001acc",
      "parents": [
        "b41c96a374134c84558291fbb532fe490386a4ba",
        "c891c6eff7ab320092af4ec5b235f83866f66261"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Wed Jan 18 13:21:54 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 18 13:21:54 2012 -0800"
      },
      "message": "am c891c6ef: am 013dbcf0: Merge \"docs: adding rs api docs\" into ics-mr1\n\n* commit \u0027c891c6eff7ab320092af4ec5b235f83866f66261\u0027:\n  docs: adding rs api docs\n"
    },
    {
      "commit": "b41c96a374134c84558291fbb532fe490386a4ba",
      "tree": "627c5cd1576ab1bfff4a7011ed53d19a7b5d642a",
      "parents": [
        "1ad65e7054fa757b6c909550691d849fcb43e8b9",
        "43fda84e91b1fe356af35386d2f304d3ab71529e"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Wed Jan 18 13:21:51 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 18 13:21:51 2012 -0800"
      },
      "message": "am 43fda84e: am 6ad9ea7d: Merge \"update overview page for rs api docs to open iframe links in parent\" into ics-mr1\n\n* commit \u002743fda84e91b1fe356af35386d2f304d3ab71529e\u0027:\n  update overview page for rs api docs to open iframe links in parent\n"
    },
    {
      "commit": "c891c6eff7ab320092af4ec5b235f83866f66261",
      "tree": "dc8540b1b0b844b66a9ad34c36416261613e1067",
      "parents": [
        "43fda84e91b1fe356af35386d2f304d3ab71529e",
        "013dbcf0783f55efbb75e6c2794478c27d172c8c"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Wed Jan 18 13:19:52 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 18 13:19:52 2012 -0800"
      },
      "message": "am 013dbcf0: Merge \"docs: adding rs api docs\" into ics-mr1\n\n* commit \u0027013dbcf0783f55efbb75e6c2794478c27d172c8c\u0027:\n  docs: adding rs api docs\n"
    },
    {
      "commit": "43fda84e91b1fe356af35386d2f304d3ab71529e",
      "tree": "4b12c1489cd17ce8ebc1b9527149a78280290d55",
      "parents": [
        "58f9c3da340eb36051bc20d6b8cec6b982852ee0",
        "6ad9ea7deb669eca68c58f001c935255c3294cfe"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Wed Jan 18 13:19:50 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 18 13:19:50 2012 -0800"
      },
      "message": "am 6ad9ea7d: Merge \"update overview page for rs api docs to open iframe links in parent\" into ics-mr1\n\n* commit \u00276ad9ea7deb669eca68c58f001c935255c3294cfe\u0027:\n  update overview page for rs api docs to open iframe links in parent\n"
    },
    {
      "commit": "013dbcf0783f55efbb75e6c2794478c27d172c8c",
      "tree": "983d95fd8048037b414a293e845b27f3eea1b133",
      "parents": [
        "6ad9ea7deb669eca68c58f001c935255c3294cfe",
        "dc6720f34bf5c1de7ff5001fddd1958e41926761"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Wed Jan 18 13:18:11 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 13:18:11 2012 -0800"
      },
      "message": "Merge \"docs: adding rs api docs\" into ics-mr1"
    },
    {
      "commit": "6ad9ea7deb669eca68c58f001c935255c3294cfe",
      "tree": "2b5003c3105d288c03af008c4df39077dbd21f0d",
      "parents": [
        "dd41d360eac45ceae92963ed3f100f1c39dd5db2",
        "2eeb53c1555128bdc810c5457d82b447e53cf926"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Wed Jan 18 13:17:51 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 13:17:51 2012 -0800"
      },
      "message": "Merge \"update overview page for rs api docs to open iframe links in parent\" into ics-mr1"
    },
    {
      "commit": "1ad65e7054fa757b6c909550691d849fcb43e8b9",
      "tree": "2f4814229ffd58a5b815e4c088da08104e7e1935",
      "parents": [
        "5689317a6f33e03a19359104fc2cda3ef2f20771",
        "6b5862d3b4d8d102991934500b664efce46995a5"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Wed Jan 18 13:09:55 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 13:09:55 2012 -0800"
      },
      "message": "Merge \"Remove LlcpPacket from public namespace.\""
    },
    {
      "commit": "5689317a6f33e03a19359104fc2cda3ef2f20771",
      "tree": "7e0b1e798bea0778c3a6da51115f216b1373ac6e",
      "parents": [
        "b2d81fead90f556279d611b6f15881c663558ad5",
        "58f9c3da340eb36051bc20d6b8cec6b982852ee0"
      ],
      "author": {
        "name": "Joe Fernandez",
        "email": "joefernandez@google.com",
        "time": "Wed Jan 18 12:37:22 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 18 12:37:22 2012 -0800"
      },
      "message": "am 58f9c3da: am dd41d360: Merge \"docs: Android API 15 SDK r2 Release Notes\" into ics-mr1\n\n* commit \u002758f9c3da340eb36051bc20d6b8cec6b982852ee0\u0027:\n  docs: Android API 15 SDK r2 Release Notes\n"
    },
    {
      "commit": "58f9c3da340eb36051bc20d6b8cec6b982852ee0",
      "tree": "952e8400e20c4ef848da7494b3042eb6a24771f1",
      "parents": [
        "2afcd2d1a29f4417425630916e1ab93aa383cf1e",
        "dd41d360eac45ceae92963ed3f100f1c39dd5db2"
      ],
      "author": {
        "name": "Joe Fernandez",
        "email": "joefernandez@google.com",
        "time": "Wed Jan 18 12:35:30 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 18 12:35:30 2012 -0800"
      },
      "message": "am dd41d360: Merge \"docs: Android API 15 SDK r2 Release Notes\" into ics-mr1\n\n* commit \u0027dd41d360eac45ceae92963ed3f100f1c39dd5db2\u0027:\n  docs: Android API 15 SDK r2 Release Notes\n"
    },
    {
      "commit": "dd41d360eac45ceae92963ed3f100f1c39dd5db2",
      "tree": "da2a7b4795ea1bca7a51b9d393c5c70992ed63fa",
      "parents": [
        "3938e4fbaae132db9b4676ba26f6b3c042a6879e",
        "ed2c2095e43f044b60547b20012aa4cf563731bb"
      ],
      "author": {
        "name": "Joe Fernandez",
        "email": "joefernandez@google.com",
        "time": "Wed Jan 18 12:33:45 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 12:33:45 2012 -0800"
      },
      "message": "Merge \"docs: Android API 15 SDK r2 Release Notes\" into ics-mr1"
    },
    {
      "commit": "71c4496a9757438afd30b4404824f296f6158a49",
      "tree": "dbfa675e63db41e6f7bd554026f97fc3b158b9c2",
      "parents": [
        "3938e4fbaae132db9b4676ba26f6b3c042a6879e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 17 19:20:12 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 18 12:27:38 2012 -0800"
      },
      "message": "AudioFlinger: mix track only when really ready (2)\n\nThis problem due to the way audio buffers are mixed when\nlow power mode is active was addressed by commits 19ddf0eb\nand 8a04fe03 but only partially. As a matter of fact, when more\nthan one audio track is playing, the problem is still present.\nThis is most noticeable when playing music with screen off\nand a notification or navigation instruction is played: in this case,\nthe music or notification is likely to skip.\n\nThe fix consists in declaring the mixer ready if all active tracks\nare ready. Previous behavior was to declare ready if at least one track was\nready. To avoid that one application failing to fill the track buffer blocks other\ntracks indefinitely, this condition is respected only if the mixer was ready\nin the previous round.\n\nIssue 5799167.\n\nChange-Id: Iabd4ca08d3d45f563d9824c8a03c2c68a43ae179\n"
    },
    {
      "commit": "17146c7cc007c21b3ec36f8dec76aded15e7a53f",
      "tree": "904d4fb65aa279527abaa74739b182e309a2e204",
      "parents": [
        "01cc1d1e8c917ef2e63f0bd3ac38232d41820ad0"
      ],
      "author": {
        "name": "Michael Kolb",
        "email": "kolby@google.com",
        "time": "Wed Jan 18 11:20:01 2012 -0800"
      },
      "committer": {
        "name": "Michael Kolb",
        "email": "kolby@google.com",
        "time": "Wed Jan 18 11:20:01 2012 -0800"
      },
      "message": "Prevent IME from popping up on startup\n\n    Bug: 5869028\n\nChange-Id: Ie5c7004def16eeac4147d19fb00fc9631a17579e\n"
    },
    {
      "commit": "b2d81fead90f556279d611b6f15881c663558ad5",
      "tree": "621d252565d460d16eafb9a0a54e9b647ae2ab31",
      "parents": [
        "955fdda057363dbf1ae95ffeb542cde8ace28b54",
        "28ea013f25626ca2a24600b5916ebe0dfc9e46cf"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 18 11:01:00 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 11:01:00 2012 -0800"
      },
      "message": "Merge \"Temporarily restore AudioSystem/AudioTrack APIs with their former signatures\""
    },
    {
      "commit": "28ea013f25626ca2a24600b5916ebe0dfc9e46cf",
      "tree": "ce5e1ee95b62c5aeaeb3b35d8b936c67c0a60f97",
      "parents": [
        "540c35f7aa01f7eba849148ea8b22eff351ce16d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 18 10:51:55 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 18 10:51:55 2012 -0800"
      },
      "message": "Temporarily restore AudioSystem/AudioTrack APIs with their former signatures\n\nuntil we get updated prebuilts from vendor.\n\nChange-Id: I8aae81d2513edca0ab268053a11c8c4206879e61\n"
    },
    {
      "commit": "955fdda057363dbf1ae95ffeb542cde8ace28b54",
      "tree": "1262c8203eeb42a3f545a491f17ffc7dc9e7f399",
      "parents": [
        "70a957cef141437cdf84e19c2eaeabdfb85c6542"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Jan 18 09:35:28 2012 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Jan 18 09:36:43 2012 -0800"
      },
      "message": "Add tapHighlightColor support\n\nChange-Id: I419eb3d8f1050efd05bb989a6b353ad45ee77acf\n"
    },
    {
      "commit": "70a957cef141437cdf84e19c2eaeabdfb85c6542",
      "tree": "9ff0bbc079f2dbd9ed5ea1b8cde6749a6659aafd",
      "parents": [
        "f429b6a9011bd5408fb0ecba2a1f9b0167178134",
        "33faba0ac3c7ec61d63257954392ccb421d85986"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 18 09:29:56 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 09:29:56 2012 -0800"
      },
      "message": "Merge \"AVIExtractor: adding a H264 fourCC which is also specified in the reference. (H264 code can be found avi file which is encoded with FFmpeg.)\""
    },
    {
      "commit": "f429b6a9011bd5408fb0ecba2a1f9b0167178134",
      "tree": "5344cb1428d8f15832a675001cb66a6fbcf94344",
      "parents": [
        "540c35f7aa01f7eba849148ea8b22eff351ce16d",
        "c14cc179729a4504db23d49301ec30fc0cfcbb1c"
      ],
      "author": {
        "name": "Bryan Mawhinney",
        "email": "bryanmawhinney@google.com",
        "time": "Wed Jan 18 08:58:19 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 08:58:19 2012 -0800"
      },
      "message": "Merge \"Make sure seek triggers a reconnect if needed.\""
    },
    {
      "commit": "540c35f7aa01f7eba849148ea8b22eff351ce16d",
      "tree": "da40eb567c9bc1eb47292dc03d4295ea1554aa4d",
      "parents": [
        "96c804af0b4eef79f6d3cdb0f20682e243f1b73d",
        "0632bad8bad41bc44184596478ec2d203d52096f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 07:46:18 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 07:46:18 2012 -0800"
      },
      "message": "Merge \"Track volume cleanup\""
    },
    {
      "commit": "c14cc179729a4504db23d49301ec30fc0cfcbb1c",
      "tree": "d2711c9a06ec3089066418ed064b4bf9743ba65e",
      "parents": [
        "96c804af0b4eef79f6d3cdb0f20682e243f1b73d"
      ],
      "author": {
        "name": "Bryan Mawhinney",
        "email": "bryanmawhinney@google.com",
        "time": "Wed Jan 18 13:40:07 2012 +0000"
      },
      "committer": {
        "name": "Bryan Mawhinney",
        "email": "bryanmawhinney@google.com",
        "time": "Wed Jan 18 13:43:16 2012 +0000"
      },
      "message": "Make sure seek triggers a reconnect if needed.\n\nPreviously, if we had disconnected at the high watermark,\nthe read immediately following a seek would fail, and would\nnot be retried, resulting in an error.\n\nChange-Id: I45a53563fe17d6b54893815abc7750a7dfb0a124\n"
    },
    {
      "commit": "96c804af0b4eef79f6d3cdb0f20682e243f1b73d",
      "tree": "103c528973689c6213f118bb9fc086a84deafe9c",
      "parents": [
        "fb9ffe02609c9c4ffca64927e72bc935cfe87768"
      ],
      "author": {
        "name": "Jean Chalard",
        "email": "jchalard@google.com",
        "time": "Mon Jun 13 17:24:43 2011 +0900"
      },
      "committer": {
        "name": "Jean Chalard",
        "email": "jchalard@google.com",
        "time": "Wed Jan 18 18:54:34 2012 +0900"
      },
      "message": "Add methods to support shortcuts in user dict.\n\nAdds the new interface to the user dictionary, which includes\na clean way of inserting words in any locale and support for\nshortcuts.\n\nChange Ib318c047 implements the provider part of this.\n\nBug: 4646172\nChange-Id: Id3ca792f2555fac46728f9d404ab0199971f6503\n"
    },
    {
      "commit": "fb9ffe02609c9c4ffca64927e72bc935cfe87768",
      "tree": "38229c7aba02f60e62caf345cfa75502d263e457",
      "parents": [
        "1be4afecb752559092654c0e9f4ca302b6d04e9c",
        "eb9a5367e8f0e970db8509ffb2584f5376bc62ed"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 17 17:40:24 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 17:40:24 2012 -0800"
      },
      "message": "Merge \"First pass at implementing Canvas.drawPosText() in GL\""
    },
    {
      "commit": "eb9a5367e8f0e970db8509ffb2584f5376bc62ed",
      "tree": "b1edb8a663363a150fa25545f035372defbe7b70",
      "parents": [
        "d1d4bb70704e8f37d0823837eacdae21ebe0ed05"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 17 17:39:26 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 17 17:39:26 2012 -0800"
      },
      "message": "First pass at implementing Canvas.drawPosText() in GL\n\nChange-Id: Ia3ac347e95d57eb86c63045156c8dbc0572b03cb\n"
    },
    {
      "commit": "1be4afecb752559092654c0e9f4ca302b6d04e9c",
      "tree": "797734f3693ef5ef035837fbd75d525024fd5253",
      "parents": [
        "d33f97f1965b34aae673585ad4734b536c3894ef",
        "9bc8358ddaa01c3490f9709991989633a6a3dd42"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 17 17:35:03 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 17:35:03 2012 -0800"
      },
      "message": "Merge \"audio framework: manage stream volume per device\""
    },
    {
      "commit": "d33f97f1965b34aae673585ad4734b536c3894ef",
      "tree": "b3290c21197e83ea5cb64dc0b2b79bfe03f77418",
      "parents": [
        "0764dee89cc82dd53196cce2865d3cabafed208f",
        "d1d4bb70704e8f37d0823837eacdae21ebe0ed05"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 17 17:33:15 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 17:33:15 2012 -0800"
      },
      "message": "Merge \"Free optimization\""
    },
    {
      "commit": "d1d4bb70704e8f37d0823837eacdae21ebe0ed05",
      "tree": "72807f437e3a425a690bfcdf7a137ab704ca8663",
      "parents": [
        "62b6eaa7f3a8111311a7ee097f278eb55865a499"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 17 17:31:27 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 17 17:31:27 2012 -0800"
      },
      "message": "Free optimization\n\nUsing the TextLayoutCache with the GL renderer should help...\n\nChange-Id: I73a19be040165212839e2a40d4183e998f9dfb7f\n"
    },
    {
      "commit": "0764dee89cc82dd53196cce2865d3cabafed208f",
      "tree": "0df18f68aea7108f7e0f208077335b078d5af4dc",
      "parents": [
        "fa326d1c460dc49692bb0e6865ddb560b7270fd8",
        "8a78fd4d9572dff95432fcc4ba0e87563415b728"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 17 17:25:56 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 17:25:56 2012 -0800"
      },
      "message": "Merge \"AccessibilityEvent/AccessibilityNodeInfo class name property should be set to only framework classes.\""
    },
    {
      "commit": "5aa73ae58f049379a97bc86add541f27170c02a4",
      "tree": "d76f786422c0a173127888d180d4257e70af3eea",
      "parents": [
        "c0cb3dc2c16883f19bf1caf652b2fcdb55a1a856"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 13 15:29:21 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 17 17:07:10 2012 -0800"
      },
      "message": "Improve heuristics for orientation detection.\n\n1. Except as otherwise indicated, orientation change happens once\n   the predicted rotation has been stable for 40ms.  Noise is\n   suppressed by a low-pass filter with a 200ms time constant which\n   seems to be about as small as is practical given the quality\n   of the sensor data.\n\n2. If the magnitude exceeds a threshold (excessive noise or freefall),\n   resets the predicted orientation.\n   Doesn\u0027t happen very often even when shaking the device.\n   This heuristic mainly protects the detector from spurious tilt due\n   to inaccurate determination of the gravity vector.\n\n3. If the device was previously in a flat posture (on a table for at\n   least 1000ms), then it must move out of that posture for at least\n   500ms before the next orientation change will happen.\n   This heuristic suppresses most spurious rotations that happen while\n   picking up the device.\n\n4. If the device is tilted away from the user by 20 degrees within\n   a span of 300ms, the device is said to be swinging and at least\n   300ms must elapse after the device stops swinging before the\n   next orientation change will happen.\n   This heuristic suppresses some but not all spurious rotations that\n   happen while putting down a device.  Unfortunately, this heuristic\n   sometimes triggers a false positive when turning the device very\n   rapidly due to accelerometer noise.  The 300ms pause is a compromise\n   so that occasional mispredicted swings don\u0027t significantly delay\n   the rotation.\n\nBug: 5796249\nChange-Id: Id7b36c4c563e35b70d6a7ac36d04f3c3d6ea5811\n"
    },
    {
      "commit": "fa326d1c460dc49692bb0e6865ddb560b7270fd8",
      "tree": "438789180a6408f68201fcf5f8a78ad2a1f5725a",
      "parents": [
        "48592a3d212b64dabb4b4b6fdf52c68fc857e721",
        "b91b2682c399d5a074a5e73c89a18f4faf25ce0c"
      ],
      "author": {
        "name": "Tadashi G. Takaoka",
        "email": "takaoka@google.com",
        "time": "Tue Jan 17 16:57:56 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 16:57:56 2012 -0800"
      },
      "message": "Merge \"Use EditorInfo.IME_FLAG_FORCE_ASCII instead of privateImeOptions\""
    },
    {
      "commit": "0632bad8bad41bc44184596478ec2d203d52096f",
      "tree": "43aa40695d8efeeeef9b90c2fc90baff395a1ada",
      "parents": [
        "73d27c3d46ce9a19c0cc358d0b2788f1f51706d7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 12:20:54 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 16:25:17 2012 -0800"
      },
      "message": "Track volume cleanup\n\nAlways read and write track volumes atomically. In most places this was\nalready being done, but there were a couple places where the left and\nright channels were read independently.\n\nChanged constant MAX_GAIN_INT to be a uint32_t instead of a float.\nIt is always used as a uint32_t in comparisons and assignments.\nUse MAX_GAIN_INT in more places.\n\nNow that volume is always accessed atomically, removed the union\nand alias for uint16_t volume[2], and kept only volumeLR.\n\nRemoved volatile as it\u0027s meaningless.\n\nIn AudioFlinger, clamp the track volumes read from shared memory\nbefore applying master and stream volume.\n\nChange-Id: If65e2b27e5bc3db5bf75540479843041b58433f0\n"
    },
    {
      "commit": "dc6720f34bf5c1de7ff5001fddd1958e41926761",
      "tree": "103f1501477045fe07320f9ebbbd19f19ceba483",
      "parents": [
        "dacbf67ab915fa8b987f6fb9f044160af92652cd"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Fri Jan 13 09:38:44 2012 -0800"
      },
      "committer": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Tue Jan 17 16:14:44 2012 -0800"
      },
      "message": "docs: adding rs api docs\n\nChange-Id: Ib56ee177439e9c124d0ac4053ed4173f8a4be1aa\n"
    }
  ],
  "next": "48592a3d212b64dabb4b4b6fdf52c68fc857e721"
}
