)]}'
{
  "log": [
    {
      "commit": "ba0ee8fce6e62154593c5b5bad982f356b28d35e",
      "tree": "364034ecc03048429ec1e801763a7f8975f92970",
      "parents": [
        "7725180c646d1976a2a2097735862a75ec47c544"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Wed Apr 25 14:02:21 2012 -0700"
      },
      "committer": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Wed Apr 25 14:02:21 2012 -0700"
      },
      "message": "Make Advanceable a public API."
    },
    {
      "commit": "9ca10c8c3c94151889f6906e2d239a978e8b473b",
      "tree": "f0cf122379ef217f0d205886612912b7e3557911",
      "parents": [
        "2c8e19e81fb930fbb4d353c91ca0852fe91d8166",
        "b7ff3255c6d4e12f9d2334e3bbec0a125b7b09dc"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Apr 24 19:27:13 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 24 19:27:13 2012 -0700"
      },
      "message": "Merge \"Adding explicit text traversal granularities and actions for web navigation.\""
    },
    {
      "commit": "2c8e19e81fb930fbb4d353c91ca0852fe91d8166",
      "tree": "f705b6da91491542843042b2db0f814b62324c85",
      "parents": [
        "38cb84fd4b39c08cbd5b65b7383e712b9f476e3f",
        "61a5b0160d9f2e53ef4d4b451212a63032dad32d"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Tue Apr 24 19:06:14 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 24 19:06:14 2012 -0700"
      },
      "message": "Merge \"New API to allow third-party apps to bind widgets\""
    },
    {
      "commit": "b7ff3255c6d4e12f9d2334e3bbec0a125b7b09dc",
      "tree": "aff20ff88ba5de38bd883d37cc858ef79e16fbf6",
      "parents": [
        "76f287e416ded85734b610f316e38d243d2ddb09"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Apr 24 18:40:07 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Apr 24 18:49:15 2012 -0700"
      },
      "message": "Adding explicit text traversal granularities and actions for web navigation.\n\n1. The granularities for traversing the text content of an accessibility\n   node info are now predefined constants and custom ones will not be\n   supported. This is the simplest solution - we can always add namespaced\n   user defined ones (unlikely).\n\n2. Added actions for traversing web content. These actions can be used by\n   an accessibility service to transparently drive the JavaScript based\n   screen reader that is used for handling web content.\n\n3. Added a new accessibility event type for traversing the content of a\n   view. This event is needed to announce to the user what is the next\n   element, i.e. the one next to the cursor, after the view\u0027s text was\n   traversed.\n\nbug:5932640\nbug:6389591\n\nChange-Id: I144647da55bc4005c64f89865ef333af8359e145\n"
    },
    {
      "commit": "61a5b0160d9f2e53ef4d4b451212a63032dad32d",
      "tree": "1a76754e0129d3074130c3563e5933eadb96e711",
      "parents": [
        "bdb1c4067c2453672652730d12466dc17ff4a120"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Fri Apr 13 10:39:45 2012 -0700"
      },
      "committer": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Tue Apr 24 17:25:08 2012 -0700"
      },
      "message": "New API to allow third-party apps to bind widgets\n\nChange-Id: I1a3761c1a0f557a32d4d3bdd0207567fec918ba7\n"
    },
    {
      "commit": "0430ce908510f501276e7f588ba5c34d33a9d27a",
      "tree": "84c2d51953e9e51c6e25d0dc4417dd79bc6149f9",
      "parents": [
        "d9a6042fd2a1367f60ae1b7574407e36f1f79a18",
        "76f287e416ded85734b610f316e38d243d2ddb09"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Apr 24 16:08:05 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 24 16:08:05 2012 -0700"
      },
      "message": "Merge \"Removing hierarchical accessibility focus directions.\""
    },
    {
      "commit": "c1da08f1aea42d958c0dd245f1d58345e43eb323",
      "tree": "a595b6ae63bf197f5bc5bdc99c1868b31d9970e9",
      "parents": [
        "e29ccb0d678c712c71bf73f1c66626feff4fa346",
        "60309fc7bb95c9b3fc3e0ed60aa1eeb35bd13a68"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Tue Apr 24 15:13:03 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 24 15:13:03 2012 -0700"
      },
      "message": "Merge \"Expose Context.NSD_SERVICE\""
    },
    {
      "commit": "60309fc7bb95c9b3fc3e0ed60aa1eeb35bd13a68",
      "tree": "f7294b77bcba0220b3924a18f86ec459fb139411",
      "parents": [
        "a8d6ddee98e09a68030f4226b94f631e3b4c83c1"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Tue Apr 24 14:52:37 2012 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Tue Apr 24 14:57:46 2012 -0700"
      },
      "message": "Expose Context.NSD_SERVICE\n\nMissed exposing Context.NSD_SERVICE for the network service\ndiscovery API\n\nChange-Id: I38cfa93e923286072ded05b707d31cd4db7ff7d4\n"
    },
    {
      "commit": "30a2f7422297f530565ec5ae274efbea967739e3",
      "tree": "cfe2aee294d19e5dd4a18e01e7c9928b13e6119a",
      "parents": [
        "53fd8e84c701048d4d30bb885656eab334a4e772",
        "75b1c3011be727acbc862d6684299709756a33bd"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Apr 24 13:57:12 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 24 13:57:12 2012 -0700"
      },
      "message": "am 75b1c301: am ed11920c: am 60247737: Merge \"Fix build - re-generate current.txt\"\n\n* commit \u002775b1c3011be727acbc862d6684299709756a33bd\u0027:\n  Fix build - re-generate current.txt\n"
    },
    {
      "commit": "76f287e416ded85734b610f316e38d243d2ddb09",
      "tree": "1e3c5cca255e60a987a7836b69e39beb3dcff177",
      "parents": [
        "b983e27af47b6a3a6b13af0d3dd64b163f540efd"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Apr 23 11:02:36 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Apr 23 20:48:24 2012 -0700"
      },
      "message": "Removing hierarchical accessibility focus directions.\n\n1. The accessibility focus directions are not needed since an\n   accessibility service just get the root, first child, next\n   sibling, previous sibling and call execute the action to\n   give it accessibility focus. Now the accessibility node\n   info tree is properly ordered taking into account layout\n   manager directions for both layout manager that we report\n   and ones that we have determined as not important for\n   accessibility. Also the position of a node info are ordered\n   properly based on their coordinates after all transformations\n   as opposed to child index.\n\nbug:5932640\n\nChange-Id: I994a8297cb1e57c829ecbac73a937c2bcbe0bac7\n"
    },
    {
      "commit": "3c464bdefe37f75153e8a8c978c3457ae4d1f37e",
      "tree": "ef28b9c695380a40fb5e2fc3effb786b407edafb",
      "parents": [
        "03d2f292a63f3600f1f913f53f19bf783f05ef2f"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Mon Apr 23 13:17:08 2012 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Mon Apr 23 13:18:06 2012 -0700"
      },
      "message": "Add TaskStackBuilder#addParentStack(ComponentName)\n\nLet TaskStackBuilder discover a parent activity stack by ComponentName\nin addition to explicit Activity classes.\n\nChange-Id: I18b8378548ed1d6ef033800e6a3e11ab965d07e5\n"
    },
    {
      "commit": "7838025812f30f466ee502d3cbb92923312524da",
      "tree": "4cdc79bb47aa9d99ed8e8a3c862aa7868342e11c",
      "parents": [
        "a2c68198b13e416278e9bbe1d7f0abab4033d245",
        "b11499d2db0ba9782363ec6bf714b583e8585212"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 20 20:16:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 20 20:16:25 2012 -0700"
      },
      "message": "Merge \"Make InputEvent.getEventTime() public.\""
    },
    {
      "commit": "b11499d2db0ba9782363ec6bf714b583e8585212",
      "tree": "fd096132eaeae5133fbfd61c42810ca6a8da5987",
      "parents": [
        "5bbd4b4f5fc19302fa017ad6afee6eb2d489d91a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 20 19:54:22 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 20 20:11:19 2012 -0700"
      },
      "message": "Make InputEvent.getEventTime() public.\n\nAlso add new methods to access the event timestamp in\nnanoseconds.  Hidden for now but useful for prototyping.\n\nBug: 6374616\nChange-Id: I7030734a908e8e31a17a356debc269db7c0f0783\n"
    },
    {
      "commit": "d6e716dce95089e3acceef2267175d1dba1b4035",
      "tree": "8cb80426110aac3a3eaedb070833251d8ab441ab",
      "parents": [
        "122b2c32dea573a3efbd0d608a70b7cd169d99dd"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Apr 20 18:36:11 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Apr 20 18:40:21 2012 -0700"
      },
      "message": "Adding a couple of missing accessibility focus directions.\n\nChange-Id: Id404155591cf3fe5f9bef3ed8fe0d03908944ce1\n"
    },
    {
      "commit": "72de2062485f711c9a2291c204fd2c0fb6c4e20f",
      "tree": "b2bcb7fed59a6c276f58d401ef173ff409ef9ac0",
      "parents": [
        "4d7349bb6df5a01ba451aa1abd4c9f6349a57016",
        "aa780c110922148a6a4ba06734bb2b0bb8c98f93"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Apr 20 15:26:24 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 20 15:26:24 2012 -0700"
      },
      "message": "Merge \"Adding support for traversing the content of a node info at granularity.\""
    },
    {
      "commit": "aa780c110922148a6a4ba06734bb2b0bb8c98f93",
      "tree": "8709da20df481fea35219769285546802407ca9f",
      "parents": [
        "fefd20e927b7252d63acb7bb1852c5188e3c1b2e"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Apr 19 23:01:39 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Apr 20 15:12:13 2012 -0700"
      },
      "message": "Adding support for traversing the content of a node info at granularity.\n\n1. A view that creates an accessibility node info may add to the info\n   a list of granularity labels. These are granularities by which the\n   source view can iterate over its content. For example a text view\n   may support character, word link while a web view may additionally\n   support buttons, tables, etc. There are actions on accessibility\n   node info to go to the next/previous at a given granularity which\n   is passesed as an argument.\n\n2. Added Bundle argument to the APIs for performing accessibility\n   actions. This is generic and extensible.\n\nbug:5932640\n\nChange-Id: I328cbbb4cddfdee082ab2a8b7ff1bd7477d8d6f9\n"
    },
    {
      "commit": "987e982b6d29f005f85e3a0ab53ae80fbbd0a825",
      "tree": "087addc9fb34e9efc5bbf9c9398e565858ae1694",
      "parents": [
        "362bcb06ad92c561cc23410e59e11ead7bf38e22",
        "74a78b0f6e8c07cfc7da8f043987f6de0648bc05"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 20 12:15:31 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 20 12:15:31 2012 -0700"
      },
      "message": "Merge \"Add the ability to query the amount of cached data to MediaExtractor.\""
    },
    {
      "commit": "74a78b0f6e8c07cfc7da8f043987f6de0648bc05",
      "tree": "666ffc93f47d0f95cf0ed11bfa07e395236db82f",
      "parents": [
        "e17fc7d6693ed36058a880c69332f642ad48cf18"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 16:24:32 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 20 11:57:26 2012 -0700"
      },
      "message": "Add the ability to query the amount of cached data to MediaExtractor.\n\nChange-Id: I47ae60bc6fb8d88979c1f0d650b6ac528e811371\nrelated-to-bug: 6364341\n"
    },
    {
      "commit": "d6d6d35c541088b5f21c489d41a2f5917c508ffe",
      "tree": "8b538a439c85d7f8d755ef6d043bf32a551bef3a",
      "parents": [
        "e17fc7d6693ed36058a880c69332f642ad48cf18",
        "a0c2eb27b408660b02fa248943166d6c7e447908"
      ],
      "author": {
        "name": "Alex Sakhartchouk",
        "email": "alexst@google.com",
        "time": "Fri Apr 20 09:40:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 20 09:40:55 2012 -0700"
      },
      "message": "Merge \"Deprecate\""
    },
    {
      "commit": "e30df7744c2ff5c6f23ed7d6fb2cd229188c32f8",
      "tree": "542de24e4353eb817f9d31753e0b60763d192f57",
      "parents": [
        "b0668e4d1964cea8d54f9bc49445ddd0e4530ba3",
        "fefd20e927b7252d63acb7bb1852c5188e3c1b2e"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Apr 19 22:09:27 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 22:09:27 2012 -0700"
      },
      "message": "Merge \"Adding an opt-in mechanism for gesture detection in AccessibilityService.\""
    },
    {
      "commit": "fefd20e927b7252d63acb7bb1852c5188e3c1b2e",
      "tree": "1c61fca48a8221e93aa14f16da9881560be69313",
      "parents": [
        "749e796eb3a42e21613a3b360000373601a8f50d"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Apr 19 21:44:35 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Apr 19 22:08:42 2012 -0700"
      },
      "message": "Adding an opt-in mechanism for gesture detection in AccessibilityService.\n\n1. An accessibility service has to explicitly opt in to be notified\n   for gestures by the system. There is only one accessibility service\n   that handles gestures and in case it does not handle a gesture\n   the system performs default handling. This default handling ensures\n   that we have gesture navigation even if no accessibility service\n   would like to participate/customize the interaction model.\n\nbug:5932640\n\nChange-Id: Id8194293bd94097b455e9388b68134a45dc3b8fa\n"
    },
    {
      "commit": "dd184f9fb1cca51e2840ece187126caf933ab409",
      "tree": "db4940967e2837329afbbf3c891b25cd2c120e0e",
      "parents": [
        "8c44c181dea290c86f591c44f8955682512a136c",
        "e8724c82ab1479f13c85a2c6219841e1fd95f2d2"
      ],
      "author": {
        "name": "Winson Chung",
        "email": "winsonc@google.com",
        "time": "Thu Apr 19 18:45:37 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 18:45:37 2012 -0700"
      },
      "message": "Merge \"Adding callback for widget size changed, and potentially other extra info\""
    },
    {
      "commit": "5dd32fbcbf750b806175bc8648b6fae280dad576",
      "tree": "e9f1147b67c79fae9dcaa1358596f75f22b08462",
      "parents": [
        "bac7ef0be10c2bc4d84cbb6e401dc5f0634788d0",
        "7df7d2022d9bebc21a13dcb7ddacaa61f9c2e38e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 19 18:12:05 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 18:12:05 2012 -0700"
      },
      "message": "Merge \"Fix issue #4499996: LiveWallpaperPreview activity intent filter\""
    },
    {
      "commit": "e8724c82ab1479f13c85a2c6219841e1fd95f2d2",
      "tree": "f8886ae47bb75369819bc40cfe7aa393afeb638c",
      "parents": [
        "f2740b347bce35cc68dfdddfe2da3a23e00a518e"
      ],
      "author": {
        "name": "Adam Cohen",
        "email": "adamcohen@google.com",
        "time": "Thu Apr 19 17:11:40 2012 -0700"
      },
      "committer": {
        "name": "Adam Cohen",
        "email": "adamcohen@google.com",
        "time": "Thu Apr 19 18:01:46 2012 -0700"
      },
      "message": "Adding callback for widget size changed, and potentially other extra info\n\nChange-Id: I57738c92b6a0ba68ae66b19a533559470c64e6f1\n"
    },
    {
      "commit": "7df7d2022d9bebc21a13dcb7ddacaa61f9c2e38e",
      "tree": "ba66ba6c9223f2c53786cc8bcf086af0ba885e56",
      "parents": [
        "661f362a2c531c46fdce5359b176a30ba7d16e1f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 19 18:00:04 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 19 18:00:04 2012 -0700"
      },
      "message": "Fix issue #4499996: LiveWallpaperPreview activity intent filter\n\nChange-Id: I5fc71503d2c59c907da954dbda3587394e6405bf\n"
    },
    {
      "commit": "caf7f3d1fc28f74f0782438cd5a91aef7a9dedb5",
      "tree": "686abd1a18733cb140aa147dfcfc2de92b78fe06",
      "parents": [
        "f0c4c658488824707c206551fd1ccc0a0781031e",
        "0ea6dad65eb77f9347a59704b1f8a019cfc9e01f"
      ],
      "author": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Thu Apr 19 17:01:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 17:01:21 2012 -0700"
      },
      "message": "Merge \"Add websettings API for file origin policy.\""
    },
    {
      "commit": "0ea6dad65eb77f9347a59704b1f8a019cfc9e01f",
      "tree": "42f80084648ffd22b98fb610d72b19e7d649c928",
      "parents": [
        "3d275af3c3996f80816142628c380f79a9606c51"
      ],
      "author": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Thu Mar 29 18:19:01 2012 -0700"
      },
      "committer": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Thu Apr 19 16:38:18 2012 -0700"
      },
      "message": "Add websettings API for file origin policy.\n\nBug: 6212665\n\nAdd the API and change the default behavior for Jelly Bean+.\n\nChange-Id: I9a83f510675023c36e2e72c4a69ad082d8124a23\n"
    },
    {
      "commit": "a0c2eb27b408660b02fa248943166d6c7e447908",
      "tree": "932a25b9e5be808ec05f9913ae876ebf8a5b692e",
      "parents": [
        "cada1ae71781795c10a359f1e11ad5a3f125cf67"
      ],
      "author": {
        "name": "Alex Sakhartchouk",
        "email": "alexst@google.com",
        "time": "Thu Apr 19 16:30:58 2012 -0700"
      },
      "committer": {
        "name": "Alex Sakhartchouk",
        "email": "alexst@google.com",
        "time": "Thu Apr 19 16:30:58 2012 -0700"
      },
      "message": "Deprecate\n\nChange-Id: Idad2c5ad4f8a30f8cc60d88318f2e1809866d309\n"
    },
    {
      "commit": "f0c4c658488824707c206551fd1ccc0a0781031e",
      "tree": "c6117981dbc20b180b85e82de72210d52fac8aef",
      "parents": [
        "9dd4a6c7a4ed45ce8ffae73ce9ac6dac51943581"
      ],
      "author": {
        "name": "Michael Chan",
        "email": "chanm@google.com",
        "time": "Thu Apr 19 16:27:46 2012 -0700"
      },
      "committer": {
        "name": "Michael Chan",
        "email": "chanm@google.com",
        "time": "Thu Apr 19 16:29:19 2012 -0700"
      },
      "message": "Fix build\n\nChange-Id: I929433778c465bc123d8aafe5e0bbd2fd43f7b53\n"
    },
    {
      "commit": "27e2fa43dbb4ebf2824a21a6c5f05c8b45513f52",
      "tree": "30ecee7d2d4b7c2fa6e24aee6a1f9d83c3fda744",
      "parents": [
        "59a422e90035ce5df45c526607db2d3303e3112e",
        "37960c7f58197404d2331a0ea81194ffc98552c1"
      ],
      "author": {
        "name": "Michael Chan",
        "email": "chanm@google.com",
        "time": "Thu Apr 19 15:52:17 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 15:52:17 2012 -0700"
      },
      "message": "Merge \"Added columns to store package name and uri to a custom app\""
    },
    {
      "commit": "37960c7f58197404d2331a0ea81194ffc98552c1",
      "tree": "670dac35695e7170abc675b1bb2612b8ef86f10f",
      "parents": [
        "b7c30a847ae3526cee28e2e3e96b010a6fe7961c"
      ],
      "author": {
        "name": "Michael Chan",
        "email": "chanm@google.com",
        "time": "Thu Apr 19 00:18:13 2012 -0700"
      },
      "committer": {
        "name": "Michael Chan",
        "email": "chanm@google.com",
        "time": "Thu Apr 19 15:43:45 2012 -0700"
      },
      "message": "Added columns to store package name and uri to a custom app\n\nthat provides a richer experience for an event.\n\nBug: 6325441\nChange-Id: I7497a1508d196ec4ef97c60100278a70c424d9e2\n"
    },
    {
      "commit": "6ec0c6afafd9bad5e4c33578e9355997a280649c",
      "tree": "2c4a3b41943d92081d49db4f534983f09d7ad721",
      "parents": [
        "661f362a2c531c46fdce5359b176a30ba7d16e1f",
        "232ebad9ed1d81d5eab12e0b41cbe522e9a3c320"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Apr 19 15:12:35 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 15:12:35 2012 -0700"
      },
      "message": "Merge \"Expose NO_SERVICE_REQUESTS error condition\""
    },
    {
      "commit": "661f362a2c531c46fdce5359b176a30ba7d16e1f",
      "tree": "3489c48288e41e7d7896662c1240ef181c29e6b5",
      "parents": [
        "675035d77403080e65308e2d37db624d4c4b8c78",
        "68c33ca7ce1f142eb5f1e1f90118aeba4c9db1e3"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 19 15:01:36 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 15:01:36 2012 -0700"
      },
      "message": "Merge \"Add new API to find smallest/largest screen size.\""
    },
    {
      "commit": "232ebad9ed1d81d5eab12e0b41cbe522e9a3c320",
      "tree": "2f3663b87a65076bf039cb62e9127a0d078f2a6f",
      "parents": [
        "c5cbcb51baaf2e9e61f3bdbd5ef97a05aac25010"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Apr 19 15:01:18 2012 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Apr 19 15:01:18 2012 -0700"
      },
      "message": "Expose NO_SERVICE_REQUESTS error condition\n\nChange-Id: I45214557579fc82faa93a41d22c0890a218b091e\n"
    },
    {
      "commit": "68c33ca7ce1f142eb5f1e1f90118aeba4c9db1e3",
      "tree": "f598517d463bc750d7081e2bd84b1e325c254f32",
      "parents": [
        "1b965941713a395dc8003cf8ee29a40f92dd77aa"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 19 14:51:25 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 19 14:55:13 2012 -0700"
      },
      "message": "Add new API to find smallest/largest screen size.\n\nChange-Id: I790801fceaf84ee2e3b1c9d32828285ad3231d0e\n"
    },
    {
      "commit": "0d1ba1505695815907c34339c6f80c95d6fc6b40",
      "tree": "af679af21fd5ee24128a54c0e1ba99d11bfe9cbb",
      "parents": [
        "dca2e81b7d2d20c96488888d5b706c9c9e22f1c8",
        "bfc56f497de0d18125366a02a93e61cdc0891be4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 13:51:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 13:51:10 2012 -0700"
      },
      "message": "Merge \"DRM errors signaled by the CryptoPlugin are now visible to MediaCodec clients\""
    },
    {
      "commit": "bfc56f497de0d18125366a02a93e61cdc0891be4",
      "tree": "6ac44fbe8d011cfd62c1743354ace0541e3d1d26",
      "parents": [
        "5cef554cc857b2b542d2c62f8cd0c36d62e1bb9b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 12:47:07 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 13:42:14 2012 -0700"
      },
      "message": "DRM errors signaled by the CryptoPlugin are now visible to MediaCodec clients\n\nthrough a custom exception \"MediaCodec.CryptoException\".\n\nChange-Id: I30215e9e13bab68abad23e27dcead7c1accd07f1\nrelated-to-bug: 6365261\n"
    },
    {
      "commit": "c198cd1bb8aa6406362db3f75d7daaf07accae53",
      "tree": "6a49e4acc5db147208bd3b33001cacd33e8b1f93",
      "parents": [
        "5e54210810c61cd843d0307e91c2c6a0f1b655d6"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Apr 19 12:29:56 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Apr 19 12:29:56 2012 -0700"
      },
      "message": "Fix build - re-generate current.txt\n\nChange-Id: Id6a3100e4aaed473172237ab368e5aeeb7ccf577\n"
    },
    {
      "commit": "c9496495baa031d1e6af9fd438c7d007a5d59b4e",
      "tree": "0884ae44c9466d17c3675b93f640960ec931edbb",
      "parents": [
        "f40a02f85f112e4b78fcea6f0d0390bfad15c2e2",
        "951794616f0d275faa077b25cb5979e401b0324d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 19 10:52:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 10:52:25 2012 -0700"
      },
      "message": "Merge \"Unhide Visualizer scaling mode definitions and methods\""
    },
    {
      "commit": "951794616f0d275faa077b25cb5979e401b0324d",
      "tree": "375e3260017e5f2387a845de91651b28fac700f0",
      "parents": [
        "5cef554cc857b2b542d2c62f8cd0c36d62e1bb9b"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 19 09:56:59 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 19 10:34:50 2012 -0700"
      },
      "message": "Unhide Visualizer scaling mode definitions and methods\n\nUnhide Visualizer set/get methods, and associated constant\n definitions.\n\nChange-Id: Iaafe5f7a2f1273f72c3f7f842b416b93614dfa65\n"
    },
    {
      "commit": "6db653355bbf79f4bfe666fb96262c0df2ec34aa",
      "tree": "c2adbb3beeb52b139ad5a273e4fc0f9c3c4b3231",
      "parents": [
        "7b5f22e11c37ef481ca5bc2b7d07c3c33c6ad3e8",
        "ff2577da370f15b8288f547575c28393477d57b1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 19 10:16:38 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 10:16:38 2012 -0700"
      },
      "message": "Merge \"unhide API for synchronous audio capture.\""
    },
    {
      "commit": "75e91f77160e6f48dae780cc58df42a2bc896c1e",
      "tree": "cdf0c6e5835d1bcbc85907c7f2e0a35777eb9033",
      "parents": [
        "66e69db6d99dd1c1a3906ae1b941ea13703f73b5",
        "6c07ba8183edc593527335238a2c6083392df7bc"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Apr 19 09:57:24 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 09:57:24 2012 -0700"
      },
      "message": "Merge \"Add network service discovery broadcast\""
    },
    {
      "commit": "6c07ba8183edc593527335238a2c6083392df7bc",
      "tree": "5e324bfb7013c760ea5353cce8f2d0abe8a972fe",
      "parents": [
        "3ef889bf561e59561ff2c6c4b2ffb586b9c5af5c"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Tue Apr 17 23:23:42 2012 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Apr 19 09:54:40 2012 -0700"
      },
      "message": "Add network service discovery broadcast\n\nAllows apps to know if user has the feature turned off\n\nChange-Id: I2d2fecb148eb4e48eb4aea51d1d7643a82df5c52\n"
    },
    {
      "commit": "ff2577da370f15b8288f547575c28393477d57b1",
      "tree": "1dbbf258903a95ac2813f2305692d6dca00c9990",
      "parents": [
        "a46f7680f159571a3ca9fa5928cae2fa6309ee3a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 03 15:25:06 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 19 08:59:20 2012 -0700"
      },
      "message": "unhide API for synchronous audio capture.\n\nunhide MediaSyncEvent class and AudioRecord.startRecording() method with synchronization\nevent allowing to start audio capture upon occurence of a specific event.\nSo far the only event defined is playback presentation complete but more events and synchronized\nplayback/capture methods could be defined in the future.\n\nChange-Id: If05fc6cd125dd9afad451727f792a3fd9e916bef\n"
    },
    {
      "commit": "5df19f082621a0404c801858865bea0a9dec117d",
      "tree": "9e262a2b2f85c65b10204a3b0390bb137967a493",
      "parents": [
        "3dfc82b5677a77e805511c263197c95c52a1665e",
        "8dfc10571a83389593fc11b92fbf9fc1f22c9f21"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 19 08:42:40 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 08:42:40 2012 -0700"
      },
      "message": "Merge \"unhide audio pre processing API.\""
    },
    {
      "commit": "3c3b5b5e0bc05564e0f8ecc680ace523e11bd923",
      "tree": "2eb0ae1b787bd7402a21b3441b77cbedd75af888",
      "parents": [
        "1ee4139fc3e82304755bbd92a7aa1323fd8a3534",
        "ac13cc06ee35a9890d35af25b6cd2df2841e1384"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Apr 18 23:13:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 18 23:13:10 2012 -0700"
      },
      "message": "Merge \"Unhide MediaColumns.WIDTH and MediaColumns.HEIGHT.\""
    },
    {
      "commit": "ac13cc06ee35a9890d35af25b6cd2df2841e1384",
      "tree": "898b5da151cee5d04f6535754f5273baa232b5ee",
      "parents": [
        "83cb5807b0eaa36b417ce5c978e4e460b1fcc9e2"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Apr 19 12:09:09 2012 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Apr 19 12:11:17 2012 +0800"
      },
      "message": "Unhide MediaColumns.WIDTH and MediaColumns.HEIGHT.\n\nbug:5224359\nChange-Id: I3dcaa2ed383e12ae308b28db45cbe8e503610cdc\n"
    },
    {
      "commit": "6b31880838196806dff991551f197684b5809d8b",
      "tree": "0af312999cba29be003401630452534086d12509",
      "parents": [
        "08ce91a1a4c4b69a30a46095ed701d804dd6302e"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Fri Apr 13 14:05:19 2012 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 18 20:53:24 2012 -0700"
      },
      "message": "Remove intruder alert APIs from JB.\n\nChange-Id: I27042d604fbe15879e7b7aaaac860db2d1efa47f\n"
    },
    {
      "commit": "8dfc10571a83389593fc11b92fbf9fc1f22c9f21",
      "tree": "c3740712e573060419fe181429c8301e6e0ba86f",
      "parents": [
        "83cb5807b0eaa36b417ce5c978e4e460b1fcc9e2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 10 16:03:14 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 18 20:26:43 2012 -0700"
      },
      "message": "unhide audio pre processing API.\n\nUnhide APIs for Noise Suppressor(NS), Acoustic Echo Canceler (AEC) and\nAutomatic Gain Control (AGC) audio pre processings.\n\nAlso unhide getAudioSessionId() method on AudioRecord.\n\nChange-Id: I788f7a0724b152cc98c8167d9434e64c12bada95\n"
    },
    {
      "commit": "2c23a14a3b86f84ad94725dd402985eb228e87db",
      "tree": "907d0889bcbc026623d70a8c247dc4954cd6be77",
      "parents": [
        "b7c30a847ae3526cee28e2e3e96b010a6fe7961c",
        "0846e29d0b5640cfad4496c8484fb9aaa2ba4ccf"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 18 18:55:24 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 18 18:55:24 2012 -0700"
      },
      "message": "Merge \"Adding API for getting the root node info in the active window.\""
    },
    {
      "commit": "0846e29d0b5640cfad4496c8484fb9aaa2ba4ccf",
      "tree": "3f9a052e6359be3a95621478b343bf16a1efed5e",
      "parents": [
        "005b83b0c62d3d0538f0d566b08bd457015ec661"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 18 18:47:13 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 18 18:50:57 2012 -0700"
      },
      "message": "Adding API for getting the root node info in the active window.\n\n1. This APIs is useful for accessibility services since very often\n   they want to get access to the root node in the current window\n   to determine where accessibility focus is and subsequently find\n   a next view to take accessibility focus.\n\nChange-Id: Ide5231f832d9ce2e9b14dc411dfd675f753a4edb\n"
    },
    {
      "commit": "f01d3dd710e8b86b3e2846af62835158fd4e0db1",
      "tree": "a644bb5682a50cb0585bc6052fb962d8794e5608",
      "parents": [
        "f35ea5d25b286e166bdc43a589a45b56b6358499",
        "005b83b0c62d3d0538f0d566b08bd457015ec661"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 18 14:14:37 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 18 14:14:37 2012 -0700"
      },
      "message": "Merge \"Adding some more gestures and actions for accessibility.\""
    },
    {
      "commit": "005b83b0c62d3d0538f0d566b08bd457015ec661",
      "tree": "d83728a70e5a25f14289fafd0654b2e35c2c07e6",
      "parents": [
        "b3830f6737bb17185e2e1c95f4dcde9ce82ac7e4"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Apr 16 18:17:17 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 18 13:43:55 2012 -0700"
      },
      "message": "Adding some more gestures and actions for accessibility.\n\n1. Added more gesture for accessibility. After a meeting\n   with the access-eng team we have decided that the current\n   set of gestures may be smaller than needed considering\n   that we will use four gestures for home, back, recents,\n   and notifications.\n\n2. Adding actions for going back, home, opening the recents,\n   and opening the notifications.\n\n3. Added preliminary mapping from some of the new gestures\n   to the new actions.\n\n4. Fixed a bug in the accessibility interaction controller\n   which was trying to create a handled on the main looper\n   thread which may be null if the queried UI is in the\n   system process. Now the context looper of the root view\n   is used.\n\n5. Fixed a bug of using an incorrect constant.\n\n6. Added a missing locking in a couple of places.\n\n7. Fixed view comparison for accessibilityt since it was\n   not anisymmetric.\n\nbug:5932640\nbug:5605641\n\nChange-Id: Icc983bf4eafefa42b65920b3782ed8a25518e94f\n"
    },
    {
      "commit": "91befdc0c4710234840cdfd853e7d30e8f9de62c",
      "tree": "e37fa5820ab6348549d7a59a342ad3ee70e7e55c",
      "parents": [
        "26fbf27ad1e9f9c26a82097fe306f07ec36e8410"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 18 12:19:51 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 18 12:19:51 2012 -0700"
      },
      "message": "Information required to decrypt buffers is now packaged into MediaCodec.CryptoInfo\n\nNew API on MediaExtractor to retrieve a CryptoInfo structure where applicable.\n\nChange-Id: I18edfc9ac56a4544c8f17cba24401b96dacbff7d\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "b9a6d4d052a7cc63b4753081f64628be3503681a",
      "tree": "f2ad9b5ab8c858785b11df84aff428b2d3925490",
      "parents": [
        "e1e874854ab8b73dc5f2346108cbfe90dabaea18",
        "879c5e07c019bbcd8647e60656d0749eae0467c3"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Apr 18 05:28:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 18 05:28:00 2012 -0700"
      },
      "message": "Merge \"New InboxStyle template for expanded notifications.\""
    },
    {
      "commit": "879c5e07c019bbcd8647e60656d0749eae0467c3",
      "tree": "06bee678b51fc99194eced4be0d8161598fd28cc",
      "parents": [
        "b4bc99e847d15f04c035d676e01ff85623565e0a"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Apr 17 16:46:51 2012 -0400"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Apr 17 23:41:58 2012 -0400"
      },
      "message": "New InboxStyle template for expanded notifications.\n\nBug: 6336834\nChange-Id: I67b273350b984673cbfb19267451a3782d0477fc\n"
    },
    {
      "commit": "37f1d29784ecedf8c1f1ac128c72ef3bfb5c7066",
      "tree": "5eaff719cb4f207dd45c6b76cd26346ed4c3bdd8",
      "parents": [
        "62d52f9ff8b57fcd5f7fc6e2373ec5851eb80757"
      ],
      "author": {
        "name": "Michael Chan",
        "email": "mchan@android.com",
        "time": "Tue Apr 17 18:40:51 2012 -0700"
      },
      "committer": {
        "name": "Michael Chan",
        "email": "mchan@android.com",
        "time": "Tue Apr 17 19:03:38 2012 -0700"
      },
      "message": "Added identity and namespace to Calendar Attendees\n\nBug: 6353721\nChange-Id: I8cf7a5bbeb5380320b9bb11875168bef4e180b31\n"
    },
    {
      "commit": "7dd4a536a125d5e9573e82c39581bf9ee3922424",
      "tree": "5b9927c533b1c28ce96751ac9d8f38521b28d315",
      "parents": [
        "c843642fbb76619520f960043adaa268e252a657"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Apr 16 13:35:09 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Apr 17 13:33:55 2012 -0700"
      },
      "message": "Adding new CHANGING transition to LayoutTransition.\n\nLayoutTransition used to depend on child views being added/removed or\nshown/hidden in the transition container. These evens would trigger animations\nto fade the child view as well as those to animate the side-affected changes\nto sibling views. This CL enables a new feature in LayoutTransition that\nenables animating any changes to the layout of the children in the container\nwhenever a layout occurs. For example, you can change the LayoutParams of a\nchild view and call requestLayout() to automatically animate those changes.\n\nThis capability is not enabled by default. To enable, call the new\nLayoutTransition.enableTransitionType(LayoutTransition.CHANGING) method.\n\nChange-Id: I4d07a3b36245353b2151f0dca4f75080ab6a4592\n"
    },
    {
      "commit": "453d98fc703a957cb7e9ee0d2ee97bf4ab781b00",
      "tree": "79580404a2c1dd888c683ce0f9645e9987953a61",
      "parents": [
        "3844067c3c6cca954250a734d8bd8dad673bb846"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Apr 17 12:46:15 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Apr 17 12:46:15 2012 -0700"
      },
      "message": "fix build - new current.txt\n\nChange-Id: Ia114d5f3fef2b84272237eded88c7908f65851f6\n"
    },
    {
      "commit": "87459dbc595100f345cadb480afaa98eb07c7445",
      "tree": "0d269a9b6d09c0f0781494fc68b3b462d4eb0498",
      "parents": [
        "d95ce04bdc92fe337c929c0dca9366fde7a564d2",
        "2952c5d03c26aec8f2aa2d69f20b47a7cc8f39e1"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 17 12:05:22 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 12:05:22 2012 -0700"
      },
      "message": "Merge \"MediaCrypto\u0027s constructor can throw RuntimeException.\""
    },
    {
      "commit": "120505424098538ed9dfb97bf29b1dd143715259",
      "tree": "013a25dbb9eb3e4ef197fb79ce5a2423b19cb845",
      "parents": [
        "2e3dec5aebb2020a9107e847659af5aaf7215f66",
        "8bf825f48fde77cb2feb8720aac17093581bb085"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Tue Apr 17 11:40:03 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 11:40:03 2012 -0700"
      },
      "message": "Merge \"Open p2p pre-association service discovery API\""
    },
    {
      "commit": "2e3dec5aebb2020a9107e847659af5aaf7215f66",
      "tree": "c08d5f030875103dbba110d315fef673c789b4b0",
      "parents": [
        "70eafab9050601f869c21bf3aebc4f58737b7026",
        "92784670c48759c0db604ddb95c05a7b9bdebed8"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Tue Apr 17 11:39:08 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 11:39:08 2012 -0700"
      },
      "message": "Merge \"Open network service discovery API\""
    },
    {
      "commit": "2952c5d03c26aec8f2aa2d69f20b47a7cc8f39e1",
      "tree": "a8eec3c0e77569d5aed2ef726e5cd410038fc4a2",
      "parents": [
        "901cb6160d694e18845be719cc3975444755ff59"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 17 11:23:06 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 17 11:24:11 2012 -0700"
      },
      "message": "MediaCrypto\u0027s constructor can throw RuntimeException.\n\nChange-Id: I5718e9abab0d1465882580e826747d6a78bdefb5\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "fbf7e1f343b4d61c48187adb123a4308e809a92d",
      "tree": "0bc62e4e60724dd475d9fd4575d992664b2ef376",
      "parents": [
        "55a28720fe7ecb100a8068d818c6055678e85ed5",
        "c7ee1b9369ffd7c21a70738056a82dc4238e7fc1"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Mon Apr 16 22:07:45 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 22:07:45 2012 -0700"
      },
      "message": "Merge \"Get rid of \"isSentenceLevelSpellCheckSupported\"\""
    },
    {
      "commit": "ac76e72272c957dc7609aa68224efa2d32c23cd0",
      "tree": "3fb89e515da0aabcfedddf871aa92ee0b1173c38",
      "parents": [
        "2c2ab0e07106942ee64dd66d6efa71e70b336b0d",
        "eabfb3a36e9469c5e219f92b39b7200104319185"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 16 17:34:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 17:34:25 2012 -0700"
      },
      "message": "Merge \"Add new scale-up window manager animation.\""
    },
    {
      "commit": "eabfb3a36e9469c5e219f92b39b7200104319185",
      "tree": "ef38c351e0d5f6b1a60b514c78a4396e3a2c20a6",
      "parents": [
        "455b7bb83ce4a12a72f5b8341eda19754d582293"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 16 16:28:22 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 16 17:32:50 2012 -0700"
      },
      "message": "Add new scale-up window manager animation.\n\nLike zoom thumbnail, but without the thumbnail.\n\nChange-Id: I9486dd204398b87c9e70ff0d05d03f4a22449cd6\n"
    },
    {
      "commit": "9704e78418a1ed9927ac2596a5c0084953dcb22b",
      "tree": "210fd93e313e4cd5bee2dfa86c06d0dda5cd2910",
      "parents": [
        "1c23ed621893c49db56a6d687112bdbaf8ef0200",
        "25157e458d6e10b027d1ba6b78b0487156c9f57a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 16 15:46:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 15:46:47 2012 -0700"
      },
      "message": "Merge \"Refactor SensorManager to move non-API bits into a subclass.\""
    },
    {
      "commit": "901cb6160d694e18845be719cc3975444755ff59",
      "tree": "1816c34ea24cf9a036d5b62b225d6f6607f8722b",
      "parents": [
        "0c0b004a496709140d40794ec407ab2d04ee7eeb",
        "07ea426e3ae8915ca6bf67135f523f42cd920af0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 16 14:06:05 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 14:06:05 2012 -0700"
      },
      "message": "Merge \"Unhide new media related java APIs.\""
    },
    {
      "commit": "d1661dcc90cb3efcad75e3fda778f3592bfc5b04",
      "tree": "f3fa0a122cc7e4a9e67742c91e7f3c4eafb03f38",
      "parents": [
        "70544533aec6b318ff1687c9eec0cb9e86ce1b1a",
        "33efb231cb92065c40c019319adae36abc413863"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Apr 16 13:21:53 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 13:21:53 2012 -0700"
      },
      "message": "Merge \"Unhide new SurfaceTexture \u0026 TextureView APIs\""
    },
    {
      "commit": "25157e458d6e10b027d1ba6b78b0487156c9f57a",
      "tree": "efa43a5f2f1ec18fef855b56c3f6b99442375c64",
      "parents": [
        "a5d552fc2bad6aea2087f56e88fb1ce836a79571"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 16 12:13:05 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 16 13:03:55 2012 -0700"
      },
      "message": "Refactor SensorManager to move non-API bits into a subclass.\n\nChanged the SensorManager class so that it only contains API-related\nbits including what\u0027s needed to support legacy sensors.  Mostly just\nmoved stuff around.  Making the class abstract is safe because\nit does not have a visible constructor in the API.\n\nOne minor change is that the cache of sensor type to sensor lists\nis now per instance of SensorManager instead of being static.\nWe can fix this if desired.\n\nAnother small change is that we bail out early from registerListener\nif the listener has already been registered for the particular\nsensor.  This happened for both legacy and standard listeners.\nThe problem is that the ListenerDelegate maintains two lists of\nsensors, one is a Map and the other is a List.  Adding a sensor\ntwice causes one entry to be added to the Map and two entries to be\nadded to the List, but when the sensor is removed the next time, only\none entry is removed from the List, leaving it in an inconsistent\nstate.\n\nRemoved Sensor.getLegacyType() since the value it provides is only\nneeded in LegacyListener and we don\u0027t really save any significant\ncomputation by caching it.  Removing the field makes support for\nlegacy sensors a little more self-contained.\n\nBug: 6339552\nChange-Id: I50d41ac97cf535924f2bfa2026d28547a4d00286\n"
    },
    {
      "commit": "c0e5b8c7fab8d02e8a9cbae7a4e32f5176001712",
      "tree": "fd2af93a2cd0002e600b567f303568988ca57337",
      "parents": [
        "455b7bb83ce4a12a72f5b8341eda19754d582293",
        "792e091045d89c875399251f92e015afe8dee412"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 16 12:03:43 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 12:03:43 2012 -0700"
      },
      "message": "Merge \"DownloadManager and metered networks.\""
    },
    {
      "commit": "792e091045d89c875399251f92e015afe8dee412",
      "tree": "3f096ff09c8a9288582e70205603e5222b11c8d0",
      "parents": [
        "9f7cbf0e50bcb7e9163b23524814003ba8784732"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 16 11:52:18 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 16 12:00:43 2012 -0700"
      },
      "message": "DownloadManager and metered networks.\n\nAPI to control whether a download is allowed to use metered networks.\n\nBug: 3001465\nChange-Id: I29153d2a7495a2e9f76ef5be0a77696a85823839\n"
    },
    {
      "commit": "7bf8fba6f0e0fe8072201a0b174727b905437990",
      "tree": "7b38d7d9bc0b8aa73d5fc472152ff4966cf0ba14",
      "parents": [
        "a5d552fc2bad6aea2087f56e88fb1ce836a79571",
        "9f7cbf0e50bcb7e9163b23524814003ba8784732"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 16 11:22:22 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 11:22:22 2012 -0700"
      },
      "message": "Merge \"API to report if active network is metered.\""
    },
    {
      "commit": "9f7cbf0e50bcb7e9163b23524814003ba8784732",
      "tree": "d9647d60bbe2f5f00142c72b6aef841f8dad4718",
      "parents": [
        "a94afeb5b3c3c95c6d2cf0cd4d69587aba569cfb"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Apr 12 18:34:54 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 16 11:20:27 2012 -0700"
      },
      "message": "API to report if active network is metered.\n\nReport to developers if active network is \"metered\" and define it\nas the user being sensitive to heavy data usage.\n\nBug: 3001465\nChange-Id: I855ca3cd3eb1de3c4814148d70ccf24957af898a\n"
    },
    {
      "commit": "07ea426e3ae8915ca6bf67135f523f42cd920af0",
      "tree": "57f34be48379ccbebb5710010f8a4ee3cf29b1fc",
      "parents": [
        "7c886acf2e60d7f4a02197401d1d046ef3b870b4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 11 12:21:20 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 16 10:14:05 2012 -0700"
      },
      "message": "Unhide new media related java APIs.\n\nChange-Id: If0b8201eaca74f51f3499b6ecdfb73088586ee24\n"
    },
    {
      "commit": "4e1cb3b7942d3ca05918604358b4ef83815ce448",
      "tree": "8c4d1b32367dda945548a3d1a1b895ad39a3ac03",
      "parents": [
        "7c886acf2e60d7f4a02197401d1d046ef3b870b4",
        "1557fd7809078e421f751efc7d2539b3efdc54b2"
      ],
      "author": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Mon Apr 16 10:03:17 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 10:03:17 2012 -0700"
      },
      "message": "Merge \"Fix for bug 6110465.\""
    },
    {
      "commit": "c7ee1b9369ffd7c21a70738056a82dc4238e7fc1",
      "tree": "bbbe595aff7a03e45d51815b10b9740d78a73942",
      "parents": [
        "52c5acacd477cf77a6513ac870251de6bde93a43"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Wed Apr 11 20:40:07 2012 +0900"
      },
      "committer": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Mon Apr 16 20:02:37 2012 +0900"
      },
      "message": "Get rid of \"isSentenceLevelSpellCheckSupported\"\n\nBug: 6320351\nChange-Id: I0e931b7248f8c65268b60af599c07432d58d2f1f\n"
    },
    {
      "commit": "caf97c7db9c5279eb4802121ff2cc1995c27363b",
      "tree": "f66b0e17c2f7e9dd7e4d528c367068ea97045f2d",
      "parents": [
        "52c5acacd477cf77a6513ac870251de6bde93a43",
        "939e5040b51539be561db1d18dec18196f201f5c"
      ],
      "author": {
        "name": "Jonathan Dixon",
        "email": "joth@google.com",
        "time": "Mon Apr 16 01:05:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 01:05:06 2012 -0700"
      },
      "message": "Merge \"Two WebView API cleanups\""
    },
    {
      "commit": "92784670c48759c0db604ddb95c05a7b9bdebed8",
      "tree": "b7cc7829b366f64e6bf9e8b200c2e6d915d6e945",
      "parents": [
        "d4fecc2567ca54427b9c86900bccbc7103ea8fde"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Fri Apr 13 12:15:41 2012 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Sun Apr 15 17:09:48 2012 -0700"
      },
      "message": "Open network service discovery API\n\nAdd support for DNS based network service discovery API. This\nallows applications to discover and resolve applications on a\nlocal network such as Wi-Fi\n\nChange-Id: Ie89895edd35d12b7f7a23fb5fed36cb2b2079f7a\n"
    },
    {
      "commit": "8bf825f48fde77cb2feb8720aac17093581bb085",
      "tree": "6b9a741d15af9971d42733ed557274e1396960ac",
      "parents": [
        "d4fecc2567ca54427b9c86900bccbc7103ea8fde"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Sat Apr 14 14:05:19 2012 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Sat Apr 14 14:41:45 2012 -0700"
      },
      "message": "Open p2p pre-association service discovery API\n\nThis allows applications to filter out the devices by the\nservices supported for the purpose of establishing a\nconnection.\n\nso, a game app can connect to devices that support the game,\nand a media streaming app can filter and connect only to\nthe available media display devices\n\nChange-Id: Ia792e292d2ca771beeb4ca3b007a047527c19229\n"
    },
    {
      "commit": "4213804541a8b05cd0587b138a2fd9a3b7fd9350",
      "tree": "6b19718ddbc60229cd4f2e059feea8021225c5e6",
      "parents": [
        "dbed083ff07f4e6fa727ea22cdd7d758291630c1"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Mar 20 11:51:39 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Apr 13 19:05:24 2012 -0700"
      },
      "message": "Accessibility focus - framework\n\nUsefulness: Keep track of the current user location in the screen when\n            traversing the it. Enabling structural and directional\n            navigation over all elements on the screen. This enables\n            blind users that know the application layout to efficiently\n            locate desired elements as opposed to try touch exploring the\n            region where the the element should be - very tedious.\n\nRationale: There are two ways to implement accessibility focus One is\n           to let accessibility services keep track of it since they\n           have access to the screen content, and another to let the view\n           hierarchy keep track of it. While the first approach would\n           require almost no work on our part it poses several challenges\n           which make it a sub-optimal choice. Having the accessibility focus\n           in the accessibility service would require that service to scrape\n           the window content every time it changes to sync the view tree\n           state and the accessibility focus location. Pretty much the service\n           will have to keep an off screen model of the screen content. This\n           could be quite challenging to get right and would incur performance\n           cost for the multiple IPCs to repeatedly fetch the screen content.\n           Further, keeping virtual accessibility focus (i.e. in the service)\n           would require sync of the input and accessibility focus. This could\n           be challenging to implement right as well. Also, having an unlimited\n           number of accessibility services we cannot guarantee that they will\n           have a proper implementation, if any, to allow users to perform structural\n           navigation of the screen content. Assuming two accessibility\n           services implement structural navigation via accessibility focus,\n           there is not guarantee that they will behave similarly by default,\n           i.e. provide some standard way to navigate the screen content.\n           Also feedback from experienced accessibility researchers, specifically\n           T.V Raman, provides evidence that having virtual accessibility focus\n           creates many issues and it is very hard to get right.\n           Therefore, keeping accessibility focus in the system will avoid\n           keeping an off-screen model in accessibility services, it will always\n           be in sync with the state of the view hierarchy and the input focus.\n           Also this will allow having a default behavior for traversing the\n           screen via this accessibility focus that is consistent in all\n           accessibility services. We provide accessibility services with APIs to\n           override this behavior but all of them will perform screen traversal\n           in a consistent way by default.\n\nBehavior:  If accessibility is enabled the accessibility focus is the leading one\n           and the input follows it. Putting accessibility focus on a view moves\n           the input focus there. Clearing the accessibility focus of a view, clears\n           the input focus of this view. If accessibility focus is on a view that\n           cannot take input focus, then no other view should have input focus.\n           In accessibility mode we initially give accessibility focus to the topmost\n           view and no view has input focus. This ensures consistent behavior accross\n           all apps. Note that accessibility focus can move hierarchically in the\n           view tree and having it at the root is better than putting it where the\n           input focus would be - at the first input focusable which could be at\n           an arbitrary depth in the view tree. By default not all views are reported\n           for accessibility, only the important ones. A view may be explicitly labeled\n           as important or not for accessibility, or the system determines which one\n           is such - default. Important views for accessibility are all views that are\n           not dumb layout managers used only to arrange their chidren. Since the same\n           content arrangement can be obtained via different combintation of layout\n           managers, such managers cannot be used to reliably determine the application\n           structure. For example, a user should see a list as a list view with several\n           list items and each list item as a text view and a button as opposed to seeing\n           all the layout managers used to arrange the list item\u0027s content.\n           By default only important for accessibility views are regared for accessibility\n           purposes. View not regarded for accessibility neither fire accessibility events,\n           nor are reported being on the screen. An accessibility service may request the\n           system to regard all views. If the target SDK of an accessibility services is\n           less than JellyBean, then all views are regarded for accessibility.\n           Note that an accessibility service that requires all view to be ragarded for\n           accessibility may put accessibility focus on any view. Hence, it may implement\n           any navigational paradigm if desired. Especially considering the fact that\n           the system is detecting some standard gestures and delegates their processing\n           to an accessibility service. The default implementation of an accessibility\n           services performs the defualt navigation.\n\nbug:5932640\nbug:5605641\n\nChange-Id: Ieac461d480579d706a847b9325720cb254736ebe\n"
    },
    {
      "commit": "33efb231cb92065c40c019319adae36abc413863",
      "tree": "ae3941f3c2d81d4c86ad463daa48481f4b20d89f",
      "parents": [
        "dbed083ff07f4e6fa727ea22cdd7d758291630c1"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Apr 13 16:15:20 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Apr 13 18:33:38 2012 -0700"
      },
      "message": "Unhide new SurfaceTexture \u0026 TextureView APIs\n\nThis change unhides the new SurfaceTexture and TextureView APIs that were added\nto allow transferring ownership of the SurfaceTexture from the UI framework to\nthe application.\n\nChange-Id: Ic4b781d907a59e99ff1a5974009305c1f9aee36a\n"
    },
    {
      "commit": "90aba7caac78b407347b930cfb6ff7d6658ac90a",
      "tree": "a18918aeb2785b4ca801ee5319ed27973fdde49f",
      "parents": [
        "21e09bc4cbfd7d8f0e2f7ab5211a50339b1b8d20",
        "a47425a13c19f95057df78b8bb65bb25657e8753"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 17:34:20 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 17:34:20 2012 -0700"
      },
      "message": "Merge \"Add support for input devices that have vibrators.\""
    },
    {
      "commit": "75e0dcbca1fe6d218685c73829ae8c75a45b4920",
      "tree": "ad5514f90162d5acf11c47fd835a92a954a79976",
      "parents": [
        "8b2dd9c870ab81f35db8d8cd995c7f428c943e50",
        "c2346134bb519a54d50655cbef940fc3fdec60a9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 17:03:05 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 17:03:05 2012 -0700"
      },
      "message": "Merge \"Extract Vibrator implementation from interface.\""
    },
    {
      "commit": "a47425a13c19f95057df78b8bb65bb25657e8753",
      "tree": "675c0d6bf611f2427bb3d11315d410bf9087b20a",
      "parents": [
        "c2346134bb519a54d50655cbef940fc3fdec60a9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 04:09:27 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 17:01:15 2012 -0700"
      },
      "message": "Add support for input devices that have vibrators.\n\nAdded a getVibrator() method to InputDevice which returns a Vibrator\nassociated with that input device.  Its uses the same API as the\nsystem vibrator which makes it easy for applications to be modified\nto use one or the other.\n\nBug: 6334179\nChange-Id: Ifc7f13dbcb778670f3f1c07ccc562334e6109d2e\n"
    },
    {
      "commit": "2a07308ed27b7323377142c69975b019244e38d7",
      "tree": "5d3b5b2bf0b85fb2af963173fbdfcfb66aeeccca",
      "parents": [
        "a94afeb5b3c3c95c6d2cf0cd4d69587aba569cfb",
        "acb69bb909d098cea284df47d794c17171d84c91"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 13 16:47:38 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 16:47:38 2012 -0700"
      },
      "message": "Merge \"Add direct support for HTML formatted text in ClipData etc.\""
    },
    {
      "commit": "1557fd7809078e421f751efc7d2539b3efdc54b2",
      "tree": "90f58eac3acab19fa61719219814acc7d6683dcd",
      "parents": [
        "c58a6d2da4790921743bdb4997ee59f8be1632e3"
      ],
      "author": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Wed Apr 04 23:41:34 2012 -0700"
      },
      "committer": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Fri Apr 13 16:25:08 2012 -0700"
      },
      "message": "Fix for bug 6110465.\n\nAdd layout bound metadata to 9-patch files and make layouts take them into account.\n\nThis CL contains a proposed API for dealing with layout bounds.\n\nThis solution exposes:\n\n1. Class: Insets - for storing layout Insets (and later possibly padding).\n2. Methods: View:(get/set)LayoutInsets() - for storing layoutBounds.\n3. Methods: ViewGroup:(get/set)LayoutMode() - for controlling layoutMode.\n\nIt also iuncudes the changes to GridLayout to support layout bounds.\n\nChange-Id: I60c836b6530b61c5abf37f93ee9c44aad73573f1\n"
    },
    {
      "commit": "acb69bb909d098cea284df47d794c17171d84c91",
      "tree": "6544f56ec3d8a86de4223468c8eb975a8eb7eabd",
      "parents": [
        "7358fbfeb2febb60085067fcacc192f429b06545"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 13 15:36:06 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 13 15:36:06 2012 -0700"
      },
      "message": "Add direct support for HTML formatted text in ClipData etc.\n\nWhen using the clipboard, ACTION_SEND, etc., you can now supply\nHTML formatted text as one of the representations.  This is exposed\nas a set of methods on ClipData for building items with HTML\nformatted text, and retrieving and coercing to HTML (and styled)\ntext.  In addtion, there is a new EXTRA_HTML_TEXT for interoperating\nwith the old ACTION_SEND protocol.\n\nChange-Id: I8846520a480c8a5f829ec1e693aeebd425ac170d\n"
    },
    {
      "commit": "a94afeb5b3c3c95c6d2cf0cd4d69587aba569cfb",
      "tree": "092280ea7d53086241a35ff4ea546e43ebd884fa",
      "parents": [
        "e64d187553cb3fa193b5748b5c99ad85cf9ccba1",
        "20e8dd9f9e7cff63c83e36a1761538a04c224cc1"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Fri Apr 13 15:22:11 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 15:22:11 2012 -0700"
      },
      "message": "Merge \"Unhide new Beam push APIs.\""
    },
    {
      "commit": "e64d187553cb3fa193b5748b5c99ad85cf9ccba1",
      "tree": "3b315f261eaea5116e1902b11b11e5f1207bf8de",
      "parents": [
        "aa7a8a895b1deffd5143c1967ffbd9c05391f734",
        "7ebbfd0f0cd70e9cd4abbd9eccfc068e5959d94c"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Fri Apr 13 15:22:05 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 15:22:05 2012 -0700"
      },
      "message": "Merge \"Introduce new URI to clear data usage information\""
    },
    {
      "commit": "58ab2bcca92e7e985fdc1886dfeea924f991441d",
      "tree": "e3eeaaa43dba6e8020b5735717447ce5312c37bc",
      "parents": [
        "a12e1fe16f6310ae5a869d1a96466957f1b1f5a1",
        "a1620dc521c338ef6bd2cb8d39548933135ed1fd"
      ],
      "author": {
        "name": "Daniel Lehmann",
        "email": "lehmannd@google.com",
        "time": "Fri Apr 13 13:36:22 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 13:36:22 2012 -0700"
      },
      "message": "Merge \"Depcrecate increment function (should have been done back in ICS)\""
    },
    {
      "commit": "a1620dc521c338ef6bd2cb8d39548933135ed1fd",
      "tree": "b4b872a983ecf9c4761a1c81506eed2197b73b73",
      "parents": [
        "7358fbfeb2febb60085067fcacc192f429b06545"
      ],
      "author": {
        "name": "Daniel Lehmann",
        "email": "lehmannd@google.com",
        "time": "Fri Apr 13 13:29:49 2012 -0700"
      },
      "committer": {
        "name": "Daniel Lehmann",
        "email": "lehmannd@google.com",
        "time": "Fri Apr 13 13:29:49 2012 -0700"
      },
      "message": "Depcrecate increment function (should have been done back in ICS)\n\nChange-Id: I5c7d4d80a5d10b6ed2460f6dac30e53cc2714521\n"
    },
    {
      "commit": "7ebbfd0f0cd70e9cd4abbd9eccfc068e5959d94c",
      "tree": "2b064ff5019a429861f0f8178588f0fc753b2592",
      "parents": [
        "22bf2a6e1472a3308e3c41b4dea45763874e79be"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Fri Apr 13 12:56:42 2012 -0700"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Fri Apr 13 13:18:22 2012 -0700"
      },
      "message": "Introduce new URI to clear data usage information\n\nWe were going to piggyback existing DataUsageFeedback.FEEDBACK_URI,\nbut decided to introduce a new URI for this.\n\nBug 5475575\n\nChange-Id: I6d467e5342f551142f047aa1b0b3503c5bf9b7fd\n"
    },
    {
      "commit": "4dfbe83e1a110b416badf73ddf68c83db0d415ae",
      "tree": "84b02bea955b7a4a4e134a1ae4cc192952020ce9",
      "parents": [
        "92bb93eba3061f6d478c57a631c2a80462e7e21f"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Apr 11 14:51:46 2012 -0400"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Fri Apr 13 14:05:25 2012 -0400"
      },
      "message": "Unhide some new Notification APIs.\n\nBug: 6318391\nChange-Id: Ie51f373cc84d845fa4aababab702c115fcc9e2e5\n"
    },
    {
      "commit": "939e5040b51539be561db1d18dec18196f201f5c",
      "tree": "157ca266aa9ed93306762748fb127ab39654dc0a",
      "parents": [
        "f804ba131b4f543ece1973126c0ae5d4b919ee8b"
      ],
      "author": {
        "name": "Jonathan Dixon",
        "email": "joth@google.com",
        "time": "Thu Apr 12 21:21:07 2012 +0100"
      },
      "committer": {
        "name": "Jonathan Dixon",
        "email": "joth@google.com",
        "time": "Fri Apr 13 16:36:16 2012 +0100"
      },
      "message": "Two WebView API cleanups\n\n- remove final from classes which we will need to provide subclasses\n  in future: CookieManager, GeolocationPermissions, WebIconDatabase\n  and WebStorage. None of these have published constructors,\n  so applications cannot subclass them anyway.\n\n- Also convert some protected members of JsResult to private, as its of\n  no use to legal subclasses, and applications cannot subclass it.\n\nChange-Id: Iaca9d2db31e25853b6c55feae41d9e7774087479\n"
    },
    {
      "commit": "c2346134bb519a54d50655cbef940fc3fdec60a9",
      "tree": "6b86f97b2175bc2b0181cbf123e4f874867e7c91",
      "parents": [
        "069c4f3f0c8190289d60296ec54fafa56abb4776"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 01:55:38 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 04:05:17 2012 -0700"
      },
      "message": "Extract Vibrator implementation from interface.\n\nMoved the core logic of Vibrator into SystemVibrator, potentially\nallowing for the creation of other Vibrator subclasses.\n\nFixed several places where we were creating new Vibrator\ninstances unnecessarily instead of getting it from the Context.\n\nIt is safe to make Vibrator abstract because its constructor\nwas hidden from the SDK so it was not possible to subclass it.\n\nBug: 6334179\nChange-Id: I18ece6544c26a7efb2d5099f8346a10aef8a5e18\n"
    },
    {
      "commit": "b36584042e3e0e15883c6c0a71996ecfc134f79b",
      "tree": "70a889f88ac95c4827334241065b90b66d25a2cb",
      "parents": [
        "f2e103623b79d2c395eefcdbd8a56a354f997ed1",
        "a3dc86e637873be115e68be50bd1b281beff7994"
      ],
      "author": {
        "name": "Jonathan Dixon",
        "email": "joth@google.com",
        "time": "Fri Apr 13 02:35:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 02:35:00 2012 -0700"
      },
      "message": "Merge \"Hide the public constructors for singleton classes\""
    },
    {
      "commit": "5573ac01495f48a21496c18d2ebd66b3187e307a",
      "tree": "8c699514ea04b0688da20d25d6790060d552ae39",
      "parents": [
        "069c4f3f0c8190289d60296ec54fafa56abb4776",
        "6574539baecc8610529596554b7bca0f21b334b8"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Apr 13 01:03:57 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 01:03:57 2012 -0700"
      },
      "message": "Merge \"Unhide camera autofocus move callback.\""
    },
    {
      "commit": "882735972e9e7ee52a3116a3aba0440968b2da1a",
      "tree": "be12d9a5d1f8608629d74382f6f1927eadcbbdb8",
      "parents": [
        "d4fecc2567ca54427b9c86900bccbc7103ea8fde",
        "af9e8d38184c6ba4d2d3eb5bde7014a66dd8a78b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 18:55:57 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 12 18:55:57 2012 -0700"
      },
      "message": "Merge \"Notify applications when input devices change.\""
    },
    {
      "commit": "af9e8d38184c6ba4d2d3eb5bde7014a66dd8a78b",
      "tree": "50cf9dd27d673bc5b3f75e6e18e9577873eecd6c",
      "parents": [
        "cc1169831921d9295b2fc01c1eaf7e9b00836f53"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 17:32:48 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 18:54:54 2012 -0700"
      },
      "message": "Notify applications when input devices change.\n\nThis change allows the InputManager to keep track of what input\ndevices are registered with the system and when they change.\nIt needs to do this so that it can properly clear its cache of\ninput device properties (especially the key map!) when changes\noccur.\n\nAdded new API so that applications can register listeners for\ninput device changes.\n\nFixed a minor bug in EventHub where it didn\u0027t handle EPOLLHUP\nproperly so it would spam the log about unsupposed epoll events\nuntil inotify noticed that the device was gone and removed it.\n\nChange-Id: I937d8c601f7185d4299038bce6a2934fe4fdd2b3\n"
    }
  ],
  "next": "62901af52a118c61579a81c84608c9f1118931a3"
}
