)]}'
{
  "log": [
    {
      "commit": "dc03c61fe3cd8d0805480e48a974986439977a60",
      "tree": "d806e0f8db1d466a970062718ce9e15c7795daa3",
      "parents": [
        "8f40e5871213afb63ae4b68a44dd09e0a014e417"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 01 10:59:41 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 25 09:11:46 2011 -0700"
      },
      "message": "Bluetooth SCO audio API improvements.\n\nThe AudioManager API to control bluetooth SCO did not provide an easy way for\napplications to handle SCO connection errors. When a request to activate SCO with\nAudioManager.startBluetoothSco() failed, no state change was indicated via\nAudioManager.ACTION_SCO_AUDIO_STATE_CHANGED intent. The application had to\nimplement a timeout to handle connection failures.\n\nThe API change consists in defining a new intent AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED\nand deprecate AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED. The new intent\nwill broacast a new state CONNECTING when the SCO connection is initiated.\nThe application can monitor changes from CONNECTING to either CONNECTED or DISCONNECTED\nstates to detect connection success or failure.\nAn extra indicating the previous state is also added to the new intent.\n\nAlso improved BluetoothHeadset service management in AudioService. A disconnection\nfrom the service is not considered as a device or SCO link disconnection. Instead, if the\nservice interface is not present when a request to activate SCO is received, an\nattempt is made to reconnect to the service.\n\nChange-Id: I005fda1caaf74bb7de64fece44e9c7e628e828db\n"
    },
    {
      "commit": "8d5f808f70c1d47437eaf49234c1b3a23c244040",
      "tree": "88cae8bde6d7189f76daf2b6a9e18e7fab321766",
      "parents": [
        "7eaa5e57d852f0f25f6a8dbdb8537e53f039b3c4"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue May 24 08:03:16 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue May 24 15:56:41 2011 -0700"
      },
      "message": "Add more functionality to ViewPropertyAnimator.\n\nAllow ViewPropertyAnimator animations to be started immediately, canceled,\nand to have an optional startDelay. This is functionality parallel to that\nin the base Animator class.\n\nChange-Id: I391f1810bf697656999bd6e3e63a59e46eb7eb8a\n"
    },
    {
      "commit": "cca2c9807206f320bd41bf8656a227e4f249e4ba",
      "tree": "bfb8ccd222547bc535e05b39d7dc7723798b971e",
      "parents": [
        "383715aafe108b24e374ff6462e84a7924824d30"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri May 20 14:34:18 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue May 24 15:29:39 2011 -0700"
      },
      "message": "Add ability to transition parent hierarchy in layout transitions\n\nThis change compensates for changes in the parent hierarchy of\ntransitioning views. It automatically animates parents with the same\nanimations as those used for the CHANGING animations run on the container\nchildren.\n\nChange-Id: I86471d16a9070b024cc09c8f6e0f504a881fa99f\n"
    },
    {
      "commit": "e372c17ba76163018cbc1b6972c9e6b0a8a8b5f4",
      "tree": "8cdcec2ee21187d5fbd9d2cd43a92ac11bfca61b",
      "parents": [
        "4b4e3a0b216d146a78b2e2e5ab9593846e805bce",
        "01425365a85e605139f612502f68954cad869e5b"
      ],
      "author": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Tue May 24 13:49:51 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 24 13:49:51 2011 -0700"
      },
      "message": "Merge \"Add public API to do NDEF push.\""
    },
    {
      "commit": "01425365a85e605139f612502f68954cad869e5b",
      "tree": "d4d6527b7c0bba01c64a1df2a57aed24469e0cd7",
      "parents": [
        "1ff04d8e567c03f697d99027e64ea31f5043fba7"
      ],
      "author": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Tue May 24 02:57:37 2011 -0700"
      },
      "committer": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Tue May 24 15:22:07 2011 -0500"
      },
      "message": "Add public API to do NDEF push.\n\nChange-Id: I102da9bbc6d78577a26fa03ee363a60abc389d6c\n"
    },
    {
      "commit": "c42b791b7484ee3f1e42a70c691c6945bc52c153",
      "tree": "97d5f5d08af6b787cdb4686ebb0679f367e63ac3",
      "parents": [
        "43175dde741aaef0ad4e8e01a59ea96d603973dc",
        "e2c7715c772d5121397591b532d04a31b3ffcc99"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 24 12:44:07 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 24 12:44:07 2011 -0700"
      },
      "message": "Merge \"resolved conflicts for merge of bbca8133 to master\""
    },
    {
      "commit": "e2c7715c772d5121397591b532d04a31b3ffcc99",
      "tree": "a528b89349ba2b367aeae8b442b5c696a7c8c99e",
      "parents": [
        "6895c4994350bc10a06481ecf42c4ba8abb3eedb",
        "bbca81334e3603c7328dc526bd63032b23d5261d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 24 11:27:11 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 24 11:27:11 2011 -0700"
      },
      "message": "resolved conflicts for merge of bbca8133 to master\n\nChange-Id: I81493674dceab848e41d380a77a37e5a9be06db6\n"
    },
    {
      "commit": "970ce730175e1d27ce3fc7c179f2d24ecc1b5213",
      "tree": "6b15837e1a537ebfb692ea1bb348c25ff1d659d9",
      "parents": [
        "bd4d5826228d3c3c55a52aa7e175559509ec3498",
        "9511b41e05312f1f5ed88d22040876218d7bfdd4"
      ],
      "author": {
        "name": "Gilles Debunne",
        "email": "debunne@google.com",
        "time": "Tue May 24 09:26:43 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 24 09:26:44 2011 -0700"
      },
      "message": "Merge \"Made getOffsetForPosition public in TextView.\""
    },
    {
      "commit": "9511b41e05312f1f5ed88d22040876218d7bfdd4",
      "tree": "2ffa1b93a46e6199616799f6445800400549e736",
      "parents": [
        "3bca69b09fb51116b5eb18fb91cb991c1450e384"
      ],
      "author": {
        "name": "Gilles Debunne",
        "email": "debunne@google.com",
        "time": "Mon May 23 18:33:48 2011 -0700"
      },
      "committer": {
        "name": "Gilles Debunne",
        "email": "debunne@google.com",
        "time": "Mon May 23 18:48:26 2011 -0700"
      },
      "message": "Made getOffsetForPosition public in TextView.\n\nBug 4443839\n\nChange-Id: I3e5d6f0fe3a45b068166f682daf3c4163903306e\n"
    },
    {
      "commit": "f3a135bfbae0e64cf32dcb21714420ec974b1cab",
      "tree": "c0e0766cfb24b3b8598af7187b8e987dacfbc78b",
      "parents": [
        "37cd57772b27bb286aeec915cfaced4fa08508bd"
      ],
      "author": {
        "name": "Gilles Debunne",
        "email": "debunne@google.com",
        "time": "Mon May 23 16:28:47 2011 -0700"
      },
      "committer": {
        "name": "Gilles Debunne",
        "email": "debunne@google.com",
        "time": "Mon May 23 17:15:20 2011 -0700"
      },
      "message": "Added a new flag in TextView to disable Suggestions.\n\nThis is needed for specific TextEdit (such as AutoCompleteTextField)\nwhich do not want to display the \"No suggestions available\" message.\n\nBug 4443830\n\nChange-Id: Ic228b56bacfdf2765e70eb24952ab087556c1f93\n"
    },
    {
      "commit": "bbca81334e3603c7328dc526bd63032b23d5261d",
      "tree": "c29dd1ed7c2119cd50bbc4e56be9ee36d89891c7",
      "parents": [
        "98a8231e838d7d624c5862d81d1975ef4f8d0d57",
        "4bb78889d04594c01a6af7f6d38c1764e9f575f9"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 23 16:16:54 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 23 16:16:54 2011 -0700"
      },
      "message": "am 4bb78889: am 40277df7: Merge \"Add \"television\" mode.\" into honeycomb-mr2\n\n* commit \u00274bb78889d04594c01a6af7f6d38c1764e9f575f9\u0027:\n  Add \"television\" mode.\n"
    },
    {
      "commit": "e360bb6bd8ea84b8d37604fc11dfc744b18fb0de",
      "tree": "7e833a630e8108be1345d8595438eea5a30e7173",
      "parents": [
        "1b144e625fb0d34cd680c44cbcfb2deb8a76d4c6"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 20 16:11:04 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 23 15:11:08 2011 -0700"
      },
      "message": "Add \"television\" mode.\n\nChange-Id: Ida1fdb61b036a8b489dbeda196fb4bc82e651b2b\n"
    },
    {
      "commit": "939461300a0283a9f370a0425d4061d32b36f952",
      "tree": "41e7c361f261448cb511fa97324b7648a4fe8cc2",
      "parents": [
        "bdd8a16282cf85bfdbe4c15adcd5c37db772de11",
        "070a19e035cd28f2a0cc831f2322f2121d80de44"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 23 14:08:12 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 23 14:10:26 2011 -0700"
      },
      "message": "resolved conflicts for merge of 070a19e0 to master\n\nChange-Id: I855ab02a4e8dd465af67fd23b66c0dace76bd411\n"
    },
    {
      "commit": "070a19e035cd28f2a0cc831f2322f2121d80de44",
      "tree": "714d23f6081489a5504fdbe262456f43f4f48c68",
      "parents": [
        "5a6bec53e224b2db9ecbc6920faab08f4a962256",
        "5c8caba2e590792531ffb2c9f4ea924993662abd"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 20 16:13:54 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 20 16:13:54 2011 -0700"
      },
      "message": "am 5c8caba2: am 1b144e62: Merge \"Add ParcelFileDescriptor.fromFd() and .adoptFd().\" into honeycomb-mr2\n\n* commit \u00275c8caba2e590792531ffb2c9f4ea924993662abd\u0027:\n  Add ParcelFileDescriptor.fromFd() and .adoptFd().\n"
    },
    {
      "commit": "ea2117bdc03316a9292e2344c6fd157c85c13167",
      "tree": "f1bc6b8428311c333b94d08e58c17ede1b2e54d5",
      "parents": [
        "69cb87576ba163b61bb0e6477a3b7c57a9b11d40"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 20 10:37:34 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 20 12:48:22 2011 -0700"
      },
      "message": "Add ParcelFileDescriptor.fromFd() and .adoptFd().\n\nChange-Id: I2fe0429188dc80abaa0c8977f2e43a010e0f4da2\n"
    },
    {
      "commit": "817c161ef27b6087c496755768d65fcb4f78f04c",
      "tree": "558084046467458fa4e35638e7a891a9e2af8fbd",
      "parents": [
        "0ca2fda0f703a05f3bbad538d3f33b7492118e62"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 13 08:11:47 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 20 07:30:00 2011 -0700"
      },
      "message": "Bug 4184736 unhide MediaPlayer.setTexture\n\nChange-Id: I4c8456465611b717e42c0a11e3ce3b4dc0a34270\n"
    },
    {
      "commit": "161e67ff3ba26408eea09221734ad2e29a1eed11",
      "tree": "6e98ff836fb5f134e01a7e9ef420ec35a78ad5d2",
      "parents": [
        "9e735541beed238d3b99d4bd284af1fc953c3775",
        "06a8ceacb0dc2713cb0bb2c93d2a750f2a58db68"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 19 21:44:52 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 19 21:44:52 2011 -0700"
      },
      "message": "resolved conflicts for merge of 06a8ceac to master\n\nChange-Id: Id51574c825affddfac14ad7214c5496d6a3d6e69\n"
    },
    {
      "commit": "06a8ceacb0dc2713cb0bb2c93d2a750f2a58db68",
      "tree": "14cda7bbbdc5e6cabb492d7af1977a2f5548062b",
      "parents": [
        "90177e59e5211dd9ab33761ce800e8a86a49d1e2",
        "c851ea5672f6e042c2e89b2a2ce4a2467e1fcd2a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 19 19:34:21 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 19 19:34:21 2011 -0700"
      },
      "message": "am c851ea56: am 69cb8757: Add new \"-swNNNdp\" resource qualifier.\n\n* commit \u0027c851ea5672f6e042c2e89b2a2ce4a2467e1fcd2a\u0027:\n  Add new \"-swNNNdp\" resource qualifier.\n"
    },
    {
      "commit": "69cb87576ba163b61bb0e6477a3b7c57a9b11d40",
      "tree": "a44be0af3d008409403be133358bdcd628741c01",
      "parents": [
        "b9537db8d9ee27efb4a98415ad2d6b50c1806e5d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 19 18:13:32 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 19 18:23:29 2011 -0700"
      },
      "message": "Add new \"-swNNNdp\" resource qualifier.\n\nChange-Id: I0101e88ca9d8d44138bdcaf571f24b0352f4f6ce\n"
    },
    {
      "commit": "9414b04178f80f993bf77a2d8af306d8b7ce0f62",
      "tree": "25c4f0ae9578d37e73019c96b7e3c4eaddbf2f55",
      "parents": [
        "e526cfb490a4c855d3b6c89096c9f606b02190f8",
        "63f46e7145fb2087515eb04015d84d956cbb00cd"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu May 19 15:23:58 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 19 15:23:58 2011 -0700"
      },
      "message": "Merge \"expandGroup can now animate\""
    },
    {
      "commit": "7189d571e2748972e1599ead3d503a9b185fdd3c",
      "tree": "031abd7a9fbbb928f4f6264a9b8bced7c1c8df15",
      "parents": [
        "b2d0ee164a1cf7bab31302c5d3cdd62322574271",
        "f0c6ddd99b6770ee4de74ce42134f9f56b8ebc5d"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 19 14:03:04 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 19 14:03:04 2011 -0700"
      },
      "message": "am f0c6ddd9: am 51fb9703: Merge \"DO NOT MERGE: Add custom fragment anims for popping backstack\" into honeycomb-mr2\n\n* commit \u0027f0c6ddd99b6770ee4de74ce42134f9f56b8ebc5d\u0027:\n  DO NOT MERGE: Add custom fragment anims for popping backstack\n"
    },
    {
      "commit": "51fb97031f62b1181fc9eb6c636d09a68987d939",
      "tree": "2af22ed218e554dd8c565958e56bb4d6b9686551",
      "parents": [
        "146a0b4522db2d782953a464fe63adcd7e1569c2",
        "19e748a3d1702f911476e103b590a36adefb83ca"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 19 13:57:03 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 19 13:57:03 2011 -0700"
      },
      "message": "Merge \"DO NOT MERGE: Add custom fragment anims for popping backstack\" into honeycomb-mr2"
    },
    {
      "commit": "19e748a3d1702f911476e103b590a36adefb83ca",
      "tree": "028f40a2c8ff26baaed0e5ec09709c34907628e9",
      "parents": [
        "b7ec3e41a6b3423d1669ae784a8ad8fbe32df29d"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Mar 22 11:35:22 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 19 13:44:40 2011 -0700"
      },
      "message": "DO NOT MERGE: Add custom fragment anims for popping backstack\n\nThe previous fragment implementation allowed for animations\nduring fragment transitions, but did not account for the\ndifferent behavior of fragments when popping the back stack.\nIn general, you probably don\u0027t want to run the same animation\nfor putting a fragment on the stack as for popping it off, which\nis what happens now. For example, you might fade a fragment out when\nputting it on the stack. But when popping ot off, fading it out\nis probably not the behavior you want.\n\nThe new API (setCustomAnimations() overload with two additional\nparameters) allows developers to specify animations to be run\nin the popping operation. Otherwise, the animations are null and\nthe operation will not be animated.\n\nChange-Id: I53bbc6e6ec4e953b7ecdd99e2452d81857917de2\n"
    },
    {
      "commit": "3c707256cf238354524a9cac2b539259328bb035",
      "tree": "1f5880b3b4414984a70fbb0ffa138734deb54ec7",
      "parents": [
        "b568b51255256a8c9bdf6463cca185f813f28caa",
        "af3131fe2e20c7b5e080d098a3b6847c5414bcae"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 19 11:51:37 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 19 11:51:37 2011 -0700"
      },
      "message": "Merge \"Publish setLocation() method as a public Java API\""
    },
    {
      "commit": "90f902afde7ac92cdb60363d517e9d142e1f1977",
      "tree": "5f98f00537d26214ae7d42f95f05e98761765413",
      "parents": [
        "191c1fbb7465dc6ba0cb2fa40c96b690ea73d68c",
        "c1730dcf8971950a0e32e3f4fc6e3fb08b7395cd"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu May 19 13:34:44 2011 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu May 19 13:34:44 2011 -0400"
      },
      "message": "resolved conflicts for merge of c1730dcf to master\n\nChange-Id: I9e0f9740930c7d3acb51235dd4c67cf2ed54a486\n"
    },
    {
      "commit": "63f46e7145fb2087515eb04015d84d956cbb00cd",
      "tree": "cea36c8d0f6dcd9df374a186af8743c556f29d4b",
      "parents": [
        "706804e2e4199a7cfcb7e491d7aca38885ff0f14"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu May 19 10:09:36 2011 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu May 19 10:10:51 2011 -0700"
      },
      "message": "expandGroup can now animate\n\n Add a boolean to have expandGroup animate the same as\n performItemClick does\n\nChange-Id: I652c6fa8f9a7b527572337b11900d653b5285352\n"
    },
    {
      "commit": "c1730dcf8971950a0e32e3f4fc6e3fb08b7395cd",
      "tree": "9ad75c0491ddea770995d784eb2a1a63fc490eab",
      "parents": [
        "c8f045b8a4cc83bc40ee999cb03a446f986d445c",
        "ae448e2c90cae096efea53c1c93a70e7b5ca2db7"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu May 19 10:06:44 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 19 10:06:44 2011 -0700"
      },
      "message": "am ae448e2c: am a88b42d5: USB: Add method to access raw USB device descriptors\n\n* commit \u0027ae448e2c90cae096efea53c1c93a70e7b5ca2db7\u0027:\n  USB: Add method to access raw USB device descriptors\n"
    },
    {
      "commit": "a88b42d569a91290477d8f5731a2ee43931271da",
      "tree": "bd3b4a2abc8971a62b983651898f0ab0a6c62567",
      "parents": [
        "b7ec3e41a6b3423d1669ae784a8ad8fbe32df29d"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu May 19 11:52:40 2011 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu May 19 12:57:41 2011 -0400"
      },
      "message": "USB: Add method to access raw USB device descriptors\n\nChange-Id: Id5b46ede14a838198a59bdc8ed4732942044cfa8\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "c6b7a0131e92a0bdeb268cee185404ceae9b54b7",
      "tree": "0b556af3edd7c1c203d93a6aea99e2a117738e9b",
      "parents": [
        "d37b84edf55e5c242de23f1e7dfc61cc150e7b54",
        "111d17ce5141aa0fa51de37deae0811e70555d34"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu May 19 07:16:43 2011 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu May 19 07:17:00 2011 -0700"
      },
      "message": "Merge 111d17ce\n\nChange-Id: I2e0aa4328bc78eb5bcd987e7bf74b0889d2fae7f\n"
    },
    {
      "commit": "d36a699410d8b65deede229df8414dde04c3421c",
      "tree": "88604b0f47699c3082318a0872f4d5a0728d80aa",
      "parents": [
        "5459781b83be263cdce17c23e636f095b9d9c47b"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed May 18 20:50:03 2011 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed May 18 20:50:03 2011 -0700"
      },
      "message": "Fixing my build fix\n\nChange-Id: I8393e0172367de730123b2fa9d743b1ecb2eb087\n"
    },
    {
      "commit": "5459781b83be263cdce17c23e636f095b9d9c47b",
      "tree": "6e2a749a8934814b2b98197153ba83c80153c59e",
      "parents": [
        "7a1eb5cf961b6ceaa54295f37843b47b73baa8d8"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed May 18 19:44:31 2011 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed May 18 20:09:24 2011 -0700"
      },
      "message": "Fixing the build\n\n1. Updated the 14.txt with the new methods in Accessibility record\n   since I made a mistake duing that. I had to do this because\n   I have factored out some stuff from AccessibilityEvent to\n   AccessibilityRecord and the API check does not detect that the\n   APIs have not changed.\n\nChange-Id: Ieed504634e0af909eada16f58f922cb78cb841ba\n"
    },
    {
      "commit": "111d17ce5141aa0fa51de37deae0811e70555d34",
      "tree": "e4cce47d299fbd7e372dc8dc4057c3860addf4b3",
      "parents": [
        "ba8fc5b059228402afa965e175d5f6655e3fe555",
        "4b999030ad3e9f8d392d72c725134ec3fb6d2290"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed May 18 15:33:27 2011 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed May 18 15:33:27 2011 -0700"
      },
      "message": "Merge 4b999030\n\nChange-Id: Ibb94ba77ec8588f5e7636cf6a038b143e3dcb2bd\n"
    },
    {
      "commit": "6c427617be940be32fdebbd9c78f9223b292c814",
      "tree": "16f488696c46dca5da31eee37cf44d3bdb07e821",
      "parents": [
        "7ae7d31c2fb06a5c53e71c9e77fa75c8f5777391",
        "5819051eee071d622e5cb1f32c74112b1c7b1072"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed May 18 15:00:11 2011 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Wed May 18 15:00:11 2011 -0700"
      },
      "message": "Merge \"support humidity sensor type\""
    },
    {
      "commit": "af3131fe2e20c7b5e080d098a3b6847c5414bcae",
      "tree": "7a0cadee32bd580d3be0b7c90fb1591fa9f879df",
      "parents": [
        "fa1e5561cc65b932067919fcd5d39fda7032793e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 17 17:42:49 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed May 18 09:41:57 2011 -0700"
      },
      "message": "Publish setLocation() method as a public Java API\n\nrelated-to-bug: 4260295\n\nChange-Id: I91b923af8549127eb08f0d7e535cd53ad229e1f6\n"
    },
    {
      "commit": "dff789754865dff19792f0799cce2f76f7d41227",
      "tree": "023628a807836251bc23bc4bff81cd28ea121bab",
      "parents": [
        "63e2c0888d1a4f91a48874052d13c95291fdfea7",
        "8666663e6e6dfe615c8e29cae4a42c8f135b7554"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Tue May 17 14:16:43 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 17 14:16:43 2011 -0700"
      },
      "message": "Merge \"View horizontalDirection public attribute resolution to an internal var.\""
    },
    {
      "commit": "b956f37e375bb2588208d4b5e8a40fae6fae5f86",
      "tree": "59cd3ef17bc910a89c38bc55c220904e1cf65b95",
      "parents": [
        "9d31154d0b0ecbc5a36733ac3a8b70dcae18bf9c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon May 16 16:51:44 2011 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue May 17 09:47:59 2011 +0100"
      },
      "message": "Pass synthesis request params through to the TTS service.\n\nChange-Id: I1ffd617d8dfa0814382643e3cf6b3ab7417c742a\n"
    },
    {
      "commit": "3e4df313a63342decc9b69ade251ec306d9e155c",
      "tree": "040563a96bb34d5ba39fbdde6744c9f95264d5cd",
      "parents": [
        "917e916b1c77079ef08d2c9d48c8006f02172cad"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Mon May 16 16:38:06 2011 -0700"
      },
      "committer": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Mon May 16 16:38:06 2011 -0700"
      },
      "message": "Fix the build.\n\nChange-Id: I884580f52ebc817cee736f6d1bafbc59bd6662cd\n"
    },
    {
      "commit": "8666663e6e6dfe615c8e29cae4a42c8f135b7554",
      "tree": "b48123f318943d7151511e629f49eb6d1627e121",
      "parents": [
        "7632cb9be5519ea9eace14a55fa9998f85c2af26"
      ],
      "author": {
        "name": "Cibu Johny",
        "email": "cibu@google.com",
        "time": "Mon Feb 22 13:01:02 2010 -0800"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Mon May 16 16:03:31 2011 -0700"
      },
      "message": "View horizontalDirection public attribute resolution to an internal var.\n\nChange-Id: Id87ab188faef27ff039cf6a400118707ee74a27d\n"
    },
    {
      "commit": "b5dde704cd2db7a0eb09243637ccbf4b3465ad3d",
      "tree": "2339748a3f1f59dacca1f126180b1ed86fcb1d60",
      "parents": [
        "56729cb9df408300266fac4b200c1798d61dd458",
        "7632cb9be5519ea9eace14a55fa9998f85c2af26"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Mon May 16 15:13:10 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 16 15:13:10 2011 -0700"
      },
      "message": "Merge \"Adding horizontalDirection public attribute for View.\""
    },
    {
      "commit": "7632cb9be5519ea9eace14a55fa9998f85c2af26",
      "tree": "bd063b15a187052b9cdce5cf2b951df85a19c206",
      "parents": [
        "f470ced7cdb10a112a526339f92840587918aa6b"
      ],
      "author": {
        "name": "Cibu Johny",
        "email": "cibu@google.com",
        "time": "Mon Feb 22 13:01:02 2010 -0800"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Mon May 16 15:08:27 2011 -0700"
      },
      "message": "Adding horizontalDirection public attribute for View.\n\nChange-Id: Ic8a03447252e4e155c3ee874b1d8c8ac0bc9f7f5\n"
    },
    {
      "commit": "f97ed771979162c4a2a75959c57fb793438a3a8b",
      "tree": "7cfd542b6ab2730e26f3e4fee51548cf441af311",
      "parents": [
        "b107f4dec334b4c54584d4af21a7ceefc14947f2",
        "d90a2c4d4463085155444efb07eba2d6579b444a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 16 13:01:38 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 16 13:01:38 2011 -0700"
      },
      "message": "am d90a2c4d: am 1e662c32: Merge \"DO NOT MERGE.  Integrate from master: Rework display size access.\" into honeycomb-mr2\n\n* commit \u0027d90a2c4d4463085155444efb07eba2d6579b444a\u0027:\n  DO NOT MERGE.  Integrate from master: Rework display size access.\n"
    },
    {
      "commit": "ac8dea12c17aa047e03a358110aeb60401d36aa2",
      "tree": "373ab19dcf21fce62352a6b511855261017649b5",
      "parents": [
        "700ab1c75862babba90f54e02bdc877becd4f4fc"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 20 18:18:51 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 16 11:58:27 2011 -0700"
      },
      "message": "DO NOT MERGE.  Integrate from master: Rework display size access.\n\nApplications now get the display size from the window manager.  No\nbehavior should be changed yet, this is just prep for some real\nchanges.\n\nChange-Id: I47bf8b55ecd4476c25ed6482494a7bcc5fae45d2\n"
    },
    {
      "commit": "fbdf9df053800afb25453630d11bd48cbc068271",
      "tree": "ff3a8fb715a9db39ceb59098f51719e7f5c62069",
      "parents": [
        "b131d288f2c90daf95c678ad12c9708082a2977a",
        "2a20583a5f436d66ab73cd6c0fdc73e59a3cecad"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 16 11:09:31 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 16 11:09:31 2011 -0700"
      },
      "message": "am 2a20583a: am 700ab1c7: Merge \"DO NOT MERGE.  Integrate from master: Improve activity manager debug dumps.\" into honeycomb-mr2\n\n* commit \u00272a20583a5f436d66ab73cd6c0fdc73e59a3cecad\u0027:\n  DO NOT MERGE.  Integrate from master: Improve activity manager debug dumps.\n"
    },
    {
      "commit": "24df0757f86851569b65dadd0dfa139521748b9c",
      "tree": "0da1f9e4c0cbae71c6c81d245165aaf5b14664c5",
      "parents": [
        "d00541603fbbb4e38264e75a2b6abf8705efeb49",
        "ed9321ab5d282e40e7c5fa9caf0eb9d05646f2d0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 13 18:41:04 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 13 18:41:04 2011 -0700"
      },
      "message": "am ed9321ab: am f9dd34f4: DO NOT MERGE: Integrate from main - Deprecate a bunch of APIs.\n\n* commit \u0027ed9321ab5d282e40e7c5fa9caf0eb9d05646f2d0\u0027:\n  DO NOT MERGE: Integrate from main - Deprecate a bunch of APIs.\n"
    },
    {
      "commit": "9a84983a9fd9959671e102045eaf185b83291269",
      "tree": "7235da3c8ad520b16425fee7984cbcd0cacf9b0b",
      "parents": [
        "f9dd34f4d3203fd50363b3b0247c5d0db6fe2c8f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 07 15:11:57 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 13 18:38:19 2011 -0700"
      },
      "message": "DO NOT MERGE.  Integrate from master: Improve activity manager debug dumps.\n\nActivity manager now does all dump requests into apps\nasynchronously, so it can nicely timeout if there is an\napp problem.  Also lots of general cleanup of the am\ndump output.\n\nChange-Id: I99447b87f77a701af52aeca984d93dfe931f065d\n"
    },
    {
      "commit": "f9dd34f4d3203fd50363b3b0247c5d0db6fe2c8f",
      "tree": "aff70d8e3fd3a2ff17231603758c634c5377fb1a",
      "parents": [
        "738c5e6072459c772064c96233cf59639bbfe2fd"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Apr 19 18:44:03 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 13 18:31:04 2011 -0700"
      },
      "message": "DO NOT MERGE: Integrate from main - Deprecate a bunch of APIs.\n\nAnd clean up some documentation.\n\nChange-Id: I8f06e2fc3bb6c552581b64657e82ba690d524232\n"
    },
    {
      "commit": "43be174888684ef3404a43d8434015193c656cce",
      "tree": "9e1f70d853de619e8c3222d195b46b1f1b455a9e",
      "parents": [
        "8c2f85d94145a96f53e9041c609e283be7412a0f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Apr 21 18:45:43 2011 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri May 13 18:19:00 2011 -0700"
      },
      "message": "Add Socket tagging for granular data accounting.\n\nIntroduces public API to apply \"tags\" to track data traffic originating\nfrom the current thread.  (Under the hood, the tags are maintained and\napplied in BlockGuard.)  Also adds tag/untag methods for developers who\nmaintain their own Socket pools.\n\nChange-Id: Ic2dd3155559a93a7b613c7853748d4c44fb3a39e\n"
    },
    {
      "commit": "28a8bce691358dca3872e65d3604f3b0ff3fccaf",
      "tree": "45cee1a9747ee6456c4f20b98cdf6b861e9b03ba",
      "parents": [
        "0d9288d7848e144fdf7afbd7284254dae3d13d43",
        "6824c135fe9639c74f38f125d678c20065c3347c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 13 15:45:23 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 13 15:45:23 2011 -0700"
      },
      "message": "am 6824c135: am f3f2d731: Merge \"DO NOT MERGE.  Integrate fragment work from master\" into honeycomb-mr2\n\n* commit \u00276824c135fe9639c74f38f125d678c20065c3347c\u0027:\n  DO NOT MERGE.  Integrate fragment work from master\n"
    },
    {
      "commit": "73162196e712c5f71238642bf8ca0b5984ee51a4",
      "tree": "e755b844704f2162487a6a6024bd0150c57c3dc3",
      "parents": [
        "7d334602168523e3baf3aab92310c566841ca035",
        "30401328c1026389171d454c934c15875c3f7ff0"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri May 13 14:19:17 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 13 14:19:17 2011 -0700"
      },
      "message": "Merge \"Factored out the Accessibility vertical initialization.\""
    },
    {
      "commit": "30401328c1026389171d454c934c15875c3f7ff0",
      "tree": "c90df741bcd4856e899349accf3d1aedfef10f94",
      "parents": [
        "83a7cdc56539d00933c2e25999620cec94c524b6"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu May 12 18:53:45 2011 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri May 13 14:18:37 2011 -0700"
      },
      "message": "Factored out the Accessibility vertical initialization.\n\n1. Accessibility events were filled with data in\n   dispatchPopulateAccessibilityEvent and\n   onPopulateAccessibilityEvent. These events have\n   two axis of population 1) up the class\n   hierarchy to populate information for the event\n   source; 2) down the view hierarchy to populated\n   all the text contained in the source including\n   its descendants. These two axis of population\n   were done in on population pass now the populating\n   the source properties happens in initializeAccessiblityEvent\n   and the text in onPopulateAccessibilityEvent which\n   is called from dispatchPopulateAccessiblityEvent.\n\n2. Removed the string description from events fired from\n   CompoundButton since the event has isChecked()\n   property and it is responsibility of the clients\n   to decide what utterrance to use and if to use such\n   for announcing the checked state.\n\nChange-Id: I5d7f75cf8a87a7a4b3bb7b311e8e642ec9a0faa5\n"
    },
    {
      "commit": "16f6e89c2a4bbf73fe15cb2e81c8fec98c7ac831",
      "tree": "41fa80ed8d08aa627ac827c0adbc124d11a2f29a",
      "parents": [
        "0ed2e845db3f6bc7bc12a08ada18363942c2fb3d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 15 19:00:20 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 13 12:42:22 2011 -0700"
      },
      "message": "DO NOT MERGE.  Integrate fragment work from master\n\nBack-port new fragment detach APIs from support lib.\n\nThis allow a much cleaner implementation of things like the\nfragment pager class.\n\nIntegrate from support lib: fix restore of list state.\n\nThe FragmentManager/ListFragment impl was restoring the list\nstate before setting its adapter.  This caused the list view to\nlose the state, since it gets cleared as part of setting the\nadapter.  Now the fragment manager waits on restoring the view\nhierarchy state until after it has done onActivityCreated(),\nat which point we have set the adapter.\n\nIt would be nice to make list view less fragile in this regard,\nbut that is for a different change.\n\nChange-Id: I38606ef7d0b06478995f3fb7726aead67420e172\n"
    },
    {
      "commit": "65f47d88107b2e34e4bab1f5208bff3f73ce4e8a",
      "tree": "f78d55c1374dc07e571eed2c1ad638c5fd4ba325",
      "parents": [
        "5684d6bc7e768e905d163cd94b92c977f15c6d89",
        "fe9f8ab03a63b1037f07dd85799fbea80ec6adaa"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 13 12:14:27 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 13 12:14:27 2011 -0700"
      },
      "message": "Merge \"Add initial API for stylus and mouse buttons.\""
    },
    {
      "commit": "fe9f8ab03a63b1037f07dd85799fbea80ec6adaa",
      "tree": "c0cfa91d0537321eeee0ede693fb414d8778a1a2",
      "parents": [
        "1abf1c59f8b15d5b4b198063b884e268bd79fb32"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 06 18:20:01 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 13 12:11:17 2011 -0700"
      },
      "message": "Add initial API for stylus and mouse buttons.\n\nAdded the concept of pointer properties in a MotionEvent.\nThis is currently used to track the pointer tool type to enable\napplications to distinguish finger touches from a stylus.\n\nButton states are also reported to application as part of touch events.\n\nThere are no new actions for detecting changes in button states.\nThe application should instead query the button state from the\nMotionEvent and take appropriate action as needed.\n\nA good time to check the button state is on ACTION_DOWN.\n\nAs a side-effect, applications that do not support multiple buttons\nwill treat primary, secondary and tertiary buttons identically\nfor all touch events.\n\nThe back button on the mouse is mapped to KEYCODE_BACK\nand the forward button is mapped to KEYCODE_FORWARD.\n\nAdded basic plumbing for the secondary mouse button to invoke\nthe context menu, particularly in lists.\n\nAdded clamp and split methods on MotionEvent to take care of\ncommon filtering operations so we don\u0027t have them scattered\nin multiple places across the framework.\n\nBug: 4260011\nChange-Id: Ie992b4d4e00c8f2e76b961da0a902145b27f6d83\n"
    },
    {
      "commit": "2e4a3236a7634d17f89288e9739a438ecbea0471",
      "tree": "45e1c4c61f4eb9775572d94a55dd91b071b84916",
      "parents": [
        "15f8a6a726658bfb195924bd5d7bb86684a22de0",
        "46a282f323bc05606e4fe1eba795bd9ac7c99819"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 13 11:21:26 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 13 11:21:26 2011 -0700"
      },
      "message": "am 46a282f3: am 0ed2e845: Merge \"DO NOT MERGE.  Integrate add new screen width/height in \"dp\" configs.\" into honeycomb-mr2\n\n* commit \u002746a282f323bc05606e4fe1eba795bd9ac7c99819\u0027:\n  DO NOT MERGE.  Integrate add new screen width/height in \"dp\" configs.\n"
    },
    {
      "commit": "ebff8f92f13513ce37bd74759eb1db63f2220590",
      "tree": "909da02ab7ff47483e227f032828dbdbe7f959af",
      "parents": [
        "a8138732a01b92f0a40f72050b74a3bd4cf6d215"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 18:07:47 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 18:39:51 2011 -0700"
      },
      "message": "DO NOT MERGE.  Integrate add new screen width/height in \"dp\" configs.\n\nYou can now specify resource configuration variants \"wNNNdp\"\nand \"hNNNdp\".  These are the minimum screen width/height in \"dp\"\nunits.  This allows you to do things like have your app adjust\nits layout based only on the about of horizontal space available.\n\nThis introduces a new configuration change flag for screen size.\nNote that this configuration change happens each time the orientation\nchanges.  Applications often say they handle the orientation change\nto avoid being restarted at a screen rotation, and this will now\ncause them to be restarted.  To address this, we assume the app can\nhandle this new config change if its target SDK version is \u003c ICS.\n\nChange-Id: I4acb73d82677b74092c1da9e4046a4951921f9f4\n"
    },
    {
      "commit": "39cf8c97c3aee897cca7f37d3f7e9e36c3639f2d",
      "tree": "e73384673e58850f7cfa3c27fb1a2d772464fb01",
      "parents": [
        "c6c8ada1632b9ea0ff87c1caa1141f93ec2256b2",
        "ec85619f02715a6b4b8c077257b52f04aa1b1dba"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 18:25:57 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 18:37:33 2011 -0700"
      },
      "message": "resolved conflicts for merge of ec85619f to master\n\nChange-Id: Id820ddcb9d19341a1b383b3bef7659a2c0621cfa\n"
    },
    {
      "commit": "ec85619f02715a6b4b8c077257b52f04aa1b1dba",
      "tree": "3da6c5d6d94ad897b6bba5d362242ebf3840e12a",
      "parents": [
        "dda64e9a4af2e7dbc75a3b2fc7c41b9d63848a59",
        "d46849a535ab64fd47fc8e9c557ca5f4da9e977b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 17:39:30 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 12 17:39:30 2011 -0700"
      },
      "message": "am d46849a5: am a8138732: MR2 is going to be API 13.\n\n* commit \u0027d46849a535ab64fd47fc8e9c557ca5f4da9e977b\u0027:\n  MR2 is going to be API 13.\n"
    },
    {
      "commit": "a8138732a01b92f0a40f72050b74a3bd4cf6d215",
      "tree": "d8b5e54795d4663251c2229572ea3d58f68d316a",
      "parents": [
        "df9799f0fc3ef04d9b004ebbda44883f85321b24"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 15:45:21 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 16:26:47 2011 -0700"
      },
      "message": "MR2 is going to be API 13.\n\nChange-Id: I05b65ace073b8731e85b41ac4ae63e2745cb46b5\n"
    },
    {
      "commit": "47f8f0fa70343ea0d150e644f4109fb2d1185044",
      "tree": "8f97c878bd688b7e75d7fbd1c8c3001b6eecb85a",
      "parents": [
        "674b595fa5299d138e068b2b786027d6d6225394"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu May 12 16:23:44 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu May 12 16:25:27 2011 -0700"
      },
      "message": "Add a method to create ParcelFileDescriptors from DatagramSockets.\n\nChange-Id: I16dddb2395628657b140b53a1b2fee5f311b049a\n"
    },
    {
      "commit": "4a627c71ff53a4fca1f961f4b1dcc0461df18a06",
      "tree": "270190b1e030424210b6375ca886c45db10c4fb6",
      "parents": [
        "2bb51bb203c117649db10ad8bd497f199ca797b0"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Apr 01 14:43:32 2011 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue May 10 17:52:51 2011 -0700"
      },
      "message": "Full local backup infrastructure\n\nThis is the basic infrastructure for pulling a full(*) backup of the\ndevice\u0027s data over an adb(**) connection to the local device.  The\nbasic process consists of these interacting pieces:\n\n1. The framework\u0027s BackupManagerService, which coordinates the\n   collection of app data and routing to the destination.\n\n2. A new framework-provided BackupAgent implementation called\n   FullBackupAgent, which is instantiated in the target applications\u0027\n   processes in turn, and knows how to emit a datastream that contains\n   all of the app\u0027s saved data files.\n\n3. A new shell-level program called \"bu\" that is used to bridge from\n   adb to the framework\u0027s Backup Manager.\n\n4. adb itself, which now knows how to use \u0027bu\u0027 to kick off a backup\n   operation and pull the resulting data stream to the desktop host.\n\n5. A system-provided application that verifies with the user that\n   an attempted backup/restore operation is in fact expected and to\n   be allowed.\n\nThe full agent implementation is not used during normal operation of\nthe delta-based app-customized remote backup process.  Instead it\u0027s\nused during user-confirmed *full* backup of applications and all their\ndata to a local destination, e.g. via the adb connection.\n\nThe output format is \u0027tar\u0027.  This makes it very easy for the end\nuser to examine the resulting dataset, e.g. for purpose of extracting\nfiles for debug purposes; as well as making it easy to contemplate\nadding things like a direct gzip stage to the data pipeline during\nbackup/restore.  It also makes it convenient to construct and maintain\nsynthetic backup datasets for testing purposes.\n\nWithin the tar format, certain artificial conventions are used.\nAll files are stored within top-level directories according to\ntheir semantic origin:\n\napps/pkgname/a/  : Application .apk file itself\napps/pkgname/obb/: The application\u0027s associated .obb containers\napps/pkgname/f/  : The subtree rooted at the getFilesDir() location\napps/pkgname/db/ : The subtree rooted at the getDatabasePath() parent\napps/pkgname/sp/ : The subtree rooted at the getSharedPrefsFile() parent\napps/pkgname/r/  : Files stored relative to the root of the app\u0027s file tree\napps/pkgname/c/  : Reserved for the app\u0027s getCacheDir() tree; not stored.\n\nFor each package, the first entry in the tar stream is a file called\n\"_manifest\", nominally rooted at apps/pkgname.  This file contains some\nmetadata about the package whose data is stored in the archive.\n\nThe contents of shared storage can optionally be included in the tar\nstream. It is placed in the synthetic location:\n\nshared/...\n\nuid/gid are ignored; app uids are assigned at install time, and the\napp\u0027s data is handled from within its own execution environment, so\nwill automatically have the app\u0027s correct uid.\n\nForward-locked .apk files are never backed up.  System-partition\n.apk files are not backed up unless they have been overridden by a\npost-factory upgrade, in which case the current .apk *is* backed up --\ni.e. the .apk that matches the on-disk data.  The manifest preceding\neach application\u0027s portion of the tar stream provides version numbers\nand signature blocks for version checking, as well as an indication\nof whether the restore logic should expect to install the .apk before\nextracting the data.\n\nSystem packages can designate their own full backup agents.  This is\nto manage things like the settings provider which (a) cannot be shut\ndown on the fly in order to do a clean snapshot of their file trees,\nand (b) manage data that is not only irrelevant but actively hostile\nto non-identical devices -- CDMA telephony settings would seriously\nmess up a GSM device if emplaced there blind, for example.\n\nWhen a full backup or restore is initiated from adb, the system will\npresent a confirmation UI that the user must explicitly respond to\nwithin a short [~ 30 seconds] timeout.  This is to avoid the\npossibility of malicious desktop-side software secretly grabbing a copy\nof all the user\u0027s data for nefarious purposes.\n\n(*) The backup is not strictly a full mirror.  In particular, the\n    settings database is not cloned; it is handled the same way that\n    it is in cloud backup/restore.  This is because some settings\n    are actively destructive if cloned onto a different (or\n    especially a different-model) device: telephony settings and\n    AndroidID are good examples of this.\n\n(**) On the framework side it doesn\u0027t care that it\u0027s adb; it just\n    sends the tar stream to a file descriptor.  This can easily be\n    retargeted around whatever transport we might decide to use\n    in the future.\n\nKNOWN ISSUES:\n\n* the security UI is desperately ugly; no proper designs have yet\n  been done for it\n* restore is not yet implemented\n* shared storage backup is not yet implemented\n* symlinks aren\u0027t yet handled, though some infrastructure for\n  dealing with them has been put in place.\n\nChange-Id: Ia8347611e23b398af36ea22c36dff0a276b1ce91\n"
    },
    {
      "commit": "fc77165d446520716f18cdc14e30b39a6d8b9bac",
      "tree": "1b8346dd9652ab8ac4546c229899ec56202b3773",
      "parents": [
        "cbb59db7ee1743fdd147c5cbdb179870bf08f849"
      ],
      "author": {
        "name": "Kristian Monsen",
        "email": "kristianm@google.com",
        "time": "Tue May 10 16:44:05 2011 +0100"
      },
      "committer": {
        "name": "Kristian Monsen",
        "email": "kristianm@google.com",
        "time": "Tue May 10 16:53:51 2011 +0100"
      },
      "message": "Deprecating webkit API\u0027s that might not be supported in the future\n\nChange-Id: I992ae207f29a95daff991768cc6fe190471978cd\n"
    },
    {
      "commit": "9aabb95781bee6a44684a6f6feb155e115d24983",
      "tree": "352acaa5576de06831cd43a906654a4dfe6f8dc8",
      "parents": [
        "21696fb98a46da3b6e932bc28f84f932938628e0"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Fri May 06 15:41:37 2011 +0900"
      },
      "committer": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Mon May 09 19:40:12 2011 +0900"
      },
      "message": "Add one shot flag to the subtype\n\nBug: 4257258\n\nChange-Id: I21da9e11c882eea056beb84a2dfb0f28da8a98b1\n"
    },
    {
      "commit": "1b312039a046532532837efd2dac06390ab506c0",
      "tree": "37e60b6963736d63676e540f39d7ba1a7ab5808d",
      "parents": [
        "c54ed966f78b9ee8117931859d62faa6f11fe018"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri May 06 14:55:48 2011 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri May 06 14:55:48 2011 -0700"
      },
      "message": "Remove MediaStore.Audio.AudioColumns.ALBUM_ART\n\nThis column doesn\u0027t actually exist in the corresponding table, and\nnever has, so the presence of this definition is confusing.\n\nChange-Id: I199f9a8effbdc9f45d51060830e3ad83675a0dff\n"
    },
    {
      "commit": "b51cc1dd63808da505cd8beb7300f57dc98ff1d3",
      "tree": "779c28c6094586e0d31447b0cd805d114552e915",
      "parents": [
        "8b1b0548b21e6d8fdfb769d9064cd2ff4232bc3d",
        "e0a799a2ac1ca78e30fbac9e4e12a063425c08d3"
      ],
      "author": {
        "name": "Patrick Dubroy",
        "email": "dubroy@google.com",
        "time": "Thu May 05 14:59:35 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 05 14:59:35 2011 -0700"
      },
      "message": "Merge \"Only delay pressed feedback for Views inside a scrolling parent\""
    },
    {
      "commit": "e0a799a2ac1ca78e30fbac9e4e12a063425c08d3",
      "tree": "2c9b15f937b7c3b3db2bba4cf3df5a54838bbe69",
      "parents": [
        "a0449f03eb12462189f7a75f55e4751e1e2bcbcd"
      ],
      "author": {
        "name": "Patrick Dubroy",
        "email": "dubroy@google.com",
        "time": "Wed May 04 16:19:22 2011 -0700"
      },
      "committer": {
        "name": "Patrick Dubroy",
        "email": "dubroy@google.com",
        "time": "Thu May 05 14:49:20 2011 -0700"
      },
      "message": "Only delay pressed feedback for Views inside a scrolling parent\n\nAdd a method on ViewGroup to determine whether it supports scrolling.\nThis allows us to show the pressed feedback immediately in many cases,\nimproving responsiveness of buttons, etc.\n\nThis patch also lengthens the timeout in order to reduce flashes\nwhen the user is scrolling.\n\nChange-Id: Ieb91ae7a1f8e8f7e87448f2a730381a53947996f"
    },
    {
      "commit": "8f0095cd33558e9cc8a440047908e53b68906f5f",
      "tree": "2f55d779bf102e0c134357d89c7de69d0444634a",
      "parents": [
        "3a5c227279011f850036c29e7c0bc96023298d5c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 02 17:24:22 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 02 18:32:29 2011 -0700"
      },
      "message": "Allows to render with an OpenGL context inside a TextureView.\n\nChange-Id: I59453f7fc3997f0502a1c5d325d37fed376fabc7\n"
    },
    {
      "commit": "a3dcd0a3f1b48fc0d675db7e32c27415a14f6d08",
      "tree": "1fa8ccea7df28af9acf032b5b7844c751bec8a98",
      "parents": [
        "dddaa56f793ad9ecb4e20df746f562ac7f24d158",
        "a3be387375162390a9c83faf6590334d0804178f"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Apr 29 17:49:06 2011 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Apr 29 17:49:06 2011 -0700"
      },
      "message": "Merged \"Adjust mBiggerTouchSlopSquare to the suitable value\"\n\nConflicts:\n\tcore/java/android/view/ViewConfiguration.java\n\nChange-Id: I74de006dbb19fd878591bc90955a1c6e74aa084e\n"
    },
    {
      "commit": "eb8171bcff9bd980dbdfc99b2d843a5bcc0ae3e5",
      "tree": "6e46b759892329ae5da014d7efc919cd8e7607be",
      "parents": [
        "76616b138eb68a77a838a93fdf2f0322e982f706",
        "40209532bff0f83cbbdf408bb3f6e8142e7b02cd"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Apr 29 10:01:23 2011 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Fri Apr 29 10:01:23 2011 -0700"
      },
      "message": "Merge \"Adjust mBiggerTouchSlopSquare to the suitable value\""
    },
    {
      "commit": "9b4bee0f14bbd137b0797127aff2df46a6321ec5",
      "tree": "9f3e8760941e431286b976e0b8d28b702d9d250d",
      "parents": [
        "d93e19aef7abdac18788d5198eb5cdae06f016fd"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Wed Apr 27 19:24:47 2011 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Thu Apr 28 19:13:25 2011 -0700"
      },
      "message": "Introducing the split action bar.\n\nApply (or extend) the theme Theme.Holo.SplitActionBarWhenNarrow or\nTheme.Holo.Light.SplitActionBarWhenNarrow to enable splitting the\naction bar across both the top and bottom of the screen. This places\nthe action menu along the bottom, leaving more room at the top for\ntitles, navigation, and custom views and more room at the bottom for\nmenu items.\n\nTODO: Refine layout of the action menu when placed at the bottom of\nthe screen. Make action modes split as well.\n\nChange-Id: I92c91f99c533f26aecf6b828ed041386c4f16922\n"
    },
    {
      "commit": "ad44445c772efe66fdf063aa8f78d7ae3233570e",
      "tree": "8097234b893dbc0dfe050a0a98e7acecce74b28b",
      "parents": [
        "efe2a0e6ac8183c98dfe969928509e3b32903b40",
        "aa6c24c21c727a196451332448d4e3b11a80be69"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Apr 28 18:47:01 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 28 18:47:01 2011 -0700"
      },
      "message": "Merge \"New widget: TextureView Bug #4343984\""
    },
    {
      "commit": "aa6c24c21c727a196451332448d4e3b11a80be69",
      "tree": "27114ab3852d31723d885f3846ee874a07247126",
      "parents": [
        "9fc27819d75e24ad63d7b383d80f5cb66a577a0d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Apr 28 18:40:04 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Apr 28 18:46:19 2011 -0700"
      },
      "message": "New widget: TextureView\nBug #4343984\n\nTextureView can be used to render media content (video, OpenGL,\nRenderScript) inside a View.\n\nThe key difference with SurfaceView is that TextureView does\nnot create a new Surface. This gives the ability to seamlessly\ntransform, animate, fade, etc. a TextureView, which was hard\nif not impossible to do with a SurfaceView.\nA TextureView also interacts perfectly with ScrollView,\nListView, etc. It allows application to embed media content\nin a much more flexible way than before.\n\nFor instance, to render the camera preview at 50% opacity,\nall you need to do is the following:\n\nmTextureView.setAlpha(0.5f);\nCamera c \u003d Camera.open();\nc.setPreviewTexture(mTextureView.getSurfaceTexture());\nc.startPreview();\n\nTextureView uses a SurfaceTexture to get the job done. More\nAPIs are required to make it easy to create OpenGL contexts\nfor a TextureView. It can currently be done with a bit of\nJNI code.\n\nChange-Id: Iaa7953097ab5beb8437bcbbfa03b2df5b7f80cd7\n"
    },
    {
      "commit": "61773dbda321be54cce0ff4b8cfa993433c1543f",
      "tree": "25ccd566a58afa3031cf4315ef4afb2baea058e9",
      "parents": [
        "4135f45c87d9aedebd0f7999e76d1c53a5042ec2",
        "f715bf95ded30821e81ba93bb48c08725e1c34aa"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Apr 27 21:17:52 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 27 21:17:52 2011 -0700"
      },
      "message": "Merge \"Unhide camera focus area and metering area API.\""
    },
    {
      "commit": "4bbca889df9ca76c398f3a11e871fc6ad4a4514d",
      "tree": "af60d21034235eadf51daf332887945d2143a732",
      "parents": [
        "f076aa5594840baf70fd78a00d1152bd13dfb80c"
      ],
      "author": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Tue Apr 19 18:45:25 2011 +0100"
      },
      "committer": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Wed Apr 27 08:25:24 2011 +0100"
      },
      "message": "Expose TTS engine API\n\nThis is a new API for writing text-to-speech engines.\nThe existing API for apps that use TTS remains the same,\nwith some minor additions.\n\nChange-Id: Id577db449ae0e5baec40621d4a08387dbd755342\n"
    },
    {
      "commit": "64e00980a335d86402e2c318bcf19f58d11b8163",
      "tree": "b87b38a9f7728cf985dcfe4c30cdf5d2a6536f87",
      "parents": [
        "87dfce43075e933972b42a0071329b112af33bef",
        "6cc888e77e17ac522f75bf61403307de8ace2ef3"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Tue Apr 26 13:45:51 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 26 13:45:51 2011 -0700"
      },
      "message": "Merge \"Start ICS header cleanup and finish type matrix.\""
    },
    {
      "commit": "f715bf95ded30821e81ba93bb48c08725e1c34aa",
      "tree": "af443babf17ce86dc29def1929355c596ded0e3c",
      "parents": [
        "88eb5c07f567c30195d4940167cabc50bf2c1e34"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Apr 14 14:04:18 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Apr 27 01:20:53 2011 +0800"
      },
      "message": "Unhide camera focus area and metering area API.\n\nThese API are for touch focus.\n\nbug:3475893\n\nChange-Id: I1e213c0bed0c6fe18dcbfb0457c51c52e7cfae30\n"
    },
    {
      "commit": "c404c4fbc1bef37b7bf2ac0708f5a2165fa08342",
      "tree": "6cd58c5dc470a9957a6e113ec8536e8fe91b22f3",
      "parents": [
        "fbfb7e50c992080b8c7adff70d1d7ea94cf9fdc7",
        "dae7824c4b78d02159c6ad0896f246942d7b3d8c"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Mon Apr 25 17:44:22 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 25 17:44:22 2011 -0700"
      },
      "message": "Merge \"Action bar work for phones\""
    },
    {
      "commit": "dae7824c4b78d02159c6ad0896f246942d7b3d8c",
      "tree": "c83aa633bbf5e2713bde0b35a04f6f585839742a",
      "parents": [
        "a13802d8805c2af2fae4d64e3dee99abd73ecfa9"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Mon Apr 25 15:23:41 2011 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Mon Apr 25 17:42:45 2011 -0700"
      },
      "message": "Action bar work for phones\n\nDrop tabs to a second row at \u003c w480dp\n\nMake 9-patches for the cab\u0027s \"done\" button thinner\n\nAdd a \"disable home\" display option to the action bar to turn off\nfocus and touch feedback when tapping home would do nothing\n\nChange-Id: Ib2eedf311655f02055357321e2e9ad5b9037fed1\n"
    },
    {
      "commit": "6cc888e77e17ac522f75bf61403307de8ace2ef3",
      "tree": "bcd815ba22f2165576399fa1cfcf24f828fc6f43",
      "parents": [
        "466e3a22db283958a1da71cc60a23ce3976a3659"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Fri Apr 22 17:05:25 2011 -0700"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Mon Apr 25 16:09:48 2011 -0700"
      },
      "message": "Start ICS header cleanup and finish type matrix.\n\nChange-Id: If65f96f08c958d330862c543d85dd9d4a0f90e06\n"
    },
    {
      "commit": "7ada57f8baa14740a2484e5f04a78e63a872d8a8",
      "tree": "2d486190824a9cbb57ff7c6fca4f61199eaca062",
      "parents": [
        "1a2210ced1434924f2b459486bfe95c80f5323e7",
        "6081084e8831d12d2dd5a9a340ee7d35a54edb8a"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Mon Apr 25 15:05:24 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 25 15:05:24 2011 -0700"
      },
      "message": "Merge \"Expose more net types to the public.\""
    },
    {
      "commit": "736c2756bf3c14ae9fef7255c119057f7a2be1ed",
      "tree": "5bea187f2f67a91ede0eabfcd0fc15a4b105e7f7",
      "parents": [
        "c1e1f43dab96a317f58e31137c49a4df2e919b83"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Apr 22 18:30:36 2011 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Apr 22 18:30:43 2011 -0700"
      },
      "message": "Touch exploration feature, event bubling, refactor\n\n1. Added an Input Filter that interprets the touch screen motion\n   events to perfrom accessibility exploration. One finger explores.\n   Tapping within a given time and distance slop on the last exlopred\n   location does click and long press, respectively. Two fingers close\n   and in the same diretion drag. Multiple finglers or two fingers in\n   different directions or two fingers too far away are delegated to\n   the view hierarchy. Non moving fingers \"accidentally grabbed the\n   device for the scrren\" are ignored.\n\n2. Added accessibility events for hover enter, hover exit, touch\n   exoloration gesture start, and end. Accessibility hover events\n   are fired by the hover pipeline. An accessibility event is\n   dispatched up the view tree and the topmost view fires it.\n   Thus predecessors can augment the fired event. An accessibility\n   event has several records and a predecessor can optionally\n   modify, delete, and add such to the event.\n\n3. Added onPopulateAccessibilityEvent and refactored the existing\n   accessibility code to use it.\n\n4. Added API for querying the currently enabled accessibility services\n   by feedback type.\n\nChange-Id: Iea2258c07ffae9491071825d966dc453b07e5134\n"
    },
    {
      "commit": "6081084e8831d12d2dd5a9a340ee7d35a54edb8a",
      "tree": "1220d3aa3571eb6a6069ef788185ce1368c77d28",
      "parents": [
        "00425721c14a64979ae29b8a8daf24aafdabc56a"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Apr 22 15:28:18 2011 -0700"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Apr 22 18:09:03 2011 -0700"
      },
      "message": "Expose more net types to the public.\n\nEthernet and bluetooth.\n\nChange-Id: Ic499709ffa151c0f27aef497373a8de7289e3e7f\n"
    },
    {
      "commit": "3fb3d7c4e756bd32d5abde0abca9ab52d559bc84",
      "tree": "a1dcfb8f2cdee81a033b85e27f55129ddb695776",
      "parents": [
        "6c079b6819d749fcb72988c5b06becff081c82fd"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Fri Apr 22 17:08:55 2011 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Fri Apr 22 17:23:44 2011 -0700"
      },
      "message": "Revert \"Touch exploration feature, event bubling, refactor\"\n\nThis reverts commit ac84d3ba81f08036308b17e1ab919e43987a3df5.\n\nThere seems to be a problem with this API change. Reverting for now to\nfix the build.\n\nChange-Id: Ifa7426b080651b59afbcec2d3ede09a3ec49644c\n"
    },
    {
      "commit": "f9fa622cc04028fd7c5f5036ea2e0ccfb80d55f3",
      "tree": "c9b8ec24bd7601233d3e49373ce5d68f01485567",
      "parents": [
        "d0f650c6c3a123c856bb0adb138ae7cd0deed3d1",
        "ac84d3ba81f08036308b17e1ab919e43987a3df5"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Apr 22 16:29:07 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 22 16:29:07 2011 -0700"
      },
      "message": "Merge \"Touch exploration feature, event bubling, refactor\""
    },
    {
      "commit": "ac84d3ba81f08036308b17e1ab919e43987a3df5",
      "tree": "8bf9d7f0b110667e45186d90674465a63e868f26",
      "parents": [
        "1cc1a41b5a095c2eae556c9be0a7ad3f2fc5bfbb"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Apr 04 16:09:08 2011 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Apr 21 18:33:52 2011 -0700"
      },
      "message": "Touch exploration feature, event bubling, refactor\n\n1. Added an Input Filter that interprets the touch screen motion\n   events to perfrom accessibility exploration. One finger explores.\n   Tapping within a given time and distance slop on the last exlopred\n   location does click and long press, respectively. Two fingers close\n   and in the same diretion drag. Multiple finglers or two fingers in\n   different directions or two fingers too far away are delegated to\n   the view hierarchy. Non moving fingers \"accidentally grabbed the\n   device for the scrren\" are ignored.\n\n2. Added accessibility events for hover enter, hover exit, touch\n   exoloration gesture start, and end. Accessibility hover events\n   are fired by the hover pipeline. An accessibility event is\n   dispatched up the view tree and the topmost view fires it.\n   Thus predecessors can augment the fired event. An accessibility\n   event has several records and a predecessor can optionally\n   modify, delete, and add such to the event.\n\n3. Added onPopulateAccessibilityEvent and refactored the existing\n   accessibility code to use it.\n\n4. Added API for querying the currently enabled accessibility services\n   by feedback type.\n\nChange-Id: Iec03c6c3fe298de3f14cb6efdbb9b198cd531a0c\n"
    },
    {
      "commit": "4c1f4f7144ad6d73ca2a28eceb5a1c43664799c7",
      "tree": "0989c53ace111afe0b9b1b8ccee4a5f7dbdf84b2",
      "parents": [
        "041a3209c40dc20e91f5d54ca49b634d9c13a7a7",
        "44bc17c6b517aef35a390c81b5aa79c4f284f744"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 21 16:10:28 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 21 16:10:28 2011 -0700"
      },
      "message": "Merge \"Rework display size access.\""
    },
    {
      "commit": "44bc17c6b517aef35a390c81b5aa79c4f284f744",
      "tree": "b4dabc94a8974f81cf7ea855a93e307205c5b8d7",
      "parents": [
        "52c03d2cb9a782366e804d1910a7c8f072b05353"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 20 18:18:51 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 21 15:17:52 2011 -0700"
      },
      "message": "Rework display size access.\n\nApplications now get the display size from the window manager.  No\nbehavior should be changed yet, this is just prep for some real\nchanges.\n\nChange-Id: I2958a6660895c1cba2b670509600014e55ee9273\n"
    },
    {
      "commit": "d793299e875a97dc73e04e3beb2a2865563dccdb",
      "tree": "e8cdc375a5debec366cb3a6138226c1ab5ed4fe3",
      "parents": [
        "bf96c356c02c430153c281fb81dc1a00f7ad0b43"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Apr 21 14:52:37 2011 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Apr 21 14:52:37 2011 -0700"
      },
      "message": "Add utility method Matrix.perspectiveM\n\nChange-Id: Ic9d5e5d967bbc08acc524c5092ce61a1cdbfd360\n"
    },
    {
      "commit": "8c4da95f6b95f3ce07485ac4e4e7640c32d2e326",
      "tree": "66252697a387f1f1ed9d6bee37c8f3011043c902",
      "parents": [
        "63f9689627b8fd9b94afd35b1274939c56e5642f"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Wed Apr 20 13:58:00 2011 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Wed Apr 20 13:58:00 2011 -0700"
      },
      "message": "Fix the build\n\nChange-Id: I725f0664b5563f6af16929eff59d7a8967600660\n"
    },
    {
      "commit": "7454253d9192009f47d2d92152fcfb59d1501e09",
      "tree": "eadad50b777846cdb331edde91fc2b241827145e",
      "parents": [
        "c199ff6466567827f29a6db87c595adac87a9552",
        "72e738a428d7bb39a371da6105f7e2084e67e39d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 20 12:23:27 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 20 12:23:27 2011 -0700"
      },
      "message": "Merge \"Unhide MediaPlayer\u0027s setDataSource method that takes optional http headers to be\""
    },
    {
      "commit": "72e738a428d7bb39a371da6105f7e2084e67e39d",
      "tree": "b7a8e15f9c48650515d01eb6cdd4695f55be280c",
      "parents": [
        "e85626f33e6988b3314d8978c23923f91c3f49c9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 20 10:55:54 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 20 10:55:54 2011 -0700"
      },
      "message": "Unhide MediaPlayer\u0027s setDataSource method that takes optional http headers to be\n\npassed to the server.\n\nChange-Id: I3c7ce140b2d9cd2483cf05c8aff9b374feff2f18\nrelated-to-bug: 4315346\n"
    },
    {
      "commit": "9567a66a5e6f49dd8495fb5f6e2efb9f32e84b35",
      "tree": "ed995619922077d0ab351a1dc2ba405de04af111",
      "parents": [
        "e85626f33e6988b3314d8978c23923f91c3f49c9"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Apr 19 18:44:03 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 20 10:26:44 2011 -0700"
      },
      "message": "Deprecate a bunch of APIs.\n\nAnd clean up some documentation.\n\nChange-Id: I7882183b3daf883b7ac6098d19f88dc7cfbcdf61\n"
    },
    {
      "commit": "696cba573e651b0e4f18a4718627c8ccecb3bda0",
      "tree": "ac35e215420949d0d5541379e5c127dd88eea08f",
      "parents": [
        "9bf2d9e13c99486779fb40eac8c0f3079339382f"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Tue Mar 29 10:38:16 2011 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Tue Apr 19 13:49:39 2011 -0700"
      },
      "message": "Refactor menu internals.\n\nIn the old world, MenuBuilder and MenuItemImpl were responsible for\ngenerating views for any presentation of a menu. MenuBuilder needed to\nknow any types and resources involved, and the implied caching\nsemantics did not work well for menus presented within AdapterViews.\n\nIn the new world, the MenuPresenter interface takes over the\nresponsibility of generating views or adapters for menu\nitems. MenuBuilder/MenuItemImpl still provide extra metadata tracking\nused by these presenters. Mutiple presenters may be active for a\nsingle menu at a time. All of this remains internal framework\nimplementation details.\n\nBaseMenuPresenter provides a simple base for presenters that treats\nthe host MenuView more like an AdapterView. This allows for less\nrebuilding of views when items are added/removed.\n\nCallbacks have been restructured. Calls that relate to the menu itself\nare still handled by MenuBuilder.Callback, but calls related to a\nspecific presentation of a menu are handled by MenuPresenter.Callback\nobjects attached to a MenuPresenter.\n\nAlso add API to programmatically set divider options for LinearLayout\nand hidden API so that ActionBarView can have finer-grained control\nover divider placement.\n\nChange-Id: I2265b86a084279822908021aec20dfbadc1bb56b\n"
    },
    {
      "commit": "d071ec2b49ee65914b33fca3e8087f14e43237b6",
      "tree": "eb81ad84d8d3a888b72faf1b8b255c3880765289",
      "parents": [
        "a1e99532b4375849a5313c8f9a9152a1fbbe0d36"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 18 14:08:33 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 18 14:08:33 2011 -0700"
      },
      "message": "Integrate from support lib: fix restore of list state.\n\nThe FragmentManager/ListFragment impl was restoring the list\nstate before setting its adapter.  This caused the list view to\nlose the state, since it gets cleared as part of setting the\nadapter.  Now the fragment manager waits on restoring the view\nhierarchy state until after it has done onActivityCreated(),\nat which point we have set the adapter.\n\nIt would be nice to make list view less fragile in this regard,\nbut that is for a different change.\n\nChange-Id: I032d6fe0fefc0dabfae95d44152146029ef5db8e\n"
    },
    {
      "commit": "47c4156567ce5abf8a6fca7fefe6ae9a20fb5117",
      "tree": "accd85c84db9169e2525ea595bb8326d4a14c757",
      "parents": [
        "b0dfade955f2e2e19a827ca2119f3c5d319a824a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 15 19:00:20 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 18 10:18:05 2011 -0700"
      },
      "message": "Back-port new fragment detach APIs from support lib.\n\nThis allow a much cleaner implementation of things like the\nfragment pager class.\n\nChange-Id: I433be3d6c24c9a059d908d442bcfddbf1e8e57e5\n"
    },
    {
      "commit": "68f1b78b7b9139a0e34285ff641a664e664a14b8",
      "tree": "dbd50188b77a1dfab9310daad8550d553cf72204",
      "parents": [
        "c02c97ef7527e19dce067562692c89d27e7bad52"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Mon Apr 11 14:26:04 2011 +0900"
      },
      "committer": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Fri Apr 15 13:49:33 2011 +0900"
      },
      "message": "Add an API to get the last used input method subtype\n\nBug: 4075039\n\n- Voice input requires to know the last used input method subtype.\n\nChange-Id: I603a4fb88a2af5195e52188adfa6585ad80304fa\n"
    },
    {
      "commit": "5819051eee071d622e5cb1f32c74112b1c7b1072",
      "tree": "07fe33f17e6d87fbf10e054c9dbaedf4b9eaf030",
      "parents": [
        "08d9d9a46250c4fad66e9b637e8898a3524c4286"
      ],
      "author": {
        "name": "Urs Fleisch",
        "email": "urs.fleisch@gmail.com",
        "time": "Wed Dec 29 17:02:02 2010 +0100"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Apr 13 12:52:59 2011 -0700"
      },
      "message": "support humidity sensor type\n\nChange-Id: I4156842677e91de0f922284d196147ff61e71a70\n"
    },
    {
      "commit": "0c5001d776d56bae02a5cc2663286a125d99bc5e",
      "tree": "ea7458737297e313c454f18d672e2b997af13990",
      "parents": [
        "26b05f7dc35f47bc62bf9630df288ae2d6e4657e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Apr 12 18:16:08 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Apr 12 18:28:06 2011 -0700"
      },
      "message": "Add APIs to remove tasks.\n\nYou can remove sub-tasks inside of a task, or an entire task.\n\nWhen removing an entire task, you can have its process killed\nas well.\n\nWhen the process is killed, any running services will get an\nonTaskRemoved() callback for them to do cleanup before their\nprocess is killed (and the service possibly restarted).\n\nOr they can set a new android:stopWithTask attribute to just\nhave the service automatically (cleanly) stopped at this point.\n\nChange-Id: I1891bc2da006fa53b99c52f9040f1145650e6808\n"
    },
    {
      "commit": "5e88ac73ce2de9d5eb22ab222ff25c9dcca99644",
      "tree": "1ec98ca0d844ffaa998d17f06ea7c4fef1e1c2b3",
      "parents": [
        "dcd2ef9acc34c70e7a3c698d7e01e8af0af00f20"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Mar 09 13:34:39 2011 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Fri Apr 08 16:21:34 2011 -0700"
      },
      "message": "Use the new API file format, and some minor tweaks to the old XML files that make the parser easier.\n\nChange-Id: I9307d0d323f1b65816b3e097bf9c4d92f3962b2f\n"
    },
    {
      "commit": "b3fc1a5b8b8f88eaf00b05957523cbdc0944b24b",
      "tree": "4b52043bcf0000532117c7515e5c14f8e3203f47",
      "parents": [
        "43a17654cf4bfe7f1ec22bd8b7b32daccdf27c09"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Wed Apr 06 18:28:55 2011 +0900"
      },
      "committer": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Fri Apr 08 13:43:19 2011 +0900"
      },
      "message": "Rename CorrectionSpan to SuggestionSpan\n\nChange-Id: I004b2e012b2de4de959a31da1f55b63ca7c14199\n"
    },
    {
      "commit": "43a17654cf4bfe7f1ec22bd8b7b32daccdf27c09",
      "tree": "a5aac88ebb367a0f046a5724edc8e35cbe192cb9",
      "parents": [
        "ea4af8914a3b6ea68558f20ce502966032ca1ab1"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Apr 06 19:22:23 2011 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Thu Apr 07 19:23:05 2011 -0700"
      },
      "message": "Remove the deprecated things from Config.java. These haven\u0027t been working since before 1.0.\n\nChange-Id: Ic2e8fa68797ea9d486f4117f3d82c98233cdab1e\n"
    }
  ],
  "next": "ea4af8914a3b6ea68558f20ce502966032ca1ab1"
}
