)]}'
{
  "log": [
    {
      "commit": "2d817f75969cf3942ae3bcb9d194b9c095288dc7",
      "tree": "4e575bd35a1ba634708e84341d9a8b19b7f84c17",
      "parents": [
        "7d146197873e9bd5c1618a4ae10bcd13c821e1ce"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 04 16:30:40 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 04 16:53:56 2010 -0700"
      },
      "message": "Free scanBuf in ZipFileRO\n\nIn the success case, the 65kB scanBuf was not freed!\n\nAlso, get rid of annoying complaints about ssize_t from printf in error\ncases.\n\nChange-Id: If154ac19bf47637f898b4ec8c8e27c9a073a7b81\n"
    },
    {
      "commit": "466b22b76e438b3419cedbe782ab71b8ade18260",
      "tree": "c407a0750d7a221815fbf07087ec3173a0250587",
      "parents": [
        "6dea6f4e71b53e421564d783c227cbe0a2469183"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 29 13:16:38 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 29 13:42:45 2010 -0700"
      },
      "message": "Attempt to fix the SDK build\n\nOn the assumption that the local min() function declaration is in\nconflict with some \u0027min\u0027 #define floating around, rename the local\nfunction to min_of().\n\nChange-Id: I62aa27f213c6093cc78805de611cf4aa75f0eef2\n"
    },
    {
      "commit": "a4879bad704981da014206380eca93163f4c5a2b",
      "tree": "43ba2e498263f9901d449f473aa53f3f5ee954e3",
      "parents": [
        "e30de4e6a312aa921633d119f2518f4b07a7effa"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:46:12 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:46:12 2010 -0700"
      },
      "message": "Change unistd.h to stddef.h to be correct\n\nsize_t should be defined through inclusion of stddef.h instead of unistd.h\n\nChange-Id: Ieaadacfca1e1c44c2533ea95f73fc060c1519b52\n"
    },
    {
      "commit": "9d90ed71ccf45bc1e422ee2abc9acf0a806b9319",
      "tree": "388949d378d71236471652b5f26d6f6f73580e6c",
      "parents": [
        "bae6fe242ff9a97840ff0c5d9d87c0575d261682"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:31:24 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:31:24 2010 -0700"
      },
      "message": "Add unistd.h for size_t typedef to fix sim-eng\n\nChange-Id: Ida4f1742547f39539b601f13182c722aa7cf863e\n"
    },
    {
      "commit": "b100cbf178e91d6652ebbad3ed36684cacb9d10e",
      "tree": "acb386c8adee2d0390193fc631f841f8d76ea5d7",
      "parents": [
        "0c39b6c65bcb96ed6438c7d792a67708409d8f0f"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jul 26 11:24:18 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jul 28 15:33:28 2010 -0700"
      },
      "message": "Support streaming of compressed assets \u003e 1 megabyte\n\nCompressed assets larger than one megabyte are now decompressed on demand\nrather than being decompressed in their entirety and held in memory.  Reading\nthe data in order is relatively efficient, as is seeking forward in the stream.\nSeeking backwards is supported, but requires reprocessing the compressed data\nfrom the beginning, so is very inefficient.\n\nIn addition, the size limit on compressed assets has been eliminated.\n\nChange-Id: I6e68247957e6c53e7e8ba70d12764695f1723bad\n"
    },
    {
      "commit": "e33348ba54cd68d6936cffd4507037c14d4b10c2",
      "tree": "1429dd836a48b3f49ee2a27623ff47b5c272c827",
      "parents": [
        "bd623daff1f261a0e794f059d90ba5907eb5a89a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 15 23:54:05 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 16 00:02:48 2010 -0700"
      },
      "message": "Fix bug with phantom input windows.\n\nAdd dumpsys integration for the native input dispatcher.\nAdd some InputDevice API stubs.\nAdd an appendFormat helper method to String8 for printf style\nstring formatting mainly for debugging purposes.\nUse generic ArrayList\u003cWindowState\u003e everywhere in WindowManagerService\nto eliminate unnecessary casts all over.\n\nChange-Id: I9d1e3bd90eb7222d10620200477f11b7bfd25e44\n"
    },
    {
      "commit": "eb6e0df18a6567d38caa039ba0b0e49e2e9b46c3",
      "tree": "b2250fd3fcb9f7171b0066b03f47aa08415bb550",
      "parents": [
        "c98e431119867dbc4ae3da52d5c374607c0f67b9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 14 22:40:08 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 14 22:55:02 2010 -0700"
      },
      "message": "Don\u0027t build framework tests for simulator target.\n\nChange-Id: I70f29c7eb307e4f3ec5702f4eb9d97b4342e2f36\n"
    },
    {
      "commit": "fd03582995e0fce963dd0fa0669e3211b74c0dd7",
      "tree": "8f7fe0e2a437620a7cbe4e494f71fe8ccfdbe2eb",
      "parents": [
        "c0a7e690bfd32dd897ceccd04dd0fa6bf6e9cee6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 30 16:10:35 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jul 13 17:04:57 2010 -0700"
      },
      "message": "Add initial gamepad support.\n\nChange-Id: I0439648f6eb5405f200e4223c915eb3a418b32b9\n"
    },
    {
      "commit": "87bb18579a5eea2e24af78af8c0f54f5455ce8fd",
      "tree": "4538368088979c951572d317c7b9af696194c25a",
      "parents": [
        "faccac7616795859af257777900db514d425a106",
        "87315aa1f0b64efcef416628215be89851cc4736"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jul 12 11:18:34 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 12 11:18:34 2010 -0700"
      },
      "message": "Merge changes I2337051b,I19b426cb into gingerbread\n\n* changes:\n  Tweak ObbFile class\n  Allow things that can install packages to set Obb paths\n"
    },
    {
      "commit": "87315aa1f0b64efcef416628215be89851cc4736",
      "tree": "e7000fef6bfe18391398e4cd04399054f3a0c18e",
      "parents": [
        "e059b2784fcc89c6cd43301cc6af89cf3b8101f7"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jul 12 09:02:18 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jul 12 09:11:24 2010 -0700"
      },
      "message": "Tweak ObbFile class\n\n* Move error messages around to clarify the errors.\n\n* Add extra error check when reading a file.\n\n* Seek to the end of a file when writing the signature so the users of\n  the API don\u0027t have to remember to do it.\n\nChange-Id: I2337051b9f9fa8147c5900237deec790dcd92436\n"
    },
    {
      "commit": "85448bbecd4e0909eecfab15b7c3605f114d0427",
      "tree": "3380a9a85e321dc7ee4397dc1b4f22564af117d8",
      "parents": [
        "f7d2b4a2e096ae1f8ac3a2ed8b2f0e30a237f732"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 07 14:27:31 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 08 11:06:59 2010 -0700"
      },
      "message": "Add new glue code for writing native apps.\n\nThis factors out the boiler-plate code from the sample\napp to a common glue code that can be used for everyone\nwriting this style of app: a dedicated app thread that\ntakes care of waiting for events and processing them.\n\nAs part of doing this, ALooper has a new facility to allow\nregistration of fds that cause ALooper_pollOnce() to return\nthe fd that has data, allowing the app to drive the loop\nwithout callbacks.  Hopefully this makes some people feel better. :)\n\nAlso do some other cleanup of the ALooper API, plus some\nactual documentation.\n\nChange-Id: Ic53bd56bdf627e3ba28a3c093faa06a92be522b8\n"
    },
    {
      "commit": "7cee34a051eb0087322c8b965e498f88b1aa52d3",
      "tree": "08bb1d6c8850bb688b4eddf7e1a24888719b5e52",
      "parents": [
        "2e6aff8e19ce8292a36fe211f8051dccf1fb9670"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Jun 01 10:34:29 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 07 09:57:50 2010 -0700"
      },
      "message": "Add OBB file helper class\n\nObbFile is a binary blob that will be used in packaging large files\nwith smaller APKs.\n\nChange-Id: Ib1594346cfa2f49113de6565af77c24efbd89d63\n"
    },
    {
      "commit": "682674154e3fe88f6061245145f934f25f1a2eb8",
      "tree": "a105ce9f0ae4d88732bfc8fb1a52d4474f17bc86",
      "parents": [
        "8ecfb60a8e74dfcd51bbf3f236d5f414a4d5ac7d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 02 18:52:01 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 02 18:57:02 2010 -0700"
      },
      "message": "Add new native Looper API.\n\nThis allows us to avoid exposing the file descriptor of\nthe event queue; instead, you attach an event queue to\na looper.  This will also should allow native apps to be\nwritten without the need for a separate thread, by attaching\nthe event queue to the main thread\u0027s looper and scheduling\ntheir own messages there.\n\nChange-Id: I38489282635895ae2cbfacb88599c1b1cad9b239\n"
    },
    {
      "commit": "5c225b1680e696ae8bbf505a1997d6f720672f74",
      "tree": "932326fd02ee91d8a64adfcc9415027646c56563",
      "parents": [
        "3a0146cd29fae3c5bc29d8d535d67826284f8cc9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 16 01:53:36 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jun 17 13:27:16 2010 -0700"
      },
      "message": "Even more native input dispatch work in progress.\n\nAdded more tests.\nFixed a regression in Vector.\nFixed bugs in pointer tracking.\nFixed a starvation issue in PollLoop when setting or removing callbacks.\nFixed a couple of policy nits.\n\nModified the internal representation of MotionEvent to be more\nefficient and more consistent.\n\nAdded code to skip/cancel virtual key processing when there are multiple\npointers down.  This helps to better disambiguate virtual key presses\nfrom stray touches (such as cheek presses).\n\nChange-Id: I2a7d2cce0195afb9125b23378baa94fd2fc6671c\n"
    },
    {
      "commit": "f1d3802ea2e0c68f3f6e7524c2450379aae670a8",
      "tree": "09f253a46061d984df1e08f1f69300878698536c",
      "parents": [
        "7e900cbf1d600a8895e63a0247f45c116ff05172"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 14 15:44:41 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jun 14 15:46:08 2010 -0700"
      },
      "message": "Support for multiple tests\n\nThe build system enforces some invariants that were being ignored\nbefore.\n\nChange-Id: Ie7675042af7f961a507386c13b2a0b592b591af8\n"
    },
    {
      "commit": "d890cbf700695c869e6b45cddf7f132484697588",
      "tree": "c9a77409aa8525c35cd1d00e3e7d819b3fef95fa",
      "parents": [
        "43a9527c54b71cb17515591af37eeeef6c22e3ff"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 20:21:19 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 20:21:19 2010 -0700"
      },
      "message": "Remove PollLoop from host build.\n\nWe can\u0027t build (and we don\u0027t need) PollLoop in the SDK on all platforms.\n\nChange-Id: I3b0f327bbb8bc58b9b8630b0161cf360403fea68\n"
    },
    {
      "commit": "46b9ac0ae2162309774a7478cd9d4e578747bfc2",
      "tree": "46ad021a41e25ca9f1250b709a29b724dc6b504d",
      "parents": [
        "f62c57d684b83df7d2817db976c0afdb500ae92a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 22 18:58:52 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 17:42:16 2010 -0700"
      },
      "message": "Native input dispatch rewrite work in progress.\n\nThe old dispatch mechanism has been left in place and continues to\nbe used by default for now.  To enable native input dispatch,\nedit the ENABLE_NATIVE_DISPATCH constant in WindowManagerPolicy.\n\nIncludes part of the new input event NDK API.  Some details TBD.\n\nTo wire up input dispatch, as the ViewRoot adds a window to the\nwindow session it receives an InputChannel object as an output\nargument.  The InputChannel encapsulates the file descriptors for a\nshared memory region and two pipe end-points.  The ViewRoot then\nprovides the InputChannel to the InputQueue.  Behind the\nscenes, InputQueue simply attaches handlers to the native PollLoop object\nthat underlies the MessageQueue.  This way MessageQueue doesn\u0027t need\nto know anything about input dispatch per-se, it just exposes (in native\ncode) a PollLoop that other components can use to monitor file descriptor\nstate changes.\n\nThere can be zero or more targets for any given input event.  Each\ninput target is specified by its input channel and some parameters\nincluding flags, an X/Y coordinate offset, and the dispatch timeout.\nAn input target can request either synchronous dispatch (for foreground apps)\nor asynchronous dispatch (fire-and-forget for wallpapers and \"outside\"\ntargets).  Currently, finding the appropriate input targets for an event\nrequires a call back into the WindowManagerServer from native code.\nIn the future this will be refactored to avoid most of these callbacks\nexcept as required to handle pending focus transitions.\n\nEnd-to-end event dispatch mostly works!\n\nTo do: event injection, rate limiting, ANRs, testing, optimization, etc.\n\nChange-Id: I8c36b2b9e0a2d27392040ecda0f51b636456de25\n"
    },
    {
      "commit": "62a2aa01528e70c63aef60a6f48929da5a06761a",
      "tree": "605561d8fddc392de300c72b5acd95a410f535ae",
      "parents": [
        "66b89a62aa6d5599ad4d11d891b5028587d4c6be"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:14:26 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:25:51 2010 -0700"
      },
      "message": "Fix String8 to free its memory only after assignment operations based on pointers are finished in case that pointer referred to the string\u0027s original contents.\n\nChange-Id: I6961f3cf10ba3b728579ea63262db750a4cf8577\n"
    },
    {
      "commit": "68246dcec17c245a434dad70b778960dc5c84af1",
      "tree": "00aaacdfd3147c87c0d0d4761817a797e7af346a",
      "parents": [
        "dc3e26071399789c5966b9cd67180437f44eb9dd"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Apr 22 18:28:29 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed May 12 05:07:48 2010 -0700"
      },
      "message": "ZipUtilsRO rewrite based on Dalvik Zip rewrite\n\nChange the way zip archives are handled.  This is necessary to deal with\nvery large (~1GB) APK files, for which our current approach of mapping\nthe entire file falls over.\n\nWe now do the classic scavenger hunt for the End Of Central Directory\nmagic on a buffer of data read from the file, instead of a memory-mapped\nsection.  We use what we find to create a map that covers the Central\nDirectory only.\n\nIf the caller is interested in unpacking the file contents, we have to\ndo an additional file read to discover the size of the Local File Header\nsection so we can skip past it.\n\nThis is based on Change I745fb15abb in the dalvik tree. Both\nimplementations share a common ancestry, but the cost of unifying them\noutweighs the benefits of wrapping C calls.\n\nChange-Id: Iddacb50fe913917c2845708a530872d65fdbe620\n"
    },
    {
      "commit": "a269d195d41ced934d2153fd81fa69ffe7854740",
      "tree": "cbfe9a5b063aa4aa860f4c2e3e26f1acde99780b",
      "parents": [
        "94886d9774d11b8bc93e56103d2f0ab61458ada0",
        "ca48c88c3d5733c4405a2fc4f7d9bb7fbba3d43f"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu May 06 17:35:06 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 06 17:35:06 2010 -0700"
      },
      "message": "am ca48c88c: am 8a8658a5: Merge \"Make static versions of libutils and libbinder.\" into froyo\n\nMerge commit \u0027ca48c88c3d5733c4405a2fc4f7d9bb7fbba3d43f\u0027 into kraken\n\n* commit \u0027ca48c88c3d5733c4405a2fc4f7d9bb7fbba3d43f\u0027:\n  Make static versions of libutils and libbinder.\n"
    },
    {
      "commit": "08b3d2e5ef01a5114424a871934dd9fc153352c0",
      "tree": "7768ecd2c0308f149cb8abb1746a0e7bc1bdae8b",
      "parents": [
        "df7ccbc8ff0d93a708a7fa1e57469d3f93ceda5c"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu May 06 00:55:09 2010 -0700"
      },
      "committer": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu May 06 01:03:31 2010 -0700"
      },
      "message": "Make static versions of libutils and libbinder.\n\nFix some small static-initialization-order issues (and a static-\ninitializers-missing issue) that result from doing so.  The static\nlibraries don\u0027t actually get used for anything real at the moment --\nthey\u0027re used for perf tests of bug 2660235.\n\nBug: 2660235\nChange-Id: Iee2f38f79cc93b395e8d0a5a144ed92461f5ada0\n"
    },
    {
      "commit": "14cee9f688c32d63d8521188e7422811629bb7c2",
      "tree": "16c2f2356519a2552bb3b7e2b1de6735793c4b1a",
      "parents": [
        "3fd6419fe542c4ecb8e838d1754a83ce8591b288"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 23 17:51:26 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 28 16:51:52 2010 -0700"
      },
      "message": "New xlarge screen size.\n\nNot complete, only for experimentation at this point.\n\nThis includes a reworking of how screen size configurations are matched,\nso that if you are on a larger screen we can select configurations for\nsmaller screens if there aren\u0027t any exactly matching the current screen.\n\nThe screen size at which we switch to xlarge has been arbitrarily\nchosen; the compatibility behavior has not yet been defined.\n\nChange-Id: I1a33b3818eeb51a68fb72397568c39ab040a07f5\n"
    },
    {
      "commit": "966fcb81eece9096040ccc185bb662335d3964cf",
      "tree": "49aa93b937e099258601e4c1d2566d4144650704",
      "parents": [
        "544592e14f8d7643238e40ba9879727497900f35"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 30 21:04:17 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 30 21:04:17 2010 -0700"
      },
      "message": "Revert \"fix [2542425] memory leak during video recording\"\n\nThis reverts commit 544592e14f8d7643238e40ba9879727497900f35.\n"
    },
    {
      "commit": "544592e14f8d7643238e40ba9879727497900f35",
      "tree": "2c0dcab787aa99c58d3af4b4b1fd2b1aa912b86b",
      "parents": [
        "77c560f3d7891d9ae1ad714b5f65a22ff4f4c06b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 30 16:53:40 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 30 19:02:59 2010 -0700"
      },
      "message": "fix [2542425] memory leak during video recording\n\n[Sorted|Keyed]Vector\u003cTYPE\u003e would leak their whole storage when resized\nfrom the end and TYPE had trivial dtor and copy operators.\n\nChange-Id: I8555bb1aa0863df72de27d67ae50e20706e90cf5\n"
    },
    {
      "commit": "d74145285373193af8584ac86ee73c7aea3e1600",
      "tree": "6fcc000c7634f82eab97b860ebc171856d4f2023",
      "parents": [
        "9c3cee9824026764275e4d84ba9b5d9fdc5da690"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 29 13:45:18 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 29 13:45:18 2010 -0700"
      },
      "message": "fix [2542425] memory leak during video recording\n\nVector::sort() is using _do_copy() incorrectly; _do_copy() calls the\ncopy constructor, not the assignment operator, so we need to destroy\nthe \"destination\" before copying the item.\n\nChange-Id: Iaeeac808fa5341a7d219edeba4aa63d44f31473c\n"
    },
    {
      "commit": "cf244ada58539ce857ec041d7288d0271204fbb6",
      "tree": "ec16084d19a3b0c0e43e11dd276fbe7c6a6813c5",
      "parents": [
        "ae58f6d7473c67d76b6c6373794fd1a77543ddb4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 09 15:00:30 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 09 17:18:05 2010 -0800"
      },
      "message": "Add ability for some manifest attributes to reference resources.\n\nThis loosens our restriction on many manifest attributes requiring\nliteral string values, to allow various ones to use values from\nresources.  This is only allowed if the resource value does not change\nfrom configuration changes, and the restriction is still in place\nfor attributes that are core to security (requesting permissions) or\nmarket operation (used libraries and features etc).\n\nChange-Id: I4da02f6a5196cb6a7dbcff9ac25403904c42c2c8\n"
    },
    {
      "commit": "20cb56e26e91df91bd64d4251222e0d421cdbe47",
      "tree": "17f4e6b033d060bd4745fd6a2ac38ada2e35897f",
      "parents": [
        "89d6d00a8b015e97f6bf8ca9fa9203402c15aa00"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Mar 04 00:58:29 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Mar 04 11:52:14 2010 -0800"
      },
      "message": "Fix some bugs.\n\nBug #2376231: Apps lose window focus (and back key causes ANR) if the\nlock screen is dismissed while the phone is in landscape mode\n\nThis is another case where we weren\u0027t recomputing the focused window\nafter changing the visibility policy.\n\nbug #2479958: Investigate source of \"Resources don\u0027t contain package\nfor resource number 0x7f0a0000\"\n\nUm, okay, so it turns out there were bugs all over the place where\nwe would load an XML resource from a another application, but not\nuse the Resources for that application to retrieve its resources...!\nI think the only reason any of this stuff was working at all was\nbecause it typically only cared about retrieving the resource\nidentifiers of the items (it would look up the values later).\n\nBug #2401082: Passion ERE26 monkey crash - InputMethodManagerService\n\nAdd some null checks.\n"
    },
    {
      "commit": "ef05e076ced1a32c5c0aaee28403779834adb2ba",
      "tree": "20dcf607adf508481d57610937ceab6ef2c6aee2",
      "parents": [
        "883dbacb12a003f8f46c3faab26b744fdef649a1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 01 17:43:39 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 01 20:42:14 2010 -0800"
      },
      "message": "Fix issue #2448075: aapt doesn\u0027t fix up activity-alias android:targetActivity links\n\nAnd related:\n\n- The aapt tool now sets a resource configurations sdk level to match any configs\n  that have been set (for example if you specify density your sdk level will be\n  at least 4).\n- New option to modify the targetPackage attribute of instrumentation.\n- Clean up of aapt options help.\n- Fix of UI type values to leave 0 for \"unspecified\".\n- Make the UI mode config APIs public.\n"
    },
    {
      "commit": "56c0952a1f200665934a4d11975d0feb832f9908",
      "tree": "d2ceaa3d5d324c8cb89d31d4b384e54879bd47e1",
      "parents": [
        "1be40985283e77d3fc5d98268f9f6453bcc7223e"
      ],
      "author": {
        "name": "Ficus Kirkpatrick",
        "email": "ficus@android.com",
        "time": "Mon Mar 01 16:33:53 2010 -0800"
      },
      "committer": {
        "name": "Ficus Kirkpatrick",
        "email": "ficus@android.com",
        "time": "Mon Mar 01 16:33:53 2010 -0800"
      },
      "message": "Demote the famous ResourceTypes warning to LOGV.\n\nIt is spamming the log bigtime and can be promoted back to LOGW\nor worse by whoever decides to actually investigate the bug.\n\nChange-Id: I72d950155378f641ebdfbacabae774f5736a52bc\n"
    },
    {
      "commit": "780d2a1b714724d85227141c76b3c64f543f00b4",
      "tree": "3bd5411acce1ae663e4509c812b3aaa6100c6a41",
      "parents": [
        "cfe79e9220c996ed9f60fbc00eebb23e7faba2f0"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Feb 22 22:36:26 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Feb 23 10:02:20 2010 -0800"
      },
      "message": "Use UTF-8 strings to avoid duplicate caching, part 1\n\nStringBlock instances containing UTF-8 strings use a cache to convert\ninto UTF-16, but using that cache and then using a JNI call to NewString\ncauses the UTF-8 string as well as two copies of the UTF-16 string to\nbe held in memory. Getting the UTF-8 string directly from the StringPool\neliminates one copy of the UTF-16 string being held in memory.\n\nThis is part 1. Part 2 will include ResXMLParser optimizations.\n\nChange-Id: Ibd4509a485db746d59cd4b9501f544877139276c\n"
    },
    {
      "commit": "c86727f5805f28fbd25da141c50fb6843f364f3a",
      "tree": "395806614f40b9aac7306a9e951305167fb8abe1",
      "parents": [
        "08d13c3cbb0b250b84ca861edb462060556aead9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 11 17:30:52 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Feb 21 23:27:25 2010 -0800"
      },
      "message": "remove a dependency of GraphicBuffer (libui) on Parcel (libbinder).\n\nAdd a Flattenable interface to libutils which can be used to flatten\nan object into bytestream + filedescriptor stream.\nParcel is modified to handle Flattenable. And GraphicBuffer implements\nFlattenable.\n\nExcept for the overlay classes libui is now independent of libbinder.\n"
    },
    {
      "commit": "a9886c580b299984e62303a995bf7b13276b5bc8",
      "tree": "f481a1e98fc053de7e8d3ce8c0ec6534890dd3fb",
      "parents": [
        "7f66d6e63dc79709ea308440ec57906980046531"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Feb 12 14:09:24 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Feb 12 14:37:42 2010 -0800"
      },
      "message": "Totally remove Unicode.cpp and rely on ICU\n\nUnicode.cpp used a packed data table for character data that essentially\nduplicated ICU\u0027s functionality.\n\nChange-Id: Ia68fe4ac94e89dc68d9a3f45f33f6e648a5500b7\n"
    },
    {
      "commit": "564bfc27f253694183f5972cdda6357c66bd7bbd",
      "tree": "b9af3f503d7183a8f9f1cf5fe99fcf391eaa0c89",
      "parents": [
        "965e37ec88609c36a3c5461ece459a96abb6f7ca"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Feb 12 13:01:16 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Feb 12 13:01:16 2010 -0800"
      },
      "message": "Excise code from Unicode.cpp that was dead\n\nRemove some utility functions for discovering character data\nthat ICU probably took over a while ago.\n\nChange-Id: I97abe4de2f51eb2bf48679941258bc501184c3dc\n"
    },
    {
      "commit": "bb79f64b89bd7be7019035a0347c681e6f39fe6b",
      "tree": "d938e21a91d0d71dba49f89e36920f6654284536",
      "parents": [
        "159f0015418955501d8cf2744b0393db2e73f394"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Dec 10 14:20:15 2009 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Dec 10 14:22:08 2009 -0800"
      },
      "message": "Add string resource type inspection\n\nAllows \"aapt dump --values resource\" to print out whether a string in a\nResStringPool is in UTF-8 or UTF-16 encoding.\n\nChange-Id: I6478884a70a3b46fee862dece6cb33454fc34843\n"
    },
    {
      "commit": "afbeb31bffd54ecd332da5d3751b42da02b62330",
      "tree": "b501dd35589cf87547a16de82e7ea9a8fb6a96fb",
      "parents": [
        "484fe4d6f45d5dc42c378baaad3fdad7d6ae612f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 08 19:45:59 2009 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 08 19:45:59 2009 -0800"
      },
      "message": "Maybe really fix windows build.\n"
    },
    {
      "commit": "06fb2c1c398d91787440978bf358bb9808cc2928",
      "tree": "e7a71ef944a31e1b8fdab4b6351336014cc0383a",
      "parents": [
        "b882b361f123e4ef7870c99e8a9fd9e1be48e396"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 08 16:38:01 2009 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 08 16:38:01 2009 -0800"
      },
      "message": "Hopefully fix Windows build\n"
    },
    {
      "commit": "e6c0e99334bc2f47e5d36db253ac8f166047c03b",
      "tree": "67a2ab651f0bb32587d2b074e45a7095630fb07d",
      "parents": [
        "1270e2e22b0b3f0705cee2b82788d8dc3fb03cdb",
        "19138468caf7050d482dc15f35a344eab11bb756"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 08 13:41:38 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 08 13:41:38 2009 -0800"
      },
      "message": "Merge change I129483f8 into eclair-mr2\n\n* changes:\n  Optional use of UTF-8 strings in resource bundles\n"
    },
    {
      "commit": "887f355f99ff83d568ef2885a4fdcaae475583df",
      "tree": "c4788aa9ac8f37c6a02fc6b3a6874b71efb0f759",
      "parents": [
        "259e3384face72ea8e30696d7bae492d37d44e8b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 07 17:59:37 2009 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 07 19:11:14 2009 -0800"
      },
      "message": "Propagate background scheduling class across processes.\n\nThis is a very simply implementation: upon receiving an IPC, if the handling\nthread is at a background priority (the driver will have taken care of\npropagating this from the calling thread), then stick it in to the background\nscheduling group.  Plus an API to turn this off for the process, which is\nused by the system process.\n\nThis also pulls some of the code for managing scheduling classes out of\nthe Process JNI wrappers and in to some convenience methods in thread.h.\n"
    },
    {
      "commit": "19138468caf7050d482dc15f35a344eab11bb756",
      "tree": "ea1f96c5bcab356355ab05d315abfa66a7f888c4",
      "parents": [
        "6be01bf207077ffbdcd3879250171a26ec805835"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Dec 04 09:38:48 2009 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Dec 07 15:14:15 2009 -0800"
      },
      "message": "Optional use of UTF-8 strings in resource bundles\n\nAllows the use of UTF-8 for packing resources instead of the\ndefault of UTF-16 for Java. When strings are extracted from the\nResStringPool, they are converted to UTF-16 and the result is\ncached for subsequent calls.\n\nWhen using aapt to package, add in the \"-8\" switch to pack the\nresources using UTF-8. This will result in the value, key, and\ntype strings as well as the compiled XML string values taking\nsignificantly less space in the final application package in\nmost scenarios.\n\nChange-Id: I129483f8b3d3b1c5869dced05cb525e494a6c83a\n"
    },
    {
      "commit": "b8d81679553ee33f6ae5281310abf2effca4ffcd",
      "tree": "5e37b0771168cf54a419780587e2656efcac48a7",
      "parents": [
        "9ed314cefb5ec711dfcb5527a2a0a6b87a643c24"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Nov 20 14:26:42 2009 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Nov 20 14:26:42 2009 -0800"
      },
      "message": "Debugging for issue #2228381 android.view.InflateException\n\nBinary XML file line #37: Error inflating class \u003cunknown\u003e after adding a secondary account\n\nNow that I have these debug logs, I want to keep them since they will make\ndebugging these kinds of issues a lot easier in the future.  (Note in this\ncase there was no problem in the framework.)\n\nChange-Id: If2b0bbeda4706b7c5dc1ba4a5db04b74f40e1543\n"
    },
    {
      "commit": "436344ae12c819f58306ceb94241a266141e1218",
      "tree": "32688c8fbc1d40fe88ef86d034052f9608176d14",
      "parents": [
        "7e1af37c3148112d9c801272bfa6359a005baf6d"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Wed Sep 30 16:17:37 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Wed Sep 30 17:07:37 2009 -0700"
      },
      "message": "Turn off most of the backup-related debug logging\n\nThe core logging in BackupManagerService and in the Google backup transport are\nstill enabled at this point.\n\nChange-Id: I10abfa565bbd1097dd3631051b6aca163e4af33a\n"
    },
    {
      "commit": "119376ed49ff118a59b955b66b09ad57ce54587d",
      "tree": "53a179706743742f964fec5dd3ed4b1e6af137af",
      "parents": [
        "4b35d699e1ebd8f3d25b8300ff9c3923547f14d0"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Sun Sep 27 17:00:13 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Sun Sep 27 17:03:12 2009 -0700"
      },
      "message": "fix \"pacakge\" typo in error log message\n"
    },
    {
      "commit": "4cc86e1ae80eb1938500fe5fa06bbdf8b4b7b50d",
      "tree": "29e86fea79bb021db76dda017ec3d4c72d437349",
      "parents": [
        "bb339eadcb4a3ffd2dc861ffb0f268a49238fd03"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Mon Sep 21 19:36:51 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Thu Sep 24 11:19:04 2009 -0700"
      },
      "message": "Clear the device\u0027s data from the transport when backup is disabled\n\nTurning off backup in the Settings UI constitutes an opt-out of the whole\nmechanism.  For privacy reasons we instruct the backend to wipe all of the data\nbelonging to this device when the user does this.  If the attempt fails it is\nrescheduled in the future based on the transport\u0027s requestBackupTime()\nsuggestion.  If network connectivity changes prompt the transport to indicate a\nbackup pass is appropriate \"now,\" any pending init operation is processed before\nthe backup schedule is resumed.\n\nThe broadcasts used internally to the backup manager are now fully protected;\nthird party apps can neither send nor receive them.\n\n(Also a minor logging change; don\u0027t log \u0027appropriate\u0027 EOF encountered during\nparsing of a backup data stream.)\n"
    },
    {
      "commit": "6cca1599f78549716ef120245e54fa1961976dda",
      "tree": "938b0ff8e0530e9e665f3ac4e7434bcefade2344",
      "parents": [
        "d163f4babe101b89aaf322c34d3bafeae237f7da"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Sep 20 12:40:03 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Sep 20 12:40:03 2009 -0700"
      },
      "message": "Fix issue #1862317: Browser does not appear to honor anchors (#es) in links\n\nAlso a little improved debugging output of bad resource identifiers.\n\nChange-Id: I054064ef22855608ffd722e4ccf12ce57d1992b2\n"
    },
    {
      "commit": "d42bd87f23974164d2539ea85c7b5e6329faf2c2",
      "tree": "9ab3713baa90ff2f06d9937d86900fbf43825c39",
      "parents": [
        "a280496bd2ce04d6beff4536f2115a9a4d7568e4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 09 02:38:13 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 09 02:45:26 2009 -0700"
      },
      "message": "use broadcast() instead of signal() when signaling the condition-variable Thread::RequestExitAndWait() is waiting for\n\nwe could have several thread waiting on the condition and they all need to wake-up.\nalso added a debug \"mTid\" field in the class, which contains the tid of the thread (as opposed to pthread_t), this\nis useful when debugging under gdb for instance.\n"
    },
    {
      "commit": "c87d25215c842cea370c6a86ce67585fa8da4900",
      "tree": "221eb50bb658c745f0ce5c56588193d565a1ccf3",
      "parents": [
        "b7559e02803266e5fa9f4496174bc343ecd245ab"
      ],
      "author": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Tue Sep 01 15:20:30 2009 -0700"
      },
      "committer": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Tue Sep 01 15:20:30 2009 -0700"
      },
      "message": "Make it an error to use a bare apostrophe in aapt, and adjust warnings/errors.\n\nIn practice, no one ever writes an apostrophe in an aapt string with the\nintent of using it to quote whitespace -- they always mean to include a\nliteral apostrophe in the string and then are surprised when they find\nthe apostrophe missing.  Make this an error so that it is discovered\nright away instead of waiting until late in QA or after the strings have\nalready been sent for translation.  (And fix a recently-introduced string\nthat has exactly this problem.)\n\nSilence the warning about an empty span in a string, since this seems to\nannoy people instead of finding any real problems.\n\nMake the error about having a translated string with no base string into\na warning, since this is a big pain when making changes to an application\nthat has already had some translations done, and the dead translations\nshould be removed by a later translation import anyway.\n"
    },
    {
      "commit": "90f77218a24ac66bea52faef79c30d45420ce135",
      "tree": "d2925354575662d31307cb4affd52f5d5c97ee80",
      "parents": [
        "0914e0c1015e0331467d50622c1fe3d2557473bf",
        "b8546001701405a76dad7e6235046e592296fac2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 12 12:36:12 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 12 12:36:12 2009 -0700"
      },
      "message": "am b8546001: Merge change 20878 into donut\n\nMerge commit \u0027b8546001701405a76dad7e6235046e592296fac2\u0027\n\n* commit \u0027b8546001701405a76dad7e6235046e592296fac2\u0027:\n  Fix issue #2048263: More debugging information\n"
    },
    {
      "commit": "82e1ee93eece8fb0aec6acc3ef4ee7b1c86feec7",
      "tree": "b7b376fc569f6d6fde7c69c8f832f3c52152f408",
      "parents": [
        "b3fa1084ba31698fa5c58150a713d7abbadb1cd2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 11 18:56:41 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 11 18:56:41 2009 -0700"
      },
      "message": "Fix issue #2048263: More debugging information\n\nWe now hopefully do better about generating the anr reports, and include\ninformation about the malloc loaded assets in meminfo.\n"
    },
    {
      "commit": "078a2757847dcdd50a254d973d2c9a0556e98d75",
      "tree": "47999cb47222e0e086df3d647ceaa85a0d0c8b86",
      "parents": [
        "d3c6d54de9b9a599eb33f343fb1e0639fed02094"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sat Aug 01 00:20:17 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sat Aug 01 10:53:29 2009 +0200"
      },
      "message": "Fix Win32 libutils to get a working SDK build.\n"
    },
    {
      "commit": "afcf686cb070313ae5ce6c54ac381a3a86a60ed2",
      "tree": "4a7c1fa186ad4b1a7d37ea4d97aa0b0411b50d85",
      "parents": [
        "8845ea0592e3bffc726febb66de48646b0398e70",
        "25dff70f153529b87f5ad4a92f4de21e8950b1de"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 16:05:27 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 30 16:05:27 2009 -0700"
      },
      "message": "am 25dff70f: Merge change 9039 into donut\n\nMerge commit \u002725dff70f153529b87f5ad4a92f4de21e8950b1de\u0027\n\n* commit \u002725dff70f153529b87f5ad4a92f4de21e8950b1de\u0027:\n  Fix #2018814: System cannot correctly render assets with \"wrap_content\" attribute in QVGA\n"
    },
    {
      "commit": "0d221012ff5fd314711c00ed30e9b807b9c454c1",
      "tree": "328d42900c9765e3bde9ad98a936a9122c679e5e",
      "parents": [
        "c6eb5ac988518f41938c4f021003d6c202d84819"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 29 15:41:19 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 29 19:44:01 2009 -0700"
      },
      "message": "Fix #2018814: System cannot correctly render assets with \"wrap_content\" attribute in QVGA\n\nIt turns out we were not returning the density for anything retrieved from a\nTypedArray...  which basically means any bitmap references from a layout or style...!!!\n\nThis is now fixed.\n\nAlso fiddle with the density compatibility mode to turn on smoothing in certain situations,\nhelping the look of things when they need to scale and we couldn\u0027t do the scaling at\nload time.\n"
    },
    {
      "commit": "9bb8fd77c8dc177aab9ac96bed4f55972dcda70a",
      "tree": "65f29284d166ac676ef052df99ed8bcfb237ccbb",
      "parents": [
        "0ac031b3d29c6de90895c875991585812dc7388f"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Tue Jul 28 18:24:51 2009 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Wed Jul 29 12:05:36 2009 -0700"
      },
      "message": "Only restore the bits for wallpapers that aren\u0027t built in.\n"
    },
    {
      "commit": "8d72569e3b85a352afe0fe1125b784d2ac13cde1",
      "tree": "e90602cb7d6dddaf452e9df0bae4016ec85aafda",
      "parents": [
        "a7e4cf9b5c9dd7d733e1ee7109ecb0e58996fe06"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Tue Jul 28 18:23:05 2009 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Tue Jul 28 18:30:15 2009 -0700"
      },
      "message": "Fix the IOException in wallpaper restore -- the padding isn\u0027t required at the end.\n"
    },
    {
      "commit": "a8339dfec9d1b2c6d6fd2f8268f8075d184f64c0",
      "tree": "40345158a2aa1084b21de121e5eb8b0d8f8f36a3",
      "parents": [
        "9822d2b27330793ea4ba9c3316ef35f402f35fb4",
        "9fc20b0e381b5fe00b7049ef357c839cd05a33bf"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 21 19:03:53 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 21 19:03:53 2009 -0700"
      },
      "message": "am 9fc20b0e: Merge change 8126 into donut\n\nMerge commit \u00279fc20b0e381b5fe00b7049ef357c839cd05a33bf\u0027\n\n* commit \u00279fc20b0e381b5fe00b7049ef357c839cd05a33bf\u0027:\n  First pass at reworking screen density/size APIs.\n"
    },
    {
      "commit": "c4db95c077f826585d20be2f3db4043c53d30cf5",
      "tree": "9176baa673f97b27150f862485fd492cb3ec7e88",
      "parents": [
        "fe6f45c81463d2d28e11ac6083f2653e1286c5ef"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 21 17:46:02 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 21 18:28:42 2009 -0700"
      },
      "message": "First pass at reworking screen density/size APIs.\n\nThis changes the names of the directories in aapt, to what you see\nin the list of DpiTest resources.  Also adds a new \"long\" configuration\nfor wide screens, which the platform sets appropriate, and introduces\na new kind of resizeability for not large but significantly larger\nthan normal screens which may have compatibility issues.\n"
    },
    {
      "commit": "469b4c67adc77a87eb2c9ed9217edf1778002828",
      "tree": "f6ca01c85c85a27ecd6f54ae1193f30e1cc67501",
      "parents": [
        "b933dc7f47ec9a9609d0775fc469849f066bfcd7",
        "aad0fcc9619eb72c18a6afff48ebc9d4011f0f54"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jul 19 20:28:49 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jul 19 20:28:49 2009 -0700"
      },
      "message": "am aad0fcc9: Merge change 7783 into donut\n\nMerge commit \u0027aad0fcc9619eb72c18a6afff48ebc9d4011f0f54\u0027\n\n* commit \u0027aad0fcc9619eb72c18a6afff48ebc9d4011f0f54\u0027:\n  Add \"nodpi\" density, and expose a bunch of density-related APIs.\n"
    },
    {
      "commit": "a53b828635fce8b6b2d3e3377d74d72070056623",
      "tree": "42f4ba9bbf7d8656a4761d6fe5dcd4976cf19369",
      "parents": [
        "09a903ab5b8d940605783ae4ee591c0f090a31d1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 17 11:13:48 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 17 16:59:08 2009 -0700"
      },
      "message": "Add \"nodpi\" density, and expose a bunch of density-related APIs.\n\nAlso update the DpiTest app to use nodpi images, and try to have a mode\nwhere it turns off compatibility though it\u0027s not quite working.\n"
    },
    {
      "commit": "3d88fc00b32cc4c093dd5ef3f8f349966df948ad",
      "tree": "da4b25083bf09b01b0b62a4e1017b38c5eea000d",
      "parents": [
        "53245df9c1c2ec52f8d39db77dae890b63b51aa2",
        "3e1663a2539ff0b939193304cfb601f6b134af7d"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 16 17:54:01 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 16 17:54:01 2009 -0700"
      },
      "message": "am 3e1663a2: Merge change 7536 into donut\n\nMerge commit \u00273e1663a2539ff0b939193304cfb601f6b134af7d\u0027\n\n* commit \u00273e1663a2539ff0b939193304cfb601f6b134af7d\u0027:\n  fix FILE* version of ZipUtils::inflateToBuffer\n"
    },
    {
      "commit": "d2792e3768d41c4b366fccf9c8b415c61761f4af",
      "tree": "616763fa940c72e0743f5882edc2caf3a19fbe75",
      "parents": [
        "6ce4236d70c8543021bb521731ac9f05d22b3002"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jul 16 11:27:13 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jul 16 11:27:13 2009 -0700"
      },
      "message": "fix FILE* version of ZipUtils::inflateToBuffer\n\nThis can\u0027t have ever worked; a successful fread() was returning 1\ninstead of getSize.\n"
    },
    {
      "commit": "ee5bbb7f6304c4930899d069c82fe02e49f050aa",
      "tree": "276c5b62ca57168e4e1c29770dd2edca68ae55fa",
      "parents": [
        "85d1f158267d64b5660e86fab0baf0432c1dcfbd"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Mon Jul 13 14:44:07 2009 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Wed Jul 15 09:58:07 2009 -0700"
      },
      "message": "Need to skip the padding after reading.\n\nm_dataEndPos points to the end of the data, not the beginning\nof the next entity.\n"
    },
    {
      "commit": "b1c4ca5ad21ae63cd5af2cfc1be82ba176d25195",
      "tree": "5a70f426d9b4cd75638a1b17ae2abd264c59eb55",
      "parents": [
        "56e7c2d6ebbde59555041e3550cbba6824486db1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Jul 12 23:11:20 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 13 15:14:23 2009 -0700"
      },
      "message": "implement Mutex and Condition with pthread instead of calling futex directly.\n\ninternally pthread uses futex. the implementation consists of simple inlines\nthere are no implementation files anymore.\n"
    },
    {
      "commit": "58e8131631b4598d445303183ee6ea80b7e63038",
      "tree": "8a03eaa3f3c33a668ba1f01458a1fd5c5bacc56a",
      "parents": [
        "191c12d33fe33c938beb421004c55fb827208f48",
        "be91fdbc5c4f2de3a2bb574a98fdfeef44d8cdb5"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 09 14:12:52 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 09 14:12:52 2009 -0700"
      },
      "message": "am be91fdbc: Merge change 6665 into donut\n\nMerge commit \u0027be91fdbc5c4f2de3a2bb574a98fdfeef44d8cdb5\u0027\n\n* commit \u0027be91fdbc5c4f2de3a2bb574a98fdfeef44d8cdb5\u0027:\n  Fix resources not being set correctly.\n"
    },
    {
      "commit": "c916e0616468e74a87cec71cefd26150a108edf1",
      "tree": "acf3d694080b65bcc28ac51d4a80ce3d121cfe83",
      "parents": [
        "e2bf80fb0bfd944ef45d60bdc469d85734527363",
        "fe811d8bd0da15f14702968a9c7deb02db7eec9f"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 09 12:49:07 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 09 12:49:07 2009 -0700"
      },
      "message": "am fe811d8b: Merge change 6603 into donut\n\nMerge commit \u0027fe811d8bd0da15f14702968a9c7deb02db7eec9f\u0027\n\n* commit \u0027fe811d8bd0da15f14702968a9c7deb02db7eec9f\u0027:\n  quick fix; utf8_codepoint_count must be utf8_length\n"
    },
    {
      "commit": "e2bf80fb0bfd944ef45d60bdc469d85734527363",
      "tree": "82c0b1944a438852d41e3632dbb42f9150e9cdd6",
      "parents": [
        "e3f054411b9f025848f68389c4e2c325e76b3826",
        "8a715b4b791db4390d12e0ded02280592634a424"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 09 12:48:56 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 09 12:48:56 2009 -0700"
      },
      "message": "am 8a715b4b: Merge change 5510 into donut\n\nMerge commit \u00278a715b4b791db4390d12e0ded02280592634a424\u0027\n\n* commit \u00278a715b4b791db4390d12e0ded02280592634a424\u0027:\n  Add useful functions to String8, which enables users to convert between UTF-8 and UTF-32\n"
    },
    {
      "commit": "6c11e73f678a46b0a74c6f1936eebd51dc60f0af",
      "tree": "6f3b223440a234d9daf48bef51ad7267e0b2e03b",
      "parents": [
        "d1e5e3ffc22478bad8525dec4f1c6d57fe0ad368"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 09 11:36:32 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 09 12:41:06 2009 -0700"
      },
      "message": "Fix resources not being set correctly.\n"
    },
    {
      "commit": "361d477957feb07454b93509da0bfd05e9c718a8",
      "tree": "cec212a66a309ea588bd16f37bdb84ebf19150b7",
      "parents": [
        "f05b33b3a1cff40972a735ff1fb4ed6e8bfeaf2a"
      ],
      "author": {
        "name": "Daisuke Miyakawa",
        "email": "dmiyakawa@google.com",
        "time": "Thu Jul 09 13:05:24 2009 +0900"
      },
      "committer": {
        "name": "Daisuke Miyakawa",
        "email": "dmiyakawa@google.com",
        "time": "Thu Jul 09 13:05:24 2009 +0900"
      },
      "message": "quick fix; utf8_codepoint_count must be utf8_length\n"
    },
    {
      "commit": "f05b33b3a1cff40972a735ff1fb4ed6e8bfeaf2a",
      "tree": "0ba45f189f1a8568697a1b4dc9e7b083a76d732d",
      "parents": [
        "1ecf5d28817f0a051e77488380dcd5bc622ea169"
      ],
      "author": {
        "name": "Daisuke Miyakawa",
        "email": "dmiyakawa@google.com",
        "time": "Tue Jun 30 20:40:42 2009 +0900"
      },
      "committer": {
        "name": "Daisuke Miyakawa",
        "email": "dmiyakawa@google.com",
        "time": "Thu Jul 09 09:06:13 2009 +0900"
      },
      "message": "Add useful functions to String8, which enables users to convert between UTF-8 and UTF-32\nIt will be used in SQL functions in external/sqlite/android.\nSee https://android-git.corp.google.com/g/Gerrit#change,5511 for example.\n\nRelated internal bug id: 1707173\n"
    },
    {
      "commit": "17ffe1018c506272da45be6b35caf859bc2582f1",
      "tree": "76fb5291e8524712e9978cc3b76e46337b7453bd",
      "parents": [
        "005ae544f93494eb7d315b2e34aae0ac3c922728",
        "991eec03a73f8803d0f8c80b418480ea25293cfb"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 06 14:10:36 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jul 06 14:10:36 2009 -0700"
      },
      "message": "am 991eec03: Merge change 6252 into donut\n\nMerge commit \u0027991eec03a73f8803d0f8c80b418480ea25293cfb\u0027\n\n* commit \u0027991eec03a73f8803d0f8c80b418480ea25293cfb\u0027:\n  Don\u0027t re-parse the framework resources all the time.\n"
    },
    {
      "commit": "78c405178c57bb45e40f1e2839d6a18d91f7f02c",
      "tree": "6e7137f628b8fff1f72c59e5e42f3f4878e0bb39",
      "parents": [
        "ef1f21b34f5624adb7436d3da927660ed16c97c7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jul 06 11:07:40 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jul 06 11:12:37 2009 -0700"
      },
      "message": "Don\u0027t re-parse the framework resources all the time.\n\nA small optimization to the resource code, to not re-parse the framework\nresources every time we build a new AssetManager.  Instead, you can now\nconstruct a ResTable from a previously created one...  of course, like the\nexisting code for using the data in-place, you can\u0027t delete the original\nResTable until you have deleted the one that has been constructed from it.\n"
    },
    {
      "commit": "d96e0b0cf14f159d96502a4caf8aa2a33c334a99",
      "tree": "c444ad326a6e2ae5b48508f78cdac7d12c2f7fd1",
      "parents": [
        "74ab31598bb65b17f84411d11d09269f1291d78a",
        "6e1647a212317f4ee8bcc23948b6621a59172954"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 01 22:43:58 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jul 01 22:43:58 2009 -0700"
      },
      "message": "am 6e1647a2: Merge change 5829 into donut\n\nMerge commit \u00276e1647a212317f4ee8bcc23948b6621a59172954\u0027\n\n* commit \u00276e1647a212317f4ee8bcc23948b6621a59172954\u0027:\n  Fix issue #1673793: Theme styles don\u0027t apply.\n"
    },
    {
      "commit": "de7faf658cd40d34c08a98b39477055da8e19172",
      "tree": "8450b4d75fbe22a3fed25867c1d53a059c10d664",
      "parents": [
        "bd9aa793b19f7aa529ca4123492f8940b96486b8"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 30 13:27:30 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 30 13:27:30 2009 -0700"
      },
      "message": "Fix issue #1673793: Theme styles don\u0027t apply.\n\nIt turns out this was not a problem in the resource code at all.  Rather,\nthe system process has a cache of pre-loaded attributes it uses to avoid\ncontinually reloading things as it needs them.  Well it turns out this\ncache wasn\u0027t flushed after a package was uninstalled or a configuration\nchanged, so you could re-install an app where you change its style resources\nso its theme now points to one that is inconsistent in the cache.\n\nThis is mostly a problem for developers, where they continually install\nnew versions of an app where resources have changed.  This could possibly\nshow up when updating an app on a normal phone, although the problem would\neventually correct itself since this cache uses weak references.\n\nAnyway, the cache is now reworked to be flushed appropriately.\n\nThis change also includes an update to aapt to be able to dump the\ncontents of bags in resources.\n"
    },
    {
      "commit": "bacc51026e8c95f34830defdfc1be4b359abf664",
      "tree": "fb8492e6c8de174b4e830e33cfac21bfd243b149",
      "parents": [
        "6034cb565c3b3ffb21057851cff179e2d5cb56a9",
        "d09f86ce175fad6ddbd446363f327dfa0575a1d2"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 29 16:37:39 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 29 16:37:39 2009 -0700"
      },
      "message": "am d09f86ce: Merge changes 5548,5549 into donut\n\nMerge commit \u0027d09f86ce175fad6ddbd446363f327dfa0575a1d2\u0027\n\n* commit \u0027d09f86ce175fad6ddbd446363f327dfa0575a1d2\u0027:\n  Better (and less) logging from backup.\n  Add an extra null terminator.  String8::unlockBuffer is\n"
    },
    {
      "commit": "f6ff591decdea6299aab1a5b6f95917800571de4",
      "tree": "dee211f3383b10360a61cb4194a1bcc2cc26bdd4",
      "parents": [
        "8c3fc63576c81139a8d16b608550568ad52237c6",
        "72eb0acad5cffc57ce5006f6deab29ee259e461e"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 29 16:37:17 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 29 16:37:17 2009 -0700"
      },
      "message": "am 72eb0aca: Merge change 5483 into donut\n\nMerge commit \u002772eb0acad5cffc57ce5006f6deab29ee259e461e\u0027\n\n* commit \u002772eb0acad5cffc57ce5006f6deab29ee259e461e\u0027:\n  Expand support for different screen sizes.\n"
    },
    {
      "commit": "d09f86ce175fad6ddbd446363f327dfa0575a1d2",
      "tree": "1402e4c2472e7e4ec6e09e51d608d29e4f40f7d9",
      "parents": [
        "17a80081a42410f541a220ab7e6afc64fc6cc399",
        "568bc32344dce841c8f6958f1a65ff839a1b64c0"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 26 14:19:59 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 26 14:19:59 2009 -0700"
      },
      "message": "Merge changes 5548,5549 into donut\n\n* changes:\n  Better (and less) logging from backup.\n  Add an extra null terminator.  String8::unlockBuffer is supposed to be doing this, but it\u0027s not and I can\u0027t figure out why.  This makes BackupHelperDispatcher able to read the keys correctly.\n"
    },
    {
      "commit": "568bc32344dce841c8f6958f1a65ff839a1b64c0",
      "tree": "6c7f946386e088900b9cda0c66c2e22b1b987dc0",
      "parents": [
        "12a4da328a234b171b78cc341544817e9a074057"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Fri Jun 26 17:19:11 2009 -0400"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Fri Jun 26 17:19:11 2009 -0400"
      },
      "message": "Better (and less) logging from backup.\n"
    },
    {
      "commit": "723738cfaec3dd7b0fe152c872c41bebf94074c4",
      "tree": "421ddeed166d0a4586c9460c4de581307bf08d44",
      "parents": [
        "77cb40a0b088b02357fbc7d5fad24886d607f0da"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 25 19:48:04 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 26 13:37:05 2009 -0700"
      },
      "message": "Expand support for different screen sizes.\n\nApplications can now declare that they support small, normal, or\nlarge screens.  Resource selection can also be done based on these\nsizes.  By default, pre-Donut apps are false for small and large,\nand Donut or later apps are assumed to support all sizes.  In either\ncase they can use \u003csupports-screens\u003e in their manifest to declare\nwhat they actually support.\n"
    },
    {
      "commit": "60965876d81bc7c327a6fd8360b46a85e3d9f4de",
      "tree": "baa34c2b76ce6c2d47ecc45d709819481f215c8d",
      "parents": [
        "c317703f6bec689adbf42a245c0ec75146343508",
        "df65b60ce33e5a56815864f8f0713e25378fa649"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 15:45:20 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 24 15:45:20 2009 -0700"
      },
      "message": "am df65b60c: Merge change 5243 into donut\n\nMerge commit \u0027df65b60ce33e5a56815864f8f0713e25378fa649\u0027\n\n* commit \u0027df65b60ce33e5a56815864f8f0713e25378fa649\u0027:\n  Only report \"unknown metadata\" once per restore helper\n"
    },
    {
      "commit": "9c73a336c121ae2a1f608700b45d84fed6c49eba",
      "tree": "3ecee4df9d3b60866381791e97883dd1465fa488",
      "parents": [
        "95cb30d2e99393023e0df8f804b5856513d315aa",
        "54118adb3766fdf73a409102b88d7494bb6889a3"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jun 24 15:44:40 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 24 15:44:40 2009 -0700"
      },
      "message": "am 54118adb: Put back LOGP -\u003e printf in the backup helper code\n\nMerge commit \u002754118adb3766fdf73a409102b88d7494bb6889a3\u0027\n\n* commit \u002754118adb3766fdf73a409102b88d7494bb6889a3\u0027:\n  Put back LOGP -\u003e printf in the backup helper code\n"
    },
    {
      "commit": "95cb30d2e99393023e0df8f804b5856513d315aa",
      "tree": "f2424f5a52ef3b91d4d949c662e4950b03e1b729",
      "parents": [
        "f364595d443f92c5bd340cfcf442934df3ecd071",
        "0e034e5a9a71e5e196baff630dca796a0e3ed3e2"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 15:44:37 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 24 15:44:37 2009 -0700"
      },
      "message": "am 0e034e5a: Merge change 5162 into donut\n\nMerge commit \u00270e034e5a9a71e5e196baff630dca796a0e3ed3e2\u0027\n\n* commit \u00270e034e5a9a71e5e196baff630dca796a0e3ed3e2\u0027:\n  Preserve file access mode when backing up / restoring files\n"
    },
    {
      "commit": "63bcb79dd437e70593b63cc5a87baab3251c2183",
      "tree": "97eab12039e80d6f16d64e2c3d7dac2073dfae54",
      "parents": [
        "54118adb3766fdf73a409102b88d7494bb6889a3"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jun 24 13:57:29 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jun 24 13:57:29 2009 -0700"
      },
      "message": "Only report \"unknown metadata\" once per restore helper\n\nAlso removes the auto-free object, replacing it with direct memory manipulation.\n"
    },
    {
      "commit": "54118adb3766fdf73a409102b88d7494bb6889a3",
      "tree": "0cc282e2f39bf2ac885173caef1d31f22c087401",
      "parents": [
        "0e034e5a9a71e5e196baff630dca796a0e3ed3e2"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jun 24 11:20:51 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jun 24 11:20:51 2009 -0700"
      },
      "message": "Put back LOGP -\u003e printf in the backup helper code\n"
    },
    {
      "commit": "fbb92385f2fb0ae1146bb8f3d73547d90bda6db1",
      "tree": "3c02712ab875ae1889d3b0a2df244ef3cc205410",
      "parents": [
        "3fbd946bacdc202dc23c84887d2ad47402b5015b"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 23 17:35:11 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 23 17:40:44 2009 -0700"
      },
      "message": "Preserve file access mode when backing up / restoring files\n\nThis change adds a fixed-size metadata block at the head of each file\u0027s content\nentity.  The block is versioned, and fixed-size on the theory that it might be\nnice to be able to recover the content (if not the full metadata) of the files\nif we\u0027re ever confronted with data backed up some hypothetical future helper\nthat stored expanded metadata.\n\nThe net effect is that now on restore, we assign the same access mode to the\nfile that it originally had when backed up.\n\nAlso, some of the code was failing to properly free transient heap-based buffers\nwhen it encountered errors.  This has been fixed with the addition of a tiny\nstack-based object whose job it is to free() its designated pointer from its\ndestructor.\n"
    },
    {
      "commit": "9bfd5f495bdc0d704d85fa95b67845099d9b9f48",
      "tree": "ffd74c5f107276683565d95c2ee406b2722937de",
      "parents": [
        "3618160a1a10ab7574f14e0e5a45fe79ec660a64",
        "11b157790234d3d2f116ce4c7ed1d3d00fb78bc3"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 23 13:28:41 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Jun 23 13:28:41 2009 -0700"
      },
      "message": "am 11b15779: Add file mode to the file-backup saved state blobs\n\nMerge commit \u002711b157790234d3d2f116ce4c7ed1d3d00fb78bc3\u0027\n\n* commit \u002711b157790234d3d2f116ce4c7ed1d3d00fb78bc3\u0027:\n  Add file mode to the file-backup saved state blobs\n"
    },
    {
      "commit": "11b157790234d3d2f116ce4c7ed1d3d00fb78bc3",
      "tree": "1db558751d0c942f0c231a0de9de5965aa1d50ba",
      "parents": [
        "2e418428987132ea66533cbc05f9c526eb59519a"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 23 13:03:00 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 23 13:07:47 2009 -0700"
      },
      "message": "Add file mode to the file-backup saved state blobs\n\nThis change puts the file\u0027s access mode into the saved-state blob used by the\nfile backup helpers.  The tests have been updated for the new blob content\nformat.\n\nWhat this change *doesn\u0027t* do is actually backup/restore the file mode.  This\nchange is a prerequisite for that, but mode preservation in backup/restore will\nrequire adding metadata to the backup data stream itself, so will be approached\na bit more carefully.\n\n(Also fixed one outright bug in the test program: ReadEntityData() had been\nchanged to return a ssize_t union of either a byte-count or a negative number\nindicating error, but the test program was still assuming that nonzero \u003d\u003d error,\nand was spuriously failing.)\n"
    },
    {
      "commit": "69d13f6680c19a39a849484403495daf388416ea",
      "tree": "f0f525551f3abf7501c704d5dfa65789872bc2bc",
      "parents": [
        "4f5753dbeebe1523a020f7d39b519d99177d9fd2",
        "72be40490951d3f9d0ada16fcf5288d0c3306d88"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 14:03:17 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 22 14:03:17 2009 -0700"
      },
      "message": "am 72be4049: Merge change 4910 into donut\n\nMerge commit \u002772be40490951d3f9d0ada16fcf5288d0c3306d88\u0027\n\n* commit \u002772be40490951d3f9d0ada16fcf5288d0c3306d88\u0027:\n  fix warnings that will show up with GCC 4.4 (in master)\n"
    },
    {
      "commit": "72be40490951d3f9d0ada16fcf5288d0c3306d88",
      "tree": "c03ccfb9727e67dee8a9106e61a49dff3784ada6",
      "parents": [
        "bbf781379b134812458591722c986cb29c396a5b",
        "5f91097b26f036a45e32f4e4cae3e9e135a6042d"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 14:01:25 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 14:01:25 2009 -0700"
      },
      "message": "Merge change 4910 into donut\n\n* changes:\n  fix warnings that will show up with GCC 4.4 (in master)\n"
    },
    {
      "commit": "4527acb0c39258792ae55604cb4d71006bf8d938",
      "tree": "f1e2b09db0abc31c15d56ec7e718a09aabd00861",
      "parents": [
        "ffe4ddfe95e8b31e0cb579ab537a1373f6208bcc",
        "856dd8a60a70a5b7dca2bf2114872ce063e2ad60"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 13:20:31 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 22 13:20:31 2009 -0700"
      },
      "message": "am 856dd8a6: Merge change 4952 into donut\n\nMerge commit \u0027856dd8a60a70a5b7dca2bf2114872ce063e2ad60\u0027\n\n* commit \u0027856dd8a60a70a5b7dca2bf2114872ce063e2ad60\u0027:\n  Helper API cleanup.  Allows multiple helpers to function,\n"
    },
    {
      "commit": "06290a4bb9b280fa14a2bbeb2d3ceb09396a78c3",
      "tree": "15fccf5ce4e9c42bba3fc7581ac2ddc0d8363dc9",
      "parents": [
        "eed76b2a8ddc41af01cd3ae87c4722f3784c975c"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Thu Jun 18 20:10:37 2009 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Mon Jun 22 13:02:24 2009 -0700"
      },
      "message": "Helper API cleanup.  Allows multiple helpers to function,\nbecause they\u0027ll always go in the same order, and this lets\nus not have to write headers to keep them paired.\n"
    },
    {
      "commit": "5f91097b26f036a45e32f4e4cae3e9e135a6042d",
      "tree": "f8b6ddcb19437b86fdfce765ffa236e12ccccd2a",
      "parents": [
        "4da7dff5e79e57494b58a97b285c53c111b18c82"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 22 02:35:32 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 22 02:35:32 2009 -0700"
      },
      "message": "fix warnings that will show up with GCC 4.4 (in master)\n"
    },
    {
      "commit": "fc68623c03439db95401a18a435dbc491cd7f6fd",
      "tree": "318e9310cdb3fd31b912cc11b5f3b65d3d349f3f",
      "parents": [
        "b0774438ea90ce379ac3f20895f95302248a3844",
        "1585bd24c10d16351f89e32dddbfa799f18db6bd"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 19 16:44:07 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jun 19 16:44:07 2009 -0700"
      },
      "message": "am 1585bd24: Merge change 4828 into donut\n\nMerge commit \u00271585bd24c10d16351f89e32dddbfa799f18db6bd\u0027\n\n* commit \u00271585bd24c10d16351f89e32dddbfa799f18db6bd\u0027:\n  Report densities in badging, debugging for nine patch bug.\n"
    },
    {
      "commit": "e17086ba346009a26cc2299b133a0fe602acb6ec",
      "tree": "4fbc5d71e2eab364edf88f3d9aa0a28611fb4efc",
      "parents": [
        "03255de32d127d17504b6d475e6e79190dd637f8"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 19 15:13:28 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 19 15:13:28 2009 -0700"
      },
      "message": "Report densities in badging, debugging for nine patch bug.\n\nThe aapt tool now reports all available densities like it already did\nfor locales.  Also this includes more resource data output, which I\nwas using to examine bug #1867049 (which at this point I am unable to\nreproduce).\n"
    },
    {
      "commit": "f923ed6ff76a0fd022bcc83e748e82266ba4ed1b",
      "tree": "43cf39771f98ee89b714ddd9bb791d43addf8aa8",
      "parents": [
        "1c14776a13546fc2642baa251c8f1b7c545b0272",
        "5502f04c1dcf2b1918858bacb99fb0480a711707"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 18 19:04:56 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 18 19:04:56 2009 -0700"
      },
      "message": "am 5502f04c: Merge change 4709 into donut\n\nMerge commit \u00275502f04c1dcf2b1918858bacb99fb0480a711707\u0027\n\n* commit \u00275502f04c1dcf2b1918858bacb99fb0480a711707\u0027:\n  backup stuff\n"
    },
    {
      "commit": "1c14776a13546fc2642baa251c8f1b7c545b0272",
      "tree": "0834ce3d68bee3d92d1c1042b36832aa28ce9543",
      "parents": [
        "81a2a3931f61a7fdd178ab8d56c3d132c68a7afe",
        "16ce3504c5bf98d95d5c36001f755bb4b15253c9"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 18 19:04:50 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 18 19:04:50 2009 -0700"
      },
      "message": "am 16ce3504: Merge change 4708 into donut\n\nMerge commit \u002716ce3504c5bf98d95d5c36001f755bb4b15253c9\u0027\n\n* commit \u002716ce3504c5bf98d95d5c36001f755bb4b15253c9\u0027:\n  Make RestoreHelper and friends also write out the snapshot state.\n"
    },
    {
      "commit": "5d605dc56b036232e885f6ec36b888b729673060",
      "tree": "8a29f6a2feb495cbac08bb43b08e0ca9b8cf7dce",
      "parents": [
        "d2d9ceb7305d593c1b767bbb05de0082a9af4109"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Thu Jun 18 18:23:43 2009 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Thu Jun 18 18:41:11 2009 -0700"
      },
      "message": "backup stuff\n"
    },
    {
      "commit": "d2d9ceb7305d593c1b767bbb05de0082a9af4109",
      "tree": "1ba39c3c5901d65a18855286e240f177820a6ec6",
      "parents": [
        "abce4e8714bed26a2b37b20ad3f02cf619d71c9a"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Thu Jun 18 13:11:18 2009 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Thu Jun 18 18:41:11 2009 -0700"
      },
      "message": "Make RestoreHelper and friends also write out the snapshot state.\n"
    },
    {
      "commit": "6f8b5c12d3a3a02c5d38e3f54117cb6d65e0d4a6",
      "tree": "51a0be24e50459515d454f77d1ae8552fe957479",
      "parents": [
        "eae311c78be5125d722f50263a4a47c5deff2939",
        "de72697b771d33738c5f9d6c28087504e0796622"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 17 21:49:21 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 17 21:49:21 2009 -0700"
      },
      "message": "am de72697b: Merge change 4524 into donut\n\nMerge commit \u0027de72697b771d33738c5f9d6c28087504e0796622\u0027\n\n* commit \u0027de72697b771d33738c5f9d6c28087504e0796622\u0027:\n  FileRestoreHelper and RestoreHelperDispatcher work.\n"
    },
    {
      "commit": "efd0fab04b96d7ab0c1d8bf3b79397c8621e31c5",
      "tree": "f4b5afd53736822e9dc9e4c0f08140cd6fac8d60",
      "parents": [
        "2cf3971ea4d22f8981ae71e6ba358f19e1628d09"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Wed Jun 17 16:20:55 2009 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Wed Jun 17 16:20:55 2009 -0700"
      },
      "message": "FileRestoreHelper and RestoreHelperDispatcher work.\n"
    },
    {
      "commit": "251c89c0a7502f4286f2484a77b685ddfe2b39d2",
      "tree": "9b8f8dd5d56b1ef2d295b986f54b8c55f757f3cc",
      "parents": [
        "1bd88ca88f8b89dbf09697b8eddc4703e266a654",
        "5f15d151b5101fadfe6cba1e8f4aa6367e8c603e"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Wed Jun 17 15:38:08 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 17 15:38:08 2009 -0700"
      },
      "message": "am 5f15d151: checkpoint BackupDatAInput / RestoreHelper\n\nMerge commit \u00275f15d151b5101fadfe6cba1e8f4aa6367e8c603e\u0027\n\n* commit \u00275f15d151b5101fadfe6cba1e8f4aa6367e8c603e\u0027:\n  checkpoint BackupDatAInput / RestoreHelper\n"
    },
    {
      "commit": "5f15d151b5101fadfe6cba1e8f4aa6367e8c603e",
      "tree": "3a94295ffc2935c7ca1550c01a6e793766bf415f",
      "parents": [
        "aa088447baadd2e0bbcfd18cc529645610c13ddc"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Tue Jun 16 16:31:35 2009 -0400"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Tue Jun 16 18:46:50 2009 -0700"
      },
      "message": "checkpoint BackupDatAInput / RestoreHelper\n"
    },
    {
      "commit": "daf701fa6250ae89ad93e2e41127e0f676a322a5",
      "tree": "5b816f0e72d4bd2b0b2040242799c4008abf3a59",
      "parents": [
        "aa73f17201481f943345253328071118abc02933",
        "2fdd428e0f18384160f7c38ce3a2cd9ba7e7b2c2"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Sun Jun 14 21:13:03 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Sun Jun 14 21:13:03 2009 -0700"
      },
      "message": "am 2fdd428e: Fix some backup reader/writer issues; make local transport do backup\n\nMerge commit \u00272fdd428e0f18384160f7c38ce3a2cd9ba7e7b2c2\u0027\n\n* commit \u00272fdd428e0f18384160f7c38ce3a2cd9ba7e7b2c2\u0027:\n  Fix some backup reader/writer issues; make local transport do backup\n  Fix the jni initializer.\n  Add RestoreFileHelper, BackupDataInput, and add java wrappers for the methods on BackupDataOutput.\n  Fix bug #1812041: activity manager crash with bad args.\n  Journal backup requests so that they won\u0027t be lost in a crash\n  Fix data connection issues.\n"
    }
  ],
  "next": "1cf587496fcb1d652bab9fc6792fb106b6fefaa4"
}
