)]}'
{
  "log": [
    {
      "commit": "4f8ecd80296508a1dc69d3f3a23fd91e962c2784",
      "tree": "8770e057b8c1831a182f349434f7955b12671944",
      "parents": [
        "099adfba812c00e81f26a3c7099ff4365f071847"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 18 18:29:13 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 18 19:43:44 2012 -0700"
      },
      "message": "Move power manager to a new package.\n\nChange-Id: I5f5a6435e64354b7d6535e8e9a63934ba7a3f448\n"
    },
    {
      "commit": "dccb2c16e5201e87b0bc7be778f7ef2d9d043783",
      "tree": "1d0300a7a3b8e2681c8535dcecb3da0f85a21b06",
      "parents": [
        "e4beeb8e3c4fc94c4273330980bbd89a6da5a48d"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jun 07 00:16:02 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jun 07 14:01:22 2012 -0700"
      },
      "message": "PowerManagerService: call surfaceflinger blank and unblank through binder\n\nSynchronize with SurfaceFlinger during screen off and on to ensure that\na black frame has been drawn on the display, and then trigger all early\nsuspend handlers on devices that have early suspend, as well as PowerHAL\noperations.\n\nChange-Id: I8a5ad5a84c9e80ce5bb8f7f0b09b064e2b9ad4ef\n"
    },
    {
      "commit": "d232afa003689d87b637cb4525aae9a6af426700",
      "tree": "d797b0e0e76e61679a2097100b37f71522006179",
      "parents": [
        "b080660dfd69ea6f0a034946b2ff8d94e97a2537"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 16 13:06:15 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 16 13:39:46 2012 -0700"
      },
      "message": "Tolerate missing power HAL module.\n\nBug: 6492793\nChange-Id: I092605456e734e3f91ee098a197f208c738a619c\n"
    },
    {
      "commit": "30e5eb4826a2b6880fb8ef3844206cc5ffd13ed9",
      "tree": "b8612636e549a91f8e8d5bf764b90687d9da6c2f",
      "parents": [
        "7304c343821309dd15f769b18f1de2fa43751573"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 11 19:18:56 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 11 19:18:56 2012 -0700"
      },
      "message": "Tell power HAL when user activity occurs.\n\nBug: 6435382\nChange-Id: I78754158b057851fcba807ebbda143899da387ec\n"
    },
    {
      "commit": "7304c343821309dd15f769b18f1de2fa43751573",
      "tree": "37a1b20d78ee47ed7356c39d00bd1529989cea22",
      "parents": [
        "888da152ece9a8cfe62fad9e7d1a43e792c41e2f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 11 18:42:42 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 11 18:42:42 2012 -0700"
      },
      "message": "Move power HAL interactions to PowerManagerService.\n\nThis refactoring sets the stage for a follow-on change that\nwill make use additional functions of the power HAL.\n\nMoved functionality from android.os.Power into PowerManagerService.\nNone of these functions make sense being called outside of the\nsystem server.  Moving them to the PowerManagerService makes it\neasier to ensure that the power HAL is initialized exactly once.\n\nSimilarly, moved ShutdownThread out of the policy package and into\nthe services package where it can tie into the PowerManagerService\nas needed.\n\nBug: 6435382\nChange-Id: I958241bb124fb4410d96f5d5eb00ed68d60b29e5\n"
    },
    {
      "commit": "93de746e5554bc9397ca8109f57875d92e64eabc",
      "tree": "c172ffb2ab3fbdcac7838818ca34eecc83811fdb",
      "parents": [
        "39f412d8deed2ba46153c8a819bc8635979cec6b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 02 16:29:42 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 02 16:29:42 2012 -0700"
      },
      "message": "Separate the internal and external display rotations.\n\nWhen attached to an HDMI touch screen, the input system needs\nto know the size and rotation of the external display independent\nof the internal display.  The size was already being reported\nseparately but not the rotation.  The inconsistency can cause problems\nif the internal display\u0027s natural rotation is portrait but\nthe external display\u0027s natural rotation is landscape.\n\nChange-Id: Id344f04c1ba032625f6265766be66f9ddaa2cc0b\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": "166b05e0ce913711d27ce1a116b3f1fd906822e4",
      "tree": "51ac35f95905a28b7e15512ae8d9160723e45464",
      "parents": [
        "8f014059d3084fcce9e82b4b1f8b8323744ac52d"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Tue Apr 24 10:45:18 2012 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu Apr 26 15:09:35 2012 -0700"
      },
      "message": "UsbService: Add support for accessory initiating USB audio support\n\nChange-Id: I0e468f4b841de9e1ca7b75a05fc58299dbc78222\nSigned-off-by: Mike Lockwood \u003clockwood@google.com\u003e\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": "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": "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": "27fd3420ac0498ff5086f71023f443966541aa04",
      "tree": "dc29332ba544ec0d8da9503d9205e6ef753c0e56",
      "parents": [
        "eca3cf58c096d5a4ba4ae80318f72266c21a9a6d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 09 11:05:16 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 09 11:22:12 2012 -0700"
      },
      "message": "Fix lid switch interpretation.\n\nAlso remove unnecessary permission check for method that is\nonly called internally.\n\nChange-Id: I32f63fc3e96b06709d18b046ee2d3c8f310de70d\n"
    },
    {
      "commit": "603b44589682db3ff33ade172facb0c5e309f1be",
      "tree": "d0cca13c7957a11a8fe10f652366bb122022c6b0",
      "parents": [
        "e38fdfae9196afd1bdc14c5ec6c12793af1e2550"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 06 17:39:41 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 06 18:25:09 2012 -0700"
      },
      "message": "Ensure that apps crash if they throw exceptions.\n\nPreviously, if an app threw an uncaught exception in an input,\nvsync or native activity callback, it would log the exception then\ncontinue limping merrily along.  In the case of input, it\ncould result in an ANR occurring because we had not drained\nall of the pending input events and marked them as finished\n(we only marked the most recent one finished).\n\nBug: 6304124\nChange-Id: I87d76f7fd605e1a8af1237c66d8d62973080277e\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": "4532e6158474a263d9d26c2b42240bcf7ce9b172",
      "tree": "e0055acd68c0a8729077695ac671935aa58a1fad",
      "parents": [
        "9df6e7a926ce480baf70e97ee1b9ea387193f6ad"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 05 14:27:12 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 05 14:42:11 2012 -0700"
      },
      "message": "Refactor input system into its own service.\n\nExtracted the input system from the window manager service into\na new input manager service.  This will make it easier to\noffer new input-related features to applications.\n\nCleaned up the input manager service JNI layer somewhat to get rid\nof all of the unnecessary checks for whether the input manager\nhad been initialized.  Simplified the callback layer as well.\n\nChange-Id: I3175d01307aed1420780d3c093d2694b41edf66e\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": "62d1058cc972a8fcb7739547abd3298f5d98a9b1",
      "tree": "10e00975abf03e71e33dd7e2c3051c8ecb10d721",
      "parents": [
        "5a1f6fb4073ee4b27359faa950808a6eeac33a4c",
        "308028049a75b36d5ed525c0bcef441da850c2a5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:26:33 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 13 10:26:33 2012 -0800"
      },
      "message": "Merge \"Remove the input dispatcher throttle.\""
    },
    {
      "commit": "a21e9455027a20c68e31358aaa1c8d9c8c28e357",
      "tree": "2caad4a6c2cdd6b02bb450a18e7803623284ad9a",
      "parents": [
        "11ca31729c05a5c82aa298fb52ddebbe08a26627"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 16 21:23:00 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Feb 10 12:00:32 2012 -0800"
      },
      "message": "BatteryService: Don\u0027t fail to register native methods if kernel power supply driver is missing\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "b01e8bf57b7492b77e3445db51471edcbadda75e",
      "tree": "efbff9d0094660d195d46322a23ce7bbd1a453ad",
      "parents": [
        "341ff2b08380fcab0f2313fb4feca732cf70f840"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Aug 29 20:11:07 2011 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Feb 10 10:51:19 2012 -0800"
      },
      "message": "New Serial Manager API:\n\nSerialManager: provides access to serial ports\nSerialPort: for reading and writing data to and from serial ports\n\nIO with both array based and direct ByteBuffers is supported.\n\nAccessing serial ports requires android.permission.SERIAL_PORT permission\n\nEach platform must configure list of supported serial ports in the\nconfig_serialPorts resource overlay\n(this is needed to prevent apps from accidentally accessing the bluetooth\nor other system UARTs).\n\nIn addition, the platform uevent.rc file must set the owner to the\n/dev/tty* files to \"system\" so the framework can access the port.\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\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": "ec193dec4d9ca2cfc8295c4becfe950a906a15ed",
      "tree": "c93578b9568a1b9f5b7b4b3d20732857d4e3a6c4",
      "parents": [
        "5c17a820f9e46e0756c11795b3e6f89105f2f539"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Mon Jan 09 18:35:44 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Mon Jan 09 21:36:22 2012 +0000"
      },
      "message": "Rename LOG_ASSERT to ALOG_ASSERT  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157519\n\nBug: 5449033\nChange-Id: I8ceb2dba1b031a0fd68d15d146960d9ced62bbf3\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": "8564c8da817a845353d213acd8636b76f567b234",
      "tree": "71acbd8ace822c769aef917629bf5a079f63274d",
      "parents": [
        "c42e6a0bed2c88fd03466c5104d62d7f98e68768"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 23:22:43 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 10:07:54 2012 +0000"
      },
      "message": "Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157065\n\nBug: 5449033\nChange-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69\n"
    },
    {
      "commit": "6215d3ff4b5dfa52a5d8b9a42e343051f31066a5",
      "tree": "fa31802ed64676368447b67d20567fc1e806c79d",
      "parents": [
        "c9c76a82c6d0bf2362044d899013832882f32c94"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "message": "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156801\n\nBug: 5449033\nChange-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea\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": "3f15700a012b1ab0097eaf90caf0540ba6caa529",
      "tree": "548cf135dc366cfd34e430024e89b8e0b58a35b4",
      "parents": [
        "16aca5197244f9066968658735611a0dbbe46403"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 17 17:48:35 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 28 15:21:57 2011 -0800"
      },
      "message": "split ComposerService out of SurfaceComposerClient.h\n\nChange-Id: I1eb691f7ca263d5895d871ab675bb5826e0323c6\n"
    },
    {
      "commit": "1e08fe90df18930691b0c2ec22e5db25d7fcb4cf",
      "tree": "772ffaafe6917d37ee65f5ed3d653230557bdc80",
      "parents": [
        "9058435dc1a741030c042c4d6f2512f5d1605e5d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 15 17:48:10 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 15 18:00:10 2011 -0800"
      },
      "message": "Eliminate hw.keyboards system properties.\n\nStop using system properties to publish information about\nthe key character map path.  Instead, we can retrieve it\non demand by asking the window manager.\n\nIt was possible to exhaust the supply of system properties\nwhen repeatedly adding and removing input devices.\n\nBug: 5532806\nChange-Id: Idd361a24ad7db2edc185c8546db7fb05f9c28669\n"
    },
    {
      "commit": "98e044a6090fa239eca6736436d6a7efa8028066",
      "tree": "31e4a36d2e5833664aff8994bfcf37b0a2ee5f88",
      "parents": [
        "fe9a2a5471616a3267b30013bce36b13a455c0cd"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Fri Oct 28 18:05:47 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Fri Oct 28 23:15:11 2011 -0700"
      },
      "message": "BatteryService(jni): properly handle read\u0027s return value\n\nChange-Id: I10f5cf3728424e7f5a0c1b460049102fd00a6246\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "d5bb82d18cbd95bb9e751d8315b9ed0b69595033",
      "tree": "697ff41b80db12758a412c3555677d0d347aa2f0",
      "parents": [
        "99b70f3f5d051261229d1792c169a374fc23326b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Oct 12 13:57:59 2011 -0700"
      },
      "committer": {
        "name": "Winson Chung",
        "email": "winsonc@google.com",
        "time": "Wed Oct 12 15:05:59 2011 -0700"
      },
      "message": "DO NOT MERGE. Improve screenshot chord debouncing.\nBug: 5011907\n\nIntroduce a 150ms delay in handling volume down keys\nwhile waiting to see if a power key will follow.\n\nDon\u0027t trigger the screenshot chord if both volume up and\nvolume down are pressed together.\n\nDon\u0027t trigger the long-press power menu if volume keys are\nalso pressed.\n\nRequire the user to press both keys in the chord within\nthe debounce time and continue long-pressing them in order\nto trigger the screenshot action.\n\nChange-Id: I248968d37b73c09d6d08e7f62667c443eba32da0\n"
    },
    {
      "commit": "cc4f7db698f88b633a286d8ab1105b28a474cd09",
      "tree": "02ec7d914ab182e912af5c147ebc7483a719c6de",
      "parents": [
        "ad4d2c99ed3a08a5090c38e9dd906df8fb894614"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 30 20:34:48 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 30 21:40:28 2011 -0700"
      },
      "message": "Fix input channel leak.\nBug: 5156144\n\nInput channels could leak or simply live longer than they should\nin some cases.\n\n1. Monitor channels (used by the pointer location overlay) are never\n   unregistered, so they would leak.\n\n   Added code to handle failures in the receive callback by closing\n   the input channel.\n\n2. The DragState held onto its input window and application handles\n   even after the input channel was disposed.\n\n   Added code to null these handles out when they are no longer needed.\n\n3. Input channels previously used as input event targets would stick\n   around until the targets were cleared (usually on the next\n   event).\n\n   Added code to detect when the input dispatcher is in\n   an idle state and to proactively clear the targets then\n   to ensure that resources are released promptly.\n\n4. Native input window handles held onto the input channel even\n   after the input window was removed from the input dispatcher.\n   Consequently, the input channel would not be disposed until\n   the input window handle itself was freed.  Since the input\n   window handle is held from managed code, this meant that the\n   window\u0027s input channel could stick around until the next GC.\n\n   Refactored the input window handle to separate the properties\n   (info) and identify (handle) state into different objects.\n   Then modified the dispatcher to release the properties (info)\n   when no longer needed, including the input channel.\n\n7. The pointer location overlay does not actually use its\n   standard input channel, only the monitor input channel.\n\n   Added INPUT_FEATURE_NO_INPUT_CHANNEL to allow windows to\n   request that they not be provided with an input channel\n   at all.\n\nImproved some of the error handling logic to emit the status\ncode as part of the exception message.\n\nChange-Id: I01988d4391a70c6678c8b0e936ca051af680b1a5\n"
    },
    {
      "commit": "daf4a127ba2af82a3fb477044b872719a0ab1827",
      "tree": "2147e705a6b912683abd7169910acb548413d946",
      "parents": [
        "9b9783ad60d31f3df5d2524e13abc1437d5b6f7d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 26 17:14:14 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 26 17:14:14 2011 -0700"
      },
      "message": "Add a \"show touches\" option for demos and presentations.\nBug: 4569045\n\nChange-Id: I8726ea292dd7def790a5e40d7d7e58968974f896\n"
    },
    {
      "commit": "65fd251c3913fc921468a3dad190810db19eb9df",
      "tree": "7cc9e086b96a4e2c77ec5b77aab6bed5679e89f0",
      "parents": [
        "c0a2222552f48a2543a64a4cbe913d0b9ffc3cbf"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 18 11:20:58 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 19 15:02:26 2011 -0700"
      },
      "message": "Input system bug fixes, particularly for stylus.\nBug: 5049148\n\nFinished stylus support, including support for indirect stylus\nand mouse tools.\n\nAdded TILT axis.  When stylus tilt X/Y is available, it is transformed\ninto an orientation and tilt inclination which is a more convenient\nrepresentation and a simpler extension to the exiting API.\n\nTouch devices now only report touch data using a single input\nsource.  Previously touch devices in pointer mode would report\nboth absolute touch pad data and cooked pointer gestures.\nNow we just pick one.  The touch device switches modes as needed\nwhen the focused application enables/disables pointer gestures.\nThis change greatly simplifies the code and reduces the load\non the input dispatcher.\n\nFixed an incorrect assumption that the value of ABS_(MT_)DISTANCE\nwould be zero whenever the stylus was in direct contact.  It appears\nthat the correct way to determine whether the stylus is in direct\ncontact (rather than hovering) is by checking for a non-zero\nreported pressure.\n\nAdded code to read the initial state of tool buttons and axis values\nwhen the input devices are initialized or reset.  This fixes\nproblems where the input mapper state might have the wrong initial\nstate.\n\nMoved responsibility for cancelling pending inputs (keys down,\ntouches, etc.) to the InputDispatcher by sending it a device reset\nnotification.  This frees the InputReader from having to synthesize\nevents during reset, which was cumbersome and somewhat brittle\nto begin with.\n\nConsolidated more of the common accumulator logic from\nSingleTouchInputMapper and MultiTouchInputMapper into\nTouchInputMapper.\n\nImproved the PointerLocation output.\n\nChange-Id: I595d3647f7fd7cb1e3eff8b3c76b85043b5fe2f0\n"
    },
    {
      "commit": "89ef0720ee8e0ac6ae1758faa917e4d6c9606fb4",
      "tree": "2c239993b3d2702dd8becc03a738f1b151a4c4f1",
      "parents": [
        "ba421dddfd558b34726df5dfbf8a3bf748e285b1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 10 16:25:21 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 10 16:25:21 2011 -0700"
      },
      "message": "Add input system to Watchdog.\nBug: 5094994\n\nChange-Id: I153866958efc64ac19bda8b997c1c9f6ad425ec4\n"
    },
    {
      "commit": "2b15cb21b313f83f7cccdc6f9116ba31ddc190ad",
      "tree": "68405f8f6a26b7b410e6d491273224953fc64955",
      "parents": [
        "7abaecc3dbb610b24e22685e6aa749c7011be1eb",
        "75f1fdec3e95e9c8b5add02ba6e9b14913058f22"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Aug 04 11:40:25 2011 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Aug 04 11:40:25 2011 -0400"
      },
      "message": "Resolve merge conflict for \u002775f1fdec\u0027:\n\n    GPS Provider Service changes\n\n    GPS engine needs to receive network state changes from Android fw.\n\n    Added db query for the current APN, also added a new parameter\n    between JNI / HAL to the new method in AGpsRilInterface struct\n    for gps engine to receive APN from GPSLocationService\n\nConflicts:\n\tservices/java/com/android/server/location/GpsLocationProvider.java\n\nChange-Id: I33c45027f1571493d3525324f62d199517c4960c\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "75f1fdec3e95e9c8b5add02ba6e9b14913058f22",
      "tree": "1df88c7138d14fe9ca9ad3cc87048658deab7300",
      "parents": [
        "a598d144e8c9722ff83e38cd8a70bc15a00bcdf3",
        "0b3af353dcf61177158934a11404cf2914038696"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood%android.com@gtempaccount.com",
        "time": "Thu Aug 04 07:53:53 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 04 07:53:53 2011 -0700"
      },
      "message": "am 0b3af353: am a82ee49a: am 8f5dd9ad: Merge \"GPS Provider Service changes\"\n\n* commit \u00270b3af353dcf61177158934a11404cf2914038696\u0027:\n  GPS Provider Service changes\n"
    },
    {
      "commit": "a5fe6b2efee02ab11c35e80ec50fec62be227273",
      "tree": "0441ee5839e58c068b025f486f6d8a326e5bad6e",
      "parents": [
        "9b0c6beed2cd5463655712ad80ed160c08611ff8"
      ],
      "author": {
        "name": "Kevin Tang",
        "email": "zhikait@codeaurora.org",
        "time": "Sun Jun 05 14:25:16 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Aug 04 10:33:35 2011 -0400"
      },
      "message": "GPS Provider Service changes\n\nGPS engine needs to receive network state changes from Android fw.\n\nAdded db query for the current APN, also added a new parameter\nbetween JNI / HAL to the new method in AGpsRilInterface struct\nfor gps engine to receive APN from GPSLocationService\n\nChange-Id: I62e35c948d2ac1961771d1a10581a3b8e695c05a\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "b7d95a46dfacf04896d5b084f13bcbe6eab33633",
      "tree": "c69bb45e727299675d8799f64285bc99dd50023d",
      "parents": [
        "fbaaeb96f29c8e4a563a6b3cc85fb446400fd506",
        "21700fedfe29f6a0a752d2bea46142038e69136c"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood%android.com@gtempaccount.com",
        "time": "Thu Jul 28 14:06:07 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 28 14:06:07 2011 -0700"
      },
      "message": "am 21700fed: am 5f7203eb: am 5a27a754: am bd1dee94: Merge \"gps: Adding ip address for AGps\"\n\n* commit \u002721700fedfe29f6a0a752d2bea46142038e69136c\u0027:\n  gps: Adding ip address for AGps\n"
    },
    {
      "commit": "21700fedfe29f6a0a752d2bea46142038e69136c",
      "tree": "3aa43b410f433d10fb23147f5b43c78b6dce3091",
      "parents": [
        "f8d13e535c3e6166c2386adac3b3a2f115d2b79d",
        "5f7203eb258503bc5d2ba29176bdf483a68a93b8"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood%android.com@gtempaccount.com",
        "time": "Thu Jul 28 14:04:13 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 28 14:04:13 2011 -0700"
      },
      "message": "am 5f7203eb: am 5a27a754: am bd1dee94: Merge \"gps: Adding ip address for AGps\"\n\n* commit \u00275f7203eb258503bc5d2ba29176bdf483a68a93b8\u0027:\n  gps: Adding ip address for AGps\n"
    },
    {
      "commit": "8efd74dbedb65f69734318d9d6be70767f30b57a",
      "tree": "74ca8726784a2348023dda04ec9318df27f28f4c",
      "parents": [
        "0ff79e88e2d90f80d0346e0485abe773ca85c44d"
      ],
      "author": {
        "name": "Stephen Li",
        "email": "stephenl@codeaurora.org",
        "time": "Tue Mar 01 20:56:00 2011 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jul 28 16:50:45 2011 -0400"
      },
      "message": "gps: Adding ip address for AGps\n\nChange-Id: Ic590187d159853de2f1bd2912e159f0a00d8fb10\n"
    },
    {
      "commit": "bc68a59c024bdb745dac8e2ec7408a9f30595f1a",
      "tree": "9b3cfa4dc30eb787cbd828e97f7d816d5a91e68d",
      "parents": [
        "49754db5a304d995c1cc108ff6f19e4ba4265572"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 25 12:58:12 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 25 20:10:12 2011 -0700"
      },
      "message": "Report the external display size to the input reader.\n\nThe input reader needs this information so that it knows how to\ninterpolate touches on an external touch screen.\n\nChanged Display so that it asks the WindowManager what the real\ndisplay size is (as opposed to the raw display size).  This means\nit now takes into the forced display size set by\nadb shell am display-size.\n\nReplaced all calls to getRealWidth() / getRealHeight() /\ngetRealMetrics() in the WindowManager and replaced them with direct\nusages of the mCurDisplayWidth / mCurDisplayHeight so that the WM\ndoesn\u0027t end up making a reentrant Binder call into itself.\n\nFixed the table status bar HeightReceiver so that it updates the\nheight on all configuration changes since it is possible that the\ndisplay size changed independently of an external HDMI display\nbeing plugged / unplugged.\n\nImproved the Display class documentation to make the distinctions\nbetweeen the various sizes clearer.\n\nChange-Id: I3f75de559d3ebffed532ab46c4ae52c5e7f1da2b\n"
    },
    {
      "commit": "d462ecf8f82076d21c85bdeeefbd16a1a91d2805",
      "tree": "88d12b0084c53b857ec58baae8c6cf3b1b6fe20d",
      "parents": [
        "edf0178265efee73da80754d1d76e3d69e1f593f"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jul 21 13:55:16 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jul 21 14:30:36 2011 -0700"
      },
      "message": "USB: Fix handling USB accessory attached when device is booting\n\nAlso defer anything that could start an activity from \"system ready\"\nto \"boot completed\" time.\n\nBug: 5051683\n\nChange-Id: I69db751cb991dd247bd0ac3c70a0d84c0d71f365\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "eb2591f8f71907ded8bac947ba98ae6c24192e5f",
      "tree": "51f85a2102a1af8de49612c59566c0232a1892e5",
      "parents": [
        "c843fdd7da8f47377fe03ca3246205bd59cb3e51",
        "97a61565ea95472e65899070e64853f8c147bb11"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jul 14 15:22:59 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 14 15:22:59 2011 -0700"
      },
      "message": "Merge \"VPN: Hook up the new control protocol and network state.\""
    },
    {
      "commit": "97a61565ea95472e65899070e64853f8c147bb11",
      "tree": "fed415da0df68c5c06e67ac943d7d4251ba79c64",
      "parents": [
        "1591aa004557859742fb89190ce76cbbf3a1ef12"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jul 14 15:05:05 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jul 14 15:07:42 2011 -0700"
      },
      "message": "VPN: Hook up the new control protocol and network state.\n\n1. No more End-Of-Arguments.\n2. Daemons close the control socket after they are initialized.\n3. No more system properties.\n4. ip-up-vpn now creates state to pass the configuration.\n5. JNI methods are split again for legacy VPN.\n\nChange-Id: I02fafdf01d425c965345ef712b2bd5fdee3a0cab\n"
    },
    {
      "commit": "9302c8796fc4dcda08d4bd1e11733848fd4fafaf",
      "tree": "1008e3db6ba1eb6ee02b7bf8c4a648a13a0b741d",
      "parents": [
        "14fcf900ce65e5c8c952c95ee12041f8de16fbb7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 13 22:51:29 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 14 04:11:21 2011 -0700"
      },
      "message": "Refactor input dispatcher use of window/app handles.\n\nThis change moves the cached window and application input state\ninto the handle objects themselves.  It simplifies the dispatcher\nsomewhat because it no longer needs to fix up references to\ntransient InputWindow objects each time the window list is updated.\n\nThis change will also make it easier to optimize setInputWindows\nto avoid doing a lot of redundant data copying.  In principle, only\nthe modified fields need to be updated.  However, for now we\ncontinue to update all fields in unison as before.\n\nIt turns out that the input dispatcher was inappropriately retaining\npointers to InputWindow objects within the mWindows InputWindow\nvector.  This vector is copy-on-write so it is possible and the\nitem pointers to change if an editing operation is performed on\nthe vector when it does not exclusively own the underlying\nSharedBuffer.  This bug was uncovered by a previous change that\nreplaced calls to clear() and appendVector() with a simple use\nof operator\u003d which caused the buffer to be shared.  Consequently\nafter editItemAt was called (which it shouldn\u0027t have, actually)\nthe buffer was copied and the cached InputWindow pointers became\ninvalid.  Oops.  This change fixes the problem.\n\nChange-Id: I0a259339a6015fcf9113dc4081a6875e047fd425\n"
    },
    {
      "commit": "c1b9bbb21c8ad5109978a4e9e770cd18b0257434",
      "tree": "bfb7dd2272e5fe29d3c0fc4f22ca708e00bc10be",
      "parents": [
        "b6e5e7a740bf595a1a5d32b28549e5d579a04ee3"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Jul 13 11:06:57 2011 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Jul 13 19:45:44 2011 -0400"
      },
      "message": "Remove some #ifdef HAVE_ANDROID_OS that were needed for the simulator build\n\nChange-Id: I13d9f251f86c05ae5405f37adbf6b8e9660935ba\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "bd882b1c8708686d373c56e07e6bb8b1cb6ffd9e",
      "tree": "b17fbae7a6ff475ab37be48046d0540d594f84fb",
      "parents": [
        "3f9dd287b99340efaaa257759e71a8f81b2ed113"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 11 22:12:16 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 11 22:12:16 2011 -0700"
      },
      "message": "Remove the simulator target from all makefiles.\nBug: 5010576\n\nChange-Id: I04d722f258951a3078fe07899f5bbe8aac02a8e8\n"
    },
    {
      "commit": "c2b8aa0b4c822b0e307f62131650f4a6ee89bb66",
      "tree": "de5998a2db403a13ba4dee000fec8036afba06df",
      "parents": [
        "e96aae1f4958bbc434b640b95a308757db8f8bed"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Sun Jul 03 18:00:47 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Sun Jul 03 18:00:47 2011 -0700"
      },
      "message": "VPN: rename some variables.\n\nChange-Id: I7f15b5ab30f591e26242fca27af25f578809534c\n"
    },
    {
      "commit": "8bc003e2f6668c5b6b855593a3a5e3828750fe9a",
      "tree": "00fa7d7048841887fcc3638e199719d5703f1a85",
      "parents": [
        "d6315c0ebb6ebbc67f0c669e92f92be70b49ba2c",
        "3281034c1c458b4eecd867d20b64dc5edd68ec14"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Sat Jul 02 16:37:25 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jul 02 16:37:25 2011 -0700"
      },
      "message": "Merge \"VPN: merge JNI methods.\""
    },
    {
      "commit": "3281034c1c458b4eecd867d20b64dc5edd68ec14",
      "tree": "95b745fc557eda8d5ad94b0895a882706e28658b",
      "parents": [
        "e9107901ae264de4ff5603d3cfc63a03ca4117d4"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Sat Jul 02 16:16:03 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Sat Jul 02 16:16:03 2011 -0700"
      },
      "message": "VPN: merge JNI methods.\n\nLegacy VPN needs to change routes by itself.\n\nChange-Id: I4cf6639f2b00225810f49704ae05797fc70921d9\n"
    },
    {
      "commit": "a4d1bc517207d7ca8d56f0004cd04f0f1dd4567d",
      "tree": "28c492be5daf8cbb0714e3b7e56daea9aff63795",
      "parents": [
        "6894a2947eb1f9d499fd7f1a1ec4e7098e07d25d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 01 19:23:40 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 01 19:23:40 2011 -0700"
      },
      "message": "Drop obsolete touch screen hacks.\n\nChange-Id: I47354c37ee2cc2b36340eb709bb5043b3ba78ed9\n"
    },
    {
      "commit": "9c0835fd7262c50cf6a91380df1654daffe2c977",
      "tree": "b7c3f42c37f8b3d71161b9fc700e5ff7b2e11d15",
      "parents": [
        "7d1279b30911ed1e5d8f7e195176fd98ee64454d"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jun 30 22:59:18 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jun 30 22:59:18 2011 -0700"
      },
      "message": "VPN: correct the netmask for IPv4.\n\nChange-Id: Id6e955af129d55120676d0d9cfe75388671aa367\n"
    },
    {
      "commit": "f4e3bf892e593d8c74290739446ac205fe8c66b2",
      "tree": "c82afe87c1c93095d6fa8858ee1b92bd386c3d41",
      "parents": [
        "ace263902e6b8437fa1135cb9242e9c1c309cdf9"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jun 30 12:33:17 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jun 30 12:41:11 2011 -0700"
      },
      "message": "VPN: refactor few JNI methods for the usage of legacy VPN.\n\nNow default routes are handled in JNI instead of VpnBuilder.\n\nChange-Id: Ib026bba6793b64aae0f8356df3d2aaae489d08b4\n"
    },
    {
      "commit": "9b9fb5cc08eaa0b66a80eba2f03168531544f65a",
      "tree": "976d96dbc4785f021a8d3088013932b06ed21fe6",
      "parents": [
        "f3cb9ed2657fd9ca93ac336a42ef26eee7f080d2"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Jun 29 15:09:40 2011 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Jun 29 15:09:40 2011 -0400"
      },
      "message": "GPS: Support for on-demand NTP time injection\n\nChange-Id: I83db0249c13598070ed70b9f90207305b60b468f\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "84bf7390ea6b9a82bbd036b64c41d7c120b7f159",
      "tree": "7bc7c348ad0d4ab48f88bb0a695ba5fe97e5af2b",
      "parents": [
        "04ba25c418bc4538e9dc0f047cfb9608d358f679"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jun 16 19:01:28 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jun 16 19:01:28 2011 -0700"
      },
      "message": "VPN: make the file descriptor non-blocking by default.\n\nChange-Id: I89899b2b6a8ac64a4a052ffd501cc0221fab3ffe\n"
    },
    {
      "commit": "474dcb5c3ddff737c4ac9fc44a1f7be569605e5f",
      "tree": "5fc1710768966b240ded5e6e62e51f77d7e57c55",
      "parents": [
        "93fa9b30b91f75ee161d0791ff17f98d1a603812"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 14 20:22:50 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 14 22:07:31 2011 -0700"
      },
      "message": "Add support for disabling pointer gestures.\n\nMade it possible for individual windows to disable pointer gestures\nwhile the window has focus using a private API.\n\nCleaned up the InputReader configuration code to enable in-place\nreconfiguration of input devices without having to reopen them all.\nThis change makes changing the pointer speed somewhat nicer since the\npointer doesn\u0027t jump back to the origin after each change.\n\nChange-Id: I9727419c2f4cb39e16acb4b15fd7fd84526b1239\n"
    },
    {
      "commit": "96c7e7000010cbec8345a2ae8672355080cf1531",
      "tree": "b86374fecbf199e8da0ce3b6f8fa5bef8dd531bb",
      "parents": [
        "8ea928945b6a594e7e569613742367a91f01e785"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 13 18:29:54 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 13 18:29:54 2011 -0700"
      },
      "message": "VPN: do not allow zero prefix length in routing rules.\n\nThe public API splits default route into two narrower routes.\nAdd this check in case some one calls the private API.\n\nChange-Id: Ie1fc0155b74415b971380bc8429cd74026c3fda0\n"
    },
    {
      "commit": "8ea928945b6a594e7e569613742367a91f01e785",
      "tree": "6daf989460a40f80d6afb31535b43bd9748ad715",
      "parents": [
        "0991a7fb12ce62bff0ea5aed6c4c92c106747158"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 13 16:18:39 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 13 17:59:58 2011 -0700"
      },
      "message": "VPN: do not use gateway in routing rules.\n\nThe first release of this API only supports TUN interface, and\nso far there is no plan for TAP. TUN works on IP frames which\nmakes gateway nearly useless. The only value to have a gateway\nis that kernel may use it to select the source address. However\ncurrently it does not work in IPv6, and even in IPv4 applications\ncan bind to any local address on the device. Remove it to keep\nthe API clear, and it can be added back at any time if needed.\n\nChange-Id: If9086d20d885a3a7f7ab5f07afbcfeecb677bbea\n"
    },
    {
      "commit": "23a5e4bcdcf7d3fef9aaa6c4a20f9f08f22ca9a6",
      "tree": "0690d4c09d4ee005be42f53133edbd87f82a1be7",
      "parents": [
        "6ddd57491a06da3ee56056b088424500c144063a"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 13 16:14:49 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 13 16:14:49 2011 -0700"
      },
      "message": "VPN: tolerate duplicated routes.\n\nChange-Id: I0f9efa8c3af3d4859358438745a5cd2c4ad376ca\n"
    },
    {
      "commit": "6ddd57491a06da3ee56056b088424500c144063a",
      "tree": "f2cb65ce1bf592afaf3c9cd4378f0876f6325129",
      "parents": [
        "6224b5ec3857d78e92bbc21075717eaa228ff891"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 13 16:08:01 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 13 16:08:01 2011 -0700"
      },
      "message": "VPN: fix a bad optimization of zeroing ifr_flags lately.\n\nChange-Id: Ib7d89422ef0a9159ba912cf32b678821cb72a25a\n"
    },
    {
      "commit": "6224b5ec3857d78e92bbc21075717eaa228ff891",
      "tree": "3486d738e0c87eee35b824a8e020a565eb54f96f",
      "parents": [
        "3663227a8be5c6c05bf4adadc378fd69b7ae814c"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 13 15:26:51 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 13 15:26:51 2011 -0700"
      },
      "message": "VPN: set IFF_NO_PI on TUN interface.\n\nPacket info header (struct tun_pi) was required to support IPv6\nin kernel prior to 2.6.26. Setting IFF_NO_PI will remove the header\nfrom the packets sent/recieved via TUN file descriptor, so now they\nare just raw IP packets.\n\nChange-Id: I0b4ae9db23d3bc10995a00eb053527b499ad6eb6\n"
    },
    {
      "commit": "3663227a8be5c6c05bf4adadc378fd69b7ae814c",
      "tree": "d358db75f7ea6f012725347b577e7772743f84fe",
      "parents": [
        "36673698078cb47e777418cadc4115a65bc5947d"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 13 15:05:37 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 13 15:05:37 2011 -0700"
      },
      "message": "VPN: add MTU support.\n\nChange-Id: Ia2f06ae1fcf065bde7dafd212b84b37a34f1a47e\n"
    },
    {
      "commit": "36673698078cb47e777418cadc4115a65bc5947d",
      "tree": "0090ea7d9ce1a9f1a1a9024c82bac58816fc6049",
      "parents": [
        "1775a0c866277bf43d3c71008803a61502980cea"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 13 14:24:13 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 13 14:32:18 2011 -0700"
      },
      "message": "VPN: use ParcelFileDescriptor.adoptFd() instead of doing it in JNI.\n\nThis removes the dependency of android_util_Binder.h.\nThis change also removes some redundant zeroing.\n\nChange-Id: Ie9fedd471dfa198f9a3261e03651f945cefbbf61\n"
    },
    {
      "commit": "8df5fcfa621ff40fd4a845804b02464dd9db5e86",
      "tree": "486fe6ae59124ed6d65cef75737785dbe14f539b",
      "parents": [
        "b2ba51e6deaecf43d05dee01e2b0c3daf2fff6e0",
        "6d60190a3156e0ac69c800bbb10691b70ae9bd54"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jun 10 10:32:16 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 10 10:32:16 2011 -0700"
      },
      "message": "am 6d60190a: am e502c536: am b3174c46: UsbService: Fix JNI reference leak\n\n* commit \u00276d60190a3156e0ac69c800bbb10691b70ae9bd54\u0027:\n  UsbService: Fix JNI reference leak\n"
    },
    {
      "commit": "b3174c46ade0be4628813a74b317da538e367bc8",
      "tree": "78653c3f7d8dc59c2ea2ec623e28d2d254c50816",
      "parents": [
        "1d3173c3dc93bb4f2efc5b059fec8e7577b3258a"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jun 09 14:48:11 2011 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jun 09 14:48:11 2011 -0400"
      },
      "message": "UsbService: Fix JNI reference leak\n\nhttp://code.google.com/p/android/issues/detail?id\u003d17365\n\nChange-Id: Ice0174e0db2a785d32ac16694ebf3b7ddb1b7fb3\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "ff3bdca31f4cf2bd607519b276dd175763aa1784",
      "tree": "61bea91f9ae3f7c94f0f666696e150134b6a844d",
      "parents": [
        "9eb5847777b317991a44c01b901f35d99485c733"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon May 23 17:26:46 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Jun 08 14:16:42 2011 -0700"
      },
      "message": "The service part of the user space VPN support.\n\nThe dialogs will be in another change.\n\nChange-Id: I0cdfd2ef21ffd40ee955b3cbde5ada65dbfdb0bc\n"
    },
    {
      "commit": "774ed9d9537c15482e8baca2f2890c5d2f4ffe75",
      "tree": "a22195f0a2d7e97ce86126610a0ece0d9f579460",
      "parents": [
        "f5969553727e7a9058820291439403bb3f9b327f",
        "8b2c00144ac262a6fbdbbac1ed8dfe813b883f81"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 07 17:48:39 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 07 17:48:39 2011 -0700"
      },
      "message": "resolved conflicts for merge of 8b2c0014 to master\n\nChange-Id: I33a5a2949dc6c2d09e8196ba8c7128caa7ac2361\n"
    },
    {
      "commit": "bb3fcba0caf697f1d238a2cbefdf1efe06eded99",
      "tree": "61dccaf85759b22557e978672b81bd686089e087",
      "parents": [
        "7f5b99676f2fda710c2182cae16f6b9094a1d98c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Mon Jun 06 19:23:05 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Mon Jun 06 19:23:05 2011 -0700"
      },
      "message": "Touch pad improvements.\nBug: 4124987\n\nOnly show one spot per touch point instead of one spot per\nfinger for multitouch gestures.\n\nTweaked the pointer acceleration curves.\n\nDissociated the hover/tap timeouts from the \"tap\" timeout\nsince they mean very different things.\n\nChange-Id: I7c2cbd30feeb65ebc12f6c7e33a67dc9a9f59d4c\n"
    },
    {
      "commit": "7218d830e27d81141588cd6e37f206d141a18f62",
      "tree": "fae19a482a9c238fb94b1f46e7b37daf4f18a3ab",
      "parents": [
        "a742f854901b8306d3696c9e9b7881c207130a01",
        "ca2b552d981239043a575dfc9db86966492d0f9e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 03 15:50:27 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 03 15:50:27 2011 -0700"
      },
      "message": "resolved conflicts for merge of ca2b552d to master\n\nChange-Id: I2f3693a59042ac5aa2d7bcdc3a504c78dc99a18b\n"
    },
    {
      "commit": "f3b57def9345d6d3cac3604d6a970f6d48f345ec",
      "tree": "e4a0926992c2ed61953a07f329693dd0e6590b25",
      "parents": [
        "201e6606e78c67e8d94b131f43789c5d8aaf3beb",
        "7e193916c033bc952222ca808916b2dc4b4b557d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 03 12:13:24 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 03 12:26:54 2011 -0700"
      },
      "message": "resolved conflicts for merge of 7e193916 to master\n\nChange-Id: If06892419319c3a2d4ab6b03dd3ceb99b83803b5\n"
    },
    {
      "commit": "1a84fd1fb7a51f3fe4f8865e1cdd09f3490f696c",
      "tree": "cf9491aedb10c8355e62ae8384db0e9f005beb1c",
      "parents": [
        "19c97d46fb57f87ff45d9e6ea7122b4eb21ede8c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Thu Jun 02 01:26:32 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Thu Jun 02 15:39:21 2011 -0700"
      },
      "message": "Add a preference panel for mouse speed.\n\nBug: 4124987\nChange-Id: I3ce175d268a1d043cf5878481261b1049a15a149\n"
    },
    {
      "commit": "46d0adf8256a42416584765625852b6e48497c90",
      "tree": "1667e7010a36ad8023b466242388317fa3a06174",
      "parents": [
        "b0aee3ee430ce79430ba16e53109840db5bc342a"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu May 26 10:27:39 2011 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue May 31 20:52:06 2011 -0400"
      },
      "message": "UsbService: Refactor USB host and device support into two separate classes\n\nHost support is in UsbHostManager, device support is in UsbDeviceManager\n\nRenamed UsbDeviceSettingsManager to UsbSettingsManager\n\nChange-Id: Ib76e72957c233fa7f08f454d4d9a2a1da6368cc7\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "214eaf48878bba00cbd5831871bcbd82632b6e34",
      "tree": "e981793f6a27d6aa789d92fe49ea346433452ae0",
      "parents": [
        "4e3f7206eb0af14d3da4c03bdf9918161774e726"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Thu May 26 19:17:02 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Tue May 31 15:00:59 2011 -0700"
      },
      "message": "Use ViewConfiguration to seed input system configuration.\n\nFix bug where the pointer presentation would be updated on\nany input reader timeout rather than only when a pointer gesture\nis in progress.\n\nBug: 4124987\nChange-Id: Ie9bba4a0b3228d55e45e65fa2ede5cd6ba887a08\n"
    },
    {
      "commit": "86ea1f5f521981d075aef56f11693e4f3bc32fdb",
      "tree": "72e1e44513d3e9e204a4fbd2855a079822e949eb",
      "parents": [
        "a6dbfdd3a858aac52cc87f80f91e8eef7d613605"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 12 22:39:53 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed May 25 14:37:17 2011 -0700"
      },
      "message": "Initial checkin of spot presentation for touchpad gestures. (DO NOT MERGE)\n\nAdded a new PointerIcon API (hidden for now) for loading\npointer icons.\n\nFixed a starvation problem in the native Looper\u0027s sendMessage\nimplementation which caused new messages to be posted ahead\nof old messages sent with sendMessageDelayed.\n\nRedesigned the touch pad gestures to be defined in terms of\nmore fluid finger / spot movements.  The objective is to reinforce\nthe natural mapping between fingers and spots which means there\nmust not be any discontinuities in spot motion relative to\nthe fingers.\n\nRemoved the SpotController stub and folded its responsibilities\ninto PointerController.\n\nChange-Id: Ib647dbd7a57a7f30dd9c6e2c260df51d7bbdd18e\n"
    },
    {
      "commit": "a6dbfdd3a858aac52cc87f80f91e8eef7d613605",
      "tree": "2807e5662e74b090e880588f39cdc1caf4e01e0e",
      "parents": [
        "5ced76a14350db56f1a80f00076f8be3d982c389"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 11 11:54:25 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed May 25 14:37:16 2011 -0700"
      },
      "message": "Add a sprite controller. (DO NOT MERGE)\n\nRefactored PointerController to extract the surface management\ncode to a new component called a SpriteController so that it can\nbe used to move finger tracking spots around the screen as well.\nThe SpriteController is designed to fully decouple the client from\nany latency introduced by surface transactions and drawing.\nAll sprite updates are performed asynchronously on the Looper using\na copy of the sprite state.\n\nAdded a stub SpotController implementation for touch pad UX.\nIt will be implemented in a subsequent patch.\n\nFixed a little bug in pointer orientation changes when entering\nDISPLAY_ORIENTATION_90 the x offset was clobbered.\n\nChange-Id: I6d59d80df9af61e93af50290e7776337d10c9d5a\n"
    },
    {
      "commit": "524ee64b91bc123e1ccfc881a0f1a1e84722251d",
      "tree": "c3f358e5a7afc91dd63265e01ecbf3db781f58eb",
      "parents": [
        "22d789d580a4ab5bed83c0ed698d2f5bc721e176"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 29 15:11:34 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Tue May 24 15:21:46 2011 -0700"
      },
      "message": "Support chorded fallback keys. (DO NOT MERGE)\n\nAlso be more careful about canceling fallback keys during focus\ntransitions, when the application handles the key, or when the\npolicy decides to do something different.\n\nFixed a crash due to JNI CallObjectMethod returning an undefined\nvalue (not null) when an exception is thrown.\n\nFixed a crash due to the policy trying to create a Dialog for\nrecent apps on the dispatcher thread.  It should happen on the\npolicy\u0027s Looper instead.\n\nBug: 4187302\nChange-Id: I043f82913830f411b3bb4018d6422467b6ca454f\n"
    },
    {
      "commit": "22d789d580a4ab5bed83c0ed698d2f5bc721e176",
      "tree": "9d848a0918aa939b457a6fa92bedf43612a50cba",
      "parents": [
        "dbf8d27f4c32e20e132e90ad713c6ebaf71d7756"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 25 11:58:46 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Tue May 24 15:21:46 2011 -0700"
      },
      "message": "Fix focused application handle. (DO NOT MERGE)\n\nFix a bug where we were always setting the focused application\nhandle to NULL.  This broke ANR processing while starting\napplications and caused input events to be dropped while\nstarting applications.\n\nBug: 4174573\nChange-Id: Ice7ce3a2b65219568a8227fc1383bafb294666b5\n"
    },
    {
      "commit": "5b2b4d9c0a56c4b5e869c828a6c36a1b9e27d61b",
      "tree": "0e00adeba7368949783dd598b57b70a4936f8e9b",
      "parents": [
        "96ad3979f328a1aa098917ca1c35575e85345526"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Mar 14 19:39:54 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Mon May 23 17:19:59 2011 -0700"
      },
      "message": "Improve VelocityTracker numerical stability. (DO NOT MERGE)\n\nReplaced VelocityTracker with a faster and more accurate\nnative implementation.  This avoids the duplicate maintenance\noverhead of having two implementations.\n\nThe new algorithm requires that the sample duration be at least\n10ms in order to contribute to the velocity calculation.  This\nensures that the velocity is not severely overestimated when\nsamples arrive in bursts.\n\nThe new algorithm computes the exponentially weighted moving\naverage using weights based on the relative duration of successive\nsample periods.\n\nThe new algorithm is also more careful about how it handles\nindividual pointers going down or up and their effects on the\ncollected movement traces.  The intent is to preserve the last\nknown velocity of pointers as they go up while also ensuring\nthat other motion samples do not count twice in that case.\n\nBug: 4086785\nChange-Id: I95054102397c4b6a9076dc6a0fc841b4beec7920\n"
    },
    {
      "commit": "aa9d84c37e05f696ec158dac98ce38cf41e18314",
      "tree": "49a8e08d51840eec7ff20b624c59408f2f7523aa",
      "parents": [
        "28e77e616d8f005c8e07d6f28a83f8ca9772aedf",
        "05be6d6fe09ddfb706d1bef3b20c3d37f45e3c8a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 09 19:00:59 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 09 19:00:59 2011 -0700"
      },
      "message": "resolved conflicts for merge of 05be6d6f to master\n\nChange-Id: Ic6a6c5bb300f6f1d43f9ed550b284282b4f16212\n"
    },
    {
      "commit": "e2515eebf42c763c0a2d9f873a153711778cfc17",
      "tree": "ee159940f05c439d0524771bfbfe6b551c82c2d4",
      "parents": [
        "158e3582c03ab9e0221718da20fc8854bb9216d0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 27 18:52:56 2011 -0400"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 09 17:03:24 2011 -0700"
      },
      "message": "Better compat mode part one: start scaling windows.\n\nFirst step of improving app screen size compatibility mode.  When\nrunning in compat mode, an application\u0027s windows are scaled up on\nthe screen rather than being small with 1:1 pixels.\n\nCurrently we scale the application to fill the entire screen, so\ndon\u0027t use an even pixel scaling.  Though this may have some\nnegative impact on the appearance (it looks okay to me), it has a\nbig benefit of allowing us to now treat these apps as normal\nfull-screens apps and do the normal transition animations as you\nmove in and out and around in them.\n\nThis introduces fun stuff in the input system to take care of\nmodifying pointer coordinates to account for the app window\nsurface scaling.  The input dispatcher is told about the scale\nthat is being applied to each window and, when there is one,\nadjusts pointer events appropriately as they are being sent\nto the transport.\n\nAlso modified is CompatibilityInfo, which has been greatly\nsimplified to not be so insane and incomprehendible.  It is\nnow simple -- when constructed it determines if the given app\nis compatible with the current screen size and density, and\nthat is that.\n\nThere are new APIs on ActivityManagerService to put applications\nthat we would traditionally consider compatible with larger screens\nin compatibility mode.  This is the start of a facility to have\na UI affordance for a user to switch apps in and out of\ncompatibility.\n\nTo test switching of modes, there is a new variation of the \"am\"\ncommand to do this: am screen-compat [on|off] [package]\n\nThis mode switching has the fundamentals of restarting activities\nwhen it is changed, though the state still needs to be persisted\nand the overall mode switch cleaned up.\n\nFor the few small apps I have tested, things mostly seem to be\nworking well.  I know of one problem with the text selection\nhandles being drawn at the wrong position because at some point\nthe window offset is being scaled incorrectly.  There are\nprobably other similar issues around the interaction between\ntwo windows because the different window coordinate spaces are\ndone in a hacky way instead of being formally integrated into\nthe window manager layout process.\n\nChange-Id: Ie038e3746b448135117bd860859d74e360938557\n"
    },
    {
      "commit": "2352b978a3c94cd88f41d0d908f961333fdac1e9",
      "tree": "24f8f19e9b2895cc2c3489bf2dd7a09aaf5834db",
      "parents": [
        "f76dc56c33ba66138af70d72803cf55f881c3717"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 12 22:39:53 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 19 15:35:51 2011 -0700"
      },
      "message": "Initial checkin of spot presentation for touchpad gestures.\n\nAdded a new PointerIcon API (hidden for now) for loading\npointer icons.\n\nFixed a starvation problem in the native Looper\u0027s sendMessage\nimplementation which caused new messages to be posted ahead\nof old messages sent with sendMessageDelayed.\n\nRedesigned the touch pad gestures to be defined in terms of\nmore fluid finger / spot movements.  The objective is to reinforce\nthe natural mapping between fingers and spots which means there\nmust not be any discontinuities in spot motion relative to\nthe fingers.\n\nRemoved the SpotController stub and folded its responsibilities\ninto PointerController.\n\nChange-Id: I5126b1e69d95252fda7f2a684c9287e239a57163\n"
    },
    {
      "commit": "dd66bcbf9d6ef0c50a18d9c4b1b39ce7ef7afcc4",
      "tree": "d44c2b9758436b189a2091297fa1e22d350da4a3",
      "parents": [
        "ae447967b5f07dd789a7488aa9e190637478a97c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 12 11:28:59 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 12 11:28:59 2011 -0700"
      },
      "message": "More native code cleanup.\n\nDon\u0027t keep unused global references to classes, don\u0027t throw exceptions\nwhen an exception is already pending, and fix a (harmless) misunderstanding\nabout how GetStringChars works.\n\nChange-Id: Ie445036f057daa8a1c76aceb7bad2a84fb81d820\n"
    },
    {
      "commit": "4a1ba21044bfb0a684a4ea3a559e427f2e092e1c",
      "tree": "6a4b1d2f4e4e64f447db97b3964d8269d03bd31a",
      "parents": [
        "01ce57f92f49c0482ea0761c0529292e8c065196",
        "a3804cf77f0edd93f6247a055cdafb856b117eec"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 11 17:27:53 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 11 17:27:53 2011 -0700"
      },
      "message": "Merge \"You don\u0027t need to poke around inside FileDescriptor manually.\""
    },
    {
      "commit": "a3804cf77f0edd93f6247a055cdafb856b117eec",
      "tree": "795814e56ceddf3773f7f2b47bb7a6b632daa5d5",
      "parents": [
        "4123211637dcc0155091016f0c0987b80e56ab7b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 11 16:50:19 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 11 17:04:01 2011 -0700"
      },
      "message": "You don\u0027t need to poke around inside FileDescriptor manually.\n\nWe can help you with that.\n\nNote also that getParcelFileDescriptorFD did no such thing. All its callers\nwere passing in a regular java.io.FileDescriptor and expecting the int. No\nParcelFileDescriptors involved.\n\nChange-Id: Idc233626f20c092e719f152562601f406cc1b64a\n"
    },
    {
      "commit": "5541de9ea3513a12d1ac2ad07e7e04a3aa7741a0",
      "tree": "3ac3cd85bf588df25aed0a0df29e70629a096547",
      "parents": [
        "5008e92d1fd573d926cd55c39ca723a6fbdf7c4b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 11 11:54:25 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 11 14:08:29 2011 -0700"
      },
      "message": "Add a sprite controller.\n\nRefactored PointerController to extract the surface management\ncode to a new component called a SpriteController so that it can\nbe used to move finger tracking spots around the screen as well.\nThe SpriteController is designed to fully decouple the client from\nany latency introduced by surface transactions and drawing.\nAll sprite updates are performed asynchronously on the Looper using\na copy of the sprite state.\n\nAdded a stub SpotController implementation for touch pad UX.\nIt will be implemented in a subsequent patch.\n\nFixed a little bug in pointer orientation changes when entering\nDISPLAY_ORIENTATION_90 the x offset was clobbered.\n\nChange-Id: Ib25d162d577c9b354cb74d5d761c3c9f9f438d42\n"
    },
    {
      "commit": "46e18c11d46a2bc1a46174f963d0ed1224d94cd2",
      "tree": "266818e339e08cea909f21b9af492f5ffc83079d",
      "parents": [
        "14faa3bd8bd6d1deab63a40ad2f8b6e451a16208"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Apr 05 22:44:45 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Apr 06 10:04:20 2011 -0700"
      },
      "message": "Don\u0027t use local ref for cached jclass reference in JNI code\n\nChange-Id: Id45b2acb358a819f2fd332e99f3a095f6fc7299b\nrelated-to-bug: 4241138\n"
    },
    {
      "commit": "0029c66203ab9ded4342976bf7a17bb63af8c44a",
      "tree": "a0d5f54ff6f88dae18179d1621dd2c87f1fa8d27",
      "parents": [
        "6e6cd7a5660af1a4b5a9ad091c41ef1c72ad2000"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 30 02:25:18 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 30 16:55:15 2011 -0700"
      },
      "message": "Add input filter mechanism for accessibility.\n\nThis patch adds a mechanism for capturing, filtering, transforming\nand injecting input events at a very low level before the input\ndispatcher attempts to deliver them to applications.  At this time,\nthe mechanism is only intended to be used by the accessibility\nsystem to implement built-in system-level accessibility affordances.\n\nThe accessibility input filter is currently just a stub.\nIt logs the input events receives and reinjects them unchanged,\nexcept that it transforms KEYCODE_Q into KEYCODE_Z.\n\nCurrently, the accessibility input filter is installed whenever\naccessibility is enabled.  We\u0027ll probably want to change that\nso it only enables the input filter when a screen reader is\ninstalled and we want touch exploration.\n\nChange-Id: I35764fdf75522b69d09ebd78c9766eb7593c1afe\n"
    },
    {
      "commit": "6e923274c593bb52232321fc9ebbd966657e69f8",
      "tree": "68fd47b67dee5d821d8357bacb7024dcab4eaa71",
      "parents": [
        "5c8eff3308c79f25bfe07d00c214f665581e5d7e",
        "da3d5a91b6b311ed77f2707d4456c1f18b84d73b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 29 16:19:46 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 29 16:19:46 2011 -0700"
      },
      "message": "Merge \"Support chorded fallback keys.\""
    },
    {
      "commit": "da3d5a91b6b311ed77f2707d4456c1f18b84d73b",
      "tree": "20ff48478df49e47372c89431ff6dc7e0671059d",
      "parents": [
        "a2cc28d732577dd48a02de637c635e9764400248"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 29 15:11:34 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 29 16:16:55 2011 -0700"
      },
      "message": "Support chorded fallback keys.\n\nAlso be more careful about canceling fallback keys during focus\ntransitions, when the application handles the key, or when the\npolicy decides to do something different.\n\nFixed a crash due to JNI CallObjectMethod returning an undefined\nvalue (not null) when an exception is thrown.\n\nFixed a crash due to the policy trying to create a Dialog for\nrecent apps on the dispatcher thread.  It should happen on the\npolicy\u0027s Looper instead.\n\nBug: 4187302\nChange-Id: I659a3fd1bd2325ed36d965f9beb75dacb89790c9\n"
    },
    {
      "commit": "60355780eaa7d80a76a5481ab033606bcfb630fd",
      "tree": "d39dadbdb2840065fc5f38978f7ea933156bd500",
      "parents": [
        "ab13a89c997fafcfbbb10ed31008893863e39a37",
        "038c7297c9e2e4b6cdb490ac9fe7102da434278a"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Mar 28 11:04:29 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 28 11:04:29 2011 -0700"
      },
      "message": "am 038c7297: am b115807a: am 7661dd8d: Merge \"UsbService: Fix JNI local reference leaks in the USB host support code\" into honeycomb-mr1\n\n* commit \u0027038c7297c9e2e4b6cdb490ac9fe7102da434278a\u0027:\n  UsbService: Fix JNI local reference leaks in the USB host support code\n"
    },
    {
      "commit": "8f8c6023f2fad38347cd19af9a81fa485fe3bd82",
      "tree": "b455948bf249e2a63e1552ad50530dc1a2c8222d",
      "parents": [
        "0b9bacc69314fc6480d1ebe67b7ee0d0aebca5c0"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sun Mar 27 19:35:43 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sun Mar 27 19:35:43 2011 -0700"
      },
      "message": "UsbService: Fix JNI local reference leaks in the USB host support code\n\nBug: 4175857\n\nChange-Id: I8b385f2257e509b0fb4d5f9516e9813b8165352d\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "696257ccf315a1da042787c5b2d1f80c7146fc94",
      "tree": "39c185c6f97540243e5d071e545343822f46f2cc",
      "parents": [
        "1be6cce70175bd90744498d5fca95e3f9eec1cf6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 25 18:42:40 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 25 18:42:40 2011 -0700"
      },
      "message": "merge libsurfaceflinger_client into libgui\n\nthis is the first step in unifying surfacetexture and surface.\nfor this reason the header files were not moved, as most of them\nwill eventually go away.\n\nNOTE: currently we keep libsurfaceflinger_client.so as an empty\nlibrary to workaround prebuilt binaries wrongly linking against\nit.\n\nChange-Id: I130f0de2428e8579033dc41394d093f4e1431a00\n"
    },
    {
      "commit": "a2cc28d732577dd48a02de637c635e9764400248",
      "tree": "fa94a7753206ae1f7ffb0332ef9ca6d9c4867058",
      "parents": [
        "c33d8d49e44358d72f19e7f7730c03d3902fa1f2"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 25 11:58:46 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 25 15:06:17 2011 -0700"
      },
      "message": "Fix focused application handle.\n\nFix a bug where we were always setting the focused application\nhandle to NULL.  This broke ANR processing while starting\napplications and caused input events to be dropped while\nstarting applications.\n\nBug: 4174573\nChange-Id: Icd7b8c4c49ed73c41978f3ff076c2e5cd839a802\n"
    },
    {
      "commit": "2120617f2fb10035022d1a3e76836a278a0e6a18",
      "tree": "f5de58fa47f2b0f50133a9a5b8d16e83e5746e91",
      "parents": [
        "0f3340cf992f5a40a6011c15154d9c907bdf65ab",
        "14438b81a1fe4d7ebdf8977f3d80a1dd1867c5ad"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 18:06:51 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 17 18:06:51 2011 -0700"
      },
      "message": "am 14438b81: am 970bad67: am be368de7: Merge \"Fix missing AOSP copyright headers for more files\" into honeycomb-mr1\n\n* commit \u002714438b81a1fe4d7ebdf8977f3d80a1dd1867c5ad\u0027:\n  Fix missing AOSP copyright headers for more files\n"
    },
    {
      "commit": "199d1c131d29b5356f71fbd7826a592c1dd8575f",
      "tree": "b02c7ab5a0662020447a3324c7a09c1d4294c5e0",
      "parents": [
        "2f1f2248c8439adbd686810e306c55f9e6a5abc3"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 11:48:13 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 14:43:12 2011 -0700"
      },
      "message": "Fix missing AOSP copyright headers for more files\n\no Update the copyright date on InputDispatcher_test.cpp and InputReader_test.cpp\n  because these two files were moved from other places to the current location,\n  and were actually created in 2010.\n\nbug - 4119349\n\nChange-Id: Ic93b81ddafb58e9e72a2e9e02ca3d9f173d6dca7\n"
    },
    {
      "commit": "843e29d3751017267b96565c543df0301c31a9f7",
      "tree": "80277ab21b62650bb613dc6b7df062c4c7cc9963",
      "parents": [
        "437c2c1620d0a485a4f81fdb0aaf706d89b865e7",
        "2ed2462aa29c564f5231f317c27b3188da875e52"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 15 20:01:16 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 15 20:01:16 2011 -0700"
      },
      "message": "Merge \"Improve VelocityTracker numerical stability.\""
    },
    {
      "commit": "2ed2462aa29c564f5231f317c27b3188da875e52",
      "tree": "63209b0ae028c1353e79d79b5e4000e7c4402ecc",
      "parents": [
        "ace13b17866dc9136aeecf6dfaf7077f37434469"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Mar 14 19:39:54 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 15 19:59:47 2011 -0700"
      },
      "message": "Improve VelocityTracker numerical stability.\n\nReplaced VelocityTracker with a faster and more accurate\nnative implementation.  This avoids the duplicate maintenance\noverhead of having two implementations.\n\nThe new algorithm requires that the sample duration be at least\n10ms in order to contribute to the velocity calculation.  This\nensures that the velocity is not severely overestimated when\nsamples arrive in bursts.\n\nThe new algorithm computes the exponentially weighted moving\naverage using weights based on the relative duration of successive\nsample periods.\n\nThe new algorithm is also more careful about how it handles\nindividual pointers going down or up and their effects on the\ncollected movement traces.  The intent is to preserve the last\nknown velocity of pointers as they go up while also ensuring\nthat other motion samples do not count twice in that case.\n\nBug: 4086785\nChange-Id: I2632321232c64d6b8faacdb929e33f60e64dcdd3\n"
    }
  ],
  "next": "3c9aa1aa093ff8acc5ec71190a35b9ab04d64fda"
}
