)]}'
{
  "log": [
    {
      "commit": "0f32fb3ecfdfaa03acf880a356629d43da3fe2fe",
      "tree": "86fdf143c86349766715c0e2c3a4de014ec8003d",
      "parents": [
        "38442b6884fe7b6289d688b64a3c410dd3c0ac18"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat May 14 07:22:40 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 17 12:21:57 2011 -0700"
      },
      "message": "Make track informational event optional, depending on system property\n\no also add a track informational event to return the encoded data in kilo-bytes\n\nChange-Id: I7c383360d57048c8a3606d0b8141ba53e4f4b224\n"
    },
    {
      "commit": "13a33169b71f447e7dbb3e67bcf5c47f3cce8cce",
      "tree": "9e6201a77f9bf536c5bf94b8621e6fef00c074f5",
      "parents": [
        "bfb6791934dae9888dc017f1057f5b9cf12f35d2"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon May 09 16:56:25 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat May 14 07:18:43 2011 -0700"
      },
      "message": "Support platform and camera dependent recording start time offset\n\nrelated-to-bug: 4390777\n\nChange-Id: Icb52973ad4ac716f04fb103ef527915a966d06d5\n"
    },
    {
      "commit": "bfb6791934dae9888dc017f1057f5b9cf12f35d2",
      "tree": "35e63128061920b9a7ab55d86d8a59a3c2a5ef53",
      "parents": [
        "bf9f408b5917734ac3c07c722cc41563e04f1440",
        "a403a938e9308b47f470815e49a33a7060abc69b"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 13 16:31:10 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 13 16:31:10 2011 -0700"
      },
      "message": "Merge \"Add support for platform-specific recording start time offset\""
    },
    {
      "commit": "987ab4833ecbafbdf750eb1b04e43693433c4783",
      "tree": "8c104cf0f33d66a7785cd6c94e798881386200a0",
      "parents": [
        "ae7bc6529a40cdc25c65c28b76266e0c873861c4"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed May 11 19:09:25 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 13 16:29:19 2011 -0700"
      },
      "message": "Support for storing geo information in the recorded mp4/3gpp file.\n\no Geo data (latitude and longitude) is stored in udta box\n\nChange-Id: I76e4aeb741c4b339f3753d3d28190151f3ea4919\nrelated-to-bug: 4260295\n"
    },
    {
      "commit": "7d334602168523e3baf3aab92310c566841ca035",
      "tree": "ac6fb5ed4525dbffa87cec597271163e3323ab53",
      "parents": [
        "65f47d88107b2e34e4bab1f5208bff3f73ce4e8a",
        "eea8c02bc8361be7807be969f24abeadf482fa19"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri May 13 14:02:50 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 13 14:02:50 2011 -0700"
      },
      "message": "Merge \"Add one more DRM error code. For bug 4422428.\""
    },
    {
      "commit": "eea8c02bc8361be7807be969f24abeadf482fa19",
      "tree": "bbaff4a2653f8606bad980b202f13b86d9be59ec",
      "parents": [
        "01defe403f3705ac5802e392ee18a78737c51fcb"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri May 13 11:43:11 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri May 13 13:53:15 2011 -0700"
      },
      "message": "Add one more DRM error code. For bug 4422428.\n\nChange-Id: I4e333f474c96c0e0f162dde4013ad32b336bebd6\n"
    },
    {
      "commit": "65f47d88107b2e34e4bab1f5208bff3f73ce4e8a",
      "tree": "f78d55c1374dc07e571eed2c1ad638c5fd4ba325",
      "parents": [
        "5684d6bc7e768e905d163cd94b92c977f15c6d89",
        "fe9f8ab03a63b1037f07dd85799fbea80ec6adaa"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 13 12:14:27 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 13 12:14:27 2011 -0700"
      },
      "message": "Merge \"Add initial API for stylus and mouse buttons.\""
    },
    {
      "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": "34bb419e5946ab28112e9e27a4d1b3928d31e0e2",
      "tree": "3186b2ce206a101b19285660af602ec66bdbc831",
      "parents": [
        "b856f43ea7a3a5261a93e432e5ea80005e972530"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed May 11 14:15:23 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Thu May 12 14:09:57 2011 -0700"
      },
      "message": "update for new audio.h header location\n\nChange-Id: Ic4c62c4037800802427eb7d3c7f5eb8b25d18876\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "e4ba346f0f1bb153ec1f9da5c0a4fc96c301efda",
      "tree": "40a71629a7a718ed4e996d04421b47d4193c9b4b",
      "parents": [
        "90bf262591a1772d06a18581c11a6115b89fc143",
        "4b3913a3e43d3180b21d77cc2f717b446350354f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 12 09:29:20 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 12 09:29:20 2011 -0700"
      },
      "message": "Merge \"Squashed commit of the following:\""
    },
    {
      "commit": "e845c352c8eb93412fa7caedb5435d3597c795d0",
      "tree": "615a7bacd4bf4112fb9fc443d565ab1805c7fed9",
      "parents": [
        "7f3289c95ec489651f1c04f1a71cfc7a8b535805"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 11 15:05:29 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 11 18:01:51 2011 -0700"
      },
      "message": "fix onFrameAvailable\n\nChange-Id: I391fe9f6684ac9fd4f91416ce18b583f7087d966\n"
    },
    {
      "commit": "7f3289c95ec489651f1c04f1a71cfc7a8b535805",
      "tree": "1f1358ac1757de4e6aca689ee5c9ac12ea108c32",
      "parents": [
        "402ff24aa199a2587498b694e2be67ceb1265c69"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 09 19:08:33 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 11 18:01:51 2011 -0700"
      },
      "message": "Add SurfaceTexture logging\n\nChange-Id: If1b74be5230813fb76429935d88b9d4a7c41700c\n"
    },
    {
      "commit": "402ff24aa199a2587498b694e2be67ceb1265c69",
      "tree": "90d37bedbae4aaf34029c23cd7569fe7bde27ae9",
      "parents": [
        "a6b717b52a79c83e66247ab49050ddf07b4d5126"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 02 19:51:12 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 11 18:01:51 2011 -0700"
      },
      "message": "Implement {Surface|SurfaceTextureClient}::setSwapInterval()\n\nChange-Id: I8382e346ddaa2c4c8ff56ac3ffd7f0109572f188\n"
    },
    {
      "commit": "5bbb1cf9d7f9ecb8a2fc5ca8ba51c222c2aaff16",
      "tree": "960bc168b38e085af1c584784bf08b66224c0bf0",
      "parents": [
        "ed3894c07a67b3e35d07084c4a8b410908bfedc5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 21 18:52:51 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 11 18:01:51 2011 -0700"
      },
      "message": "Add the concept of synchronous dequeueBuffer in SurfaceTexture\n\nChange-Id: Ic94cbab092953243a0746e04bbe1b2eb0cc930ef\n"
    },
    {
      "commit": "ed3894c07a67b3e35d07084c4a8b410908bfedc5",
      "tree": "d6be3a0f844843e230bf10e285896d3a6336e167",
      "parents": [
        "0297dcae8fddb18ab9e28ba1858a57a8aec3ef32"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 20 14:20:59 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 11 18:01:51 2011 -0700"
      },
      "message": "unify SurfaceTexture and Surface\n\nChange-Id: I49da2f5d8408e4cd7e148cfb777bb4ff68cd8f37\n"
    },
    {
      "commit": "0297dcae8fddb18ab9e28ba1858a57a8aec3ef32",
      "tree": "956126b5b62743efbdfbaa63268662e9a3a8aa80",
      "parents": [
        "f605a5aae5856d0c6114f36659ff9e8c5f3b5c19"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 25 20:22:14 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 11 18:01:51 2011 -0700"
      },
      "message": "Fix a bug where setgeometry couldn\u0027t be undone\n\nThis change the binder protocol between SurfaceTextureClient\nand SurfaceTexture. dequeueBuffer() now takes the requested\nparameters for the buffer. SurfaceTexture decides if the\nbuffer needs to be reallocated and does the allocation\nif needed. In that case it returns BUFFER_NEEDS_REALLOCATION\nto tell SurfaceTextureClient that it needs to call\nrequestBuffer (which all parameters have been removed) to\nacquire a pointer to the buffer.\n\ndequeueBuffer and requestBuffer could be folded into a single\nIPC call, but we chose to optimize the case where buffers are\nnot created and avoid some complexity in the marshalling code.\n\nChange-Id: I097a7f6f40a3491e10f3f3742eab33999286c304\n"
    },
    {
      "commit": "4b3913a3e43d3180b21d77cc2f717b446350354f",
      "tree": "aaf732cc46e6de836182cb03b1663c438d6127c8",
      "parents": [
        "4fbb31383004417b9e059ed9f51eb92c81c2773b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 11 14:13:42 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 11 14:24:58 2011 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit c80992e419ed567abef451042f09c4958534b90d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed May 11 14:00:07 2011 -0700\n\n    Support for the mp3 audio decoder as a software OMX component.\n\n    Change-Id: I66e10c4d0be4c3aecdef1c21b15a2c7359ceb807\n\ncommit a358d0e1bf2a88897887445f42ccdda0f5f2f528\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed May 11 13:11:23 2011 -0700\n\n    Support for G.711 alaw and mulaw decoders as software OMX components\n\n    Change-Id: Ia5c76c02cb83a9f94ce39a27b2251e5880218f03\n\ncommit 79088b9c9a5c8b8c97ea66cb4f90a2b0f0d34553\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu May 5 15:43:32 2011 -0700\n\n    Instead of using an RGB surface and conversion yuv420-\u003ergb565\n\n    convert from OMX_COLOR_FormatYUV420Planar to HAL_PIXEL_FORMAT_YV12 instead.\n\n    Change-Id: I8c4fc3c54c963f0d4ba6377f3c4ab4e0013152e5\n    related-to-bug: 4394005\n\ncommit 69469d3bd84425777b11b9fc938c5e0c61af26a7\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue May 10 15:46:42 2011 -0700\n\n    voip mustn\u0027t link against libstagefright.so\n\n    Change-Id: I4d0ba9a8b9dc9380b792a1bd04bcda231964862c\n\ncommit 2a9a9eeeeeb36ae3a9e680469c3016d509ff08c3\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue May 10 14:37:10 2011 -0700\n\n    Remove most non-OMX software decoders by default\n\n    Change-Id: Ic56514bc1b56b8fa952e8c4a164ea7379ecb69d0\n\ncommit a4de62c37b335c318217765403a9fb282b20a216\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon May 9 16:50:02 2011 -0700\n\n    Conditionally build the old-style software decoders.\n\n    Change-Id: I5de609e1d76c92d26d6eb81d1551462258f3f15f\n\ncommit 5d8b039f9449dc3dad1e77c42c80cc0b54b0c846\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon May 9 16:13:12 2011 -0700\n\n    Support for MPEG4 and H.263 video decoders as soft OMX components.\n\n    Change-Id: I5e3a4835afab89f98e3aa128d013628f5830eafe\n\ncommit b25a1bfbeb0ff6e62e1cc694ce2599c91489c7d0\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon May 9 11:49:10 2011 -0700\n\n    Boost Soft OMX thread priority, fix timestamp handling in vorbis Soft OMX decoder.\n\n    Change-Id: I68d26d4999f06fcc451d69e5303663fab0cba9e8\n\ncommit c0574362f8dc3319ce84d981097867062a698527\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon May 9 11:28:53 2011 -0700\n\n    Support for the AMR decoders (NB and WB) as Soft OMX components.\n\n    Change-Id: Ia565f59833fb52653e23f26536e7e41fc329a754\n\ncommit 3e5575a8f0e27a490cb7bde77bd9456087837f08\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed May 4 13:41:25 2011 -0700\n\n    Signal an error if the aac decoder failed to initialize from codec specific data.\n\n    Change-Id: I01da7831bdf722edd7d6dc5974486daa2cf2b209\n    related-to-bug: 4272179\n\ncommit f94aeaa9886e772ff4823e671ed237096649f4af\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue May 3 13:07:38 2011 -0700\n\n    Software OMX nodes don\u0027t (yet?) support native_window mode.\n\n    Change-Id: I7d9ca9164ef4abf66b573ca21dba12d672f8b12d\n\ncommit eefdfabac8dc659e00daa56da69aea705c49cb67\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue May 3 12:57:16 2011 -0700\n\n    Fixing the OMX tests to refer to appropriate files from test content.\n\n    Change-Id: I5b61c3498749bfb876abbd3946a5132356e3f6ff\n\ncommit f31b7326aef14b6a1b7946520a9688f092e844d5\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue May 3 11:08:38 2011 -0700\n\n    Soft OMX components are now dynamiclly loaded/unloaded, not directly linked against.\n\n    Change-Id: I1e2ecfbfab67a8869886f738eaf0c7b3c948b6d9\n\ncommit b7f0343879e4df06f0a1c9bfece24df557954e2f\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon May 2 15:58:36 2011 -0700\n\n    Support for the AVC software decoder as an OMX component.\n\n    Change-Id: I13c12df435ba4afbd968a9fc659f66b91c818bc2\n\ncommit 5bb9e616d6c8e1b13d531fe996b9a9affdfb2977\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Apr 29 12:05:37 2011 -0700\n\n    Fix Vorbis OMX decoder\u0027s component role.\n\n    Change-Id: I5e871e5e11b3f951c93590210e63fd7987c467b5\n\ncommit 089c91f2333062e196c7afd5fb0ca914878aa474\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Apr 29 12:05:18 2011 -0700\n\n    Support vorbis_decoder OMX testing.\n\n    Change-Id: I1985be178a12ae3f8768bc72067d9236238be170\n\ncommit 56e241fa36fc37219bc536b823bdc2ab82dc1fad\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Apr 29 12:01:46 2011 -0700\n\n    SoftVorbis OMX component now respects the number of valid frames per page.\n\n    Change-Id: I82a117a064d9b083fc58a54ad900a987a763ef03\n\ncommit fcd618ec520c376fdb78f4cbb44b8d9f5d213e2b\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Apr 29 10:59:38 2011 -0700\n\n    Support for the vorbis audio decoder as a soft OMX component.\n\n    Change-Id: Iaeb057e58ca306d3dce205c0445b74d5aefef492\n\ncommit d1fcc3203fc8003ad79c6e96b3a1fc4261743f16\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Apr 29 10:07:50 2011 -0700\n\n    VPX decoder now properly resizes buffers after a port settings change.\n\n    Change-Id: I110749a31b6cba087891d8e5dfe420830bdbf831\n\ncommit 35c7168243cb69849d88911144a2c7fdfed5c54e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Apr 28 13:23:34 2011 -0700\n\n    Support for the VPX video decoder as a Software OMX component.\n\n    Change-Id: Ic345add2d6d768d4af631160153f2e9b97fcea71\n\ncommit 923b2534b4211fc5405377b5190bfa6f2dd27f32\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Apr 28 11:34:40 2011 -0700\n\n    Table-based registration of soft omx components.\n\n    Change-Id: I7f45f0fa5b3a7950776e69c66349731f7674e937\n\ncommit 04a88f3edb2266a463da9c4481b80178be460902\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Apr 28 11:22:31 2011 -0700\n\n    Apparently OMX_GetParameter is valid in any state other than OMX_StateInvalid\n\n    OMX_SetParameter is still constrained to OMX_StateLoaded or a disabled port.\n\n    Change-Id: I1032d7cf4011982d306aa369d4158a82830d26fb\n\ncommit 9d70ca68445e7c40f5c9b2d12466e468f514de88\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Apr 27 15:03:18 2011 -0700\n\n    Use the new soft OMX aac decoder for HTTP live playback.\n\n    Change-Id: Ifbcfb732a9edb855cb46b49f6d0ac942170ee28f\n\ncommit 213fe4a10ea93cce08e8622dc3908053f29878a1\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Apr 12 16:39:45 2011 -0700\n\n    Foundation for supporting software decoders as OMX components\n\n    Change-Id: I7fdab256563b35d1d090617abaea9a26b198d816\n\nChange-Id: I83e9236beed4af985d10333c203f065df9e09a42\n"
    },
    {
      "commit": "4a627c71ff53a4fca1f961f4b1dcc0461df18a06",
      "tree": "270190b1e030424210b6375ca886c45db10c4fb6",
      "parents": [
        "2bb51bb203c117649db10ad8bd497f199ca797b0"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Apr 01 14:43:32 2011 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue May 10 17:52:51 2011 -0700"
      },
      "message": "Full local backup infrastructure\n\nThis is the basic infrastructure for pulling a full(*) backup of the\ndevice\u0027s data over an adb(**) connection to the local device.  The\nbasic process consists of these interacting pieces:\n\n1. The framework\u0027s BackupManagerService, which coordinates the\n   collection of app data and routing to the destination.\n\n2. A new framework-provided BackupAgent implementation called\n   FullBackupAgent, which is instantiated in the target applications\u0027\n   processes in turn, and knows how to emit a datastream that contains\n   all of the app\u0027s saved data files.\n\n3. A new shell-level program called \"bu\" that is used to bridge from\n   adb to the framework\u0027s Backup Manager.\n\n4. adb itself, which now knows how to use \u0027bu\u0027 to kick off a backup\n   operation and pull the resulting data stream to the desktop host.\n\n5. A system-provided application that verifies with the user that\n   an attempted backup/restore operation is in fact expected and to\n   be allowed.\n\nThe full agent implementation is not used during normal operation of\nthe delta-based app-customized remote backup process.  Instead it\u0027s\nused during user-confirmed *full* backup of applications and all their\ndata to a local destination, e.g. via the adb connection.\n\nThe output format is \u0027tar\u0027.  This makes it very easy for the end\nuser to examine the resulting dataset, e.g. for purpose of extracting\nfiles for debug purposes; as well as making it easy to contemplate\nadding things like a direct gzip stage to the data pipeline during\nbackup/restore.  It also makes it convenient to construct and maintain\nsynthetic backup datasets for testing purposes.\n\nWithin the tar format, certain artificial conventions are used.\nAll files are stored within top-level directories according to\ntheir semantic origin:\n\napps/pkgname/a/  : Application .apk file itself\napps/pkgname/obb/: The application\u0027s associated .obb containers\napps/pkgname/f/  : The subtree rooted at the getFilesDir() location\napps/pkgname/db/ : The subtree rooted at the getDatabasePath() parent\napps/pkgname/sp/ : The subtree rooted at the getSharedPrefsFile() parent\napps/pkgname/r/  : Files stored relative to the root of the app\u0027s file tree\napps/pkgname/c/  : Reserved for the app\u0027s getCacheDir() tree; not stored.\n\nFor each package, the first entry in the tar stream is a file called\n\"_manifest\", nominally rooted at apps/pkgname.  This file contains some\nmetadata about the package whose data is stored in the archive.\n\nThe contents of shared storage can optionally be included in the tar\nstream. It is placed in the synthetic location:\n\nshared/...\n\nuid/gid are ignored; app uids are assigned at install time, and the\napp\u0027s data is handled from within its own execution environment, so\nwill automatically have the app\u0027s correct uid.\n\nForward-locked .apk files are never backed up.  System-partition\n.apk files are not backed up unless they have been overridden by a\npost-factory upgrade, in which case the current .apk *is* backed up --\ni.e. the .apk that matches the on-disk data.  The manifest preceding\neach application\u0027s portion of the tar stream provides version numbers\nand signature blocks for version checking, as well as an indication\nof whether the restore logic should expect to install the .apk before\nextracting the data.\n\nSystem packages can designate their own full backup agents.  This is\nto manage things like the settings provider which (a) cannot be shut\ndown on the fly in order to do a clean snapshot of their file trees,\nand (b) manage data that is not only irrelevant but actively hostile\nto non-identical devices -- CDMA telephony settings would seriously\nmess up a GSM device if emplaced there blind, for example.\n\nWhen a full backup or restore is initiated from adb, the system will\npresent a confirmation UI that the user must explicitly respond to\nwithin a short [~ 30 seconds] timeout.  This is to avoid the\npossibility of malicious desktop-side software secretly grabbing a copy\nof all the user\u0027s data for nefarious purposes.\n\n(*) The backup is not strictly a full mirror.  In particular, the\n    settings database is not cloned; it is handled the same way that\n    it is in cloud backup/restore.  This is because some settings\n    are actively destructive if cloned onto a different (or\n    especially a different-model) device: telephony settings and\n    AndroidID are good examples of this.\n\n(**) On the framework side it doesn\u0027t care that it\u0027s adb; it just\n    sends the tar stream to a file descriptor.  This can easily be\n    retargeted around whatever transport we might decide to use\n    in the future.\n\nKNOWN ISSUES:\n\n* the security UI is desperately ugly; no proper designs have yet\n  been done for it\n* restore is not yet implemented\n* shared storage backup is not yet implemented\n* symlinks aren\u0027t yet handled, though some infrastructure for\n  dealing with them has been put in place.\n\nChange-Id: Ia8347611e23b398af36ea22c36dff0a276b1ce91\n"
    },
    {
      "commit": "fd26ed1a2852c5788e61704a29b9af3fd1d7dac2",
      "tree": "a4b809cf6c375476d430e3526e9d731eba2ea651",
      "parents": [
        "39201b017f7253d67d86b823d6097a4c857b0d7e",
        "aa9d84c37e05f696ec158dac98ce38cf41e18314"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 10 10:59:29 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 10 10:59:29 2011 -0700"
      },
      "message": "Merge \"resolved conflicts for merge of 05be6d6f to master\""
    },
    {
      "commit": "a403a938e9308b47f470815e49a33a7060abc69b",
      "tree": "38cd5ea3eba92df8b9ab609f02b0ead73835a69e",
      "parents": [
        "bb40896e6641eb3df568042dfc169ed2013e5b0d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon May 09 18:49:31 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 10 10:32:19 2011 -0700"
      },
      "message": "Add support for platform-specific recording start time offset\n\no This start time offset is used in the media framework to eliminate\n  the recording sound in the recorded file.\n\nChange-Id: I97926a74f0743b8a4f985d51334e8d1486a318ea\nrelated-to-bug: 4390777\n"
    },
    {
      "commit": "aa9d84c37e05f696ec158dac98ce38cf41e18314",
      "tree": "49a8e08d51840eec7ff20b624c59408f2f7523aa",
      "parents": [
        "28e77e616d8f005c8e07d6f28a83f8ca9772aedf",
        "05be6d6fe09ddfb706d1bef3b20c3d37f45e3c8a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 09 19:00:59 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 09 19:00:59 2011 -0700"
      },
      "message": "resolved conflicts for merge of 05be6d6f to master\n\nChange-Id: Ic6a6c5bb300f6f1d43f9ed550b284282b4f16212\n"
    },
    {
      "commit": "05be6d6fe09ddfb706d1bef3b20c3d37f45e3c8a",
      "tree": "e267de423fabed80a38fd48d6f9e2910b69fc072",
      "parents": [
        "ba54feb094fdf0eb2201eae5751104a144a2a31d",
        "4907d1d5e2c7d244b07579b8c52153df69754e85"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 09 17:10:34 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 09 17:10:34 2011 -0700"
      },
      "message": "am 4907d1d5: am 0c6cbf41: Merge \"Better compat mode part one: start scaling windows.\" into honeycomb-mr2\n\n* commit \u00274907d1d5e2c7d244b07579b8c52153df69754e85\u0027:\n  Better compat mode part one: start scaling windows.\n"
    },
    {
      "commit": "3aea037dd8c47fd5906b0d8409da7e7243fcb7d4",
      "tree": "9f7a975d8067e5bba38ff12729ac308d530614f6",
      "parents": [
        "9dd0cb89771adbe50fe0cf079280c29964f0971a"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 06 12:19:04 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon May 09 17:03:35 2011 -0700"
      },
      "message": "Add send session recording summary report to application\n\nChange-Id: I9c63ddae432f0c93486c39776ed0a058a8649602\n"
    },
    {
      "commit": "e2515eebf42c763c0a2d9f873a153711778cfc17",
      "tree": "ee159940f05c439d0524771bfbfe6b551c82c2d4",
      "parents": [
        "158e3582c03ab9e0221718da20fc8854bb9216d0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 27 18:52:56 2011 -0400"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 09 17:03:24 2011 -0700"
      },
      "message": "Better compat mode part one: start scaling windows.\n\nFirst step of improving app screen size compatibility mode.  When\nrunning in compat mode, an application\u0027s windows are scaled up on\nthe screen rather than being small with 1:1 pixels.\n\nCurrently we scale the application to fill the entire screen, so\ndon\u0027t use an even pixel scaling.  Though this may have some\nnegative impact on the appearance (it looks okay to me), it has a\nbig benefit of allowing us to now treat these apps as normal\nfull-screens apps and do the normal transition animations as you\nmove in and out and around in them.\n\nThis introduces fun stuff in the input system to take care of\nmodifying pointer coordinates to account for the app window\nsurface scaling.  The input dispatcher is told about the scale\nthat is being applied to each window and, when there is one,\nadjusts pointer events appropriately as they are being sent\nto the transport.\n\nAlso modified is CompatibilityInfo, which has been greatly\nsimplified to not be so insane and incomprehendible.  It is\nnow simple -- when constructed it determines if the given app\nis compatible with the current screen size and density, and\nthat is that.\n\nThere are new APIs on ActivityManagerService to put applications\nthat we would traditionally consider compatible with larger screens\nin compatibility mode.  This is the start of a facility to have\na UI affordance for a user to switch apps in and out of\ncompatibility.\n\nTo test switching of modes, there is a new variation of the \"am\"\ncommand to do this: am screen-compat [on|off] [package]\n\nThis mode switching has the fundamentals of restarting activities\nwhen it is changed, though the state still needs to be persisted\nand the overall mode switch cleaned up.\n\nFor the few small apps I have tested, things mostly seem to be\nworking well.  I know of one problem with the text selection\nhandles being drawn at the wrong position because at some point\nthe window offset is being scaled incorrectly.  There are\nprobably other similar issues around the interaction between\ntwo windows because the different window coordinate spaces are\ndone in a hacky way instead of being formally integrated into\nthe window manager layout process.\n\nChange-Id: Ie038e3746b448135117bd860859d74e360938557\n"
    },
    {
      "commit": "78fed171d9d62b25aa846d7373a7040e3fd2241e",
      "tree": "1d9a5d78b1ebe792b1fe1f0caffc714b4f22f5b3",
      "parents": [
        "ed742306b3d24ba1c2ca3fea0cc2ada8534a18b0"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon May 09 11:36:53 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon May 09 11:36:53 2011 -0700"
      },
      "message": "Add const to the finders method in MetaData.cpp\n\no also fixed the MPEG4Writer writeFtypBox() to take a const pointer to MetaData\n\nChange-Id: Iaecdbe6aeab345f6dc72aac0d19f9704b6e0d28a\n"
    },
    {
      "commit": "ed742306b3d24ba1c2ca3fea0cc2ada8534a18b0",
      "tree": "7b3623c4782e922362b872785ae9d5b8efc4e21e",
      "parents": [
        "15dd5c168bbf947c760859374cb5e07e5399cd11"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 06 11:27:59 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon May 09 11:31:33 2011 -0700"
      },
      "message": "Add end of recording summary track info\n\nChange-Id: I2fcf589e70db225776ef7c8d0f28505ceb824c45\nrelated-to-bug: 1854633\n"
    },
    {
      "commit": "7a6cea40b256cfd2e903a1c13daa5698ae7ce348",
      "tree": "e8e64905198a3137672475023437550a074c05c9",
      "parents": [
        "9aabb95781bee6a44684a6f6feb155e115d24983"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 06 16:55:39 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon May 09 10:49:17 2011 -0700"
      },
      "message": "Refactor MPEG4Writer::writeTrackHeader() method\n\no most of the mp4 file boxes has its own method now\nTODO: remove some of the duplicated code for esds box, for instance.\n\nChange-Id: Iae3dbb2410b79bc79aaee081b80569d339993c47\n"
    },
    {
      "commit": "f84bfabe0d5d92956a1ba2896beb0e0d4e1e3106",
      "tree": "72d22aa2c4eee808d192a023f02d5915e64e7edb",
      "parents": [
        "d10853854685d28451f34268828462a1a92f631f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 21 14:29:38 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed May 04 13:38:31 2011 -0700"
      },
      "message": "Initial check-in for AACWriter\n\nChange-Id: Ia21ca39a404484b2dda25c6101780d2ff11c4623\n\nrelated-to-bug: 4211046\n"
    },
    {
      "commit": "4f55af7ba6b8c278352b05059976c13a90e75756",
      "tree": "546230c92d5496acec88c68e9d7e3b56992f909b",
      "parents": [
        "d58efd38e7ef62f3392ad4decc44f794f67044c0",
        "c6091ddd3a22da98b5e83d4b5d864939b451b752"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed May 04 09:00:15 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 04 09:00:15 2011 -0700"
      },
      "message": "Merge \"Initial CL for the timed text support: - Add support for MP4 timed text - Add API for app to turn on/off a text track - Add timed text metadata(language) in the MediaMetadataRetriever\""
    },
    {
      "commit": "f6df5b41e145ee996ca4f94bec014ab3e41f0b21",
      "tree": "1d8468ff61a673100c383ee5cd58d8c4b3945d35",
      "parents": [
        "863ee40964ef2a017a1116abe37c6b8ad466dd5e",
        "fb6232635d339c83ca100e472b159f103dafb6e2"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed May 04 08:57:37 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 04 08:57:37 2011 -0700"
      },
      "message": "am fb623263: DO NOT MERGE MediaScanner: reimplement the \".nomedia\" feature for hiding files from the media provider\n\n* commit \u0027fb6232635d339c83ca100e472b159f103dafb6e2\u0027:\n  DO NOT MERGE MediaScanner: reimplement the \".nomedia\" feature for hiding files from the media provider\n"
    },
    {
      "commit": "fb6232635d339c83ca100e472b159f103dafb6e2",
      "tree": "2e2492bb0a11eb4b410109220cb5f0af37319d7d",
      "parents": [
        "7dd592298aefb7921afb86ced444d46cb30ac466"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sun Apr 24 11:15:09 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed May 04 10:41:20 2011 -0400"
      },
      "message": "DO NOT MERGE MediaScanner: reimplement the \".nomedia\" feature for hiding files from the media provider\n\nPreviously we ignored any files and directories that had name started with \u0027.\u0027\nand ignored any directories that contained a \".nomedia\" file.\nNow to support transferring any file via MTP, we now add these previously ignored files\nto the media database, but will not mark them as audio, video, image or playlist files.\nThat way they will be included in the files table but will be hidden from the\naudio, video, images and playlist views that are used by apps like Music and Gallery.\n\nBug: 3405327\n\nChange-Id: Ib707f329be98878501952b6054998518a6eabbbd\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "9c112a86def2f5e21705b29f906aadcb7fafb067",
      "tree": "1cba6eb0a32786b87527e810b843e49e0e08a5db",
      "parents": [
        "1cf74fb3c46f107d95a87c7c4ab88c421758f41e"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sun Apr 24 11:15:09 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue May 03 21:03:56 2011 -0400"
      },
      "message": "DO NOT MERGE MediaScanner: reimplement the \".nomedia\" feature for hiding files from the media provider\n\nPreviously we ignored any files and directories that had name started with \u0027.\u0027\nand ignored any directories that contained a \".nomedia\" file.\nNow to support transferring any file via MTP, we now add these previously ignored files\nto the media database, but will not mark them as audio, video, image or playlist files.\nThat way they will be included in the files table but will be hidden from the\naudio, video, images and playlist views that are used by apps like Music and Gallery.\n\nBug: 3405327\n\nChange-Id: Ibb37bb2856a0684ce9f685ed565ad35347622834\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "c6091ddd3a22da98b5e83d4b5d864939b451b752",
      "tree": "1971f9f15b8ea6ac1a46be791a6d3973729e4395",
      "parents": [
        "9d216f7b0ef66e4d2e32f86cd7e31608fcce49b6"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue May 03 15:59:03 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue May 03 16:41:17 2011 -0700"
      },
      "message": "Initial CL for the timed text support:\n- Add support for MP4 timed text\n- Add API for app to turn on/off a text track\n- Add timed text metadata(language) in the MediaMetadataRetriever\n\nChange-Id: I0055beba38ac761627dbcc6d581ae9582d68bb94\n"
    },
    {
      "commit": "b2a153adc9860616acdb96d7cdd64494d5a2a0f2",
      "tree": "3e87a5d9681d86ad68c14222774f77bc4bd3ae4a",
      "parents": [
        "be0cc36525f090032d1b84d95e1d8ba5fc714fc2"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Sun May 01 11:33:26 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue May 03 16:40:14 2011 -0700"
      },
      "message": "frameworks/base: android_native_buffer_t -\u003e ANativeWindowBuffer\n\nChange-Id: Idc2eabaa805bb6d308ebb315872623f28d428417\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "be0cc36525f090032d1b84d95e1d8ba5fc714fc2",
      "tree": "f1d4badc397643d9dfa6c832e97b4e117bf1b23f",
      "parents": [
        "bf8b45cd15e4ae6aaeb29ba697b08f7ec65c195b"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon May 02 09:29:44 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue May 03 16:39:54 2011 -0700"
      },
      "message": "frameworks/base: move ANativeWindow/android_native_buffer_t out\n\nThese definitions have been moved to system/core.\n\nChange-Id: I021b6b5f2fd72d538b5ccdcb33860ebd3004d9ad\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "a269b87bd7fecbd977c6c2a054ea333d40408bfb",
      "tree": "f9ee8843a8c38b4926ca8d50d4cec76a9668538a",
      "parents": [
        "4d7c1ce651bd5e283e694fa34641e1dc080613c0"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Apr 14 16:55:59 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue May 03 15:49:40 2011 -0700"
      },
      "message": "frameworks/base: switch CameraService to a HAL module\n\nThis patch changes CameraService to load a camera HAL module, instead of\nlinking directly against a library that implements the CameraHardwareInterface\nclass.\n\nCameraHardwareInterface no longer defines the API to the camera HAL.  Instead,\nthis is now in HAL header hardware/camera.h.  We keep CamerHardwareInterface as\na class local to CameraService, which wraps around the new HAL calls.  In the\nfuture, we may remove this class entirely and have CameraService call the HAL\nmethods directly.\n\nChange-Id: I5c61ac40078fc0b50bbac5881a556fe6c8837641\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "4d7c1ce651bd5e283e694fa34641e1dc080613c0",
      "tree": "cfb1f708b760f20b08ec81a6bc4d25c59ec8cc04",
      "parents": [
        "9c7ac0d142eaf4b083a309299ab023932a9bb109"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Apr 14 16:54:38 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue May 03 15:49:40 2011 -0700"
      },
      "message": "frameworks/base: make the ANativeWindow query() method const\n\nquery() does not modify the object\u0027s data, so it needs to be a const method\n\nChange-Id: I67c40a3c865461e6f1cc2193fd2d74286ff6ac8f\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "9c7ac0d142eaf4b083a309299ab023932a9bb109",
      "tree": "eacc12f5b030d872cf460ae77747eece8938c8fd",
      "parents": [
        "9d216f7b0ef66e4d2e32f86cd7e31608fcce49b6"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Apr 14 16:51:21 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue May 03 15:49:39 2011 -0700"
      },
      "message": "frameworks/base: include system/core header camera.h in Camera.h\n\nWe define struct CameraInfo in this camera/Camera.h, even though an identical\nstruct camera_info is defined in hardware/camera.h (but not in\nhardware/camera_defs.h).  We may not export struct definitions from the HAL\ninto headers which may find their way into the NDK.\n\nThis commit also renames FRAME_CALLBACK_FLAG_xxx to CAMERA_FRAME_CALLBACK_xxx.\n\nChange-Id: I3e2ddd01d61bf5371ff2fc1a397995e0f1ee11f8\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "3723396c7ad7f0290232113a7bf79564f13df31f",
      "tree": "a1bf2f8a218d2548247d636f72dfcebcd0433ad8",
      "parents": [
        "3e456fa745af44320e5cfda987df889328b38c41",
        "3773eef4e36fa4171a84b495dca849be112df0a8"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue May 03 11:07:33 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 03 11:07:33 2011 -0700"
      },
      "message": "Merge \"Add an auto-exposure lock feature to the Camera API.\""
    },
    {
      "commit": "8ef9eaaea8cc27145bf159e45b7d9eaa0aae6d5c",
      "tree": "506215e3b73a900c5b862427aba28833faa2129d",
      "parents": [
        "be255f2920d1e4db30f8f4ccfc4cd252a72ad974",
        "6b85f173046340da7ccd503845a2950843f085f3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 02 16:31:52 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 02 16:31:52 2011 -0700"
      },
      "message": "Merge \"remove last traces of copybit\""
    },
    {
      "commit": "6b85f173046340da7ccd503845a2950843f085f3",
      "tree": "5dfb42ce758d7c8c04755b44b68145afd9cb1f20",
      "parents": [
        "939ccad344c5f32bc9e7dbfa80648c1e75cac62a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 02 16:27:21 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 02 16:27:21 2011 -0700"
      },
      "message": "remove last traces of copybit\n\nChange-Id: Ia0f13a0ee6f702256482b5eb29d7fa2aa840bfc7\n"
    },
    {
      "commit": "3773eef4e36fa4171a84b495dca849be112df0a8",
      "tree": "3d57722973e3550919876c86c6d816b51e2897a7",
      "parents": [
        "75e7b005b8c9157880edb9192e6a87cef8f851e0"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Apr 15 13:51:42 2011 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon May 02 09:36:06 2011 -0700"
      },
      "message": "Add an auto-exposure lock feature to the Camera API.\n\nAdds a new camera parameter for locking auto-exposure to its current\nvalue. Also adds a function for checking if auto-exposure lock is\nsupported by the current platform.\n\nHidden for now.\n\nChange-Id: Id452371191ab220318ce2cb98b8ee91bdde9aab6\n"
    },
    {
      "commit": "efc69d72c9208fe08eefb702f9047cc7242b61b9",
      "tree": "a0252b3a4f03bd8c1b119b2159cb9f16a9cdba4a",
      "parents": [
        "3304f8fa8dbb301ffe8c0c51933f2ff08b18f324",
        "d01ec6eab019e46398975202e9e4a198a603ad99"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Apr 29 16:35:26 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 29 16:35:26 2011 -0700"
      },
      "message": "Merge \"Add setParameter/getParameter to MediaPlayer API. for bug 1982947\""
    },
    {
      "commit": "f16e1ab0a90b1527a5c859a99f4e1dc39064f3b8",
      "tree": "0375b1345054a6ec707c5b0e160ae39f29d2d52e",
      "parents": [
        "71a0dab1ca962c2827be0221a7fbcc065dc3cbb8"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Apr 29 10:44:46 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Apr 29 11:01:36 2011 -0700"
      },
      "message": "Add DRM errors in the DRM frameworks to MediaErrors also.\nFor bug 4350156.\n\nChange-Id: Ib5711ec642178a49203a448b7f5114e675d49394\n"
    },
    {
      "commit": "d01ec6eab019e46398975202e9e4a198a603ad99",
      "tree": "0669d2f0f8a546de5ebaf135bec67086648f51fc",
      "parents": [
        "71a0dab1ca962c2827be0221a7fbcc065dc3cbb8"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Apr 25 17:28:22 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Apr 29 10:24:03 2011 -0700"
      },
      "message": "Add setParameter/getParameter to MediaPlayer API.\nfor bug 1982947\n\nChange-Id: If3f40e4f18cbba155af29944af38bdc627f8cd53\n"
    },
    {
      "commit": "8e86a7aba5003a620bb130b8ab7b444dacf6da9f",
      "tree": "8abc4ce4b65719a78c4a7fe887ad206ce7de958a",
      "parents": [
        "61773dbda321be54cce0ff4b8cfa993433c1543f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 28 19:50:21 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 28 19:50:21 2011 -0700"
      },
      "message": "get rid of dependency on copybit HAL module\n\nChange-Id: Ia608099a2426c11a91d33063ba53c93e1eccb428\n"
    },
    {
      "commit": "058520e9eea39d01fc4dd640a15cb85090e30e81",
      "tree": "87e1db1e01d018a4283dca6c71d2c29418069f7f",
      "parents": [
        "d21e7b5d542cc9e93526182272c2bdc995c816fb",
        "2986f5bed370709c10d24c058591d775e6092d89"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed Apr 27 17:13:46 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 27 17:13:46 2011 -0700"
      },
      "message": "Merge changes I22d9e018,Ib0701fcc,Ibc637918,I9eb7e002,I4adcec73\n\n* changes:\n  audioflinger: don\u0027t do work in constructor, instead do it in onFirstRef\n  audioflinger: enumerate all the possible audio interfaces\n  audio/media: convert to using the audio HAL and new audio defs\n  libmedia: move AudioParameter out of AudioSystem\n  audioflinger: move legacy audio hw/policy out to libhardware_legacy\n"
    },
    {
      "commit": "24fc2fb1c541e954b83fd31ea9f786a5e9b45501",
      "tree": "e85b3ff86b73d56e16ab640919d251c046371c65",
      "parents": [
        "4dc22e77cfd2a1c3671e5646ee87c5e4c15596a0"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Apr 19 22:30:36 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed Apr 27 13:10:10 2011 -0700"
      },
      "message": "audio/media: convert to using the audio HAL and new audio defs\n\nChange-Id: Ibc637918637329e4f2b62f4ac7781102fbc269f5\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "c7d1d6288ee097e97560ab01f3d0953014ce3cf7",
      "tree": "3a5d52d8edb7682165c094058e9944c7aadf5f54",
      "parents": [
        "3064878a02b14caa8fd1befb19c85ce8110b1899",
        "d84df05490e8b102e81cca848f65c174398be1b6"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Apr 27 12:27:05 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 27 12:27:05 2011 -0700"
      },
      "message": "am d84df054: am 96974931: am 83ddcdf7: Add heartbeat error codes into MediaErrors.h\n\n* commit \u0027d84df05490e8b102e81cca848f65c174398be1b6\u0027:\n  Add heartbeat error codes into MediaErrors.h\n"
    },
    {
      "commit": "d84df05490e8b102e81cca848f65c174398be1b6",
      "tree": "9b717241bf752b27b38b83f7d7743aa9feffee79",
      "parents": [
        "b54bebf47fcd1cfbfdccd67e062d856ec06ce825",
        "969749319ca17f6e0c6836303a78cc484df2539b"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Apr 27 12:24:42 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 27 12:24:42 2011 -0700"
      },
      "message": "am 96974931: am 83ddcdf7: Add heartbeat error codes into MediaErrors.h\n\n* commit \u0027969749319ca17f6e0c6836303a78cc484df2539b\u0027:\n  Add heartbeat error codes into MediaErrors.h\n"
    },
    {
      "commit": "4dc22e77cfd2a1c3671e5646ee87c5e4c15596a0",
      "tree": "20cd7ce3ce245c504484800c629af5382d31ca21",
      "parents": [
        "5e20a3dd44ec8a5e00b90f17ce412784068f1f14"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Apr 19 22:20:55 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed Apr 27 10:48:38 2011 -0700"
      },
      "message": "libmedia: move AudioParameter out of AudioSystem\n\nChange-Id: I9eb7e002d141936258050d4fa4f0ccd8202bfc54\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "83ddcdf7fdd46b81a2b0ea5acdf9b9dc52b5daa6",
      "tree": "a8136e2c92bfc8bd5c4e1d6bccedaa0a9bc9beed",
      "parents": [
        "e1e3d7d97caf89307230e85997f5d23074b216cb"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Apr 26 17:09:28 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Apr 26 19:35:32 2011 -0700"
      },
      "message": "Add heartbeat error codes into MediaErrors.h\n\nrelated-to-bug: 4322415\n\nChange-Id: I78137c61e3a8ce9afcb9fb38cb77a83561b9b72d\n"
    },
    {
      "commit": "1d38d936a159a73ad06e481bd960d37c5ae1efed",
      "tree": "ea741faa897427ca4dbe745fbd28793abfb87801",
      "parents": [
        "641e093f28b0c1b4b3c5c399b9941479fd760eae"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 25 22:56:54 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 25 22:59:07 2011 -0700"
      },
      "message": "fix typo in Vector\u003c\u003e:: push_back and push_front\n\nparameter were inverted.\n\nChange-Id: I867b01de5f58354bb9668fa662dd2a7d78dd3b37\n"
    },
    {
      "commit": "46baa14f27eb08b55434bf6e9cf9bcc9c9dbc17f",
      "tree": "2dbe24b112e75c15b8194c14ff8f99f65b9089ea",
      "parents": [
        "7ada57f8baa14740a2484e5f04a78e63a872d8a8",
        "589b64a64be16d04d35113bc7f2644e200cb4a3e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 25 15:29:40 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 25 15:29:40 2011 -0700"
      },
      "message": "Merge \"Add some basic STL compatibility to Vector\u003c\u003e\""
    },
    {
      "commit": "589b64a64be16d04d35113bc7f2644e200cb4a3e",
      "tree": "3e288340aeb11469b98a85d6e65b1efce727aaab",
      "parents": [
        "9f0df630fda450571e097ab6b1f1b1e5fa71e981"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 25 15:28:17 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 25 15:28:17 2011 -0700"
      },
      "message": "Add some basic STL compatibility to Vector\u003c\u003e\n\nChange-Id: Iaf72623170ee415372c7989d7ba9ff627167449e\n"
    },
    {
      "commit": "42f16f3d425df16829d8de4662d97577f421a7ad",
      "tree": "e33ca226fff9b412162b3c976f0c810d995d8de1",
      "parents": [
        "e8fd99df6e95d4841f987c17ee7f325723d21459",
        "997354e4b4a9666cedd62282471e97822affced9"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Apr 25 09:52:26 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 25 09:52:26 2011 -0700"
      },
      "message": "Merge \"MediaScanner: reimplement the \".nomedia\" feature for hiding files from the media provider\""
    },
    {
      "commit": "185052e2d1b8b4eb9df5f47e6d7fd05acb739b84",
      "tree": "e6345d0958bd112beee8810e2a6cc4087218e492",
      "parents": [
        "a8965da9886496952c6f97a402c4682ee1e37c81",
        "4e396e063c8b0fa6201b47166f547a98abfd6038"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Apr 25 09:39:28 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 25 09:39:28 2011 -0700"
      },
      "message": "Merge \"Clarify the meaning of weight in the focus and metering area HAL.\""
    },
    {
      "commit": "4e396e063c8b0fa6201b47166f547a98abfd6038",
      "tree": "fe8d7122be52e0a803610664dd8dadd85e98635d",
      "parents": [
        "f142708b83f09be3cb4c0c769beca4960b47e739"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Apr 21 09:23:15 2011 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Apr 25 09:33:48 2011 -0700"
      },
      "message": "Clarify the meaning of weight in the focus and metering area HAL.\n\nWeigh values must be less than 1000, but have no restriction on their\nsum. Weights should be interpreted as per-pixel values, meaning larger\nareas will have more influence over focus/metering than smaller areas\nof the same weight.\n\nChange-Id: I988b74f988ddba2ff0c49d078ff3174b47cbae18\n"
    },
    {
      "commit": "997354e4b4a9666cedd62282471e97822affced9",
      "tree": "4f9af265b59489bdc0b2e1562cde035d984c5767",
      "parents": [
        "653935da6bfe45301bc362c92d4aa9b4f50277ca"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sun Apr 24 11:15:09 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Apr 25 09:21:54 2011 -0700"
      },
      "message": "MediaScanner: reimplement the \".nomedia\" feature for hiding files from the media provider\n\nPreviously we ignored any files and directories that had name started with \u0027.\u0027\nand ignored any directories that contained a \".nomedia\" file.\nNow to support transferring any file via MTP, we now add these previously ignored files\nto the media database, but will not mark them as audio, video, image or playlist files.\nThat way they will be included in the files table but will be hidden from the\naudio, video, images and playlist views that are used by apps like Music and Gallery.\n\nBug: 3405327\n\nChange-Id: I2d7285bd32e06c1a5c4ef6a8a15f8f8b2c33b39b\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "9638e5c167be321643bf3f3ee39e3fb45541fb3b",
      "tree": "ec79a54e7f44db04b4b5cc7f09ba944f6836a258",
      "parents": [
        "2a231f8435dba525c838779e0fd44710ea23cd98"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 20 14:19:32 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 20 14:26:11 2011 -0700"
      },
      "message": "Get rid of the \"pid\" parameter from createSurface\n\nChange-Id: I28635e3f803e6abe965d79998e305f54a202465d\n"
    },
    {
      "commit": "3f14891fc9e764d97de07b109f066aedfff90c2e",
      "tree": "7d026487ee719489cea2c1237901ef6cf325efe2",
      "parents": [
        "05d30b14843bf7cf252873f4d0d39706878b28c2",
        "2352b978a3c94cd88f41d0d908f961333fdac1e9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 19 15:37:32 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 19 15:37:32 2011 -0700"
      },
      "message": "Merge \"Initial checkin of spot presentation for touchpad gestures.\""
    },
    {
      "commit": "2352b978a3c94cd88f41d0d908f961333fdac1e9",
      "tree": "24f8f19e9b2895cc2c3489bf2dd7a09aaf5834db",
      "parents": [
        "f76dc56c33ba66138af70d72803cf55f881c3717"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 12 22:39:53 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 19 15:35:51 2011 -0700"
      },
      "message": "Initial checkin of spot presentation for touchpad gestures.\n\nAdded a new PointerIcon API (hidden for now) for loading\npointer icons.\n\nFixed a starvation problem in the native Looper\u0027s sendMessage\nimplementation which caused new messages to be posted ahead\nof old messages sent with sendMessageDelayed.\n\nRedesigned the touch pad gestures to be defined in terms of\nmore fluid finger / spot movements.  The objective is to reinforce\nthe natural mapping between fingers and spots which means there\nmust not be any discontinuities in spot motion relative to\nthe fingers.\n\nRemoved the SpotController stub and folded its responsibilities\ninto PointerController.\n\nChange-Id: I5126b1e69d95252fda7f2a684c9287e239a57163\n"
    },
    {
      "commit": "578492e999b3919cfc587024c5f86d6837c3aa7c",
      "tree": "362cb7ad4c104098f8994e6aa03917b95281e1fe",
      "parents": [
        "4af51a14febf0c6caf844f4620c423c6dd46bfab",
        "27cd07ca8006fd80d85379ada416874bfa78aa88"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 18 19:51:26 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 18 19:51:26 2011 -0700"
      },
      "message": "Merge \"changes to SurfaceTexture needed for unification with SF\""
    },
    {
      "commit": "b0dfade955f2e2e19a827ca2119f3c5d319a824a",
      "tree": "bbbda0f558c45cecb2bff60498b9b77592882faf",
      "parents": [
        "2ecebd6f69db9a127f78ae32916d1e0066939b29",
        "0a47f4f711514ceb3e5f6d3ecdbc4c74f7b3bbef"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 18 08:12:36 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 18 08:12:36 2011 -0700"
      },
      "message": "Merge \"Parcel::appendFrom({const } Parcel *parcel, size_t, size_t)\""
    },
    {
      "commit": "644c4f186259cd26a2fb1e5be3ce32d891adc7af",
      "tree": "465571d42648f723fb1d857c8d8b0c249a1d6650",
      "parents": [
        "19e4be42616c7a337229a9a17dc982374dec8980",
        "5f05f99aaedaba18c426fac287bcb18d56dbe881"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 15 18:15:13 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 15 18:15:13 2011 -0700"
      },
      "message": "Merge \"Fix a GraphicBuffer leak in SurfaceTexture\""
    },
    {
      "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": "d195e5ab401432ddac659791640a2927fc668699",
      "tree": "61169b923b4d530a097ac8ff9e3029dfe468b7cd",
      "parents": [
        "966f9e558d714d9d41189e989b21e6d5fec35047"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 13 15:39:37 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 13 16:43:15 2011 -0700"
      },
      "message": "Replace a custom AndroidRuntime::findClass with a more targeted fix.\n\nThis seems simpler and more contained, and I think the comment explaining\nwhy hoop-jumping is necessary is a bit clearer now.\n\nChange-Id: Ief4afd7cbb42188ed835fce23e497520bdb753a8\n"
    },
    {
      "commit": "966f9e558d714d9d41189e989b21e6d5fec35047",
      "tree": "91a441b9bd37150759458b5ef908271de2c18a84",
      "parents": [
        "3220d0a1dec028ae648cb4d89d7a6aa824b34225",
        "162ee49e1ce8800de80697fdd0e0e42ad7e9374e"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Apr 13 15:36:14 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 13 15:36:14 2011 -0700"
      },
      "message": "Merge \"- Add another parameter in notify() to be able to send timed text sample through listener during video playback. - Add OnTimedTextListener in the MediaPlayer For feature request 800939.\""
    },
    {
      "commit": "162ee49e1ce8800de80697fdd0e0e42ad7e9374e",
      "tree": "fb729edc49c75aa905daa34211810bd92c959f8c",
      "parents": [
        "a58ee55f490953247882298d56003cbf94285344"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Apr 11 17:23:27 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Apr 13 11:11:34 2011 -0700"
      },
      "message": "- Add another parameter in notify() to be able to send timed text sample\nthrough listener during video playback.\n- Add OnTimedTextListener in the MediaPlayer\nFor feature request 800939.\n\nChange-Id: I65072c27acb4c0037109a72be38c73e9f667420f\n"
    },
    {
      "commit": "0a47f4f711514ceb3e5f6d3ecdbc4c74f7b3bbef",
      "tree": "0e46ec1bb8cb044f590dc57cc813d7cf87ce3475",
      "parents": [
        "fda06c0cd9bf1db78adcddf11d374785c6737b61"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 13 10:21:56 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 13 10:21:56 2011 -0700"
      },
      "message": "Parcel::appendFrom({const } Parcel *parcel, size_t, size_t)\n\nAs far as I can tell \"parcel\" isn\u0027t actually modified by the implementation.\n\nChange-Id: Ib806eefdc13c97b932773e1dc9ca3a4aad4422b2\n"
    },
    {
      "commit": "fda06c0cd9bf1db78adcddf11d374785c6737b61",
      "tree": "b544b475103adec40eea25fcb90b0cecc59082eb",
      "parents": [
        "2432d1bd4828d10d97cf72f974d8312a168bb2ca",
        "e98e4c806320ccb3078805ac019cca3ed9796123"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Apr 13 01:14:42 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 13 01:14:42 2011 -0700"
      },
      "message": "Merge \"Add camera metering area API.\""
    },
    {
      "commit": "e98e4c806320ccb3078805ac019cca3ed9796123",
      "tree": "e0e45cc84870df03d44185ac6fc9658e6edfc271",
      "parents": [
        "a58ee55f490953247882298d56003cbf94285344"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Apr 12 19:34:29 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Apr 13 16:06:47 2011 +0800"
      },
      "message": "Add camera metering area API.\n\nThe API are still hidden.\n\nbug:3475893\nChange-Id: Id4147528def5e0fe067e1a3ed315fa34c14a0640\n"
    },
    {
      "commit": "461fa8b05dfb4fd334980365e27002a7520e866e",
      "tree": "19238dece6998ee2121503d18b4548163e9e2704",
      "parents": [
        "d3a6956a6d69d7399931c403cd31cb0236278fc6",
        "18490fb93e206fd899c3258096cc32f293373c92"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 12 12:51:08 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 12 12:51:08 2011 -0700"
      },
      "message": "resolved conflicts for merge of 18490fb9 to master\n\nChange-Id: I6c68e6fb0f9c1182a955689bbffc161a8f30bd37\n"
    },
    {
      "commit": "18490fb93e206fd899c3258096cc32f293373c92",
      "tree": "e45db3abacf59a0cba4604cde390c310e38e4153",
      "parents": [
        "0b9b8711a1a2107dc913cc751b7d981fce4f3082",
        "87b3c0dcc45223ff9d5ab2e39d7b9a6953e03f50"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 12 10:27:15 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 12 10:27:15 2011 -0700"
      },
      "message": "resolved conflicts for merge of 87b3c0dc to honeycomb-plus-aosp\n\nChange-Id: Ia1a0024aabf531438203eb9fea3a10dd15eabe53\n"
    },
    {
      "commit": "27cd07ca8006fd80d85379ada416874bfa78aa88",
      "tree": "b84ecf49433b440242072cc186ba6944c7b372b7",
      "parents": [
        "7797e647fc8fcd5091b9449c0044f5cb70db5b47"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 11 21:19:55 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 11 21:19:55 2011 -0700"
      },
      "message": "changes to SurfaceTexture needed for unification with SF\n\n- implement connect/disconnect\n- implement missing query\n- handle texture_2d in addition to texture_external_oes\n\nChange-Id: I971a70821f00f22b01f5337de4a7d451177fec4d\n"
    },
    {
      "commit": "a3804cf77f0edd93f6247a055cdafb856b117eec",
      "tree": "795814e56ceddf3773f7f2b47bb7a6b632daa5d5",
      "parents": [
        "4123211637dcc0155091016f0c0987b80e56ab7b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 11 16:50:19 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 11 17:04:01 2011 -0700"
      },
      "message": "You don\u0027t need to poke around inside FileDescriptor manually.\n\nWe can help you with that.\n\nNote also that getParcelFileDescriptorFD did no such thing. All its callers\nwere passing in a regular java.io.FileDescriptor and expecting the int. No\nParcelFileDescriptors involved.\n\nChange-Id: Idc233626f20c092e719f152562601f406cc1b64a\n"
    },
    {
      "commit": "87b3c0dcc45223ff9d5ab2e39d7b9a6953e03f50",
      "tree": "8c64414e6f079c9511163657f200d2ee132309f4",
      "parents": [
        "4430670f48f75661293371dab8db55865f5f56e0",
        "08d9d9a46250c4fad66e9b637e8898a3524c4286"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@android.com",
        "time": "Mon Apr 11 15:33:19 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 11 15:33:19 2011 -0700"
      },
      "message": "am 08d9d9a4: Merge \"Runtime resource overlay, iteration 1.\"\n\n* commit \u002708d9d9a46250c4fad66e9b637e8898a3524c4286\u0027:\n  Runtime resource overlay, iteration 1.\n"
    },
    {
      "commit": "5f05f99aaedaba18c426fac287bcb18d56dbe881",
      "tree": "791dab7fb51fb0e49663e9af9f8ac9f44f9242ec",
      "parents": [
        "7797e647fc8fcd5091b9449c0044f5cb70db5b47"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 08 19:10:43 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 08 19:28:04 2011 -0700"
      },
      "message": "Fix a GraphicBuffer leak in SurfaceTexture\n\nThis leak was intentional, it was there to deal with the fact that\nsome gralloc implementations don\u0027t track buffer handles with\nfile-descriptors so buffers needed to stay alive until there were\nregistered, which is not guaranteed by binder transactions.\n\nIn this new implementation, we use a small BBinder holding a\nreference to the buffer, which with tuck into the parcel. This forces\nthe reference to stay alive until the parcel is destroyed, which\nis guaranteed (by construction) to happen after the buffer is\nregistered.\n\nthis allows the public facing API to not expose the previous hack.\n\nChange-Id: I1dd6cd83679a2b7457ad628169e2851acc027143\n"
    },
    {
      "commit": "30771b773393596812b6cfd2a4ddf490c43437aa",
      "tree": "99c0fb52730bf00be95a0259363e86ef2c0e7304",
      "parents": [
        "43a17654cf4bfe7f1ec22bd8b7b32daccdf27c09"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sat Apr 02 06:19:46 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Apr 08 17:45:15 2011 +0800"
      },
      "message": "Add camera focus area API.\n\nThe API are still hidden.\n\nbug:3475893\n\nChange-Id: I92405c9e332b7fb141788cda7ebc9705dd666c67\n"
    },
    {
      "commit": "85b65f2008e7eb8ef492a63cba80555f58915769",
      "tree": "54a9c8a8d30449bc6fbebbac3da25a6518c4873f",
      "parents": [
        "59ad81e19bf8312d4abb5f1b754502a750568be5",
        "ed0079ddddd4070f3369b13b274222da2e69f4b9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 06 13:03:11 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 06 13:03:11 2011 -0700"
      },
      "message": "Merge \"Miscellaneous code cleanup in audio framework\""
    },
    {
      "commit": "59ad81e19bf8312d4abb5f1b754502a750568be5",
      "tree": "becf5105fe408407552f78d4396b8547f7ef494e",
      "parents": [
        "5a4fb5c735f82b26eb9a9da589856dc877e208c8",
        "c8a04b536bb8ad12a87e6dd68d66cff1e7fcd7e7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 06 12:22:29 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 06 12:22:29 2011 -0700"
      },
      "message": "Merge \"remove more unused references to ISurface\""
    },
    {
      "commit": "5a4fb5c735f82b26eb9a9da589856dc877e208c8",
      "tree": "363cb2eda9a714d6010f6c42eec077ddbb63091f",
      "parents": [
        "e4e551e0ffb1113984ed0ae0264a54e9c8289f8d",
        "fb96b5ece35ed3c0f3e682d1f9864d7700fe63fc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 06 12:22:01 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 06 12:22:01 2011 -0700"
      },
      "message": "Merge \"Remove unused references to ISurface\""
    },
    {
      "commit": "3fc982f41fda1f254bfbc35490d81cd82a0ed90a",
      "tree": "6f9ba92dc2c9001a156f298c37dcdef9c9552600",
      "parents": [
        "fb84ce0df6b2db84981e4efa4530397a85240d4a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 30 16:20:26 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 06 11:00:37 2011 -0700"
      },
      "message": "Add new resource configurations for screen width/height in \"dp\".\n\nYou can now specify resource configuration variants \"wNNNdp\"\nand \"hNNNdp\".  These are the minimum screen width/height in \"dp\"\nunits.  This allows you to do things like have your app adjust\nits layout based only on the about of horizontal space available.\n\nThis introduces a new configuration change flag for screen size.\nNote that this configuration change happens each time the orientation\nchanges.  Applications often say they handle the orientation change\nto avoid being restarted at a screen rotation, and this will now\ncause them to be restarted.  To address this, we assume the app can\nhandle this new config change if its target SDK version is \u003c ICS.\n\nChange-Id: I22f8afa136b4f274423978c570fa7c9855040496\n"
    },
    {
      "commit": "ed0079ddddd4070f3369b13b274222da2e69f4b9",
      "tree": "ead156e5b8cbc905126d3e805d813088cdd3a5ff",
      "parents": [
        "9f4ef02aef8f3cc1969f83f59a9be40f1ff71625"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 04 10:50:50 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 06 10:24:18 2011 -0700"
      },
      "message": "Miscellaneous code cleanup in audio framework\n\nChanges:\n - Move declaration of kClassPathName to top of file so it can be used\n   in more than one place, instead of \"android/media/AudioSystem\".\n - Make private methods static.\n - Add comment to stream_type, audio_mode, force_use types that they must match\n   values in AudioSystem.java.\n - Add comment about unused types mp3_sub_format and vorbis_sub_format.\n - Fix typos.\n - Use @ in javadoc comments.\n - Delete dead APIs setMode, getMode, setRouting, getRouting in AudioSystem.java\n   (they are all hidden, deprecated, and unused by rest of framework)\n - Delete unused private log method.\n - Fix pathname for android_media_AudioSystem.cpp.\n - Improve code formatting for space after \u003d\u003d and !\u003d.\n - Add logging of delta for changing audio policy manager ref count.\n\nChange-Id: I18037c7beb8ab76d1fda08c11e589f6e591d36e1\n"
    },
    {
      "commit": "c8a04b536bb8ad12a87e6dd68d66cff1e7fcd7e7",
      "tree": "8e8018a9898f9785eeef5e8484c93d51cee4f052",
      "parents": [
        "fb96b5ece35ed3c0f3e682d1f9864d7700fe63fc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 05 15:44:20 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 05 20:11:55 2011 -0700"
      },
      "message": "remove more unused references to ISurface\n\nChange-Id: I2201f1ca2bb8f203a081d94a0134f798778dfbef\n"
    },
    {
      "commit": "ae29b7632ecf2068698c0d121cff284dcc82f4ec",
      "tree": "c8193b55997aa1f605a8c80acc76b0b21d101e4e",
      "parents": [
        "42bc0e946f8b986fb3aaada9980b496172e2b511"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 28 18:37:07 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 05 12:05:41 2011 -0700"
      },
      "message": "New fix for issue 4111672: control block flags\n\nThe first fix (commit 913af0b4) is problematic because it makes threads\nin mediaserver process block on the cblk mutex. This is not permitted\nas it can cause audio to skip or worse have a malicious application\nprevent all audio playback by keeping the mutex locked.\n\nThe fix consists in using atomic operations when modifying the control\nblock flags.\n\nAlso fixed audio_track_cblk_t::framesReady() so that it doesn\u0027t block\nwhen called from AudioFlinger (only applies when a loop is active).\n\nChange-Id: Ibf0abb562ced3e9f64118afdd5036854bb959428\n"
    },
    {
      "commit": "fb96b5ece35ed3c0f3e682d1f9864d7700fe63fc",
      "tree": "5609397f8d47537df2d8a852b1390ad13fd02476",
      "parents": [
        "756484c2bb110c7c2155e41b6f51672ecc638a23"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 04 21:09:55 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 04 21:09:55 2011 -0700"
      },
      "message": "Remove unused references to ISurface\n\nChange-Id: I542806b5c91c525ed7cde821f6963f1e020ddf1a\n"
    },
    {
      "commit": "756484c2bb110c7c2155e41b6f51672ecc638a23",
      "tree": "a89dabf3f14bc93f1727b8c2dea76499039ab9ba",
      "parents": [
        "9aa26ee3bc47170e0bebef8df48c6199ca147c3c",
        "e5a1bffd9106b1d82259de1a202e1f2f28742392"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 01 14:58:43 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 01 14:58:43 2011 -0700"
      },
      "message": "Merge \"SurfaceTexture can now force the client to request a buffer\""
    },
    {
      "commit": "e5a1bffd9106b1d82259de1a202e1f2f28742392",
      "tree": "5db6b7eb4b1b32395aae1950e2bcec1c6a80fd4d",
      "parents": [
        "616fb9a38a5b558b1245b0e7f6dc0c4e5ef1a985"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 31 19:10:24 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 01 14:43:35 2011 -0700"
      },
      "message": "SurfaceTexture can now force the client to request a buffer\n\nSurfaceTexture now has the concept of default size a new method,\nsetDefaultBufferSize() to set it. When the default size is\nchanged, dequeueBuffer() will return a value telling the\nclient that it must ask for a new buffer.\n\nThe above only applies if the client has not\noverriden the buffer size with setGeometry.\n\nChange-Id: I520dc40363054b7e37fdb67d6a2e7bce70326e81\n"
    },
    {
      "commit": "bc2278b95f4012d81918b0faedea36011f122a33",
      "tree": "8836705e54192c71efac8c72a36efa36692b13c6",
      "parents": [
        "165121f64acb8ebd0f1b955684360477c71660d3",
        "21bc5c917d4ee2a9b2b8173091e6bba85eaff899"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 01 12:56:35 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 01 12:56:35 2011 -0700"
      },
      "message": "Merge \"Add a little input event consistency verifier.\""
    },
    {
      "commit": "57f4b77c89bafedf9468f9a636561c0c193405c9",
      "tree": "9e73065411411858c9c6ae350c5ee8ffe14598c3",
      "parents": [
        "c6b22e2727bd3730edd5ad72831a9bb4670d00f3"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sonyericsson.com",
        "time": "Thu Mar 17 14:13:41 2011 +0100"
      },
      "committer": {
        "name": "Kenneth Andersson",
        "email": "kenneth.andersson@sonyericsson.com",
        "time": "Fri Apr 01 14:12:10 2011 +0200"
      },
      "message": "Runtime resource overlay, iteration 1.\n\nRuntime resource overlay allows unmodified applications to appear\nas if they had been compiled with additional resources defined. See\nlibs/utils/README for more information.\n\nThis commit is the first iteration of runtime resource overlay. It\nprovides the actual overlay modifications and loading of trusted overlay\npackages (ie residing in /vendor) targeting framework-res.apk.\n\nThis commit loads exactly one overlay package. The overlay,\nif present, must target framework-res.apk and be located at\n/vendor/overlay/framework/framework-res.apk.\n\nChange-Id: If26ee7754813004a96c043dba37fbe99fa3919db\n"
    },
    {
      "commit": "21bc5c917d4ee2a9b2b8173091e6bba85eaff899",
      "tree": "f62d92d00808b53244fd6ae31f5efd58e3f08a02",
      "parents": [
        "0029c66203ab9ded4342976bf7a17bb63af8c44a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 28 18:27:14 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Mar 31 19:57:00 2011 -0700"
      },
      "message": "Add a little input event consistency verifier.\n\nThe idea is to assist with debugging by identifying cases in which\nthe input event stream is corrupted.\n\nChange-Id: I0a00e52bbe2716be1b3dfc7c02a754492d8e7f1f\n"
    },
    {
      "commit": "64802ca780563e2bd715a300e0bb81eec643baf0",
      "tree": "61462a8c74f56deeab509fcb4ea441a35dc18044",
      "parents": [
        "7b445dd7c0814a39eaf912fa1a871f00d5190550",
        "c6b22e2727bd3730edd5ad72831a9bb4670d00f3"
      ],
      "author": {
        "name": "Russell Brenner",
        "email": "russellbrenner@google.com",
        "time": "Thu Mar 31 18:55:26 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 31 18:55:26 2011 -0700"
      },
      "message": "am c6b22e27: Updated JBQ\\\u0027s original SurfaceTexture stubs to make webkit MR1 buildable\n\n* commit \u0027c6b22e2727bd3730edd5ad72831a9bb4670d00f3\u0027:\n  Updated JBQ\u0027s original SurfaceTexture stubs to make webkit MR1 buildable\n"
    },
    {
      "commit": "7b445dd7c0814a39eaf912fa1a871f00d5190550",
      "tree": "36c558dbd3b40c2c97a6d3a8c0e6b77ed81e48c4",
      "parents": [
        "b98967942e9a764b80abc8ff1c6f6f2d620c0f7a",
        "49b49f8fb6d094768d4e093353b34271f2da1bfc"
      ],
      "author": {
        "name": "Russell Brenner",
        "email": "russellbrenner@google.com",
        "time": "Thu Mar 31 18:55:20 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 31 18:55:20 2011 -0700"
      },
      "message": "am 49b49f8f: Added include/private/hwui/DrawGlInfo.h\n\n* commit \u002749b49f8fb6d094768d4e093353b34271f2da1bfc\u0027:\n  Added include/private/hwui/DrawGlInfo.h\n"
    },
    {
      "commit": "c6b22e2727bd3730edd5ad72831a9bb4670d00f3",
      "tree": "b89a7011504b3c751cfbcbeefb923bb753e19295",
      "parents": [
        "49b49f8fb6d094768d4e093353b34271f2da1bfc"
      ],
      "author": {
        "name": "Russell Brenner",
        "email": "russellbrenner@google.com",
        "time": "Thu Mar 31 17:32:20 2011 -0700"
      },
      "committer": {
        "name": "Russell Brenner",
        "email": "russellbrenner@google.com",
        "time": "Thu Mar 31 17:40:08 2011 -0700"
      },
      "message": "Updated JBQ\u0027s original SurfaceTexture stubs to make webkit MR1 buildable\n\nChange-Id: If1c1610efcc0e0bc6de88c75712baed91624b1a7\n"
    },
    {
      "commit": "49b49f8fb6d094768d4e093353b34271f2da1bfc",
      "tree": "8c5b36f17c5d902f6d913fd3ad07bd2fd4872eda",
      "parents": [
        "ad663d8040ddd4f3e537117847f20d42797b429e"
      ],
      "author": {
        "name": "Russell Brenner",
        "email": "russellbrenner@google.com",
        "time": "Thu Mar 31 13:20:52 2011 -0700"
      },
      "committer": {
        "name": "Russell Brenner",
        "email": "russellbrenner@google.com",
        "time": "Thu Mar 31 13:20:52 2011 -0700"
      },
      "message": "Added include/private/hwui/DrawGlInfo.h\n\nChange-Id: If50ccabb8761a994fa1f7aef4fbdb668c6160b0c\n"
    },
    {
      "commit": "e028290d01b730b30df0dd4653f8e1c5d987b6f4",
      "tree": "ae997b32318265dd832e81ade72f44f0e0b9eec1",
      "parents": [
        "a3869525289b9490a24e72673d3b3168ce6424d1",
        "0029c66203ab9ded4342976bf7a17bb63af8c44a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 30 17:20:56 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 30 17:20:56 2011 -0700"
      },
      "message": "Merge \"Add input filter mechanism for accessibility.\""
    },
    {
      "commit": "0029c66203ab9ded4342976bf7a17bb63af8c44a",
      "tree": "a0d5f54ff6f88dae18179d1621dd2c87f1fa8d27",
      "parents": [
        "6e6cd7a5660af1a4b5a9ad091c41ef1c72ad2000"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 30 02:25:18 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 30 16:55:15 2011 -0700"
      },
      "message": "Add input filter mechanism for accessibility.\n\nThis patch adds a mechanism for capturing, filtering, transforming\nand injecting input events at a very low level before the input\ndispatcher attempts to deliver them to applications.  At this time,\nthe mechanism is only intended to be used by the accessibility\nsystem to implement built-in system-level accessibility affordances.\n\nThe accessibility input filter is currently just a stub.\nIt logs the input events receives and reinjects them unchanged,\nexcept that it transforms KEYCODE_Q into KEYCODE_Z.\n\nCurrently, the accessibility input filter is installed whenever\naccessibility is enabled.  We\u0027ll probably want to change that\nso it only enables the input filter when a screen reader is\ninstalled and we want touch exploration.\n\nChange-Id: I35764fdf75522b69d09ebd78c9766eb7593c1afe\n"
    },
    {
      "commit": "a51e9fd53da8aee399e592a4e0f79332e6bf8239",
      "tree": "2b31bcf5e3774cb97359c93feded3a919ee6ae37",
      "parents": [
        "790ac975d2dec3340f2e564b7ed356a1ec4a6412",
        "2c341907027dd2cd55f09b0b90a224b159233477"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 30 15:30:39 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 30 15:30:39 2011 -0700"
      },
      "message": "Merge \"Revert \"retire android_native_window_t\"\""
    },
    {
      "commit": "2c341907027dd2cd55f09b0b90a224b159233477",
      "tree": "8a4c8318f7b3f516fbdab72de452966238cb380d",
      "parents": [
        "a3cbe69ae693004b2fa459d95578b4b3189c86fb"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 30 15:28:21 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 30 15:28:21 2011 -0700"
      },
      "message": "Revert \"retire android_native_window_t\"\n\nthis type is still used by partner\u0027s source trees.\nwe will get rid of it in next release\u0027s timeframe.\n\nThis reverts commit 7b49b976277cb3538242151e7dbd24681ddec73e.\n"
    }
  ],
  "next": "cabb7da7125a80c55233bd23959327424e9646cc"
}
