)]}'
{
  "log": [
    {
      "commit": "29aae6f36e565b8f2a99f2193597b964bb800ee8",
      "tree": "72d0d0798fe9549ebc82e1766464d1fe3ea5233f",
      "parents": [
        "5b56f7d6f662a543d0432a46047a55f1ee900994"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 18 18:30:09 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 23 17:44:52 2011 -0700"
      },
      "message": "Fix issue #4279860: previous UI flashes before showing lock screen...\n\n...(when turning display on after recently turning it off)\n\nAlso clean up when we decide to turn the screen on to improve that\ntransition.  There are still problems here with turning it on\nbefore the wallpaper gets dispayed.\n\nChange-Id: I2bc56c12e5ad75a1ce5a0546f43a845bf0823e66\n"
    },
    {
      "commit": "8433c36a98c9f45c37d2c60afc8a6a27514ddf2b",
      "tree": "7f34f034dd8e6e354a97d9970fc4415fa697e164",
      "parents": [
        "110be0f1d9e66e0a40a0084db5ebc4285194a8d7"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Aug 22 13:13:16 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Aug 22 13:13:16 2011 -0700"
      },
      "message": "LayoutLib: add native delegate for set/getHinting in Paint.\n\nChange-Id: I1758f8ce861240d72113aa23dcbef5a52abade56\n"
    },
    {
      "commit": "7f9f99ea11051614a7727dfb9f9578b518e76e3c",
      "tree": "d39b916bb092a717e028345813b53f6bcfa12f61",
      "parents": [
        "7277f3b9b26f0011475b39da1298484a510aca29"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Aug 11 10:16:17 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Aug 11 12:57:51 2011 -0700"
      },
      "message": "Make some methods/fields package private so that layoutlib can access them.\n\nChange-Id: I4aeadfbaf8a4f6a459fa19937c21ac23d9e5fb64\n"
    },
    {
      "commit": "ea670054d6c5b59b8481cbf796e6a1cd9f38b672",
      "tree": "9e9a732c3a9034074ea755782650185b01d418d0",
      "parents": [
        "95b0292fb4e27a9dc273884be60dad8523b8bd7a"
      ],
      "author": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Tue Aug 09 11:22:59 2011 -0700"
      },
      "committer": {
        "name": "Philip Milne",
        "email": "pmilne@google.com",
        "time": "Tue Aug 09 11:25:25 2011 -0700"
      },
      "message": "Implement native println_native in android.util.Log for LayoutLib\n\nChange-Id: I2ab83a131468490cf789bf17f9c12b6360e953a4\n"
    },
    {
      "commit": "dfee59afb3e4cdcde38f6338f9360655de76da92",
      "tree": "9581ba1b0c6d7c0034e7ff69fcf85071a9244a1c",
      "parents": [
        "5d4967884132647a75d05bcc2ca1f9ce490b372f"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Fri Aug 05 20:48:30 2011 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Sun Aug 07 14:17:30 2011 -0700"
      },
      "message": "Fix bug 5011824 - New Holo overflow menu for physical menu key devices\n\nThe new Holo-style overflow menu now appears from the edge of the screen\nwhere the device\u0027s physical menu key can be found. The policy determining\nthis lives in getPreferredOptionsPanelGravity() in WindowManagerService.\n\nChange-Id: I8851a2265547156591e82044e50b5cfc58d3eefa\n"
    },
    {
      "commit": "162c1dcd5e635d17d8425936d7729d0ae5ed1a62",
      "tree": "99ee7975eaa6671bdd10b0055eb7f3348c997b91",
      "parents": [
        "b389bdfba291382f9b306dd0e1bf7ba42fd94a4a"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Aug 03 17:20:58 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Aug 03 17:23:12 2011 -0700"
      },
      "message": "Layoutlib: implement Resources.getBoolean(int).\n\nChange-Id: I44cee203bb9a8fabaebfd689fc20ec2f2a9b3561\n"
    },
    {
      "commit": "569ed054042f0350e898b4352694b792b0fdef9b",
      "tree": "430d7f0e59b61567513bea1cff1359a59bd96427",
      "parents": [
        "78a29c9fde5debc4abe3b0f093d35ddfcae60565"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Aug 02 10:44:53 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Aug 02 10:55:18 2011 -0700"
      },
      "message": "Layoutlib: simple comment fix.\n\nChange-Id: I402f6b465706e8edd14e512a973d087a14abbfe3\n"
    },
    {
      "commit": "d2f664d42cc29507b01a98622298b69131463825",
      "tree": "21379de5fe0625ffcfb9e776dafef6d1e2614f6f",
      "parents": [
        "f7be31ee1062722855602c6b0227f01bdb7c0b80"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jul 29 17:41:39 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Aug 01 15:08:26 2011 -0700"
      },
      "message": "Misc layoutlib fix in preparation of the access change in framework code.\n\nChange-Id: I873adb7345514be6daa5c4fea4ebabb515f203e2\n"
    },
    {
      "commit": "bc68a59c024bdb745dac8e2ec7408a9f30595f1a",
      "tree": "9b3cfa4dc30eb787cbd828e97f7d816d5a91e68d",
      "parents": [
        "49754db5a304d995c1cc108ff6f19e4ba4265572"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 25 12:58:12 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 25 20:10:12 2011 -0700"
      },
      "message": "Report the external display size to the input reader.\n\nThe input reader needs this information so that it knows how to\ninterpolate touches on an external touch screen.\n\nChanged Display so that it asks the WindowManager what the real\ndisplay size is (as opposed to the raw display size).  This means\nit now takes into the forced display size set by\nadb shell am display-size.\n\nReplaced all calls to getRealWidth() / getRealHeight() /\ngetRealMetrics() in the WindowManager and replaced them with direct\nusages of the mCurDisplayWidth / mCurDisplayHeight so that the WM\ndoesn\u0027t end up making a reentrant Binder call into itself.\n\nFixed the table status bar HeightReceiver so that it updates the\nheight on all configuration changes since it is possible that the\ndisplay size changed independently of an external HDMI display\nbeing plugged / unplugged.\n\nImproved the Display class documentation to make the distinctions\nbetweeen the various sizes clearer.\n\nChange-Id: I3f75de559d3ebffed532ab46c4ae52c5e7f1da2b\n"
    },
    {
      "commit": "4f727fbdc302946b9b677e2518350dd3574d198a",
      "tree": "66cab48f2a59ec8de46001b97024133ba77d4332",
      "parents": [
        "fa93052d91ab6e6da3195ce3872c4543beb6d5c9",
        "ed07215e482cae1ffedbba707284821b3afc310f"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jul 25 17:24:56 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 25 17:24:56 2011 -0700"
      },
      "message": "am ed07215e: am 55775e5f: am e70b2b8f: am 9bcf26ea: Merge \"Layoutlib_create flag -p: don\\\u0027t change all accesses to public.\"\n\n* commit \u0027ed07215e482cae1ffedbba707284821b3afc310f\u0027:\n  Layoutlib_create flag -p: don\u0027t change all accesses to public.\n"
    },
    {
      "commit": "ed07215e482cae1ffedbba707284821b3afc310f",
      "tree": "0a4b4a868ae68249e5ee9f26a7cc9dea5e66201b",
      "parents": [
        "64ed105957098a900d58e7c2598e060cb37755ce",
        "55775e5f34af8d7c22ab3212c253b3a7d34a6f8a"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jul 25 12:21:17 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 25 12:21:17 2011 -0700"
      },
      "message": "am 55775e5f: am e70b2b8f: am 9bcf26ea: Merge \"Layoutlib_create flag -p: don\\\u0027t change all accesses to public.\"\n\n* commit \u002755775e5f34af8d7c22ab3212c253b3a7d34a6f8a\u0027:\n  Layoutlib_create flag -p: don\u0027t change all accesses to public.\n"
    },
    {
      "commit": "55775e5f34af8d7c22ab3212c253b3a7d34a6f8a",
      "tree": "87b37b98bfbe1201ed236aef1f563fb914539c04",
      "parents": [
        "e612c881ecf74770098aa9c07d4f0611ac982038",
        "e70b2b8fe0c265171f3a367a66c99b36c62567c7"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jul 21 16:25:50 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 21 16:25:50 2011 -0700"
      },
      "message": "am e70b2b8f: am 9bcf26ea: Merge \"Layoutlib_create flag -p: don\\\u0027t change all accesses to public.\"\n\n* commit \u0027e70b2b8fe0c265171f3a367a66c99b36c62567c7\u0027:\n  Layoutlib_create flag -p: don\u0027t change all accesses to public.\n"
    },
    {
      "commit": "e70b2b8fe0c265171f3a367a66c99b36c62567c7",
      "tree": "7bc6330ca5ecd1f2993bb1c0f30ac6e633d77b42",
      "parents": [
        "4f3a8db64d75cd3e88213d3b105dc50fc5bd6262",
        "9bcf26ea7aa108ce4bf4e973b4774d3e60eebafe"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jul 21 16:23:18 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 21 16:23:18 2011 -0700"
      },
      "message": "am 9bcf26ea: Merge \"Layoutlib_create flag -p: don\\\u0027t change all accesses to public.\"\n\n* commit \u00279bcf26ea7aa108ce4bf4e973b4774d3e60eebafe\u0027:\n  Layoutlib_create flag -p: don\u0027t change all accesses to public.\n"
    },
    {
      "commit": "caed59d90db8626462baaec351e66b2a3280dc34",
      "tree": "321f7c680bb71591cb2b95fa0afb0449e0c720f3",
      "parents": [
        "d40c93f61ca5b3f2351b8db716f67b58f1625e85"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Tue Jul 19 22:36:13 2011 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Tue Jul 19 22:36:13 2011 -0700"
      },
      "message": "Layoutlib_create flag -p: don\u0027t change all accesses to public.\n\nChange-Id: Icb1709ed0cb275a5a51ca34030695a5e94091499\n"
    },
    {
      "commit": "af64556de0064eeb5a4d4e6d634c3f074f5f40ce",
      "tree": "aaeb6dba4b713c2d7a21621d00555d823104316c",
      "parents": [
        "f2cc48fe8bea26bd07cb943b8308a19336536867"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jul 19 15:10:23 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jul 19 15:10:23 2011 -0700"
      },
      "message": "Layoutlib: misc fix + start of AndroidBidi support.\n\nChange-Id: If2ce0b683da8cce01679322d503eed8dd474e521\n"
    },
    {
      "commit": "91e88122cf28a48fd2e2260da7d3d87dd437227a",
      "tree": "b448f50dfd296574e5dabc6a9393624ad4a39868",
      "parents": [
        "bd029f64f2c695d49ea169f4c5c107e8172a1de5"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Mon Jul 18 11:11:42 2011 +0900"
      },
      "committer": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Tue Jul 19 04:59:48 2011 +0900"
      },
      "message": "Enable IMEs to set additional subtypes in background\n\nBug: 4591792\n\nChange-Id: I7e61a576c56d1a3a56001bdf2fd51ad3801add01\n"
    },
    {
      "commit": "37b3cc3bbe33df61f227bcf253aa67a4be441233",
      "tree": "a8886da36bc5f28705379761e7912f62d2ae5b58",
      "parents": [
        "fd909a774cb384b139c5e360cadb2681c3f48c29",
        "9163a4a686fc25fefc77d5b41c24a4538486a48e"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jul 13 14:53:54 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 13 14:53:54 2011 -0700"
      },
      "message": "am 9163a4a6: am aa4b1d8b: am d292d2a0: Merge 36a3a392 from mr1.\n\n* commit \u00279163a4a686fc25fefc77d5b41c24a4538486a48e\u0027:\n  Merge 36a3a392 from mr1.\n"
    },
    {
      "commit": "96131eef3869f2be1300e1620f5c3874b41bb534",
      "tree": "8c378e7302477213510655ec5b9bae290de9f744",
      "parents": [
        "0a49635b171f3ba366b1a7ebf28791c4661829bd"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jul 12 12:35:50 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jul 12 12:35:50 2011 -0700"
      },
      "message": "LayoutLib: updated fake accessbility manager and ensure there\u0027s an InputMethodManager\n\nWe had replaced the accessibility Manager but it lacked some new API. Obvisouly\nthis is fragile and should be fixed, but this works for now.\n\nAfter fixing this there was another issue with the lack of InputMethodManager.\nTo fix this I had to create an implementation of IInputMethodManager which\nnormally comes from a binder object.\n\nI may want to do a similar trick with the accessibility manager later.\n\nChange-Id: I28c6494e333f39072f348d0199124efac93256a5\n"
    },
    {
      "commit": "0a49635b171f3ba366b1a7ebf28791c4661829bd",
      "tree": "5130ff1f492eb1b37beac8a72b1075099738cec4",
      "parents": [
        "77eaa10949dd47532e262f8e74ad5a1536a4952e"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jul 12 11:39:27 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jul 12 11:49:22 2011 -0700"
      },
      "message": "LayoutLib: Delegate for Display and IWindowManager implementation.\n\nThis allows ViewConfiguration to be properly implemented which is now\nrequired for the rendering to happen.\n\nChange-Id: I55629689fa8f5f874b43fcac2aa0789ce02d58f4\n"
    },
    {
      "commit": "77eaa10949dd47532e262f8e74ad5a1536a4952e",
      "tree": "217612fa0ac7d51f66e235974287976be8e0a11a",
      "parents": [
        "5623b074977d55a61f29099f44670916c6282e51"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jul 11 14:32:26 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jul 11 14:40:48 2011 -0700"
      },
      "message": "new button graphics for layoutlib.\n\nChange-Id: I12a6bf9df87552321452ca3344449814cd3102bb\n"
    },
    {
      "commit": "9163a4a686fc25fefc77d5b41c24a4538486a48e",
      "tree": "5ceb5620392bb3ffa4072e5899cb8a95a2a318d0",
      "parents": [
        "3b219a51a9d692807d3fb0f516df81609ca6e4fc",
        "aa4b1d8ba9d5e317b67638b764d92d17fb810aa0"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jul 11 12:46:07 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 11 12:46:07 2011 -0700"
      },
      "message": "am aa4b1d8b: am d292d2a0: Merge 36a3a392 from mr1.\n\n* commit \u0027aa4b1d8ba9d5e317b67638b764d92d17fb810aa0\u0027:\n  Merge 36a3a392 from mr1.\n"
    },
    {
      "commit": "d292d2a03134eaca8b51b6313610b4b78de53c83",
      "tree": "a9ab3c83b1b5b5ff11d3d5a8d65aac5b922fb288",
      "parents": [
        "3f3b8cbfa775f2ebff985c069300f8daaeb7a84c"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jul 08 11:55:00 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jul 11 12:02:51 2011 -0700"
      },
      "message": "Merge 36a3a392 from mr1.\n\nProtect against OOB index in BridgeTypedArray.\n\nChange-Id: I40be1e039f9eb36c182b6522bd50d6ed98e15b5c\n"
    },
    {
      "commit": "842725fc642b7ba2c087cc81796973b838c23c76",
      "tree": "7153de69f4f965e51c0eb8eebc774cfda796dd7a",
      "parents": [
        "9bce27a9ce916bdf363667ee67fc0ce50c533aa3",
        "4d825e1f3bb6b52ecbea6f0c4aa2081b7f1edc89"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 28 18:55:46 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 28 18:55:46 2011 -0700"
      },
      "message": "am 4d825e1f: Merge \"Bring in more layout lib changes from hc-mr1.\" into gingerbread\n\n* commit \u00274d825e1f3bb6b52ecbea6f0c4aa2081b7f1edc89\u0027:\n  Bring in more layout lib changes from hc-mr1.\n"
    },
    {
      "commit": "9bce27a9ce916bdf363667ee67fc0ce50c533aa3",
      "tree": "1946628579b2bd45a0ba2b48440151a2ba68d7df",
      "parents": [
        "155cf6c1e191bb03fe24db8663715862d8e6a43d",
        "4753498d5c1ac3cf93b0730e77946a95b6913a82"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 28 18:55:42 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 28 18:55:42 2011 -0700"
      },
      "message": "am 4753498d: Merge \"CherryPick 06942bc4 from hc-mr1. do not merge.\" into gingerbread\n\n* commit \u00274753498d5c1ac3cf93b0730e77946a95b6913a82\u0027:\n  CherryPick 06942bc4 from hc-mr1. do not merge.\n"
    },
    {
      "commit": "155cf6c1e191bb03fe24db8663715862d8e6a43d",
      "tree": "9dfacc0c137a1b6e7b8909778a1c7b14679c46b2",
      "parents": [
        "e0947693c9984727dfa775a747dd32aaaeb90284",
        "9918ffb07f47430e22f6e53576d59b599f5a3534"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 28 18:53:54 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 28 18:53:54 2011 -0700"
      },
      "message": "am 9918ffb0: Merge \"CherryPick 988eeeb5 from hc-mr1. do not merge.\" into gingerbread\n\n* commit \u00279918ffb07f47430e22f6e53576d59b599f5a3534\u0027:\n  CherryPick 988eeeb5 from hc-mr1. do not merge.\n"
    },
    {
      "commit": "b02367778d451e38509ca1fc3fbc1d01dce6af1e",
      "tree": "f12ac14175b927f9bf93b6bd95822c908f5aba97",
      "parents": [
        "996bdbaaf0b532c77c10a1efea3b17eb50f416db",
        "f9705ef6d3f1502991dd312bfdbfb93cb07fe672"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Thu Jun 23 14:30:25 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 23 14:30:25 2011 -0700"
      },
      "message": "am f9705ef6: am 2b5f2d01: am e2b41b0d: Merge \"Laoutlib_creator: keep original of delegate methods.\"\n\n* commit \u0027f9705ef6d3f1502991dd312bfdbfb93cb07fe672\u0027:\n  Laoutlib_creator: keep original of delegate methods.\n"
    },
    {
      "commit": "f9705ef6d3f1502991dd312bfdbfb93cb07fe672",
      "tree": "d140e69c031dc236ed383df4b4fb091b79ba4fe9",
      "parents": [
        "4333de2a8e878b319c0e779942b87c042804d352",
        "2b5f2d01558ba338042f486c754f63873c4061fe"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Wed Jun 22 18:05:22 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 22 18:05:22 2011 -0700"
      },
      "message": "am 2b5f2d01: am e2b41b0d: Merge \"Laoutlib_creator: keep original of delegate methods.\"\n\n* commit \u00272b5f2d01558ba338042f486c754f63873c4061fe\u0027:\n  Laoutlib_creator: keep original of delegate methods.\n"
    },
    {
      "commit": "2b5f2d01558ba338042f486c754f63873c4061fe",
      "tree": "17b56eb49a6383f0ca1d1f626a31bc85f1db0129",
      "parents": [
        "9e5d0de9a333683533a021e9733e824cac666d18",
        "e2b41b0d5c8db85a60cd190c7094052db61114b2"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Wed Jun 22 17:44:29 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 22 17:44:29 2011 -0700"
      },
      "message": "am e2b41b0d: Merge \"Laoutlib_creator: keep original of delegate methods.\"\n\n* commit \u0027e2b41b0d5c8db85a60cd190c7094052db61114b2\u0027:\n  Laoutlib_creator: keep original of delegate methods.\n"
    },
    {
      "commit": "98e1e18c1cc1ec98a20dbdf0e6497614aacf3d0a",
      "tree": "25d41dabda547c9e2a1a060d8720e8d3ee4de2be",
      "parents": [
        "8969d9924c662ab4cdacc342bbdc33756db730be"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 22 11:35:11 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 22 11:35:11 2011 -0700"
      },
      "message": "Fix build.\n\ngit cherry-pick --no-commit  22a614142aacce13fc46a0e524dbfb6ca56bf237\n\nChange-Id: I1409bc3dd1f1b3027c12355e8b6aeffa2d857c83\n"
    },
    {
      "commit": "e86c5b2e9fe79f2a6f4187b6a4f2769c0b64168b",
      "tree": "607c8bedafd3f300962d776b97ee84a209917690",
      "parents": [
        "157c74e7ace77ae026cb59f48e400fb4ffe3c529",
        "fc511683b6647295cb645a0118d1b0afd575b3c3"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 21 12:19:07 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 21 12:19:07 2011 -0700"
      },
      "message": "Merge \"Add missing delegate to the layoutlib.\""
    },
    {
      "commit": "3523325159c083140ba51d36f46270f6adddad77",
      "tree": "59e5bd628f656bd4adbc4d96b26cc517fd0c7836",
      "parents": [
        "31e92e4f19367bd791c1d962a2627f59eab2ab86",
        "01f0fd84d085f90ca73e9091618ab3d98b5e1c4a"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Tue Jun 21 11:27:29 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 21 11:27:29 2011 -0700"
      },
      "message": "Merge \"Include testdata in layoutlib-tests.\""
    },
    {
      "commit": "fc511683b6647295cb645a0118d1b0afd575b3c3",
      "tree": "14d0c9916008cf406dc45c64ffd10f6e0c319de6",
      "parents": [
        "e2b801e5a437d75151d70a90e73f5f110d8732dd"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 21 11:03:29 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 21 11:03:29 2011 -0700"
      },
      "message": "Add missing delegate to the layoutlib.\n\nChange-Id: I8de5c1093052c40c0cd327a4d02b01651d3b76b5\n"
    },
    {
      "commit": "865c3bef54228a353fd449a093b0c8d155618296",
      "tree": "c93e90facdad4fbabb288960427874bd6e7dd2bf",
      "parents": [
        "94062517ae5573f9a1a877a83fe7d8e6d1a2c350"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Fri Jun 17 17:12:52 2011 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Fri Jun 17 19:07:13 2011 -0700"
      },
      "message": "Laoutlib_creator: keep original of delegate methods.\n\nFor specific methods, Layoublib_create can rewrite the implementation\nof a method to invoke a delegate instead of the original code. This\nallows layoutlib to implement native code or override existing behavior.\n\nThis patch also \u0027saves\u0027 the original implementation of a rewritten\nmethod so that the delegate can access the original implementation\nas needed. Obviously this is only done for non-native methods.\n\nGiven a non-native SomeClass.MethodName, we generate 2 methods:\n- A copy of the original method named \"SomeClass.MethodName_original\".\n  The content is the original method as-is from the reader.\n- A brand new implementation of SomeClass.MethodName which calls to a\n  non-existing method named \"SomeClass_delegate.MethodName\".\n  The implementation of this \u0027delegate\u0027 method is done in layoutlib_brigde.\n\nChange-Id: I5ca2cd3ac55991a8e8a51c417e75ee447bf9e9e6\n"
    },
    {
      "commit": "01f0fd84d085f90ca73e9091618ab3d98b5e1c4a",
      "tree": "c87cda4143344bc8aa8dd7efab63432c9910611c",
      "parents": [
        "576715c75987b64eff120f8800862815753b0c8a"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Fri Jun 17 17:03:20 2011 -0700"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Fri Jun 17 17:03:20 2011 -0700"
      },
      "message": "Include testdata in layoutlib-tests.\n\nChange-Id: I79fff895a13d171079b59db54d4b9d2bec555b3c\n"
    },
    {
      "commit": "ea5f0d0543a2ea78ecb0aa3d080098942ba3a4df",
      "tree": "29029f0d4b315b537ba876369efb629750a19c0d",
      "parents": [
        "d6465e10c27140647e02be8160d900d6e7e78441"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jun 09 19:14:06 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jun 16 18:26:25 2011 -0700"
      },
      "message": "Bring in more layout lib changes from hc-mr1.\n\nfe051bb2 : Change the way the layoutlib instantiate its XmlPullParser.\n\nA lot of the init code was duplicated so I made a ParserFactory class.\n\nAlso created an extension of the KXmlPullParser to override toString().\nThis allows easier debugging when dealing with multiple parsers (which\nis always the case).\n\nAlso added some (disabled) debugging printf to deal with parser stack\nas it can be tricky figuring out which parsers are in the stack at\nwhich point.\n\n8969147c : Fix case where the int[] attrs doesn\u0027t directly match a styleable.\n\nIn the case of the FastScroller the int[] is a custom mix of attr\ninstead of a int[] that exists as R.styleable.foo.\n\nThis makes our reflection based mechanism used to find the styleable\nfail, so instead we search for each attribute separately (like\nwe probably should have done from the beginning).\n\n0c264b35: Fix various cases of getDimension to report error if unit is missing.\n\nif getDimention###() is called for a string that has no unit,\nthen an error is output through LayoutLog, but the rendering keeps\ngoing by using dp as a default.\n\n0beb7eea: Make (Bridge)TypedArray.getInteger() call out to getInt()\n\nOnly getInt() resolved attribute flags/enum and I\u0027m not sure why\nthere\u0027s two to begin with.\n\nChange-Id: I015111263d2a2bee76834978ae71eef79defdae3\n"
    },
    {
      "commit": "d6465e10c27140647e02be8160d900d6e7e78441",
      "tree": "9d1d07ec308956d7329535b57d89fb7c46117567",
      "parents": [
        "6b62c82848b9823a26fc107deef8227d9cd516a6"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 07 17:48:35 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jun 16 18:26:25 2011 -0700"
      },
      "message": "CherryPick 06942bc4 from hc-mr1. do not merge.\n\nLayoutlib - use the new getParser callback when possible.\n\nChange-Id: I72b867aa573fcc07d610f139da3c90b1b654633c\n"
    },
    {
      "commit": "6b62c82848b9823a26fc107deef8227d9cd516a6",
      "tree": "a55d9486ce41b9e1be56551d4e0c0dd082a16f05",
      "parents": [
        "ec15afca08fcc342d6f22cf02a21975af13091cf"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 07 17:03:10 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jun 16 18:26:24 2011 -0700"
      },
      "message": "CherryPick 988eeeb5 from hc-mr1. do not merge.\n\nSupport for custom declare-styleable attr with enum/flag in layoutlib.\n\nChange-Id: I8a5b7cc629d61996ffade9aabd9d4d10961eb411\n"
    },
    {
      "commit": "9340ab4a213093bd59c79159011d131c9cd6996f",
      "tree": "69475f53306882ab8fcafba7dcb94cbade1c6cc2",
      "parents": [
        "da672372253002f06085ec6eace38b2fafe0f256",
        "0be8522b430aca8d90023d7c7e5ef510aa48adc7"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jun 16 14:04:18 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 16 14:04:18 2011 -0700"
      },
      "message": "am 0be8522b: am d1abd94f: am 04ce8111: Bring in more layout lib changes from hc-mr1.\n\n* commit \u00270be8522b430aca8d90023d7c7e5ef510aa48adc7\u0027:\n  Bring in more layout lib changes from hc-mr1.\n"
    },
    {
      "commit": "04ce81113107d2bfa0b8248b13145b4cf24cb943",
      "tree": "a9715c622a2b04360a8f47fb3a166fd5047b193f",
      "parents": [
        "8e18668d14adf601cbe5973030c310ec23d88461"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jun 09 19:14:06 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jun 16 13:23:53 2011 -0700"
      },
      "message": "Bring in more layout lib changes from hc-mr1.\n\nfe051bb2 : Change the way the layoutlib instantiate its XmlPullParser.\n\nA lot of the init code was duplicated so I made a ParserFactory class.\n\nAlso created an extension of the KXmlPullParser to override toString().\nThis allows easier debugging when dealing with multiple parsers (which\nis always the case).\n\nAlso added some (disabled) debugging printf to deal with parser stack\nas it can be tricky figuring out which parsers are in the stack at\nwhich point.\n\n8969147c : Fix case where the int[] attrs doesn\u0027t directly match a styleable.\n\nIn the case of the FastScroller the int[] is a custom mix of attr\ninstead of a int[] that exists as R.styleable.foo.\n\nThis makes our reflection based mechanism used to find the styleable\nfail, so instead we search for each attribute separately (like\nwe probably should have done from the beginning).\n\n0c264b35: Fix various cases of getDimension to report error if unit is missing.\n\nif getDimention###() is called for a string that has no unit,\nthen an error is output through LayoutLog, but the rendering keeps\ngoing by using dp as a default.\n\n0beb7eea: Make (Bridge)TypedArray.getInteger() call out to getInt()\n\nOnly getInt() resolved attribute flags/enum and I\u0027m not sure why\nthere\u0027s two to begin with.\n"
    },
    {
      "commit": "66743a1ec0dddadec7cd8f026f9b6a2239f515be",
      "tree": "58668aa8482b43977d7eb5f36d3c3d2c5ea2eee1",
      "parents": [
        "f71e5469441286c6f466043e64a7f6492557cbd9"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jun 15 14:43:42 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jun 15 14:43:42 2011 -0700"
      },
      "message": "Fix changed native method delegates in layoutlib for ICS.\n\nChange-Id: I49306868cd8a41b6b7d919c3e8b108d5c014530e\n"
    },
    {
      "commit": "2dcb6e80b999d93409e66bbd01b94a419c22013c",
      "tree": "445f90a614ca22ef16487caa717226ddb7387885",
      "parents": [
        "8c6d777da0e96b9ed5f0e2c1e643e767b17cb9e1",
        "48305f327ff3839ddbfa5a6fb42a57150a69480c"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jun 10 10:31:52 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 10 10:31:52 2011 -0700"
      },
      "message": "am 48305f32: am 2e0f7118: am 8ee28811: Merge changes Idbb70f53,I10426a3f into honeycomb-mr2\n\n* commit \u002748305f327ff3839ddbfa5a6fb42a57150a69480c\u0027:\n  Merge 06942bc4 from hc-mr1.\n  Merge 988eeeb5 from hc-mr1.\n"
    },
    {
      "commit": "45b662e1bcff23dc59fb3a47bc32c99e63b2ac35",
      "tree": "43cf38fd15a568b875a029c83a4c15f9a6280abe",
      "parents": [
        "beb5fb622b71693c21b6fab562a98e7000c64273"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 07 17:48:35 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jun 08 17:11:40 2011 -0700"
      },
      "message": "Merge 06942bc4 from hc-mr1.\n\nLayoutlib - use the new getParser callback when possible.\n\nChange-Id: Idbb70f5391addd539afa5c2f5b55c70beefed223\n"
    },
    {
      "commit": "beb5fb622b71693c21b6fab562a98e7000c64273",
      "tree": "2363646dabecde6e300f2483625e5b0d401f4e0a",
      "parents": [
        "cea03df201dc6659654234bc5fbfebf1b6a06e42"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 07 17:03:10 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jun 08 17:10:11 2011 -0700"
      },
      "message": "Merge 988eeeb5 from hc-mr1.\n\nSupport for custom declare-styleable attr with enum/flag in layoutlib.\n\nChange-Id: I10426a3f2c76bed207c03fab7885b4269337a70f\n"
    },
    {
      "commit": "f18e311ee5d35db0cae96f0b216a88e5b42604dc",
      "tree": "60ddaf1c2c9936d4711c93a82705cdd325e1fa53",
      "parents": [
        "c8307c885f8462f2baf9f06c9916d1521f7fdcfb",
        "abc838716816107754ab0479242d03807ce79fc2"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 07 17:17:11 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 07 17:17:11 2011 -0700"
      },
      "message": "am abc83871: am f6e47999: am 2a6dc7f1: Merge \"Import the Layoutlib from hc-mr1.\" into honeycomb-mr2\n\n* commit \u0027abc838716816107754ab0479242d03807ce79fc2\u0027:\n  Import the Layoutlib from hc-mr1.\n"
    },
    {
      "commit": "fb93ce9684120a36862b5b5e67b1865a652907e9",
      "tree": "41238180f5a041996b7f7f8204c2b33f3d8ef20a",
      "parents": [
        "bd754205d0b59315582855329649dad925a04b82"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jun 03 19:38:03 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jun 03 19:38:14 2011 -0700"
      },
      "message": "Import the Layoutlib from hc-mr1.\n\nThis is squash commit of all the missing patches.\n\nChange-Id: Ie081c46a173290646deddbde503a720d50c4400f\n"
    },
    {
      "commit": "156a211b21fbaeb6391162a056390b9cd8748fae",
      "tree": "8160f75bb58fa7317256f1ba09530573686ef9f9",
      "parents": [
        "21726044a934f3f4f9827a05bbc8db2477220fa1"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jun 03 17:25:48 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jun 03 18:37:09 2011 -0700"
      },
      "message": "Cherrypick d1ed33c4 from hc-mr1. do not merge.\n\nFix zombie threads in the Layoutlib.\n\nSome widgets can create (indirectly) HandlerThread which are started\nbut never stopped.\n\nThis patch use the delegate methods to override the thread run method\nto record which threads are started to be able to call quit() on them\nafter a render.\n\nNote that we should really fix layoutlib_create to be able to call\nthe default implementation from a delegate to remove code duplication.\n\nChange-Id: Iaf5432623e9704bb3114a8e0583c8553282c205e\n"
    },
    {
      "commit": "21726044a934f3f4f9827a05bbc8db2477220fa1",
      "tree": "0ac69160ec926901c026f6990983931fb12495bf",
      "parents": [
        "f174cd86bd70c1f1322cc15f42d5fd87223933a0"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jun 03 15:21:53 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jun 03 16:02:12 2011 -0700"
      },
      "message": "Cherrypick 5b61ea6b from hc-mr1\n\nFix drawCircle in layoutlib.\n\nChange-Id: I035c48b925cad246ed821e9e59a93d37174982ef\n"
    },
    {
      "commit": "f174cd86bd70c1f1322cc15f42d5fd87223933a0",
      "tree": "774eca350a4429c0d87f693c229766eb8e39370b",
      "parents": [
        "8f17523dcac41f5a8962cfb61265c71ad0c0e463"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jun 02 16:38:38 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jun 02 16:38:38 2011 -0700"
      },
      "message": "LayoutLib: enable the LAYOUT_ONLY capability.\n\nChange-Id: Ib302af47d2a83a7ac3def6256bf0b892823f594f\n"
    },
    {
      "commit": "8f17523dcac41f5a8962cfb61265c71ad0c0e463",
      "tree": "71e8272a956bc8245222c361ae731e08cf8e09bc",
      "parents": [
        "0aa1017f9183bca752c95af72f73120e102ab2d3"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jun 01 17:39:32 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jun 01 18:32:57 2011 -0700"
      },
      "message": "Merge dba35f1b from honeycomb-mr1. do not merge.\n\nChange-Id: Iebda5ea67fd40cac76a8ca3fe3c3cd4ee95ddebe\nLayoutLib: Properly configure KXmlParser to read UTF8\n"
    },
    {
      "commit": "34f5991ebe8b203f1720caf95889c15dd131d86e",
      "tree": "373d328201332a614bf871f051505d9d00a6bcdc",
      "parents": [
        "c7b87766b21fe5cf2f644efa8753b936d413dc9a"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon May 23 19:07:18 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue May 24 10:55:30 2011 -0700"
      },
      "message": "Merge 6103e22c from honeycomb-mr1. do not merge.\n\nLayoutLib: custom styles override the default style instead of replacing it.\n\nIntead of reading either the custom or the default style for a widget, we\nread both and use the values from the custom style if it exists, or\nfrom the default style otherwise.\n\nChange-Id: Ibcec2e9b1e8a95295ab26ede145c287ff2f30be4\n"
    },
    {
      "commit": "c7b87766b21fe5cf2f644efa8753b936d413dc9a",
      "tree": "4655c3dcd0de4b9466d4e7e3eb77c12d1deb422e",
      "parents": [
        "4e4ad34159dc1c720a3e6145bb9f14c60fb1a3f7"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon May 23 16:43:57 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon May 23 17:51:22 2011 -0700"
      },
      "message": "Merge 2402ad60 from honeycomb-mr1. do not merge.\n\nLayoutLib: Fix Canvas_Delegate.native_concat().\n\nChange-Id: I863c43d65a929816ac7c9e69addcc647dac1878b\n"
    },
    {
      "commit": "4c1e73b69a13a4f24a8fc123f599a9e9d8505525",
      "tree": "8f4ce5d09c152fee925aec054df1411294f65558",
      "parents": [
        "f791863f0ac67ab6abd7410d5807d716cffc5b72"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu May 19 20:34:28 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri May 20 14:50:45 2011 -0700"
      },
      "message": "Merge e57aa434 from honeycomb-mr1. do not merge.\n\nLayoutLib: Fix issue where \u003cinclude\u003e with no layout params wouldn\u0027t display.\n\nThe issue is that the layout params from the root element of the included\nlayout should be used but this failed because loading the layout params\nfrom the \u003cinclude\u003e tag didn\u0027t throw a RuntimeException in our modified\ncode (BridgeTypedArray).\n\nBecause we don\u0027t want to throw exception in general we only throw it\nwhen reading the layout params of an include node which is pretty crappy,\nbut works for now.\n\nChange-Id: I83ccf956e8b476f34dfc9a70aebae2288d53746e\n"
    },
    {
      "commit": "d9af22e204e7f4c364c346b6c1bac900a2c4ccca",
      "tree": "836e63535ac4ccdf3428f43b76e2f2a67f1ce538",
      "parents": [
        "e172a3fc23412ebc79d6bd93e6d43d4b1c58354b"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon May 16 16:29:03 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu May 19 16:52:41 2011 -0700"
      },
      "message": "Merge 05b7b69c from honeycomb-mr1. do not merge.\n\nChange-Id: I1aca5774dec2e18ab5f9e860f6fd90b481b2857c\nLayoutLib: support the new baseline/margin query API.\n"
    },
    {
      "commit": "e172a3fc23412ebc79d6bd93e6d43d4b1c58354b",
      "tree": "7dd7aad58530ef14f09d47f1d43b0e5dcedba703",
      "parents": [
        "8dd85f80ba9c463f5616b47eceb620fe21203f4f"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Mar 29 11:58:02 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu May 19 16:52:29 2011 -0700"
      },
      "message": "Merge 2fae858d from Honeycomb-mr1. do not merge.\n\nChange-Id: I648f9ffa9745331ce4104dc4772f78ed933a4909\nLayoutLib: implement data binding for most AdapterView\n"
    },
    {
      "commit": "9f23e60b20f0419e6ca5ff55db9d6282596e7fe8",
      "tree": "23a6eb48e40b80341dcc2b13b9556b770c88d2ec",
      "parents": [
        "ba43d4282c82e55b5a5c01771f028e6266dbc781",
        "a13462a947e634a6893119146a7271369e509586"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu May 19 08:58:18 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 19 08:58:18 2011 -0700"
      },
      "message": "am a13462a9: am 582841e7: am b18e700c: am aa0834e3: Merge \"LayoutLib: support the new baseline/margin query API.\" into honeycomb-mr1\n\n* commit \u0027a13462a947e634a6893119146a7271369e509586\u0027:\n  LayoutLib: support the new baseline/margin query API.\n"
    },
    {
      "commit": "05b7b69c6c5d418e18db644feed1ec2ca83291cc",
      "tree": "08a87ebb428cff4cc15ee9ebb10cfbc9621068be",
      "parents": [
        "2fae858db55fc6984ef923a6226b9408c37c72cb"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon May 16 16:29:03 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon May 16 16:29:03 2011 -0700"
      },
      "message": "LayoutLib: support the new baseline/margin query API.\n\nChange-Id: I856489df655960820b8eaa4c6179515a5c069b00\n"
    },
    {
      "commit": "8c2f85d94145a96f53e9041c609e283be7412a0f",
      "tree": "c86bfd0b8703eeb6e6bafd98d76b2dd0e129b179",
      "parents": [
        "ba4990c77cbc643809f1d0e74fabe5a1d1d1c3dc",
        "d00541603fbbb4e38264e75a2b6abf8705efeb49"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri May 13 16:43:37 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 13 16:43:37 2011 -0700"
      },
      "message": "am d0054160: am 6d040a7f: am 738c5e60: am 2fae858d: LayoutLib: implement data binding for most AdapterView\n\n* commit \u0027d00541603fbbb4e38264e75a2b6abf8705efeb49\u0027:\n  LayoutLib: implement data binding for most AdapterView\n"
    },
    {
      "commit": "2fae858db55fc6984ef923a6226b9408c37c72cb",
      "tree": "b408f9da8f855228b8b865189e672abe3bcf0700",
      "parents": [
        "edab852fe11f12ad5a0a66f79462ed7474ba9e5a"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Mar 29 11:58:02 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri May 13 15:55:49 2011 -0700"
      },
      "message": "LayoutLib: implement data binding for most AdapterView\n\nChange-Id: I27be96ed2c37573eb22cfbb391d96b6137b3df8c\n"
    },
    {
      "commit": "515a08b01851a1ab9386f85dee6d9fd7b65ee7ad",
      "tree": "549fcb535c70f46ac97e0a369ef507c05323aa68",
      "parents": [
        "b25181aaccb00fee405251bf3575ce1d40badf46"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Apr 06 17:03:31 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Apr 07 12:02:31 2011 -0700"
      },
      "message": "Merge 59aad78e from master. do not merge.\n\nLayoutLib: don\u0027t render when shader\u0027s local matrix is set to 0 scale.\n\nChange-Id: I02c0ddd856026357f468dcc8b81e0520470118de\n"
    },
    {
      "commit": "59aad78eae14939c169876b2f632d005f382cf7d",
      "tree": "1c1637f9315d503a67119818379c15f9e9e2be1c",
      "parents": [
        "8a18dba48c354fc47056b07ddec8a32fda266b6a"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Apr 06 17:03:31 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Apr 06 17:03:31 2011 -0700"
      },
      "message": "LayoutLib: don\u0027t render when shader\u0027s local matrix is set to 0 scale.\n\nChange-Id: I7726d87f3dd0475ac662f535a08c6435b8b9ed1f\n"
    },
    {
      "commit": "8a18dba48c354fc47056b07ddec8a32fda266b6a",
      "tree": "8dd9444bbe6c1c812d54e336f9fd2d5dcc738c63",
      "parents": [
        "43707a83ec12957fb84a406276a38fbaf4e23fd3"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Apr 05 20:19:17 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Apr 06 14:24:59 2011 -0700"
      },
      "message": "Merge c5aeac7f from honeycomb.\n\nLayoutLib: Fix issue with rendering mode.\n\nWhen the layout content is embedded inside a decor layout\nto emulate system bar (top or bottom) and title bar (or action bar)\nthen the code computing the full required size based on the RenderingMode\nwould fail because the decor layout would prevents the content layout to\ntake as much room as possible.\nThere is also an issue with the way we know render dialogs as the\ndialogs usually as a frame with some padding and the previous measurements\nwould not take into account the dialog padding when increasing the\nscreen size.\n\nThis fix makes the code measure the size of the content layout in the\nnormal rendering, and then separately from the root layout with the proper\nMeasureSpec to let the content grown. The difference in size is then added\nto the screen size.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d15892\n\nChange-Id: Ie9a6c5e254b16785f817dcb9fae755d4936880aa\n"
    },
    {
      "commit": "c5aeac7f157e3cb9e29ab8c126f74e26493501f5",
      "tree": "7767282c829748563f5dbb1026972395ec0a2052",
      "parents": [
        "e4cafabbcc4b69479217d1a167926b79c37e5ded"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Apr 05 20:19:17 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Apr 05 20:45:48 2011 -0700"
      },
      "message": "LayoutLib: Fix issue with rendering mode.\n\nWhen the layout content is embedded inside a decor layout\nto emulate system bar (top or bottom) and title bar (or action bar)\nthen the code computing the full required size based on the RenderingMode\nwould fail because the decor layout would prevents the content layout to\ntake as much room as possible.\nThere is also an issue with the way we know render dialogs as the\ndialogs usually as a frame with some padding and the previous measurements\nwould not take into account the dialog padding when increasing the\nscreen size.\n\nThis fix makes the code measure the size of the content layout in the\nnormal rendering, and then separately from the root layout with the proper\nMeasureSpec to let the content grown. The difference in size is then added\nto the screen size.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d15892\n\nChange-Id: Ibb9ca2a67c6c450d10d9f9a8050536e094650f8b\n"
    },
    {
      "commit": "c7c8c599a636a105db0d2eac3b8b332532a7a40f",
      "tree": "f2ba035079a3faaa7d2c34f70f37551856577fe5",
      "parents": [
        "5982bf66d4fdea38105d91ff0f9d38660ac87581"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Mar 17 14:11:23 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Mar 17 14:24:50 2011 -0700"
      },
      "message": "Merge 67450db0 from honeycomb. Do not merge.\n\nChange-Id: I0ca140dd6d9279ff313f930739ad40fbbed4f335\nLayoutLib: TypedArray.getDimensionPixelSize can actually return \u003c0\n"
    },
    {
      "commit": "67450db03eac59c93b2b46c7872ce4d7dca47265",
      "tree": "d4d45746a203a2d34b13e4645013880cb796d68e",
      "parents": [
        "2f1f2248c8439adbd686810e306c55f9e6a5abc3"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Mar 17 14:11:23 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Mar 17 14:11:23 2011 -0700"
      },
      "message": "LayoutLib: TypedArray.getDimensionPixelSize can actually return \u003c0\n\nChange-Id: I17853dc242e28f0c59916cad1b2a57beed480a57\n"
    },
    {
      "commit": "0a98226e3c8cda46786558147a0eb6a56c3370c0",
      "tree": "87eef19a8e06439d2cb4d9f81812003c383d7080",
      "parents": [
        "b243aabdaf1ba6fdfc0579c9f949e00d562456ed"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Mar 14 15:12:21 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Mar 15 11:34:19 2011 -0700"
      },
      "message": "Merge 9d76581f from honeycomb. do not merge.\n\nLayoutLib: Fix Arc rendering.\n\nLooks like Java2D and Skia go in different directions for angles.\n\nChange-Id: I4d72db56455afe25b4f51f23a9b29d6c438119ba\n"
    },
    {
      "commit": "b243aabdaf1ba6fdfc0579c9f949e00d562456ed",
      "tree": "1468da68a2c7bf06a2db1d821bd203cb6e857a50",
      "parents": [
        "48a2a5ad1b7c4979b1d7baf6add4bc32148a75ae"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Mar 08 11:50:21 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Mar 15 11:34:18 2011 -0700"
      },
      "message": "Merge adaa12cd from honeycomb. do not merge.\n\nLayoutLib: fix Capabilities and getDimensionPixelSize\n\nCommented out a Capability that is not in ADT 10.\n\nBridgeTypedArray.getDimensionPixelSize shouldn\u0027t call\ngetDimension since most of the code is duplicated, and\nit prevents use from properly detecting malformed attribute\nvalues.\n\nChange-Id: I008334af605a89f240247a13c0024009247ec5af\n"
    },
    {
      "commit": "2652b618a86c28fe1914c52dd6a91139c3d9b1e7",
      "tree": "3de7d6475a0144999be2e0e8cfa0455f8e937112",
      "parents": [
        "f354ad108c794bd4c9d1aa9a4f2a526d9c27e224"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Mar 07 20:50:21 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Mar 14 15:28:50 2011 -0700"
      },
      "message": "Merge 6f2fb570 from honeycomb. do not merge.\n\nLayoutLib: Fix dimension parsing to handle negative value.\n\nAlso make TypedArray.getDimensionPixelSize properly\nhandle negative values (which are not allowed).\n\nChange-Id: I03ffcef5ab7ec7ef95419566776dcc798845fd88\n"
    },
    {
      "commit": "f354ad108c794bd4c9d1aa9a4f2a526d9c27e224",
      "tree": "410e6b7090c84b97e12f4bb83366d8b98468f311",
      "parents": [
        "bf079216c607b660a0ad219df6c4752906a7fc61"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Mar 07 20:19:38 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Mar 14 15:28:50 2011 -0700"
      },
      "message": "Merge c12b4093 from honeycomb. do not merge.\n\nChange-Id: Icfbb70c097d87bf92415c6f0534346adde4c02fe\nLayoutLib: Implement some missing add###() method in Path.\n"
    },
    {
      "commit": "9d76581faf9eb5f47eff922c14807e51702f363b",
      "tree": "ad0daf93af5ea501cdd86ede8ab1934ff03a4512",
      "parents": [
        "e21110f8b1e4aa884f7a4e2164ae90dab8d5f3fa"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Mar 14 15:12:21 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Mar 14 15:12:21 2011 -0700"
      },
      "message": "LayoutLib: Fix Arc rendering.\n\nLooks like Java2D and Skia go in different directions for angles.\n\nChange-Id: Ia0c9c70cd66c9a0941fa9921fecf8e4e83538af3\n"
    },
    {
      "commit": "adaa12cd9e421edf34e36de8cfacc3e3c334bb64",
      "tree": "8a52c39f4e27d9ad86beda0197908b3e7ac55ced",
      "parents": [
        "6f2fb570642189ec2b6068632c25f02391007bb5"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Mar 08 11:50:21 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Mar 08 15:00:35 2011 -0800"
      },
      "message": "LayoutLib: fix Capabilities and getDimensionPixelSize\n\nCommented out a Capability that is not in ADT 10.\n\nBridgeTypedArray.getDimensionPixelSize shouldn\u0027t call\ngetDimension since most of the code is duplicated, and\nit prevents use from properly detecting malformed attribute\nvalues.\n\nChange-Id: I005b17061590dc0668729af16e896fad815f1973\n"
    },
    {
      "commit": "6f2fb570642189ec2b6068632c25f02391007bb5",
      "tree": "ad791a365ba343daf8646d74af7f4331fed0904e",
      "parents": [
        "c12b4093517ac99cabd91a1bb4bdb3bacfe4bcfd"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Mar 07 20:50:21 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Mar 07 20:50:21 2011 -0800"
      },
      "message": "LayoutLib: Fix dimension parsing to handle negative value.\n\nAlso make TypedArray.getDimensionPixelSize properly\nhandle negative values (which are not allowed).\n\nChange-Id: I960fc1c9e8ad97852d4a14e4f0f71a2c2034b4e7\n"
    },
    {
      "commit": "c12b4093517ac99cabd91a1bb4bdb3bacfe4bcfd",
      "tree": "702bd62cc2811641a05c286a9b620dc0df2ef40b",
      "parents": [
        "a46c1df226f2aea54d3bb068b0537c9b1d28590c"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Mar 07 20:19:38 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Mar 07 20:19:38 2011 -0800"
      },
      "message": "LayoutLib: Implement some missing add###() method in Path.\n\nChange-Id: Ib62b5df0361ba81846483b1e5f8d7cbdbcb57d40\n"
    },
    {
      "commit": "648251710162cdaf7371012a1cbb79b9bc5bc0e4",
      "tree": "a98c62fcd2391c1dfa2623f899346de0a7619fe9",
      "parents": [
        "cbf9cb35bb7064f303c6dd9da4485cd5344b6779"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 02 21:32:58 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 02 22:38:58 2011 -0800"
      },
      "message": "Fix issue #3485923: Gmail crash\n\nAllow application to try to recover if a surface OOM error\nhappens on the client side.\n\nChange-Id: I0308bd99647a35e4bcac448340b7fc6330a828f6\n"
    },
    {
      "commit": "efe18b5e3f02a51a3900d5a0a3687d2b5e315b4c",
      "tree": "c8e99e1a56e77075aaf2dc3d7b7adf051e9a3018",
      "parents": [
        "092238916fd5d10090c0bcad33644778a1f366e7"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Feb 24 13:51:26 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Feb 25 14:53:32 2011 -0800"
      },
      "message": "Merge 1911a6f7 into gingerbread. do not merge.\n\nChange-Id: I6d56644c4ab1a70eb4a6d0d2e5d84ea4aa674041\nLayoutLib: move tests to their own project.\n"
    },
    {
      "commit": "a4510a75757b82207f677609b970010f59c774ba",
      "tree": "3ef4d90e0d1368cb72f7175522f9dab0441985f9",
      "parents": [
        "7f4a537af5ec1c935b9d139b722da05e9fe8130f"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Feb 24 18:56:34 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Feb 24 18:58:27 2011 -0800"
      },
      "message": "LayoutLib: fix incorrect indices in one of the 2 native_drawTextRun methods.\n\nFixes http://b.android.com/15007\n\nChange-Id: Iff06180def92c5fa25e82520b76192c089edd8cc\n"
    },
    {
      "commit": "1911a6f7812e3f7dcb83fd4741a297d043a80e46",
      "tree": "a71550d666ab1cc98a7f76a8bf4580920f3af7a5",
      "parents": [
        "81904fa40b501d3907c086e7d4fdc4a3e25cd922"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Feb 24 13:51:26 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Feb 24 13:51:26 2011 -0800"
      },
      "message": "LayoutLib: move tests to their own project.\n\nChange-Id: I8a9e128e4a17ab57ec7b126a378035d9ce5bc168\n"
    },
    {
      "commit": "031d2f8b6db5bf7b249ae1c9a72915bf2d3a8d7b",
      "tree": "1d1a79124aeadc198088be178a3dea7d8d804e5e",
      "parents": [
        "4b52ec49fee79b0488d6a9eaaa4ea5d74ce90905"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Feb 07 21:30:53 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 23 19:47:18 2011 -0800"
      },
      "message": "LayoutLib: Adapt the HC layoutlib to GB. do not merge.\n\nChange-Id: I0b2016987a65fabbc0ce7011514543349e9fb929\n"
    },
    {
      "commit": "4b52ec49fee79b0488d6a9eaaa4ea5d74ce90905",
      "tree": "5b37f5bc58ed3bacbc8536aabcc7e08a57776801",
      "parents": [
        "2050de5b9a5c097e30545ab822211d49031bd9dc"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Feb 07 21:08:10 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 23 19:47:02 2011 -0800"
      },
      "message": "LayoutLib: Original import of Honeycomb\u0027s layoutlib. do not merge.\n\nframeworks/base.git @ f0a53435f14d23d9555fc46014352ee6a7baa647\n\nChange-Id: Ibc215751693dc7650683b61bb458f7c8beaf8060\n"
    },
    {
      "commit": "f0a53435f14d23d9555fc46014352ee6a7baa647",
      "tree": "883fcc18814b84c5e8eea5f6b94663a2e845b15c",
      "parents": [
        "b2c7dd5986344369f02dfe2965b309153b121127"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 23 16:51:08 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 23 18:12:49 2011 -0800"
      },
      "message": "LayoutLib: Add debug mode.\n\nChange-Id: If4263c7dba63a063f84e0c6988c270eb6d291ac3\n"
    },
    {
      "commit": "b2c7dd5986344369f02dfe2965b309153b121127",
      "tree": "9a54b0903d2ae5f16f16dcade25c885860bd5ab8",
      "parents": [
        "c6083f2c9eadb1f8a502ea9806868f5b0148667e"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 23 15:02:58 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 23 15:02:58 2011 -0800"
      },
      "message": "LayoutLib: downsize the SparseArray when possible.\n\nChange-Id: I570b93ab161414b7729f8d2dce8ddadb706f186b\n"
    },
    {
      "commit": "c6083f2c9eadb1f8a502ea9806868f5b0148667e",
      "tree": "db6d0159444f1900142fe543dc34832bf7084e67",
      "parents": [
        "cc4977d0fdaf657907912fd6cc2f9426dc8d2e36"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 23 09:53:56 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 23 12:00:42 2011 -0800"
      },
      "message": "LayoutLib: misc fixes.\n\n- implement some Paint methods that are needed for 2.x\n- fix the phone system bar to display the icons on the right.\n\nChange-Id: I3a938b14ec9a449dbc23a33303a3c8405a5369a8\n"
    },
    {
      "commit": "cc4977d0fdaf657907912fd6cc2f9426dc8d2e36",
      "tree": "a49b4d71fa36d705dd6659f872bb8339fc357825",
      "parents": [
        "8cb6fc184dcb9cc6ab0871de5cf430277d15c8c8"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Feb 22 11:54:37 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 23 12:00:41 2011 -0800"
      },
      "message": "LayoutLib: Hold onto delegate references.\n\nWhen an object is given a delegate to hold onto, keep\nthe reference to the delegate instead of its native integer.\n\nAlso change the way the finalizer works by not explicitely deleting\nthe delegate. Instead we want the delegate to be deleted when\nnothing holds a reference to it. To do this, instead of using\na regular SparseArray, we use a SparseArray of WeakReferences.\nBecause the main Java object that \"owns\" the delegate does not\nactually holds a reference to the delegate, we fake this by\nhaving the delegate manager hold a reference to delegates for\nthe main object. This is added/removed as the object is created\nand the native finalized is called.\n\nThis makes layoutlib behave more like the JNI code where the native\nobjects are reference counted, and where the Java object can be\ndeleted but the delegate it owns is kept around (usually because\nanother type of delegates hold a reference on it.)\n\nTo properly handle the WeakReferences, we need to be able to\nregularly clear the SparseArray of WeakReference that were\nreferencing objects that have been GC\u0027ed.\nSince the SparseArray is regularly being compacted (actually only\nwhen items are removed), we use a custom SparseWeakArray (started\nas a straight copy of SparseArray) that handles the WeakReference\nand takes care of compacting the array by removing deleted indices\nand WeakReference that returns null. Since our specific use case\ndoesn\u0027t call actually delete() or remove(), the compacting\nonly happens when the array needs to be resized.\n\nChange-Id: Iacc5c1ff5b21732b8816fda87eb090da12d034e0\n"
    },
    {
      "commit": "8cb6fc184dcb9cc6ab0871de5cf430277d15c8c8",
      "tree": "59dbf35999d868ecb3e2b31ede27b56ff21ba34f",
      "parents": [
        "e86c12c9e489e7f04c49a7733fc4014668e012e2"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Feb 22 16:50:11 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 23 12:00:41 2011 -0800"
      },
      "message": "LayoutLib: Import of SparseArray as SparseWeakArray.\n\nThis is a straight copy for easy review of the customization.\n\nChange-Id: I351ec570c3e7a025561939ab05c1ae7eded30b38\n"
    },
    {
      "commit": "1ca584a2bb5c0f0e747c98f2e930cce8b53421a5",
      "tree": "70bd2fb29071d83d96201b761e7b4cf8afc68dcf",
      "parents": [
        "82314c013fbd94fdbad6a8f9687a6204c7966e12"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Feb 18 18:48:08 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Feb 18 18:48:08 2011 -0800"
      },
      "message": "LayoutLib: remove assert in resource resolution.\n\nThese code paths were valid in case there\u0027s a mismatch\nbetween the style/theme/version of Android\n\nChange-Id: I8cb3b2a3f3a1ef5c37ccec0c8ddbb7add69bfbe0\n"
    },
    {
      "commit": "3e87bfa1911de10c3d0692b34eba27f5965710f7",
      "tree": "bc2785d949948e55fc0da3b74fe3414f47da1c6a",
      "parents": [
        "f20999965b94bdcc2b1f2c05b587ff405924bc96"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Feb 18 17:50:38 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Feb 18 17:50:38 2011 -0800"
      },
      "message": "LayoutLib: support defStyleRes in obtainStyledAttributes.\n\nThis fix the Spinner rendering.\n\nChange-Id: I20a71d9e07f6c86652a74fba3fc05a027a057ff8\n"
    },
    {
      "commit": "f20999965b94bdcc2b1f2c05b587ff405924bc96",
      "tree": "ee89cca1f3556d0272758638a6de64a06f8407db",
      "parents": [
        "754537cf9fc49ff741f3bd6953a262984aaa99d6"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Feb 18 17:19:08 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Feb 18 17:19:08 2011 -0800"
      },
      "message": "LayoutLib: properly handle @null references in more places.\n\nChange-Id: I240298ab79c19ab0e49cb6da19d6b0187493d3b5\n"
    },
    {
      "commit": "10df650f0d4bdf086dae9ac29fafd8a1ded06c23",
      "tree": "ca0272f6f0d143877b2bfdadd5b9905ba0eda724",
      "parents": [
        "016d37e6c557a760c6508f5c06c8e65d2492772d"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Feb 17 10:24:46 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Feb 17 10:24:46 2011 -0800"
      },
      "message": "LayoutLib: add support for layout_only render.\n\nChange-Id: I1cd791cf9560156c1ac488f8e454240c84e29cc6\n"
    },
    {
      "commit": "559358fdf65b1b551312526940cb02ec23bf6d9d",
      "tree": "1490b1a15963a4a689667e688d1c423dc4585fe0",
      "parents": [
        "c60aadc442262efb08fcbf0823e6101199bd50f2",
        "1858c95e99f81ac46eea93288cb8866260b3d5d8"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Feb 14 09:59:58 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 14 09:59:58 2011 -0800"
      },
      "message": "am 1858c95e: am 02d2b5a4: LayoutLib: When possible ensure parsers are popped from the stack.\n\n* commit \u00271858c95e99f81ac46eea93288cb8866260b3d5d8\u0027:\n  LayoutLib: When possible ensure parsers are popped from the stack.\n"
    },
    {
      "commit": "02d2b5a4031c80bfe1012ce2f4f7b3695762abd9",
      "tree": "f4d74330dbd29a475c7464c18fd32e8e76d2c2c1",
      "parents": [
        "bbcf2079e9978ad6f75732070ce1dcc0dea3ea3f"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Sun Feb 13 20:15:50 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Feb 14 09:42:19 2011 -0800"
      },
      "message": "LayoutLib: When possible ensure parsers are popped from the stack.\n\nSome parser consumers (seems to be mostly resource inflation)\ndon\u0027t use the pull parser up to the END_DOCUMENT tag, making\nthe parser not pop itself from the parser stack automatically.\n\nThis is likely due to the XML resources being very shallow (1-2 levels\nmax), and the inflater just reading the content that it expects instead\nof parsing till the document is done.\n\nThis ensures that *some* parsers are pop\u0027ed from the stack when\nused. Some other parsers we don\u0027t really control and hope the\nuser will parse till END_DOCUMENT.\n\nChange-Id: Ie1f5762983fed2b2ae97b896218ae12b493e7ad9\n"
    },
    {
      "commit": "8a80a8555238cc564f445f902aff5231993a8f96",
      "tree": "27ef0db5a801c005c0c48b94bcea8b22715a1c29",
      "parents": [
        "9a4fe29c8d92014d2d9a848e9116b8cc9d0842f9"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 09 19:39:52 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 09 19:39:52 2011 -0800"
      },
      "message": "LayoutLib: remove some exceptions.\n\nWe need to move away from throwing anything and instead\nlog errors/warnings.\n\nChange-Id: Ib1af71a90c06e8565fbd0c061ba56f4d19baa3df\n"
    },
    {
      "commit": "9a4fe29c8d92014d2d9a848e9116b8cc9d0842f9",
      "tree": "97d83ce52c0a5cffaa82be0bae9919f112acd7c9",
      "parents": [
        "e18457fbef2ef8b74fb6d7a023b5a6fe4a707bed"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 09 17:17:49 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 09 17:29:29 2011 -0800"
      },
      "message": "LayoutLib: Annotate the custom delegate methods.\n\nEvery method implementing a delegate needed by the\nlayoutlib_create bytecode modification must now be\nannotated with LayoutlibDelegate.\n\nThe methods in the original source code that are delegated\nare already automatically annotated. Now with the implementations\nbeing annotated we can do bi-directional tests and find not\nonly missing implementations but also dead obsolete code.\n\nThis will be useful when backporting to earlier versions of\nAndroid, or when native (non public) method disappear. In fact,\nthe new test detected one such method in Shader.\n\nChange-Id: I491708b68ac2736ca5669aa86cd5e930a00f9db3\n"
    },
    {
      "commit": "f3f608452c080f050e2b5088d421ffe22641531f",
      "tree": "98b5e66bea88a1b828960389f5de3d06f63e21aa",
      "parents": [
        "fb4ff3d60988c92388346220eb5516012ff2477b"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 09 16:19:43 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 09 16:19:43 2011 -0800"
      },
      "message": "LayoutLib: now depends on tools-common-prebuilt.\n\nChange-Id: I11196c2363da378027fb8ca001e7dce0f58f657f\n"
    },
    {
      "commit": "abc33e014d4490dc993d1453e2589f538dbd7bbe",
      "tree": "6461035cd92b2254805dd6e2a153f78f74273595",
      "parents": [
        "8635908da1a9f0b3e7ba9bd11ce7104b38f76756"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Feb 07 20:33:44 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Feb 07 20:33:44 2011 -0800"
      },
      "message": "LayoutLib: fix the background of title/action bars.\n\nThe bars are supposed to sit on top of the window so\nthat if they are transparent (which is the default case\nfor the action bar), the window background shows through.\n\nFix this using a layout to represent the window content\n(all but the system bar) in which the title/action bars\nand the layout content sits. This layout receives the\nwindowBackground drawable.\n\nChange-Id: I8072c5ff52f585fa32acb589d8526e1c13cbcd94\n"
    },
    {
      "commit": "4dd2299d5766bf14479578772a0946c5399a0158",
      "tree": "1f454e5dea9f0e613c95b9b8065a0d8cab742bb0",
      "parents": [
        "62a99c0b3bca70262ab205a5688ff69cbbbaee78"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Feb 07 13:05:40 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Feb 07 13:05:40 2011 -0800"
      },
      "message": "LayoutLib: Update to latest API fix.\n\nChange-Id: I5147010e4f16a5c2ea0b98709c42f7ecd9412ff6\n"
    },
    {
      "commit": "62a99c0b3bca70262ab205a5688ff69cbbbaee78",
      "tree": "d9884233cdfcd815560f23652bceca1fac42f54a",
      "parents": [
        "b0f1cfffd9b201335560c15ffbdcfe12225bac8c",
        "d96a7403cda1a873e640b6e6395ddab4c2f9b9f9"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Feb 07 10:18:48 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 07 10:18:48 2011 -0800"
      },
      "message": "Merge \"LayoutLib: Handle color state list in methods returning an int.\" into honeycomb"
    },
    {
      "commit": "d96a7403cda1a873e640b6e6395ddab4c2f9b9f9",
      "tree": "10fadb724cabbed4c9b36c02412d1cd85c4be4a3",
      "parents": [
        "b0d34f9c99cbd43e8238c5952b19d032f02dd168"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Sun Feb 06 21:05:21 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Sun Feb 06 21:05:21 2011 -0800"
      },
      "message": "LayoutLib: Handle color state list in methods returning an int.\n\nChange-Id: Ia35ea09b992a239873026c7ef1629a01dd2e6cec\n"
    },
    {
      "commit": "13bdc3355c781dc2614f2810a42d3a9e73f5bed9",
      "tree": "b40424e57a6011ff0b0febf0fa39a13f6bfb0269",
      "parents": [
        "fd18f573280bbbcc549b35b548580a562bd960e2"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Sun Feb 06 10:58:16 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Sun Feb 06 10:58:16 2011 -0800"
      },
      "message": "LayoutLib: improved rendering for system/title/action bars.\n\nChange-Id: I926531e9ad4a7b98e04e23cac3837794f7c89449\n"
    },
    {
      "commit": "fd18f573280bbbcc549b35b548580a562bd960e2",
      "tree": "6b953264c673b81b00ff17d11239ffcd8fa75dae",
      "parents": [
        "b0d34f9c99cbd43e8238c5952b19d032f02dd168"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Feb 04 19:02:17 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Feb 04 19:30:35 2011 -0800"
      },
      "message": "LayoutLib: add implementation of Bridge.renderDrawable()\n\nChange-Id: Ic4d96488fd1a2e5b7d24353bebc8fdb24262c1d1\n"
    },
    {
      "commit": "b0d34f9c99cbd43e8238c5952b19d032f02dd168",
      "tree": "fe8790e596c2326031e1c55c9d120ae12912211d",
      "parents": [
        "1126422ee1f532d8582a4e3b56dbfe505c15e775"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Feb 04 18:11:09 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Feb 04 18:11:09 2011 -0800"
      },
      "message": "LayoutLib: split RenderSession\u0027s base method into RenderAction.\n\nThis will allow us to create RenderDrawable that extends RenderAction.\n\nChange-Id: If9cd350453ceffae4859a925a7b436502b311f9c\n"
    },
    {
      "commit": "1126422ee1f532d8582a4e3b56dbfe505c15e775",
      "tree": "a957b31a38ded193be5787be0c23ab24f3070a82",
      "parents": [
        "b894f8959c6be2de5a0c89fedb9824012783dd14"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Feb 04 17:41:43 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Feb 04 17:41:43 2011 -0800"
      },
      "message": "LayoutLib: update to the new API.\n\nChange-Id: Ice028933cd2270c81c3d17f7bef7c5a9d14bd802\n"
    }
  ],
  "next": "779c906592b67867fee83a6527d474c333a701ff"
}
