)]}'
{
  "log": [
    {
      "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": "1ee60119c4fa51ebfa781cf5fdc33f192e8551b8",
      "tree": "2fb0ce22107a1d3f0c73f3bd5d63a877f5a16d44",
      "parents": [
        "61bb11cfa03abc345f27ec14f63929b6f600edff"
      ],
      "author": {
        "name": "Ted Bonkenburg",
        "email": "tedbo@google.com",
        "time": "Tue Jul 26 09:51:18 2011 -0700"
      },
      "committer": {
        "name": "Ted Bonkenburg",
        "email": "tedbo@google.com",
        "time": "Thu Aug 11 19:58:25 2011 -0700"
      },
      "message": "Remove ParcelSurfaceTexture and update MediaPlayer\n\nThis removes the ParcelSurfaceTexture class since that functionality has been\nfolded into Surface.java. The change also updates the MediaPlayer to get rid\nof setParcelSurfaceTexture() and modifies setTexture() to use the new Surface\nfunctionality in order to simplify the code.\n\nChange-Id: Iafa75ea3188263928128325d8a726786971b4de4\n"
    },
    {
      "commit": "b3a900d7cd3842a208c0448b26806ed9f6d7fa2d",
      "tree": "8cd653d4a27b3ed3983254d8e37e7534c2e399ca",
      "parents": [
        "8d88cde56dc6624501482f6a11bab4115025d78b",
        "17e5f4cc706bed08367af8fa60ffb8c7c3ca7f62"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 28 16:26:08 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 28 16:26:08 2011 -0700"
      },
      "message": "Merge \"Add notifyPixelsChanged() call to NDK unlockPixels().\""
    },
    {
      "commit": "49754db5a304d995c1cc108ff6f19e4ba4265572",
      "tree": "cb09f23e7dd81ea505f90962fd550e36afbbc422",
      "parents": [
        "44e504e089b7483448c386741c5ee31d2c325400"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 01 17:37:58 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 25 20:04:18 2011 -0700"
      },
      "message": "Handle stylus buttons and tool types.\n\nAdded TOOL_TYPE_ERASER.\n\nRefactored the InputReader to share more code between the\nvarious input mappers that handle button states and to\nsimplify the accumulator implementations by having each\none only handle a single type of input.\n\nRemoved the concept of direct/indirect tool types from the API.\nIf we add it back, it should be done in a manner that is orthogonal\nto the tool type itself, perhaps as a flags field on the pointer.\nThe device source may well provide sufficient information anyhow.\n\nChange-Id: I811c22d95e8304269b6ee4f6d11a6b04f3cfc1b2\n"
    },
    {
      "commit": "09d7ed7b395d66be97c6bcb052039f5c0dce646c",
      "tree": "f707f6e46bd9a0edeaac9b33bffe054a64e3062c",
      "parents": [
        "9d29d155c51a26d789cce2c4c24c659487c63554"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 13 15:24:42 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 19 13:05:11 2011 -0700"
      },
      "message": "Add set_scaling_mode() to ANativeWindow.\n\nThis allows to specify the scaling mode independently from\nthe buffer size.\n\nChange-Id: Iaa2baa660445531a97d3fac192e580f4929c5d3b\n"
    },
    {
      "commit": "949be32b671304d5281ac0abbf30dcf4ebaa9eaf",
      "tree": "f12cbc9997bd2270f1a7604ba4d78739688975c3",
      "parents": [
        "8d96f19692815aa14979c811a130b38eafc1bf65"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 13 17:39:11 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 15 17:47:08 2011 -0700"
      },
      "message": "move lock/unlock implementaion outside of Surface into SurfaceTextureClient\n\nThis makes ANativeWindow_lock/ANativeWindow_unlockAndPost work\nwith ANativeWindows implemented by Surface and SurfaceTextureClient.\n\nAlso, Surface now inherits directly from SurfaceTextureClient.\n\nBug: 5003724\nChange-Id: I9f285877c7bae9a262e9a7af91c2bae78804b2ef\n"
    },
    {
      "commit": "17e5f4cc706bed08367af8fa60ffb8c7c3ca7f62",
      "tree": "458df7b689548331f22489c9487cbe969dc3fdc3",
      "parents": [
        "30e8f982770e4c79f2703f11d100e1ff1bb3b7bf"
      ],
      "author": {
        "name": "Alexandre Elias",
        "email": "aelias@google.com",
        "time": "Tue Jul 12 17:58:23 2011 -0700"
      },
      "committer": {
        "name": "Alexandre Elias",
        "email": "aelias@google.com",
        "time": "Tue Jul 12 18:08:10 2011 -0700"
      },
      "message": "Add notifyPixelsChanged() call to NDK unlockPixels().\n\nWithout this call, the NDK bitmap methods don\u0027t work in\nhardware-accelerated mode ( http://b/5017848 ).\n\nChange-Id: Icae6975757c9c9e83c0e9fc132161aa3004f8f28\n"
    },
    {
      "commit": "53ca3f13e70fda98aa9f39bb0c15afaf435e3904",
      "tree": "3e6dc47b4bf8fa93d5cd1d79c8cdf4a00f506f66",
      "parents": [
        "9df32619f376768c408969a40d40c54324e30b99"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 27 18:36:00 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 27 21:35:59 2011 -0700"
      },
      "message": "Hover and stylus API cleanup.\n\nAdded missing setOnHoverListener method.\nRemoved BUTTON_STATE_ERASER.\n\nChange-Id: I5d820d0a8e47fe5fd2d88e9fd9fc3fc6ce0dea0d\n"
    },
    {
      "commit": "050316184b01c0d1a01c46afae7429b89a27c31b",
      "tree": "b21b202cd5345f3989b512b74b227f3fc910383a",
      "parents": [
        "890e013c05ed62bea9781168f3f65efebcbac4d5"
      ],
      "author": {
        "name": "tedbo",
        "email": "tedbo@google.com",
        "time": "Mon Jun 06 16:02:47 2011 -0700"
      },
      "committer": {
        "name": "tedbo",
        "email": "tedbo@google.com",
        "time": "Thu Jun 09 11:59:23 2011 -0700"
      },
      "message": "Add ParcelSurfaceTexture Java class to enable ISurfaceTexture sharing via Binder.\n\nThis adds a new ParcelSurfaceTexture.java class that can be instantiated with\na SurfaceTexture and used to send the corresponding ISurfaceTexture interface\nto another process via Binder. The ParcelSurfaceTexture java object can then\nbe used to create an ANativeWindow based on the SurfaceTextureClient interface.\n\nChange-Id: Ie38ea948b866e52f36a6d0f6cde19b54a8546817\n"
    },
    {
      "commit": "8a7d44e8248cf7078da6094068b039dacc0a3971",
      "tree": "dbb6847bc8af2033321069e3ff1a2e0506f0ba14",
      "parents": [
        "0e5e16a656b0002f377f1bcda2e43a97206e4046",
        "54cb63e26e41b80c013b8665878b9c7c7fb328c1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 02 16:44:52 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 02 16:44:52 2011 -0700"
      },
      "message": "resolved conflicts for merge of 54cb63e2 to master\n\nChange-Id: I5b741a1781e3f76c03fc1534ffce871117effd10\n"
    },
    {
      "commit": "b96cbbd11c4590bec846212c33361e02293f18b5",
      "tree": "ac02f12136339bb608c07d8b26eaae1cddccf792",
      "parents": [
        "ff7622992f39d8e401ab23c5ce6a84f318906e52"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 27 13:40:26 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 27 13:40:26 2011 -0700"
      },
      "message": "Add \"tv\" density for 720p screens.\n\nChange-Id: I028969b007f2fceea66947d77a2ae31ef1d1a630\n"
    },
    {
      "commit": "e2c7715c772d5121397591b532d04a31b3ffcc99",
      "tree": "a528b89349ba2b367aeae8b442b5c696a7c8c99e",
      "parents": [
        "6895c4994350bc10a06481ecf42c4ba8abb3eedb",
        "bbca81334e3603c7328dc526bd63032b23d5261d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 24 11:27:11 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 24 11:27:11 2011 -0700"
      },
      "message": "resolved conflicts for merge of bbca8133 to master\n\nChange-Id: I81493674dceab848e41d380a77a37e5a9be06db6\n"
    },
    {
      "commit": "e360bb6bd8ea84b8d37604fc11dfc744b18fb0de",
      "tree": "7e833a630e8108be1345d8595438eea5a30e7173",
      "parents": [
        "1b144e625fb0d34cd680c44cbcfb2deb8a76d4c6"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 20 16:11:04 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 23 15:11:08 2011 -0700"
      },
      "message": "Add \"television\" mode.\n\nChange-Id: Ida1fdb61b036a8b489dbeda196fb4bc82e651b2b\n"
    },
    {
      "commit": "161e67ff3ba26408eea09221734ad2e29a1eed11",
      "tree": "6e98ff836fb5f134e01a7e9ef420ec35a78ad5d2",
      "parents": [
        "9e735541beed238d3b99d4bd284af1fc953c3775",
        "06a8ceacb0dc2713cb0bb2c93d2a750f2a58db68"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 19 21:44:52 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 19 21:44:52 2011 -0700"
      },
      "message": "resolved conflicts for merge of 06a8ceac to master\n\nChange-Id: Id51574c825affddfac14ad7214c5496d6a3d6e69\n"
    },
    {
      "commit": "69cb87576ba163b61bb0e6477a3b7c57a9b11d40",
      "tree": "a44be0af3d008409403be133358bdcd628741c01",
      "parents": [
        "b9537db8d9ee27efb4a98415ad2d6b50c1806e5d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 19 18:13:32 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 19 18:23:29 2011 -0700"
      },
      "message": "Add new \"-swNNNdp\" resource qualifier.\n\nChange-Id: I0101e88ca9d8d44138bdcaf571f24b0352f4f6ce\n"
    },
    {
      "commit": "fe9f8ab03a63b1037f07dd85799fbea80ec6adaa",
      "tree": "c0cfa91d0537321eeee0ede693fb414d8778a1a2",
      "parents": [
        "1abf1c59f8b15d5b4b198063b884e268bd79fb32"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 06 18:20:01 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 13 12:11:17 2011 -0700"
      },
      "message": "Add initial API for stylus and mouse buttons.\n\nAdded the concept of pointer properties in a MotionEvent.\nThis is currently used to track the pointer tool type to enable\napplications to distinguish finger touches from a stylus.\n\nButton states are also reported to application as part of touch events.\n\nThere are no new actions for detecting changes in button states.\nThe application should instead query the button state from the\nMotionEvent and take appropriate action as needed.\n\nA good time to check the button state is on ACTION_DOWN.\n\nAs a side-effect, applications that do not support multiple buttons\nwill treat primary, secondary and tertiary buttons identically\nfor all touch events.\n\nThe back button on the mouse is mapped to KEYCODE_BACK\nand the forward button is mapped to KEYCODE_FORWARD.\n\nAdded basic plumbing for the secondary mouse button to invoke\nthe context menu, particularly in lists.\n\nAdded clamp and split methods on MotionEvent to take care of\ncommon filtering operations so we don\u0027t have them scattered\nin multiple places across the framework.\n\nBug: 4260011\nChange-Id: Ie992b4d4e00c8f2e76b961da0a902145b27f6d83\n"
    },
    {
      "commit": "50e657bb2d005568f5dd8bc1d904d07b0d94018f",
      "tree": "bcf319e64984c80f4793602aeb366e7f6b33afdd",
      "parents": [
        "720dd9a89857512d14adabea4efbb542d25fbb02"
      ],
      "author": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Tue Mar 08 16:00:40 2011 +0000"
      },
      "committer": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Fri Apr 15 10:04:31 2011 +0100"
      },
      "message": "Add Java API for writing TTS engines\n\nThis removes the old non-public C++ API for TTS\nengines and replaces it with a Java API.\n\nThe new API is still @hidden, until it has been approved.\n\nBug: 4148636\nChange-Id: I7614ff788e11f897e87052f684f1b4938d539fb7\n"
    },
    {
      "commit": "da5a4440f019074e7aa61c5531c5c61755adc44d",
      "tree": "acff4b9a3239978abe7033d56a182059d97e8725",
      "parents": [
        "616fb9a38a5b558b1245b0e7f6dc0c4e5ef1a985"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 31 20:59:58 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 31 20:59:58 2011 -0700"
      },
      "message": "ANativeWindow_setBuffersGeometry now returns proper error codes\n\nChange-Id: Iac59d513fa1d4a55b8378000714d344ef3e2e0a4\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": "a032cc008618b83ecbbede537517d1e7998e3264",
      "tree": "735a1f6f5fd7dc5607a0edb18a85abc831e5b7de",
      "parents": [
        "e9f66af90a886cc55fc20c14375d8572bdf6dbd3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Mar 07 16:56:21 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Mar 24 15:37:04 2011 -0700"
      },
      "message": "Add MotionEvent.HOVER_ENTER and HOVER_EXIT.\n\nThe input dispatcher sends a HOVER_ENTER to a window before dispatching\nit any HOVER_MOVE events.  For compatibility reasons, the window will\n*also* receive the HOVER_MOVE.  When the pointer moves into a different\nwindow or the pointer goes down or when events are canceled for some reason,\nthe input dispatcher sends a HOVER_EXIT to the previously hovered window.\n\nThe view hierarchy behavior is similar.  All views under the pointer\nreceive onHoverEvent with HOVER_ENTER followed by any number of HOVER_MOVE\nevents.  When the pointer leaves a view, the view receives HOVER_EXIT.\nSimilarly, if a parent view decides to capture hover by returning true\nfrom onHoverEvent, the hovered descendants will receive HOVER_EXIT.\n\nThe default behavior of onHoverEvent is to update the view\u0027s hovered\nstate by calling setHovered(true/false).  Views can query their current\nhovered state using isHovered().\n\nFor testing purposes, the hovered state is mapped to the pressed\ndrawable state.  This will change in a subsequent commit with the\nintroduction of a new hovered drawable state.\n\nChange-Id: Ib76a7a90236c8f2c7336e55773acade6346cacbe\n"
    },
    {
      "commit": "e3d0022be8363411f27dc493d45b966be6d31efe",
      "tree": "3122042c587c8ffa050a756c31090d4e509435e8",
      "parents": [
        "90a948b084020d33b1376ce3b34505ebabdfe1ef",
        "e325e9ada7be366468199157234a16d7606a0abe"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 18 18:52:40 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 18 18:52:40 2011 -0700"
      },
      "message": "Merge \"Fix an incorrect NDK function prototype.\""
    },
    {
      "commit": "e325e9ada7be366468199157234a16d7606a0abe",
      "tree": "4cb11132ffe13dffc8f6994d67e5127eec9fe965",
      "parents": [
        "843e29d3751017267b96565c543df0301c31a9f7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 16 11:52:47 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 16 11:52:47 2011 -0700"
      },
      "message": "Fix an incorrect NDK function prototype.\n\nThe function definition includes a history_index parameter but it was\nmissing from the header file.  So the function declaration must be\nfixed.\n\nBug: 4108565\nChange-Id: I7bacfacb28fdd51ffc80ae016c1b6ebb51fbd66f\n"
    },
    {
      "commit": "9812aed2765c671e6c3f5255ac1b8a2fe0e72ef6",
      "tree": "a622b446f9ef3484d51245a7817777a5487a496e",
      "parents": [
        "843e29d3751017267b96565c543df0301c31a9f7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Mar 07 17:09:51 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 16 11:31:42 2011 -0700"
      },
      "message": "Add 3D mode key and others.\n\nRelated to an AOSP change request.\n\nChange-Id: I3f4f84b56a1af626a8783f5ecbb823eb12ba9fbe\n"
    },
    {
      "commit": "bae716bc153962c3ac79660bf32e5c50f0de343d",
      "tree": "2ee7aa6eddbd9789b1b561143927c274004e0977",
      "parents": [
        "75597105e6e03f656bdc1e40acac44afb9a3b01b"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Mar 14 15:34:04 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Mar 15 10:37:37 2011 -0700"
      },
      "message": "SurfaceTexture: disallow unsupported uses.\n\nThis change makes the ANativeWindow_lock NDK function error out if it is\npassed an ANativeWindow with a concrete type that is not Surface.  It\nalso makes eglCreateWindowSurface fail if it is passed a\nSurfaceTextureClient as its \u0027window\u0027 argument.\n\nBug: 4087277\nChange-Id: Ie68c50c52d88f72d8a387f6c094908044c83a88c\n"
    },
    {
      "commit": "7647091436c45af2d82f12c9ea9ec77fa309b49b",
      "tree": "a18e2556ba41a194b754d60c6929bc467cffbdc8",
      "parents": [
        "f0230cca194c840684bab959856c56725fc40b87",
        "846db33313aa0899fa7928256c6734964bd92520"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 11 16:31:55 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 11 16:31:55 2011 -0800"
      },
      "message": "Merge \"Bug 3515073 Add ANativeWindow_fromSurfaceTexture\" into honeycomb-mr1"
    },
    {
      "commit": "8529745b27877d98a0c76692295a3fcac238b1e6",
      "tree": "0327e434025461d9ed376ef6982855fd7f1e5a35",
      "parents": [
        "54bb98698a3550250b332b2f4d756b1a5c7473f5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 04 13:07:49 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 04 19:12:41 2011 -0800"
      },
      "message": "Joystick tweaks. (DO NOT MERGE)\n\nEnsure that the joystick can always reach -1.0, 0.0 and 1.0 positions\neven when noise filtering is applied.  (Bug: 3514510)\n\nAdd support for a few more standard axes.\n\nAdd additional mapping modes for axes.\nSome axes are inverted from standard interpretation\nor are actually intended to be split into two distict axes\nsuch as left/right trigger controls or accelerator/brake.\n\nAdd key layout file for a G25 racing wheel and XBox 360 controller\nto tweak behavior.  They work fine without them but the axis mappings\nare not ideal.\n\nChange-Id: I0fddd90309af4dc14d35f34fe99ed6e521c0b7c7\n"
    },
    {
      "commit": "846db33313aa0899fa7928256c6734964bd92520",
      "tree": "0303f6c1c11c297dd7f40f7c0725a3cfa0f14791",
      "parents": [
        "91ac3dc06d1b99c5e63cda3b5ae0adfec406fd7a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 04 11:44:32 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 04 16:39:29 2011 -0800"
      },
      "message": "Bug 3515073 Add ANativeWindow_fromSurfaceTexture\n\nThis is similar to ANativeWindow_fromSurface.\n\nChange-Id: Iaadc06a5d0d50685c34876aa89488c16e7cfaa65\n"
    },
    {
      "commit": "05dc66ada6b61a6bdf806ffaa62617ac5394695d",
      "tree": "a7e395476241706de31498185a5c2ccb979bcb54",
      "parents": [
        "e43111fad31ad8e36a66df52a8c6002799996413"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 02 14:41:58 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 02 15:37:57 2011 -0800"
      },
      "message": "Fade out the mouse pointer after inactivity or other events.\n\nFades out the mouse pointer:\n- after 15 seconds of inactivity normally\n- after 3 seconds of inactivity in lights out mode\n- after a non-modifier key down\n- after a touch down\n\nExtended the native Looper to support enqueuing time delayed\nmessages.  This is used by the PointerController to control\npointer fade timing.\n\nChange-Id: I87792fea7dbe2d9376c78cf354fe3189a484d9da\n"
    },
    {
      "commit": "33bbfd2232ea9eaae9a9d87a05a95a430f09bd83",
      "tree": "88e8e2513676dccf07b9764522a681aae370f020",
      "parents": [
        "d752c3b3e6c576ed1f18e86a7b18c33dc7c65791"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 24 20:55:35 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Feb 25 17:06:07 2011 -0800"
      },
      "message": "Add support for mouse hover and scroll wheel.\n\nDispatch ACTION_HOVER_MOVE and ACTION_SCROLL through the View\nhierarchy as onGenericTouchEvent.  Pointer events dispatched\nthis way are delivered to the view under the pointer.  Non-pointer\nevents continue to be delivered to the focused view.\n\nAdded scroll wheel support to AbsListView, ScrollView,\nHorizontalScrollView and WebView.  Shift+VSCROLL is translated\nto HSCROLL as appropriate.\n\nAdded logging of new pointer events in PointerLocationView.\n\nFixed a problem in EventHub when a USB device is removed that\nresulted in a long stream of ENODEV errors being logged until INotify\nnoticed the device was gone.\n\nNote that the new events are not supported by wallpapers at this time\nbecause the wallpaper engine only delivers touch events.\n\nMake all mouse buttons behave identically.  (Effectively we only\nsupport one button.)\n\nChange-Id: I9ab445ffb63c813fcb07db6693987b02475f3756\n"
    },
    {
      "commit": "cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413",
      "tree": "7a4e3c578e3e0f2c01fef4d64e721d81c851748e",
      "parents": [
        "6f2fba428ca5e77a26d991ad728e346cc47609ee"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Feb 19 05:07:28 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Feb 19 06:14:21 2011 -0800"
      },
      "message": "Add new hover move action and scroll wheel plumbing.\n\nAdded support for tracking the mouse position even when the mouse button\nis not pressed.  To avoid confusing existing applications, mouse movements\nare reported using the new ACTION_HOVER_MOVE action when the mouse button\nis not pressed.\n\nAdded some more plumbing for the scroll wheel axes.  The values are\nreported to Views but they are not yet handled by the framework.\n\nChange-Id: I1706be850d25cf34e5adf880bbed5cc3265cf4b1\n"
    },
    {
      "commit": "6f2fba428ca5e77a26d991ad728e346cc47609ee",
      "tree": "5dd07c24bd9b474ccfbcba4f63e078598fbd2b50",
      "parents": [
        "b1bdb64d641ac63097619e5ef08d5a25bfdc61bb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Feb 19 01:08:02 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Feb 19 05:23:10 2011 -0800"
      },
      "message": "Add new axes for joysticks and mouse wheels.\n\nAdded API on InputDevice to query the set of axes available.\nAdded API on KeyEvent and MotionEvent to convert keycodes and axes\nto symbolic name strings for diagnostic purposes.\nAdded API on KeyEvent to query if a given key code is a gamepad button.\nAdded a new \"axis\" element to key layout files to specify the\nmapping between raw absolute axis values and motion axis ids.\nExpanded the axis bitfield to 64bits to allow for future growth.\nModified the Makefile for keyboard prebuilts to run the keymap\nvalidation tool during the build.\nAdded layouts for two game controllers.\nAdded default actions for game pad button keys.\nAdded more tests.\nFixed a bunch of bugs.\n\nChange-Id: I73f9166c3b3c5bcf4970845b58088ad467525525\n"
    },
    {
      "commit": "ebbd5d14ad3b1e762d9fcfa026e19413cc857e05",
      "tree": "7f449489b302fddd176f6ab9f85c8e38024fed90",
      "parents": [
        "3b93d3fc1e56eada95246f9ee102c563d22df6d0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 17 13:01:34 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 17 13:01:34 2011 -0800"
      },
      "message": "Fix a regression with MotionEvent parceling.\n\nAlso added some more unit tests.\n\nChange-Id: I413654294d1a998eec056884e6df5eaa50f3daf4\n"
    },
    {
      "commit": "91c69ab01539f7ba28708f41ec1835cc2920d0a0",
      "tree": "04f5dc37a0fa3f18a18ba08916efe0c33a1de300",
      "parents": [
        "c3451d4a4479b6244bd6d1dadf289a8d44bdcca2"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 14 17:03:18 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 15 19:14:37 2011 -0800"
      },
      "message": "Add support for arbitrary axes in MotionEvents.\n\nThis change makes it possible to extend the set of axes that\nare reported in MotionEvents by defining new axis constants.\n\nThe MotionEvent object is now backed by its C++ counterpart\nto avoid having to maintain multiple representations of the\nsame data.\n\nChange-Id: Ibe93c90d4b390d43c176cce48d558d20869ee608\n"
    },
    {
      "commit": "0f6226b9f417182bbf791598000f0a153fbf191c",
      "tree": "6b10732d2ec4126ddfaea5b7948fd031d6cbc63c",
      "parents": [
        "2e3720f1e0bec9752dc920853a35a778358b1155",
        "cb1404e45639d20439d7700b06d57ca1a1aad1fa"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 17 15:57:44 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 17 15:57:44 2011 -0800"
      },
      "message": "Merge \"Add joystick support to framework.\""
    },
    {
      "commit": "cb1404e45639d20439d7700b06d57ca1a1aad1fa",
      "tree": "1d9bb7c58ea0a9ae36c242602fca59d343e8a0cd",
      "parents": [
        "e0dfee2b7075c1eac0db08d79d47381693d2f125"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Jan 15 18:14:15 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 17 13:51:00 2011 -0800"
      },
      "message": "Add joystick support to framework.\n\nChange-Id: I95374436708752e1a9cff3f85c5b9bc3e0987961\n"
    },
    {
      "commit": "805fd7ee0e5dc2939e85c84f78d9890a51982bc0",
      "tree": "e2487cd3d7917fa6a126463e2cc5771295544627",
      "parents": [
        "cf18c4788af740773c9b2720a1c4ed5f45454b8e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Jan 16 18:30:29 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Jan 16 18:43:04 2011 -0800"
      },
      "message": "Add API to get path to OBBs.\n\nAlso hide the bitmap thumbnail stuff, we can\u0027t support it in its\ncurrent form.\n\nAnd fix some bugs with propagating paths to native code.  Yikes!\n\nChange-Id: I13ab37ddbdba5c073489cba5eab035117d3c1574\n"
    },
    {
      "commit": "977f64f04e2a1fa0bedfca88122a30c7be57f8b9",
      "tree": "a0a0fe0ca5ad9b56051baca975aab820abc0caef",
      "parents": [
        "115ad16551c9cf9551f44cbea59f3edf83e4a340"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 10 14:36:37 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jan 16 17:36:29 2011 -0800"
      },
      "message": "Flush Binder commands in ndk looper.\n\nBug: 3258183\nChange-Id: Id79757d7b5c98333b4d3f39ce79ecc76b7be6941\n"
    },
    {
      "commit": "06ea4d65e81123832d2ae547538d612b0e6b90fa",
      "tree": "a120b2dee9218ebc5814dc3bbe58d46b29a6b45c",
      "parents": [
        "14b0a6bc0ec8814291751b2b8e80da606cfa12b3"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Dec 13 11:58:55 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Dec 13 12:02:19 2010 -0800"
      },
      "message": "Introduce NDK API for 64-bit assets\n\nAssets were switched to using 64-bit all through the system, so switch\nthe NDK to using this new API as well.\n\nChange-Id: I2817b11369db3a4dd504b839ef1a3a9780b83533\n"
    },
    {
      "commit": "1542af35976ce121b8a69812ab8dec7b71a0b283",
      "tree": "ae7c8471d4c48b835f67a979f45dd5025b6c5c3c",
      "parents": [
        "f4ade58b3eb24c20337ba9608a4b2008fb4a017d",
        "ddb76c4644756b31be948d70aaa8ee541dd94999"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Dec 08 14:46:22 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 08 14:46:22 2010 -0800"
      },
      "message": "Merge \"Change assets to use 64-bit API\""
    },
    {
      "commit": "ddb76c4644756b31be948d70aaa8ee541dd94999",
      "tree": "782d260d2da982941148be7c1a0a0780749cdfdc",
      "parents": [
        "8028a951c3aa74990907efb9376d1093d84084af"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 24 12:56:06 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Dec 08 11:21:30 2010 -0800"
      },
      "message": "Change assets to use 64-bit API\n\nThe asset system and supporting libraries were using off_t instead of\noff64_t to access files larger than 2GB (32-bit signed). This change\nreplaces all off_t with off64_t and lseek64.\n\nThere is a new utils/Compat.h added for Mac OS compatibility.\n\nAlso fixed some size-related compiler warnings.\n\nBug: 3205336\nChange-Id: I9097b3cb7a602e811fe52f245939d8975da55e9e\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": "3adf490a5aaa2e87676c8985b566fcb0dfeb74b9",
      "tree": "8d851498f455a4aaee22743eb93c0d4ec4eb724a",
      "parents": [
        "e7bdbf2aa7eb4cacfd3985cba6a12c3b1caf11a0"
      ],
      "author": {
        "name": "Jason Bayer",
        "email": "bayer@google.com",
        "time": "Tue Nov 09 14:54:55 2010 -0800"
      },
      "committer": {
        "name": "Jason Bayer",
        "email": "bayer@google.com",
        "time": "Thu Nov 11 18:36:11 2010 -0800"
      },
      "message": "Add new keycodes initially used for GoogleTV devices.\n\nChange-Id: I1b901037d6d401931dd3ec6f7d5e1e6ad165d1c9\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": "b0418da0e7594a8c2164a46985c5f1993632e010",
      "tree": "f73f81b31796d4f75ef6530d1fb883fccc74031f",
      "parents": [
        "c68134b74016b82e0c49c47b89d93b2d0921cbe5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 01 15:24:01 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 02 17:31:39 2010 -0700"
      },
      "message": "Add plumbing for volume mute key.\n\nFull support for the volume mute key will be implemented in a\nlater change.\n\nBug: 2912307\nChange-Id: I98c27d6360f159c8b7447e04b45f442eff87b38a\n"
    },
    {
      "commit": "49d1735482dbcb017775b1807847e943f0a5152c",
      "tree": "6dc2bff4637ec52f036d570d4feef985e38f2dd2",
      "parents": [
        "324be170219987d643c1d05701a00cd358bc03e2",
        "1b98a9e6a9bd22c4dca731491b701f7ece6a6eb7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 26 12:23:53 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 26 12:23:53 2010 -0700"
      },
      "message": "am 1b98a9e6: am 5219dd8e: Merge \"add format parameter to setBufferGeometry\" into gingerbread\n"
    },
    {
      "commit": "3026a1c4e88412b7fe997f93fedba871d79a03cd",
      "tree": "f8eb7c4b680c14bc6bfdd082e15420dfa0c7e779",
      "parents": [
        "457bed2bc6561dd67429dde238453fee8602fa9b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Oct 24 18:35:26 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 25 15:58:35 2010 -0700"
      },
      "message": "add format parameter to setBufferGeometry\n\nChange-Id: I7cc2acdc6e65e9468ecfd5b2f22e6b495a383be9\n"
    },
    {
      "commit": "6ab84eeb0fad723d6e3e1e9fc63a4896a5905248",
      "tree": "19c80ad4bfbf3407395eb5800be27d2ba7685edb",
      "parents": [
        "aa6110d84024776674131eb3b7a609499cf48810",
        "c2f78020d3887539fc90230d96465e4b1dc84d8e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Oct 24 18:42:12 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Oct 24 18:42:12 2010 -0700"
      },
      "message": "am c2f78020: am 23656899: Merge \"Fix issue #3126018: No way to specify NativeActivity\\\u0027s native method\" into gingerbread\n\nMerge commit \u0027c2f78020d3887539fc90230d96465e4b1dc84d8e\u0027\n\n* commit \u0027c2f78020d3887539fc90230d96465e4b1dc84d8e\u0027:\n  Fix issue #3126018: No way to specify NativeActivity\u0027s native method\n"
    },
    {
      "commit": "236568999411214ef440cabc6d12e3bf5f19d8f4",
      "tree": "bd7f442be4bc3b6ebbdd7c5ca0dbadc081033a8c",
      "parents": [
        "860c2df4132a2a0be9bcb0e91bfb7e79588c000f",
        "e21d91c694e828e6285cc50e79b2a6be6e8c692b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Oct 24 18:33:36 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Oct 24 18:33:36 2010 -0700"
      },
      "message": "Merge \"Fix issue #3126018: No way to specify NativeActivity\u0027s native method\" into gingerbread"
    },
    {
      "commit": "e21d91c694e828e6285cc50e79b2a6be6e8c692b",
      "tree": "bff7d5088aa8dc568c33a1c68a7dbd976ebe0f58",
      "parents": [
        "b6a2256e5461160a89d077b761d3253d95ce869f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Oct 24 14:56:38 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Oct 24 14:56:38 2010 -0700"
      },
      "message": "Fix issue #3126018: No way to specify NativeActivity\u0027s native method\n\nChange-Id: I59de6a543e7f7f45d963a905829a3f56f32bf8cf\n"
    },
    {
      "commit": "3ae4ac8538765d6cf5b8aceea8c81b21854321bd",
      "tree": "d0e8ae9e1117ce1aeebf375a2807de5ed95c0655",
      "parents": [
        "4761b176ed241a88394968b983f06c5ae1aad26a",
        "2ef36763700eff5679d6012e7f078c57f1a4c465"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Oct 24 14:36:23 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Oct 24 14:36:23 2010 -0700"
      },
      "message": "am 2ef36763: am 860c2df4: Merge \"Add unit tests for native input and fix bugs identified.\" into gingerbread\n\nMerge commit \u00272ef36763700eff5679d6012e7f078c57f1a4c465\u0027\n\n* commit \u00272ef36763700eff5679d6012e7f078c57f1a4c465\u0027:\n  Add unit tests for native input and fix bugs identified.\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": "8fff4bff4de6b1a997d41a54a82ebf643759d49a",
      "tree": "591e9b4f2391a54de3bb55682282ca4e9fd9941b",
      "parents": [
        "b063e7903e49bc4689bd54ebe39e8094a58b910b",
        "4f734cabd0737d5e06bb5a2b9036d4b620c4ad17"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Oct 22 12:31:09 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 22 12:31:09 2010 -0700"
      },
      "message": "am 4f734cab: am 7ce276b5: Merge \"Update script for copying NDK headers/library.\" into gingerbread\n"
    },
    {
      "commit": "de5ba5ef7274f993d1612d3f902f27545aa99c8d",
      "tree": "38d0e014b75cd545f1c30c0c938d5910228ed780",
      "parents": [
        "fdbb2168f7a9a202ee9406d65e7ef98a6745b488"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Oct 21 21:10:26 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Oct 21 21:10:26 2010 -0700"
      },
      "message": "Update script for copying NDK headers/library.\n\nChange-Id: Ia441ce37123d5b5cd343f2746671495705501fb5\n"
    },
    {
      "commit": "bff26d156d23e55e2428e19b3fb7f52acf03f79f",
      "tree": "b0993306b63215d4db6559a86f02bcdb5ff22c55",
      "parents": [
        "4924aee9cb1c5988359f3162b6e89689c5b101e1",
        "86f1b643d10e0b5b17ae01db3b81020db87b3295"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Oct 21 20:27:15 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 21 20:27:15 2010 -0700"
      },
      "message": "am 86f1b643: am bf5efba2: Merge \"Fix issue #3117918: No way to finish a native activity\" into gingerbread\n\nMerge commit \u002786f1b643d10e0b5b17ae01db3b81020db87b3295\u0027\n\n* commit \u002786f1b643d10e0b5b17ae01db3b81020db87b3295\u0027:\n  Fix issue #3117918: No way to finish a native activity\n"
    },
    {
      "commit": "db28a94d499f995b467b07cee5c9b9119f538b1c",
      "tree": "f720143b3b6a9813d26fdbc210bec10a0780f0b0",
      "parents": [
        "7dc08fb070ff7455e794fc81645ccb4349cd152f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Oct 21 17:22:30 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Oct 21 19:07:37 2010 -0700"
      },
      "message": "Fix issue #3117918: No way to finish a native activity\n\nChange-Id: Ic53e712f7ab5412d72a31b96ecba252344b91644\n"
    },
    {
      "commit": "497a92cc5ba2176b8a8484b0a7da040eac0e887b",
      "tree": "2d9bd7a2ef24754fa83a36f440ee45fd8a32b9fb",
      "parents": [
        "cd9afc3722a1edebf0e6f7172627930052c81ce4"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 12 17:55:08 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 15 16:00:07 2010 -0700"
      },
      "message": "Add keycodes and meta-key modifiers to support external keyboards.\n\nAdded new key maps for external keyboards.  These maps are intended to\nbe shared across devices by inheriting the \"keyboards.mk\" product\nmakefile as part of the device\u0027s product definition.\n\nOne of the trickier changes here was to unwind some code in\nMetaKeyKeyListener that assumed that only the low 8 bits of the meta key\nstate were actually used.  The new code abandons bitshifts in favor\nof simple conditionals that are probably easier to read anyways.\nThe special meta key state constants used by MetaKeyKeyListener\nare now (@hide) defined in KeyEvent now so as to make it clearer that they\nshare the same code space even if those codes are not valid for KeyEvents.\n\nThe EventHub now takes care of detecting the appropriate key layout\nmap and key character map when the device is added and sets system\nproperties accordingly.  This avoids having duplicate code in\nKeyCharacterMap to probe for the appropriate key character map\nalthough the current probing mechanism has been preserved for legacy\nreasons just in case.\n\nAdded support for tracking caps lock, num lock and scroll lock and\nturning their corresponding LEDs on and off as needed.\n\nThe key character map format will need to be updated to correctly support\nPC style external keyboard semantics related to modifier keys.\nThat will come in a later change so caps lock doesn\u0027t actually do\nanything right now except turn the shiny LEDs on and off...\n\nAdded a list of symbolic key names to KeyEvent and improved the toString()\noutput for debug diagnosis.  Having this list in a central place in the\nframework also allows us to remove it from Monkey so there is one less\nthing to maintain when we add new keycodes.\n\nBug: 2912307\nChange-Id: If8c25e8d50a7c29bbf5d663c94284f5f86de5da4\n"
    },
    {
      "commit": "733e79c24042145d12a18cac59e8edb08965fab0",
      "tree": "55a0da888e5fecbb8c63f888519cb624a3c5a84e",
      "parents": [
        "4bd4bd6fc05ab7108f4f59f98bd6b595cec58e02",
        "2f98a585cda066689b1b525322c51fcacbc3770b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 15 08:32:30 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 15 08:32:30 2010 -0700"
      },
      "message": "am 2f98a585: am 49ec3dff: Merge \"OBB: Change documentation to reflect reality\" into gingerbread\n\nMerge commit \u00272f98a585cda066689b1b525322c51fcacbc3770b\u0027\n\n* commit \u00272f98a585cda066689b1b525322c51fcacbc3770b\u0027:\n  OBB: Change documentation to reflect reality\n"
    },
    {
      "commit": "0a9b54e88b9cbb30748b5f0b331aec3f3ef8d639",
      "tree": "22ff1466c777067596537ccb085cd64ed0bc3bc5",
      "parents": [
        "0726fd9e835579019f6b23ab50d7b45401e11dbe",
        "8bb7a1dfbb43dda49fb3c4f86181bcd7f969a832"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 13 15:43:35 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 13 15:43:51 2010 -0700"
      },
      "message": "resolved conflicts for merge of 8bb7a1df to master\n\nChange-Id: Ieec036f494a54eab74a27b954d1423bf981dd3f9\n"
    },
    {
      "commit": "19dcd2aeba184f81b140b4fbc692bdd80a51299e",
      "tree": "abadf161e0f2bbdb69ddf1d82d1c5089e7bfa6c1",
      "parents": [
        "dfc07279fc6205c38f5f39cb5ba4f0aef6b593a4"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 13 12:37:18 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 13 12:37:18 2010 -0700"
      },
      "message": "OBB: Change documentation to reflect reality\n\nWe can\u0027t reliably detect when the key for an OBB is incorrect, so just\nremove the mention in the documentation. It still returns an error, but\njust not the most specific error.\n\nBug: 3091064\nChange-Id: I70e506822f2178a0ac5e4617fe545b23ce0026f4\n"
    },
    {
      "commit": "af9d667ccf3e24058214cf4cc0a8aa8bc5100e3c",
      "tree": "c59adbe6d27cf236d6920f689dd237a115fef3f9",
      "parents": [
        "ce2f1909c74a1b90995f06a865d21260b062300b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 08 09:21:39 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Oct 11 17:22:03 2010 -0700"
      },
      "message": "OBB: rearrange to be entirely asynchronous\n\nRearrange structure of MountService handling of OBBs to be entirely\nasynchronous so we don\u0027t rely on locking as much. We still need the\nlocking to support dumpsys which has been improved to output all the\ndata structures for OBBs.\n\nAdded more tests to cover more of the error return codes.\n\nOh and fix a logic inversion bug.\n\nChange-Id: I34f541192dbbb1903b24825889b8fa8f43e6e2a9\n"
    },
    {
      "commit": "d5da367024c36b317b101fc066a7a4cf992c7d58",
      "tree": "87cf98a6514557be5427c462349a0ee9deb9a9dd",
      "parents": [
        "bcf74accafcdac6c7a940ce28982fc0ef08e111b",
        "22cb4ef8ce9c4d5536ac5cee5c40b82bfa56ccc5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Oct 10 12:52:40 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Oct 10 12:52:40 2010 -0700"
      },
      "message": "am 22cb4ef8: am d577cfd7: Merge \"Switch Looper back to using poll() instead of epoll().\" into gingerbread\n\nMerge commit \u002722cb4ef8ce9c4d5536ac5cee5c40b82bfa56ccc5\u0027\n\n* commit \u002722cb4ef8ce9c4d5536ac5cee5c40b82bfa56ccc5\u0027:\n  Switch Looper back to using poll() instead of epoll().\n"
    },
    {
      "commit": "415d8c38199e258dfce92cdb0c69e056b3b51ef8",
      "tree": "5bf6d167a19b272f2a153df6010a7dd6f58a274f",
      "parents": [
        "930d6c3cd5ad387489eb1d35a38beeafe54166b6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Oct 05 15:35:37 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Oct 07 13:26:39 2010 -0700"
      },
      "message": "Switch Looper back to using poll() instead of epoll().\n\nAdded a couple of micro-optimizations to avoid calling wake() unnecessarily\nand reduce JNI overhead slightly.\n\nFixed a minor issue where we were not clearing the \"next\" field of Messages\nreturned by the MessageQueue so the Message would hold on to its successor\nand potentially prevent the GC from collecting it if the message were leaked\nsomehow.\n\nChange-Id: I488d29417ce0cdd7d0e447cda76ec978ef7f811c\n"
    },
    {
      "commit": "8fc2518776cb3989a4898ba4b1475549a548b7fb",
      "tree": "1f45aca3d5f4f4ff640eccb50f8bc4090f93db57",
      "parents": [
        "9987b1534e31b0aa406943450e6b5746f3ab2c03",
        "c3bc8b7b08611c8d86919f4695430990bc6b475d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 30 14:57:23 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 30 14:57:23 2010 -0700"
      },
      "message": "am c3bc8b7b: am 1bfbf19b: Merge \"Fix night/notnight resource folder handling.\" into gingerbread\n\nMerge commit \u0027c3bc8b7b08611c8d86919f4695430990bc6b475d\u0027\n\n* commit \u0027c3bc8b7b08611c8d86919f4695430990bc6b475d\u0027:\n  Fix night/notnight resource folder handling.\n"
    },
    {
      "commit": "2b9785aa65abdb1b38270c51ac34240462aecf65",
      "tree": "bcb75c6fff5ad0742de84aabeb388d8fd0b33147",
      "parents": [
        "2cbb56f961e4893a3bf7ded560d4bdbf45eabd01"
      ],
      "author": {
        "name": "Tobias Haamel",
        "email": "haamel@google.com",
        "time": "Thu Sep 30 10:57:24 2010 +0200"
      },
      "committer": {
        "name": "Tobias Haamel",
        "email": "haamel@google.com",
        "time": "Thu Sep 30 11:26:02 2010 +0200"
      },
      "message": "Fix night/notnight resource folder handling.\n\nThe values for NIGHT_NO / NIGHT_YES are shifted later on in the\nResourceTypes header file to match with the ones specified in the\nConfiguration class file. This is basically the same as it\u0027s done for\nthe SCREEN_LONG_NO / SCREEN_LONG_YES constants.\n\nSince the values are also masked later on by 0x30 (MASK_UI_MODE_NIGHT)\nthe system currently recognizes resources specified in night/notnight\nfolders as if they were resources which can be used for any of both\nmodes. This results in an error saying that the resources are already\nspecified somewhere else.\n\nShould fix: http://b/issue?id\u003d3022577\n\nChange-Id: I554b37231ea4c69a8625e519150473fddce7d8ed\n"
    },
    {
      "commit": "bff405f91001237ec94ec64f86fa2370c4509559",
      "tree": "c492bfa8bacef42800f47b1638b1812275cecb6d",
      "parents": [
        "e63f20b5fe373822758182226d7512859d8e8356",
        "d8e8186c887fe47977721315f439465771a96374"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 28 18:16:50 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 28 18:16:50 2010 -0700"
      },
      "message": "resolved conflicts for merge of d8e8186c to master\n\nChange-Id: Ica3f6cd958717ea7033cab8b4bf9cd3425c1e1c5\n"
    },
    {
      "commit": "05105f7abe02b2dff91d6260b3628c8b97816bab",
      "tree": "f42676d818548d76b2c55045a1bcc4866d6feec1",
      "parents": [
        "ea2cf2f936b03f1720bc43863e41c89ea2a7903a"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 22 17:29:43 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 28 17:23:26 2010 -0700"
      },
      "message": "Update OBB API to include callbacks\n\nAdd a callback for users of the StorageManager API to be able to receive\nnotifications when the requested operation completes for mountObb and\nunmountObb.\n\nAdd NDK API to get to ObbInfo like the Java API has.\n\nAlso update the docs for the API and remove the \"STOPSHIP\" comments.\n\nChange-Id: I23a4409c7f8b74d3169614beba920b4d667990a4\n"
    },
    {
      "commit": "707929d6f8f8ff2663da9982a99f943736b8be5c",
      "tree": "c68c3251dc53422c136ab6ec239033b60ec32e33",
      "parents": [
        "6cca469ed6e58444dc6264a353510250cacfcf09",
        "61cf67a220ba3205737c646c1c836a92074220de"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 13:05:50 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 16 13:05:50 2010 -0700"
      },
      "message": "am 61cf67a2: am 24326f72: Merge \"Input API review.\" into gingerbread\n\nMerge commit \u002761cf67a220ba3205737c646c1c836a92074220de\u0027\n\n* commit \u002761cf67a220ba3205737c646c1c836a92074220de\u0027:\n  Input API review.\n"
    },
    {
      "commit": "49478536b6b8b28f33398393bed5e939085af7af",
      "tree": "a83f41bc6da9dd267005ad23b0b32c6f40f860d0",
      "parents": [
        "a5ab8ce602ecfd897805e185c89a6eff0c78aabe",
        "14bc6b5d0677e5c454a67775c852f90389bb4567"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 15 12:32:29 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 15 12:32:29 2010 -0700"
      },
      "message": "am 14bc6b5d: am 09340a4b: Merge \"Replace epoll() with poll() and rename PollLoop to Looper.\" into gingerbread\n\nMerge commit \u002714bc6b5d0677e5c454a67775c852f90389bb4567\u0027\n\n* commit \u002714bc6b5d0677e5c454a67775c852f90389bb4567\u0027:\n  Replace epoll() with poll() and rename PollLoop to Looper.\n"
    },
    {
      "commit": "dc1ab4b5cc274b7d744c11a939bb5910becec5e0",
      "tree": "b548d8f3afe385d196b250d208fcc529ac28ed0d",
      "parents": [
        "cee0b97eed0a460e2da58500e24d3e4dac5cb9f6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 14 18:03:38 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 14 20:46:14 2010 -0700"
      },
      "message": "Input API review.\n\nDrop currently unsupported input features.\nAdd documentation comments.\n\nChange-Id: I407d2e1dd90c5ee82983a3ccf177430d35ee7592\n"
    },
    {
      "commit": "4fe6c3e51be77e35f40872cdbca6c80f8f8b7ecb",
      "tree": "5cbcfad147ad1bf26deb384e41d27f4e6bfcdb80",
      "parents": [
        "c891d2b3529b9cf24ef4781a585cd4784815e711"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Sep 13 23:17:30 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 14 01:59:45 2010 -0700"
      },
      "message": "Replace epoll() with poll() and rename PollLoop to Looper.\n\nAs part of this change, consolidated and cleaned up the Looper API so\nthat there are fewer distinctions between the NDK and non-NDK declarations\n(no need for two callback types, etc.).\n\nRemoved the dependence on specific constants from sys/poll.h such as\nPOLLIN.  Instead looper.h defines events like LOOPER_EVENT_INPUT for\nthe events that it supports.  That should help make any future\nunder-the-hood implementation changes easier.\n\nFixed a couple of compiler warnings along the way.\n\nChange-Id: I449a7ec780bf061bdd325452f823673e2b39b6ae\n"
    },
    {
      "commit": "b380c4d7edc158788a85c906900232675c0164ac",
      "tree": "579f4e6e8cd611c0f95302e0e53b6739b2e4d84e",
      "parents": [
        "35dc79da11639117aab34d3278a7ae90984c0f87",
        "a05088c18d22f822e78e7b91d60f518dc3dc06fc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 08 13:02:55 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 08 13:02:55 2010 -0700"
      },
      "message": "resolved conflicts for merge of a05088c1 to master\n\nChange-Id: I7973f9f28586dec9b9659f8f662f40db7997a521\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": "347262622b86410ff8a4ff3530ab3688b6a20b21",
      "tree": "f596d33ff54ab5169a7c52e19319b63d0e200e63",
      "parents": [
        "7dea769319701f4e883fc448507967b806b9b245",
        "a1205f07a6f0c745e8f42f16fe38c06af04143c7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 18:52:06 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 07 18:52:06 2010 -0700"
      },
      "message": "am a1205f07: am 2d3739d4: Merge \"Modify native ALooper to take an explicit ident.\" into gingerbread\n\nMerge commit \u0027a1205f07a6f0c745e8f42f16fe38c06af04143c7\u0027\n\n* commit \u0027a1205f07a6f0c745e8f42f16fe38c06af04143c7\u0027:\n  Modify native ALooper to take an explicit ident.\n"
    },
    {
      "commit": "42c03e579aade011b451e2a13ea3f44a2ef0056a",
      "tree": "1716fbd88e2beb816d303c3d3fa0ca1785b8db61",
      "parents": [
        "6e86915e8f5dfffa60ae5d1a4ca9aa74912fd026"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 15:28:30 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 15:46:55 2010 -0700"
      },
      "message": "Modify native ALooper to take an explicit ident.\n\nThe ALooper API now uses an explicit \"identifier\" for the integer\nthat is returned rather than implicitly using the fd.  This allows\nthe APIs that had the fd to be a little more sane.\n\nChange-Id: I8507f535ad484c0bdc4a1bd016d87bb09acd7ff0\n"
    },
    {
      "commit": "ee6d676c5b997a1214e96b6ba3755054382717c5",
      "tree": "9576d1113eff5dd088834bf447345e8748be9f9e",
      "parents": [
        "97a24c60eec54cb95ded8dcb7db6c2e95d835ce4",
        "df02df115a594553b3ebaa95a0a7f7185a8787d3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 31 15:53:17 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 31 15:53:17 2010 -0700"
      },
      "message": "am df02df11: am 307ed31c: Merge \"Remove incomplete input device enumeration NDK API.\" into gingerbread\n\nMerge commit \u0027df02df115a594553b3ebaa95a0a7f7185a8787d3\u0027\n\n* commit \u0027df02df115a594553b3ebaa95a0a7f7185a8787d3\u0027:\n  Remove incomplete input device enumeration NDK API.\n"
    },
    {
      "commit": "5fad2675e8deee60aa91d7a96c9ac4826357f2c5",
      "tree": "a6bd559cdfc301df21693357650c3b58b95e0763",
      "parents": [
        "47471175c9d19a00d06a77aa316dcda08be97deb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 31 15:20:28 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 31 15:24:55 2010 -0700"
      },
      "message": "Remove incomplete input device enumeration NDK API.\n\nChange-Id: I32de74ff5fcf0e29179a2aee03ddabd22fa485bb\n"
    },
    {
      "commit": "22f5ee93746f37823265b8cb9b1e94e572607514",
      "tree": "269e105935875e8453c0bd33792fdeedd4c928ee",
      "parents": [
        "02f4f0eb4919453e8dbf40549d4ae9c05f05b8dd",
        "36f0cb26cbb4ef62995ff2e5a540cf8814e7f030"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 30 18:29:12 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 30 18:29:12 2010 -0700"
      },
      "message": "am 36f0cb26: am 8d60866e: Input device calibration and capabilities.\n\nMerge commit \u002736f0cb26cbb4ef62995ff2e5a540cf8814e7f030\u0027\n\n* commit \u002736f0cb26cbb4ef62995ff2e5a540cf8814e7f030\u0027:\n  Input device calibration and capabilities.\n"
    },
    {
      "commit": "8d60866e2100db70ecf0502c14768a384514d7e9",
      "tree": "514e46b4e4d58fd68cd52de93b93e7782fdf4e9f",
      "parents": [
        "bb660d7e1bed3a07a1804bd9641d9634bfaa4972"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 30 03:02:23 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 30 18:16:43 2010 -0700"
      },
      "message": "Input device calibration and capabilities.\n\nFinished the input device capability API.\nAdded a mechanism for calibrating touch devices to obtain more\naccurate information about the touch contact area.\nImproved pointer location to show new coordinates and capabilities.\nOptimized pointer location display and formatting to avoid allocating large\nnumbers of temporary objects.  The GC churn was causing the application to\nstutter very badly when more than a couple of fingers were down).\nAdded more diagnostics.\n\nChange-Id: Ie25380278ed6f16c5b04cd9df848015850383498\n"
    },
    {
      "commit": "53e75ea847df20b29124966a4232dc0109c37e27",
      "tree": "4c545e0c93b0d50122002201d3f6836225a6b3dd",
      "parents": [
        "d820714e30a53b244d252e77c7922e2c1604adbc",
        "485de781f6bd30dfb7aa1e55c4f1efb3d3b11eba"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Aug 24 09:57:33 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Aug 24 09:57:33 2010 -0700"
      },
      "message": "resolved conflicts for merge of 485de781 to master\n\nChange-Id: I483cb81596f09b024b1aea7fc55960183f38b24f\n"
    },
    {
      "commit": "086d084dd9deab4350981da5e48c8bda5e88fb75",
      "tree": "f43719f65c6cb73dbd5f05cf283fac2618f26b3f",
      "parents": [
        "be857d42849eaaa554d4772dbba7755f8a0f3547"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 19 17:55:56 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 20 13:27:31 2010 -0700"
      },
      "message": "Add AStorageManager API to NDK\n\nAStorageManager allows users of the NDK to access OBBs for now.\n\nChange-Id: I8a25757901a175aa90a9f3e8c2a5db7873e8615e\n"
    },
    {
      "commit": "7b6d0d99b6904b511996267efae215fe9cb5e98f",
      "tree": "85c1f63b5ba66ec77d5c9ecd5a2b44229ed67699",
      "parents": [
        "ea65ec23f6dc18e978ab6dcf23d3c2b27a0c2109",
        "679ac09a5c22175354f3a04b28456b323839530e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 11 00:50:56 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 11 00:50:56 2010 -0700"
      },
      "message": "am 679ac09a: am a5ae50cd: Merge \"More native work.\" into gingerbread\n\nMerge commit \u0027679ac09a5c22175354f3a04b28456b323839530e\u0027\n\n* commit \u0027679ac09a5c22175354f3a04b28456b323839530e\u0027:\n  More native work.\n"
    },
    {
      "commit": "08d5b8fad8d46ccb64db2fdcb4d66972ec87bf48",
      "tree": "7e2e67603ec8a2ca164548301b65a2b733df76a0",
      "parents": [
        "091c5238a00ca51dc69b8b09459e6ac88e1eb077"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 04 11:12:40 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 11 00:29:59 2010 -0700"
      },
      "message": "More native work.\n\nImplement save/restore of state, and add native APIs for\nconfiguration information.\n\nChange-Id: I2a3ddc2ba605db58d7c8b2b31b9215fb323f90b5\n"
    },
    {
      "commit": "ce49d03aa40123a086d6017052873bed83835298",
      "tree": "2de1d2e8a3e34939c75b9b01418fe6c09b4cfca9",
      "parents": [
        "d4e60a1f8e6a92102c0ac55775c4153e31aec407",
        "02513855530b80dd554b13852db75f3adde2c9f4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 29 22:06:44 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 29 22:06:44 2010 -0700"
      },
      "message": "resolved conflicts for merge of 02513855 to master\n\nChange-Id: Ie33d57798d3d5b800edde753dac86de062bc270c\n"
    },
    {
      "commit": "050b56244ff46d43e4886018d7cd20f0b1dc02b9",
      "tree": "1c0cfcd08dbd18b386bebe5dd2cbeb1c945ccbda",
      "parents": [
        "3fb627525e077fa5452a99ac1e2a7e9c41995044"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 29 16:51:38 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 29 18:18:00 2010 -0700"
      },
      "message": "Added SensorManager.getMinDelay()\n\nExposed the new \"min delay\" sensor property through native and\njava sensor apis. This allows the caller to know what is the\nmaximum rate at which a sensor can return events, or, if a sensor\nworks in \"update\" mode (events returned only when the value changes).\n\nAlso augmented SensorManager.regusterSensorEvent() so that it can\naccept a value in microsecond in addition to the 4 constants already\ndefined.\n\nChange-Id: If425e9979892666df8c989d7de3c362230fa19e0\n"
    },
    {
      "commit": "48555f8f09c87224e312554b6b771ee30da6a435",
      "tree": "2a364c1621b34ec80d6852904328d30f84d96df8",
      "parents": [
        "fc8ae40da05519ed71988e78547fb3c95ee951dc",
        "31a0b956396e417bdbfee97554afb5b52d68a8ba"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:44:56 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 28 16:44:56 2010 -0700"
      },
      "message": "am 31a0b956: am 3de27d5a: Merge \"Add stdint.h to fix sim-eng\" into gingerbread\n\nMerge commit \u002731a0b956396e417bdbfee97554afb5b52d68a8ba\u0027\n\n* commit \u002731a0b956396e417bdbfee97554afb5b52d68a8ba\u0027:\n  Add stdint.h to fix sim-eng\n"
    },
    {
      "commit": "e30de4e6a312aa921633d119f2518f4b07a7effa",
      "tree": "8e154eb1ce1fa9fed249409a08dd254db0b681f9",
      "parents": [
        "9d90ed71ccf45bc1e422ee2abc9acf0a806b9319"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:41:02 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:41:02 2010 -0700"
      },
      "message": "Add stdint.h to fix sim-eng\n\nChange-Id: I82cebe3e769aa4db99bd758bd2f182b0d462de6f\n"
    },
    {
      "commit": "2279971b6f66d60240b8c72a9d52644a3bcdf01b",
      "tree": "6bb439e7b3c2b8c32a10a4b71cd8220045a49a90",
      "parents": [
        "5193a5bab165a4f812b8e72d656b6a18ee04f42b",
        "9795a25da060f9a7df87da8ab43fb1086d4322a5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 28 14:27:55 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 28 14:27:55 2010 -0700"
      },
      "message": "am 9795a25d: am 6d0fec2d: Refactor input reader to support new device types more easily.\n\nMerge commit \u00279795a25da060f9a7df87da8ab43fb1086d4322a5\u0027\n\n* commit \u00279795a25da060f9a7df87da8ab43fb1086d4322a5\u0027:\n  Refactor input reader to support new device types more easily.\n"
    },
    {
      "commit": "6d0fec2de3601821f4f44eeb7d7deedebb2b7117",
      "tree": "9fdea32c5691a6d0bcb3085df47f42a8e6ecd565",
      "parents": [
        "b350bec514eb9fee473e4ef62680c53e992dc49b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 23 21:28:06 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 28 14:16:15 2010 -0700"
      },
      "message": "Refactor input reader to support new device types more easily.\n\nRefactored the input reader so that each raw input protocol is handled\nby a separate subclass of the new InputMapper type.  This way, behaviors\npertaining to keyboard, trackballs, touchscreens, switches and other\ndevices are clearly distinguished for improved maintainability.\n\nAdded partial support for describing capabilities of input devices\n(incomplete and untested for now, will be fleshed out in later commits).\n\nSimplified EventHub interface somewhat since InputReader is taking over\nmore of the work.\n\nCleaned up some of the interactions between InputManager and\nWindowManagerService related to reading input state.\n\nFixed swiping finger from screen edge into display area.\n\nAdded logging of device information to \u0027dumpsys window\u0027.\n\nChange-Id: I17faffc33e3aec3a0f33f0b37e81a70609378612\n"
    },
    {
      "commit": "50558b956157dad980441bf4fb44931ce834e36b",
      "tree": "2d208a78ab3a1c77d91751b8bbe5cafd9415f0d8",
      "parents": [
        "c1b11b1b37d0692bd3c63575c9f2c0d9fa566602",
        "bc54e63c84a517f0dca88ba900ff2b56719f685b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 21 18:10:22 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 21 18:10:22 2010 -0700"
      },
      "message": "resolved conflicts for merge of bc54e63c to master\n\nChange-Id: I4245b15b4cda6963d735442c0c6a04a0477ff5e1\n"
    },
    {
      "commit": "1bf797857e025e8a71db86fb9e79765a767ec1eb",
      "tree": "e8d1aabae069f2b7368be746b99667eb150363f5",
      "parents": [
        "ff7049ab2886acc73e145367118646f7741ce333"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 23:41:37 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 19 17:57:29 2010 -0700"
      },
      "message": "new SensorService\n\nremove old sensor service and implement SensorManager\non top of the new (native) SensorManger API.\n\nChange-Id: Iddb77d498755da3e11646473a44d651f12f40281\n"
    },
    {
      "commit": "781d34747941f3534b2a985ff57368ad89855d7d",
      "tree": "d7a87b96737fa8dfe18bb3d2b2985a77898123c2",
      "parents": [
        "fb4e1e24a93c7e6bc0fcdb3f5cfadfbc19503cd8",
        "9c37e5add9d7678a29b4e0d1e178fe78a13db961"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 16 09:12:29 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 16 09:12:29 2010 -0700"
      },
      "message": "am 9c37e5ad: am 75a91389: Merge \"Implement native key pre-dispatching to IMEs.\" into gingerbread\n\nMerge commit \u00279c37e5add9d7678a29b4e0d1e178fe78a13db961\u0027\n\n* commit \u00279c37e5add9d7678a29b4e0d1e178fe78a13db961\u0027:\n  Implement native key pre-dispatching to IMEs.\n"
    },
    {
      "commit": "b75fa30aaf03d9e425d150b452501e5df0621351",
      "tree": "c7914253bdc9964a7bca8093341173a91341c74d",
      "parents": [
        "3fdab65f244c92aed36bc0a5ee435d5dfbe2d673",
        "aca672ba2eea19420df16906851d56077a3fd3b2"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 15 23:47:29 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 15 23:47:29 2010 -0700"
      },
      "message": "resolved conflicts for merge of aca672ba to master\n\nChange-Id: I7ae11fca0acdbf513a4870226d0d3e3cafbe9a08\n"
    },
    {
      "commit": "6ba776ad34a8029e4d0c784ce0092f1fcbc91bef",
      "tree": "8df9196a58f89c0f05b49e3588bc08481a1ee198",
      "parents": [
        "085d0f55e6a2e8449961174673d43a5868874639",
        "078ccbdbb98c118aa87cab2fef61ff90dd128358"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 15 23:05:27 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 15 23:05:27 2010 -0700"
      },
      "message": "am 078ccbdb: am 2c40582a: Merge \"Add native C APIs for working with the Asset Manager\" into gingerbread\n\nMerge commit \u0027078ccbdbb98c118aa87cab2fef61ff90dd128358\u0027\n\n* commit \u0027078ccbdbb98c118aa87cab2fef61ff90dd128358\u0027:\n  Add native C APIs for working with the Asset Manager\n"
    },
    {
      "commit": "2c6081ce3593712f30dacd990a97209c791d6ced",
      "tree": "4808bc521c207ea11ec0daceb98f77a6b47b00a0",
      "parents": [
        "c5ed5910c9ef066cec6a13bbb404ec57b1e92637"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 15 17:44:53 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 15 22:05:33 2010 -0700"
      },
      "message": "Implement native key pre-dispatching to IMEs.\n\nThis significantly re-works the native key dispatching code to\nallow events to be pre-dispatched to the current IME before\nbeing processed by native code.  It introduces one new public\nAPI, which must be called after retrieving an event if the app\nwishes for it to be pre-dispatched.\n\nCurrently the native code will only do pre-dispatching of\nsystem keys, to avoid significant overhead for gaming input.\nThis should be improved to be smarted, filtering for only\nkeys that the IME is interested in.  Unfortunately IMEs don\u0027t\ncurrently provide this information. :p\n\nChange-Id: Ic1c7aeec8b348164957f2cd88119eb5bd85c2a9f\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": "6cce32b6adbb3a9725fc730ba0e0068a74657e60",
      "tree": "659b099eb08109f3e4e51e184d929f392928e722",
      "parents": [
        "d6343c26b8580f61a257a3045bfa124049201116"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jul 12 18:21:36 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 15 14:28:21 2010 -0700"
      },
      "message": "Add native C APIs for working with the Asset Manager\n\nChange-Id: I493b142c4b35e5cc1a1e85283bb5dfb306a6d261\n"
    },
    {
      "commit": "4b85590f8d021e338248623b641b4867329e2834",
      "tree": "0a21968d35653731ef82f7d1f327573fa37d5d14",
      "parents": [
        "764f436cb9e734afdc55a7b4ac65b27860383a09",
        "7417ae9354e10971c0b5d41dc9194fab17b80ea1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 14 16:51:33 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 14 16:51:33 2010 -0700"
      },
      "message": "am 7417ae93: am ccc77328: Merge \"Remove old glue code.\" into gingerbread\n\nMerge commit \u00277417ae9354e10971c0b5d41dc9194fab17b80ea1\u0027\n\n* commit \u00277417ae9354e10971c0b5d41dc9194fab17b80ea1\u0027:\n  Remove old glue code.\n"
    },
    {
      "commit": "ccc77328da66436010f3bca000c4b4665270500a",
      "tree": "588132abd837a231042b17e803c81b646b39915a",
      "parents": [
        "c9a11088e503b9e3ae52a3f671b2d21f5cd54f06",
        "1e86ce6ed29ed774e83256c196c5341791e7cdb4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 14 16:46:37 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 14 16:46:37 2010 -0700"
      },
      "message": "Merge \"Remove old glue code.\" into gingerbread"
    },
    {
      "commit": "764f436cb9e734afdc55a7b4ac65b27860383a09",
      "tree": "c42c8bfaac5919a33718800ba5d7a9fc51f87758",
      "parents": [
        "172b79e9df9a5689681cf0355921ec2445bc9f6f",
        "db386f2c263c6e9e4b825d4c9a320849f8f2c916"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 16:39:55 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 14 16:39:55 2010 -0700"
      },
      "message": "am db386f2c: am c9a11088: Merge \"first step at implementing the native sensor support\" into gingerbread\n\nMerge commit \u0027db386f2c263c6e9e4b825d4c9a320849f8f2c916\u0027\n\n* commit \u0027db386f2c263c6e9e4b825d4c9a320849f8f2c916\u0027:\n  first step at implementing the native sensor support\n"
    }
  ],
  "next": "c9a11088e503b9e3ae52a3f671b2d21f5cd54f06"
}
