)]}'
{
  "log": [
    {
      "commit": "c75d3f5c10bf6d7718ef69c6bbc1cdf64cd8ff04",
      "tree": "89c04bb1b6f41275fa71aec9bf0df80ef701e59e",
      "parents": [
        "22d7cf239d8a9b009ea7adf86d8826a8a8116d03"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 14 18:02:40 2013 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jan 15 10:37:20 2013 -0800"
      },
      "message": "Fix the single crunch command to return the right error code.\n\nCasting from status_t to int doesn\u0027t work for return values\nif the lower 8 bits are all 0.\n\nChange-Id: I88e910dfe46cb72acd1595352e71da3c8eff4ca9\n"
    },
    {
      "commit": "22d7cf239d8a9b009ea7adf86d8826a8a8116d03",
      "tree": "80b4db57378fff41d163e2980dd9ff0a7b6e6840",
      "parents": [
        "0dae634b06f5dc6039a5aaa9c0f00250e10c6547"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Dec 21 09:54:02 2012 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 02 15:41:52 2013 -0800"
      },
      "message": "Add single crunch command to aapt. do not merge.\n\nPreviously the crunch command would work on a full res folder\nand output a full res folder (with only the drawables). This\nwas only used in the SDK.\n\nThe incremental logic is moved to the SDK build system so we\nchange the crunch command (or rather add a new one) to only\ncrunch a single file.\n\n(cherry picked from commit b1f6ad82dd8d1702617a757a88430604b3131fac)\n\nChange-Id: I3653f67ee321eac37cb8a6d228b1ef6d104ff0be\n"
    },
    {
      "commit": "67b38c44e8b04b97e357664804d593823b2a34ed",
      "tree": "9179968cfd7e832bb87ff45e8e053e4e31ba3f9c",
      "parents": [
        "23cc5d99fcb97c5a369b3ddf7f90505f6bb29363"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Nov 16 15:58:08 2012 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Nov 28 15:32:46 2012 -0800"
      },
      "message": "Cache resource ID lookups in aapt\n\nThis speeds up certain workloads considerably, particularly\nthose involved in buildling apps via the SDK.  Windows-based\nuse should particularly benefit from the change.\n\n(cherry picked from commit d8dde13a63565dcd72bcf03a5088407b737ba793)\n\nChange-Id: I33835bc64ade77688d41e8bfcd371b0a5f59d8fd\n"
    },
    {
      "commit": "4eeb4f664ac6b5901a8e874dcf70c0382295f792",
      "tree": "8b8ff28c8f7aec9bffc45eb32eae82a013d259d1",
      "parents": [
        "838195db8f69968690971977e4b615df39504465"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Thu Nov 08 00:04:29 2012 -0800"
      },
      "committer": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Thu Nov 08 00:39:04 2012 -0800"
      },
      "message": "Add mechanism to kick keyguard to show the assistant\n\nFixes bug 7499778\n\nChange-Id: Ic9ea514feb489feeee6716f40bdb9792842f9515\n"
    },
    {
      "commit": "bfec0a8616bc197ee3b7b71be6fed1939d0c3c4d",
      "tree": "72832bb9442488065ceae24e5d1ade9297d9f584",
      "parents": [
        "bb8abae507119612b4168b951354516b0bf7112d"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Mon Nov 05 20:05:22 2012 -0800"
      },
      "committer": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Mon Nov 05 20:27:38 2012 -0800"
      },
      "message": "Add isSafeModeEnabled() API to WindowManagerService\n\nThis adds a means of determining when the device is in safe mode,\nas required by keyguard to disabled some features.\n\nChange-Id: I31d357e6738c92e1837f9e0263e5f3f4de66315a\n"
    },
    {
      "commit": "c48b0b940d632b9862ff6aa32665e37fe9e50845",
      "tree": "409e0ace2155f38c196a12f2e4e28282bfb9fde5",
      "parents": [
        "891b703f7b1e0e396d16477cc66a286da7161b49"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Oct 17 18:38:49 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Oct 18 13:59:51 2012 -0700"
      },
      "message": "Layoutlib: Read and close XML files as soon as possible.\n\nBecause passing an InputStream to KXML does not close the\nstream after the file has been parsed, the files are staying\nlocked on windows until the gc and finalizers are run.\n\nThis change preload the XML files and close their stream,\nand then pass the content in a stream to the parser.\n\nChange-Id: Iabe27989dc616ec9e7de88e52b1ec3af9f007f7c\n"
    },
    {
      "commit": "891b703f7b1e0e396d16477cc66a286da7161b49",
      "tree": "9014f76e1ca354199b55e224eabd246cc9e022f2",
      "parents": [
        "e13ae648504661ca158d15aa415568e351b380c4"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Oct 16 19:56:03 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Oct 17 17:15:31 2012 -0700"
      },
      "message": "Update layoutlib for jb mr1.\n\nStatus bar displayed on all devices.\nUpdate logic for displaying nav bar to whether or not\ndevice has soft button.\n\nUpdate navigation buttons to new look.\nRemove battery and signal from navigation bar.\n\nChange-Id: I8241d71269a17126218a3062ba727e379a8e6c25\n"
    },
    {
      "commit": "6dfd0b39a63559999a769f93d5cdb48abe675344",
      "tree": "359dca57c2f65588bfdf06ccad73e63171829063",
      "parents": [
        "732d88e14e4418feba1b80cf1d6010cddb1d5de5"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Oct 15 14:38:31 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Oct 15 15:14:44 2012 -0700"
      },
      "message": "Fix SDK layout rendering in Eclipse.\n\nChange-Id: I0e9e85632012c0929b987ee9d0ccf7c25eece322\n"
    },
    {
      "commit": "33877e15b8bfc50bd874027689a4794aa93b923d",
      "tree": "f2315456796e88f0623bf4fed1f2a43a49f3696d",
      "parents": [
        "786d10921b2c525ed22b78ec40ae2554eec85912",
        "5962b12bedc4a1d0354816c1cd6b06ba04f6d807"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sun Oct 07 11:48:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Oct 07 11:48:50 2012 -0700"
      },
      "message": "Merge \"Adds showWhenLocked attribute to Activities.\" into jb-mr1-dev"
    },
    {
      "commit": "5962b12bedc4a1d0354816c1cd6b06ba04f6d807",
      "tree": "b9918fad07cf0e0ff84d510b6e17b31cf48394f9",
      "parents": [
        "88400d3a31139c40c4014faf86c243647087ef6c"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Oct 05 14:45:52 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sat Oct 06 13:09:58 2012 -0700"
      },
      "message": "Adds showWhenLocked attribute to Activities.\n\nThe new attribute allows an Activity such as the alarm to appear\non all users screens.\n\nBug: 7213805 fixed.\nChange-Id: If7866b13d88c04af07debc69e0e875d0adc6050a\n"
    },
    {
      "commit": "c38c9be031ddad5cf551b55458889f11e01dc5b2",
      "tree": "12902e6c1bf90145600bebe0aaa847cd243025f6",
      "parents": [
        "b29088540b2ecb3046277fbeb5ee1c87abe74d95"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Oct 04 13:16:19 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 05 14:39:23 2012 -0700"
      },
      "message": "Coordinate screen on with the window manager.\n\nBug: 7267457\nChange-Id: Ic2c322253639e1f0b2e4e72a7b145025d0240f93\n"
    },
    {
      "commit": "f752202bee88e31ce765483ba2efa6999ae9c9ad",
      "tree": "bdab562d4383a67f3806617d2ca3aa3e53862d67",
      "parents": [
        "17f36d154f1a8ebe72fc35af332f5c0069503364"
      ],
      "author": {
        "name": "Adam Cohen",
        "email": "adamcohen@google.com",
        "time": "Wed Oct 03 20:03:18 2012 -0700"
      },
      "committer": {
        "name": "Adam Cohen",
        "email": "adamcohen@google.com",
        "time": "Thu Oct 04 17:53:01 2012 -0700"
      },
      "message": "Plumbing to allow keyguard to be shown with user switcher (issue 7175023)\n\n-\u003e Also reduced calls to lockNow, and moved this call in ActivityManagerService\n\nChange-Id: I9ba34ca902f7c0f71fa4ec302104688ca8d11f55\n"
    },
    {
      "commit": "c428aae6429c3fd5e2037c3793af399d9f6e23bf",
      "tree": "ea5452cc311e5440b6e3dbce5f856fbc8915b653",
      "parents": [
        "2e307a61a3730e6b65906f575d85258b197e3494"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Oct 03 16:38:22 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Oct 03 18:07:23 2012 -0700"
      },
      "message": "Fix issue #7267494, issue #7212347\n\n7267494 Calendar is not syncing\nCheck for whether a content provider is dead before returning\nit.  This is kind-of a band-aid, but probably the right thing\nto do; I\u0027m just not sure exactly the full details of why this\nproblem is happening.  Hopefully this \"fixes\" it, though I don\u0027t\nhave a way to repro to tell.\n\n7212347 System power off dialog is only visible to user 0\nMake it visible.  Also turn on some battery debugging stuff and\nclean it up so we can just keep it.\n\nChange-Id: I5add25bf2a763c8dfe1df23bc5c753a9ea5d157a\n"
    },
    {
      "commit": "1e3b98d47df596d0c4eadbdf60143709f8465b28",
      "tree": "ed63fa39f6d2db3b3a3fd9caf61174129198c6cc",
      "parents": [
        "1f7a09b5df9f859781d9cfa0053fad44c72c2168"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 30 18:58:59 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 01 14:27:34 2012 -0700"
      },
      "message": "New internal API to eliminate poke locks.\n\nAdded a new WindowManager.LayoutParams inputFeatures flag\nto disable automatic user activity behavior when an input\nevent is sent to a window.\n\nAdded a new WindowManager.LayoutParams field userActivityTimeout.\n\nBug: 7165399\nChange-Id: I204eafa37ef26aacc2c52a1ba1ecce1eebb0e0d9\n"
    },
    {
      "commit": "edce6a797878792de2b0bde4360f3171b9e9d9d2",
      "tree": "4ff5110f64b5f48ec341bdb31330b02686936c5c",
      "parents": [
        "933a7546c857dba7704a15b7f7f7847934f14912"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 30 15:52:02 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 30 16:23:05 2012 -0700"
      },
      "message": "Remove clearUserActivityTimeout().\n\nThis function is not implemented and not needed.\n\nBug: 7165399\nChange-Id: Ib1c50fabad6292ccf670404ba70aeb1242c4614d\n"
    },
    {
      "commit": "120664816a9bf325b618d8dd40febae2e3636ec8",
      "tree": "8a7b681cd87903f806b49504442d42a6921f1579",
      "parents": [
        "29dcd656dfa4c22855b12fb6ee7d6e2e4c4844c1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 28 18:21:36 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 28 18:21:36 2012 -0700"
      },
      "message": "Get rid of preventScreenOn().\n\nBug: 7165399\nChange-Id: I1968265ecd74fff4d85efd2ca03b1983425ea518\n"
    },
    {
      "commit": "62c82e4d92cc0b856059f905d81885f7808a0e7d",
      "tree": "74203a2312cd0c51235e4686f2162811aebea1e5",
      "parents": [
        "cef440f2a2bb8b6e8d082d12a67dc21f2ee65e3c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 26 01:30:41 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 26 15:24:27 2012 -0700"
      },
      "message": "Make DreamManagerService more robust.\n\nClearly isolated the DreamManagerService and DreamController\nresponsibilities.  DreamManagerService contains just enough logic to\nmanage the global synchronous behaviors.  All of the asynchronous\nbehaviors are in DreamController.\n\nAdded a new PowerManager function called nap() to request the device\nto start napping.  If it is a good time to nap, then the\nPowerManagerService will call startDream() on the DreamManagerService\nto start dreaming.\n\nFixed a possible multi-user issue by explicitly tracking for\nwhich user a dream service is being started and stopping dreams\nwhen the current user changes.  The user id is also passed to\nbindService() to ensure that the dream has the right environment.\n\nFix interactions with docks and the UI mode manager.  It is\nimportant that we always send the ACTION_DOCK_EVENT broadcast\nto the system so that it can configure audio routing and the like.\nWhen docked, the UI mode manager starts a dock app if there is\none, otherwise it starts a dream.\n\nThis change resolves issues with dreams started for reasons other\nthan a user activity timeout.\n\nBug: 7204211\nChange-Id: I3193cc8190982c0836319176fa2e9c4dcad9c01f\n"
    },
    {
      "commit": "0122a3db313d3a7b55e0dee5eae1d7798c0d55be",
      "tree": "a09e249293ad45d890ad6c01b3481d2ddcf4ae00",
      "parents": [
        "2832136bb6fcace61ef078051e94aa0a841aac15"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Sep 26 10:11:54 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Sep 26 11:14:50 2012 -0700"
      },
      "message": "Fix writing text version of styleable IDs. do not merge.\n\n(cherry picked from commit d16047434bca24b2811de7ea9d22de6ee0f87f79)\n\nChange-Id: Ic679080d5157daf77c35516c8f682bd13e2b4d96\n"
    },
    {
      "commit": "ca94050705ff1886e622a09c2691a76e92c0f9d8",
      "tree": "c4f73c1cfc2b02c9adfc8d650b04f759cae165f1",
      "parents": [
        "93fd0f7a83f61d4d673b73e002bd9ad7d6ce562b",
        "50a94b86307793ca9d4d8f8564e5f2ba78fdde14"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Sep 25 09:27:40 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Sep 25 09:27:45 2012 -0700"
      },
      "message": "Merge into jb-mr1-dev\n\nChange-Id: I5a9970a011de789aaeb1c4c4ed58ae750071b135\n"
    },
    {
      "commit": "6d51571835737c7502a2e111ee9dc2527ebad984",
      "tree": "8298f3a36bdfbdb95a4fdd52681f82e7f396d31b",
      "parents": [
        "08681adda06f4699f85838861170fbb062c9fdfe"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 20 16:06:08 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Sep 21 19:49:43 2012 -0700"
      },
      "message": "Allow acquiring ContentProviders across users.\n\nOtherwise services like SystemUI will always open content://-style\nUris as USER_OWNER.  Surfaces through createPackageContextAsUser()\nwhich points all ContentResolver operations towards a given user.\n\nStart using in RemoteViews, so that Notifications correctly resolve\nimage Uris to the sending user.  Also add user support for \"content\"\nshell tool.\n\nBug: 7202982\nChange-Id: I8cb7fb8a812e825bb0b5833799dba87055ff8699\n"
    },
    {
      "commit": "dbf30edf7647939966747c27a65d00cd52d32fda",
      "tree": "217eae51740ea5d42d60f8f66709c22dcaa0ff38",
      "parents": [
        "7b6ec1f6fd4f2858063d2d441b6118ac22da5569"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 19 13:08:12 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 19 13:32:21 2012 -0700"
      },
      "message": "Update preloaded-classes for JB-MR1\n\nBug: 5213043\nChange-Id: I13fa58fded8e47d2f11d1fbe6724bd81ce35276a\n"
    },
    {
      "commit": "a41d5db2350108c1d2eceb83b677faed6b7893a8",
      "tree": "2d22f9db5827180b3864273395a96b87aa43ab45",
      "parents": [
        "9ff22e41d05aa66bede1e72767d67dcc2f2d500e",
        "79c95c3b50ff332f9c92430fd10a15eb648a0b02"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Sep 17 12:08:36 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 17 12:08:36 2012 -0700"
      },
      "message": "am 79c95c3b: am 5de96035: am 31820a35: Merge \"Add --output-text-symbols option to aapt.\"\n\n* commit \u002779c95c3b50ff332f9c92430fd10a15eb648a0b02\u0027:\n  Add --output-text-symbols option to aapt.\n"
    },
    {
      "commit": "9ff22e41d05aa66bede1e72767d67dcc2f2d500e",
      "tree": "40a0c5875283ac28e0e93ffdb6bdcb92aae8696b",
      "parents": [
        "178af5948d71c841278081c712506f7a7fca34b9",
        "8a67598eb780560b7efe4e1d9944c7cbcf83bbb1"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Sep 17 12:08:29 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 17 12:08:29 2012 -0700"
      },
      "message": "am 8a67598e: am cc9747ed: am d7252571: Merge \"Add --error-on-failed-insert option to aapt.\"\n\n* commit \u00278a67598eb780560b7efe4e1d9944c7cbcf83bbb1\u0027:\n  Add --error-on-failed-insert option to aapt.\n"
    },
    {
      "commit": "5de9603529ee01a416b5fa31074197565fde4482",
      "tree": "f610ba56bf685b21bbc81bbf4d6ed8b2d5640ef7",
      "parents": [
        "cc9747ed45302956a3ec9dd21f7b950b837dbfdd",
        "31820a35b2cf864a8dcb71d43e6fd21d54f49a2d"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Sep 17 12:03:19 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 17 12:03:19 2012 -0700"
      },
      "message": "am 31820a35: Merge \"Add --output-text-symbols option to aapt.\"\n\n* commit \u002731820a35b2cf864a8dcb71d43e6fd21d54f49a2d\u0027:\n  Add --output-text-symbols option to aapt.\n"
    },
    {
      "commit": "cc9747ed45302956a3ec9dd21f7b950b837dbfdd",
      "tree": "4f5bf98606f87858b78a95bd8dd09e9e6a797716",
      "parents": [
        "f5437ee86a34751fa6d441b95282feb315e19eb6",
        "d72525718ea7ef3e1f97cf557365b143c8919a5b"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Sep 17 12:03:12 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 17 12:03:12 2012 -0700"
      },
      "message": "am d7252571: Merge \"Add --error-on-failed-insert option to aapt.\"\n\n* commit \u0027d72525718ea7ef3e1f97cf557365b143c8919a5b\u0027:\n  Add --error-on-failed-insert option to aapt.\n"
    },
    {
      "commit": "f5de650ff1e161ea135c828e43515895343d2c0f",
      "tree": "4398a8d071f3322512e6c4d5f153fb9564865d6a",
      "parents": [
        "7714a2429b192c88e134ff67b969121bbaeb5457"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Sep 11 14:45:22 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Sep 11 18:19:00 2012 -0700"
      },
      "message": "Add --output-text-symbols option to aapt.\n\nLibrary projects in the SDK are built using --non-constant-id\nto generate a temporary R.java class.\nWhen the library is packaged with the application to generate an\napk, the R class is recreated with the proper IDs due to all the\nresources coming from the app and all the libraries.\n\nHowever for large apps with many libraries (each with their own\nR class in their package), this means a lot of unnecessary IDs:\nall R classes contains all the IDs including for resources from\nby projects they don\u0027t have access through the dependency graph.\n\nFor really large apps (X,000 resources), with lots of libraries\n(10+), this can generate tens of thousands of resources, which\ncan trigger dalvik\u0027s limit of 65K fields and methods per dex\nfiles.\n\nThis changes lets aapt generate not only the R class but a simple\ntext file containing the list of all those IDs so that it is\neasier to parse back. The SDK build system will not ask aapt\nto generate the R class of the libraries (through the\n--extra-packages option), instead it will then read this\nfile to know what IDs are needed for each library and generate\na much smaller R class for each library (using the same text\nfile output from compiling all the resources to get the final\ninteger value).\n\nChange-Id: I4db959fec372cf3ead9950e4b2b82fa1ae7eed2d\n"
    },
    {
      "commit": "7714a2429b192c88e134ff67b969121bbaeb5457",
      "tree": "13d8c0eeb0d9eee815e3444fd236924306861fe3",
      "parents": [
        "2415841c370d855d7f3a3e6a537e641c69a57097"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Sep 05 17:49:21 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Sep 11 18:17:22 2012 -0700"
      },
      "message": "Add --error-on-failed-insert option to aapt.\n\nThe new SDK build system give the ability to insert\nversionCode/Name and min/targetSdkVersion in the manifest\nbut aapt won\u0027t replace those if they already exist.\n\nThe main problem is that aapt doesn\u0027t actually fail when\nit doesn\u0027t replace them, making the output not what the\ndeveloper wanted.\n\nThis patch set adds an option to aapt to make it return\nan error if the insert failed because the attribute\nalready existed.\n\nChange-Id: I8938ec1238da407a8562c974e9598db39001ffd9\n"
    },
    {
      "commit": "9d9ece3c1e16001b63244459cdf4b428f4272d2e",
      "tree": "55fd2ecdeaaa791af1d21083482367d5b4d75d76",
      "parents": [
        "ce3ef0abaa17b12dc0626b06421d58bf06974ae2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Sep 10 15:33:52 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Sep 10 19:58:21 2012 -0700"
      },
      "message": "Animations for user switching.\n\nThe window manager now has a facility to provide a full-screen\nanimation, which the activity manager uses every time a user\nswitch happens.\n\nThe current animation is just a simple dumb slide until we get\na design from UX.\n\nAlso some cleanup: moved the portrait task animations to the\ndefault config so we always have an animation for them, and finally\ngot the java symbol stuff out of public.xml.\n\nChange-Id: I726f77422b2ef5f2d98f961f8da003e045f0ebe8\n"
    },
    {
      "commit": "e3e5349874fd1534cafe6f8c1cd28bf4f53181c3",
      "tree": "c04417c39b8415c08dc573d87bef0abd1f9fd462",
      "parents": [
        "be3267aad1faacc0ee767e746018e7b795a9b151",
        "61d09810a7b478810adc15af2495136255377e25"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 09 16:13:11 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Sep 09 16:13:11 2012 -0700"
      },
      "message": "am 61d09810: am 3150feef: am bfe1ab82: Merge \"Fix aapt to get expat header files from the approved location.\"\n\n* commit \u002761d09810a7b478810adc15af2495136255377e25\u0027:\n  Fix aapt to get expat header files from the approved location.\n"
    },
    {
      "commit": "3150feef0b27ad34370904eb12875805f6c84e8a",
      "tree": "3ee1c94081aad597863e2b624fc3cc87efe403b6",
      "parents": [
        "3f3ce8adc7a4fcb5ec23a317c8b5063b61ac15a2",
        "bfe1ab825731d365fef169deab646d7ceeafc998"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 09 16:09:15 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Sep 09 16:09:15 2012 -0700"
      },
      "message": "am bfe1ab82: Merge \"Fix aapt to get expat header files from the approved location.\"\n\n* commit \u0027bfe1ab825731d365fef169deab646d7ceeafc998\u0027:\n  Fix aapt to get expat header files from the approved location.\n"
    },
    {
      "commit": "ee15e1547531919effd77fa546daffaef94691a4",
      "tree": "c1d9284ef63cfb465dfab4151151a06a9c8bea40",
      "parents": [
        "bb60bc26020f3aabc50aa93ad9bf812af7f48f9c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 09 14:45:32 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 09 14:45:32 2012 -0700"
      },
      "message": "Fix aapt to get expat header files from the approved location.\n\nChange-Id: Ic7c796e048cfe98ee355c18b3708fee5ea716e2e\n"
    },
    {
      "commit": "01fcb728940c12498ab2c7503fe86a849725ea12",
      "tree": "95aaf7f4269fdd2d88ce2a7ca70374cf0be2b165",
      "parents": [
        "37ee53420ce47860807eb8eaeb454c12fa46797b",
        "8a802dbdabdfd27692c2e38b2c3adafe95566106"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Sep 07 10:17:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 07 10:17:55 2012 -0700"
      },
      "message": "Merge \"Use \"ldrtl\" and \"ldltr\" config qualifiers for RTL / LTR resources\" into jb-mr1-dev"
    },
    {
      "commit": "4b15ab66a064ba4fae3bb1ff474d8b5fc38e5490",
      "tree": "3e2ed5cd1404542b4ee79b5785a86e9fbac5b96d",
      "parents": [
        "f92b57ca8beb231e06a792db88ef3a4605901a7d"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 06 19:25:53 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 06 19:30:14 2012 -0700"
      },
      "message": "Fixing the build\n\nChange-Id: I123b128f5d9e50653d8d4ed73ea07920b370b0fb\n"
    },
    {
      "commit": "1cf70bbf96930662cab0e699d70b62865766ff52",
      "tree": "2173762d4e4d7be76f5691cebd74e1bd8f2b8543",
      "parents": [
        "fa8d83d90444354e8eca6ca0e080bc917e5a1f32"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Aug 06 10:53:34 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 06 18:56:17 2012 -0700"
      },
      "message": "Screen magnification - feature - framework.\n\nThis change is the initial check in of the screen magnification\nfeature. This feature enables magnification of the screen via\nglobal gestures (assuming it has been enabled from settings)\nto allow a low vision user to efficiently use an Android device.\n\nInteraction model:\n\n1. Triple tap toggles permanent screen magnification which is magnifying\n   the area around the location of the triple tap. One can think of the\n   location of the triple tap as the center of the magnified viewport.\n   For example, a triple tap when not magnified would magnify the screen\n   and leave it in a magnified state. A triple tapping when magnified would\n   clear magnification and leave the screen in a not magnified state.\n\n2. Triple tap and hold would magnify the screen if not magnified and enable\n   viewport dragging mode until the finger goes up. One can think of this\n   mode as a way to move the magnified viewport since the area around the\n   moving finger will be magnified to fit the screen. For example, if the\n   screen was not magnified and the user triple taps and holds the screen\n   would magnify and the viewport will follow the user\u0027s finger. When the\n   finger goes up the screen will clear zoom out. If the same user interaction\n   is performed when the screen is magnified, the viewport movement will\n   be the same but when the finger goes up the screen will stay magnified.\n   In other words, the initial magnified state is sticky.\n\n3. Pinching with any number of additional fingers when viewport dragging\n   is enabled, i.e. the user triple tapped and holds, would adjust the\n   magnification scale which will become the current default magnification\n   scale. The next time the user magnifies the same magnification scale\n   would be used.\n\n4. When in a permanent magnified state the user can use two or more fingers\n   to pan the viewport. Note that in this mode the content is panned as\n   opposed to the viewport dragging mode in which the viewport is moved.\n\n5. When in a permanent magnified state the user can use three or more\n   fingers to change the magnification scale which will become the current\n   default magnification scale. The next time the user magnifies the same\n   magnification scale would be used.\n\n6. The magnification scale will be persisted in settings and in the cloud.\n\nNote: Since two fingers are used to pan the content in a permanently magnified\n   state no other two finger gestures in touch exploration or applications\n   will work unless the uses zooms out to normal state where all gestures\n   works as expected. This is an intentional tradeoff to allow efficient\n   panning since in a permanently magnified state this would be the dominant\n   action to be performed.\n\nDesign:\n\n1. The window manager exposes APIs for setting accessibility transformation\n   which is a scale and offsets for X and Y axis. The window manager queries\n   the window policy for which windows will not be magnified. For example,\n   the IME windows and the navigation bar are not magnified including windows\n   that are attached to them.\n\n2. The accessibility features such a screen magnification and touch\n   exploration are now impemented as a sequence of transformations on the\n   event stream. The accessibility manager service may request each\n   of these features or both. The behavior of the features is not changed\n   based on the fact that another one is enabled.\n\n3. The screen magnifier keeps a viewport of the content that is magnified\n   which is surrounded by a glow in a magnified state. Interactions outside\n   of the viewport are delegated directly to the application without\n   interpretation. For example, a triple tap on the letter \u0027a\u0027 of the IME\n   would type three letters instead of toggling magnified state. The viewport\n   is updated on screen rotation and on window transitions. For example,\n   when the IME pops up the viewport shrinks.\n\n4. The glow around the viewport is implemented as a special type of window\n   that does not take input focus, cannot be touched, is laid out in the\n   screen coordiates with width and height matching these of the screen.\n   When the magnified region changes the root view of the window draws the\n   hightlight but the size of the window does not change - unless a rotation\n   happens. All changes in the viewport size or showing or hiding it are\n   animated.\n\n5. The viewport is encapsulated in a class that knows how to show,\n   hide, and resize the viewport - potentially animating that.\n   This class uses the new animation framework for animations.\n\n6. The magnification is handled by a magnification controller that\n   keeps track of the current trnasformation to be applied to the screen\n   content and the desired such. If these two are not the same it is\n   responsibility of the magnification controller to reconcile them by\n   potentially animating the transition from one to the other.\n\n7. A dipslay content observer wathces for winodw transitions, screen\n   rotations, and when a rectange on the screen has been reqeusted. This\n   class is responsible for handling interesting state changes such\n   as changing the viewport bounds on IME pop up or screen rotation,\n   panning the content to make a requested rectangle visible on the\n   screen, etc.\n\n8. To implement viewport updates the window manger was updated with APIs\n   to watch for window transitions and when a rectangle has been requested\n   on the screen. These APIs are protected by a signature level permission.\n   Also a parcelable and poolable window info class has been added with\n   APIs for getting the window info given the window token. This enables\n   getting some useful information about a window. There APIs are also\n   signature protected.\n\nbug:6795382\n\nChange-Id: Iec93da8bf6376beebbd4f5167ab7723dc7d9bd00\n"
    },
    {
      "commit": "8a802dbdabdfd27692c2e38b2c3adafe95566106",
      "tree": "7b933dc6d1dcfb6cd4a7d0a349ce642641712c07",
      "parents": [
        "18e876806718e28edaa3cd9bb0262a9b400bc82b"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Wed Sep 05 13:12:02 2012 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Sep 06 11:13:24 2012 -0700"
      },
      "message": "Use \"ldrtl\" and \"ldltr\" config qualifiers for RTL / LTR resources\n\n- we cannot use \"rtl\" / \"ltr\" qualifiers as they can conflict with ISO-639 Alpha-3\ncodespace which uses 3 letters for identifying a language code (and could use either\n\"rtl\" or \"ltr\" strings for defining a language in the future).\n\n- we are using instead \"ldrtl\" for RTL and \"ldltr\" for LTR resources. Those qualifiers\nare defined by more than 3 chars and outside of what is defined into ISO-639. They\nare also more understandable as \"ld\" prefix is for \"layoutdirection\"\n\nChange-Id: Id43e948103707e09bef63ebd54ac1779dde58e72\n"
    },
    {
      "commit": "de66e670a7753283fd5cdc75c2cd42c93cd499c0",
      "tree": "f898e4a410f610ac3eacd048393b9d97d46d9658",
      "parents": [
        "035ce2ca92742894f7f906c93d7d217c647aa19a",
        "5eb51defe39f765d6ebe868dba7f187f7dd990f6"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Sep 04 15:02:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 15:02:06 2012 -0700"
      },
      "message": "Merge \"Add some new native deletage to layoutlib.\" into jb-mr1-dev"
    },
    {
      "commit": "035ce2ca92742894f7f906c93d7d217c647aa19a",
      "tree": "091278302dd86f6009db3d86ff95dd607fef8c11",
      "parents": [
        "167611811d4fd6318bc366128590701274488e84",
        "5f7979993979466c79ab4f38d83c6f2aca361662"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Tue Sep 04 15:01:03 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 15:01:03 2012 -0700"
      },
      "message": "Merge \"Add support for \"-rtl\" in resources\" into jb-mr1-dev"
    },
    {
      "commit": "5eb51defe39f765d6ebe868dba7f187f7dd990f6",
      "tree": "b9ac2e0fcfa5e65d3558236751ff8018b467232f",
      "parents": [
        "34a75df63533914bbca95a82d2c89ca374b2645d"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Sep 04 13:59:17 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Sep 04 15:00:52 2012 -0700"
      },
      "message": "Add some new native deletage to layoutlib.\n\nChange-Id: Ib53df6c944ecd9680bf929afe03b08bcaa61ad70\n"
    },
    {
      "commit": "20e809870d8ac1e5b848f2daf51b2272ef89bdfc",
      "tree": "c863b6c684d1d3b21752880bc9f52bd749545d01",
      "parents": [
        "2701f325a6d4acd920637d2ff6fd6972a9cf836b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 31 19:00:44 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 04 10:39:21 2012 -0700"
      },
      "message": "Add registering for explicit users.\n\nNew API to register as an explicit user, which allows you to\nalso select ALL to see broadcasts for all users.\n\nNew BroadcastReceiver API to find out which user the broadcast\nwas sent to.\n\nUse this in app widget service to handle per-user package broadcasts\nand boot completed broadcasts correctly.\n\nChange-Id: Ibbe28993bd4aa93900c79e412026c27863019eb8\n"
    },
    {
      "commit": "a492c3a7b2c18426fd0cb4d017eacbc368195dc5",
      "tree": "67744a8d91519d997cb761a697600041d74165fa",
      "parents": [
        "00453e7a0182b50cf01e65c97650b526284fe084"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 23 19:48:44 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 31 15:42:45 2012 -0700"
      },
      "message": "Initial draft of high-level multi-display APIs.\n\nThis patch introduces the ability to create a Context that\nis bound to a Display.  The context gets its configuration and\nmetrics from that display and is able to provide a WindowManager\nthat is bound to the display.\n\nTo make it easier to use, we also add a new kind of Dialog\ncalled a Presentation.  Presentation takes care of setting\nup the context as needed and watches for significant changes\nin the display configuration.  If the display is removed,\nthen the presentation simply dismisses itself.\n\nChange-Id: Idc54b4ec84b1ff91505cfb78910cf8cd09696d7d\n"
    },
    {
      "commit": "5ac72a29593ab9a20337a2225df52bdf4754be02",
      "tree": "dc5310e556b3662cb5f097b30e700a26d50a4db5",
      "parents": [
        "e217ee4d7a8223289a1af7363627c69956c46d41"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 29 18:32:08 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 30 14:33:22 2012 -0700"
      },
      "message": "Improve multi-user broadcasts.\n\nYou can now use ALL and CURRENT when sending broadcasts, to specify\nwhere the broadcast goes.\n\nSticky broadcasts are now correctly separated per user, and registered\nreceivers are filtered based on the requested target user.\n\nNew Context APIs for more kinds of sending broadcasts as users.\n\nUpdating a bunch of system code that sends broadcasts to explicitly\nspecify which user the broadcast goes to.\n\nMade a single version of the code for interpreting the requested\ntarget user ID that all entries to activity manager (start activity,\nsend broadcast, start service) use.\n\nChange-Id: Ie29f02dd5242ef8c8fa56c54593a315cd2574e1c\n"
    },
    {
      "commit": "7767eac3232ba2fb9828766813cdb481d6a97584",
      "tree": "41cc717fb9f11190e9da3dc12d61faf23a22861d",
      "parents": [
        "1552586283f329253edc4786a6cf40c5bb69ea36"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 23 18:25:40 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 24 13:53:13 2012 -0700"
      },
      "message": "Keep track of whether an app is installed for each user.\n\nThis add a new per-user state for an app, indicating whether\nit is installed for that user.\n\nAll system apps are always installed for all users (we still\nuse disable to \"uninstall\" them).\n\nNow when you call into the package manager to install an app,\nit will only install the app for that user unless you supply\na flag saying to install for all users.  Only being installed\nfor the user is just the normal install state, but all other\nusers have marked in their state for that app that it is not\ninstalled.\n\nWhen you call the package manager APIs for information about\napps, uninstalled apps are treated as really being not visible\n(somewhat more-so than disabled apps), unless you use the\nGET_UNINSTALLED_PACKAGES flag.\n\nIf another user calls to install an app that is already installed,\njust not for them, then the normal install process takes place\nbut in addition that user\u0027s installed state is toggled on.\n\nThe package manager will not send PACKAGE_ADDED, PACKAGE_REMOVED,\nPACKAGE_REPLACED etc broadcasts to users who don\u0027t have a package\ninstalled or not being involved in a change in the install state.\nThere are a few things that are not quite right with this -- for\nexample if you go through a full install (with a new apk) of an\napp for one user who doesn\u0027t have it already installed, you will\nstill get the PACKAGED_REPLACED messages even though this is\ntechnically the first install for your user.  I\u0027m not sure how\nmuch of an issue this is.\n\nWhen you call the existing API to uninstall an app, this toggles\nthe installed state of the app for that user to be off.  Only if\nthat is the last user user that has the app uinstalled will it\nactually be removed from the device.  Again there is a new flag\nyou can pass in to force the app to be uninstalled for all users.\n\nAlso fixed issues with cleaning external storage of apps, which\nwas not dealing with multiple users.  We now keep track of cleaning\neach user for each package.\n\nChange-Id: I00e66452b149defc08c5e0183fa673f532465ed5\n"
    },
    {
      "commit": "5f7979993979466c79ab4f38d83c6f2aca361662",
      "tree": "90c8b098b3c9a53a90c039641b0b7ba379d6b4eb",
      "parents": [
        "5e8e41e41aecd2a4951659a1f3507f3371e0cc47"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Jun 15 20:16:41 2012 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Aug 23 14:55:33 2012 -0700"
      },
      "message": "Add support for \"-rtl\" in resources\n\n- fix bug #7035019 Need to have \"-rtl\" support for Resource\n\nChange-Id: Ic82145c2ac672729d8a6c695a5f343276a1a0a2c\n"
    },
    {
      "commit": "98365d7663cbd82979a5700faf0050220b01084d",
      "tree": "8a4ff3e0a8afd814ed29609b26aa1c6ade2367f6",
      "parents": [
        "848c2dc93b6795e171f3dd6f64ea0be65e2762ca"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 19 20:30:52 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 19 22:42:08 2012 -0700"
      },
      "message": "Refactor for multi-display support.\n\nSplit WindowManagerImpl into two parts, the WindowManager\ninterface implementation remains where it is but the global\ncommunications with the window manager are now handled by\nthe WindowManagerGlobal class.  This change greatly simplifies\nthe challenge of having separate WindowManager instances\nfor each Context.\n\nRemoved WindowManagerImpl.getDefault().  This represents the\nbulk of this change.  Most of the usages of this method were\neither to perform global functions (now handled by WindowManagerGlobal)\nor to obtain the default display (now handled by DisplayManager).\n\nExplicitly associate each new window with a display and make\nthe Display object available to the View hierarchy.\n\nAdd stubs for some new display manager API features.\n\nStart to split apart the concepts of display id and layer stack.\nsince they operate at different layers of abstraction.\nWhile it\u0027s true that each logical display uniquely corresponds to a\nsurface flinger layer stack, it is not necessarily the case that\nthey must use the same ids.  Added Display.getLayerStack()\nand started using it in places where it was relatively easy to do.\n\nChange-Id: I29ed909114dec86807c4d3a5059c3fa0358bea61\n"
    },
    {
      "commit": "d2ae85d41ec1651dd1bf4c33fe31833ba5c5cff5",
      "tree": "a13ab2da158404c627977d9316501332cd863dd8",
      "parents": [
        "aeca6898041437a7e2ba68c1421b9be90669154d",
        "832cb229cd748505c90f74ae8154fc3557d61a73"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Fri Aug 17 13:03:15 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 17 13:03:15 2012 -0700"
      },
      "message": "Merge \"Adding a thumbnail scale down animation\" into jb-mr1-dev"
    },
    {
      "commit": "79af1dd54c16cde063152922b42c96d72ae9eca8",
      "tree": "142abf0037d20841712e88d65febcbbd92dd5561",
      "parents": [
        "f1b995f9d049cb5c7225b3b17f09369237a83ca2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 16 16:42:52 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 17 10:36:08 2012 -0700"
      },
      "message": "Switch public APIs to use new UserHandle class for identifying users.\n\nGets rid of \"yet another integer\" confusion.\n\nChange-Id: Id07ea7307aea7c62f0087c6663a1f1c08e2e5dee\n"
    },
    {
      "commit": "50a94b86307793ca9d4d8f8564e5f2ba78fdde14",
      "tree": "35173d50ebccc518c109ad3ff59f04a3d200360e",
      "parents": [
        "31bc7f9f218106343bf3b574d9598dfc8e6426a7"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Thu Aug 16 14:37:28 2012 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Thu Aug 16 14:54:26 2012 -0700"
      },
      "message": "Allow multiple \u0027parcelable\u0027 declarations in aidl files\n\nThis solves a problem with declaring multiple Parcelable static inner\nclasses.\n\nChange-Id: I5e42b412d6d937df19a388988be5aa58a8dbc3e4\n"
    },
    {
      "commit": "832cb229cd748505c90f74ae8154fc3557d61a73",
      "tree": "ff2c3b98b5bd2c91c195f39d320b14d56062a8f1",
      "parents": [
        "32e7bd9fe1343e365dc40c8d215b0d98df99a2de"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Fri Apr 13 09:32:47 2012 -0700"
      },
      "committer": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Thu Aug 16 00:14:03 2012 -0700"
      },
      "message": "Adding a thumbnail scale down animation\n\nRecents animation will temporarily look a bit\nwrong, but a subsequent change will fix this."
    },
    {
      "commit": "9630704ed3b265f008a8f64ec60a33cf9dcd3345",
      "tree": "0c905e55ac062b625bf7a9ced250f05213d7873f",
      "parents": [
        "ff7e6ef4f18ff94a9836492ff3ccd1ba7f6804f3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 27 15:51:34 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 15 03:06:24 2012 -0700"
      },
      "message": "Power manager rewrite.\n\nThe major goal of this rewrite is to make it easier to implement\npower management policies correctly.  According, the new\nimplementation primarily uses state-based rather than event-based\ntriggers for applying changes to the current power state.\n\nFor example, when an application requests that the proximity\nsensor be used to manage the screen state (by way of a wake lock),\nthe power manager makes note of the fact that the set of\nwake locks changed.  Then it executes a common update function\nthat recalculates the entire state, first looking at wake locks,\nthen considering user activity, and eventually determining whether\nthe screen should be turned on or off.  At this point it may\nmake a request to a component called the DisplayPowerController\nto asynchronously update the display\u0027s powe state.  Likewise,\nDisplayPowerController makes note of the updated power request\nand schedules its own update function to figure out what needs\nto be changed.\n\nThe big benefit of this approach is that it\u0027s easy to mutate\nmultiple properties of the power state simultaneously then\napply their joint effects together all at once.  Transitions\nbetween states are detected and resolved by the update in\na consistent manner.\n\nThe new power manager service has is implemented as a set of\nloosely coupled components.  For the most part, information\nonly flows one way through these components (by issuing a\nrequest to that component) although some components support\nsending a message back to indicate when the work has been\ncompleted.  For example, the DisplayPowerController posts\na callback runnable asynchronously to tell the PowerManagerService\nwhen the display is ready.  An important feature of this\napproach is that each component neatly encapsulates its\nstate and maintains its own invariants.  Moreover, we do\nnot need to worry about deadlocks or awkward mutual exclusion\nsemantics because most of the requests are asynchronous.\n\nThe benefits of this design are especially apparent in\nthe implementation of the screen on / off and brightness\ncontrol animations which are able to take advantage of\nframework features like properties, ObjectAnimator\nand Choreographer.\n\nThe screen on / off animation is now the responsibility\nof the power manager (instead of surface flinger).  This change\nmakes it much easier to ensure that the animation is properly\ncoordinated with other power state changes and eliminates\nthe cause of race conditions in the older implementation.\n\nThe because of the userActivity() function has been changed\nso that it never wakes the device from sleep.  This change\nremoves ambiguity around forcing or disabling user activity\nfor various purposes.  To wake the device, use wakeUp().\nTo put it to sleep, use goToSleep().  Simple.\n\nThe power manager service interface and API has been significantly\nsimplified and consolidated.  Also fixed some inconsistencies\nrelated to how the minimum and maximum screen brightness setting\nwas presented in brightness control widgets and enforced behind\nthe scenes.\n\nAt present the following features are implemented:\n\n- Wake locks.\n- User activity.\n- Wake up / go to sleep.\n- Power state broadcasts.\n- Battery stats and event log notifications.\n- Dreams.\n- Proximity screen off.\n- Animated screen on / off transitions.\n- Auto-dimming.\n- Auto-brightness control for the screen backlight with\n  different timeouts for ramping up versus ramping down.\n- Auto-on when plugged or unplugged.\n- Stay on when plugged.\n- Device administration maximum user activity timeout.\n- Application controlled brightness via window manager.\n\nThe following features are not yet implemented:\n\n- Reduced user activity timeout for the key guard.\n- Reduced user activity timeout for the phone application.\n- Coordinating screen on barriers with the window manager.\n- Preventing auto-rotation during power state changes.\n- Auto-brightness adjustment setting (feature was disabled\n  in previous version of the power manager service pending\n  an improved UI design so leaving it out for now).\n- Interpolated brightness control (a proposed new scheme\n  for more compactly specifying auto-brightness levels\n  in config.xml).\n- Button / keyboard backlight control.\n- Change window manager to associated WorkSource with\n  KEEP_SCREEN_ON_FLAG wake lock instead of talking\n  directly to the battery stats service.\n- Optionally support animating screen brightness when\n  turning on/off instead of playing electron beam animation\n  (config_animateScreenLights).\n\nChange-Id: I1d7a52e98f0449f76d70bf421f6a7f245957d1d7\n"
    },
    {
      "commit": "756220bd1912535840388a6743830d2e59ad4964",
      "tree": "ee97c666d4bb1f015fd3e89463af09c712ce47e4",
      "parents": [
        "863b19bc8fcfa436011781b67a237fcce3cb703a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 14 16:45:30 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 14 16:51:38 2012 -0700"
      },
      "message": "Add API to create new contexts with custom configurations.\n\nThis allows you to, say, make a Context whose configuration\nis set to a different density than the actual density of the device.\n\nThe main API is Context.createConfigurationContext().  There is\nalso a new API on ContextThemeWrapper that allows you to apply\nan override context before its resources are retrieved, which\naddresses some feature requests from developers to be able to\ncustomize the context their app is running in.\n\nChange-Id: I88364986660088521e24b567e2fda22fb7042819\n"
    },
    {
      "commit": "c386ee56b995ec6562c4a20238ace2297562834b",
      "tree": "22a977ad36270904817dd8f4d36d378e847d9eae",
      "parents": [
        "aef4af4cd122ca5713110ccc7539828ce6e2f642",
        "c1c55afb474dd85a6205bc8ab94065f3ac38aa77"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Aug 08 12:03:43 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 08 12:03:43 2012 -0700"
      },
      "message": "am c1c55afb: am e67f8c8c: Merge \"Normalize output from aapt d xmltree\"\n\n* commit \u0027c1c55afb474dd85a6205bc8ab94065f3ac38aa77\u0027:\n  Normalize output from aapt d xmltree\n"
    },
    {
      "commit": "c1c55afb474dd85a6205bc8ab94065f3ac38aa77",
      "tree": "abbf38d69839d0a2e4f3070aee28a7422a27d678",
      "parents": [
        "64ed6b2cfa6a4bb58f3f8a9b59d840cdce049c80",
        "e67f8c8c279e20fff5f426eccd062b709e6280ed"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Aug 08 12:01:35 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 08 12:01:35 2012 -0700"
      },
      "message": "am e67f8c8c: Merge \"Normalize output from aapt d xmltree\"\n\n* commit \u0027e67f8c8c279e20fff5f426eccd062b709e6280ed\u0027:\n  Normalize output from aapt d xmltree\n"
    },
    {
      "commit": "e67f8c8c279e20fff5f426eccd062b709e6280ed",
      "tree": "e53054cf3446cc91228a1ea5ae48b0c803ca5cc6",
      "parents": [
        "d77d17c28d6f120ceb648747c7e2ef1a50215700",
        "429dad687bcb5f00587e8b91b3a614502907aaa1"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Aug 08 11:21:28 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 08 11:21:29 2012 -0700"
      },
      "message": "Merge \"Normalize output from aapt d xmltree\""
    },
    {
      "commit": "537915828b45693e846a126292e026c5b4f05152",
      "tree": "6c47dca99eda5792f1fc006e0f20088ad4048db1",
      "parents": [
        "ec0feefd4422db1151aee722732d8c9528f6dfa8",
        "7d19e0242faac8017033dabb872cdf1542fa184c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 08 10:22:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 10:22:49 2012 -0700"
      },
      "message": "Merge \"More mult-user API work.\" into jb-mr1-dev"
    },
    {
      "commit": "7d19e0242faac8017033dabb872cdf1542fa184c",
      "tree": "ab12d3c6597bc42bc7c0dca10ded546192c5c249",
      "parents": [
        "03ad783c5078c7bd487e47bb2a2af67dfbe89f1a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 07 19:12:33 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 07 19:19:22 2012 -0700"
      },
      "message": "More mult-user API work.\n\n- You can now use android:singleUser with receivers and providers.\n- New API to send ordered broadcasts as a user.\n- New Process.myUserHandle() API.\n\nFor now I am trying out \"user handle\" as the name for the numbers\nrepresenting users.\n\nChange-Id: I754c713ab172494bb4251bc7a37a17324a2e235e\n"
    },
    {
      "commit": "b14c215eb2dd617214d867d38449eb1d1214d41c",
      "tree": "7d29a2b19aab3b7d5a8f49e080f394535f90ff10",
      "parents": [
        "53bec9af8b415af87cc51c065c8bec02e26759a6",
        "4b4b44381b133e9ab7418806c046774b7fd31393"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 07 13:20:50 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 07 13:20:50 2012 -0700"
      },
      "message": "am 4b4b4438: am 33c5670b: Merge \"Fewer warnings in aidl generated code.\"\n\n* commit \u00274b4b44381b133e9ab7418806c046774b7fd31393\u0027:\n  Fewer warnings in aidl generated code.\n"
    },
    {
      "commit": "4b4b44381b133e9ab7418806c046774b7fd31393",
      "tree": "b5fce87b6f9346cf9957938ee63c5debb5134deb",
      "parents": [
        "d7cb30484ba94ecb8f4844f45742bf2ffc004599",
        "33c5670b315810f1f3dc66fe8cd38f7b3e05f3ac"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 07 13:18:53 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 07 13:18:53 2012 -0700"
      },
      "message": "am 33c5670b: Merge \"Fewer warnings in aidl generated code.\"\n\n* commit \u002733c5670b315810f1f3dc66fe8cd38f7b3e05f3ac\u0027:\n  Fewer warnings in aidl generated code.\n"
    },
    {
      "commit": "b327c41e125a3be15a6c6c4dba318fe1b2392605",
      "tree": "f2a28c312caed39bd47fb8788aa514847a8476e6",
      "parents": [
        "dfac68eacc60c130e54345d98bd45c99573cb627"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 07 10:34:02 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 07 10:34:02 2012 -0700"
      },
      "message": "Fewer warnings in aidl generated code.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d19196\nChange-Id: If054e60c19dc73fe32f55d0fa1054309565a6de6\n"
    },
    {
      "commit": "758143ecfedbe08cc6c4fed0ad8ad7a854194ca4",
      "tree": "c7102e7f3b5f71180cb23d1a13c01158f558feb6",
      "parents": [
        "4cb3384772cf7015a4e05789470123efb07219d9"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Aug 06 16:40:27 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Aug 06 23:49:38 2012 -0700"
      },
      "message": "Window position not reported if the window is not moved.\n\n1.If a window is shown but never moved the window window\n  is never notified for its current location. Therefore,\n  accessibility nodes do not contain correct bounds in\n  screen coordinates.\n\nbug:6926295\n\nChange-Id: I7df18b095d33ecafffced75aba9e4f4693b0c393\n"
    },
    {
      "commit": "b49a065d9904567624a088857ecd1626fad91511",
      "tree": "e5a7dce90e878f97e3351a9ee1faa2f799155c39",
      "parents": [
        "cbb6b41aeff9d70bee30ac670237e45b35689cc0"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Aug 03 19:03:24 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Aug 03 19:03:24 2012 -0700"
      },
      "message": "Fix build with density methods.\n\nChange-Id: I95c0a4f12db40f200a3a004394763beaef904232\n"
    },
    {
      "commit": "437a0fbd57662e1d9d260da6f62ff83da2769a7e",
      "tree": "7df1f02b3bcc2d3fc4e22926e55c33e712879419",
      "parents": [
        "a7ce1551a6c05d4f983e283b413cadb1ddc1026d",
        "59c009776dae5ccbdfb93d7151ff2065ca049dc3"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Aug 02 09:20:14 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 02 09:20:14 2012 -0700"
      },
      "message": "Merge \"Introduce multiple displays with DisplayContent.\" into jb-mr1-dev"
    },
    {
      "commit": "59c009776dae5ccbdfb93d7151ff2065ca049dc3",
      "tree": "45ffbc8d93e8f245ed1c78ffa64b8bcc5ae59355",
      "parents": [
        "fa14d824d235c33b137a429c3eb6818f273407ab"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Jul 30 12:10:24 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Aug 02 08:47:44 2012 -0700"
      },
      "message": "Introduce multiple displays with DisplayContent.\n\nFix a couple of bugs that turned up.\nRemove touch/focus from display. Add iterators for access.\nRespond to comments. Remove TODOs, and some deviceId parameters.\n\nChange-Id: Idcdb4f1979aa7b14634d450fd0333d6eff26994d\n"
    },
    {
      "commit": "908aecc3a63c5520d5b11da14a9383f885b7d126",
      "tree": "11806df7f127ea695474ae7ab490a95c19965508",
      "parents": [
        "b1980049855fd6c53e109b44ff012a053f9436f7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 31 16:37:34 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 01 10:54:39 2012 -0700"
      },
      "message": "Start moving away from DisplayMetrics.DENSITY_DEVICE.\n\nThis puts in most of the infrastructure needed to allow us to\nswitch between different densities at run time.  The main remaining\nuses of the global are to initialize the Bitmap object (not sure\nwhat to do about that since it doesn\u0027t have anything passed in\nthe constructor to get this information from), and being able to\nload drawables if we need a different density than what was preloaded\nby zygote.\n\nChange-Id: Ifdbfd6b7a5c59e6aa22e63b95b78d96af3d96848\n"
    },
    {
      "commit": "39df578acddb739d7608e458533904bf5814c0da",
      "tree": "e64efcaf4249b57618dcd0a5d48de16c600895f6",
      "parents": [
        "f063fa0c30be849d0e067fb40d6f388b7c0d8340"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Jul 27 14:30:59 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Jul 27 14:30:59 2012 -0700"
      },
      "message": "Fix build.\n\nChange-Id: I52bbebae38912a4fb71c96174b3d4d8eb6be10c1\n"
    },
    {
      "commit": "aa871b0ff0fb38112a1693e80e1146cecc5db21d",
      "tree": "9382c5c05be896dcb3f79b0ae0d2af7b9ecce034",
      "parents": [
        "fa25bf5382467b1018bd9af7f1cb30a23d7d59f7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 25 20:06:22 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 25 20:06:22 2012 -0700"
      },
      "message": "Fix build.\n\nChange-Id: Ife2fd58447205407e41ce3d27e28a705b744bede\n"
    },
    {
      "commit": "fa25bf5382467b1018bd9af7f1cb30a23d7d59f7",
      "tree": "2b65e9c19319112d1873db55a02303a43d68547a",
      "parents": [
        "bbcb123d4923b0c2f36af7b2ade82f5d7832357d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 23 19:26:30 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 25 18:56:16 2012 -0700"
      },
      "message": "Add display manager skeleton.\n\nThe purpose of this change is to remove direct reliance on\nSurfaceFlinger for describing the size and characteristics of\ndisplays.\n\nThis patch also starts to make a distinction between logical displays\nand physical display devices.  Currently, the window manager owns\nthe concept of a logical display whereas the new display\nmanager owns the concept of a physical display device.\n\nChange-Id: I7e0761f83f033be6c06fd1041280c21500bcabc0\n"
    },
    {
      "commit": "212dfccc74e37521f771a52c8209b049fe984793",
      "tree": "9e7efaa15e993c0a04b234443d151d1365185b7a",
      "parents": [
        "95f1158908d990bbf954d7cc78f3f214a6c84f1f",
        "be925017201ad547a72e8d1e333dbc7eae3fc76f"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jul 20 10:00:11 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 20 10:00:11 2012 -0700"
      },
      "message": "am be925017: am b71393bd: Merge \"Fix aapt -G to properly support class attr in fragment.\" into jb-dev\n\n* commit \u0027be925017201ad547a72e8d1e333dbc7eae3fc76f\u0027:\n  Fix aapt -G to properly support class attr in fragment.\n"
    },
    {
      "commit": "be925017201ad547a72e8d1e333dbc7eae3fc76f",
      "tree": "d07536a4132acc745f4170342898aeee1ceffd56",
      "parents": [
        "1c7a9b2ec9a75fe5975bd35482d74dc3d07e6205",
        "b71393bd34a48eeb622292e78f43b99e374a5e3a"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jul 19 14:30:39 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 19 14:30:39 2012 -0700"
      },
      "message": "am b71393bd: Merge \"Fix aapt -G to properly support class attr in fragment.\" into jb-dev\n\n* commit \u0027b71393bd34a48eeb622292e78f43b99e374a5e3a\u0027:\n  Fix aapt -G to properly support class attr in fragment.\n"
    },
    {
      "commit": "095cd2e2d14e4fe25b66df54861fb66000a25adc",
      "tree": "b16c8e094f998b23b77a68e364e70f45629f13b5",
      "parents": [
        "12a5475205243bc2d069a87d2c7d4982b5f4d11d"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jul 18 18:06:09 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jul 19 09:06:03 2012 -0700"
      },
      "message": "Fix aapt -G to properly support class attr in fragment.\n\nThe code added attributes android:name and class to a\nKeyedVector under the same key (fragment) so the 2nd\nadd (android:name) removed class with was never checked.\n\nThis replace the value type in the KeyedVector to be\nVector\u003cNamespaceAttributePair\u003e instead of just\nNamespaceAttributePair.\n\nChange-Id: I009b8a8cca878191661c2a63bb14c967d230498d\n"
    },
    {
      "commit": "c9c9a48e7bafae63cb35a9aa69255e80aba83988",
      "tree": "80295bae9e6546d9d7fb604af0fa772ebd18a4fc",
      "parents": [
        "dd0d0ba654cea3051e44ba9ae20ac4b269e123c0"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Jul 16 08:46:07 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Jul 16 08:46:11 2012 -0700"
      },
      "message": "Removing a workaround for incorrect window position on window move.\n\n1. The window manager was not notifying a window when the latter\n   has been moved. This was causing incorrect coordinates of the\n   nodes reported to accessibility services. To workaround that\n   we have carried the correct window location when making a\n   call from the accessibility layer into a window. Now the\n   window manager notifies the window when it is moved and the\n   workaround is no longer needed. This change takes it out.\n\n2. The left and right in the attach info were not updated properly\n   after a report that the window has moved.\n\n3. The accessibility manager service was calling directly methods\n   on the window manager service without going through the interface\n   of the latter. This leads to unnecessary coupling and in the\n   long rung increases system complexity and reduces maintability.\n\nbug:6623031\n\nChange-Id: Iacb734b1bf337a47fad02c827ece45bb2f53a79d\n"
    },
    {
      "commit": "54059cd38de24bbffc2525b56955535df73bf1eb",
      "tree": "693abe2c8ae261ba276ef46f72e9c7b16cb2adf4",
      "parents": [
        "23316a1ef8868bc641ed72d42839c20b7b86fadb",
        "15c15eaac51c0c375d18fb70cd1bd066d87b034e"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jul 10 18:38:21 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 10 18:38:21 2012 -0700"
      },
      "message": "am 15c15eaa: Merge \"Replace LruCache implementation for layoutlib. do not merge.\" into jb-dev\n\n* commit \u002715c15eaac51c0c375d18fb70cd1bd066d87b034e\u0027:\n  Replace LruCache implementation for layoutlib. do not merge.\n"
    },
    {
      "commit": "105b78bb310a75dc44e0baa49fe7d20341cc0f15",
      "tree": "f724600922f997278723d8d650e469a8ce561f09",
      "parents": [
        "fbf885b652272013f44da71e9f77923333bf62eb"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Jul 10 15:17:25 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Jul 10 15:17:25 2012 -0700"
      },
      "message": "Add missing interface method.\n\nFix broken build.\n\nChange-Id: I6644df218e11a35330a985bdcb9ace33723330f5\n"
    },
    {
      "commit": "54a18ef7ad9da65a95f4d383952ae6268f8a4f34",
      "tree": "627ce814923bcd9cedc56c43b57faeddd2f1bea5",
      "parents": [
        "40a4ab130a3e3c99afb1a57e9aa30de03a89b51e"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jul 09 15:53:40 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jul 10 12:51:30 2012 -0700"
      },
      "message": "Replace LruCache implementation for layoutlib. do not merge.\n\nThe android version depends on a custom version of LinkedHashMap\nwhich is not present on desktop VMs. This new implementation is done\nin a way that minimizes the difference between the two.\n\nAlso some minor fixes.\n\n(cherry picked from commit 01b6c755dbcf24e71192dc44757e2eea2a426091)\n\nChange-Id: Idc7bca820e472e281a3024a5b610fd55606cf428\n"
    },
    {
      "commit": "01b6c755dbcf24e71192dc44757e2eea2a426091",
      "tree": "ca4347753ccb79e7dc4307a8a54387a087c8d1a1",
      "parents": [
        "42eae21fb9abcff50ad69ab2faf2ffbdbd3b1156"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jul 09 15:53:40 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jul 10 11:48:10 2012 -0700"
      },
      "message": "Replace LruCache implementation for layoutlib.\n\nThe android version depends on a custom version of LinkedHashMap\nwhich is not present on desktop VMs. This new implementation is done\nin a way that minimizes the difference between the two.\n\nAlso some minor fixes.\n\nChange-Id: Ib27b0419f9d0e6ba4d4abb26b2ccd968af59eba8\n"
    },
    {
      "commit": "429dad687bcb5f00587e8b91b3a614502907aaa1",
      "tree": "ee2b4ad0c456c6dde1cd81979565b72e9c389fa6",
      "parents": [
        "dc99555d61d50820b398096bb774ee56b2500476"
      ],
      "author": {
        "name": "Shachar Shemesh",
        "email": "lingnu@gmail.com",
        "time": "Sun Jul 08 06:37:48 2012 +0300"
      },
      "committer": {
        "name": "Shachar Shemesh",
        "email": "lingnu@gmail.com",
        "time": "Sun Jul 08 06:37:48 2012 +0300"
      },
      "message": "Normalize output from aapt d xmltree\n\nWhen using aapt dump xmltree to dump an XML which has a content element with newlines, the output contains a\nnewline. This makes it very difficult, sometimes impossible, to understand what is part of the content, and\nwhat is the meta-data.\n\nWe now pass XML content through the same normalizer used for other tags.\n\nChange-Id: I327321520fac563eb32aecaf796f2473866697fc\n"
    },
    {
      "commit": "a4b7f2f75e7803193429ec1179fb5e2eb1c6fbda",
      "tree": "287a64b2e558134e4f80ce5ae2356405204a369b",
      "parents": [
        "6a15634f601617b815935bc7fdbe0c356d020f44"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 21 11:28:41 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 25 19:19:15 2012 -0700"
      },
      "message": "Use two fingers to work some magic...\n\nChange-Id: Ibcb3dbd3d158c22da8277e544d81fb47eadccd49\n"
    },
    {
      "commit": "cee303fac4324d32e78e3d174e256f39d70d820f",
      "tree": "69c8100ab55d4cd0990b21260a730dc5723b4d1b",
      "parents": [
        "17f006ea92b802ddc63f36f0ea876cabca278eb7",
        "cc6cf51b80eabd199f797f40b76f7980c343962b"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jun 22 14:36:49 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 22 14:36:49 2012 -0700"
      },
      "message": "am cc6cf51b: am 8c71784e: Merge \"Initialize mJunkPath to false\"\n\n* commit \u0027cc6cf51b80eabd199f797f40b76f7980c343962b\u0027:\n  Initialize mJunkPath to false\n"
    },
    {
      "commit": "cc6cf51b80eabd199f797f40b76f7980c343962b",
      "tree": "1db1e94e54cec4da8d771afd1d802c72c21d3c2d",
      "parents": [
        "8a0f63bb588138a9e4f1ef7830e94282efe57c6b",
        "8c71784e9e83e914135e996591aa7903edd2fd96"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jun 22 14:34:54 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 22 14:34:54 2012 -0700"
      },
      "message": "am 8c71784e: Merge \"Initialize mJunkPath to false\"\n\n* commit \u00278c71784e9e83e914135e996591aa7903edd2fd96\u0027:\n  Initialize mJunkPath to false\n"
    },
    {
      "commit": "dbcfed9e2cad3175109aca4b55bbe41da7238a4f",
      "tree": "0d00f26132e510b1bb0c8758ecd09d9c57410064",
      "parents": [
        "a9543a3dad0da58f30580bdf99b76bc2ab97a2df"
      ],
      "author": {
        "name": "Haitao Feng",
        "email": "haitao.feng@intel.com",
        "time": "Fri Jun 22 09:20:26 2012 +0800"
      },
      "committer": {
        "name": "Haitao Feng",
        "email": "haitao.feng@intel.com",
        "time": "Fri Jun 22 09:20:26 2012 +0800"
      },
      "message": "Initialize mJunkPath to false\n\nChange-Id: Ib48bb1d91736d27f055528c3ba275237ff5ada07\n"
    },
    {
      "commit": "752e7b3bf624f72261bb789c5a6e8d34b419c8f1",
      "tree": "521ccf8d6879ba1671c611cbd92c10505b4734a7",
      "parents": [
        "e66ad7c900f7b5cfedd0056769b8d19306aa396f",
        "58a8d8d2d4b15cd4abf010680181359823ebfda4"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 19 18:09:14 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 19 18:09:14 2012 -0700"
      },
      "message": "am 58a8d8d2: am 0e302bc8: Merge \"Disable debug output in SDK layoutlib.\" into jb-dev\n\n* commit \u002758a8d8d2d4b15cd4abf010680181359823ebfda4\u0027:\n  Disable debug output in SDK layoutlib.\n"
    },
    {
      "commit": "58a8d8d2d4b15cd4abf010680181359823ebfda4",
      "tree": "2d5eb4858fa0599a93671be236fe41949585a544",
      "parents": [
        "f99e81a6ff22b6b93dd057802e553f66c0a7b97b",
        "0e302bc884fa4b25eb391d625f2fb0eddc25d9b7"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 19 18:06:37 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 19 18:06:37 2012 -0700"
      },
      "message": "am 0e302bc8: Merge \"Disable debug output in SDK layoutlib.\" into jb-dev\n\n* commit \u00270e302bc884fa4b25eb391d625f2fb0eddc25d9b7\u0027:\n  Disable debug output in SDK layoutlib.\n"
    },
    {
      "commit": "4d7f301f94b9d2dda0ef109e9991ad2d77442f75",
      "tree": "f7a5bbab6a84abe5b9272b3e294e130c80e4ea72",
      "parents": [
        "1b36a68f607538bd090c33b31bd418169657ff6c"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 19 18:01:50 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 19 18:02:21 2012 -0700"
      },
      "message": "Disable debug output in SDK layoutlib.\n\nBug: 6697442\n\nChange-Id: I9741761342ea220c158aa124089430b0db80bf7e\n"
    },
    {
      "commit": "89e1ad05e7cca990f46d5b13b8b5892de1736faa",
      "tree": "1fc609bf0f392d6a34348cb4b174b30aee6d85d0",
      "parents": [
        "e526f14e3bc6b82e7977708c13683b21a0df7935",
        "bce1011dd2a371c587d2e39ad8c3d446b63049d0"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "raphael@google.com",
        "time": "Thu Jun 14 14:46:25 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 14 14:46:25 2012 -0700"
      },
      "message": "am bce1011d: resolved conflicts for merge of 8cf489c1 to jb-dev-plus-aosp\n\n* commit \u0027bce1011dd2a371c587d2e39ad8c3d446b63049d0\u0027:\n  Layoutlib Create: Find dependencies.\n"
    },
    {
      "commit": "bce1011dd2a371c587d2e39ad8c3d446b63049d0",
      "tree": "3e99f4996919ff44364c895e95999f3f9c03d37b",
      "parents": [
        "eb02d40c6d068ffcbb822910c5449b7081d1ae51",
        "8cf489c1f509ad2414a887035ad3d6996d1931a3"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "raphael@google.com",
        "time": "Thu Jun 14 14:14:45 2012 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "raphael@google.com",
        "time": "Thu Jun 14 14:14:45 2012 -0700"
      },
      "message": "resolved conflicts for merge of 8cf489c1 to jb-dev-plus-aosp\n\nChange-Id: I06608e3c122b8f321429d457c51aa2213dd238b4\n"
    },
    {
      "commit": "8cf489c1f509ad2414a887035ad3d6996d1931a3",
      "tree": "9a2fc3f8ab1860b3cec34dc35eefd5fb7b452311",
      "parents": [
        "cfe75518ef23efede1359274c91c732c0ac7ccf3",
        "0f160c95122276c40ca84afe6fcd2b9cd800e35c"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Thu Jun 14 11:34:31 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 14 11:34:31 2012 -0700"
      },
      "message": "am 0f160c95: Merge \"Layoutlib Create: Find dependencies.\"\n\n* commit \u00270f160c95122276c40ca84afe6fcd2b9cd800e35c\u0027:\n  Layoutlib Create: Find dependencies.\n"
    },
    {
      "commit": "4306096a4351030cab4ea413b5e87460b60a84bf",
      "tree": "359ee2d75645d0d641f052fde11469628194add8",
      "parents": [
        "f01f6b6d379c911a2c1e350bc758cea26bfe6d9d"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Wed Jun 13 00:22:47 2012 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Wed Jun 13 15:44:54 2012 -0700"
      },
      "message": "Layoutlib Create: Find dependencies.\n\nUsage: layoutlib_create --list-deps /path/to/layoutlib.jar\n\nPrints:\n- all classes found in the Jar and the types they use (the dependencies).\n- all the dependencies missing from the Jar and what uses them.\n\nChange-Id: I8b2674df127e1494feed7a653282e88e4d2f5494\n"
    },
    {
      "commit": "b1add0b8f251e237297ff7bad6a1107ef7d760f2",
      "tree": "c4f2ab40b07b03dd32baf96afe33d95c7a2da142",
      "parents": [
        "830dfe41d164184741cc9f446d3fb6c39987469e",
        "6892f1ec9670432f1cab71813592077bea991a8b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 12 13:00:15 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 12 13:00:15 2012 -0700"
      },
      "message": "am 6892f1ec: am 0f6471ac: Merge \"Fix issue #6641368: can\\\u0027t launch gallery\" into jb-dev\n\n* commit \u00276892f1ec9670432f1cab71813592077bea991a8b\u0027:\n  Fix issue #6641368: can\u0027t launch gallery\n"
    },
    {
      "commit": "6892f1ec9670432f1cab71813592077bea991a8b",
      "tree": "13dfe731323f7a32f0854d54da80aa8d3f54f438",
      "parents": [
        "19e046c4d2f11e6ed5d324122996080942e94569",
        "0f6471ace77387560988964ed0679f843bba6f1f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 12 12:41:36 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 12 12:41:36 2012 -0700"
      },
      "message": "am 0f6471ac: Merge \"Fix issue #6641368: can\\\u0027t launch gallery\" into jb-dev\n\n* commit \u00270f6471ace77387560988964ed0679f843bba6f1f\u0027:\n  Fix issue #6641368: can\u0027t launch gallery\n"
    },
    {
      "commit": "2bd8d0403be62df679f0f94ab4d84c9ae9a2e918",
      "tree": "64bab80cac947253c02794f0aea7d765aecb5e3b",
      "parents": [
        "a7e3a1e0e7d308e7e78a1992038a34485d04ab29"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 11 12:27:05 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 11 12:27:05 2012 -0700"
      },
      "message": "Fix issue #6641368: can\u0027t launch gallery\n\nThis is a revert of 1db36528b12395b9ed9bf8a1005a6d4ace737627,\nbut with comments added so I don\u0027t make this mistake again. :)\n\nChange-Id: I053216279e3721f08f32f561bb989736ef619f82\n"
    },
    {
      "commit": "f22eb96301aa1c4e0f7ac317daa64a617c21855c",
      "tree": "d85eda22d166b57293c05ae2e916eb63352f5f24",
      "parents": [
        "4835c17b13c08693cf9a370df86d660818f8d391",
        "c9fe6568f3e7e4d9dc6da072afc929b9a81001ed"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Jun 05 18:48:00 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 18:48:00 2012 -0700"
      },
      "message": "am c9fe6568: am 9e22d9c5: Merge \"Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\"\n\n* commit \u0027c9fe6568f3e7e4d9dc6da072afc929b9a81001ed\u0027:\n  Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\n"
    },
    {
      "commit": "c9fe6568f3e7e4d9dc6da072afc929b9a81001ed",
      "tree": "7b99d88b9c2c59836870644894ba9996cbbd5f74",
      "parents": [
        "44ff9b8f9294e015031fc9293974604771e5efdd",
        "9e22d9c514457c4b163d03b9241e4e28b1698368"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Jun 05 18:43:49 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 18:43:49 2012 -0700"
      },
      "message": "am 9e22d9c5: Merge \"Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\"\n\n* commit \u00279e22d9c514457c4b163d03b9241e4e28b1698368\u0027:\n  Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\n"
    },
    {
      "commit": "41bdb03ffb81d7bcbf6fa35d7b40e196635c86f3",
      "tree": "5eedea44e81362a897f143d2c43bbc60f669b370",
      "parents": [
        "36ac43ba9982a78b4a047c8970776505a3fab4da"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed May 30 18:02:55 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Jun 05 14:30:39 2012 -0700"
      },
      "message": "Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\n\nWith SDK 10.6 without _DARWIN_UNLIMITED_STREAMS aapt sometimes fails\nright away with the error \"Too many open files\" when calling fopen().\n\nChange-Id: Ifa7bd8a9530d706aa47f98be8186f1aefe943d76\n"
    },
    {
      "commit": "f6447b1878290960883314c8faa5ff705390f216",
      "tree": "99a5dd1f004e508fbe1ecab3cad6b205e2b390fb",
      "parents": [
        "0c60fabff2ee70a1ecaec2ab3a6cd79bd3021709",
        "8c8297f295be46e5ffefff73edbcd00e1848055f"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Jun 05 11:20:41 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 05 11:20:41 2012 -0700"
      },
      "message": "Merge \"Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\""
    },
    {
      "commit": "0eedd4be12c7bdcfe84ab28aa5fc0d07cb9334e7",
      "tree": "4c43e9c07258f5d78407b8cdfc9e0e3b80682d81",
      "parents": [
        "bce6f97202dba948808e702a7a75d9ed8f46f537",
        "9f374b9de5a557a7977b24d41f45c3464cfff8c1"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Tue Jun 05 09:55:22 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 09:55:22 2012 -0700"
      },
      "message": "am 9f374b9d: am 44ff9b8f: am 36ac43ba: Merge \"Tweak default ignore-assets path\"\n\n* commit \u00279f374b9de5a557a7977b24d41f45c3464cfff8c1\u0027:\n  Tweak default ignore-assets path\n"
    },
    {
      "commit": "9f374b9de5a557a7977b24d41f45c3464cfff8c1",
      "tree": "7d2eba9b27fcddaf67d48fa22e1bebc2ff0b6dca",
      "parents": [
        "b25605cd7111bcab41ec10547f015bd2d6215c91",
        "44ff9b8f9294e015031fc9293974604771e5efdd"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Tue Jun 05 08:45:20 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 08:45:20 2012 -0700"
      },
      "message": "am 44ff9b8f: am 36ac43ba: Merge \"Tweak default ignore-assets path\"\n\n* commit \u002744ff9b8f9294e015031fc9293974604771e5efdd\u0027:\n  Tweak default ignore-assets path\n"
    },
    {
      "commit": "44ff9b8f9294e015031fc9293974604771e5efdd",
      "tree": "91eabfeb2a567799b801af23f5e59b23d735488c",
      "parents": [
        "3df4e1a2f1b4f0eb110c8983107b7c7fa21ed338",
        "36ac43ba9982a78b4a047c8970776505a3fab4da"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Tue Jun 05 08:41:16 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 08:41:16 2012 -0700"
      },
      "message": "am 36ac43ba: Merge \"Tweak default ignore-assets path\"\n\n* commit \u002736ac43ba9982a78b4a047c8970776505a3fab4da\u0027:\n  Tweak default ignore-assets path\n"
    },
    {
      "commit": "71ebf2830494e353dee797424bd2ebbc4fea2ff3",
      "tree": "b042acb954219718637c6136d7e67deed0f9d187",
      "parents": [
        "d7f13b4f0abea27b7ce947b69eab4716c4a2b67f",
        "fcd738240a7d716e21721514202caa5bfb2dcb98"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 04 11:13:27 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 04 11:13:27 2012 -0700"
      },
      "message": "am fcd73824: am dd251cab: Merge \"Fix build.\" into jb-dev\n\n* commit \u0027fcd738240a7d716e21721514202caa5bfb2dcb98\u0027:\n  Fix build.\n"
    },
    {
      "commit": "fcd738240a7d716e21721514202caa5bfb2dcb98",
      "tree": "caaa71a10f3154c2925f0c5b060126f74f1a81bf",
      "parents": [
        "5bf8f01be1cd9800e53b30117fe9ea7fb1153301",
        "dd251cab5b6e5b590cc0aeae8be8f885a7794e72"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 04 11:09:00 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 04 11:09:00 2012 -0700"
      },
      "message": "am dd251cab: Merge \"Fix build.\" into jb-dev\n\n* commit \u0027dd251cab5b6e5b590cc0aeae8be8f885a7794e72\u0027:\n  Fix build.\n"
    },
    {
      "commit": "bb47cf66ec72adff895d0e8b94c26f5d438be49a",
      "tree": "58824f18a2e3e751de8ef06e5cb2883bb19a36a5",
      "parents": [
        "6593be0c200f69d932e40e05e9df54b89c157c48"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 04 10:51:17 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 04 10:51:17 2012 -0700"
      },
      "message": "Fix build.\n\nChange-Id: I41415fed99d98406bc033289428bde59475c2917\n"
    },
    {
      "commit": "e0219c8baa9d63b3794f90ab772f1c19ecb74ec4",
      "tree": "cc5f1052ffefb73dcd46da1683d6bcfe6eda5adf",
      "parents": [
        "0748a5698776d1a9693a5449ffc983af26cc533b"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Mon Jun 04 10:38:13 2012 -0700"
      },
      "committer": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Mon Jun 04 10:41:38 2012 -0700"
      },
      "message": "Tweak default ignore-assets path\n\nAdd .DS_Store to the list of ignored files that are silently\nignored (other dot-files are ignored but aapt emits a \"(skipping \u003cx\u003e)\"\nmessage.)\n\nAlso, add a \"!\" prefix to the *~ pattern for Emacs/Vim/Gedit backup\nfiles.\n\nFinally, move the !*.scc pattern up in front of the .* pattern, such\nthat it doesn\u0027t match the earlier .* pattern (which is verbose, unlike\n!*.scc).\n\nChange-Id: Id3e96490f1802486aea8c58366d43e9d413971b8\n"
    }
  ],
  "next": "3df4e1a2f1b4f0eb110c8983107b7c7fa21ed338"
}
