)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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"
    },
    {
      "commit": "779c906592b67867fee83a6527d474c333a701ff",
      "tree": "67e2e74f018aec24b986a2bea45f3ebc6214fa66",
      "parents": [
        "b85787411085bbea0ac725135cae02a4167b7aa7"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Feb 04 16:40:49 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Feb 04 16:40:49 2011 -0800"
      },
      "message": "LayoutLib: Replace custom BitmapFactory by a simpler delegate\n\nChange-Id: Ie61a0a5b4426e64bb71a22d76d05efa4c0865e5e\n"
    },
    {
      "commit": "bbbb8326020368958a3f1d248878329e9d6b10c0",
      "tree": "74ec16b151a74dec647b657a68f83f1a178b4183",
      "parents": [
        "e8d2b98526e7666b175b4df58b646ed56a572bb0"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 27 16:58:52 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Feb 04 10:46:21 2011 -0800"
      },
      "message": "LayoutLib: render system/title/action bars.\n\nAlso a few generic fixes in the layoutlib itself to support\nthis.\n\nChange-Id: Ie3f24c9056bd3cc72f39f8a4f2c0861be15bff55\n"
    },
    {
      "commit": "33758ef8c98efb669c65eb9404b99ee5df09c6b5",
      "tree": "624741f3a013a08100e5b6c0b3e7b9c6e5fc838c",
      "parents": [
        "a4747d536e905c3c34ab0d3c1c9c7485d6fac689"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 02 18:37:59 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 02 18:37:59 2011 -0800"
      },
      "message": "LayoutLib: Fix some rendering issues\n\nChange-Id: I662a39a783de5bc7f3063f46cedaab11c7e6496e\n"
    },
    {
      "commit": "345f866bfd09476fd62aa10345a0670cc110b63c",
      "tree": "18010b88cd0efbbc1799378b1f78ddbb02e06583",
      "parents": [
        "1bf518d8b333768e26bacf340f88f7d4ba8b9a91"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 02 11:50:34 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Feb 02 14:04:50 2011 -0800"
      },
      "message": "Make TimePicker/DatePicker/CalendarView render in Eclipse.\n\nChange-Id: Id5313a6f0f53bf45f6eaabc0e10fcf0660eeac08\n"
    },
    {
      "commit": "811820f440b24db200e66874d42331023b7cd389",
      "tree": "474c8f6c1d1f5df3a593c8cebe4bfd8c4dbf9258",
      "parents": [
        "c1eb127f4e19c1f86e4b18c2c1daebe2404eeb93"
      ],
      "author": {
        "name": "Raphael",
        "email": "raphael@google.com",
        "time": "Thu Jan 27 16:48:27 2011 -0800"
      },
      "committer": {
        "name": "Raphael",
        "email": "raphael@google.com",
        "time": "Mon Jan 31 13:16:04 2011 -0800"
      },
      "message": "LayoutLib.Create: support Outer_Inner_Delegate renaming.\n\nWhen generating delegates, LayoutLib.Create support renaming\ninner classes. Only one level of inner class is supported.\n\nThe method Outer$Inner#get(...) generates a call to:\n  static Outer_Inner_Delegate#get(Outer instance, Outer$Inner instance, ...)\n\nChange-Id: Ie70f2b8e5e5f311ed9c7f26b7f64637ae6157a51\n"
    },
    {
      "commit": "b353495192ba1acce94b8ab8aeeffe3c9a3bcfac",
      "tree": "122047ba0a782b87812f9ba6a97cabd7b9749fbc",
      "parents": [
        "0982dc6488a921d9d54d23b9180a9acf33c61526"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 28 12:46:12 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 28 16:54:15 2011 -0800"
      },
      "message": "LayoutLib: update with Pair API.\n\nChange-Id: Iba945153f7544872ea84e3311584223aea740e2e\n"
    },
    {
      "commit": "35ea7cd4c0c89122fda0b57af20061645082ffb9",
      "tree": "2b63b680fe7cf913dfb0ea67f9f3cda5a80cd080",
      "parents": [
        "270cbcc16a72f982d84afeb5e3fd3f166936394a"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 28 11:44:21 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jan 28 11:44:21 2011 -0800"
      },
      "message": "LayoutLib: Update with the new resource map APIs.\n\nChange-Id: I30d83c2bb4569513f4f5e22670cffe938706f105\n"
    },
    {
      "commit": "16584225125acba18b74920b902c798dfead0328",
      "tree": "245cfd24438182060d147d827bbd3db76b688361",
      "parents": [
        "64a2c359aeda59e4bc43d48f31ade919e918ea26"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 27 15:30:39 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jan 27 15:41:38 2011 -0800"
      },
      "message": "LayoutLib: Properly compute available space to layouts.\n\nAlso display placeholders for status/title/action bars depending\non if the app is a tablet and its theme.\n\nChange-Id: I651c1a2e5cfde165e004c11b236e6df056853dec\n"
    },
    {
      "commit": "31fd1cf7697ef777b41c7a6a20e37ff5d573d732",
      "tree": "a845729a8f3a5ee7884e1c82c3a643738d98d7ab",
      "parents": [
        "5a82d8c58bf91c357c37a82b9f5e5c26f676d847"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 26 17:30:59 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 26 17:30:59 2011 -0800"
      },
      "message": "LayoutLib: put a default image on the quickcontactbadge.\n\nChange-Id: I64b3f4004801ec03f374460384f9a492e66bfaf0\n"
    },
    {
      "commit": "5a82d8c58bf91c357c37a82b9f5e5c26f676d847",
      "tree": "34486ebd0aabece45c26801fe11600cd9934dfcd",
      "parents": [
        "f6926a63dfdc114789a6acc06396ca826eb64418"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 26 16:33:07 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jan 26 16:34:53 2011 -0800"
      },
      "message": "LayoutLib: properly erase the bitmap when rendering a new session.\n\nThis fix the issue where going from a full theme to a dialog theme\nwould show the dialog on top of the previous rendering.\n\nChange-Id: Ib52b9719f44b04969423547b9de8d039f90b6f46\n"
    },
    {
      "commit": "7d7016e72431ad7ee595d857a19231c69efeb6de",
      "tree": "3acf19d320c2035ac1cc5bcf0efe126f03a72f3c",
      "parents": [
        "315fae2028d4ef73c9ba094a71152e6e853e2690"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jan 25 15:55:16 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jan 25 15:55:16 2011 -0800"
      },
      "message": "LayoutLib: return ViewInfo for all merged items + Build init.\n\nandroid.os.Build is now initialized from the build properties\nparsed from the SDK build.prop file.\n\nChange-Id: If16953215ca90fb0beacb51bf405b89a5c8a34fa\n"
    },
    {
      "commit": "82b9232565bfececdb643a94cecdd1bd1cb5c643",
      "tree": "966746b27fd9d02ec000db9fc7be2c75628224be",
      "parents": [
        "67005b05cc76a38a5b3bf6e83957dd03619e9126"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 24 14:03:21 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jan 24 14:14:53 2011 -0800"
      },
      "message": "LayoutLib: Use special view cookie for include-merge case.\n\nAll items directly under the \u003cmerge\u003e tag now return the view cookie\nof the referencing \u003cinclude\u003e tag using a special class for\neasy differentiation in the calling client.\n\nChange-Id: I7a2a4e642be9564f47e256fd1586012497d34792\n"
    },
    {
      "commit": "664644d9e012aa2a28ac96f305b1ce6499ec8806",
      "tree": "d8db43b09de516fefd82adf4fc4ec22417dda648",
      "parents": [
        "fac86056b285bf59c1c3e774f1cb9f6de0be59ba"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Sun Jan 23 17:53:23 2011 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Sun Jan 23 19:22:52 2011 -0800"
      },
      "message": "visibility (\"lights out\") API.\n\n1. Views may setSystemUiVisibility() to recommend that\nthe system chrome (status bar or other UI) show or hide\nitself.  (This functionality was previously available only\nvia the FLAG_FULLSCREEN window flag for some SystemUI\nimplementations.)\n\n2. Views may register a OnSystemUiVisibilityChangedListener\non a view, and find out when the system UI actually\nappears or disappears, allowing apps to coordinate the\nappearance of their own UI if desired.\n\nBug: 3241144\nChange-Id: Ia1758d94099182d49a1e3688ea2738ae4995b829\n"
    },
    {
      "commit": "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\""
    }
  ],
  "next": "b5ddf041d61f9346a4055b5bc5d51bd812b2ec28"
}
