)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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": "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": "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": "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"
    },
    {
      "commit": "2d56b273ef6e2984a4e8914fb67772b173d0a154",
      "tree": "a27ae6be789d770986d019795807dfa8df0455a5",
      "parents": [
        "b43d7589cf6201fc05f4c9d8b4a0c44d7cdba81e"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Nov 22 20:09:55 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Nov 23 11:54:25 2010 -0800"
      },
      "message": "Layoutlib: use default nine patch classes.\n\nMove away from using our own implementation of NinePatchDrawable.\nNow use native delegate for a few methods of NinePatch.\n\nThe byte[] used to describe the 9-patch chunk is entirely controlled\nby the delegate. Therefore, while the default version (JNI) use the\narray as a representation of a C struct, this version uses the array\nas a serialized version of NinePatchChunk.\n\nA cache mechanism using SoftReferences allows us to not deserialize\nthe array every time rendering needs to access the chunk itself.\n\nThe Bridge-level cache mechanism for bitmaps and nine-patches as\nchanged. Since the new nine-patches doesn\u0027t hold the bitmap\ndata anymore (it\u0027s stored in a normal Android bitmap which\nis cached itself through the cache), then the nine-patch cache\nhas been changed to only contain the nine patch chunk.\n\nAlso initialize the canvas with the display metrics to prepare\nfor correct scaling when density of the assets don\u0027t match the target\ndensity.\n\nStill to come: actual density support in the 9-patch drawing code.\n\nChange-Id: Ibefcccf4432e1986e8436e0c41a0107741593536\n"
    },
    {
      "commit": "9223b6737c56619c02125ce988bb21fc4fde264b",
      "tree": "6fe8d5691504dbe77d998e37e40350a81cb5d60d",
      "parents": [
        "7370ab5cdb03fdf58a022a047820280ee2761719"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Nov 19 15:48:17 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Nov 19 16:17:27 2010 -0800"
      },
      "message": "Layoutlib: support for editing embedded layouts.\n\nWhen Resources.getLayout(int) is called to return a parser\nfor an embedded layout, this queries the current parser for\na custom parser (Eclipse will provide one on top of the current\nXML model being edited)\n\nChange-Id: Ia9e837358f67daed0a835e1b3f4f50c0516ceee9\n"
    },
    {
      "commit": "fb25cae1916da1caf206ede879f07a4f8b61cfec",
      "tree": "b22e9c45f4d06931ca9cd2c85fc12df9e895f7b6",
      "parents": [
        "7ffd0871e6b8d7ab9443bef6e8b2a31674d1f623"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Nov 19 14:27:37 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Nov 19 14:27:37 2010 -0800"
      },
      "message": "LayoutLib: use the new expand API.\n\nChange-Id: I248de70ebe97aa6fb1cbcb5b6572a4a46c5ca1ba\n"
    },
    {
      "commit": "d73868859bf71bd98496157b94e21ef95fadd495",
      "tree": "b21fc296b932829b784b9cc12490317099f60f1d",
      "parents": [
        "7afe176a22d58dadac5785f8c4e8eaa292147825"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Nov 19 12:53:20 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Nov 19 12:53:20 2010 -0800"
      },
      "message": "LayoutLib: fix some tests\n\nChange-Id: Iacd641e2fac663ff12fe2a08ba093c4eaa2e8862\n"
    },
    {
      "commit": "55acd60be3c027c224a74290df7bedc1a80c669f",
      "tree": "cf721af3e912bc534926ba3225cfc611baaf2811",
      "parents": [
        "60899fac2bf35086b0083bfbffa2f6bf5c18f2d9"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Nov 18 22:12:34 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Nov 18 22:17:14 2010 -0800"
      },
      "message": "Layoutlib: support viewkey in include nodes.\n\nWhen an include tag is parsed, the custom bridge\ncode never has access to both parsers at the same\ntime.\nThe child parser is created out of an in (representing\nthe layout id), and the code inflating the content of\nthe include layout doesn\u0027t see the parent parser either.\n\nThis changeset adds a parser stack in the BridgeContext\nin order to allow access to the parent parser when setting\nthe viewkey. This is only used if the current parser depth\nis 1 (top node), as we only want to set the include\nnode to the top node of the included layout.\n\nChange-Id: I2ac3b72a0c84a269d9019f44f98cbc0b615ab959\n"
    },
    {
      "commit": "755b46d597b8e8a616d53e2a7dfea295dd78d713",
      "tree": "fa3f05456069a08badfc9d845f4e20b7617311ab",
      "parents": [
        "5a09488a158b669577cd8eb557ce4feb62929e75"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Nov 18 19:51:30 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Nov 18 19:51:30 2010 -0800"
      },
      "message": "Layoutlib: use int[] wrapper to use as map keys.\n\nThis fixes the SlidingDrawer that failed to load.\n\nFor some reason, in case of the SlidingDrawer, when the constructor\nuses android.R.styleable.SlidingDrawer it\u0027s the same values but not\nthe same instance as the array read from android.R through reflection.\n\nSo what works for all other widgets, and has worked since the very first\nlayoutlib isn\u0027t working anymore, and we\u0027ll now have to use a wrapper\nsimilarly to what we use in ADT in the project callback.\n\nWe should probably provide a single int[] wrapper class in layoutlib\nAPI for all to use.\n\nChange-Id: I4d7d038540f8a24541a588696f1059a020b589e5\n"
    },
    {
      "commit": "5a09488a158b669577cd8eb557ce4feb62929e75",
      "tree": "3a689ddcd6c066318991273f98f61c1db674daaf",
      "parents": [
        "3c68f2b386e5bab9b879e02ec7cdd8ff0c123235"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Nov 18 18:24:51 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Nov 18 18:26:55 2010 -0800"
      },
      "message": "Layoutlib: Properly dispose of bitmap delegate.\n\nThis is done by initializing the android.util.Finalizers that\u0027s\nreponsible for calling out to the native bitmap destructor.\nAlso implemented the native bitmap destructor\n\nAlso fix Bridge by removing obsolete API methods, and removing\nsome unneeded synchronized blocks now that the whole rendering\n(and scene creation) is protected by a synchronized on the bridge\nobject anyway.\n\nChange-Id: Ie1792da6db354836542dfc11f457fe4a6d78ddfb\n"
    },
    {
      "commit": "4d9e32f07c2d7aef47c82449371b0bf362e3647a",
      "tree": "2623dd2fbe8b7333b58f4f4d4d91f05e3e91adde",
      "parents": [
        "0b92c44f8ae0dc68520ce3b978640ce396cafe53"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Nov 17 18:25:43 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Nov 17 18:26:04 2010 -0800"
      },
      "message": "Layoutlib: support XML based ColorStateList.\n\nThis fixes the rendering of the TabHost in Eclipse.\n\nChange-Id: I333c4d65b18df76871e24a04f0a888ae42ba40ef\n"
    },
    {
      "commit": "9e27936e4ab227126e48c4d92a4352dad987e672",
      "tree": "c175506eac007984b25b85d8e20d76b9790bc4ce",
      "parents": [
        "cf52390eee4c9ae792ef63af1528b2e71b33a04f"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Nov 12 14:20:45 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Nov 12 14:20:45 2010 -0800"
      },
      "message": "Layoutlib: Fix alpha support in Canvas/Paint.\n\nChange-Id: I359098cfc542a7a0b7d99478c0eb13587b4439d0\n"
    },
    {
      "commit": "cf52390eee4c9ae792ef63af1528b2e71b33a04f",
      "tree": "1c384883b14b8c4f93b1bea574471e83b2a33493",
      "parents": [
        "6e079a32bceb85a44da3b396f8d37e718d1421d5"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Nov 11 18:22:45 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Nov 12 14:02:49 2010 -0800"
      },
      "message": "Layoutlib: Fill the default prop value map for View objects.\n\nChange-Id: I35426ced17a10eb092fac2153276f1202692876f\n"
    },
    {
      "commit": "135f80dcb4a1fead062714a8f6fdcef288fdddd8",
      "tree": "d9990d9b59a75453af3078900b0254f65483b707",
      "parents": [
        "a4e28d181942018ba8759989799a28fa88764ce3"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Thu Nov 11 21:59:23 2010 -0800"
      },
      "committer": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Thu Nov 11 21:59:23 2010 -0800"
      },
      "message": "Fix fill color alpha in layoutlib\n\nnew Color(int) ignores the upper 8 bits - it creates a color without\nan alpha channel.  In order to pass in rgba we have to use a different\nconstructor, new Color(int,true).\n\n(In the layout library API we should also specify that the custom\ncolor, if specified, needs to include an alpha, or in particular add\nin 0xFF\u003c\u003c24 if the color is opaque.)\n\nChange-Id: I1c44caed8a5780e61b1c799f3b45bef3eb7bc97b\n"
    },
    {
      "commit": "071dee288ca726c7c15754c2559403b9cbf950bd",
      "tree": "656092a75556ed7910e25a41e10e9f7d4843d083",
      "parents": [
        "f917f9accf924447b3afb27d09382851003c190f"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Nov 11 14:19:29 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Nov 11 17:39:50 2010 -0800"
      },
      "message": "Misc fix in layoutlib bridge + View.isIneditMode as delegate.\n\nChange-Id: Ideab29167e933203da99d4270cebcb777726201f\n"
    },
    {
      "commit": "c2e9651bf386a1f7bf7fc706cf5424950570470c",
      "tree": "83d204bdbe75d466a6ce82587efed8d2a03f0641",
      "parents": [
        "762b33f9494ba48aa1be3701d345b692e8432af9"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Nov 09 18:25:03 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Nov 11 10:08:19 2010 -0800"
      },
      "message": "Layoutlib: New bridge implementation using the new API 5.\n\nSince the new API prepare for stateful layoutlib, major\nreorganization of the code.\n\nNew \"android\" sub-package for all extended android classes.\n  Also moved BridgeInflater in here so that all extended classes\n  are in this package. Only delegates and classes replacing\n  renamed classes are in their original android.* packages.\n  Also created full file for the empty implementations of\n  IWindow and IWindowSession.\nNew \"impl\" for the dirty work implementation.\nMain package contains the basic implementation of the API.\n\nMost of the code that was in Bridge is now in .impl.LayoutSceneImpl,\nwith the main init/inflate/render code split into the contrustrutor,\ninflate() and render().\n\nChange-Id: Ie15b15e5a1b2388cd6ef82e518345b1fc02ec981\n"
    },
    {
      "commit": "7f7752439543db6e13c599bdd10cb10254c24528",
      "tree": "8161d572cce9194745972fc3fde670a6c6412614",
      "parents": [
        "c9f32f23327cbeeb50f0d494d01c8d6784720bc6"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Nov 04 17:15:54 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Nov 08 18:38:12 2010 -0800"
      },
      "message": "Layoutlib: Load fragments\n\nThis change does the following:\n- Make the bridge context extend Activity instead of Context\nso that it can act as a view factory. This is needed because\nthe Activity is used as factory for Fragment objects.\n\n- Override the default Fragment.instantiate(...) method\nthrough a delegate. This is done to load the Fragment\nclasses located in the project (similar to custom views).\n\nChange-Id: If62e7c9ff2b7585677077ad825aa1c3591d1b5e0\n"
    },
    {
      "commit": "e0c763f54f5848a2513990fe37791b6f60ef7760",
      "tree": "61f4f1bd15ccb820d844c15496bb383f42c379af",
      "parents": [
        "3fe599ce21a3a28a03a2d575fdeedb7b2ac8590a"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Nov 04 18:04:27 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Nov 08 16:13:28 2010 -0800"
      },
      "message": "Layoutlib: more text drawing.\n\nChange-Id: I32f46d23e746b095be0577a53b61567a868f0b8a\n"
    },
    {
      "commit": "9c05b3972872d83c60bf5afe1a05f08c7753cd9a",
      "tree": "fb46e02e4e3a4d04b798f59bb3511ae404b56a63",
      "parents": [
        "4b606da91d2d76dd90a427cb3e37ea7df655e8e0"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Nov 03 18:00:21 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Nov 03 19:15:07 2010 -0700"
      },
      "message": "Layoutlib native delegate: FloatMath.\n\nWhile the difference is pretty minor since it\u0027s a small class,\nthe point is that the unit test will ensure that we detect\nnew methods added to FloatMath more easily.\n\nChange-Id: Ia8bfee231cc4ae0cfeb18692be86d02649c187d5\n"
    },
    {
      "commit": "4b606da91d2d76dd90a427cb3e37ea7df655e8e0",
      "tree": "e12029f7b29397ff9a01755f3bd46f5a5758efb2",
      "parents": [
        "079fd674fb9005771dd383a1a483d7dc5072b5b3"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Nov 03 17:40:17 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Nov 03 19:15:07 2010 -0700"
      },
      "message": "Layoutlib native delegate: path effects and xfermode.\n\nChange-Id: Iafaac6dbaf452e2dba3e77c801089dad33ac4ea9\n"
    },
    {
      "commit": "251d2e99245095369b52d891a660b2ed270f02e0",
      "tree": "e8adcad8c591c9e9637a478e385f6e04071d561d",
      "parents": [
        "abff653ce84e5079f35afab008c906063b0b2b6c"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Nov 01 22:02:08 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Nov 03 13:23:22 2010 -0700"
      },
      "message": "Layoutlib native delegate: primitive shapes and shaders\n\nChange-Id: Id2b0c6231589e82d8e96c9f019042eba348a6583\n"
    },
    {
      "commit": "abff653ce84e5079f35afab008c906063b0b2b6c",
      "tree": "80bcc1121378c031cd99ea097bb422ebd3666394",
      "parents": [
        "5802deabf06a0754c36e990ce2af7b5c8727e543"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Nov 01 18:45:20 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Nov 01 18:45:20 2010 -0700"
      },
      "message": "More layout Canvas/Paint implementation.\n\nChange-Id: Ib3da4a4b2259dc7c53b24444b5c0b78cee15d387\n"
    },
    {
      "commit": "5802deabf06a0754c36e990ce2af7b5c8727e543",
      "tree": "1d824bd2fda259b9eaed46aab4742bc9e82359ba",
      "parents": [
        "1d8479fa95d61d5e49a8b054f5a8aad62432af1e"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Nov 01 16:17:18 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Nov 01 17:52:42 2010 -0700"
      },
      "message": "More implementation of the layoutlib Paint/Canvas delegates.\n\nChange-Id: I0c0029b9a679af4ae0178488f70b2a90292ea42d\n"
    },
    {
      "commit": "9f63ff263b0a97f0fa63e97136c18f6abccbfc68",
      "tree": "51941d0fad58ffb49097b1da5c7b7551da16a570",
      "parents": [
        "5c95212f6a8f5786b8199cdc4bb3725d15ada993"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Oct 28 11:52:00 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Nov 01 13:31:47 2010 -0700"
      },
      "message": "Layoutlib Canvas and Paint implementation through native delegates\n\nAlso fix native delegate generation to put \"this\" parameter even\nfor methods that don\u0027t have any parameters.\n\nChange-Id: I5dd0c505871370ff7b4cda16de84a5b3ae438f73\n"
    },
    {
      "commit": "5de11a18e9151e6bc9b3e81cf31fc43dc63dffbf",
      "tree": "3d956f7bfa6cc38ed3dd4a4a2e48c62c30fe7afe",
      "parents": [
        "5164246d7e47b9c995ca1e1587f3056eb777f60b"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Oct 29 16:01:40 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Oct 29 16:01:40 2010 -0700"
      },
      "message": "Implement the layoutlib Bitmap through a native delegate.\n\nThis does not implement all the native methods of the\nandroid.graphics.Bitmap class, only what\u0027s needed to draw an\nImageView object. The rest will be implemented after Canvas and\nPaint have been moved to the native delegate.\n\nChange-Id: Ia0c3b2cafa03871c298deaef5817a25ac1c35521\n"
    },
    {
      "commit": "65dc3974a116fecefd2273fac1fd5127c02b2cd9",
      "tree": "4f7c32f5f985d69772ce7b7df39a3cf7e6fbf5ed",
      "parents": [
        "5e7ed8da0d990cbc55071d16b5db270231ff0c89"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Oct 27 18:22:03 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Oct 27 18:22:03 2010 -0700"
      },
      "message": "Fix the layoutlib_bridge .classpath to not use the full layoutlib\n\nInstead this uses the actual output of layoutlib_create, which is\nall the modified classes before the content of the bridge is added\nto form layoutlib.\n\nChange-Id: I22755f38800cd69206834ff9594a99cb0c1d2139\n"
    },
    {
      "commit": "5e7ed8da0d990cbc55071d16b5db270231ff0c89",
      "tree": "41f445a825f93cd55c7587ebe327b96da299858f",
      "parents": [
        "162b689c5257d7e6a937cf734c0edde470c77969"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Oct 27 16:45:38 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Oct 27 18:12:27 2010 -0700"
      },
      "message": "Move layoutlib typeface implementation to delegate.\n\nAlso move BridgeContentProvider to its own class to make it\nless messy in BridgeContentResolver.\n\nChange-Id: Id3462218b500d43d4c9b20b25326ad24e4106fa5\n"
    },
    {
      "commit": "4c9d691a01ab6741e4b54b69edca7b528603d9fa",
      "tree": "3219daea7a9c34e56cfca83bd2fae9027cbb405e",
      "parents": [
        "0af3cfc6f3d364c3dd0a8952382ff4b843013d5f",
        "57f7ccc4223ad7f51aa41b593ed26770f3cca22b"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Oct 27 11:59:05 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 27 11:59:05 2010 -0700"
      },
      "message": "am 57f7ccc4: am 63e5d07e: Merge \"Fix issue with project resources overriding framework resources.\" into gingerbread\n"
    },
    {
      "commit": "57f7ccc4223ad7f51aa41b593ed26770f3cca22b",
      "tree": "861f6de829874fdcbc524976dd808b72af4fa84b",
      "parents": [
        "751cc4245ff65a979317827109818e1e127a53dd",
        "63e5d07ec9941d64c85210a38d569a719e844940"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Oct 27 11:23:58 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 27 11:23:58 2010 -0700"
      },
      "message": "am 63e5d07e: Merge \"Fix issue with project resources overriding framework resources.\" into gingerbread\n"
    },
    {
      "commit": "4f291d33e14e62b3301acc056a82fe206c74835f",
      "tree": "cc6d5b0297f4c755c2e2cee64189633007096636",
      "parents": [
        "5da5438e4101ab3c499797f90cc3d9403e075a5a"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Oct 22 14:48:17 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Oct 27 09:55:58 2010 -0700"
      },
      "message": "Reimplement the native matrix method using the new delegate way.\n\nInstead of renaming the old Matrix class into _Original_Matrix\nand have layoutlib provide a full new implementation of Matrix,\nwe keep the old one by only modifying it to implement the native\nmethods which calls out to a new Matrix_Delegate class.\n\nThe goal is to not have to maintain the java portion in\nsync between the framework and the layoutlib version.\n\nChange-Id: I3e1aefffbae45e91b75331c0c6ff2260323deacd\n"
    },
    {
      "commit": "c2e28dd74813799aad132673ff9d302657dd04ed",
      "tree": "af700b4c91f9135026816458018547e7303dfc32",
      "parents": [
        "2f19f56ac5bcf02ed503bdaf95b724cba8ff782d"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Oct 26 16:58:34 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Oct 26 17:14:55 2010 -0700"
      },
      "message": "Fix issue with project resources overriding framework resources.\n\nFramework resources loaded through Drawable.createFromXml could\nbe overriden by project resources if there were loaded through\na  state list drawable where the final resource name was used\nby a project resource (of the same type).\n\nThis ensures that the XML parser knows that it\u0027s a framework\nresource being parsed and that the resource resolution uses\nthat information.\n\nChange-Id: I39cf9eba755e55f1604b968637aeecff969a558d\n"
    },
    {
      "commit": "d815e3704850a513e8d02ba3b88fa47f41cea9a5",
      "tree": "8c9329a964c587977bc9b69db24b27847c0ea0de",
      "parents": [
        "f241c40476b6ff2acf57617d4f90cc8c229f1207"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Oct 26 14:01:41 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Oct 26 14:29:23 2010 -0700"
      },
      "message": "Fix rendering of digitalClock/Gallery in Eclipse editors.\n\nChange-Id: Iedcd3184cd9f34be8d0695a51eda953ac68683ce\n"
    },
    {
      "commit": "f241c40476b6ff2acf57617d4f90cc8c229f1207",
      "tree": "01bfa1ca7a7630aea907d7a63f4d653a773aef89",
      "parents": [
        "9440083be22ec13e252aa347e654911d33e50086"
      ],
      "author": {
        "name": "Raphael",
        "email": "raphael@google.com",
        "time": "Tue Oct 26 13:55:10 2010 -0700"
      },
      "committer": {
        "name": "Raphael",
        "email": "raphael@google.com",
        "time": "Tue Oct 26 13:55:10 2010 -0700"
      },
      "message": "Revert \"Fix rendering of digitalClock/Gallery in Eclipse editors.\"\n\nThis reverts commit 25e96ce7b99f9736a6024d25bd65a83774c7640f.\n"
    },
    {
      "commit": "68404a0125999ebe0d58c3eb1845b3c9aaf4d51e",
      "tree": "78fa4511887e235982fd70dfa9d089235e4fa937",
      "parents": [
        "ee1dc6221fc9193fb135386244e61e557a07260d",
        "a44a5e02d21505a9c891a31a34c83761600024c0"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Oct 26 12:13:32 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 26 12:13:32 2010 -0700"
      },
      "message": "am a44a5e02: am 1b6180ec: Merge \"Fix rendering of digitalClock/Gallery in Eclipse editors.\" into gingerbread\n"
    },
    {
      "commit": "a44a5e02d21505a9c891a31a34c83761600024c0",
      "tree": "0cd858aa1b1ca5560f5c9ead9febc2c2fce88aa2",
      "parents": [
        "cc8de576cd3aaf6c0b7d1515ffb74cb89e4764e3",
        "1b6180ec317201e51cb4a773c59a825342fd2235"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Oct 26 12:10:28 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 26 12:10:28 2010 -0700"
      },
      "message": "am 1b6180ec: Merge \"Fix rendering of digitalClock/Gallery in Eclipse editors.\" into gingerbread\n"
    },
    {
      "commit": "25e96ce7b99f9736a6024d25bd65a83774c7640f",
      "tree": "2060eeb90d6cd266f526daa2f16bcfe33111a2a6",
      "parents": [
        "106165b5102be226eb8049d2f7f62d7e26034e8a"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Oct 26 11:18:39 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Oct 26 11:18:39 2010 -0700"
      },
      "message": "Fix rendering of digitalClock/Gallery in Eclipse editors.\n\nChange-Id: I80f4f90b173529632eaf2fbc3bb5471b7ede8216\n"
    },
    {
      "commit": "a6ca66af0c0e17804e914eece758d9734d936044",
      "tree": "8dd6413845d470c80db15047d182ca4377bdb8b3",
      "parents": [
        "c08e175f14434f132dfe19a75701170cc57679bc",
        "e2e8ba904b306f11dfc5b71e00ab9ac013358cd7"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@google.com",
        "time": "Fri Oct 22 15:42:40 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 22 15:42:40 2010 -0700"
      },
      "message": "Merge \"Layoutlib_Create: Fix order of class adapters.\""
    }
  ],
  "next": "c08e175f14434f132dfe19a75701170cc57679bc"
}
