)]}'
{
  "log": [
    {
      "commit": "bd181bb83282571eb793d2e4a48b4d19585de7f2",
      "tree": "6e47cf17024e47ef936adcb301a4092debbcebcd",
      "parents": [
        "23a5f44c5a306b4a70821722a697da55cc3c5db8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 10 16:44:24 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 10 16:44:24 2013 -0700"
      },
      "message": "Propagate input ANR reason to activity manager log.\n\nMake it a little easier to diagnose input dispatch timeouts by\nproviding the detailed reason as the ANR annotation in the log.\n\nBug: 10689184\nChange-Id: Ie18fd9ad066b0673d1f57c030e027ad0085f4650\n"
    },
    {
      "commit": "0b31d812abe152cee3208f59be45bc94d9b299d5",
      "tree": "3a7f45cce134243bc31ce6e9b728223fad1117c1",
      "parents": [
        "7e458235ac2f2522bea07aa24423b39d1729d2e3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 22 19:41:29 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 22 20:07:08 2013 -0700"
      },
      "message": "Drop touch events when no window was touched.\n\nPrevent spurious ANRs in the case where an input event is simply\nundeliverable because there is no window at the touched location.\nPreviously, we would assume that we were just waiting for an\napplication to start and become available to handle the event but\nthis assumption is no longer valid.\n\nMonkeys in particular have a tendency to inject events outside\nof the boundaries of the display which results in spurious ANRs.\nSo we should just reject them.\n\nBug: 9774124\nChange-Id: I5c40ce4c942f0557593a229dc5253a0e0bdb8466\n"
    },
    {
      "commit": "eeadb32488852d8fa6b44c8ce2b6c0a1c8a5346a",
      "tree": "f051a85a68e0f8a7b25c3610942ae0b1cffca3bd",
      "parents": [
        "59703c7186ea49669e7dd326a1e2e704385cbaff"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Aug 14 13:44:23 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Aug 14 17:33:27 2013 -0700"
      },
      "message": "Bound touch and tool axes lengths below at 0\n\nChange-Id: I75ca196312201773cfabb74ee5b28a7d80f6ba60\n"
    },
    {
      "commit": "6876f3210764559a2fcccdd16079f7a66a871570",
      "tree": "3a1feca4026378228902d16f0a603285cd206bc6",
      "parents": [
        "ef981a40aa63069dc115b216ce38d1dd939dc64c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 07 16:46:50 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 07 16:48:06 2013 -0700"
      },
      "message": "Dump information about recent input events.\n\nTo help track down ANRs, include more information about recent\nevents in the input dispatcher dumps.\n\nBug: 9774124\nChange-Id: I94732f173d3518c2f4780668d2eb3ee9ae9fcb10\n"
    },
    {
      "commit": "ac6c78b6eef49f5c1ab2a346d90ccb99ccec18f4",
      "tree": "18f7a2e4727360f0431697e995d865a8d2f8944d",
      "parents": [
        "6944165014bf026e24aafe0cb359d7aad66bea7b"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Jul 17 13:21:45 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Jul 23 13:50:10 2013 -0700"
      },
      "message": "Add controller numbers for gamepads / joysticks\n\nChange-Id: I30ac9add6a2473a5ebd83a022c571545e61d1136\n"
    },
    {
      "commit": "7caaeeb6a8a4c4d299b14617c643f96a5055f2f7",
      "tree": "03b394a1d5e6d06f0a34e2b44a96b4779fc0ec26",
      "parents": [
        "c5236deeb0b0025a3dba54d688590d9146b5dbf3",
        "7ddd11035b25b0a2dbf09f9d9efd3fca701f0a79"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Jul 19 22:45:50 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 19 22:45:51 2013 +0000"
      },
      "message": "Merge \"Add input device property for buttons under touchpads\""
    },
    {
      "commit": "c5236deeb0b0025a3dba54d688590d9146b5dbf3",
      "tree": "341a0248bbb312a565d9adce8510a27053b32efd",
      "parents": [
        "5712ca7f2e6ac0c7914875a580380fb363e86566",
        "398d309c616ee5e1661282d7fce38db4cfb24ee6"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Jul 19 22:44:57 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 19 22:44:57 2013 +0000"
      },
      "message": "Merge \"Properly set the tap down time when entering non-tap modes\""
    },
    {
      "commit": "7ddd11035b25b0a2dbf09f9d9efd3fca701f0a79",
      "tree": "90453201ab65b9673dbd78e073254694a37b6498",
      "parents": [
        "dc990e7c61430156b05563417b979e0858baf9da"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon May 20 15:04:55 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Jul 17 16:19:25 2013 -0700"
      },
      "message": "Add input device property for buttons under touchpads\n\nBug: 8990644\nChange-Id: I2cc10457595a861b707c0394bd435d60efa8405b\n"
    },
    {
      "commit": "713412fd54aba940ff67ab804292a2033681df89",
      "tree": "a8308608365a9f98be2f166ceea02f6270901126",
      "parents": [
        "471fb03d461441cd0d9f4a79ed8126c923032218",
        "7e0fad1d442428b9a2ba5d88ce7f8a59869acb0e"
      ],
      "author": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Thu Jul 11 08:08:18 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 11 08:08:18 2013 -0700"
      },
      "message": "am 7e0fad1d: am 8b95d259: am b7925f22: Merge \"Revert \"Stop marking gamepads as keyboards\"\" into jb-mr2-dev\n\n* commit \u00277e0fad1d442428b9a2ba5d88ce7f8a59869acb0e\u0027:\n  Revert \"Stop marking gamepads as keyboards\"\n"
    },
    {
      "commit": "7e0fad1d442428b9a2ba5d88ce7f8a59869acb0e",
      "tree": "c54e8af22ec80e315b6eb555c1070bba4ceefa5e",
      "parents": [
        "fc13329b8430a62c02f7109e1b7cf0abcaa896ee",
        "8b95d259b9f66342ba5ae6e8f4ea262dcb1de05b"
      ],
      "author": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Tue Jul 09 10:25:02 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 09 10:25:02 2013 -0700"
      },
      "message": "am 8b95d259: am b7925f22: Merge \"Revert \"Stop marking gamepads as keyboards\"\" into jb-mr2-dev\n\n* commit \u00278b95d259b9f66342ba5ae6e8f4ea262dcb1de05b\u0027:\n  Revert \"Stop marking gamepads as keyboards\"\n"
    },
    {
      "commit": "b7925f2219480d4ddbb1c655b9b386ed031815a3",
      "tree": "5adf3795de27739aeab1f6c1ca6c4fc8c4f9014f",
      "parents": [
        "ea4193efaafb280e9e969cae72a4f43b913ae8b0",
        "02a44f7d4715bf876aad6b420a0c7c1782965aa0"
      ],
      "author": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Tue Jul 09 17:20:37 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 09 17:20:39 2013 +0000"
      },
      "message": "Merge \"Revert \"Stop marking gamepads as keyboards\"\" into jb-mr2-dev"
    },
    {
      "commit": "02a44f7d4715bf876aad6b420a0c7c1782965aa0",
      "tree": "eb5e4f663f0fc3ce1ff6fe7cdc217ace356c67bb",
      "parents": [
        "74c8fb601ef75d8e12df5221489c41c125e3b846"
      ],
      "author": {
        "name": "Ken Wakasa",
        "email": "kwakasa@google.com",
        "time": "Fri Jul 05 04:08:36 2013 +0000"
      },
      "committer": {
        "name": "Ken Wakasa",
        "email": "kwakasa@google.com",
        "time": "Fri Jul 05 04:08:36 2013 +0000"
      },
      "message": "Revert \"Stop marking gamepads as keyboards\"\n\nThis reverts commit 74c8fb601ef75d8e12df5221489c41c125e3b846.\n\nChange-Id: If8ca4d09b4d52f11d48dabebf2dff2984760cdc0\nbug: 8896129\n"
    },
    {
      "commit": "398d309c616ee5e1661282d7fce38db4cfb24ee6",
      "tree": "e719108ed6d6c9c9e1fa22cafefb01d69e77464f",
      "parents": [
        "7f48bea96b2f374a3c810255a73a5abbbd708da4"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Jul 02 17:35:00 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Jul 02 17:35:00 2013 -0700"
      },
      "message": "Properly set the tap down time when entering non-tap modes\n\nThis prevents us from erroneously generating tap gestures on things like quick\nbutton presses.\n\nChange-Id: I708e7df9341df589927fd2c0e15c202ccb30ba9b\n"
    },
    {
      "commit": "9d3b1a424c5c61e24e9659d15fb353026a00d925",
      "tree": "0e543391e3ac7b6ac0bff377e08cd2e233ef7363",
      "parents": [
        "8f5e3d13e166e4873e130a5ef7c987333dbac917"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 01 19:07:15 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 01 20:11:42 2013 -0700"
      },
      "message": "Move input library code to frameworks/native.\n\nNo longer compile libandroidfw as a static library on the device\nsince it already exists as a shared library.  Keeping the static\nlibrary would force us to provide a static library version of\nlibinput for the device as well which doesn\u0027t make sense.\n\nChange-Id: I3517881b87b47dcc209d80dbd0ac6b5cf29a766f\n"
    },
    {
      "commit": "e33243ff182621510c57ce77534360bacb45f29e",
      "tree": "e6a66444e6e406ad9c6e0033419e010aa61da4cb",
      "parents": [
        "883ffa243d9559aeffda635916913e627e746935",
        "ef0c3e269f15200a3a1111ce9f80516b2d38590a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 28 15:48:47 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 28 15:48:47 2013 -0700"
      },
      "message": "am ef0c3e26: am c8c82009: resolved conflicts for merge of 7573e594 to stage-aosp-master\n\n* commit \u0027ef0c3e269f15200a3a1111ce9f80516b2d38590a\u0027:\n  Properly rotate full [-pi, +pi] orientation range if available\n"
    },
    {
      "commit": "c8c82009dc8c146efadac6b51702922148f6003f",
      "tree": "b99ad196c60c4f204bf0bb5f231594dffc43a694",
      "parents": [
        "79df1e65455fdb69f07675cffae99dea06a5afb2",
        "7573e5947a643dd8b8a97ee9dbf1dab398ad4ea7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 28 15:43:16 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 28 15:43:16 2013 -0700"
      },
      "message": "resolved conflicts for merge of 7573e594 to stage-aosp-master\n\nChange-Id: Ic19294c82ec023707e23b5848901426433b22e9f\n"
    },
    {
      "commit": "5e025eb1dc151a158d2fd7b12bb3a1c891b25d81",
      "tree": "40c0739bda4bf6ca409970a546b0e7bf3d26f4c4",
      "parents": [
        "62f47bc29588e495a6f8efd082b34a92f8ec2098"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed May 15 23:16:54 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu May 23 15:06:47 2013 -0700"
      },
      "message": "Pipe through bounding box information (DO NOT MERGE)\n\nBug: 9110236\nChange-Id: I7aefe6589fbaf92e5c71a0ba5425623578bafe95\n"
    },
    {
      "commit": "a66c789f61d44c1e70a982afbd941d9939d20bf1",
      "tree": "88f91f9bb8f1612b9c5423a0a52826804801e661",
      "parents": [
        "11f33b50bba47430100a1701f4b08f47b3cad9f2",
        "86172f6252fe2ed49a1cdea5cafd0ba2e049255d"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue May 21 20:03:49 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 21 20:03:49 2013 +0000"
      },
      "message": "Merge \"Pipe through bounding box information\""
    },
    {
      "commit": "2251059ee1b6cce15a6a410f332685fe8f17d495",
      "tree": "0170784ab127021ee696c48b12b392995dadea6c",
      "parents": [
        "e9b2f9a0694ac74f4b2b92ddd12067fedaec7016",
        "1bff36f95471e231ad54cc8d51a5dc6d148f1e53"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@google.com",
        "time": "Tue May 21 05:00:30 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 21 05:00:30 2013 +0000"
      },
      "message": "Merge \"Build native libinput tests using BUILD_NATIVE_TESTS\""
    },
    {
      "commit": "86172f6252fe2ed49a1cdea5cafd0ba2e049255d",
      "tree": "854dd44eac4cef7364704d8200c6d16d22028f47",
      "parents": [
        "119143de98a289d02937b0392c7665c7236a5970"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed May 15 23:16:54 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon May 20 16:25:14 2013 -0700"
      },
      "message": "Pipe through bounding box information\n\nChange-Id: Ic09f2f8f18e21f9582e4ed10aad3b7ec1cc41ddc\n"
    },
    {
      "commit": "4361e1f46ef9e30c78679b5e2717b74d66191692",
      "tree": "f9b9d1fe7fd81511e7931ef19fd22b5ca105135d",
      "parents": [
        "3c1ad55fcfa54c2c30073d07917da699d156dc58"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri May 17 14:25:52 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri May 17 21:30:02 2013 +0000"
      },
      "message": "Remove assist swipe from TOUCH_NAVIGATION devices\n\nBug: 9019927\nChange-Id: I0a67ee00038b6fba7818f64ba02515767e34fe06\n(cherry picked from commit 681a3d710402b80a8375a05172b1fb6f720295be)"
    },
    {
      "commit": "1bff36f95471e231ad54cc8d51a5dc6d148f1e53",
      "tree": "7f15259ad3cfe6d906e5011e0ccd61e690e2fe23",
      "parents": [
        "aebadaff02e4a1a94b82c5711893da71ad6590d2"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@google.com",
        "time": "Thu May 16 23:07:47 2013 -0700"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@google.com",
        "time": "Thu May 16 23:07:47 2013 -0700"
      },
      "message": "Build native libinput tests using BUILD_NATIVE_TESTS\n\nChange-Id: Ic50c828e1e8879e70aa85de63303ead11886d498\n"
    },
    {
      "commit": "2b08c611c88bcb17cfb0861fed67cec6d009e83b",
      "tree": "334c8a79fa2808cbf8dab7fd2fd14c4cb8a02345",
      "parents": [
        "22a3344cda1a3dcf4f719e0685c5d06155922c29"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Apr 24 20:05:10 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Apr 24 20:08:40 2013 -0700"
      },
      "message": "Mirror LTRIGGER / RTRIGGER as BRAKE / GAS for compatibility\n\nBug: 8590913\nChange-Id: If2918a67ecdd946ed850acc002ca021e150ec39d\n"
    },
    {
      "commit": "f7104136927f45e152cec3583463b8ef1570df7b",
      "tree": "9381f8828a66c3d7a7c854d23619abf0135eb8c2",
      "parents": [
        "5180ed141db0f1acced4f19f37391572bc18280b",
        "74c8fb601ef75d8e12df5221489c41c125e3b846"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Apr 10 21:14:27 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 10 21:14:27 2013 +0000"
      },
      "message": "Merge \"Stop marking gamepads as keyboards\" into jb-mr2-dev"
    },
    {
      "commit": "4dac901f011e7c15882e260441225633a6435e49",
      "tree": "c7023a841c1630bf6713b145a91723c4b91423f0",
      "parents": [
        "a9574e3361e168671d627071e26280f69d0d081b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 10 01:03:19 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 10 03:51:18 2013 -0700"
      },
      "message": "Rewrite touch navigation dpad synthesis.\n\nThe new implementation more accurately tracks the velocity\nof flings and takes care to avoid obvious discontinuities.\nThe main goal is for a fling to appear to be a linear\nextension of the movement already in progress.  The minimum\nfling velocity is set to ensure that flings appear to be\nfairly smooth despite being discretized.\n\nUse sequences of repeated key events instead of individual\ndown/up events to represent continuous motions in one\ndirection which can be helpful for stopping flings at boundaries\nsuch as when flinging the cursor position within a text view.\n\nCompute the movement thresholds based on the physical\nsize of the touch pad, if known.  If not known, we assume a\nnominal size.\n\nSupport stopping flings with a tap just like we do for\nnormal touch events elsewhere in the framework.\n\nMoved the detection of ASSIST swipes into the InputReader\nwhere it belongs.  These swipes must be detected globally\nto ensure consistent behavior across the all applications.\n\nAdded a custom protocol in EventHub to enable input device\ndrivers to override the timestamp of the following events\nin a packet.  This change enables input device drivers\nthat have a better idea of when an input event was actually\ngenerated to pass this information to the input system.\nParticularly useful with uinput.\n\nBug: 8583760\nChange-Id: I8ef4e827804786d549cfaa00793a2b9dd0fda465\n"
    },
    {
      "commit": "d685894212e6dbeac1fda4996903c1da115d49a6",
      "tree": "c52d05c78811e79a869afbcdbe55a906e38f2fa1",
      "parents": [
        "9fa49cc3308f6af593d780581121afc3c1d7e046"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:54:12 2013 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:54:12 2013 -0700"
      },
      "message": "Add liblog\n\nBug: 8580410\nChange-Id: I746aa8258866508c3a725d0773faf4518096548f\n"
    },
    {
      "commit": "74c8fb601ef75d8e12df5221489c41c125e3b846",
      "tree": "a77590f8fe7e6a9be11a4d5e1b0915c2d1e2585a",
      "parents": [
        "b482a001f117d0da3599475a293da736fccd4d2c"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Apr 08 18:01:29 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Apr 08 20:05:32 2013 -0700"
      },
      "message": "Stop marking gamepads as keyboards\n\nChange-Id: I0ba49aa3235b2e0a50405cf6d68632e268fe4183\n"
    },
    {
      "commit": "c6091c64c90e9557ea58e0d7cf75915aea7c6c3e",
      "tree": "f5f69d5bbd0270d7a1b7564920e6f31f381704cd",
      "parents": [
        "77d94957d793aba16a1352d25d5555bf59fe74e7"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Apr 01 20:56:04 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Apr 04 18:10:37 2013 -0700"
      },
      "message": "Pipe through device resolution information\n\nBug: 8424494\nChange-Id: Iafeeee0d5cd29342c1cdc86b9616222aaa5d1b94\n"
    },
    {
      "commit": "40f8f0d1366e8ba47a17376e51c9fc7291ffdc16",
      "tree": "789318ed00d2c11e62522721f138c04be9ffd9b0",
      "parents": [
        "d8b50ab6fedf97d0667ba26a2a3d6eb6694e4add"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Mar 26 13:11:30 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Mar 26 14:34:14 2013 -0700"
      },
      "message": "Deliver key repeats for artificial dpad events\n\nBug: 8425219\nChange-Id: Ib41b06ed40d43f2e30ce2a647871a76cea80177b\n"
    },
    {
      "commit": "75ebb37fafcaea7692d46b5abdbcd1465d88eea2",
      "tree": "6fe86077a69e6d16bd61d4fde8560c96a18a7f6a",
      "parents": [
        "765ddb4bf42634cc729017503833c3b077e4f29c"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Mar 15 16:27:29 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Mar 21 20:45:03 2013 -0700"
      },
      "message": "Add APP_SWITCH to app switch input dispatching optimization\n\nChange-Id: I8a95fbf311ebd62bcdaaeecfacaea7996ddaec74\n"
    },
    {
      "commit": "70bca4cc8a37c34ec5cdb0405b2e7e2c2779630d",
      "tree": "72b215782f654ae8282482f94f322c7dd37433d6",
      "parents": [
        "c9e0cd2ac7b1df3e60f0ca8bab6a7240bade07d9"
      ],
      "author": {
        "name": "Jason Gerecke",
        "email": "killertofu@gmail.com",
        "time": "Fri Mar 01 11:49:07 2013 -0800"
      },
      "committer": {
        "name": "Jason Gerecke",
        "email": "killertofu@gmail.com",
        "time": "Fri Mar 15 17:19:09 2013 -0700"
      },
      "message": "Properly rotate full [-pi, +pi] orientation range if available\n\nThe code currently in place assumes that orientation has a range\nof [-pi/2, +pi/2] as may be found with a touch digitizer. However,\nwhen used with a digitzer that can report the full [-pi, +pi] range\nof orientations (e.g. a stylus) the calculations here are incorrect.\n\nThis patch checks if the post-rotation value is out of range for\nthe axis, and wraps it back around.\n\nChange-Id: I03a22f7bf9526a5d995df1a18430d6dd24c6d6ee\n"
    },
    {
      "commit": "e7a9ae8ba0fb7fc61960e3facd0c5534e9ffce1e",
      "tree": "cc5172cc643067df271ac91c222cc8336ffdc894",
      "parents": [
        "74e4156e5c62392c37f4a70358de30dcfff4956f"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Mar 08 15:19:19 2013 -0800"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Mar 11 17:58:22 2013 -0700"
      },
      "message": "Add touch navigation input source\n\nBug: 8276741\nChange-Id: I674b9804bf9ae76d694ae7073b54a7d43474a43c\n"
    },
    {
      "commit": "c50536b85a0ad9a2d09c0dc7fea1c6667b9c69a9",
      "tree": "d6667a640b67088cfec77fcfbdae6c24e48cf751",
      "parents": [
        "0d1ab1db229ffc1d776df466b02e2b51c004df9c",
        "a0a72850c255b69f8f37e7602215287947bf2432"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Sat Feb 23 06:33:08 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 23 06:33:08 2013 +0000"
      },
      "message": "Merge \"Disable kernel keyrepeat\""
    },
    {
      "commit": "a0a72850c255b69f8f37e7602215287947bf2432",
      "tree": "f9db793cd518d10f2287d12bc0d5ddcae3dccf50",
      "parents": [
        "47e8074d401b0a2c38b376329bfe8bf1f62da23b"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Feb 21 23:51:45 2013 -0800"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Feb 22 14:46:49 2013 -0800"
      },
      "message": "Disable kernel keyrepeat\n\nBug: 6332980\nChange-Id: Ife69167285aad24ed3e4fa5b65abf59d8dfa4f0a\n"
    },
    {
      "commit": "76f56dd598045dadae6dee5e8547bd077b980d5c",
      "tree": "125dc1e867a66be668757dcc26c842ab79355a66",
      "parents": [
        "df93fdb6c0d00bcbf548c4f1fa16be8bc3b15334",
        "ceec31b7dab6a23e443d5dcbcfac4a23b720cfde"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 15 14:28:22 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 15 14:28:22 2013 -0800"
      },
      "message": "am ceec31b7: Merge changes I5a218ca1,I853a76d9\n\n* commit \u0027ceec31b7dab6a23e443d5dcbcfac4a23b720cfde\u0027:\n  Refactoring: Rename SurfaceTextureClient to Surface\n  clean-up following Surface split\n"
    },
    {
      "commit": "52800617946c456e78ed010c82d0ec4358368164",
      "tree": "bad73c6c8deec082b972569b6f2e57a43e8d2d41",
      "parents": [
        "29479ebe1007361222bf6ab4d5e2a27927d4b8e8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 14 17:11:20 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 15 12:47:40 2013 -0800"
      },
      "message": "Refactoring: Rename SurfaceTextureClient to Surface\n\nChange-Id: I5a218ca11abeeec05e3a4c3cfc581bcc788814ea\n"
    },
    {
      "commit": "7c1a49f5f5ed6613d736464bf5001b777e89ced2",
      "tree": "c6726264bde03f4c5957876921d4b15a835b2c71",
      "parents": [
        "d04892d207d50378356feef181ac4e4eff9652d7"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 13 10:25:12 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 13 10:50:20 2013 -0800"
      },
      "message": "Revert \"Merge remote-tracking branch \u0027goog/master-chromium\u0027 into \u0027goog/master\u0027\" DO NOT MERGE\n\nThis reverts commit 6c0307dd0aefe9a08794b155fc03ee60ebd14f25, reversing\nchanges made to a2cd828b749c444d55c2c41c7dbb85088ff94b9f.\n\nConflicts:\n\tpackages/SystemUI/res/values-sv/strings.xml\n\nChange-Id: Ia178efe8b14751583d47b2826bfe3d3d5463dd2e\n"
    },
    {
      "commit": "fc615a0f643408956fc0dc1b997871e2b27cee7e",
      "tree": "4365ec88e252096d312fc4c6b0b529b9876eed95",
      "parents": [
        "82f2cc312e50f54d289783d67eca5c55a158917b"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu Dec 20 14:39:57 2012 -0500"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Tue Jan 08 10:00:54 2013 -0500"
      },
      "message": "Remove calls to SkCanvas::setBitmapDevice()\n\nChange-Id: Ib0aa2f65b77802b105c0e8a9d7cdde2e863d3673\n"
    },
    {
      "commit": "074b8b7cf19d128f16e0de12bc2fc58e7438ec37",
      "tree": "f772ea5caeadb85c46980cba75d4ef1cc8bac816",
      "parents": [
        "c8dc8eb3275a6d05e27824f322796e97e5e50e2f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Oct 31 19:01:31 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Oct 31 19:01:31 2012 -0700"
      },
      "message": "Eliminate potential reentrance from unregisterInputChannel.\n\nEnsure that all callbacks into the window manager policy occur\non the input dispatcher thread in the right place.  This fixes\na potential deadlock that may occur if the window manager\nunregisters an input channel while holding its own lock.\n\nThe change is simply to defer running asynchronous commands\n(usually callbacks into the policy) until the next iteration\nof the dispatch looper thread.\n\nBug: 7382388\nChange-Id: I90095580d717fcddb2209ef332df56400f837a34\n"
    },
    {
      "commit": "f33b2b2b2483fa824c650b281159ca62e1d0123a",
      "tree": "fbad3fecf3697d311bbbe16746d046a7696ca343",
      "parents": [
        "f948500239803b2b7247ff5058e39e4d645c5b70"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 05 17:59:56 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 05 19:33:28 2012 -0700"
      },
      "message": "Recover from bad input event timestamps from the kernel.\n\nThis can happen due to a race when the input device is\nopened or if the kernel happens to be missing the required\nAndroid patches to set the timestamp correctly.\n\nBug: 7291243\nChange-Id: If4319440eaff2889147c86296abd39efc5664346\n"
    },
    {
      "commit": "1e3b98d47df596d0c4eadbdf60143709f8465b28",
      "tree": "ed63fa39f6d2db3b3a3fd9caf61174129198c6cc",
      "parents": [
        "1f7a09b5df9f859781d9cfa0053fad44c72c2168"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 30 18:58:59 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 01 14:27:34 2012 -0700"
      },
      "message": "New internal API to eliminate poke locks.\n\nAdded a new WindowManager.LayoutParams inputFeatures flag\nto disable automatic user activity behavior when an input\nevent is sent to a window.\n\nAdded a new WindowManager.LayoutParams field userActivityTimeout.\n\nBug: 7165399\nChange-Id: I204eafa37ef26aacc2c52a1ba1ecce1eebb0e0d9\n"
    },
    {
      "commit": "bcc046af4ef171aa3aa3c6b64efb5cafc1e46cd3",
      "tree": "497724ac54d4a380b5f466ea48a3a96265446754",
      "parents": [
        "580ee8b0c6e1aea1e2e1d60499b603b9168b44f0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 27 20:46:43 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 27 21:42:57 2012 -0700"
      },
      "message": "Bundle correlated switch changes atomically.\n\nThis is a prerequisite for headset jack detection on Manta.\n\nBug: 6548391\nChange-Id: I549a194344511c0cee578b00f6a9ab5fdbdfb99c\n"
    },
    {
      "commit": "83d616a9c7b9505153d258511eb5c16b552e268d",
      "tree": "4df9620550008dc0e3e0daf21f442b9fe6cc8051",
      "parents": [
        "7a8cce3d8a6fb781d840ddf60324a301f5a3f2d9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 09 20:33:43 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Sep 10 15:48:47 2012 -0700"
      },
      "message": "Make input system aware of multiple displays.\n\nThe input system needs to know about the window that has\nfocus, even if it is on a secondary display.  So now we\nsend it the list of all windows and indicate which display\nthey are on.  We filter the list of windows as necessary\nwhen delivering touch events.\n\nTo keep things simple, monitor input channels and input\nfilters are not supported except on the main display.\nWe also do not pass the display id to applications; it is\nonly used inside the input system for now.\n\nProperly scale touch coordinates based on the viewport.\nThis will be needed to ensure that touch works on external\ndisplay as well as when the internal display is being used\nto simulate a different resolution.\n\nChange-Id: I1815579a52fcc852c519b5391fc7ab8767c2dc59\n"
    },
    {
      "commit": "d728bf514f257670fcb9aa22c6eaf97626072c93",
      "tree": "dedf4c8771ab1e1b618ea0d75e5f8328b0bfe83a",
      "parents": [
        "631938f26dbc89e7e9530bb85d9f37706dba59f3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Sep 08 18:05:28 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Sep 08 18:12:57 2012 -0700"
      },
      "message": "Make display manager tell input system about viewports.\n\nThe window manager is no longer responsible for telling the\ninput system about the display viewport.\n\nChange-Id: I932882bae55decef55f25093bb2a7ebac1620bb1\n"
    },
    {
      "commit": "4fd42e5a90e88e34d2e870852a4d26457a712d16",
      "tree": "9728b8d9ae9344298129d3c1d0db2852a64f01b5",
      "parents": [
        "64a55af0ac700baecb0877235eb42caac59a3560"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 26 22:49:01 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 14:34:55 2012 -0700"
      },
      "message": "Remove unused \"layer\" argument from show().\n\nChange-Id: I795edb8889bbacdf20fc54d755034040295f281a\n"
    },
    {
      "commit": "64a55af0ac700baecb0877235eb42caac59a3560",
      "tree": "0f3c36ce8204e6cf8eedf04ce9ae24373239ddd8",
      "parents": [
        "0b722fe9ce98d97dbcb6fefd170b85ab7037e528"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 26 02:47:39 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 14:34:54 2012 -0700"
      },
      "message": "Add plumbing for new surface flinger display API.\n\nCleaned up the implementation of Surface and SurfaceSession\nto use more consistent naming and structure.\n\nAdded JNI for all of the new surface flinger display API calls.\n\nEnforced the requirement that all Surfaces created by\nthe window manager be named.\n\nUpdated the display manager service to use the new methods.\n\nChange-Id: I2a658f1bfd0437e1c6f9d22df8d4ffcce7284ca2\n"
    },
    {
      "commit": "0b722fe9ce98d97dbcb6fefd170b85ab7037e528",
      "tree": "67b40b76ec957ba919dd9e7d9b450fa7d2b2bfd9",
      "parents": [
        "d59db50ab0c3c7a232b2a564e763ca46c6f6ebfa"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 24 22:40:14 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 14:34:53 2012 -0700"
      },
      "message": "Use new surface flinger API.\n\nChange-Id: Ic888577408a59a36481a48010e19c5e77c24e211\n"
    },
    {
      "commit": "b696de5c10ebcc7bf42d8487fc0e56e0e937754d",
      "tree": "3339fd190bad6be36c5e2ba8f57ebc11a5bb972b",
      "parents": [
        "155fc70252fd9ccee1f05da4e6966a99ec86d499"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 27 15:38:50 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 27 18:14:56 2012 -0700"
      },
      "message": "Move and rename user activity event type constants.\n\nChange-Id: Ie565808796773b6896e71ddfac6aaaf8031de846\n"
    },
    {
      "commit": "037f727f49ddf4f5575f6440799261bd1289eb6e",
      "tree": "441322056e00250bb770b07b1a3ffd7812180aa6",
      "parents": [
        "88c997a5abb3b2b2df1fb17fa3af40b34fbdd590"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 25 17:31:23 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 25 17:35:13 2012 -0700"
      },
      "message": "Improve handling of size and orientation.\n\nSome touch device drivers report the range of\nABS_MT_ORIENTATION as [0,1].  The Linux multitouch protocol\nspec says that the 0 value should always be considered vertical.\n\nAdd a new \u0027box\u0027 calibration mode for size to handle the case\nwhere width and height are being provided.  The \u0027diameter\u0027\ncalibration mode is inadequate because it drops one of these\ncomponents.\n\nChange-Id: I7bd744fdff95acd4044d295efe8bd7186dbe8061\n"
    },
    {
      "commit": "22aa51202652efbd55094217a046b8e5ecb7afe2",
      "tree": "19e5d1d7b7349c7255d46499bfa7d2593dd3f6b7",
      "parents": [
        "c4637d3efbbeb3e204691da96c357b5fea4ae2f1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 17 12:01:06 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 17 15:51:30 2012 -0700"
      },
      "message": "Capture input dispatcher\u0027s last ANR state in bug report.\n\nSome ANR bugs are very difficult to localize because by the time\nthe bug report has been captured, the relevant information is\ngone.  Work around this by capturing a log of the input dispatcher\u0027s\nstate at the exact time of the ANR before anything has changed\nand include this information in the bug report.\n\nAlso fixed a nit related to some format strings that had\nimproper field widths specified.\n\nBug: 6680398\nChange-Id: I5323bf18ec5e47a767cd053209753cc46852bf4c\n"
    },
    {
      "commit": "265f1ccc5128319d81eee70ee2d2ae81573efb11",
      "tree": "eb9ccd9eca60ccf645c22651e40850fecc1b5ed7",
      "parents": [
        "68cefd201809372a547257a273b805cabbd0da68"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 11 18:01:06 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 11 18:05:31 2012 -0700"
      },
      "message": "Improve ANR diagnostics.\n\nWhen an ANR occurs, log the associated reason.\n\nWhen an event takes too long to process (currently more than 2 seconds)\nlog basic information about the event including how long it actually\ntook.\n\nDump the contents of the inbound, outbound and wait queues as part\nof dumpsys input.\n\nBug: 6574842\nChange-Id: I9ab754c320f609cb86fe266c469a61e7032dfed6\n"
    },
    {
      "commit": "8249fc61837db488191213ac85355287cf8b4fdd",
      "tree": "e9b5f09ae2fac930313bb1878c818f7d6a4343ab",
      "parents": [
        "53d003f0e77291e7382c4871e0828014b470ab9f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu May 24 18:57:32 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu May 24 19:34:39 2012 -0700"
      },
      "message": "Don\u0027t ANR on hover, scroll or if a window goes away.\n\nPrevents ANR on hover or scroll events.\n\nPrevents ANR in the case where one finger touches a window which\nis subsequently removed then a second finger comes along and tries\nto touch something.\n\nChange-Id: I985ccb70cd86659992328f14f8a705f3f05ea2e5\n"
    },
    {
      "commit": "286298896bd33e7c44bfca881b64262fcab08c9c",
      "tree": "61ec332ce83ca0ca6f25046e35659aec029d8b66",
      "parents": [
        "44f41f28eaeee4097644ab9bfce5f969977b0428",
        "25a465bb44497682fde84935100e0acf4a0eb5db"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Wed May 16 13:24:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 16 13:24:10 2012 -0700"
      },
      "message": "Merge \"Revert \"services: input events: enable debugging in EventHub (touch screen issues)\"\" into jb-dev"
    },
    {
      "commit": "25a465bb44497682fde84935100e0acf4a0eb5db",
      "tree": "8226d74cc09125dd32c5f4110f38460c111e19c0",
      "parents": [
        "df0a89daa8018f9dec53d8d766e5a045347ffc93"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Wed May 16 10:33:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 16 10:33:49 2012 -0700"
      },
      "message": "Revert \"services: input events: enable debugging in EventHub (touch screen issues)\"\n\nThis reverts commit df0a89daa8018f9dec53d8d766e5a045347ffc93\n\nGet rid of the debugging for the release."
    },
    {
      "commit": "8a90e6e3174083f274538567d851f98478fc83e9",
      "tree": "2ac01015731bac0d759c8e7b6526ffa4874a369b",
      "parents": [
        "2f0957607411b99810226ad38d59cf18718b86d0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 11 12:24:35 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 11 12:32:56 2012 -0700"
      },
      "message": "Minor refactoring before starting on velocity tracker changes.\n\nBug: 6413587\nChange-Id: I5eba2bb57193bff78cb3740de5f87aca0b31d154\n"
    },
    {
      "commit": "571d4cbeec4adad050b8e188770e7e7dedc558f1",
      "tree": "1e51786b265cfef9db6ee5024a543ffd2bf81a50",
      "parents": [
        "9e1b58a1234256aada06521cb445673ca4236a0c",
        "fd23e3ed976b22b9a92ddb2cb3a46f9d2a0ce23f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 09 17:35:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 09 17:35:07 2012 -0700"
      },
      "message": "Merge \"Fix bugs in fallback key handling.\" into jb-dev"
    },
    {
      "commit": "fd23e3ed976b22b9a92ddb2cb3a46f9d2a0ce23f",
      "tree": "b3d9f4d12fe2d93ba9979e6d66b1d9f4de016178",
      "parents": [
        "af67fc65bf113b028ff33e71cd6a45810018c273"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 09 13:34:28 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 09 13:34:28 2012 -0700"
      },
      "message": "Fix bugs in fallback key handling.\n\nIf a fallback key is generated using a key plus a modifier,\nthen it\u0027s possible we might get a different fallback key\ngenerated if the modifier has changed.  PhoneWindowManager\nneeds to remember which fallback is last generated for a\ngiven key code so that it can apply the same fallback action.\n\nWhen generating cancellation events, it\u0027s important to have\npreserved the policyFlags of the original event.  Otherwise\nwe may not dispatch the cancellation properly.  For example,\nsome actions are not performed if the POLICY_FLAG_TRUSTED\nis not specified.\n\nRemember the metaState associated with a key event so we can\ninclude it when canceled.\n\nTell the policy when a fallback is being cancelled so that it\ncan clean up its state.\n\nAfter a SEARCH shortcut is invoked, clear the flag indicating\nthat a shortcut is pending.  This is to prevent SEARCH from\ngetting stuck down in the case where we might forget to send\nthe up.  (Shouldn\u0027t happen anymore after the prior fixes.)\n\nBug: 5616255\nChange-Id: I68f0a9679c7af464eaf31c099f2aa50b53fecf1f\n"
    },
    {
      "commit": "956f9bd0049b86b45868dfbd9b539d3ac35cdec2",
      "tree": "5a0df41cb01efecca571531c72851efaa0b406d5",
      "parents": [
        "794db6cbac6b9cd46ca300b2dc5cf9f8450a34fe",
        "df0a89daa8018f9dec53d8d766e5a045347ffc93"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Wed May 09 10:41:28 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 09 10:41:28 2012 -0700"
      },
      "message": "Merge \"services: input events: enable debugging in EventHub (touch screen issues)\" into jb-dev"
    },
    {
      "commit": "df0a89daa8018f9dec53d8d766e5a045347ffc93",
      "tree": "3e67728f90e7790314fae581581c0db89a6fd4bd",
      "parents": [
        "29bb27ef90564a294d506c2ffd546ba21788aeac"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Tue May 08 16:38:33 2012 -0700"
      },
      "committer": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Tue May 08 16:38:33 2012 -0700"
      },
      "message": "services: input events: enable debugging in EventHub (touch screen issues)\n\nEnable verbose logging, but limit the output of events to only those that\nare stale by more than 1ms.\nThis does not overly pollute the logcat output.\n\n\nBug: 6258051\nChange-Id: I32012a379ca0e97c0834975482cd91f9eeb08907\n"
    },
    {
      "commit": "c042ee2acd8529b95c5dc99240d626e61d2500cd",
      "tree": "4af0331cce7c05242025c6c02506a5addd2c3ee9",
      "parents": [
        "a7771df3696954f0e279407e8894a916a7cb26cc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 08 13:03:42 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 08 13:58:32 2012 -0700"
      },
      "message": "Disable input dispatch until boot finished.\n\nBug: 6263070\nChange-Id: I25e15e3d8af8eb3343c7b684fec345337d9f6aab\n"
    },
    {
      "commit": "a75fe05b6e0728ada82cd18dc3ac1ae3a61a10fb",
      "tree": "348ba26557db84e165c32abeee6027153b56edd2",
      "parents": [
        "daa3753a04699724d2cfe824ac1f5a266d643a05"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 01 18:41:26 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 01 18:41:26 2012 -0700"
      },
      "message": "Use EVIOCSCLOCKID correctly.\n\nBug: 6382031\nChange-Id: I87b0887ce867a79758bcd24e2202280270faaf8c\n"
    },
    {
      "commit": "daa3753a04699724d2cfe824ac1f5a266d643a05",
      "tree": "ddc33d395dd0f3d01a95775397356983fb28a076",
      "parents": [
        "32c8113510b2774f865e8ac763976b90d9db2706"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 01 15:54:03 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 01 16:34:20 2012 -0700"
      },
      "message": "Improve handling of built-in keyboard.\n\nThe window manager policy made some incorrect assumptions about the\nmeaning of the Configuration.keyboard field.  We need to be more\ncareful about distinguishing between built-in and external keyboards.\n\nMost of this change is to move the determination of the parts of\nthe Configuration related to input devices into the WindowManagerService\nleveraging new features of the InputManagerService to good effect.\n\nThen we plumb through the flag that indicates whether a device\nis internal or external so that we can be more particular about\nhow the lid switch effects changes to the Configuration.\n\nBug: 6424373\nChange-Id: I36a1c22ade35e578955465a25940a33f227b9763\n"
    },
    {
      "commit": "c3742a18a6106f9c61eba16b00d15efa88f6f51a",
      "tree": "48f5d283e0dd7fb6e793746427954b201fcc47fa",
      "parents": [
        "0430ce908510f501276e7f588ba5c34d33a9d27a",
        "7086cd5c75073b75cd4a7d61aaa9f0529450e4e5"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Tue Apr 24 16:08:22 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 24 16:08:22 2012 -0700"
      },
      "message": "am 7086cd5c: am 5600deb7: am d26a8b73: am cda8329e: Merge \"Distance max set incorrectly\"\n\n* commit \u00277086cd5c75073b75cd4a7d61aaa9f0529450e4e5\u0027:\n  Distance max set incorrectly\n"
    },
    {
      "commit": "8239940d0efb7e536d932473c535c1d9bb0ab658",
      "tree": "6c9d5d4ed0dc3e5381db90691c479b28fa24b05a",
      "parents": [
        "fee88fdb64cd6c0a51b11426e28a1484390d473b"
      ],
      "author": {
        "name": "Andreas Sandblad",
        "email": "andreas.sandblad@sonymobile.com",
        "time": "Wed Mar 21 14:39:57 2012 +0100"
      },
      "committer": {
        "name": "Henrik Baard",
        "email": "henrik.baard@sonymobile.com",
        "time": "Mon Apr 23 09:53:30 2012 +0200"
      },
      "message": "Distance max set incorrectly\n\nThe distance max used in the MotionRange is calculated\nincorrectly.\n\nLooks like a copy-and-paste error.\n\nChange-Id: I2b6daab088df0fb69e05682b67ca33524ff35987\n"
    },
    {
      "commit": "5bbd4b4f5fc19302fa017ad6afee6eb2d489d91a",
      "tree": "2bc118a5ef332003cc7f6791968076c48b3cf84b",
      "parents": [
        "9e6d4b035d4f012d23264d3d2bc946b1ca02dba1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 20 19:28:00 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 20 20:11:12 2012 -0700"
      },
      "message": "Get alias for Bluetooth devices.\n\nBluetooth devices can be renamed by the user.  Make the\ninput system aware of the user-specified name and transparently\npass it down to applications.  This enables the keyboard\nlayout picker Settings UI to use device names that are\nconsistent with what the user set in the Bluetooth UI.\n\nBug: 6363157\nChange-Id: I8eea26ce2c69c2a3f09c8de02e9e847610e0419c\n"
    },
    {
      "commit": "f44e39493c471b5e6a0807778c7a6439ea1b8adc",
      "tree": "d07153558b48cf8ec07d752a0e527bf5679056e2",
      "parents": [
        "80a76276dc9440ffad30dc4c820eb7d65f4df368"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 20 11:33:27 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 20 11:33:27 2012 -0700"
      },
      "message": "When ANR happens, only remove ANR\u0027d window.\n\nThe system bar uses input event injection to inject BACK keys\ninto the application.  If the receiving application ANRs, we\nused to clear the touch state unconditionally.  Doing so would\nprevent the system bar from receiving the ACTION_UP event so\nthe back button would continue to appear pressed until pressed\nagain.\n\nNow we are more careful to only remove the specific ANR\u0027d\nwindow from the touch state.  Other windows should continue\nto receive touch events as usual.\n\nChange-Id: If86bfc323e2c7aed82ca1334bc67da649953168f\n"
    },
    {
      "commit": "00710e906bdafd58386ee7f81fa84addd218122f",
      "tree": "f682c32f4975b41cb75c2b721f68443fe90cb0ca",
      "parents": [
        "6ec0c6afafd9bad5e4c33578e9355997a280649c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 19 15:18:26 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 19 15:21:08 2012 -0700"
      },
      "message": "Make InputDevice.SOURCE_STYLUS meaningful.\n\nBug: 5424551\nChange-Id: I415cb1842422e050cc41b17f5a1f13b4fab17a44\n"
    },
    {
      "commit": "61c08240585a6186b4bd879d87f238b3efc368f8",
      "tree": "eea1c0be7804cc8e672f9db04a0887be9eb3c54f",
      "parents": [
        "c3643b901308289132269aa3af9a738cd2b60f08"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 19 11:14:33 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 19 11:25:09 2012 -0700"
      },
      "message": "Don\u0027t load keyboard layout overlay for virtual keyboard.\n\nBug: 6110399\nChange-Id: I07c85cf991790ed8766b097acc39295a8065a5ea\n"
    },
    {
      "commit": "426f905b840a710314cc4e91ea4f03bd0c4bcbfb",
      "tree": "0e5c6e0c53ebf1a73c3597441b4bab04e9c237a3",
      "parents": [
        "4a3862f6b0a8971b6ab5b1c46735b28e7604d0db"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 19:52:56 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 19:52:56 2012 -0700"
      },
      "message": "Fix build.\n\nChange-Id: I277042c91b34af59e70941fd5b458581310b1c22\n"
    },
    {
      "commit": "4a3862f6b0a8971b6ab5b1c46735b28e7604d0db",
      "tree": "4091176054868659d2fa6bec36540f56c08bd116",
      "parents": [
        "6ec6f79e1ac1714e3b837796e99f07ff88f66601"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 18:50:05 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 18:50:05 2012 -0700"
      },
      "message": "Add Dvorak keyboard layout.\n\nAdded support for mapping both scan codes and HID usages to\nKeyLayoutMap and KeyCharacterMap.  Keyboard overlays can\nnow influence how key events are mapped to key codes.\n\nBug: 6110399\nChange-Id: I6619fd2d3e1337c55928f89869dbc45b535c7ccf\n"
    },
    {
      "commit": "6ec6f79e1ac1714e3b837796e99f07ff88f66601",
      "tree": "02aa55617bfa6dd2eb0bec29156e279c8afaaa0d",
      "parents": [
        "a3bc565882dd3984e995363642b1295fe3d24d10"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 16:52:41 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 17:56:32 2012 -0700"
      },
      "message": "Support loading keyboard layout overlays from resources.\n\nAdded the concept of a keyboard layout overlay, which is\na key character map file that has \"type OVERLAY\".\n\nAdded support for loading keyboard layout overlays from\nresources dynamically.  The layouts are reloaded whenever they\nare changed in the Settings application or an application\nis installed.  This is somewhat more aggressive than necessary\nso we might want to optimize it later.\n\nBefore system-ready, the input system uses just the generic\nkeyboard layouts that are included on the device system image.\nAfter system-ready, it considers the user\u0027s selected keyboard\nlayout overlay and attempts to load it as necessary.  We need to\nwait until system-ready before doing this because we need to\nbe in a state where it is safe to start applications or access\ntheir resources.\n\nBug: 6110399\nChange-Id: Iae0886d3356649b0d2440aa00910a888cedd8323\n"
    },
    {
      "commit": "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": "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"
    },
    {
      "commit": "cc1169831921d9295b2fc01c1eaf7e9b00836f53",
      "tree": "0817567e4363330957337e0b3bb6387c4911e25f",
      "parents": [
        "49ccac530b5a798e3c4a79b66b51b8546a0deed1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 10:05:41 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 10:05:41 2012 -0700"
      },
      "message": "HID usage should take precedence over scan code.\n\nChange-Id: Ibd8988e3dcc0d64f4019ffe491d9789733f9d243\n"
    },
    {
      "commit": "49ccac530b5a798e3c4a79b66b51b8546a0deed1",
      "tree": "0b25fa1110effb7e8aa46905928b0b159daa96ab",
      "parents": [
        "db13a6bf788cc48af86c8acf6f74b416dfd84199"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 11 18:27:33 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 11 20:28:09 2012 -0700"
      },
      "message": "Refactor key code mapping.\n\nAdded handling for EV_MSC / MSC_SCAN which typically reports\nthe HID usage associated with a key.  This will enable key maps\nto map keys with HID usages that Linux does not natively recognize.\n\nRemoved keyCode and flags fields from EventHub RawEvent since\nthey don\u0027t necessarily make sense in isolation now that we\npay attention to HID usage codes too.\n\nRemoved the fallback code for mapping keys and axes.  In practice,\nan input device should be self-sufficient.  We should not ever\nneed to look at the built-in keyboard\u0027s key map.  In fact, there\nusually isn\u0027t a built-in keyboard anyhow.  This code was originally\nworking around a problem where we weren\u0027t loading the key map\nfor touch screens with virtual keys, which has long since been fixed.\n\nChange-Id: I0a319bdec44be9514f795526347397e94d53a127\n"
    },
    {
      "commit": "9f25b7fdf216c9ef0bd2322cd223eeaf0d60f77f",
      "tree": "b0b509a261874435cab3f5f1a727c02b399bd91c",
      "parents": [
        "54ae14749bc7f9e73cfda35a8b49f9efa80a77fb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 10 14:30:49 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 10 18:23:58 2012 -0700"
      },
      "message": "Request key maps from input manager service.\n\nInstead of each application loading the KeyCharacterMap from\nthe file system, get them from the input manager service as\npart of the InputDevice object.\n\nRefactored InputManager to be a proper singleton instead of\nhaving a bunch of static methods.\n\nInputManager now maintains a cache of all InputDevice objects\nthat it has loaded.  Currently we never invalidate the cache\nwhich can cause InputDevice to return stale motion ranges if\nthe device is reconfigured.  This will be fixed in a future change.\n\nAdded a fake InputDevice with ID -1 to represent the virtual keyboard.\n\nChange-Id: If7a695839ad0972317a5aab89e9d1e42ace28eb7\n"
    },
    {
      "commit": "eca3cf58c096d5a4ba4ae80318f72266c21a9a6d",
      "tree": "e2752cf46002373db2eca01ebbbedf1368aeae18",
      "parents": [
        "12578bde993ff907ce285a68db34ad6c5756c5b0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 06 19:31:36 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 09 11:00:37 2012 -0700"
      },
      "message": "Use new EVIOCSCLOCKID ioctl if supported.\n\nBug: 6292993\nChange-Id: I718f167c2cd41298ed54847dbc5de872cd4c7e4a\n"
    },
    {
      "commit": "e38fdfae9196afd1bdc14c5ec6c12793af1e2550",
      "tree": "54523ccf3fc36a1b50410e2cb6e6d1f7230c40cf",
      "parents": [
        "dc0dbbd4a005f16624978b95817b33156acac526"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 06 14:51:01 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 06 14:57:19 2012 -0700"
      },
      "message": "Add a unique input device descriptor.\n\nThe purpose of the input device descriptor is to make it possible\nto associate persistent settings for each input device, such as the\nkeyboard layout.\n\nThe descriptor is a hash of the information we have about the\ndevice, such as its vendor id, product id, unique id, name,\nor location.\n\nBug: 6110399\nChange-Id: Idb80f946819b3f0dbf4e661bb0a753dbc2b60981\n"
    },
    {
      "commit": "481c1570dc5cdf58265b53f657801709dd05d1df",
      "tree": "7e70a03aeab58afe04a0ce0365255f735bf184bf",
      "parents": [
        "43ea54bdc343a913f62885304796e4ab1bca4ef1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 09 14:41:15 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 09 15:43:50 2012 -0800"
      },
      "message": "Add Java wrappers for new atrace functionality.\n\nInstrument a few parts of the input dispatcher and the\nview hierarchy.\n\nChange-Id: I49285c9fb3502253baa1ffed60f521b8c24fccaf\n"
    },
    {
      "commit": "8335f1ccccedb6655d96d9d5b697a7f0938235dd",
      "tree": "30a7f8b3e646157365dd51222665a68753fa25e3",
      "parents": [
        "57235fc65b5920f4867e66c8263efab49e92a21b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Feb 25 18:48:35 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 13:03:08 2012 -0800"
      },
      "message": "fix libgui header location\n\nChange-Id: Iec71706cdd4f29c6904993648ce873e83ef9cafe\n"
    },
    {
      "commit": "83c64e6b624a876436d2ef5d2f173b10407e27b4",
      "tree": "c4effc3260ab399e8fdae23baf06b076cd87a604",
      "parents": [
        "94d0024557f415b8463f085c9784a3e1d02b58c6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 20 16:58:20 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 20 22:38:43 2012 -0800"
      },
      "message": "frameworks/base refactoring\n\ncreate the new libandroidfw from parts of libui and libutils\n\nChange-Id: I1584995616fff5d527a2aba63921b682a6194d58\n"
    },
    {
      "commit": "b93a03f841d93498bfea6cc92a22faa34bce1337",
      "tree": "b5c2e1c097ad9dc4a3580ee661223794e0560f60",
      "parents": [
        "e97df97b6cb5e4bff8f9da9ecff7cddb7d04ff41"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 17 15:34:57 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 17 15:36:10 2012 -0800"
      },
      "message": "frameworks/base refactoring.\n\nFirst step. Move libui includes to their new home: androidfw.\n\nChange-Id: Ic042b52fdba72f30edc3cc6339bf30b4c1b99662\n"
    },
    {
      "commit": "91e328984c0d1e0f95b3d37f779d9d4fa9bfe8f8",
      "tree": "d34bec78b0c35e3d35110564f39c3a05050d41f5",
      "parents": [
        "58aedbc9bea13415e2d42cf7c9fe8a7efd243e66"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 14 15:56:29 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 14 15:57:59 2012 -0800"
      },
      "message": "Clean up InputChannel file descriptor data type.\n\nFile descriptors are ints.\n\nChange-Id: Ie36733bf36ddfeaa9a09ef6ebd7bd2f1788f5d27\n"
    },
    {
      "commit": "0952c30ac279d5f4cdc032fcbafa372213aa6d86",
      "tree": "f180a4e1d2c3cf301817c3db75008a201fd4b4e5",
      "parents": [
        "2d34e0cfe7e2586b75a6f2c6646dd2e1e52c973f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 13:48:59 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 14:04:24 2012 -0800"
      },
      "message": "Don\u0027t serialize motion events.\n\nOn reflection, only key events need to be serialized.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\nChange-Id: I028b4eac97497d012036cb60ffbac4cb22d3966c\n"
    },
    {
      "commit": "072ec96a4900d4616574733646ee46311cb5d2cb",
      "tree": "9172f3e3295f9d4ff3517a47dec360c2f0a99948",
      "parents": [
        "1adee11b5e644c74a2ed40344f4836de3bd3ac56"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 07 14:46:57 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:41 2012 -0800"
      },
      "message": "Implement batching of input events on the consumer side.\n\nTo support this feature, the input dispatcher now allows input\nevents to be acknowledged out-of-order.  As a result, the\nconsumer can choose to defer handling an input event from one\ndevice (because it is building a big batch) while continuing\nto handle input events from other devices.\n\nThe InputEventReceiver now sends a notification when a batch\nis pending.  The ViewRoot handles this notification by scheduling\na draw on the next sync.  When the draw happens, the InputEventReceiver\nis instructed to consume all pending batched input events, the\ninput event queue is fully processed (as much as possible),\nand then the ViewRoot performs traversals as usual.\n\nWith these changes in place, the input dispatch latency is\nconsistently less than one frame as long as the application itself\nisn\u0027t stalled.  Input events are delivered to the application\nas soon as possible and are handled as soon as possible.  In practice,\nit is no longer possible for an application to build up a huge\nbacklog of touch events.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: I42c01117eca78f12d66d49a736c1c122346ccd1d\n"
    },
    {
      "commit": "1adee11b5e644c74a2ed40344f4836de3bd3ac56",
      "tree": "634e5fd7ce6f3e7508cfdf5ba9d752bd4e83d90e",
      "parents": [
        "d1c48a0525d05021036d4b14e937e221c0ae1318"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 07 10:25:41 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:41 2012 -0800"
      },
      "message": "Optimize dispatcher for back-to-back finished signals.\n\nMinor tweak to the dispatcher to handle as many finished signals\nin a receive callback as possible instead of going back to\nthe Looper and waiting for the next poll() to hit the callback\nagain.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: I8471107371693e21ce8ce7cca1e8d79ba4ca2351\n"
    },
    {
      "commit": "d1c48a0525d05021036d4b14e937e221c0ae1318",
      "tree": "8026832e22d65f633657216488cc89cd54629025",
      "parents": [
        "8b4be56030c3b8c93dfa45bccac7365f90f377ce"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 06 19:12:47 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:41 2012 -0800"
      },
      "message": "Dispatch multiple touch events in parallel.\n\nThis change enables the input dispatcher to send multiple touch\nevents to an application without waiting for them to be acknowledged.\nEssentially this is a variation on the old streaming optimization\nbut it is much more comprehensive.  Event dispatch will stall as\nsoon as 0.5sec of unacknowledged events are accumulated or a\nfocused event (such as a key event) needs to be delivered.\n\nStreaming input events makes a tremendous difference in application\nperformance.  The next step will be to enable batching of input\nevents on the client side once again.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\nChange-Id: I025df90c06165d719fcca7f63eed322a5cce4a78\n"
    },
    {
      "commit": "8b4be56030c3b8c93dfa45bccac7365f90f377ce",
      "tree": "18388eb8a60024a2b566e27fb62d39f3f3e69037",
      "parents": [
        "28b5cf1c33df847d667b8974ba07c4157a49b48a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 06 16:31:05 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:41 2012 -0800"
      },
      "message": "Delete premature optimization.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: I5c182f6e17d468bf3033125b2094b2baa5b94e81\n"
    },
    {
      "commit": "28b5cf1c33df847d667b8974ba07c4157a49b48a",
      "tree": "ca82ec2d78a7a5ebb5b80eeebcc6929db0dd761a",
      "parents": [
        "59f1ff99786e9d4a94270d6752aa3ca61e10f0a6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 06 16:26:21 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:40 2012 -0800"
      },
      "message": "Delete dead code.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: I9f8b93f6a25ddd872f993366b57bab404c93bede\n"
    },
    {
      "commit": "59f1ff99786e9d4a94270d6752aa3ca61e10f0a6",
      "tree": "03a2d9385256ec3f7a392b984131092f282bca48",
      "parents": [
        "9831d90db8fba7e967d22b1f86eea1d6ac831541"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 06 16:23:50 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:40 2012 -0800"
      },
      "message": "Delete latency tracking information in the Connection.\n\nThe information gathered here will no longer be valid once we\nstart dispatching multiple events at a time to the same connection.\nMoreover, we are more concerned with end-to-end latency, which we\ncan measure with sufficiently high accuracy in other ways.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: I49a0c9876b64af56b40e96e0d98c45f325da2a73\n"
    },
    {
      "commit": "9831d90db8fba7e967d22b1f86eea1d6ac831541",
      "tree": "16b990120c420482eb60fcacae153cf009ae2cec",
      "parents": [
        "e9bb9be9e46523ed901e38cfa83f4630f6496418"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 06 15:55:26 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:40 2012 -0800"
      },
      "message": "Remove active connection tracking.\n\nThe dispatcher no longer needs to track which connections are\nactive except perhaps for diagnostic purposes, so we might as well\nremove this code.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: Ibadc830b7b792a59b9244d0a6e85f320c4947109\n"
    },
    {
      "commit": "e9bb9be9e46523ed901e38cfa83f4630f6496418",
      "tree": "697a4870df9e540ecb13575f54d8f3e478c26761",
      "parents": [
        "cbee6d6ede0499fb4a2c00bfc00d5db8d9ed5139"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 06 15:47:55 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:40 2012 -0800"
      },
      "message": "Simplify input target handling in the dispatcher.\n\nSince we no longer stream events to the application, we don\u0027t need to\nkeep the current list of input targets around longer than it takes\nto begin the dispatch cycle.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: I5824b04e564c8a4dec991598292441e46c331905\n"
    },
    {
      "commit": "cbee6d6ede0499fb4a2c00bfc00d5db8d9ed5139",
      "tree": "2ccbec05bbcd99c514673407ca21fb58fc7dd687",
      "parents": [
        "3241b6b7bd7eff64f0118ba2d636030e505a98f9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Feb 03 20:11:27 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:40 2012 -0800"
      },
      "message": "Rewrite input transport using sockets.\n\nSince we will not longer be modifying events in place, we don\u0027t need\nto use an ashmem region for input.  Simplified the code to instead\nuse a socket of type SOCK_SEQPACKET.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: I05909075ed8b61b93900913e44c6db84857340d8\n"
    },
    {
      "commit": "3241b6b7bd7eff64f0118ba2d636030e505a98f9",
      "tree": "9116e5f5ee32645312d8cfc16c12491ec0a28876",
      "parents": [
        "d4762334f103055b3aa59d97d027ace7c5950b6e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Feb 03 15:08:02 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:39 2012 -0800"
      },
      "message": "Remove batching and streaming from the input dispatcher.\n\nDon\u0027t worry, these features will be moving to a different part of\nthe pipeline.  We\u0027re just getting them out of the way for now so\nwe can make deeper changes to how the input dispatcher works.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: If97de923c8165776882eef23f5204cc448dad0fc\n"
    },
    {
      "commit": "308028049a75b36d5ed525c0bcef441da850c2a5",
      "tree": "fd5f6c8563d10381ad192934d26818f9494e7325",
      "parents": [
        "28587f445a2af6d94d1b215e019e8bcc377c17a1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Feb 03 13:35:13 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 07 18:38:11 2012 -0800"
      },
      "message": "Remove the input dispatcher throttle.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\nChange-Id: Iab33594bc5df8aa05232ef64c64e98fc61c5bf52\n"
    },
    {
      "commit": "ed73440416eac56f20054239d6e8480caae1b6d3",
      "tree": "f99cb5b4ae0f6f0a8922db076eb1e8e51fe6e34b",
      "parents": [
        "dd3ba4384325ca0bb7417073b6a11a991829f2ea",
        "874c1e9aa598b45e7114a69ecb4194c167a8b39d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 31 10:05:51 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 31 10:05:51 2012 -0800"
      },
      "message": "Merge \"Use O_CLOEXEC when opening input device.\""
    },
    {
      "commit": "dd3ba4384325ca0bb7417073b6a11a991829f2ea",
      "tree": "6eaf8be2838f2d5216d2631a053fe8695b3a173b",
      "parents": [
        "9d36bd02751e2737520524fca03c6f3770bbb731",
        "e22afbedc1a71905d112d8cf78ca8c2a27e371fe"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 31 10:05:09 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 31 10:05:09 2012 -0800"
      },
      "message": "Merge \"Add basic support for new suspend-block ioctls.\""
    },
    {
      "commit": "112b5f52c5a4b6743eeb7b26a8896c7636c74455",
      "tree": "b9e6ce9e78630475cea99044392dbb3c183626c4",
      "parents": [
        "75ea64fc54f328d37b115cfb1ded1e45c30380ed"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 27 17:32:06 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 27 17:33:42 2012 -0800"
      },
      "message": "Improve watchdog monitor for InputReader and InputDispatcher.\n\nTry harder to test for liveness.  There are situations where\nthe lock might not be held but the input system is stuck in\na callback into the window manager policy that has hung.\n\nBug: 5094994\nChange-Id: Iff88655512a5dc8bbb4615be65f4115e975c020b\n"
    },
    {
      "commit": "06a0fb953ff1c544bdbef2618d20ec1ba551eb6e",
      "tree": "8b34013b112220c0df8686547cfe0ead7c2a63c1",
      "parents": [
        "288cde7f0a17f47f7071168f442d19f703947cc9",
        "5d58eb06bcc8671bae72fb2389a9929e106131cc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 20 11:26:43 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 20 11:26:43 2012 -0800"
      },
      "message": "am 5d58eb06: Merge \"Fix a few memory leaks in the input dispatcher.  (DO NOT MERGE)\" into ics-mr1\n\n* commit \u00275d58eb06bcc8671bae72fb2389a9929e106131cc\u0027:\n  Fix a few memory leaks in the input dispatcher.  (DO NOT MERGE)\n"
    },
    {
      "commit": "f68633da3ced654a9344b5c3b82f4d1c79b6bd09",
      "tree": "a3ce92223f977611f6a1ab6710901a68fad8a968",
      "parents": [
        "c6aacce37191e1cc79cfeba13b39899f59c68c3b"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Mon Jan 09 18:35:44 2012 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:45:08 2012 -0800"
      },
      "message": "Rename LOG_ASSERT to ALOG_ASSERT\n\nChange-Id: Ie2c7ea6560656d65bad791a61996174c75677517\n"
    }
  ],
  "next": "c6aacce37191e1cc79cfeba13b39899f59c68c3b"
}
