)]}'
{
  "log": [
    {
      "commit": "1951ce86c21445ac191e4d2d95233f4f5c096b56",
      "tree": "8c68eb0fe87565bcdaf7cd8bd2a56a03319bede5",
      "parents": [
        "41c076715da58990dc9b0be749bba28fc75d3b78"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 04 22:45:12 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 04 22:45:12 2013 -0700"
      },
      "message": "Correctly manage the lifecycle of IME InputChannels.\n\nInputChannels are normally duplicated when sent to a remote process\nover Binder but this does not happen if the recipient is running within\nthe system server process.  This causes problems for KeyGuard because the\nInputMethodManagerService may accidentally dispose the channel\nthat KeyGuard is using.\n\nFixed the lifecycle of InputChannels that are managed by the IME\nframework.  We now return a duplicate of the channel to the application\nand then take care to dispose of the duplicate when necessary.\nIn particular, InputBindResult disposes its InputChannel automatically\nwhen returned through Binder (using PARCELABLE_WRITE_RETURN_VALUE).\n\nBug: 8493879\nChange-Id: I08ec3d13268c76f3b56706b4523508bcefa3be79\n"
    },
    {
      "commit": "7174a491bc1f89da65eaef3be25f3ea3f3e3bab5",
      "tree": "2171b655c03b965e92a68889ff5bdfea6da10757",
      "parents": [
        "85bd0d62830a098c1bdc720dfdcf4fe1b18b657c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 14 17:00:27 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 14 18:31:53 2012 -0700"
      },
      "message": "Improve touch event resampling.\n\nFixed a few bugs related to the id-to-index mapping for\npointer coordinates.\n\nTightened the bounds on the resampling time interval to\navoid predicting too far into the future.\n\nOnly lerp X and Y components of motion events.\n\nAlter the future to satisfy past predictions.  (Rewrite touch\nevents to conceal obvious discontinuities.)\n\nAdded a system property to control whether resampling is enabled\nfor debugging purposes.\n\nBug: 6375101\nChange-Id: I35972d63278bc4e78148053a4125ad9abeebfedb\n"
    },
    {
      "commit": "771526c88f5cc4b56a41cb12aa06a28d377a07d5",
      "tree": "71c36f271192ee66f069f0d1130a73e91b8302b9",
      "parents": [
        "330314c6fb7c178c0f0da65d6aa8c9e7d3004568"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 27 15:13:25 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 27 15:58:42 2012 -0700"
      },
      "message": "Resample touch events on frame boundaries.\n\nBug: 6375101\nChange-Id: I8774e366306bb2b6b4e42b913525bf25b0380ec3\n"
    },
    {
      "commit": "2b6c32ca4177f1a97307f9cbd81ca485df28762c",
      "tree": "abc217f8ff191ce1ecc7c4eb9b51185b6d47625d",
      "parents": [
        "b2679481b57d87945df02983f95ff8e6c9ba5928"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 13 15:00:09 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 13 15:00:09 2012 -0700"
      },
      "message": "Fix spurious ANRs in native activities.\n\nSome native activities experienced ANRs when the input consumer\ndeferred an input event due to client-side batching.  If the\ninput channel was fully emptied then the client had no way of\nknowing that it should wake up to handle the deferred input event.\n\nThis patch also fixes some lock issues in the native activity\ninput queue implementation.  In at least one error case, it\nwas possible for a function to exit without releasing the lock.\n\nBug: 6051176\nChange-Id: I4d9d843237e69b9834f8d8b360031b677fcab8c3\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": "2d34e0cfe7e2586b75a6f2c6646dd2e1e52c973f",
      "tree": "fbec10b21b79e9055f2deef4fbbb3ca4294c0334",
      "parents": [
        "90fde93c473aca5a33dc41c989bb2fdc5f2b1485"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 13:18:09 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 13:59:32 2012 -0800"
      },
      "message": "Accurately track the sequence numbers of batched events.\n\nInstead of sending finished signals immediately when appending to\na batch, record the chain of sequence numbers that were part of\nthe batch and then send finished signals all at once when done.\nThis change helps the dispatcher keep track of the true state\nof the application and can improve ANR detection slightly.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\nChange-Id: I463c2221e2aa8fdf1c3d670c18e39e59ab69b0db\n"
    },
    {
      "commit": "90fde93c473aca5a33dc41c989bb2fdc5f2b1485",
      "tree": "8011cef8b049d51018daa6b386491c427c400229",
      "parents": [
        "072ec96a4900d4616574733646ee46311cb5d2cb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 12:44:01 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 12:44:01 2012 -0800"
      },
      "message": "Enable deferred input messages to be batched.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\nChange-Id: I6874d2128e880a35c6c33890c858cc6ee22af0fd\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": "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": "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": "3762c311729fe9f3af085c14c5c1fb471d994c03",
      "tree": "7d4caccad80ac7327c7bff96dafc857d5f4631ad",
      "parents": [
        "7a939077bd14521c7d351af98df7ed75a8ec9c15"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 19:20:56 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Sun Jan 08 13:19:13 2012 +0000"
      },
      "message": "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/157220\n\nBug: 5449033\nChange-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c\n"
    },
    {
      "commit": "5baa3a62a97544669fba6d65a11c07f252e654dd",
      "tree": "109755e1595b438873d34b981e31f84ea64bd2a5",
      "parents": [
        "173ab4d61077c49f115b82eff34f97fda5a7273a"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Dec 20 16:23:08 2011 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Jan 03 22:38:27 2012 +0000"
      },
      "message": "Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156016\n\nBug: 5449033\nChange-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298\n"
    },
    {
      "commit": "f7537bccb2b2ca2fa6c0205c4b24acd0836c0006",
      "tree": "aef7683dfb39587b6b881cf956be2b04583bc355",
      "parents": [
        "9837d6d02fc0968614efe5260a176e0c406fe93c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 13 22:18:46 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 13 22:27:37 2011 -0700"
      },
      "message": "Provide more descriptive name for InputChannel ashmem.\n\nChange-Id: I4307de9f717ac4810b1b91ee0c1a3899325acf71\n"
    },
    {
      "commit": "8134681b25dfff814ffeaad8ff70e84316c1869f",
      "tree": "f18a057883c84db1dddd63767dff0b226d8a3e43",
      "parents": [
        "53ca3f13e70fda98aa9f39bb0c15afaf435e3904"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 28 20:08:48 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 28 20:10:40 2011 -0700"
      },
      "message": "Improve input event consistency invariants.\n\nFixed some issues where inconsistent streams of events could\nbe generated by the dispatcher, particularly when switching from\nhovering with one device to hovering with another.\n\nFixed a bug where the touch pad would fail to generate a new\nHOVER_MOVE following a tap event.  As a result, the hover event\nstream would not resume until the user touched the touch pad\nagain.\n\nChange-Id: I444dce84641fb12e56a0af84c931520771d6c493\n"
    },
    {
      "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": "4e91a180be46c0c7c3bf398d4df4cbe2404216b5",
      "tree": "2e96b54a039a917cb0b4b13f318500e3b5f39396",
      "parents": [
        "f6989da7c7727ad433b75ad2c8d8d23c2651f70b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 07 11:38:09 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 07 13:11:16 2011 -0700"
      },
      "message": "Coalesce input events that arrive faster than 333Hz.\n\nSome drivers report individual finger updates one at a time\ninstead of all at once.  When 10 fingers are down, this can\ncause the framework to have to handle 10 times as many events\neach with 10 times as much data.  Applications like\nPointerLocation would get significantly bogged down by all\nof the redundant samples.\n\nThis change coalesces samples that are closely spaced in time,\nbefore they are dispatched, as part of the motion event batching\nprotocol.\n\nIncreased the size of the InputChannel shared memory buffer so\nthat applications can catch up faster if they accumulate a\nbacklog of samples.\n\nAdded logging code to help measure input dispatch and drawing\nlatency issues in the view hierarchy.  See ViewDebug.DEBUG_LATENCY.\n\nChange-Id: Ia5898f781f19901d2225c529a910c32bdf4f504f\n"
    },
    {
      "commit": "ace13b17866dc9136aeecf6dfaf7077f37434469",
      "tree": "0ec5d01ef83b4d5148525f5befa28ca026b294c7",
      "parents": [
        "fd10d5cf56e5b1ba7692400e4fe4ae26b61f3285"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 09 17:39:48 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Mar 14 14:12:03 2011 -0700"
      },
      "message": "Use touch pad gestures to manipulate the pointer.\n\n1. Single finger tap performs a click.\n2. Single finger movement moves the pointer (hovers).\n3. Button press plus movement performs click or drag.\n   While dragging, the pointer follows the finger that is moving\n   fastest.  This is important if there are additional fingers\n   down on the touch pad for the purpose of applying force\n   to an integrated button underneath.\n4. Two fingers near each other moving in the same direction\n   are coalesced as a swipe gesture under the pointer.\n5. Two or more fingers moving in arbitrary directions are\n   transformed into touches in the vicinity of the pointer.\n   This makes scale/zoom and rotate gestures possible.\n\nAdded a native VelocityTracker implementation to enable intelligent\nswitching of the active pointer during drags.\n\nChange-Id: I5ada57e7f2bdb9b0a791843eb354a8c706b365dc\n"
    },
    {
      "commit": "cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413",
      "tree": "7a4e3c578e3e0f2c01fef4d64e721d81c851748e",
      "parents": [
        "6f2fba428ca5e77a26d991ad728e346cc47609ee"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Feb 19 05:07:28 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Feb 19 06:14:21 2011 -0800"
      },
      "message": "Add new hover move action and scroll wheel plumbing.\n\nAdded support for tracking the mouse position even when the mouse button\nis not pressed.  To avoid confusing existing applications, mouse movements\nare reported using the new ACTION_HOVER_MOVE action when the mouse button\nis not pressed.\n\nAdded some more plumbing for the scroll wheel axes.  The values are\nreported to Views but they are not yet handled by the framework.\n\nChange-Id: I1706be850d25cf34e5adf880bbed5cc3265cf4b1\n"
    },
    {
      "commit": "49ed71db425c5054e3ad9526496a7e116c89556b",
      "tree": "3d3b28bdaf76d5cc531fd3b52fcbb0efb32a05ba",
      "parents": [
        "f30c8287525ac049d4d7589a330be5713256046b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Dec 06 17:13:33 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Dec 07 17:35:26 2010 -0800"
      },
      "message": "Add support for fallback keycodes.\n\nThis change enables the framework to synthesize key events to implement\ndefault behavior when an application does not handle a key.\nFor example, this change enables numeric keypad keys to perform\ntheir associated special function when numlock is off.\n\nThe application is informed that it is processing a fallback keypress\nso it can choose to ignore it.\n\nAdded a new keycode for switching applications.\n\nAdded ALT key deadkeys.\n\nNew default key mappings:\n- ESC -\u003e BACK\n- Meta+ESC -\u003e HOME\n- Alt+ESC -\u003e MENU\n- Meta+Space -\u003e SEARCH\n- Meta+Tab -\u003e APP_SWITCH\n\nFixed some comments.\nFixed some tests.\n\nChange-Id: Id7f3b6645f3a350275e624547822f72652f3defe\n"
    },
    {
      "commit": "3915bb845b032dc184dba5e60970b803390ca3ed",
      "tree": "198a47c1d4ada990ef04d563b5e0caaec35abc18",
      "parents": [
        "60029771d26ca3c51288c3d92cab1d3537147acd"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 05 15:02:16 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 08 12:49:43 2010 -0800"
      },
      "message": "Tell system server whether the app handled input events.\n\nRefactored ViewRoot, NativeActivity and related classes to tell the\ndispatcher whether an input event was actually handled by the application.\n\nThis will be used to move more of the global default key processing\ninto the system server instead of the application.\n\nChange-Id: If06b98b6f45c543e5ac5b1eae2b3baf9371fba28\n"
    },
    {
      "commit": "7dae0e47abb5c1fb852c10b3ba0bc6464dd76e96",
      "tree": "fb36ff43a393b81bc1bdbbf6cde025853561b8ac",
      "parents": [
        "6abea1ebc29c7bc8397f0470d57a4e485b5d4ee3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 17:04:52 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 17:04:52 2010 -0700"
      },
      "message": "Ensure input dispatcher and native looper handles EINTR.\n\nChange-Id: I0a42db5f273b9bfe4ab174e4ee65d5d852f9f6bc\n"
    },
    {
      "commit": "85a3176704b5bfbeece9bd928369fbb76eec7dc6",
      "tree": "1a84f21c037b514c5b6717b106f5a9a2c4fd6c99",
      "parents": [
        "c0b4f6d30d962d75125628317b5f5ea622531dfe"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 01 17:01:00 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 08 11:50:55 2010 -0700"
      },
      "message": "Add support for secure views.\n\nAdded the MotionEvent.FLAG_WINDOW_IS_OBSCURED flag which is set by the\ninput manager whenever another visible window is partly or wholly obscured\nthe target of a touch event so that applications can filter touches\naccordingly.\n\nAdded a \"filterTouchesWhenObscured\" attribute to View which can be used to\nenable filtering of touches when the view\u0027s window is obscured.\n\nChange-Id: I936d9c85013fd2d77fb296a600528d30a29027d2\n"
    },
    {
      "commit": "c5ed5910c9ef066cec6a13bbb404ec57b1e92637",
      "tree": "b06dfdac2d807dae78a2634007b6e627eefd0804",
      "parents": [
        "d9452ecd0ce6c8e0518055929ba1fd0712146405"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 14 18:48:53 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 15 18:32:33 2010 -0700"
      },
      "message": "Add support for new input sources.\n\nAdded several new coordinate values to MotionEvents to capture\ntouch major/minor area, tool major/minor area and orientation.\n\nRenamed NDK input constants per convention.\n\nAdded InputDevice class in Java which will eventually provide\nuseful information about available input devices.\n\nAdded APIs for manufacturing new MotionEvent objects with multiple\npointers and all necessary coordinate data.\n\nFixed a bug in the input dispatcher where it could get stuck with\na pointer down forever.\n\nFixed a bug in the WindowManager where the input window list could\nend up containing stale removed windows.\n\nFixed a bug in the WindowManager where the input channel was being\nremoved only after the final animation transition had taken place\nwhich caused spurious WINDOW DIED log messages to be printed.\n\nChange-Id: Ie55084da319b20aad29b28a0499b8dd98bb5da68\n"
    },
    {
      "commit": "d76b67c340d1564abf8d14d976fdaf83bf2b3320",
      "tree": "59c0fff396681a622480a84f4f9c74d188970a11",
      "parents": [
        "fd03582995e0fce963dd0fa0669e3211b74c0dd7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 13 17:48:30 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 13 18:36:46 2010 -0700"
      },
      "message": "IME events are now dispatched to native applications.\n\nAnd also:\n\n- APIs to show and hide the IME, and control its interaction with the app.\n- APIs to tell the app when its window resizes and needs to be redrawn.\n- API to tell the app the content rectangle of its window (to layout\n  around the IME or status bar).\n\nThere is still a problem with IME interaction -- we need a way for the\napp to deliver events to the IME before it handles them, so that for\nexample the back key will close the IME instead of finishing the app.\n\nChange-Id: I37b75fc2ec533750ef36ca3aedd2f0cc0b5813cd\n"
    },
    {
      "commit": "2e9f93e8db509d5236229dc8540e0904c5dbb9f5",
      "tree": "9aa6aa2c4a59b808dd99604afb23eb5a0096d9a2",
      "parents": [
        "059f009d970fb37ac4e408dcf8e1d2d2cdcf0a84"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 28 15:27:30 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 29 10:43:54 2010 -0700"
      },
      "message": "Update native activity \u0026 event APIs to follow correct conventions.\n\nChange-Id: Ie64fb3a9c68bc9c117fa5621b75d1f609e304e0e\n"
    },
    {
      "commit": "349703effce5acc53ed96f7ed8556131f0c65e18",
      "tree": "359217d5076e3005c724b2117a59ffec81e7a83b",
      "parents": [
        "f2b544f5ae7676f7ab4cdf3379b2ed3c60a65def"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 22 01:27:15 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 28 19:10:54 2010 -0700"
      },
      "message": "Native input event dispatching.\n\nTarget identification is now fully native.\nFixed a couple of minor issues related to input injection.\nNative input enabled by default, can be disabled by setting\nWindowManagerPolicy.ENABLE_NATIVE_INPUT_DISPATCH to false.\n\nChange-Id: I7edf66ed3e987cc9306ad4743ac57a116af452ff\n"
    },
    {
      "commit": "a95e4cb62f3642cb190d032dbf7dc40d9ecc6973",
      "tree": "ae4437444a3d3ebeff48dabfd1e9c11fc14620ac",
      "parents": [
        "ef730e6ececa96a3e0576140eea707f7c48cd66c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 18 18:09:33 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 22 11:21:50 2010 -0700"
      },
      "message": "First stab at attaching native event dispatching.\n\nProvides the basic infrastructure for a\nNativeActivity\u0027s native code to get an object representing\nits event stream that can be used to read input events.\n\nStill work to do, probably some API changes, and reasonable\ndefault key handling (so that for example back will still\nwork).\n\nChange-Id: I6db891bc35dc9683181d7708eaed552b955a077e\n"
    },
    {
      "commit": "5c225b1680e696ae8bbf505a1997d6f720672f74",
      "tree": "932326fd02ee91d8a64adfcc9415027646c56563",
      "parents": [
        "3a0146cd29fae3c5bc29d8d535d67826284f8cc9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 16 01:53:36 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jun 17 13:27:16 2010 -0700"
      },
      "message": "Even more native input dispatch work in progress.\n\nAdded more tests.\nFixed a regression in Vector.\nFixed bugs in pointer tracking.\nFixed a starvation issue in PollLoop when setting or removing callbacks.\nFixed a couple of policy nits.\n\nModified the internal representation of MotionEvent to be more\nefficient and more consistent.\n\nAdded code to skip/cancel virtual key processing when there are multiple\npointers down.  This helps to better disambiguate virtual key presses\nfrom stray touches (such as cheek presses).\n\nChange-Id: I2a7d2cce0195afb9125b23378baa94fd2fc6671c\n"
    },
    {
      "commit": "46b9ac0ae2162309774a7478cd9d4e578747bfc2",
      "tree": "46ad021a41e25ca9f1250b709a29b724dc6b504d",
      "parents": [
        "f62c57d684b83df7d2817db976c0afdb500ae92a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 22 18:58:52 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 17:42:16 2010 -0700"
      },
      "message": "Native input dispatch rewrite work in progress.\n\nThe old dispatch mechanism has been left in place and continues to\nbe used by default for now.  To enable native input dispatch,\nedit the ENABLE_NATIVE_DISPATCH constant in WindowManagerPolicy.\n\nIncludes part of the new input event NDK API.  Some details TBD.\n\nTo wire up input dispatch, as the ViewRoot adds a window to the\nwindow session it receives an InputChannel object as an output\nargument.  The InputChannel encapsulates the file descriptors for a\nshared memory region and two pipe end-points.  The ViewRoot then\nprovides the InputChannel to the InputQueue.  Behind the\nscenes, InputQueue simply attaches handlers to the native PollLoop object\nthat underlies the MessageQueue.  This way MessageQueue doesn\u0027t need\nto know anything about input dispatch per-se, it just exposes (in native\ncode) a PollLoop that other components can use to monitor file descriptor\nstate changes.\n\nThere can be zero or more targets for any given input event.  Each\ninput target is specified by its input channel and some parameters\nincluding flags, an X/Y coordinate offset, and the dispatch timeout.\nAn input target can request either synchronous dispatch (for foreground apps)\nor asynchronous dispatch (fire-and-forget for wallpapers and \"outside\"\ntargets).  Currently, finding the appropriate input targets for an event\nrequires a call back into the WindowManagerServer from native code.\nIn the future this will be refactored to avoid most of these callbacks\nexcept as required to handle pending focus transitions.\n\nEnd-to-end event dispatch mostly works!\n\nTo do: event injection, rate limiting, ANRs, testing, optimization, etc.\n\nChange-Id: I8c36b2b9e0a2d27392040ecda0f51b636456de25\n"
    }
  ]
}
