)]}'
{
  "log": [
    {
      "commit": "60e1eb4bfa6205cb2b307f9d2e9858f6e8cbb7ca",
      "tree": "980fc56fdb90724fa1949eee339b96088415e88e",
      "parents": [
        "c15d7f63f047149e3fee0f2fc57539fb32856260",
        "03245a8ec46acc7c2b24d3d680ea5b88bd89ce13"
      ],
      "author": {
        "name": "Raphael",
        "email": "raphael@google.com",
        "time": "Mon Jan 31 14:32:56 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 31 14:32:56 2011 -0800"
      },
      "message": "am 03245a8e: Merge \"LayoutLib.Create: support Outer_Inner_Delegate renaming.\" into honeycomb\n\n* commit \u002703245a8ec46acc7c2b24d3d680ea5b88bd89ce13\u0027:\n  LayoutLib.Create: support Outer_Inner_Delegate renaming.\n"
    },
    {
      "commit": "811820f440b24db200e66874d42331023b7cd389",
      "tree": "474c8f6c1d1f5df3a593c8cebe4bfd8c4dbf9258",
      "parents": [
        "c1eb127f4e19c1f86e4b18c2c1daebe2404eeb93"
      ],
      "author": {
        "name": "Raphael",
        "email": "raphael@google.com",
        "time": "Thu Jan 27 16:48:27 2011 -0800"
      },
      "committer": {
        "name": "Raphael",
        "email": "raphael@google.com",
        "time": "Mon Jan 31 13:16:04 2011 -0800"
      },
      "message": "LayoutLib.Create: support Outer_Inner_Delegate renaming.\n\nWhen generating delegates, LayoutLib.Create support renaming\ninner classes. Only one level of inner class is supported.\n\nThe method Outer$Inner#get(...) generates a call to:\n  static Outer_Inner_Delegate#get(Outer instance, Outer$Inner instance, ...)\n\nChange-Id: Ie70f2b8e5e5f311ed9c7f26b7f64637ae6157a51\n"
    },
    {
      "commit": "371de9695508073fbbde8181eb230e99cb045206",
      "tree": "8b725299fe6b9638dad8cc3dc538a23ae86377ac",
      "parents": [
        "bda99568d84530c6442af0602e9c12e6cb897780",
        "a1f5e82f37c77af7b1d630b5bca715d1742f1234"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sat Jan 29 23:07:48 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 29 23:07:48 2011 -0800"
      },
      "message": "am a1f5e82f: am a30063d8: am 25eb0464: Merge \"Normalize output from aapt d\"\n\n* commit \u0027a1f5e82f37c77af7b1d630b5bca715d1742f1234\u0027:\n  Normalize output from aapt d\n"
    },
    {
      "commit": "a1f5e82f37c77af7b1d630b5bca715d1742f1234",
      "tree": "c7b1d7c8c18f5d74370558cbcf48ca6747661096",
      "parents": [
        "71bb59f9e6799083830077dbb7e0f1effdd3faf7",
        "a30063d80c08434ac3c7316f338c6d54110449ab"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sat Jan 29 23:04:50 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 29 23:04:50 2011 -0800"
      },
      "message": "am a30063d8: am 25eb0464: Merge \"Normalize output from aapt d\"\n\n* commit \u0027a30063d80c08434ac3c7316f338c6d54110449ab\u0027:\n  Normalize output from aapt d\n"
    },
    {
      "commit": "25eb04642cb5a72f59a274bbfc92f4f65c6c343e",
      "tree": "6c59e04e7d9b961b49fccdfb139fe87baaa35855",
      "parents": [
        "bbb5a5ce1922a168335811b177cd7341350c15cc",
        "9872bf4a2d4ae1e7ded170c8e74d400fe6be9bfb"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sat Jan 29 22:53:20 2011 -0800"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Sat Jan 29 22:53:20 2011 -0800"
      },
      "message": "Merge \"Normalize output from aapt d\""
    },
    {
      "commit": "13cd966415a5cf83934868751f19bf69fa4ff9df",
      "tree": "e1d42d363911ff0b818a97b092d4d405e5107bce",
      "parents": [
        "66700397496fc6f6d26f9f0b56ead8ef610b9654",
        "e802b59280540ce24ea1db61907a0f1f22f01fad"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sat Jan 29 15:08:07 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 29 15:08:07 2011 -0800"
      },
      "message": "am e802b592: am 2107757d: am bbb5a5ce: Merge \"Make AaptGroupEntry::getMncName accept mnc00\"\n\n* commit \u0027e802b59280540ce24ea1db61907a0f1f22f01fad\u0027:\n  Make AaptGroupEntry::getMncName accept mnc00\n"
    },
    {
      "commit": "e802b59280540ce24ea1db61907a0f1f22f01fad",
      "tree": "cb686057d1c1136b9a763a2191321219fad6ffa2",
      "parents": [
        "3100207be5cb0ef93a5271f24b6f03a2e75291ad",
        "2107757dde0b3159119edcc9084fcb9a87985e88"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sat Jan 29 15:05:30 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 29 15:05:30 2011 -0800"
      },
      "message": "am 2107757d: am bbb5a5ce: Merge \"Make AaptGroupEntry::getMncName accept mnc00\"\n\n* commit \u00272107757dde0b3159119edcc9084fcb9a87985e88\u0027:\n  Make AaptGroupEntry::getMncName accept mnc00\n"
    },
    {
      "commit": "bbb5a5ce1922a168335811b177cd7341350c15cc",
      "tree": "abfdcd3321ec33081bf63095812cf42c7ec0319e",
      "parents": [
        "9720323a5138acafbe30da38d61eeac469b675a4",
        "5ef0b9d72451d4bb65f5a76a05738041ed15664a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sat Jan 29 14:38:48 2011 -0800"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Sat Jan 29 14:38:48 2011 -0800"
      },
      "message": "Merge \"Make AaptGroupEntry::getMncName accept mnc00\""
    },
    {
      "commit": "b353495192ba1acce94b8ab8aeeffe3c9a3bcfac",
      "tree": "122047ba0a782b87812f9ba6a97cabd7b9749fbc",
      "parents": [
        "0982dc6488a921d9d54d23b9180a9acf33c61526"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 28 12:46:12 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 28 16:54:15 2011 -0800"
      },
      "message": "LayoutLib: update with Pair API.\n\nChange-Id: Iba945153f7544872ea84e3311584223aea740e2e\n"
    },
    {
      "commit": "35ea7cd4c0c89122fda0b57af20061645082ffb9",
      "tree": "2b63b680fe7cf913dfb0ea67f9f3cda5a80cd080",
      "parents": [
        "270cbcc16a72f982d84afeb5e3fd3f166936394a"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 28 11:44:21 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 28 11:44:21 2011 -0800"
      },
      "message": "LayoutLib: Update with the new resource map APIs.\n\nChange-Id: I30d83c2bb4569513f4f5e22670cffe938706f105\n"
    },
    {
      "commit": "16584225125acba18b74920b902c798dfead0328",
      "tree": "245cfd24438182060d147d827bbd3db76b688361",
      "parents": [
        "64a2c359aeda59e4bc43d48f31ade919e918ea26"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 27 15:30:39 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 27 15:41:38 2011 -0800"
      },
      "message": "LayoutLib: Properly compute available space to layouts.\n\nAlso display placeholders for status/title/action bars depending\non if the app is a tablet and its theme.\n\nChange-Id: I651c1a2e5cfde165e004c11b236e6df056853dec\n"
    },
    {
      "commit": "31fd1cf7697ef777b41c7a6a20e37ff5d573d732",
      "tree": "a845729a8f3a5ee7884e1c82c3a643738d98d7ab",
      "parents": [
        "5a82d8c58bf91c357c37a82b9f5e5c26f676d847"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 26 17:30:59 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 26 17:30:59 2011 -0800"
      },
      "message": "LayoutLib: put a default image on the quickcontactbadge.\n\nChange-Id: I64b3f4004801ec03f374460384f9a492e66bfaf0\n"
    },
    {
      "commit": "5a82d8c58bf91c357c37a82b9f5e5c26f676d847",
      "tree": "34486ebd0aabece45c26801fe11600cd9934dfcd",
      "parents": [
        "f6926a63dfdc114789a6acc06396ca826eb64418"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 26 16:33:07 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 26 16:34:53 2011 -0800"
      },
      "message": "LayoutLib: properly erase the bitmap when rendering a new session.\n\nThis fix the issue where going from a full theme to a dialog theme\nwould show the dialog on top of the previous rendering.\n\nChange-Id: Ib52b9719f44b04969423547b9de8d039f90b6f46\n"
    },
    {
      "commit": "7d7016e72431ad7ee595d857a19231c69efeb6de",
      "tree": "3acf19d320c2035ac1cc5bcf0efe126f03a72f3c",
      "parents": [
        "315fae2028d4ef73c9ba094a71152e6e853e2690"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jan 25 15:55:16 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jan 25 15:55:16 2011 -0800"
      },
      "message": "LayoutLib: return ViewInfo for all merged items + Build init.\n\nandroid.os.Build is now initialized from the build properties\nparsed from the SDK build.prop file.\n\nChange-Id: If16953215ca90fb0beacb51bf405b89a5c8a34fa\n"
    },
    {
      "commit": "aaa55d3f45744814907d0809befb49281ced462e",
      "tree": "410c86db7d969db7fb45cdcea77d351117a4ba12",
      "parents": [
        "33322052edd6c77b4378e69b66f746f241a80764",
        "4519f07e9c6b993fbe7a3d3df24d71d9450a54f1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 24 15:31:22 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 24 15:31:22 2011 -0800"
      },
      "message": "Merge \"New orientation listener.\" into honeycomb"
    },
    {
      "commit": "82b9232565bfececdb643a94cecdd1bd1cb5c643",
      "tree": "966746b27fd9d02ec000db9fc7be2c75628224be",
      "parents": [
        "67005b05cc76a38a5b3bf6e83957dd03619e9126"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 24 14:03:21 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 24 14:14:53 2011 -0800"
      },
      "message": "LayoutLib: Use special view cookie for include-merge case.\n\nAll items directly under the \u003cmerge\u003e tag now return the view cookie\nof the referencing \u003cinclude\u003e tag using a special class for\neasy differentiation in the calling client.\n\nChange-Id: I7a2a4e642be9564f47e256fd1586012497d34792\n"
    },
    {
      "commit": "4519f07e9c6b993fbe7a3d3df24d71d9450a54f1",
      "tree": "3c642e9c740a54941ab46d80ebc5668ce9ab4cc3",
      "parents": [
        "a6ce081970a78233ba6b9792149ee5f1390cba7b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jan 23 13:16:01 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 24 13:46:57 2011 -0800"
      },
      "message": "New orientation listener.\n\nThe objective in this listener is to be more careful about the\nsignal processing to prevent spurious orientation changes\nand to make all of the tweakable factors physically meaningful.\n\nThe calibration is defined in terms of time constants and\ndoes not assume a particular discrete sampling rate.  This is\nuseful because it allows us to change the accelerometer sampling\ninterval if desired without having to change the calibration.\nMoreover, the accelerometer sampling interval can vary +/- 20ms\nfrom one sample to the next even in normal circumstances.\n\nProposed orientation changes are weighted by confidence factors\nthat vary exponentially in relation to how close the device\nis to the ideal orientation change posture (screen is vertical,\nangle is exactly at the midpoint of the orientation quadrant,\nand no external acceleration beside gravity).  When not in an ideal\nposture, the device takes proportionally longer to settle into a\nnew orientation state.\n\nAdded a little tool to plot the log output of the\nWindowOrientationListener.  Check the README for more information\nabout how to use it.\n\nChange-Id: I787f02d03582ff26367df65eda8d9ce85c5cb343\n"
    },
    {
      "commit": "4c541b1303b0ee2b9b0d19bee85d3780c5c4c110",
      "tree": "74f17a86f6b48fa5b0fa579b206611b6512d161e",
      "parents": [
        "2bed570bba183249c6ca9ca1151d1d23808de8c1",
        "664644d9e012aa2a28ac96f305b1ce6499ec8806"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Sun Jan 23 19:26:13 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jan 23 19:26:13 2011 -0800"
      },
      "message": "Merge \"visibility (\"lights out\") API.\" into honeycomb"
    },
    {
      "commit": "664644d9e012aa2a28ac96f305b1ce6499ec8806",
      "tree": "d8db43b09de516fefd82adf4fc4ec22417dda648",
      "parents": [
        "fac86056b285bf59c1c3e774f1cb9f6de0be59ba"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Sun Jan 23 17:53:23 2011 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Sun Jan 23 19:22:52 2011 -0800"
      },
      "message": "visibility (\"lights out\") API.\n\n1. Views may setSystemUiVisibility() to recommend that\nthe system chrome (status bar or other UI) show or hide\nitself.  (This functionality was previously available only\nvia the FLAG_FULLSCREEN window flag for some SystemUI\nimplementations.)\n\n2. Views may register a OnSystemUiVisibilityChangedListener\non a view, and find out when the system UI actually\nappears or disappears, allowing apps to coordinate the\nappearance of their own UI if desired.\n\nBug: 3241144\nChange-Id: Ia1758d94099182d49a1e3688ea2738ae4995b829\n"
    },
    {
      "commit": "02feeb4b2bb6515491cf3dd7ae2b204caac81bae",
      "tree": "a9da1ef9057f38d262425ba2a8b83164c25d156b",
      "parents": [
        "9d97b63d0e0c7c9deb2d140c1dd579b51f52c1af"
      ],
      "author": {
        "name": "Josh Stone",
        "email": "cuviper@gmail.com",
        "time": "Mon Jan 17 18:34:11 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Jan 23 16:00:36 2011 -0800"
      },
      "message": "aapt: Allow raw \"%\" in unformatted string-arrays\n\nCommit 15fe2cb added format checking for translatable strings, enforcing\nthe use of positional args.  This check can be disabled on \u003cstring\u003e\nvalues with translatable\u003d\"false\" or formatted\u003d\"false\".  But they didn\u0027t\ncheck for those attributes on \u003cstring-array\u003e, so some of CM\u0027s strings\nfail when they\u0027re not really format strings, just because they contain\npercent signs.  (e.g. brightness widget\u0027s \"Auto/Dim/40%/100%\")\n\nSo now the formatted/translatable attributes are checked in string-array\ntoo, and we can restore our proper percent signs.\n\nChange-Id: I3478ab7e0b939e61fe0cec20201ac55096264080\n"
    },
    {
      "commit": "1240719ae06855d38f1fa159dd73e2109bb9586f",
      "tree": "375da085a3b6c07491c0e5b4b2cec9347bcd5b7c",
      "parents": [
        "c3563eb9e75e0b9ae130ec22d5c6c6b1561d783b",
        "bcf2adeb10c41becec3baa2bcb8de9212272399a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sun Jan 23 12:57:33 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jan 23 12:57:33 2011 -0800"
      },
      "message": "am bcf2adeb: Merge \"aapt: Allow raw \"%\" in unformatted string-arrays\"\n\n* commit \u0027bcf2adeb10c41becec3baa2bcb8de9212272399a\u0027:\n  aapt: Allow raw \"%\" in unformatted string-arrays\n"
    },
    {
      "commit": "bf50322a245c430f3b3a1e7ecc299fe0a939daec",
      "tree": "ca114f9d2be8f42e406f404fbcc2eea25c57e16c",
      "parents": [
        "35f4d32dc2f0c383323e780ecc7e2764704c5d2c"
      ],
      "author": {
        "name": "Josh Stone",
        "email": "cuviper@gmail.com",
        "time": "Mon Jan 17 18:34:11 2011 -0800"
      },
      "committer": {
        "name": "Josh Stone",
        "email": "cuviper@gmail.com",
        "time": "Sat Jan 22 21:13:12 2011 -0800"
      },
      "message": "aapt: Allow raw \"%\" in unformatted string-arrays\n\nCommit 15fe2cb added format checking for translatable strings, enforcing\nthe use of positional args.  This check can be disabled on \u003cstring\u003e\nvalues with translatable\u003d\"false\" or formatted\u003d\"false\".  But they didn\u0027t\ncheck for those attributes on \u003cstring-array\u003e, so some of CM\u0027s strings\nfail when they\u0027re not really format strings, just because they contain\npercent signs.  (e.g. brightness widget\u0027s \"Auto/Dim/40%/100%\")\n\nSo now the formatted/translatable attributes are checked in string-array\ntoo, and we can restore our proper percent signs.\n\nChange-Id: I3478ab7e0b939e61fe0cec20201ac55096264080\n"
    },
    {
      "commit": "8068618ebed021c445db0919843cdb6b9b9e35b5",
      "tree": "8673dab9f76e20405a50fbbcfa0834258ca3d947",
      "parents": [
        "7633540cf0d1cfa1f893dc827cddaca3ea272af7"
      ],
      "author": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Fri Jan 21 17:12:43 2011 -0800"
      },
      "committer": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Fri Jan 21 17:25:55 2011 -0800"
      },
      "message": "Update preloaded-classes for Honeycomb.\n\nWe preload classes for two reasons. Classes that are popular can be\nshared and can increase the number of apps that can be run concurrently.\nClasses that initialize slowly can be initialized at system boot time\nby the zygote, decreasing the time to launch a specific app.\n\nTo select which classes to preload, I exercised Android\u0027s built-in apps\nas well as these apps from Market: ESPN score center, Amazon, Flixster,\nTwitter, Adobe Reader, Ebay Mobile, Facebook, Solitare (Ken Magic),\nBarcode Reader, Google Earth and Square.\n\nA cycle of launching ~460 (non unique) activities in sequence took 9m35s\nwith the previous preloaded-classes list. The update improves the launch\ntime of the same sequence to 9m27s: the marginal improvement over the\nprevious set of preloaded classes is negligible.\n\nhttp://b/3004763\n\nChange-Id: Ida511ae31eeff6d95d9cb6aacae68b9bb9dd2ebe\n"
    },
    {
      "commit": "9d0577ec0c285c055da4c910dcb597fdae5bc5e5",
      "tree": "6014db617dec5f348b5347c67e2680e3b804aeeb",
      "parents": [
        "f6864beca33d976c7482ef3ec2a300b4af6bdab6"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 17 22:57:36 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 17 22:58:41 2011 -0800"
      },
      "message": "LayoutLib: properly configure ApplicationInfo with targetSdkVersion.\n\nChange-Id: I1bfef890206552843d1a7a8d0564741f2a37494f\n"
    },
    {
      "commit": "796992a942f3508a15ee62d34d6c7ec5de045d83",
      "tree": "4ea8c35673499bcb13af04953050935d78239361",
      "parents": [
        "60610d245f899c8c48ba6c7e94c0a20010fc6eed"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Mon Jan 17 21:55:18 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 17 21:57:34 2011 -0800"
      },
      "message": "Allow TabHosts to have no children in the tabcontent widget\n\nReplace the code which throws an exception if there are no children in\nthe FrameLayout that is the tabcontent, with code to add a single\ndummy tab.\n\nThis makes the TabHost renderable in those scenarios where the real\ntabs are added dynamically rather than via XML.\n\nChange-Id: I72442bd7d40eddd875b3507585c1f372fcae3329\n"
    },
    {
      "commit": "70552fb92dbc5cb5b1d53b20f92f2a64969a50c4",
      "tree": "246cf99b69ad78fab8574ec0fdea00231f4dfea5",
      "parents": [
        "9512d6aa206f8bb44ab52b6dfe5ee8cb5c2960ea"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 17 13:49:12 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 17 14:00:29 2011 -0800"
      },
      "message": "LayoutLib: Update to use the new RenderResources API.\n\nChange-Id: Ic64eff3f324c4519da89bab10e6d59f0a9341a04\n"
    },
    {
      "commit": "87ab45c0fe4db814a7364fce3b88be3a49507e90",
      "tree": "04460db0ef24ecdbdb7d45d171a3100dea0aa6fd",
      "parents": [
        "bdac9e0fbe874cf7414228624bd0d3af4f715ccc",
        "d1d6fafc7fc63543b10552dadf202dd6fa40fe6b"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Sun Jan 16 19:38:33 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jan 16 19:38:33 2011 -0800"
      },
      "message": "Merge \"LayoutLib: extract resource resolution into its own class.\" into honeycomb"
    },
    {
      "commit": "fbf097732137a32930d151f7ba6816a5b870c32a",
      "tree": "1f05823ea1cb06aaa3ab0954cdde614b370f30e6",
      "parents": [
        "115ad16551c9cf9551f44cbea59f3edf83e4a340"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jan 16 14:06:57 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jan 16 18:58:49 2011 -0800"
      },
      "message": "Support non-rectangular input regions.\n\nThis enables the system bar to carve out a region through which\nevents will be sent to the IME behind it.\n\nBug: 3238092\nChange-Id: I69b855a8d9b5b3ee525266c0861826e53e5b5028\n"
    },
    {
      "commit": "d1d6fafc7fc63543b10552dadf202dd6fa40fe6b",
      "tree": "4a1f339ea77c9e24f838439513c6041b5f74dd40",
      "parents": [
        "772f5600ef720945b98054246982fd3b711830a9"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Sun Jan 16 11:12:18 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Sun Jan 16 11:18:28 2011 -0800"
      },
      "message": "LayoutLib: extract resource resolution into its own class.\n\nNext step is to make it a jar that will also live in\nADT.\nThe version in layoutlib will be through a prebuilt jar\nfile, like ninepatch.\n\nAlso add ninepatch.jar inside the layoutlib.jar file.\n\nChange-Id: I4a0cc9f2dd99709de6408386054c6d4abae7c824\n"
    },
    {
      "commit": "51a7e5447de94791c464cda5cc6ebbf616d73c80",
      "tree": "f0ddc73ed710701422dff1a01bf2cffb1df34cb1",
      "parents": [
        "0831b3fae504e8fa94e6b1cc0d4e6c3fccaef231"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 14 16:40:43 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 14 16:56:00 2011 -0800"
      },
      "message": "LayoutLib: update logs to use new data bundle\n\nAlso change some resource.resolve tags to resource.format\n\nChange-Id: I3f0b0d2eb69a5ec98375e4014a3bb1bfceb8c855\n"
    },
    {
      "commit": "0831b3fae504e8fa94e6b1cc0d4e6c3fccaef231",
      "tree": "7937fe077b86e18113c6f7552af85dbeeee0764a",
      "parents": [
        "c6684f9e9790e92960504e9b32f20f27003d9f37"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 14 15:03:52 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 14 15:15:34 2011 -0800"
      },
      "message": "LayoutLib: Misc fixes.\n\n- Fix resource resolution for framework\n  resources of type \"id\" that are dynamically generated\n  through \"@+id/...\"\n\n- Proper implementation of setBitmap on a canvas that\n  already has a bitmap. Transform/clip are kepts but the\n  existing layers are replaced with the new bitmap\n\n- return a null service for INPUT_METHOD_SERVICE in\n  Context.getSystemService\n\nChange-Id: I35e46fff50e6492a8995e95427d5f38bc945429d\n"
    },
    {
      "commit": "bbefc8662ac733fd6abfae54d97730506b5e2bd6",
      "tree": "62fd4c0605650b66d9481aff22ba4404dede359d",
      "parents": [
        "402438bb40795a3608509f40bcff6245698185ad"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 13 18:02:08 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 13 18:02:08 2011 -0800"
      },
      "message": "LayoutLib: Fix multi-line text rendering.\n\nStupid indices.\n\nChange-Id: I1dbdd04b8f25a5769de8dc21e6c513cef3e35635\n"
    },
    {
      "commit": "918aaa5717fce6081557c82ce1c439b6922737d5",
      "tree": "bf78b135a70551d4b6f071abea94f31d327ac934",
      "parents": [
        "310a4d815b693e358d151b9aa2823c5022993f9b"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 13 10:59:34 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 13 11:08:27 2011 -0800"
      },
      "message": "LayoutLib: Use the new log tag constants from LayoutLog\n\nChange-Id: I29dd578ae16405358d3673caf13528be393f0967\n"
    },
    {
      "commit": "310a4d815b693e358d151b9aa2823c5022993f9b",
      "tree": "a49bb3b79db42992156b4d8c5a556bcf36e3d2c7",
      "parents": [
        "1f1957f50fec4bc8d8716793d22bb23ee7fb4a7f"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 13 10:43:00 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 13 10:43:00 2011 -0800"
      },
      "message": "LAyoutLib: Fix build by adding missing IWindowSession implementation.\n\nChange-Id: I0af178d149b782cac3ae0c36fa5fc03f4dc6118b\n"
    },
    {
      "commit": "1f1957f50fec4bc8d8716793d22bb23ee7fb4a7f",
      "tree": "b218565d0b9b933288a884131d9ac32ef23cc456",
      "parents": [
        "66a95e4dbeb1c6d33ceb7c320033041e7f8e2aaa",
        "ee592fe4e60e940599fc1ccf43a98eb80961feb8"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 13 10:22:53 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 13 10:22:53 2011 -0800"
      },
      "message": "Merge \"LayoutLib: move MockView back into its original package.\" into honeycomb"
    },
    {
      "commit": "66a95e4dbeb1c6d33ceb7c320033041e7f8e2aaa",
      "tree": "8c428e4bb3f72281603a0ae57553b380cc7474b6",
      "parents": [
        "c14b10c3068359b717b3f35b7218ce0e6dcdd08c",
        "162ee1ed3d6c8a1e6d9347136e623e3429f6f3f8"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 13 10:22:43 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 13 10:22:43 2011 -0800"
      },
      "message": "Merge \"LayoutLib: Add getViewParent/getViewIndex on RenderSession.\" into honeycomb"
    },
    {
      "commit": "ee592fe4e60e940599fc1ccf43a98eb80961feb8",
      "tree": "c3887fb2f20574bc545140d8ff23a79ffd633a84",
      "parents": [
        "162ee1ed3d6c8a1e6d9347136e623e3429f6f3f8"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 12 20:36:02 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 12 20:36:02 2011 -0800"
      },
      "message": "LayoutLib: move MockView back into its original package.\n\nThis is used by Eclipse when the custom view is not found.\nIt couldn\u0027t find the view in the new package either.\n\nWe should probably move this logic of creating a mock view\ninto the layout library instead.\n\nChange-Id: Ifa1a717cddf7004a7719bb4d0798cd53b43273ea\n"
    },
    {
      "commit": "162ee1ed3d6c8a1e6d9347136e623e3429f6f3f8",
      "tree": "6acd20f7b96a38366dc67a77476eb2c768bf83a3",
      "parents": [
        "56222cfbe9973c518f7e8c9113c614de80b5a4b2"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 12 20:16:52 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 12 20:16:52 2011 -0800"
      },
      "message": "LayoutLib: Add getViewParent/getViewIndex on RenderSession.\n\nChange-Id: If91aa837b71a7329f53b1c4190332c2296166940\n"
    },
    {
      "commit": "cb27d4b2f530033c90432745115b914d8f26c3e7",
      "tree": "f56240084b0c29e3825cf35b0a35887b446def61",
      "parents": [
        "e9739d09cb53fd05cc9229049b3d54c7f6816450",
        "56222cfbe9973c518f7e8c9113c614de80b5a4b2"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 12 18:23:04 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 12 18:23:04 2011 -0800"
      },
      "message": "Merge \"LayoutLib: use tags in logs.\" into honeycomb"
    },
    {
      "commit": "56222cfbe9973c518f7e8c9113c614de80b5a4b2",
      "tree": "4d9eb725e5aa1397b4a26f874f588f5a239dcabb",
      "parents": [
        "147f7df35c554cf24287c732f8b74b0018e1ddbe"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 12 15:59:49 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 12 15:59:49 2011 -0800"
      },
      "message": "LayoutLib: use tags in logs.\n\nChange-Id: Ib85272249d285ecef409bf063903bcd91514a424\n"
    },
    {
      "commit": "02d2b3ba9ba830a8147db2739613f7bbb2d0fcbf",
      "tree": "39071f4218e05643962d875f780ac55b55bdd032",
      "parents": [
        "5220834c6ccdabf949dfe7160548ad378850d71b"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jan 10 20:43:53 2011 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jan 11 18:30:23 2011 -0800"
      },
      "message": "API CHANGE: startDrag() now takes \"int flags\" instead of \"boolean localOnly\"\n\nThere will be, in the future, a flag (View.DRAG_FLAG_GLOBAL) that means\nfor the drag to be cross-application.  For now that flag constant is @hide\nand furthermore the server-side implementation strips it, enforcing\nlocal-only drags.\n\nChange-Id: I8db840480ab90e18a5b8ecf29d62b4e6eafd405e\n"
    },
    {
      "commit": "d7cbf3f72c73ba01293f6676453352ef60df3778",
      "tree": "732d6fb5950299f526300027f110371c38378efc",
      "parents": [
        "9b5b54b72349982213c1482cfdf2908346921ecd"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jan 11 17:11:01 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jan 11 17:11:01 2011 -0800"
      },
      "message": "LayoutLib: Log error when style can\u0027t be found.\n\nChange-Id: I9a88cdac44a2d31c053e7f0c92a14e69bd82ac83\n"
    },
    {
      "commit": "85de0087fc6a65a66d3994f0b8dd3fecd9db2526",
      "tree": "9d23f5182c806ee7db7f008499af41edd6a99596",
      "parents": [
        "0827e697a9965195ca12ba593332c555702aa94a",
        "639e1bd35231a8f71e7acc95fedaf13ace9b65a9"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jan 11 15:34:44 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 11 15:34:44 2011 -0800"
      },
      "message": "Merge \"LayoutLib: misc fix.\" into honeycomb"
    },
    {
      "commit": "639e1bd35231a8f71e7acc95fedaf13ace9b65a9",
      "tree": "493affa75b868223086506cf4d0d8194533bb94f",
      "parents": [
        "29c288da5260ac221b941e69b960aa2127cbdef0"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jan 11 15:14:13 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jan 11 15:14:51 2011 -0800"
      },
      "message": "LayoutLib: misc fix.\n\nChange-Id: I0e2eff376d8f8e7682c28ef771b886d5fab5ff65\n"
    },
    {
      "commit": "6c740cf71e5ce5ba7c8493c545c3a57c57ac7024",
      "tree": "c9e1b92e7c74bcbded90777cba7055f6ddc789bd",
      "parents": [
        "0de16070935adb8656d646b8c69a362652db7443"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jan 11 13:19:02 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jan 11 13:21:57 2011 -0800"
      },
      "message": "LayoutLib: Improve error reporting.\n\nChange-Id: I37cad7e2efb959202960c57b271c55c759867139\n"
    },
    {
      "commit": "0de16070935adb8656d646b8c69a362652db7443",
      "tree": "2ffc23024b989155fb563d10fdae7000f1164d7e",
      "parents": [
        "b3830b8978aa05746912210932e26ebf1836aab5"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jan 11 12:10:57 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jan 11 12:15:15 2011 -0800"
      },
      "message": "LayoutLib: fix XmlUtils.convertValueToInt\n\nIt looks like the device implementation of Integer.parseInt\nis able to handle converting hexa value \u003e 80000000 while the\ndesktop VM cannot.\n\nThis patch provide a fix for this.\n\nWhile implementing it and running the TestDegates test I realized\nthat some delegate methods for Region were mising, so this adds them\ntoo.\n\nChange-Id: Ifee1efd47c8c52adc2f4658ec4fc8bd55adb84b4\n"
    },
    {
      "commit": "b3830b8978aa05746912210932e26ebf1836aab5",
      "tree": "c891039b07c40d8a35a52cc7072d9f5fbb6e2221",
      "parents": [
        "eb87b3bb53a8a9e9a246b4b70ea40172e2229c85"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jan 11 10:54:12 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jan 11 10:54:12 2011 -0800"
      },
      "message": "LayoutLib: only support animator-type animations.\n\nChange-Id: Ia3609fc5d11555190bc323d61a3577144a4692fd\n"
    },
    {
      "commit": "eb87b3bb53a8a9e9a246b4b70ea40172e2229c85",
      "tree": "b41590e12292ae4234ba99ff51e1f8ce7045db40",
      "parents": [
        "a57ca45d5df0f79b9be408105d2ed1c34e128130"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 10 21:49:40 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 10 21:51:55 2011 -0800"
      },
      "message": "LayoutLib: fix some issue with resource resolution.\n\nTypedArray.getResourceId() is not only about id/foo,\nit can be any type of resources.\n\nChange-Id: Ia5e147bc078bb349a3fa500a04c596ae44ea34ce\n"
    },
    {
      "commit": "419e8296ea76c5f1db1abbaa88b39b538fa42403",
      "tree": "45de664a4397d600b3ba39434cdaa3b2bab57328",
      "parents": [
        "5c6b786e1c1a103fe3f80b294ac166da1555fffa"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 10 11:57:49 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 10 11:57:49 2011 -0800"
      },
      "message": "LayoutLib: move asserts around.\n\nChange-Id: I6fcfcf2e6fad1d9fa172b9a8c20c72fa2533e7fa\n"
    },
    {
      "commit": "c77515e59029580caa68ba7602264ebdfd602daf",
      "tree": "5d3f1294c8fa451b6b5ef5ac729f6943bcdc357b",
      "parents": [
        "479101a9b4142d21d42351684bc9bc65ec3471be"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Sun Jan 09 17:15:56 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Sun Jan 09 18:11:54 2011 -0800"
      },
      "message": "LayoutLib: display warning when a resource reference fails to resolve.\n\nAlso fixed some warnings where a field hid one from a parent class.\n\nChange-Id: I04ed19ebc49ae0bb0abdb0b25bc1c182fa0db440\n"
    },
    {
      "commit": "479101a9b4142d21d42351684bc9bc65ec3471be",
      "tree": "ae906f850c9514b3712e31e62675af7adef9da58",
      "parents": [
        "ae34a7cd2d65fb89f1d4bffd6316d8b817a45da5"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Sun Jan 09 11:26:47 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Sun Jan 09 14:57:20 2011 -0800"
      },
      "message": "LayoutLib: Fix moveChild animation.\n\nOnly support animation for view move inside\nthe same layout.\n\nAlso fix animation thread to property support multiple\nanimation running at once.\n\nChange-Id: I45cad84e7b9f3a4f281c956d32934eb74e807afb\n"
    },
    {
      "commit": "b6e53f481294aec2edac5d83d9fde81827c23bd7",
      "tree": "daf8a8579afe29b402eeda142dfbf596eb38fd88",
      "parents": [
        "46a329244db12b6f7afc3c9a6409d420241a1058"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 07 18:37:49 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 07 18:37:49 2011 -0800"
      },
      "message": "LayoutLib: add a few misc implementations.\n\nChange-Id: I586f1d5ecc4f254fc04ea1171eb499d06ac592eb\n"
    },
    {
      "commit": "46a329244db12b6f7afc3c9a6409d420241a1058",
      "tree": "70923f332ecf9ccc1b6a2c0cc498a7c8aa9bc9da",
      "parents": [
        "7550ec1d8e526c4ae8c0bb08b06e1b6e799eacec"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 07 18:16:43 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 07 18:16:43 2011 -0800"
      },
      "message": "LayoutLib: finish Typeface and unload them in dispose.\n\nChange-Id: I3a48f84678f62d669d303fc73b041bb3fe5f333b\n"
    },
    {
      "commit": "7550ec1d8e526c4ae8c0bb08b06e1b6e799eacec",
      "tree": "9f9df4a419d57377fcccd7f5c17b632ec993b31f",
      "parents": [
        "d7cc1244d7f0901688545c8535fa531fbb68669a"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 07 17:02:46 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 07 17:14:36 2011 -0800"
      },
      "message": "LayoutLib: remove fade in/out transition on moveChild.\n\nChange-Id: I69a70ecb165f19feca55fc30a3f48ebea896daa3\n"
    },
    {
      "commit": "d7cc1244d7f0901688545c8535fa531fbb68669a",
      "tree": "2bee92b90402c349fd6e5e25f01459585fc79c13",
      "parents": [
        "2c602e6a66469c9fcd8bc4d7d64aa24134dad8d9"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 07 16:16:21 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 07 16:16:21 2011 -0800"
      },
      "message": "LayoutLib: fix moveChild again.\n\nChange-Id: Ib69a06e44be1e332f0f43c36c795c86270cb1b71\n"
    },
    {
      "commit": "2b9c38ab62abc8d5b2f956e961087f259caf25ff",
      "tree": "8b48c79c6f861b71e4b1791b107df9e7e8add7ae",
      "parents": [
        "fe75027c5c2bbb53f008ae5382de94ed8d37317b"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 07 12:47:31 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 07 12:49:49 2011 -0800"
      },
      "message": "LayoutLib: fix animated moveChild.\n\nThe child can only be added to the new viewgroup\nafter it\u0027s been removed from the previous one, which\nis delayed if there\u0027s an animation.\n\nChange-Id: I9123a2670d0d17b3eb6f8f89085ebab8ca2b800f\n"
    },
    {
      "commit": "10af738336cb18c5d86710b2961d91e2d3e8d410",
      "tree": "6c695f5d71b47157a42f802f94252aedaf0e78bc",
      "parents": [
        "f0fe6d311d183c5fcf45d5e3e995fc8f9ed12f8b"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 06 19:20:03 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 06 19:20:03 2011 -0800"
      },
      "message": "LayoutLib: Finish the matrix delegate.\n\nChange-Id: Ife70a4707c113f4a2aed18e303cb2f221c73db2a\n"
    },
    {
      "commit": "a7cac5e0542779cadf0f5ccf71584e4b4425f7a6",
      "tree": "3a58441f7362a9e2b03afec07fe9f669da9a828d",
      "parents": [
        "adba8021cd2fd0d20856fb4fbfed2cb000f3f1d5"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 06 15:50:42 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 06 18:13:49 2011 -0800"
      },
      "message": "LayoutLib: fix clipping issues.\n\nThere were two issues:\n- Graphics2D.setClip only works on rectangular shapes.\n  This means doing a setClip on a non rectangular shape should\n  basically reset the clip and intersect with the new shape.\n\n- the current clip can be null, so the combineShape method\n  must handle it.\n\nChange-Id: Id2cd7475e991d8b533ff2e8850cc2c27663f9e52\n"
    },
    {
      "commit": "29c288da5260ac221b941e69b960aa2127cbdef0",
      "tree": "687a256d67bc892b42361dc5b4b627370a546582",
      "parents": [
        "67ba204aa23e7d5a96ad241a1623e44976b51741"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 03 04:11:03 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 06 11:11:05 2011 -0800"
      },
      "message": "Cherry-pick 9b53dd9d60a01ddb1307177c296c7b4fd6114753 from master\n\nChange-Id: I670872542feb62c47fe693eb183b19e2eef2b20d\nLayoutLib: use new API with log in init method.\n"
    },
    {
      "commit": "f31161a0e71c0446283610e9bf7a11e0be12bd5e",
      "tree": "f7c479d8e0a0596d9af96283258432f71e043af1",
      "parents": [
        "70588bf864f961974c93aace7586d3e2773a54a8"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 04 21:02:48 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 05 14:12:55 2011 -0800"
      },
      "message": "Add new \"animator\" and \"interpolator\" resource directories.\n\nFirst phase, allowing apps to move over to the new names.\n\nChange-Id: Ia16f3e2383e4a6599a0011d0464f0aacb1ce9207\n"
    },
    {
      "commit": "9872bf4a2d4ae1e7ded170c8e74d400fe6be9bfb",
      "tree": "4040c675a82cdab2888c72e56188d8cd91ae547b",
      "parents": [
        "69ebb984f230a523dc316bdb2c9e9c28111364fd"
      ],
      "author": {
        "name": "Shachar Shemesh",
        "email": "lingnu@gmail.com",
        "time": "Mon Dec 20 17:38:33 2010 +0200"
      },
      "committer": {
        "name": "Shachar Shemesh",
        "email": "lingnu@gmail.com",
        "time": "Tue Jan 04 20:52:08 2011 +0200"
      },
      "message": "Normalize output from aapt d\n\nMake the output from aapt dump --values resources and aapt dump xmltree normalized, so that it is unambigously displayed\nregardless of the content of the strings.\n\nChange-Id: Ia3bff36c4ee1e9a44f474534e154830948beabdf\n"
    },
    {
      "commit": "5ef0b9d72451d4bb65f5a76a05738041ed15664a",
      "tree": "065e751966b6e14ad3483c409139f6fd85be04c5",
      "parents": [
        "69ebb984f230a523dc316bdb2c9e9c28111364fd"
      ],
      "author": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonyericsson.com",
        "time": "Tue Nov 09 14:13:31 2010 +0100"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonyericsson.com",
        "time": "Tue Jan 04 07:30:32 2011 +0100"
      },
      "message": "Make AaptGroupEntry::getMncName accept mnc00\n\nMNC 00 is a valid network code and is used by\nsome operators, see http://en.wikipedia.org/wiki/Mobile_Network_Code.\n\nRemove the test that checks if atoi returns zero.\nThe string is validated to contain only numbers\nalready.\n\nAlso discussed here:\nhttps://code.google.com/p/android/issues/detail?id\u003d3657\n\nChange-Id: I3220d7980abe4067c9e7aa4cbc10b5fd0b8c9ea7\n"
    },
    {
      "commit": "c226e571fd6ce7db74fce87dbf300a70f8a58c29",
      "tree": "e0748aa0e515bb85acfdf7f840c826d59472f86f",
      "parents": [
        "7eab094722af54717859b7dcce3cc050f059e00b"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 03 03:19:13 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 03 03:28:20 2011 -0800"
      },
      "message": "LayoutLib: Misc javadoc fixes.\n\nChange-Id: Iabe081c20b361b034c2e66b975b8756c0fdcd3d1\n"
    },
    {
      "commit": "b44b43b1579486ff7ecd0f7528f17711acdeae98",
      "tree": "47542b0726249f3b7fb02c41412088f15f816cec",
      "parents": [
        "d43909c7503e11eb335a452d296a10804bb01fd6"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Dec 23 10:22:14 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Dec 24 00:21:51 2010 -0800"
      },
      "message": "LayoutLib: Support Region through delegates.\n\nalso finish supporting some clip operation\non the canvas.\n\nChange-Id: I743b9e52a7aa6e9340506f1c904cc1cfbf3ff81f\n"
    },
    {
      "commit": "d43909c7503e11eb335a452d296a10804bb01fd6",
      "tree": "f9dc11c23a34227d094e7340a05f268032224cfc",
      "parents": [
        "20805343296eef04081fee82fd04547f51225fe3"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Dec 23 07:16:21 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Dec 24 00:21:51 2010 -0800"
      },
      "message": "LayoutLib: add support for unsupported drawing modifiers.\n\nDrawFilter, Rasterizer, ColorFilter and MaskFilter\nare not supported but we need to provide their\nJNI counterparts anyway, to at least display warnings\nwhen they are used.\n\nAlso improved the API to query Paint for Shaders\nand PathEffects, and clean up some code by\nmoving asserts into the DelegateManager.\n\nChange-Id: I8942514565d28576d5608c6373bda25d86d42ff2\n"
    },
    {
      "commit": "20805343296eef04081fee82fd04547f51225fe3",
      "tree": "2a5ec42a96c385a526b59e69447993b0d988c9c8",
      "parents": [
        "1039872f597995cab2f88b9c841f8c2b8e71c451"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Dec 23 03:25:57 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Dec 24 00:21:50 2010 -0800"
      },
      "message": "LayoutLib: Fix Canvas layer support with 2+ layers\n\n- When drawing is not clipped to the top layers,\n  drawing should not happen automatically on all\n  existing layers. Instead each layer\u0027s flags dictate\n  whether drawing should happen on layers beneath, starting\n  with the top layer.\n- upon restore, the same mechanism is taken. Only blit\n  a layer into the layer beneath if it was drawn into\n  using the logic above.\n\nAlso fixed:\n- saveLayer() does not, in fact, always save matrix\n  and clip info. The flag dictate this, the same way\n  it does in save()\n- drawing code didn\u0027t properly detect the case of drawing\n  into layers if a save() was called after saveLayer().\n  Now the code only looks at the layer list which provide\n  all the needed info (flags mostly), and doesn\u0027t rely\n  on mLocalLayer (which is used during restore only now).\n- Properly handle HAS_ALPHA_LAYER_SAVE_FLAG (or lack\n  thereof) when creating the BufferedImage for the layer.\n\nChange-Id: I2fbbcc0f5d3a3dd208763705bc23e6658fd4e573\n"
    },
    {
      "commit": "b1da1afa7418960b650780250bbd34c81af61aa3",
      "tree": "45b4798c9a796223bb854d8a5c56a2b5b2c9461b",
      "parents": [
        "d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Dec 22 10:13:23 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Dec 22 10:30:53 2010 -0800"
      },
      "message": "LayoutLib: improve bitmap support.\n\nChange-Id: I703c2bdf51380b54fd5c20b08d3bc74833d9bc6e\n"
    },
    {
      "commit": "d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5",
      "tree": "91f1359ed446aeafc20c8322073612a77c1652d5",
      "parents": [
        "70119929549b6d241244c51952ed1f4a313a5ff7"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Dec 21 06:20:28 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Dec 22 10:30:53 2010 -0800"
      },
      "message": "LayoutLib: support for layers.\n\nLayers require that drawing methods potentially\ndraw in more than one bitmaps.\n\nTo handle this this patch offers the following:\n- move all drawing methods to use Drawable\n- Drawables are now handled by GcSnapshot since\n  its the one handling the layers\n- moved Canvas_Delegate.createCustomGraphics to\n  GcSnapshot which does not expose the Graphics2D\n  objects anymore so its draw() methods are the only\n  way to draw.\n- handles creating layers in GcSnapshot.save() and\n  blitting them in restore()\n\nOther changes:\n- Clean up the create/save API in GcSnapshot\n- Fixed drawing bitmaps with alpha and other\n  composite modes.\n\nChange-Id: I1e230087493d044a10de71f4b6d29083e3f3bf64\n"
    },
    {
      "commit": "63fd87113cea6abec97a6cd966e090e9b590fc3b",
      "tree": "1cbdd623cdac465fc3a648b4afc93b4212a213f7",
      "parents": [
        "d348b6eaa98e23cb38d90906df109aaa2d20ea7f"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Dec 21 01:33:04 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Dec 21 10:43:18 2010 -0800"
      },
      "message": "LayoutLib: Misc rendering fixes.\n\n- always set up the stroke. Paint may not have the proper\n  style when drawing lines. stroke should still be setup.\n\n- Fixed vertical linear gradient. Old code generated\n  a gradient ratio of NaN\n\n- Fixed alpha rendering when using shaders. In that\n  case the alpha channel from the paint color should be\n  used in conjunction with the shader.\n\n- Fixed miter limit. Java expects the value to be multiplied\n  by the stroke width\n\n- Fixed support for drawing ALPHA_8 bitmaps. Java2D doesn\u0027t\n  have bitmaps with only alpha channels, so we keep using\n  ARGB bitmaps but when drawing them into a bitmap we erase\n  the color information.\n\nChange-Id: I4f04341fc843e3f7dadd1fdbf709b11a4f1e24b9\n"
    },
    {
      "commit": "d348b6eaa98e23cb38d90906df109aaa2d20ea7f",
      "tree": "c9195fa9628e78108424cbae0dd2a86a12d2faeb",
      "parents": [
        "19a021038f2f4683dddef651543d7298f5bd7218"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Dec 20 08:22:47 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Dec 21 10:43:18 2010 -0800"
      },
      "message": "LayoutLib: support for Path and BitmapShader using delegates.\n\nAlso created delegates for all missing shader, xfermode\nand patheffect classes. Moved the logic of the xfermode,\nand patheffects that was in Canvas_Delegate into the\nxfermode/patheffect classes, and added support (in all\n3 clases) for knowing if the shader/xfermode/patheffect\nis actually supported or not. Make use of fidelityWarning\nin LayoutLog if they are not.\n"
    },
    {
      "commit": "19a021038f2f4683dddef651543d7298f5bd7218",
      "tree": "358449cfa97dffe26183d672f92aae8101a1e624",
      "parents": [
        "34884643b66d2560273b7c29d3eacb59560ab231"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Dec 15 19:20:08 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Dec 21 10:43:17 2010 -0800"
      },
      "message": "LayoutLib: Update layoutlib with revised API.\n\nChange-Id: I78929df621f48e85d9cbefe1f5590f9ce99bbaff\n"
    },
    {
      "commit": "f890fab5a6715548e520a6f010a3bfe7607ce56e",
      "tree": "6c61a1b736399a9dde6b83f4978ad5ef36e18a95",
      "parents": [
        "2a1cc5ac30efc05880a12a2114c09364fc38e032"
      ],
      "author": {
        "name": "Patrick Dubroy",
        "email": "dubroy@google.com",
        "time": "Sun Dec 19 16:47:17 2010 -0800"
      },
      "committer": {
        "name": "Patrick Dubroy",
        "email": "dubroy@google.com",
        "time": "Mon Dec 20 17:02:15 2010 -0800"
      },
      "message": "Ensure bitmaps aren\u0027t freed while referenced from a display list\n\nAlso removes the reference queue finalizers. They aren\u0027t necessary\nanymore now that Bitmaps are allocated in the heap.\n"
    },
    {
      "commit": "cfdc784b6cdcbbb2bf2ba4d53d9a9eb2c37278a3",
      "tree": "77c8994cc5ff69df955475f0c6f43dea8aafa88b",
      "parents": [
        "34961cc2e5cd483b15dfd1ff1eb33b01b849e0dc"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Dec 14 18:05:22 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Dec 15 13:44:03 2010 -0800"
      },
      "message": "LayoutLib: replace the stack of Graphics2D with custom snapshots.\n\nThe first step is to allow the canvas to save only the matrix or\nthe clip. Previously, since the graphics2D were created completely\nnew on each save, everything was saved.\n\nAlso allows to set transform/clip on the Canvas when no bitmap\nhas been set (and therefore no Graphics2D exists).\n\nThis is required by BitmapFactory.\n\nChange-Id: I37eff6dde1ca708d58ba317b40e9b3236f3ef3d0\n"
    },
    {
      "commit": "22ff4ef09fc80a85992d8a911fff03a4712187e7",
      "tree": "78843d9e4c6129a595bf1777921798466189b0ac",
      "parents": [
        "982b71bf4713d57b0fdb9acaaf9f9465a817aacb"
      ],
      "author": {
        "name": "Patrick Dubroy",
        "email": "dubroy@google.com",
        "time": "Tue Dec 14 17:26:27 2010 -0800"
      },
      "committer": {
        "name": "Patrick Dubroy",
        "email": "dubroy@google.com",
        "time": "Tue Dec 14 17:26:27 2010 -0800"
      },
      "message": "Fix build break due to additional arg in Bitmap ctor"
    },
    {
      "commit": "21534cfc78bacc2e76a84fa198605ee2a831de84",
      "tree": "d56c698d7dabf3b1683bb61081d88878145808c9",
      "parents": [
        "644b75edb3a336dbae2e363d609ff4228ce05210",
        "d9c64369cf9be6568af2d79c35fb470cc261730d"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Dec 14 15:03:26 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 14 15:03:26 2010 -0800"
      },
      "message": "Merge \"LayoutLib: Fix gradient rendering.\""
    },
    {
      "commit": "d9c64369cf9be6568af2d79c35fb470cc261730d",
      "tree": "87e517f31538bdf425e660032784ee98e9b38c52",
      "parents": [
        "f1416e4dffb0874f163febfa12f2648eac0c3a77"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Dec 14 14:40:41 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Dec 14 14:49:55 2010 -0800"
      },
      "message": "LayoutLib: Fix gradient rendering.\n\n- fully support canvas transform\n- fully support shader local transform\n- fix repeat/mirror issue in the negative values.\n\nChange-Id: Ib2aa7ade1c2702da4364cbda9a5a3ae72c1d3174\n"
    },
    {
      "commit": "dcc995c72fffcb37ede82c1a040e2ae93fdcb065",
      "tree": "0a391f5ddf177b4db0f69c2ec822dd398a75a54d",
      "parents": [
        "3be80f2e6cf763fdfeb058d5a4ac8257cdc91135",
        "f1416e4dffb0874f163febfa12f2648eac0c3a77"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Dec 14 14:32:09 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 14 14:32:09 2010 -0800"
      },
      "message": "Merge \"LayoutLib: Misc fix to rendering.\""
    },
    {
      "commit": "d28378c903cf800882889619c7771f060d85b712",
      "tree": "ebdf40bd997f3e02d55425275ad3708828f4affe",
      "parents": [
        "e7018262d1475a826af9419cba2a4bc51bb449c8",
        "90c6b7e639921e264ac65699439578bcbdbf583a"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Dec 14 12:03:21 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 14 12:03:21 2010 -0800"
      },
      "message": "Merge \"LayoutLib: Use the new ninepatch API to suppor density.\""
    },
    {
      "commit": "f1416e4dffb0874f163febfa12f2648eac0c3a77",
      "tree": "c1577adfcaaf330e259da7bdbab9185e5a0a21f6",
      "parents": [
        "90c6b7e639921e264ac65699439578bcbdbf583a"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Dec 14 12:00:14 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Dec 14 12:00:14 2010 -0800"
      },
      "message": "LayoutLib: Misc fix to rendering.\n\nChange-Id: Ia73fab1be3c01e6ce5791973e636e45a0f75ceb6\n"
    },
    {
      "commit": "00db2213bf82c04610137a36e9190003f712952c",
      "tree": "77f5373f1c3c4523b5988e80d0589ac264f7e5be",
      "parents": [
        "2bc248b698b17fd333beae828039a8bff7604a9f",
        "0ccc8b7345eac0b507c221be47e55926cbda8957"
      ],
      "author": {
        "name": "Dan Morrill",
        "email": "morrildl@google.com",
        "time": "Tue Dec 14 11:31:29 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 14 11:31:29 2010 -0800"
      },
      "message": "am 0ccc8b73: am 5441a9ff: Merge \"GL texture filtering changed from AND to OR, so rename tag name to match. (\u003cuses-foo\u003e \u003d\u003d AND, \u003csupports-foo\u003e \u003d\u003d OR, e.g. uses-feature vs. supports-screen).\" into gingerbread\n\n* commit \u00270ccc8b7345eac0b507c221be47e55926cbda8957\u0027:\n  GL texture filtering changed from AND to OR, so rename tag name to match. (\u003cuses-foo\u003e \u003d\u003d AND, \u003csupports-foo\u003e \u003d\u003d OR, e.g. uses-feature vs. supports-screen).\n"
    },
    {
      "commit": "0ccc8b7345eac0b507c221be47e55926cbda8957",
      "tree": "f8e5cc12e260b2dbbe72cbd7c767816782c7f5c2",
      "parents": [
        "7afa161368308e78bb4a66b4fd32558dfd556776",
        "5441a9ff2128cf2c5088974c74b79d2d1734f755"
      ],
      "author": {
        "name": "Dan Morrill",
        "email": "morrildl@google.com",
        "time": "Tue Dec 14 11:28:50 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 14 11:28:50 2010 -0800"
      },
      "message": "am 5441a9ff: Merge \"GL texture filtering changed from AND to OR, so rename tag name to match. (\u003cuses-foo\u003e \u003d\u003d AND, \u003csupports-foo\u003e \u003d\u003d OR, e.g. uses-feature vs. supports-screen).\" into gingerbread\n\n* commit \u00275441a9ff2128cf2c5088974c74b79d2d1734f755\u0027:\n  GL texture filtering changed from AND to OR, so rename tag name to match. (\u003cuses-foo\u003e \u003d\u003d AND, \u003csupports-foo\u003e \u003d\u003d OR, e.g. uses-feature vs. supports-screen).\n"
    },
    {
      "commit": "90c6b7e639921e264ac65699439578bcbdbf583a",
      "tree": "6644a14fd7cbebf7130462851b12c7543c9df44e",
      "parents": [
        "8da36314fd76ae6fe4549773ad00dc1883cb6bff"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Dec 13 19:08:38 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Dec 13 19:08:38 2010 -0800"
      },
      "message": "LayoutLib: Use the new ninepatch API to suppor density.\n\nLayoutLib now compiles against a prebuilt of ninepatch.\n\nChange-Id: I0a1ca60af90933c171ab3aa456b47f0329df2f55\n"
    },
    {
      "commit": "8da36314fd76ae6fe4549773ad00dc1883cb6bff",
      "tree": "17aac3ac742f63f6e7eeca3eb8e6b0ab11d15057",
      "parents": [
        "c0734f6c8d67deab00b10bd0bb75516cd1502dc0"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Dec 13 16:42:01 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Dec 13 16:42:01 2010 -0800"
      },
      "message": "LayoutLib: implement more of Canvas/Paint.\n\nChange-Id: I8e2a7a3bddbce08db5eb641b5075bedd75f7be27\n"
    },
    {
      "commit": "096b67f65510a5076f1f845f9e19dda2b30ea6bb",
      "tree": "55433fd8a7525c5360b3b4e0cfcd8b1ef4a442f2",
      "parents": [
        "e3f6336bcffc250da90ec864bccfa73ad1d016b9"
      ],
      "author": {
        "name": "Dan Morrill",
        "email": "morrildl@google.com",
        "time": "Mon Dec 13 16:25:54 2010 -0800"
      },
      "committer": {
        "name": "Dan Morrill",
        "email": "morrildl@google.com",
        "time": "Mon Dec 13 16:25:54 2010 -0800"
      },
      "message": "GL texture filtering changed from AND to OR, so rename tag name to match.\n(\u003cuses-foo\u003e \u003d\u003d AND, \u003csupports-foo\u003e \u003d\u003d OR, e.g. uses-feature vs.\nsupports-screen).\n\nChange-Id: I0f20aed7f95169d9adfc7fe128191eb6e49d116f\n"
    },
    {
      "commit": "6735cffc1ddd18bdd6a46011e42d89204435361a",
      "tree": "5a5d2db4e28a953a7056a966c0b029e0615d7fd3",
      "parents": [
        "b170954d84b3ca084f9d613d99633d2828912d74"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Dec 10 16:58:56 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Dec 10 16:58:56 2010 -0800"
      },
      "message": "LayoutLib: parsed resources were always set as platform res.\n\nI broke this last week when adding the support for\nlayout params in moveChild.\n\nChange-Id: Iaaf9b9f685ca301638d4037e98428ea0a00279c9\n"
    },
    {
      "commit": "ffb42f6c5043de226f02318a1311669d35a90711",
      "tree": "c10b9172fe0f682c585fe35d49f20df373ae4ad3",
      "parents": [
        "436786e759ed5f5eee34137ea6bfe57414bb9ff4"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Dec 09 18:26:01 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Dec 10 11:40:27 2010 -0800"
      },
      "message": "LayoutLib: Adapt to new LayoutLib\n\nAPI now uses ResourceValue instead of IResourceValue\nCapabilities renamed Capability\n\nChange-Id: Ia5d2b6c8d536e020a1f5496fb2285f67fc4346c4\n"
    },
    {
      "commit": "ddb76c4644756b31be948d70aaa8ee541dd94999",
      "tree": "782d260d2da982941148be7c1a0a0780749cdfdc",
      "parents": [
        "8028a951c3aa74990907efb9376d1093d84084af"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 24 12:56:06 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Dec 08 11:21:30 2010 -0800"
      },
      "message": "Change assets to use 64-bit API\n\nThe asset system and supporting libraries were using off_t instead of\noff64_t to access files larger than 2GB (32-bit signed). This change\nreplaces all off_t with off64_t and lseek64.\n\nThere is a new utils/Compat.h added for Mac OS compatibility.\n\nAlso fixed some size-related compiler warnings.\n\nBug: 3205336\nChange-Id: I9097b3cb7a602e811fe52f245939d8975da55e9e\n"
    },
    {
      "commit": "8d74c978bbf3da4095ef8e40c005a6fdf0637071",
      "tree": "2d797124a70d8619a1f97460c0d4600c5ad30d5c",
      "parents": [
        "5151b325a4d7e28d4739fb7113a2575991f1eb97"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Dec 07 12:10:51 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Dec 07 12:10:51 2010 -0800"
      },
      "message": "LayoutLib: explicitely override PropertyValuesHolder native code.\n\nChange-Id: Ic7dd9efc990d01b20db144117cb11eb130349048\n"
    },
    {
      "commit": "864f33a9f89a75d1395bca885bd191507cca4af6",
      "tree": "bc65e55347bd0d988cce1796770a26fa20f8fffb",
      "parents": [
        "afeffb744feea960f5b8a441984badd270207b62",
        "b5ddf041d61f9346a4055b5bc5d51bd812b2ec28"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Dec 06 11:32:43 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 06 11:32:43 2010 -0800"
      },
      "message": "Merge \"LayoutLib: Update font object when text info changes in paint delegate\""
    },
    {
      "commit": "b5ddf041d61f9346a4055b5bc5d51bd812b2ec28",
      "tree": "92248c4af035e582636ec5ee32b90eb22b06231b",
      "parents": [
        "26e30bb7fe373ad4bb569a5de2577e0c857e7c27"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Dec 06 11:08:37 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Dec 06 11:12:47 2010 -0800"
      },
      "message": "LayoutLib: Update font object when text info changes in paint delegate\n\nChange-Id: I6ff7e1ec4513918256aee99acc5ea298a5fdb8a8\n"
    },
    {
      "commit": "168677c9e2f8438ec5687e3c6b0e41b986c5b230",
      "tree": "c6adc3539c1d335242a1bb6d2203a98641d5453e",
      "parents": [
        "26e30bb7fe373ad4bb569a5de2577e0c857e7c27"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Dec 06 10:11:44 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Dec 06 10:11:44 2010 -0800"
      },
      "message": "LayoutLib: Fix logging.\n\n- Use the new logging API\n- remove log object reference everywhere but in Bridge\n- all logging code accesses Bridge.getLog()\n- prepareScene sets the current scene log object in Bridge.\n\nChange-Id: Ib0517ccd6454c4baf218b6baa978a126f91671e7\n"
    },
    {
      "commit": "e1179ea065392485a6e3bf1e28a1242179cd48b0",
      "tree": "2dfb7425ad0a3eccb6cbe75e4bfa761e80e9db47",
      "parents": [
        "01811aa86279af1b341a4fff344d66c0ebdd63da"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Dec 03 11:35:29 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Dec 03 11:50:36 2010 -0800"
      },
      "message": "LayoutLib: Animation support in insert/move/removeChild actions.\n\nAlso update to use the new SceneResult API.\n\nChange-Id: Iaac6df0c250fbefc8758310c37e0cf47cae6875d\n"
    },
    {
      "commit": "01811aa86279af1b341a4fff344d66c0ebdd63da",
      "tree": "9ae7d13d12ed22fdec5b527f4bdb3a78eba2b7df",
      "parents": [
        "3c78f2de353df3e287444dd9f9fbab3bd4456217"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Dec 02 18:54:11 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Dec 02 18:58:25 2010 -0800"
      },
      "message": "LayoutLib: Create new layoutparams when moving a child\n\nChange-Id: Ie2183490e8d26ef194030a9d87fe7745f24f1d83\n"
    },
    {
      "commit": "3c78f2de353df3e287444dd9f9fbab3bd4456217",
      "tree": "739a81d84e832dfb0b9398b895dd3c6dea810335",
      "parents": [
        "3c3743c5413a81c998f2801573481f65e9e25072"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Dec 02 17:49:11 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Dec 02 17:49:11 2010 -0800"
      },
      "message": "LayoutLib: Update to use the new moveChild API.\n\nAlso, return supported capabilities.\n\nChange-Id: I824120d50f2865a667dc6c81d455ae19321966b6\n"
    },
    {
      "commit": "9065504a63d6bf37bf621191fda1d1fe4da76ee3",
      "tree": "500948db3ef54c52fc65f52f4ab4a220e4504009",
      "parents": [
        "d6a46103bfbed17451abf0fb608d7b778597846c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Dec 02 13:50:46 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Dec 02 16:01:32 2010 -0800"
      },
      "message": "Improve support for external keyboards.\n\nUse Vendor ID, Product ID and optionally the Version to\nlocate keymaps and configuration files for external devices.\n\nMoved virtual key definition parsing to native code so that\nEventHub can identify touch screens with virtual keys and load\nthe appropriate key layout file.\n\nCleaned up a lot of old code in EventHub.\n\nFixed a regression in ViewRoot\u0027s fallback event handling.\n\nFixed a minor bug in FileMap that caused it to try to munmap\nor close invalid handled when released if the attempt to map\nthe file failed.\n\nAdded a couple of new String8 conveniences for formatting strings.\n\nModified Tokenizer to fall back to open+read when mmap fails since\nwe can\u0027t mmap sysfs files as needed to open the virtual key\ndefinition files in /sys/board_properties/.\n\nChange-Id: I6ca5e5f9547619fd082ddac47e87ce185da69ee6\n"
    },
    {
      "commit": "c8aec064f9f304c88f61c8c1aa3d60521b92177a",
      "tree": "5ec75a45175ced53ac8ac17f8c3322c19294119a",
      "parents": [
        "9eb6d412af6859b6c0bb969c76bbfc48eec8fd4b"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Dec 02 12:23:11 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Dec 02 12:26:23 2010 -0800"
      },
      "message": "Layoutlib: update with new add/movechild API.\n\nChange-Id: I33e3a07cd7db7fe996d1f52b84b4b3bf21065a51\n"
    },
    {
      "commit": "9eb6d412af6859b6c0bb969c76bbfc48eec8fd4b",
      "tree": "99f3c5fc4823142589c4c4d809d55ff84de8d420",
      "parents": [
        "c14e7dd8ba15f517a5402ad802377b1d60784416"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Dec 01 12:28:43 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Dec 02 10:58:19 2010 -0800"
      },
      "message": "LayoutLib: Reuse canvas when possible.\n\nAlso moved the prepare/cleanupThread methods to Bridge\nas they are not really specific to the scene anymore.\n\nChange-Id: I7b93821913ce4d2fcbe3d8be489be6533ff87e57\n"
    },
    {
      "commit": "c14e7dd8ba15f517a5402ad802377b1d60784416",
      "tree": "89ec0c0628f0b3293d560f775fd87425d4e6b6c8",
      "parents": [
        "fad778754cec0b0cc7723d0ecbc78fbfe9dbb763"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Dec 01 16:03:54 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Dec 01 16:14:38 2010 -0800"
      },
      "message": "LayoutLib: implement insert/move/removeChild.\n\nChange-Id: I1c05ff4dc80e5ee4ea67d322acaf9c94276f84e1\n"
    },
    {
      "commit": "30c77d689ead610685a5e0bd4078b44eb89360ff",
      "tree": "059523ffd0a206933d0aa75e5a3f10fcda8a0aa0",
      "parents": [
        "40c01e3826771c1106517e00c5e7d3f328bc450e"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Nov 29 21:10:24 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Nov 29 21:10:24 2010 -0800"
      },
      "message": "LayoutLib: get AWT image from new image factory.\n\nChange-Id: Ib760af8a77fefac2571b8b4e48b4728e158aab2f\n"
    },
    {
      "commit": "2eea6fab1cbb0a5c8f913491c2d622c904759893",
      "tree": "51b7e87bbf94d0fdb6623710a59e142e823938c2",
      "parents": [
        "7750c2ac61d933cdb50114c2fc2e0a0c558a140e"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Nov 24 11:26:40 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Nov 29 12:05:43 2010 -0800"
      },
      "message": "Layoutlib: Animation support.\n\nNew locking mechanims to prevent concurrent renderings.\n\nThere\u0027s now a thread specific prepareThread() method (only\nprepares the looper) and its associated cleanupThread().\n\nFor the rendering itself, acquire must be called before doing\nany type of Android specific work on the scene (inflate or rendering)\nAfter instantiation, init() must be called, which also acts as acquire.\n\nAdded a lot of checks to make sure method aren\u0027t called without\nacquire or if scenes try to be rendered while acquire was called\nfrom the same thread but on another scene.\n\nAnimation implementation:\n- Handler delegate to use our own queue (since the animation runs\n  through handler messages). This uses a callback to process\n  the message. This callback is per-thread and only used in\n  animation threads.\n- SystemClock delegate to provide clock implementation.\n- AnimationThread to handle playing the animation and calling back\n  to the animation listener.\n\nChange-Id: Ia39aba7ed476759df1da3200e413fe3e92590d15\n"
    }
  ],
  "next": "c97e6f9f35290c078d6acfaa39c3790a327e5a17"
}
