)]}'
{
  "log": [
    {
      "commit": "b4ff35df5c04aec71fce7e90a6d6f9ef7180c2ad",
      "tree": "e4473f1b22e3051a8f82239256148820d4e097d5",
      "parents": [
        "a5af5d6b122b5d7337e6640deabf7886689679eb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jan 02 16:37:43 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 04 17:31:24 2011 -0800"
      },
      "message": "Mouse pointer integration.\n\nAdded support for loading the pointer icon from a resource.\n\nMoved the system server related bits of the input manager out\nof libui and into libinput since they do not need to be linked into\napplications.\n\nChange-Id: Iec11e0725b3add2b905c51f8ea2c3b4b0d1a2d67\n"
    },
    {
      "commit": "83c09685f2e62bc3cf7e71bc61d903f4b9ccaeb4",
      "tree": "c8bc2824e0d2e2b353b3d16ecf5836ab8fd9e67c",
      "parents": [
        "dd830c21149c336139b28560c0e6fba9f3d0e0fc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Dec 23 17:50:18 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Dec 29 13:19:53 2010 -0800"
      },
      "message": "Add initial support for cursor-based pointing devices.\n\nSome parts stubbed out but you can plug in a mouse and move\na green cursor around to interact with the UI.\n\nChange-Id: I80d597a7f11d3bd92041890f74b3c77326975e6e\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": "9065504a63d6bf37bf621191fda1d1fe4da76ee3",
      "tree": "500948db3ef54c52fc65f52f4ab4a220e4504009",
      "parents": [
        "d6a46103bfbed17451abf0fb608d7b778597846c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Dec 02 13:50:46 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Dec 02 16:01:32 2010 -0800"
      },
      "message": "Improve support for external keyboards.\n\nUse Vendor ID, Product ID and optionally the Version to\nlocate keymaps and configuration files for external devices.\n\nMoved virtual key definition parsing to native code so that\nEventHub can identify touch screens with virtual keys and load\nthe appropriate key layout file.\n\nCleaned up a lot of old code in EventHub.\n\nFixed a regression in ViewRoot\u0027s fallback event handling.\n\nFixed a minor bug in FileMap that caused it to try to munmap\nor close invalid handled when released if the attempt to map\nthe file failed.\n\nAdded a couple of new String8 conveniences for formatting strings.\n\nModified Tokenizer to fall back to open+read when mmap fails since\nwe can\u0027t mmap sysfs files as needed to open the virtual key\ndefinition files in /sys/board_properties/.\n\nChange-Id: I6ca5e5f9547619fd082ddac47e87ce185da69ee6\n"
    },
    {
      "commit": "1f2451007c660091b7b090c1ea332f9044515d2d",
      "tree": "eddeaa59b0443b271353cd731e9ce7ce5b1cd993",
      "parents": [
        "47e6b1b5eef8ee99872f278f66bc498c4fcca0d8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 18 20:53:46 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 30 18:50:17 2010 -0800"
      },
      "message": "Ensure the ShortcutManager uses the correct key character map.\n\nThe ShortcutManager used to only receive the key code of the key event\nthat triggered the shortcut.  This change now provides the shortcut\nmanager with the whole key event so it can look up the associated\ncharacter using the correct key character map.\n\nTo make this more efficient, added a mechanism for recycling\nkey events.  At the moment it is only used by key events owned by the\nsystem process, since clients of the existing API (such as Views)\nmight continue to hold on to key events after dispatch has finished so\nthey would break if the key event were recycled by the framework.\n\nDeprecated KeyCharacterMap.BUILT_IN_KEYBOARD.\n\nChange-Id: I4313725dd63f2be01c350c005a41c7fde9bc67e8\n"
    },
    {
      "commit": "47e6b1b5eef8ee99872f278f66bc498c4fcca0d8",
      "tree": "ef5a7c87b8dca433ea9707c1289ae7c8d2ba3787",
      "parents": [
        "735206f121cb2a11b3397870e6565178627e0aa3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 29 17:37:49 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 30 17:15:49 2010 -0800"
      },
      "message": "Support non-orientation aware keyboards and other devices.\n\nFixed a bug with dpad keys on external keyboards being rotated\naccording to the display orientation by adding a new input device\nconfiguration property called \"keyboard.orientationAware\".\n\nAdded a mechanism for overriding the key layout and key character\nmap in the input device configuration file using the new\n\"keyboard.layout\" and \"keyboard.characterMap\" properties.\n\nAlso added \"trackball.orientationAware\", \"touch.orientationAware\" and\n\"touch.deviceType\" configuration properties.\n\nRewrote the configuration property reading code in native code\nso that it can be used by EventHub and other components.\n\nAdded basic support for installable idc, kl, and kcm files\nin /data/system/devices.  However, there is no provision for\ncopying files there yet.\n\nDisabled long-press character pickers on full keyboards so that\nkey repeating works as expected.\n\nChange-Id: I1bd9f0c3d344421db444e7d271eb09bc8bab4791\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": "51e7fe7545e3509ebb5c31c10440acd31cec89a2",
      "tree": "c9826e9555c6ec96ba3061365bcb7ed2a555c43e",
      "parents": [
        "06a42367ce6b7116c451f9e3155196ef8806f861"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 29 22:19:53 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 05 13:27:35 2010 -0700"
      },
      "message": "Rename the locked meta key constants for clarity.\n\nAlso added some tests for LED setting.\n\nChange-Id: I3fd86322afd07ae8de52d1ccbc2fae2c6d586641\n"
    },
    {
      "commit": "7631cbbed41ad3183723e5bc6e082d40549664b9",
      "tree": "08cbfda54b2574cdbfca6ba9171807b5b1ff0e1a",
      "parents": [
        "3ae4ac8538765d6cf5b8aceea8c81b21854321bd"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Oct 24 15:22:06 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Oct 24 15:25:53 2010 -0700"
      },
      "message": "Add test stubs for newly added methods.\n\nChange-Id: I44139adebbbed1358f613fbcbfcddac6617ef5bd\n"
    },
    {
      "commit": "c3db858de9fa152480b9cf53c8c0cb793a280722",
      "tree": "ba337dd2df79d211a940727c5c93c112cf0de77d",
      "parents": [
        "b6a2256e5461160a89d077b761d3253d95ce869f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Oct 20 15:33:38 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Oct 23 03:52:57 2010 -0700"
      },
      "message": "Add unit tests for native input and fix bugs identified.\n\nFixed a bug where we would lose the first touch point when swiping out of\nthe virtual key area.\n\nFixed a bug where we would not send an ACTION_MOVE event in cases where\nindividual pointers went down/up and the remaining pointers actually moved.\nThis is important since many applications do not handle pointer movements\nduring ACTION_POINTER_DOWN or ACTION_POINTER_UP.  In the case of\nACTION_POINTER_UP the movement was completely lost since all pointers were\ndispatched using their old location rather than the new location.\n\nImproved motion event validation to check for duplicate pointer ids.\n\nAdded an input source constant that was missing from the NDK api but\ndefined in the framework api.\n\nAdded a timestamp when reporting added/removed devices in EventHub.\n\nBug: 3070082\nChange-Id: I3206a030f43b7616e2f48006e5a9d522c4d92e56\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": "eb6e0df18a6567d38caa039ba0b0e49e2e9b46c3",
      "tree": "b2250fd3fcb9f7171b0066b03f47aa08415bb550",
      "parents": [
        "c98e431119867dbc4ae3da52d5c374607c0f67b9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 14 22:40:08 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 14 22:55:02 2010 -0700"
      },
      "message": "Don\u0027t build framework tests for simulator target.\n\nChange-Id: I70f29c7eb307e4f3ec5702f4eb9d97b4342e2f36\n"
    },
    {
      "commit": "fd03582995e0fce963dd0fa0669e3211b74c0dd7",
      "tree": "8f7fe0e2a437620a7cbe4e494f71fe8ccfdbe2eb",
      "parents": [
        "c0a7e690bfd32dd897ceccd04dd0fa6bf6e9cee6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 30 16:10:35 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jul 13 17:04:57 2010 -0700"
      },
      "message": "Add initial gamepad support.\n\nChange-Id: I0439648f6eb5405f200e4223c915eb3a418b32b9\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": "f1d3802ea2e0c68f3f6e7524c2450379aae670a8",
      "tree": "09f253a46061d984df1e08f1f69300878698536c",
      "parents": [
        "7e900cbf1d600a8895e63a0247f45c116ff05172"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 14 15:44:41 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jun 14 15:46:08 2010 -0700"
      },
      "message": "Support for multiple tests\n\nThe build system enforces some invariants that were being ignored\nbefore.\n\nChange-Id: Ie7675042af7f961a507386c13b2a0b592b591af8\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"
    },
    {
      "commit": "a8ac904d97a008b346390c87e74d44df39b0f320",
      "tree": "542fe7fccb07a5d9f380c9d169680d38a4f5f445",
      "parents": [
        "53f33d84776a0bad668e361365a7049b16f8a929"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 15 18:08:15 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 15 18:08:15 2009 -0700"
      },
      "message": "fix [2182249] [MR1] valgrind error in surface flinger\n"
    },
    {
      "commit": "6158b1bf0364da1582468a98ec09d004ba99deec",
      "tree": "6fc11335f772f84dbee308e830d807fe0df1f815",
      "parents": [
        "11be99de5f3901c32130ea4c5fd52e62e1845e73"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 11 00:03:41 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun May 17 23:34:16 2009 -0700"
      },
      "message": "Region now has its own implementation instead of relying on SkRegion, which allows us to break libui\u0027s dependency on libcorecg.\n"
    }
  ]
}
