)]}'
{
  "log": [
    {
      "commit": "a64f88700bef3b4063164fe91ab4f8470ed29df1",
      "tree": "30d5420d6634b822e0a17aedc7f3c164724415c0",
      "parents": [
        "7554783c7d3aa4c7c07ba4fdccbd1dc7ccd5d79a",
        "41d61924012721a5cb2f390c4532433a8ea53602"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 20 20:09:51 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 20 20:09:51 2018 +0000"
      },
      "message": "Merge \"Need to add report id and sequence number to uniquely mark a incident report data.\""
    },
    {
      "commit": "41d61924012721a5cb2f390c4532433a8ea53602",
      "tree": "b6e8c0bd954adeb09b84ce55595cd72eb7fc4952",
      "parents": [
        "f759af6f3bced14b13fe0891eec4cd6c423c5a67"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Feb 20 10:32:27 2018 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Feb 20 10:32:27 2018 -0800"
      },
      "message": "Need to add report id and sequence number to uniquely mark a incident\nreport data.\n\nBug: b/65451198\nTest: N/A\nChange-Id: I12f2c80c57e00e92888a295d432f2ec7e0d95ffd\n"
    },
    {
      "commit": "8b3a832cdd66e86db609aaf49f9a24a4112a21c1",
      "tree": "93c011d6888508a4f484deaba590d9793dd636b3",
      "parents": [
        "638af4733c9766b5ae3b57ffbde198a1eb546f18",
        "52230bc215c13f33cb63ff8c1bcb26e609e9ccb7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 20 18:09:04 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 20 18:09:04 2018 +0000"
      },
      "message": "Merge \"Remove Skia RenderPipeline saveLayer logic for software layers.\""
    },
    {
      "commit": "52230bc215c13f33cb63ff8c1bcb26e609e9ccb7",
      "tree": "7ba54fb1de7ff9aebd9b5466e74a5aa9cad5b54e",
      "parents": [
        "70759df969019e52c983c009b7f278db38978969"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Fri Feb 16 12:24:13 2018 -0500"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Tue Feb 20 10:59:44 2018 -0500"
      },
      "message": "Remove Skia RenderPipeline saveLayer logic for software layers.\n\nTest: CtsUiRenderingTestCases:LayerTests\nBug: 72052698\nChange-Id: Ief845c409755e6bc61849a6ab3506ef60161f231\n"
    },
    {
      "commit": "329130b7e40d27f660aa275ef6905bd7ee91f64c",
      "tree": "8d16329f3554839009f698533591cfbde22e1507",
      "parents": [
        "85a6db68f1860bbaacc1cc21e29c4f61aabe0abb"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Fri Feb 09 16:47:47 2018 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Wed Feb 14 16:12:57 2018 -0800"
      },
      "message": "Put metadata or stats into each dropbox incident report.\n\nBug: 65451198\nTest: atest incidentd_test\nChange-Id: Ib406b177ad7f1b4bda7fef2e606fc66a9836e060\n"
    },
    {
      "commit": "b1c36318f7472b9b494229508b2a2c96e55471bc",
      "tree": "c06776dea9293e8cbfd1c7b7961dabc5157def33",
      "parents": [
        "3baeb5641b7af582e08246d96dc02f6cd43754e7",
        "d935157f48525d5fe7cc107c2d7aed99564b60bd"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 12 20:38:17 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 12 20:38:17 2018 +0000"
      },
      "message": "Merge \"Fix AnimatedImageDrawable drawn in software\""
    },
    {
      "commit": "d6d5e0cc77eb29bf664cbc93665d4463c5e72dc6",
      "tree": "571313a1daa71362f51606f0e16c6029aecff9c6",
      "parents": [
        "8a1bacaf91039d7f174fcd1760016ad1134c9821",
        "bde1df21adf264d3398b9f3274f353faa6399008"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Feb 10 03:42:41 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 10 03:42:41 2018 +0000"
      },
      "message": "Merge changes from topic \"revert-assetmanager2-02-09-2018\"\n\n* changes:\n  Revert \"Replace AssetManager with AssetManager2 implementation\"\n  Revert \"libandroidfw: Make sure to set the \u0027app as lib\u0027 flag\"\n  Revert \"Make idiomatic use of ApkAssets and AssetManager\"\n  Revert \"libandroidfw: Add ApplyStyle and SetConfiguration benchmark\"\n  Revert \"libandroidfw: Improve performance of AssetManager2\"\n  Revert \"AssetManager2: Allow out of order type/type spec\"\n  Revert \"AssetManager2: Fix list function\"\n  Revert \"AssetManager2: Fix issue with native cast\"\n"
    },
    {
      "commit": "a27ae0fdd1aaecb797dcf33167dcd253371b3c9a",
      "tree": "36413cfb4fb788611ee5052a958cafc85ae4ba4f",
      "parents": [
        "29d6c4367c3cb6fca47f6ad87ef36f906fcd9560",
        "7f9e63b63269baa41a36fc31acd6fc071309c26c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Feb 10 02:20:30 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 10 02:20:30 2018 +0000"
      },
      "message": "Merge \"Add clear method to ProtoOutputStream so it is reusable by just rewinding its internal pointer.\""
    },
    {
      "commit": "7f9e63b63269baa41a36fc31acd6fc071309c26c",
      "tree": "783f5e5b55341f7dad48db2fba706295f9b25ca8",
      "parents": [
        "421822ce0f3bb581d36cdc5273d4c345c634f9c0"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Fri Feb 02 16:25:11 2018 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Fri Feb 09 14:20:48 2018 -0800"
      },
      "message": "Add clear method to ProtoOutputStream so it is reusable by just\nrewinding its internal pointer.\n\nBug: 72319159\nTest: atest incidentd_test and atest statsd_test\nChange-Id: Id046b987a7460d68300e5d4d46ae56aec1eba2d0\n"
    },
    {
      "commit": "d935157f48525d5fe7cc107c2d7aed99564b60bd",
      "tree": "a6f45b3bb20ee9eb38ffe3cbdd6ab0bbe36ee08d",
      "parents": [
        "a5ffafbfda3b5f6dd7f883045b6b0da0556b934c"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Tue Feb 06 16:21:50 2018 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri Feb 09 16:31:25 2018 -0500"
      },
      "message": "Fix AnimatedImageDrawable drawn in software\n\nTest: Manual, existing CTS, I4e884636801c0a2e920ca9d99f3c38fb034b3774\n\n- Fix a bug where the animation never advanced.\n- Rename mFinished to mStarting. It was already being used to indicate\nthat we were restarting anyway. Now only set it to true in calls to\nstart().\n- Prevent skipping ahead the same way we do in hardware.\n- Return kFinished when reaching the last frame of the animation.\n\nThis also includes a fix for hardware drawing. The first time start() is\ncalled, there is no need to create a snapshot of the first frame. Just\ndraw the first frame directly and kick off a decode of the second frame.\n\nChange-Id: I0a6fb909a361dd4c233cfa2d79bc2210d2dcddc8\n"
    },
    {
      "commit": "bde1df21adf264d3398b9f3274f353faa6399008",
      "tree": "51909e52f6741528e2b6f69923affc43410e40f2",
      "parents": [
        "2a447172a5b8c4fdb8527602144691802c492c2e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 09 11:12:22 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 09 12:43:24 2018 -0800"
      },
      "message": "Revert \"Replace AssetManager with AssetManager2 implementation\"\n\nThis reverts commit 1187590da38457809dd368d4901c9c47ac5a6958.\n\nBug: 73134570\nChange-Id: I59b4d714e447478ea124f086356f127f42251fb7\n"
    },
    {
      "commit": "2a447172a5b8c4fdb8527602144691802c492c2e",
      "tree": "abbd3839e76a0c55628c3c905a9b30f90133e56d",
      "parents": [
        "56c82be0d4075a434217a0d56be8e6544fb05a96"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 09 11:02:13 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 09 12:43:17 2018 -0800"
      },
      "message": "Revert \"libandroidfw: Make sure to set the \u0027app as lib\u0027 flag\"\n\nThis reverts commit 9ad287c828a116f844e5c03346c618d83727e4ae.\n\nBug: 73134570\nChange-Id: If930d3a7c17fc2f7ffaebd31281ad5a5d120144f\n"
    },
    {
      "commit": "c9a9c1c1c3e22d939150622e3a6c8b9b7ec58b04",
      "tree": "fbc32d06f0de09983e807d11e50a22852986a5f8",
      "parents": [
        "b8b3a2619435eb226ce13b1792a6ccb1302b3cb2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 09 11:01:55 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 09 12:43:13 2018 -0800"
      },
      "message": "Revert \"libandroidfw: Add ApplyStyle and SetConfiguration benchmark\"\n\nThis reverts commit 59f63bd801f10336c9f0499b7a0bc0bccb0fad2e.\n\nBug: 73134570\nChange-Id: I6ace34b0d6545ff001664792b0bb1bbff5b5cbbe\n"
    },
    {
      "commit": "b8b3a2619435eb226ce13b1792a6ccb1302b3cb2",
      "tree": "4ea5d9e8b9077a7b5db193709106525c8d7764f7",
      "parents": [
        "dfeb7ceb2afc1f630e7d2afdd9f37ef70386e146"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 09 11:01:45 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 09 12:43:10 2018 -0800"
      },
      "message": "Revert \"libandroidfw: Improve performance of AssetManager2\"\n\nThis reverts commit 88c9959e5b417320bbc2484fab42ab4b12379533.\n\nBug: 73134570\nChange-Id: I012643d2b4212cef5aef68feb4146add34f9ecfc\n"
    },
    {
      "commit": "dfeb7ceb2afc1f630e7d2afdd9f37ef70386e146",
      "tree": "6c5939b7974f1a55cd874fda4b76a2610a669290",
      "parents": [
        "ec7f06cc372a7298c85bf96cb4133d7dc8807419"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 09 11:01:36 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 09 12:43:07 2018 -0800"
      },
      "message": "Revert \"AssetManager2: Allow out of order type/type spec\"\n\nThis reverts commit 78695c354342bd95ba5f63937b4e789139b50072.\n\nBug: 73134570\nChange-Id: I6acc35372d9071d067d2fb7caa775ee9ba689811\n"
    },
    {
      "commit": "ec7f06cc372a7298c85bf96cb4133d7dc8807419",
      "tree": "d891b4dd7c17b0ade4017d76ec5285ed1ba00265",
      "parents": [
        "3160c8b0f792d2153f020fe810290ddf8d61b15c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 09 11:01:26 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 09 12:43:04 2018 -0800"
      },
      "message": "Revert \"AssetManager2: Fix list function\"\n\nThis reverts commit adc0b87ec235a71d722fb8d6aad50ceaeac8c6d5.\n\nBug:73134570\nChange-Id: I9e652245e7661eb7a34dadb5f363a08bc8c9e57e\n"
    },
    {
      "commit": "6b6e66d521cc5b77c8892977a8d852e5bdefe0f9",
      "tree": "ee64d44e081a50fd62b63e904ac89abb8b2bab96",
      "parents": [
        "4f07fa4e748c4f259a7ae9c06f89e44a9c69acff"
      ],
      "author": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Thu Feb 08 16:28:53 2018 -0500"
      },
      "committer": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Fri Feb 09 12:06:01 2018 -0500"
      },
      "message": "use writepixels on surface, the canvas version is deprecated\n\nTest: make\n\nChange-Id: I6af16bf4a8c9952d2e493cbd34b6db58d581a694\n"
    },
    {
      "commit": "7b575e528d1a012bf1efba442db9e25ed455651d",
      "tree": "bf1729c329894eef3661a4db552bd0c4cb8e5df7",
      "parents": [
        "3c61f917aa271ce219ae29f127a51ea2cbc2cac7",
        "937c6940809cfc931e5ca8d1400ac5fda9340e20"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 09 15:55:34 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 09 15:55:34 2018 +0000"
      },
      "message": "Merge \"SkColorTypeShiftPerPixel is deprecated\""
    },
    {
      "commit": "a9bf9d166a4a69f4fad0794a3e9d5e60f78ad927",
      "tree": "16fa44d86150d679d338872bd157d504136af972",
      "parents": [
        "9936ce824536355b266a1f69babc2d9256da885f",
        "adc0b87ec235a71d722fb8d6aad50ceaeac8c6d5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 09 08:18:16 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 09 08:18:16 2018 +0000"
      },
      "message": "Merge \"AssetManager2: Fix list function\""
    },
    {
      "commit": "adc0b87ec235a71d722fb8d6aad50ceaeac8c6d5",
      "tree": "00b9574251a5a6b6ce184f39d1b2f04a129a057b",
      "parents": [
        "1b6f515550969020f0622afb7f82b24d7150c3c1"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 08 22:35:21 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 08 22:37:48 2018 -0800"
      },
      "message": "AssetManager2: Fix list function\n\nList was skipping directories. Include them, and add tests to ensure\nthe order and precedence is correct.\n\nBug: 72511641\nTest: make libandroidfw_tests\nTest: atest CtsContentTestCases:AssetManagerTest\nChange-Id: Iadf45883283d3e4aae93bd7c3343745912e34fa0\n"
    },
    {
      "commit": "e5ffb6aabef40161ec1eb831ff2541ebb39d9c6a",
      "tree": "1f00a0132867a6f5615a385982d6a6003d9595d2",
      "parents": [
        "f0be983006f8cf8ac25a31d68511ddb630dd020a",
        "71195ab5c8304c7577e5662dd97ea9c2d070a97d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 09 04:55:27 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 09 04:55:27 2018 +0000"
      },
      "message": "Merge \"Fix the Skia roll - implement onWritePixels\""
    },
    {
      "commit": "05bbd43b937406a60992f1f1e52b44b1a1ac1fe8",
      "tree": "728aeb1a98d7444c5eae97a7c8913a0751538094",
      "parents": [
        "97cd562c9536de092343b08184d879a4474a10e6",
        "78695c354342bd95ba5f63937b4e789139b50072"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 09 04:18:59 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 09 04:18:59 2018 +0000"
      },
      "message": "Merge \"AssetManager2: Allow out of order type/type spec\""
    },
    {
      "commit": "71195ab5c8304c7577e5662dd97ea9c2d070a97d",
      "tree": "40fa45aa44e3f65238765392ded5e28a507f7d4e",
      "parents": [
        "a5ffafbfda3b5f6dd7f883045b6b0da0556b934c"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Feb 08 17:14:28 2018 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Feb 08 22:09:59 2018 -0500"
      },
      "message": "Fix the Skia roll - implement onWritePixels\n\nTest: None\n\nhttps://skia-review.googlesource.com/c/skia/+/105623 added a new\nabstract method to SkSurface_Base, so these subclasses needs to\nimplement it. Implementation is empty just to get the roll fixed.\n\nChange-Id: Ib6029acf40feb47a572cd6e18678b08a6f38fe4b\n"
    },
    {
      "commit": "78695c354342bd95ba5f63937b4e789139b50072",
      "tree": "3449df64a8cd96dd2760f13401174d401809ac9c",
      "parents": [
        "ac5438c501bca164ab2a39f32c2c660d2d4d7c90"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 08 14:50:38 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 08 15:16:32 2018 -0800"
      },
      "message": "AssetManager2: Allow out of order type/type spec\n\nAssetManager2 assumes that RES_TABLE_TYPE_SPEC_TYPEs must immediately\nprecede their associated RES_TABLE_TYPE_TYPEs. This is not correct.\nRES_TABLE_TYPE_SPEC_TYPEs must precede their associated\nRES_TABLE_TYPE_TYPEs, but they do not need to immediately precede them.\n\nFor example, this is what we currently expect:\n\n  RES_TABLE_TYPE_SPEC_TYPE id\u003d1\n  RES_TABLE_TYPE_TYPE id\u003d1\n  RES_TABLE_TYPE_SPEC_TYPE id\u003d2\n  RES_TABLE_TYPE_TYPE id\u003d2\n\nbut this is also valid:\n\n  RES_TABLE_TYPE_SPEC_TYPE id\u003d1\n  RES_TABLE_TYPE_SPEC_TYPE id\u003d2\n  RES_TABLE_TYPE_TYPE id\u003d1\n  RES_TABLE_TYPE_TYPE id\u003d2\n\nBug: 73052092\nTest: make libandroidfw_tests\nChange-Id: I1f3c43760f8108eee24c2c6ed7bc16f70e951c2b\n"
    },
    {
      "commit": "7717e22c85fd2eaba39f1dc38c65fb7f723882f4",
      "tree": "36a98afb1180490da3e2db3e0e54344ed4a39b86",
      "parents": [
        "fcd3c57e194ba0fafa2de673f2d4fae6a05ef91e"
      ],
      "author": {
        "name": "Stan Iliev",
        "email": "stani@google.com",
        "time": "Mon Feb 05 18:04:11 2018 -0500"
      },
      "committer": {
        "name": "Stan Iliev",
        "email": "stani@google.com",
        "time": "Thu Feb 08 23:04:47 2018 +0000"
      },
      "message": "Draw text with a hairline stroke as if it is fill style\n\nDew to a side effect of HWUI opengl pipeline, the hairline stroke\nis not respected, but it is drawn as a fill style. Implement the\nsame behaviour for skiagl pipeline with SDK API 27 and older.\nOn SDK released with Android P, the hairline stroke is respected.\n\nBug: 72494357\nTest: Ran duolingo app\nChange-Id: I48bdcf3ddec4bf65b5e93e01c5002177c4e3da90\n"
    },
    {
      "commit": "5b5e00aca196b6492d75feed22a66d4cb9c75714",
      "tree": "ca2b800d8366ca1a7f5b24c0424c47a4940eeee0",
      "parents": [
        "959b80f1917a4cb310b8089ac6cc10d702f04c8a",
        "65e678fdb1375fe183e628ff158f66b2f04331d0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 08 20:43:20 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 08 20:43:20 2018 +0000"
      },
      "message": "Merge \"Cache VectorDrawable bounds at record time\""
    },
    {
      "commit": "65e678fdb1375fe183e628ff158f66b2f04331d0",
      "tree": "eb90b484d1781974f7e5200e0d4eba87ce367b19",
      "parents": [
        "bc48bd8f6137955b99f51562ab4959783f827e22"
      ],
      "author": {
        "name": "Stan Iliev",
        "email": "stani@google.com",
        "time": "Wed Feb 07 14:07:30 2018 -0500"
      },
      "committer": {
        "name": "Stan Iliev",
        "email": "stani@google.com",
        "time": "Thu Feb 08 19:01:08 2018 +0000"
      },
      "message": "Cache VectorDrawable bounds at record time\n\nCache VectorDrawable bounds at record time, because the same\ndrawable object may be used several times with different bounds.\n\nBug: 71737362\nTest: Wrote a new unit test, tried sample app attached to the bug\nChange-Id: If7be934acf0c16b328cb0f95d849e463dcd3b88b\n"
    },
    {
      "commit": "937c6940809cfc931e5ca8d1400ac5fda9340e20",
      "tree": "c24c5c98b51eece8890664065b7734d253932bd7",
      "parents": [
        "33903da4057cc4783e7c978338b2aa00a2d87888"
      ],
      "author": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Thu Feb 08 11:36:49 2018 -0500"
      },
      "committer": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Thu Feb 08 11:36:56 2018 -0500"
      },
      "message": "SkColorTypeShiftPerPixel is deprecated\n\nTest: make\n\nChange-Id: Ib55e1d8d0bd173be0d5afa70b40fa0d867e20fd1\n"
    },
    {
      "commit": "0606a8874d9f50f13227497762ff0f0698415c50",
      "tree": "7512a4e449eabf1d38a83212712a19b1d8b9d0da",
      "parents": [
        "ea8feabec59d4c4925a8ff8b3c35ff7ba909d671"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Wed Jan 31 19:29:40 2018 -0800"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Wed Feb 07 13:10:35 2018 -0800"
      },
      "message": "Use new minikin::Font constructor\n\nThis is 2nd attempt of I4d7af881ed1a6c\n\nBug: 37567215\nTest: minikin_tests\nTest: hwui_unit_tests\nTest: atest CtsTextTestCases \\\n      CtsWidgetTestCases:EditTextTest \\\n      CtsWidgetTestCases:TextViewFadingEdgeTest \\\n      FrameworksCoreTests:TextViewFallbackLineSpacingTest \\\n      FrameworksCoreTests:TextViewTest FrameworksCoreTests:TypefaceTest \\\n      CtsGraphicsTestCases:TypefaceTest CtsWidgetTestCases:TextViewTest\nTest: bit  FrameworksCoreTests:android.text.\n\nChange-Id: I596c67b9453688f998a88031b9724425e2305b20\n"
    },
    {
      "commit": "ecc00786d0398283be01981844822bab7154ebb3",
      "tree": "25612698c52b58f1cf81c2338bb78d7557a450d3",
      "parents": [
        "0ee9c0db54191141aa348227e9317f502ca09069",
        "36dadcfc7e063ca60dc22dbb4517832326d26c30"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Wed Feb 07 19:06:26 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 07 19:06:26 2018 +0000"
      },
      "message": "Merge \"Revert \"Use new minikin::Font constructor\"\""
    },
    {
      "commit": "36dadcfc7e063ca60dc22dbb4517832326d26c30",
      "tree": "44c3db51b73505785f5ab4501275a2ceacc70670",
      "parents": [
        "ab40df9e6979c955f89a06a358385ecec361c9d9"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Wed Feb 07 18:38:58 2018 +0000"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Wed Feb 07 18:38:58 2018 +0000"
      },
      "message": "Revert \"Use new minikin::Font constructor\"\n\nThis causes a regression for some characters\n\nThis reverts commit ab40df9e6979c955f89a06a358385ecec361c9d9.\n\nBug: 73054061\nChange-Id: Icf1f9d2b89b75031aabb47507135e45a21bc5363\n"
    },
    {
      "commit": "dd3afdb48398daeaa4a6df197b0742a1e34fba58",
      "tree": "90e6d5f1a10ca06f23f865135e51af85b1ec20e7",
      "parents": [
        "077e3042b8209dbe72b528ac261a135229332129",
        "58978e182f07aba78141ed1d89a17bbb052f09d8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 06 23:43:42 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 06 23:43:42 2018 +0000"
      },
      "message": "Merge \"remove unused/deprecated flags from savelayer\""
    },
    {
      "commit": "451832a5ed50919ed1da2ee0b2766901aadca5a2",
      "tree": "3ade2f9a0a5757f17738a7a85ca7c23d8415af98",
      "parents": [
        "98517be352a9c4e394fdd605167101250d7a4721",
        "ab40df9e6979c955f89a06a358385ecec361c9d9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 06 22:47:46 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 06 22:47:46 2018 +0000"
      },
      "message": "Merge \"Use new minikin::Font constructor\""
    },
    {
      "commit": "58978e182f07aba78141ed1d89a17bbb052f09d8",
      "tree": "6f06c906f843e49c7f796b184adf2b0f76483614",
      "parents": [
        "33903da4057cc4783e7c978338b2aa00a2d87888"
      ],
      "author": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Tue Feb 06 16:18:07 2018 -0500"
      },
      "committer": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Tue Feb 06 16:18:47 2018 -0500"
      },
      "message": "remove unused/deprecated flags from savelayer\n\nTest: make\n\nChange-Id: I39e41a80430dca7878e6983b098c1c4541904fd1\n"
    },
    {
      "commit": "88c9959e5b417320bbc2484fab42ab4b12379533",
      "tree": "85dd7f4b48e7c233067ecd99b9b78cc9edb0459a",
      "parents": [
        "59f63bd801f10336c9f0499b7a0bc0bccb0fad2e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 08 17:38:30 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Feb 05 18:38:57 2018 -0800"
      },
      "message": "libandroidfw: Improve performance of AssetManager2\n\nAssetManager2 relied on creating a list of configurations\npresent in the resource table so as to avoid copying and\nconverting ResTable_config\u0027s from the APK on every\nresource retrieval.\n\nResTable, however, had a better optimization that pruned\nthe configurations that didn\u0027t match the currently set\nconfiguration. This vastly reduced the number of ResTable_configs\nto test.\n\nIn this CL, AssetManager2 follows suite with this optimization\nand only maintains the filtered ResTable_configs, falling back\nto the slow path when the configuration is overridden.\n\nTest: mma frameworks/base/libs/androidfw\nTest: adb sync system data\nTest: adb shell /data/benchmarktest64/libandroidfw_benchmarks/libandroidfw_benchmarks\nChange-Id: Ib57b75fbb32e1d310eec146e5a12dfc6de4385f9\n"
    },
    {
      "commit": "59f63bd801f10336c9f0499b7a0bc0bccb0fad2e",
      "tree": "fdac1d8181d36b5da4daaadd69225cfe29b54e3d",
      "parents": [
        "633085456e5047e16e53da6c95e193e2a0189633"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 28 13:01:35 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Feb 05 18:38:57 2018 -0800"
      },
      "message": "libandroidfw: Add ApplyStyle and SetConfiguration benchmark\n\nTest: mma frameworks/base/libs/androidfw\nTest: adb sync system data\nTest: adb shell /data/benchmarktest64/libandroidfw_benchmarks/libandroidfw_benchmarks\nChange-Id: Ia0e868008a3b32dc8d1c69ed1f2c39f152bb7815\n"
    },
    {
      "commit": "9ad287c828a116f844e5c03346c618d83727e4ae",
      "tree": "516b00ebd83c5fdbb79f403e32cd82d65081ce34",
      "parents": [
        "1187590da38457809dd368d4901c9c47ac5a6958"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 30 17:11:48 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Feb 05 18:38:57 2018 -0800"
      },
      "message": "libandroidfw: Make sure to set the \u0027app as lib\u0027 flag\n\nWhen an app is loaded as a shared library (eg. monochrome),\nmake sure to set the bit that it loaded as such, so that\nconversions from package ID 7f -\u003e shared library ID are done.\n\nBug: 72511998\nTest: make libandroidfw_tests\nTest: out/host/\u003chost_os\u003e/nativetest64/libandroidfw_tests/libandroidfw_tests\nChange-Id: Icd11b7a5adff351165ca16d5853fb5a0002c34b1\n"
    },
    {
      "commit": "1187590da38457809dd368d4901c9c47ac5a6958",
      "tree": "207ff9de48e4ea27560f08cf4c4d1f5269009534",
      "parents": [
        "367358ec364d9aca36b305879672f7c26db27469"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 23 12:58:11 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Feb 05 18:38:49 2018 -0800"
      },
      "message": "Replace AssetManager with AssetManager2 implementation\n\nTest: atest CtsContentTestCases:android.content.res.cts\nTest: make libandroidfw_tests\nChange-Id: I2bb6d7656d2516d371e83e541ed02f91405f6d94\n"
    },
    {
      "commit": "ab40df9e6979c955f89a06a358385ecec361c9d9",
      "tree": "6c4d452324c2f4775d9f25525e4767a36ca97b13",
      "parents": [
        "9fad6d289a65232db252d5ce40cc718c18a793d6"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Wed Jan 31 19:29:40 2018 -0800"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Fri Feb 02 22:11:55 2018 -0800"
      },
      "message": "Use new minikin::Font constructor\n\nBug: 37567215\nTest: minikin_tests\nTest: hwui_unit_tests\nTest: atest CtsTextTestCases \\\n      CtsWidgetTestCases:EditTextTest \\\n      CtsWidgetTestCases:TextViewFadingEdgeTest \\\n      FrameworksCoreTests:TextViewFallbackLineSpacingTest \\\n      FrameworksCoreTests:TextViewTest FrameworksCoreTests:TypefaceTest \\\n      CtsGraphicsTestCases:TypefaceTest CtsWidgetTestCases:TextViewTest\nTest: bit  FrameworksCoreTests:android.text.\n\nChange-Id: I4d7af881ed1a6cceb79e827d88e050789da46d01\n"
    },
    {
      "commit": "0f919b1814a135af00cc8339d6c23bd78c93d57c",
      "tree": "b8835826ea715d182013dca87055dc7b758bdd00",
      "parents": [
        "96080b5497f6300f6dc2dff907401e86b4a60d11",
        "295d9b1d43d47a0fec65001fe74c225bb60a957a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Feb 03 00:54:27 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 03 00:54:27 2018 +0000"
      },
      "message": "Merge \"Fix the tag size in token of ProtoOutputStream.cpp, the java version has the correct tag size computed.\""
    },
    {
      "commit": "295d9b1d43d47a0fec65001fe74c225bb60a957a",
      "tree": "1ae27384bf34fc9e7c8eea0f949c8f0bf7b7f447",
      "parents": [
        "7902b4a1b222cac1f60125de93a1ab30a0b7523f"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Fri Feb 02 14:33:20 2018 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Fri Feb 02 14:33:20 2018 -0800"
      },
      "message": "Fix the tag size in token of ProtoOutputStream.cpp, the java version has\nthe correct tag size computed.\n\nBug: 72755317\nTest: incident -p A 3005 | aprotoc --decode_raw\nChange-Id: I0275dbecb566101b562b649c2ae3d58fbfb9188b\n"
    },
    {
      "commit": "98b136c915584f7432448b4b1668883c55dea1c3",
      "tree": "2841e6afc7e56093f70b1d9d1a0c8d12a54e214e",
      "parents": [
        "044111b8b38037eae96d70794cdbf3ea81d52b7b",
        "bb8554afda4eb172639300e715c03e4aa4917708"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 02 03:15:50 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 02 03:15:50 2018 +0000"
      },
      "message": "Merge \"Atom: DaveyOccurred\""
    },
    {
      "commit": "30731ebe492167c47b1e29d087bfd211b6fb9779",
      "tree": "b0545cd84af84dece9cf0619ebb0a4e5b5cbec73",
      "parents": [
        "bbd31263b5c96de43296762ba8814a379b94755a",
        "99d66f061340f603cf8a859cadb56ae21a11dbda"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 02 00:57:22 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 02 00:57:22 2018 +0000"
      },
      "message": "Merge \"Update Typeface test implementation not to copy minikin::Font\""
    },
    {
      "commit": "bb8554afda4eb172639300e715c03e4aa4917708",
      "tree": "a3290ae802f8890bf386698442dac0ec1ed63834",
      "parents": [
        "00646ee730e93f5971c8a9adaa99c4ce580b2f95"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri Jan 26 11:59:14 2018 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Thu Feb 01 16:34:55 2018 -0800"
      },
      "message": "Atom: DaveyOccurred\n\nAtom for davey occurred\n\nTest: cts test accompanying \u0026\u0026 statsd unit tests \u0026\u0026 hwui unit tests\nChange-Id: I715ac213b09ef2b3ef1de75bc456a5edf7e0a244\n"
    },
    {
      "commit": "60dcffad5ff010f1b5b494b742af69ddc638bcff",
      "tree": "45f1c127e52f9cdc979713f63f811c68a8637170",
      "parents": [
        "1204a6fd93d9d17b83b95f35842b13960cd43e8a",
        "da252ac5c17426f28b8e18a2b8942c6880e4055b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 01 21:40:03 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 01 21:40:03 2018 +0000"
      },
      "message": "Merge \"Update argument of Layout methods.\""
    },
    {
      "commit": "738f827d0788a41727c305b91f7d85aa2517f7aa",
      "tree": "0872e8b77e41f4cb7786b002d46636d3d4144c80",
      "parents": [
        "b414d51d514f171467a21f9e54ead82af6c31eb8",
        "beaf5d919fa7986b96968d2282458aca9dc05b13"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 01 20:06:25 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 01 20:06:25 2018 +0000"
      },
      "message": "Merge \"Fixes for animationEnd in AnimatedImageDrawable\""
    },
    {
      "commit": "beaf5d919fa7986b96968d2282458aca9dc05b13",
      "tree": "de91acda541e710cee3a287e030e069d8b5965be",
      "parents": [
        "ce9bcc4977a8f7eca00674dd5292f191e3ca98fa"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri Jan 26 11:03:54 2018 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 31 19:26:28 2018 -0500"
      },
      "message": "Fixes for animationEnd in AnimatedImageDrawable\n\nBug: 63908092\nTest: Manual\n\nIf the animation is running on the render thread, post a message (in\nJNI) to call the listener.\n\nUse a weak reference in the native listener so that it does not create\na cycle.\n\nDon\u0027t add a listener if it\u0027s already in the list. Remove the native\nlistener when the Java listeners are all removed.\n\nCall onAnimationEnd when the animation is stopped manually.\n\nChange-Id: I5dc070089fb1cf399ac3316292592f614f2738f0\n"
    },
    {
      "commit": "70f93ee6737ae1e5c0e39841d6e66cfc1792a48c",
      "tree": "e62de47d1f309ce087a33156fa64199fb0edc5c6",
      "parents": [
        "b0c854ef9945c3f1713927d87c5ee82cba343a23",
        "d8be4a0abe7e2439813b384482346d1ccf11ef53"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 31 23:17:12 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 31 23:17:12 2018 +0000"
      },
      "message": "Merge \"Add API to set tonal shadow color\""
    },
    {
      "commit": "d8be4a0abe7e2439813b384482346d1ccf11ef53",
      "tree": "0b0900e26d868b1c3c42e4e3572ff35c84f7f181",
      "parents": [
        "e53c1a1b6bb37e9356121d5d3a6e979c125432ff"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Nov 17 15:06:24 2017 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Jan 31 11:28:11 2018 -0800"
      },
      "message": "Add API to set tonal shadow color\n\nBug: 68211332\nTest: HwAccelerationTests\u0027s coloredshadow demo \u0026 CTS test in topic\nChange-Id: I09f5d1067b3200564a9d47219f70985edf3a2527\n"
    },
    {
      "commit": "df2491a454976ab8eccc737c25d96fdc0f18e7f7",
      "tree": "ee235ec12886f0d1912aab419f13db0b87ec608c",
      "parents": [
        "7db9d2213978caf51d3a7d5a865bd4a2f9411be7",
        "1996dbb19cd43d0ffa034cafe460fe27342e584e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 31 01:16:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 31 01:16:21 2018 +0000"
      },
      "message": "Merge \"Make AnimatedImageDrawable.start reset\""
    },
    {
      "commit": "99d66f061340f603cf8a859cadb56ae21a11dbda",
      "tree": "44c78eb4f4b954456dff1a9e7e7342a4232913bc",
      "parents": [
        "da252ac5c17426f28b8e18a2b8942c6880e4055b"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Tue Jan 30 15:01:26 2018 -0800"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Tue Jan 30 15:01:26 2018 -0800"
      },
      "message": "Update Typeface test implementation not to copy minikin::Font\n\nTest: hwui_unit_tests\nBug: 65024629\nChange-Id: I974c11ed4d258934fb4f2bec95bede33b2261629\n"
    },
    {
      "commit": "da252ac5c17426f28b8e18a2b8942c6880e4055b",
      "tree": "05fae72fc64e81a01da33c9a7f62167dd961196c",
      "parents": [
        "fad69a64d9ff401c027d094bd00eaf0014b86971"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Mon Jan 29 09:42:47 2018 -0800"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Tue Jan 30 12:01:34 2018 -0800"
      },
      "message": "Update argument of Layout methods.\n\nBug: 65024629\nTest: minikin_tests\nTest: bit CtsTextTestCases:*\nTest: bit CtsWidgetTestCases:android.widget.cts.TextViewTest\nChange-Id: I659bff2385db44011abbb55e287ed893d50846ec\n"
    },
    {
      "commit": "fad69a64d9ff401c027d094bd00eaf0014b86971",
      "tree": "36196fe5f298af66288cb42738488fffd9d817f3",
      "parents": [
        "641e29df46c94015abea0ad2ffc202dd8e8325d0",
        "976f707fbf15296ea98ece91c506ae4e64dc7e66"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 30 19:11:23 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 30 19:11:23 2018 +0000"
      },
      "message": "Merge \"Store FontCollection in MinikinPaint\""
    },
    {
      "commit": "4307efc89eccc773a50036e83ccec734b23bdb95",
      "tree": "da85c13268bff0f1d3c3492a963f1ef08d98fe15",
      "parents": [
        "d32110ed327477722f0b49f154bea6d0db596ab0",
        "72b12e4222895d2b6a1d01ccaa628ce6ae4c0fca"
      ],
      "author": {
        "name": "Primiano Tucci",
        "email": "primiano@google.com",
        "time": "Tue Jan 30 18:55:57 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jan 30 18:55:57 2018 +0000"
      },
      "message": "Merge \"DropboxManager: Add err message if passing an invalid fd to addFile()\" am: 90529d212a am: 13d6ac4a35\nam: 72b12e4222\n\nChange-Id: Icfe984f46cb6e6cdc216d7182285c7e55abe93ab\n"
    },
    {
      "commit": "1996dbb19cd43d0ffa034cafe460fe27342e584e",
      "tree": "09f79f046cd99b10fc49543bf01345e7cbc45c8c",
      "parents": [
        "5b7f426ff04820f81877ccb696bf6245dede89e7"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon Jan 29 19:51:35 2018 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon Jan 29 21:08:56 2018 -0500"
      },
      "message": "Make AnimatedImageDrawable.start reset\n\nBug: b/63908092\nTest: Manual: Ie18811ba29a1db163aca08472b04ae185e9344f0\n\nIf the animation has already started and stopped (via stop()), restart\nthe animatino on a call to start().\n\nChange-Id: I0a14a1e643f32469fe5519949ee8ef046107e9a8\n"
    },
    {
      "commit": "5b7f426ff04820f81877ccb696bf6245dede89e7",
      "tree": "8609bad328fc4a720ef2c880680bffe4bb3074f1",
      "parents": [
        "86356ec7a688f703242b7529b920de2207050704"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri Jan 26 11:03:54 2018 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon Jan 29 21:08:18 2018 -0500"
      },
      "message": "Use a separate thread to decode AnimatedImageDrawable\n\nBug: 63908092\nTest: Manual: Ie18811ba29a1db163aca08472b04ae185e9344f0\n\nDepends on https://skia-review.googlesource.com/#/c/skia/+/101544. That\nchange removes the Skia class\u0027s time checks, and leaving it up to the\nclient to keep track of the time. In this case, the client wants to keep\ntrack of the time because it only wants to update while it is being\ndrawn. If it goes off screen (for example), it will just resume where it\nleft off when it returns on screen. This allows for smooth animations.\n\nIf an AnimatedImageDrawable is being drawn to a SkiaRecordingCanvas,\ndecode on the new (lazily-created) AnimatedImageThread.\n\nWhen running, always decode one frame ahead on the AnimatedImageThread\nso that it will be ready when it is time to display.\n\nDuring prepareTree, update the time and check whether there is a new\nframe ready to draw or the next frame needs to be decoded. In either\ncase, return true. The next frame to be decoded will be triggered by\nonDraw.\n\nChange-Id: If447976e9df417060a950f658dbca9cf7980dd02\n"
    },
    {
      "commit": "976f707fbf15296ea98ece91c506ae4e64dc7e66",
      "tree": "cf47abafd648d94188485f3b612cb9fff1ba9463",
      "parents": [
        "b443123538268d7b1ab0e0d74e3e9e0b25162e72"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Sun Jan 28 14:52:57 2018 -0800"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Sun Jan 28 14:52:57 2018 -0800"
      },
      "message": "Store FontCollection in MinikinPaint\n\nTest: N/A\nBug: 65024629\nChange-Id: I38fe305c5444a6f2b6786be2005b1725f01bf961\n"
    },
    {
      "commit": "372938942ffc1a7cc3e87cb5be524f234077f5c6",
      "tree": "0a0177d42475f89bf9159779030ed7e9785f4007",
      "parents": [
        "656096516cf0af5ade7174d441d1a7ca47a77ccd"
      ],
      "author": {
        "name": "Primiano Tucci",
        "email": "primiano@google.com",
        "time": "Fri Jan 26 17:28:58 2018 +0000"
      },
      "committer": {
        "name": "Primiano Tucci",
        "email": "primiano@google.com",
        "time": "Fri Jan 26 17:30:45 2018 +0000"
      },
      "message": "DropboxManager: Add err message if passing an invalid fd to addFile()\n\nFollow up to I076bfd3180fb9b4baff7e1bae2e611419061b2a7. Adds an\nerror message if passing -1 to addFile(int fd)\n\nChange-Id: I73a8d88f12b14bc28ea3bc3782a9df7d96d53c92\nTest: builds\n"
    },
    {
      "commit": "5490b610b3545c96d48de2e01c758e061b2aeed9",
      "tree": "2a66eaab081d19523d35980b8e2ff8a1f7fb0ca6",
      "parents": [
        "9f82b6bab52235e3262026c5d66b3d18b333ff38"
      ],
      "author": {
        "name": "Primiano Tucci",
        "email": "primiano@google.com",
        "time": "Fri Jan 26 14:25:18 2018 +0000"
      },
      "committer": {
        "name": "Primiano Tucci",
        "email": "primiano@google.com",
        "time": "Fri Jan 26 14:25:18 2018 +0000"
      },
      "message": "DropBoxManager: Allow adding a file using an fd\n\nThis patch adds an overload to DropBoxManager::addFile() which accepts\nan already-opened file as a file descriptor. This avoids the need for\nclients to create a filesystem-visible file when uploading data to\nDropBox.\n\nTest: Tested with perfetto using https://android-review.googlesource.com/c/platform/external/perfetto/+/587674\nChange-Id: I076bfd3180fb9b4baff7e1bae2e611419061b2a7\nMerged-In: I076bfd3180fb9b4baff7e1bae2e611419061b2a7\n"
    },
    {
      "commit": "c4533b708535debe3ea9d95f86a044c44b9dbafc",
      "tree": "3c369f9d057a8da08bd4791ce31148d856b83b41",
      "parents": [
        "150cca8777faea4e57ac956c7d4cf09a612d649a",
        "127d31a6842b6cca49885c3607e7ea35b1885b6f"
      ],
      "author": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Fri Jan 26 11:16:04 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 26 11:16:04 2018 +0000"
      },
      "message": "Merge \"Expose AnimatedImageDrawable\""
    },
    {
      "commit": "f7d01dd7e14e01420c39e7fb8eca3cfa0f5f31b6",
      "tree": "2ac2502467b144cc9a777f484e6b64aa37d30047",
      "parents": [
        "646265cb2a4af0b1b795fbb2f76ad424ce97cba3"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 25 15:38:58 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 25 17:39:40 2018 -0800"
      },
      "message": "Revert \"Replace AssetManager with AssetManager2 implementation\"\n\nThis reverts commit dcb3c6559b09ec89771858ec27a787027da9af50.\n\nBug:72511998\nChange-Id: I665966ca109f66f85d8665db388c71ea2303c3b8\n"
    },
    {
      "commit": "646265cb2a4af0b1b795fbb2f76ad424ce97cba3",
      "tree": "4d0ba93e33158093c571e0852083d40b8c38aaa3",
      "parents": [
        "0dd369912a2b46c22d09ddc6ae117fe173e51cb8"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 25 15:38:50 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 25 17:34:40 2018 -0800"
      },
      "message": "Revert \"libandroidfw: Add ApplyStyle and SetConfiguration benchmark\"\n\nThis reverts commit d9c809c480e22ccced6762268efaa30bb9a6e491.\n\nBug:72511998\nChange-Id: I3be2374e3662fc8397c00f1df1bce6de5f5a4549\n"
    },
    {
      "commit": "0dd369912a2b46c22d09ddc6ae117fe173e51cb8",
      "tree": "6e555320443d5e8a9459549ccc8c305599b73a1a",
      "parents": [
        "cfd4301c9d17a71bf476942a9a7125810c95738e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 25 15:38:38 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 25 17:34:39 2018 -0800"
      },
      "message": "Revert \"libandroidfw: Improve performance of AssetManager2\"\n\nThis reverts commit 64ee69d0f1f412edee2eb7a0c846deebbfa37ef9.\n\nBug:72511998\nChange-Id: Iab3ce449e60ec2451d391217543528d312089080\n"
    },
    {
      "commit": "ce6b2d6bb988032e9cfa00ee0d2353c3c09503a6",
      "tree": "c37d77f6ea3a564dc152718cb766d97768a09d34",
      "parents": [
        "898f11eca9aa57ddc84efd36ea1d6bb6967b2079",
        "c31033f43c85a07ebc6045c9b5af5408d0b306e9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 26 01:10:16 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 26 01:10:16 2018 +0000"
      },
      "message": "Merge changes from topic \"product_partition\"\n\n* changes:\n  Read media files from /product/media/audio\n  Support /product partition\n"
    },
    {
      "commit": "0cccde6b1ad66c16a1dbacdd17c634efdf80d83d",
      "tree": "235ba068a5d8d0ca7d5f3560e4169376d1d8a8d0",
      "parents": [
        "27507d86962047b45aa069c7140cd46c2577c51e",
        "52c866eea41549d0efc4d09f95f0c6d401b78b82"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 25 14:14:23 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 25 14:14:23 2018 +0000"
      },
      "message": "Merge \"DropBoxManager: Allow adding a file using an fd\""
    },
    {
      "commit": "73a331f52490f648d0347cd8856c1196d418a600",
      "tree": "8bf4bbc2edb5f4f815cf5c1174eab8f1a2f29f1f",
      "parents": [
        "6834ec8e54978d076fcf9c414d52f6cb173c24fc",
        "c697797d43b6932fc7cca1c8d7d850c3fb4d1452"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 25 06:23:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 25 06:23:36 2018 +0000"
      },
      "message": "Merge \"Statsd broadcast subscriber\""
    },
    {
      "commit": "6834ec8e54978d076fcf9c414d52f6cb173c24fc",
      "tree": "cb6b8e5d5b136cfc7bdb77405fd8fa46cad58aa0",
      "parents": [
        "c5afaca974c24dff6d49f5b134cece3ad9b7a546",
        "057c91a20dda36776b7f0bfc60bfce4331d83ab5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 25 05:41:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 25 05:41:21 2018 +0000"
      },
      "message": "Merge \"Fix start/pause behavior for AnimatedImageDrawable\""
    },
    {
      "commit": "1713d9e97aada3dc695800c18b1025238a11629d",
      "tree": "329149b24a3f6af1178327245681d75cddb8d0b4",
      "parents": [
        "1ccf72543da1c20e8c8a69b33d86f3d2cae5aaf3"
      ],
      "author": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Fri Jan 12 21:47:26 2018 +0900"
      },
      "committer": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Thu Jan 25 12:44:45 2018 +0900"
      },
      "message": "Support /product partition\n\nThis CL will support the followings.\n- installing a RRO package for framework from /product/overlay\n- installing apps from /product/app\n- installing priv-apps from /product/priv-app\n- installing permissions from\n  /product/etc/[default-permissions|permissions|sysconfig]\n\nBug: 64195575\nTest: `mm` under frameworks/base/tests/[libs|privapp]-permissions\nadb sync \u0026\u0026 adb reboot\nadb shell cmd package list libraries\n  \u003d\u003e confirmed com.android.test.libs.product library\nadb shell cmd package dump \\\n  com.android.framework.permission.privapp.tests.product\n  \u003d\u003e confirmed that the package is a priv-app\n\nAnd I moved vendor/overlay/framework-res__auto_generated_rro.apk into\nsystem/product/overlay/ on sailfish, and I confirmed that the RRO was\ninstalled properly.\n\nChange-Id: I16175933cebd9ec665d190cc5d564b5414a91827\n"
    },
    {
      "commit": "1ccf72543da1c20e8c8a69b33d86f3d2cae5aaf3",
      "tree": "b5cca5330e60e269e86236f9dec38207cca45670",
      "parents": [
        "b5f12bbd2f30f93803dbb266c45d30cc44df3d36",
        "64ee69d0f1f412edee2eb7a0c846deebbfa37ef9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 25 02:05:30 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 25 02:05:30 2018 +0000"
      },
      "message": "Merge changes from topic \"assetmanager-refactor\"\n\n* changes:\n  libandroidfw: Improve performance of AssetManager2\n  libandroidfw: Add ApplyStyle and SetConfiguration benchmark\n  Make idiomatic use of ApkAssets and AssetManager\n  Replace AssetManager with AssetManager2 implementation\n"
    },
    {
      "commit": "7362c89d96d0613cdc000c3da2e08e005f0a34b5",
      "tree": "69c6c1299d465ba9d20a0cc235e8643281d1d741",
      "parents": [
        "d93a795945076ef407542bb6945832e3024ce3d7",
        "3a9f223dd1fe6a74e6bcf9a1080280034043409c"
      ],
      "author": {
        "name": "Lingfeng Yang",
        "email": "lfy@google.com",
        "time": "Thu Jan 25 00:31:34 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 25 00:31:34 2018 +0000"
      },
      "message": "Merge \"Don\u0027t use shader disk cache on emulator\""
    },
    {
      "commit": "127d31a6842b6cca49885c3607e7ea35b1885b6f",
      "tree": "2d39d271ce583b28acc2618abea0fc850a07efc4",
      "parents": [
        "057c91a20dda36776b7f0bfc60bfce4331d83ab5"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri Jan 19 12:29:47 2018 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 24 19:20:18 2018 -0500"
      },
      "message": "Expose AnimatedImageDrawable\n\nBug: 63908092\nTest: I85979ae3d8c6a6dae6e4299dc3be291e12024290\n\nImplement Animatable2, adding listeners for starting and ending the\nanimation.\n\nAdd setLoopCount for changing the loop count.\n\nAdd the ability to inflate from XML, by using the name of the class or\n\"animated-image\", which mimics \"nine-patch\", \"bitmap\" etc.\n\nMove internal variables to a State class so that they can be transferred\nto a default constructed AnimatedImageDrawable.\n\nChange-Id: Ice8149e7de55f7ffb4b4ba9dd9c856582fc42bc9\n"
    },
    {
      "commit": "64ee69d0f1f412edee2eb7a0c846deebbfa37ef9",
      "tree": "a75c88533a52604ac4a4b5decb4ec1c1710d1cc4",
      "parents": [
        "d9c809c480e22ccced6762268efaa30bb9a6e491"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 08 17:38:30 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 24 15:19:09 2018 -0800"
      },
      "message": "libandroidfw: Improve performance of AssetManager2\n\nAssetManager2 relied on creating a list of configurations\npresent in the resource table so as to avoid copying and\nconverting ResTable_config\u0027s from the APK on every\nresource retrieval.\n\nResTable, however, had a better optimization that pruned\nthe configurations that didn\u0027t match the currently set\nconfiguration. This vastly reduced the number of ResTable_configs\nto test.\n\nIn this CL, AssetManager2 follows suite with this optimization\nand only maintains the filtered ResTable_configs, falling back\nto the slow path when the configuration is overridden.\n\nTest: mma frameworks/base/libs/androidfw\nTest: adb sync system data\nTest: adb shell /data/benchmarktest64/libandroidfw_benchmarks/libandroidfw_benchmarks\nChange-Id: I5d46f8b005a37b72750d00bd75f090e7b5a36f60\n"
    },
    {
      "commit": "d9c809c480e22ccced6762268efaa30bb9a6e491",
      "tree": "e53a25d1f086422982926c79f347a2a850ff3a22",
      "parents": [
        "e70b57a659e4486d07f30ebe3b067715b53f1378"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 28 13:01:35 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 24 15:19:09 2018 -0800"
      },
      "message": "libandroidfw: Add ApplyStyle and SetConfiguration benchmark\n\nTest: mma frameworks/base/libs/androidfw\nTest: adb sync system data\nTest: adb shell /data/benchmarktest64/libandroidfw_benchmarks/libandroidfw_benchmarks\nChange-Id: Ia6b441f186ccb455acbee15723f0d2d5657b09b5\n"
    },
    {
      "commit": "dcb3c6559b09ec89771858ec27a787027da9af50",
      "tree": "83aeb141e483ec7d059b7089e00b761ace122662",
      "parents": [
        "262cdf0f2724aaeade73a6c9e7b7466e0adf1007"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 23 12:58:11 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 24 15:19:04 2018 -0800"
      },
      "message": "Replace AssetManager with AssetManager2 implementation\n\nTest: atest CtsContentTestCases:android.content.res.cts\nTest: make libandroidfw_tests\nChange-Id: I572eb13c6a4372c7f656f5912821cececd5bf3d4\n"
    },
    {
      "commit": "ab802003b9e38215dc1feb570a174cf1556882de",
      "tree": "50d902c89ff49feb84962ea1cf5207165e66e42d",
      "parents": [
        "3741b3499f2a45a31931e658a39ae65a619945b9",
        "783f961d2fa6f916009844dafeaa08ffaf96a4d3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 24 22:07:13 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 22:07:13 2018 +0000"
      },
      "message": "Merge \"Compute full text layout in MeasuredText and use it for drawing\""
    },
    {
      "commit": "c697797d43b6932fc7cca1c8d7d850c3fb4d1452",
      "tree": "43037d273145230adad3e720cd798d729180a236",
      "parents": [
        "96c73a3c40316e5aa36ea59d40e901d2dd505021"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Jan 16 16:55:05 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Wed Jan 24 13:08:19 2018 -0800"
      },
      "message": "Statsd broadcast subscriber\n\nAllows a uid that uploads a statsd config to additionally\nregister a BroadcastSubscriber with statsd. If statsd\ndetects an anomaly (according to the config\u0027s Alert),\nstatsd can inform a BroadcastSubscriber provided in the config.\nThe config uses a subscriberId (just an int) to identify the\nBroadcastSubscriber. It then uses StatsManager.setBroadcastSubscriber\nto associate that subscriberId with a given PendingIntent.\nThen, when the anomaly is detected, statsd sends a broadcast\nusing that PendingIntent, alerting whoever was specified by\nthe config/setBroadcastSubscriber.\n\nBug: 70356901\nTest: cts-tradefed run cts-dev -m CtsStatsdHostTestCases -t android.cts.statsd.alert.BroadcastSubscriberTests\nChange-Id: I4d9ea9a6c8a85e61fadfd99c1513c55abbadd5e9\n"
    },
    {
      "commit": "bdd460bf491da026c5e6270061f6af2a514890b3",
      "tree": "67c2699603cd77b3a259363c3324ca9ab23bef3b",
      "parents": [
        "df598a67d1fc7ca3ec2d7194736ed5a8999a73fb",
        "bb7cb4a80f31a542cd6763a6b89aa11f47d639ef"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 24 21:07:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 21:07:21 2018 +0000"
      },
      "message": "Merge \"Remove unused argument LayoutOverhang\""
    },
    {
      "commit": "3a9f223dd1fe6a74e6bcf9a1080280034043409c",
      "tree": "fca32b3b7b9490abadab526e64b2be71f7dc57f9",
      "parents": [
        "1a68be0f0defb679a246352c30921bb011f2d5cb"
      ],
      "author": {
        "name": "Lingfeng Yang",
        "email": "lfy@google.com",
        "time": "Wed Jan 24 10:40:18 2018 -0800"
      },
      "committer": {
        "name": "Lingfeng Yang",
        "email": "lfy@google.com",
        "time": "Wed Jan 24 12:21:46 2018 -0800"
      },
      "message": "Don\u0027t use shader disk cache on emulator\n\nbug: 71900691\n\nEmulator user might switch renderers, migrate a snapshot to a different\nmachine with a different shader binary format, etc.\n\nPlus, program binaries don\u0027t seem to work so well on some desktop GPUs.\n\nChange-Id: I0c6239acbd556097494aa903d6603c963d3141cb\n"
    },
    {
      "commit": "057c91a20dda36776b7f0bfc60bfce4331d83ab5",
      "tree": "0cef3d342870bbb2aac29eeab881a10e742420d8",
      "parents": [
        "5511634f52fe7b760b1819f06bcd1c4d4acc9cd2"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 24 13:02:16 2018 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 24 13:05:17 2018 -0500"
      },
      "message": "Fix start/pause behavior for AnimatedImageDrawable\n\nBug: 63908092\nTest: HwAccelerationTests\n\nDo not start the animation at creation time\n\nWhen starting, first update the time, so it doesn\u0027t think we skipped a\nbunch of frames if we\u0027re resuming.\n\nContinue storing the SkPicture when stopped, so that we can continue to\nshow the same frame, without a jump.\n\nChange-Id: I5ac77f2561fc9f42f8f69ebfbee21fe647cfc75a\n"
    },
    {
      "commit": "2d14213849d6df70d0fa80319ab4ffc08743a683",
      "tree": "7a0a91fc95fda72f4d7fd360db5eb1cd31989bc1",
      "parents": [
        "e1350ba9ea74b5389c4bf154ca24c0f35bca56ad"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Mon Jan 22 10:25:26 2018 -0500"
      },
      "committer": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Wed Jan 24 13:11:39 2018 +0000"
      },
      "message": "Initial implmentation of AnimatedImageDrawables on the RenderThread.\n\nThe current implementation schedules the next frame of the images\nto be decoded after the current frame completes but potentially\nschedules tasks that will result in a no-op execution if a new\nframe is not yet needed.\n\nTest: HwAccelerationTest\nChange-Id: I0510cb5a1b801abd651327e924deb586af0306d6\n"
    },
    {
      "commit": "783f961d2fa6f916009844dafeaa08ffaf96a4d3",
      "tree": "749a0be8667f01370596ecf9961e5dfce5a4da17",
      "parents": [
        "52d3b672503c988858339181d5b7791179b09184"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Sat Jan 20 12:11:13 2018 -0800"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Tue Jan 23 17:45:55 2018 -0800"
      },
      "message": "Compute full text layout in MeasuredText and use it for drawing\n\nThe full layout is required for drawing text on UI thread.\nTo save this work, store the full layout result in MeasuredText and\ncompose the final layout from stored full layout if possible.\n\nCurrently justification/hyphenation is not supported but works normally\nas before. Nothing changes on existing non measured text.\n\nStaticLayout creation time for no style text (w/o patch -\u003e w/ patch, N\u003d30)\n  MeasuredText Balanced Hyphenation  :    721,297 -\u003e    720,657: (-0.1%)\n  MeasuredText Balanced NoHyphenation:    550,588 -\u003e    546,069: (-0.8%)\n  MeasuredText Greedy Hyphenation    :    503,582 -\u003e    498,009: (-1.1%)\n  MeasuredText Greedy NoHyphenation  :    502,344 -\u003e    498,507: (-0.8%)\n  RandomText Balanced Hyphenation    : 19,351,802 -\u003e 19,176,024: (-0.9%)\n  RandomText Balanced NoHyphenation  :  8,033,830 -\u003e  7,973,336: (-0.8%)\n  RandomText Greedy Hyphenation      :  7,957,335 -\u003e  7,927,316: (-0.4%)\n  RandomText Greedy NoHyphenation    :  7,988,884 -\u003e  7,929,717: (-0.7%)\n\nStaticLayout.draw time for no style text (w/o patch -\u003e w/ patch, N\u003d30)\n  MeasuredText NoStyled              :    644,453 -\u003e    660,684: (+2.5%)\n  MeasuredText NoStyled WithoutCache :  9,251,919 -\u003e    648,992: (-93.0%)\n  MeasuredText Styled                :  3,092,353 -\u003e    870,702: (-71.8%)\n  MeasuredText Styled WithoutCache   : 12,544,014 -\u003e  1,114,557: (-91.1%)\n  RandomText NoStyled                :    582,167 -\u003e    572,092: (-1.7%)\n  RandomText NoStyled WithoutCache   :  9,167,670 -\u003e  9,056,447: (-1.2%)\n  RandomText Styled                  :  3,064,490 -\u003e  3,029,028: (-1.2%)\n  RandomText Styled WithoutCache     : 12,314,863 -\u003e 12,283,026: (-0.3%)\n\nTest: minikin_test\nTest: bit CtsTextTestCases:*\nTest: bit CtsWidgetTestCases:android.widget.cts.TextViewTest\nTest: bit FrameworksCoreTests:android.text.MeasuredParagraphTest\nBug: 63897135\n\nChange-Id: I7e6ec5c953d7d0f767aba4f61f94e62b6f3a3a2b\n"
    },
    {
      "commit": "bb80480720bcc6086c1896d8c97ca650e744524d",
      "tree": "732816b078d3dfdc7177da1466023d36e17b4028",
      "parents": [
        "411985bab549f5229a86415bcd022507079e4931",
        "7ec28a888c7e59af02aeb0e0a9b078037d317e2e"
      ],
      "author": {
        "name": "Siyamed Sinir",
        "email": "siyamed@google.com",
        "time": "Tue Jan 23 17:35:59 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 23 17:35:59 2018 +0000"
      },
      "message": "Merge \"Use numbering system for configuration selection.\""
    },
    {
      "commit": "7fb38311361390e24d7e43ce1eb220faccd251ff",
      "tree": "c4e6dc480cb292306aa2dc3a481b51df983bbc08",
      "parents": [
        "68d10d00a52be904766d69acda98bc934e768e7f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 23 03:17:26 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 23 03:17:26 2018 -0800"
      },
      "message": "Revert \"Replace AssetManager with AssetManager2 implementation\"\n\nThis reverts commit b20a0ce59f59cb5ec857748e056cc341dbd13b92.\n"
    },
    {
      "commit": "fae57eb4b8b86271c79facc3e884e02f5156396b",
      "tree": "d3cf7ea29f9572bbcbfb8b6f4eec70f994b3fc36",
      "parents": [
        "50706b6ebc224920bceffa66baa30734de5e27ff"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 23 03:16:33 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 23 03:16:33 2018 -0800"
      },
      "message": "Revert \"libandroidfw: Add ApplyStyle and SetConfiguration benchmark\"\n\nThis reverts commit 62f17129a0c519fe3e591be102b1863024cea3a4.\n"
    },
    {
      "commit": "50706b6ebc224920bceffa66baa30734de5e27ff",
      "tree": "065c1519feb3770513788c6c7144e579b1931132",
      "parents": [
        "ec8c24862ba662b0f6095956e4a12f8e7d643062"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 23 03:16:16 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 23 03:16:16 2018 -0800"
      },
      "message": "Revert \"libandroidfw: Improve performance of AssetManager2\"\n\nThis reverts commit 392132748416719e3df427e6ac8dc11af194342c.\n"
    },
    {
      "commit": "1f62f7c72eaa6477950d6c0bf1bde562a68f6301",
      "tree": "b59b8366a72fd41253e8334bcb2533363c875337",
      "parents": [
        "060ac9bc9fe88c18838101eb13568bfff50f5886",
        "392132748416719e3df427e6ac8dc11af194342c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 23 05:28:11 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 23 05:28:11 2018 +0000"
      },
      "message": "Merge changes from topic \"assetmanager-refactor\"\n\n* changes:\n  libandroidfw: Improve performance of AssetManager2\n  libandroidfw: Add ApplyStyle and SetConfiguration benchmark\n  Make idiomatic use of ApkAssets and AssetManager\n  Replace AssetManager with AssetManager2 implementation\n"
    },
    {
      "commit": "a9c127593f0b6bcb6d3a7f2f757b4da7069b984b",
      "tree": "c64592d3c3340ff16a9a05750071a522c3d055cf",
      "parents": [
        "d50fb59b7bb1278accb18b94c5378cf757816c2a",
        "7e100e912cc238e53154adbfbe4a25eac70699fc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 22 23:52:31 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 22 23:52:31 2018 +0000"
      },
      "message": "Merge \"Improve layer rendering quality\""
    },
    {
      "commit": "7e100e912cc238e53154adbfbe4a25eac70699fc",
      "tree": "48fa6a369d648ef37d035d06b073a251d6c8a25c",
      "parents": [
        "4a022b84073afe843eb8b4430d7e21ca3faa9ee3"
      ],
      "author": {
        "name": "Stan Iliev",
        "email": "stani@google.com",
        "time": "Mon Jan 22 10:36:33 2018 -0500"
      },
      "committer": {
        "name": "Stan Iliev",
        "email": "stani@google.com",
        "time": "Mon Jan 22 16:10:26 2018 -0500"
      },
      "message": "Improve layer rendering quality\n\nIncrease filter quality when rendering a layer into the frame\nbuffer from kNone_SkFilterQuality to kLow_SkFilterQuality.\nThis visibly improves the quality if the layer is scaled.\nFor example the circle shutter button in camera app looks\nbetter in pressed state (there is no jagged edge).\n\nTest: Ran camera app\nBug: 72144993\nChange-Id: I138d930a25301a369876d76a2cd322df0324f0f2\n"
    },
    {
      "commit": "437aa6e8ad24489fcd8a7ab2c889874cfae12d0b",
      "tree": "b91f5e9984c6023ccf735b46883023b5cdf43b1a",
      "parents": [
        "d1238e7b506bd691a1e1fe35a3d54209b4bac839"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Wed Jan 10 11:34:26 2018 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Sun Jan 21 22:36:01 2018 -0800"
      },
      "message": "Add more information to incident header. Especially add config keys\nto check if the report is uploadable.\n\nMove incidentheader.proto to libincident so statds is able to include a lite\nproto class for incident header.\n\nChange IncidentReportArgs to add the proto object instead of serialized\nbytes to prevent caller gives meaningless data.\n\nBug: 70241842\nTest: push config to statsd and verify incidentd generate the report\nwith correct header.\n\nChange-Id: If95b655be71047b019b229e5903a08f3c21a1f29\n"
    },
    {
      "commit": "bb7cb4a80f31a542cd6763a6b89aa11f47d639ef",
      "tree": "ed2bb704469f6a5b945ac60e0e9fc75dd1705e61",
      "parents": [
        "bd9b0cf9b0713d8ed9edd0729a8b8b0ca47cbbd3"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Sat Jan 20 13:28:09 2018 -0800"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Sat Jan 20 13:28:09 2018 -0800"
      },
      "message": "Remove unused argument LayoutOverhang\n\nBug: 65024629\nTest: minikin_tests\nChange-Id: I5435d69aebdfff2852aa4afacbb343ec2eaeece7\n"
    },
    {
      "commit": "7ec28a888c7e59af02aeb0e0a9b078037d317e2e",
      "tree": "7cfaf2cccb605c7b781d2234fc2c8b97b5afdbbd",
      "parents": [
        "9342c3d4db5e862d010169db04e6b0f63cae713f"
      ],
      "author": {
        "name": "Igor Viarheichyk",
        "email": "viarheichyk@google.com",
        "time": "Fri Nov 10 11:58:38 2017 -0800"
      },
      "committer": {
        "name": "Igor Viarheichyk",
        "email": "viarheichyk@google.com",
        "time": "Fri Jan 19 20:25:34 2018 +0000"
      },
      "message": "Use numbering system for configuration selection.\n\nTake into account numbering system when selecting a matching\nresource configuration. Add numbering system specifier into the\ngenerated BCP 47 language tag.\n\nTest: build and run libandroidfw_tests\nBug: 71873777\n\nChange-Id: I3afda181f36de4b29a7be270b6f7593c2261fd71\n"
    },
    {
      "commit": "392132748416719e3df427e6ac8dc11af194342c",
      "tree": "fe7baaac50987f36e8ede122694e915cfe7e3093",
      "parents": [
        "62f17129a0c519fe3e591be102b1863024cea3a4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 08 17:38:30 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 18 10:40:10 2018 -0800"
      },
      "message": "libandroidfw: Improve performance of AssetManager2\n\nAssetManager2 relied on creating a list of configurations\npresent in the resource table so as to avoid copying and\nconverting ResTable_config\u0027s from the APK on every\nresource retrieval.\n\nResTable, however, had a better optimization that pruned\nthe configurations that didn\u0027t match the currently set\nconfiguration. This vastly reduced the number of ResTable_configs\nto test.\n\nIn this CL, AssetManager2 follows suite with this optimization\nand only maintains the filtered ResTable_configs, falling back\nto the slow path when the configuration is overridden.\n\nTest: mma frameworks/base/libs/androidfw\nTest: adb sync system data\nTest: adb shell /data/benchmarktest64/libandroidfw_benchmarks/libandroidfw_benchmarks\nChange-Id: I42d53f703623cf7c3f7cbcf194f5026ff540faf4\n"
    },
    {
      "commit": "62f17129a0c519fe3e591be102b1863024cea3a4",
      "tree": "3ecc2095606354bfb205336469e970888c69393f",
      "parents": [
        "c857766ca5aa37df0833c816922e6b3b85a742f9"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 28 13:01:35 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 18 10:40:10 2018 -0800"
      },
      "message": "libandroidfw: Add ApplyStyle and SetConfiguration benchmark\n\nTest: mma frameworks/base/libs/androidfw\nTest: adb sync system data\nTest: adb shell /data/benchmarktest64/libandroidfw_benchmarks/libandroidfw_benchmarks\nChange-Id: I021bc53e85651dcf5fbd4ebaae72d82be1a03252\n"
    },
    {
      "commit": "671cce2605ed50c9aba73ab5bd530cb7741c53cd",
      "tree": "5c7a608cd1d328a9580194b8e06269a4421416ee",
      "parents": [
        "8c9d8f2aec65e449005a4a69c54f691ebd514e52"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Sun Jan 14 16:52:17 2018 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 17 17:06:57 2018 -0500"
      },
      "message": "Make ImageDecoder return animated Drawables\n\nBug: 63909536\nBug: 63908092\nTest: TODO\n\nIf ImageDecoder.decodeDrawable is called with an animated image Source\n(currently GIF or WebP), return an object of a new (hidden) Drawable\nsubclass. The new Drawable animates, and it implements Animatable (TODO:\nimplement Animatable2) so users have some control over the animation.\n\nIn addition to the normal features of Drawable, this new one supports\nmany of the features of ImageDecoder, including scaling, cropping and\nPostProcess, which enables circle masks/rounded corners and other\narbitrary after-effects. It does *not* support decoding directly to a\nHardware Bitmap, since it cycles through frames and reuses the same\nbitmap memory. But it could be made to use shared memory (TODO?).\n\nTODO: Use a better number for the native allocation registry\nTODO: Use the RenderThread to drive the animation, and remove decoding\non the UI thread.\nTODO: Add support for modifying the loop count\n\nAndroid.bp:\n- build new AnimatedImageDrawable.cpp\n\nAndroidRuntime.cpp:\n- register new native methods\n\nAnimatedImageDrawable.java\nAnimatedImageDrawable.cpp:\n- new Drawable that handles animated images\n\nCanvas.h, SkiaCanvas.h/.cpp\n- New virtual method and implementation for drawing SkAnimatedImages\n\nRecordingCanvas.h/.cpp\n- Stub implementation of drawing SkAnimatedImages\n\nImageDecoder.h/cpp\n- Allow code sharing with AnimatedImageDrawable.cpp\n  - postProcess\n  - access the ImageDecoder struct\n\nDepends on https://skia-review.googlesource.com/c/skia/+/94660 in Skia.\n\nChange-Id: Ie2ec98d9c52deda4d439c6ef8e5dea2861bb93a3\n"
    },
    {
      "commit": "d09e917cd199e35325cc01a66957097e26676e04",
      "tree": "04dbe01b97c8a57e130fe54234dec4d873afe2f0",
      "parents": [
        "e8fc3d239979b90187e5f10f6e92494cde622319"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Thu Dec 14 12:25:36 2017 -0800"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Jan 12 16:48:38 2018 -0800"
      },
      "message": "Fix doFadingAnimationLocked in sanitized builds.\n\nThe loop as constructed causes i to overflow twice when i \u003d 0 on integer\noverflow sanitized builds.\n\n runtime error: unsigned integer overflow: 0 - 1 cannot be represented\n in type \u0027size_t\u0027 (aka \u0027unsigned long\u0027)\n\n runtime error: unsigned integer overflow: 18446744073709551615 + 1\n cannot be represented in type \u0027size_t\u0027 (aka \u0027unsigned long\u0027)\n\nThis refactors the loop to avoid the overflows.\n\nBug: 30969751\nTest: Compiles, device boots, enabled pointer location overlay.\nChange-Id: I844bb3b84b1f536c50d06fb489fcc22590d4aa98\nMerged-In: I844bb3b84b1f536c50d06fb489fcc22590d4aa98\n(cherry picked from commit 7ee0dba09550811040df4d7b494766f7d146e3de)\n"
    },
    {
      "commit": "600ebac26bb3a087fd9017200fe46e74ce48487e",
      "tree": "3d88ca87e712148be61c6a24f219d97ddab53f1b",
      "parents": [
        "db947de10f2231cece6924537b73e1ac56fd5a88",
        "a31973fe3a672bb3c17cd3d541134d8fb19d021b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 12 21:03:24 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 12 21:03:24 2018 +0000"
      },
      "message": "Merge \"Create an empty stub for Vulkan readback\""
    },
    {
      "commit": "52c866eea41549d0efc4d09f95f0c6d401b78b82",
      "tree": "d786c2fa47853888c11d0984133ae8315022cdff",
      "parents": [
        "200cd63fb3ff5b4354773e9994f4340f18b39cbc"
      ],
      "author": {
        "name": "Sami Kyostila",
        "email": "skyostil@google.com",
        "time": "Fri Jan 12 18:28:13 2018 +0000"
      },
      "committer": {
        "name": "Sami Kyostila",
        "email": "skyostil@google.com",
        "time": "Fri Jan 12 19:04:02 2018 +0000"
      },
      "message": "DropBoxManager: Allow adding a file using an fd\n\nThis patch adds an overload to DropBoxManager::addFile() which accepts\nan already-opened file as a file descriptor. This avoids the need for\nclients to create a filesystem-visible file when uploading data to\nDropBox.\n\nTest: Tested with perfetto using https://android-review.googlesource.com/c/platform/external/perfetto/+/587674\nChange-Id: I076bfd3180fb9b4baff7e1bae2e611419061b2a7\n"
    },
    {
      "commit": "a31973fe3a672bb3c17cd3d541134d8fb19d021b",
      "tree": "5ac3dc2372e3dcb824887776a9ad5587009b6cfe",
      "parents": [
        "3101268dd8d7597e5df61093fce87fa914b2e717"
      ],
      "author": {
        "name": "Stan Iliev",
        "email": "stani@google.com",
        "time": "Fri Jan 12 11:50:29 2018 -0500"
      },
      "committer": {
        "name": "Stan Iliev",
        "email": "stani@google.com",
        "time": "Fri Jan 12 11:50:29 2018 -0500"
      },
      "message": "Create an empty stub for Vulkan readback\n\nCreate a stub for Vulkan readback. This avoids crashing,\nbecause OpenGL readback does not work for Vulkan.\n\nTest: Ran calc and gmail apps with skiavk pipeline.\nChange-Id: I11cddde0a1efae1aa549e7a47d01051ec975f470\n"
    },
    {
      "commit": "2bfba3afbfb5be7cd29043ebb649b4936d904572",
      "tree": "5c2f3e15ec32a2feb59e6bf9434e1d25d729781c",
      "parents": [
        "5e093d997adcd0cd5d83720eaaf0f282f92a9630"
      ],
      "author": {
        "name": "Sami Kyostila",
        "email": "skyostil@google.com",
        "time": "Thu Jan 11 00:12:14 2018 +0000"
      },
      "committer": {
        "name": "Sami Kyostila",
        "email": "skyostil@google.com",
        "time": "Fri Jan 12 11:13:22 2018 +0000"
      },
      "message": "base: Convert libs/services/Android.mk into a blueprint\n\nConvert libs/services/Android.mk into a blueprint module so it can be\nlinked by other blueprint modules.\n\nTest: mmm frameworks/base\nChange-Id: I7acf9aa084d262a5aba5a58e45d9647e15c6dffb\nMerged-In: I7acf9aa084d262a5aba5a58e45d9647e15c6dffb\n"
    },
    {
      "commit": "682a4e75f8eff38994ca693e96d09c23747d7309",
      "tree": "a946368996c53f49b2db585712be259f3183aa00",
      "parents": [
        "b30669861fc3fecee42d0d868d504094df957caa",
        "4389e6bc2deddec5f359dcecf69f72995bb57b4e"
      ],
      "author": {
        "name": "Sami Kyostila",
        "email": "skyostil@google.com",
        "time": "Fri Jan 12 11:03:23 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 12 11:03:23 2018 +0000"
      },
      "message": "Merge \"base: Convert libs/services/Android.mk into a blueprint\""
    }
  ],
  "next": "c6c96dd86d283e8014a23a49842e70e4ab50f3ac"
}
