)]}'
{
  "log": [
    {
      "commit": "11bf79d6e3542e40ebd212b0f5d7cb3370f3068d",
      "tree": "bca3c01bec346cc3c9dc6ab1ad45a8cb73062ef6",
      "parents": [
        "9302c8796fc4dcda08d4bd1e11733848fd4fafaf"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 13 22:22:02 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 14 04:11:22 2011 -0700"
      },
      "message": "Replace Vector _grow/_shrink checks with assert.\n\nOn review of the code, _grow and _shrink are checking for conditions\nthat cannot happen and that don\u0027t even really make sense.  For\nexample, if _shrink is called with where + amount \u003e mCount then\nthis is really bad, however the check only considered the case\nwhen where \u003e\u003d mCount and then it would arbitrarily choose a new\nvalue for where.  Huh?\n\nAs it happens, the callers are correctly validating the\narguments before passing them down to these methods so we can\nget rid of this code.\n\nChange-Id: I921852dba8997065bb0e9cac733e82028d14afcd\n"
    },
    {
      "commit": "cf7e3a5984e1709004d3e1138780d60f97f46e75",
      "tree": "9c0d9cadab1a2ddc91a56b0a16a23f026c1ccb09",
      "parents": [
        "e544a1dbc9a3a4277ef26f6c7a066e7b443829ec"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 11 16:26:18 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 11 16:26:18 2011 -0700"
      },
      "message": "Fix typo in an assert\u0027s log\n\nChange-Id: I94883a23a0a92eaf3e4976f942f747a2137499ac\n"
    },
    {
      "commit": "5c225b1680e696ae8bbf505a1997d6f720672f74",
      "tree": "932326fd02ee91d8a64adfcc9415027646c56563",
      "parents": [
        "3a0146cd29fae3c5bc29d8d535d67826284f8cc9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 16 01:53:36 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jun 17 13:27:16 2010 -0700"
      },
      "message": "Even more native input dispatch work in progress.\n\nAdded more tests.\nFixed a regression in Vector.\nFixed bugs in pointer tracking.\nFixed a starvation issue in PollLoop when setting or removing callbacks.\nFixed a couple of policy nits.\n\nModified the internal representation of MotionEvent to be more\nefficient and more consistent.\n\nAdded code to skip/cancel virtual key processing when there are multiple\npointers down.  This helps to better disambiguate virtual key presses\nfrom stray touches (such as cheek presses).\n\nChange-Id: I2a7d2cce0195afb9125b23378baa94fd2fc6671c\n"
    },
    {
      "commit": "46b9ac0ae2162309774a7478cd9d4e578747bfc2",
      "tree": "46ad021a41e25ca9f1250b709a29b724dc6b504d",
      "parents": [
        "f62c57d684b83df7d2817db976c0afdb500ae92a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 22 18:58:52 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 17:42:16 2010 -0700"
      },
      "message": "Native input dispatch rewrite work in progress.\n\nThe old dispatch mechanism has been left in place and continues to\nbe used by default for now.  To enable native input dispatch,\nedit the ENABLE_NATIVE_DISPATCH constant in WindowManagerPolicy.\n\nIncludes part of the new input event NDK API.  Some details TBD.\n\nTo wire up input dispatch, as the ViewRoot adds a window to the\nwindow session it receives an InputChannel object as an output\nargument.  The InputChannel encapsulates the file descriptors for a\nshared memory region and two pipe end-points.  The ViewRoot then\nprovides the InputChannel to the InputQueue.  Behind the\nscenes, InputQueue simply attaches handlers to the native PollLoop object\nthat underlies the MessageQueue.  This way MessageQueue doesn\u0027t need\nto know anything about input dispatch per-se, it just exposes (in native\ncode) a PollLoop that other components can use to monitor file descriptor\nstate changes.\n\nThere can be zero or more targets for any given input event.  Each\ninput target is specified by its input channel and some parameters\nincluding flags, an X/Y coordinate offset, and the dispatch timeout.\nAn input target can request either synchronous dispatch (for foreground apps)\nor asynchronous dispatch (fire-and-forget for wallpapers and \"outside\"\ntargets).  Currently, finding the appropriate input targets for an event\nrequires a call back into the WindowManagerServer from native code.\nIn the future this will be refactored to avoid most of these callbacks\nexcept as required to handle pending focus transitions.\n\nEnd-to-end event dispatch mostly works!\n\nTo do: event injection, rate limiting, ANRs, testing, optimization, etc.\n\nChange-Id: I8c36b2b9e0a2d27392040ecda0f51b636456de25\n"
    },
    {
      "commit": "966fcb81eece9096040ccc185bb662335d3964cf",
      "tree": "49aa93b937e099258601e4c1d2566d4144650704",
      "parents": [
        "544592e14f8d7643238e40ba9879727497900f35"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 30 21:04:17 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 30 21:04:17 2010 -0700"
      },
      "message": "Revert \"fix [2542425] memory leak during video recording\"\n\nThis reverts commit 544592e14f8d7643238e40ba9879727497900f35.\n"
    },
    {
      "commit": "544592e14f8d7643238e40ba9879727497900f35",
      "tree": "2c0dcab787aa99c58d3af4b4b1fd2b1aa912b86b",
      "parents": [
        "77c560f3d7891d9ae1ad714b5f65a22ff4f4c06b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 30 16:53:40 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 30 19:02:59 2010 -0700"
      },
      "message": "fix [2542425] memory leak during video recording\n\n[Sorted|Keyed]Vector\u003cTYPE\u003e would leak their whole storage when resized\nfrom the end and TYPE had trivial dtor and copy operators.\n\nChange-Id: I8555bb1aa0863df72de27d67ae50e20706e90cf5\n"
    },
    {
      "commit": "d74145285373193af8584ac86ee73c7aea3e1600",
      "tree": "6fcc000c7634f82eab97b860ebc171856d4f2023",
      "parents": [
        "9c3cee9824026764275e4d84ba9b5d9fdc5da690"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 29 13:45:18 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 29 13:45:18 2010 -0700"
      },
      "message": "fix [2542425] memory leak during video recording\n\nVector::sort() is using _do_copy() incorrectly; _do_copy() calls the\ncopy constructor, not the assignment operator, so we need to destroy\nthe \"destination\" before copying the item.\n\nChange-Id: Iaeeac808fa5341a7d219edeba4aa63d44f31473c\n"
    },
    {
      "commit": "9066cfe9886ac131c34d59ed0e2d287b0e3c0087",
      "tree": "d88beb88001f2482911e3d28e43833b50e4b4e97",
      "parents": [
        "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "076357b8567458d4b6dfdcf839ef751634cd2bfb"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "54b6cfa9a9e5b861a9930af873580d6dc20f773c",
      "tree": "35051494d2af230dce54d6b31c6af8fc24091316",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
