)]}'
{
  "log": [
    {
      "commit": "81aff0fbabf72354f635b07c714d5dedaa9a1419",
      "tree": "9b1354192919dc6a85576bd9eb829d07442f880b",
      "parents": [
        "bcf293c674307a90238671edcf5c82b17e3bca62"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Dec 20 13:53:28 2018 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Dec 20 13:53:28 2018 -0800"
      },
      "message": "Fix/suppress startop google-explicit-constructor warnings\n\n* Add explicit to conversion constructors/operators\n\nBug: 28341362\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,google-explicit-constructor\nChange-Id: I9e7b929cfa65c68f4cdb4710c1c5c6760d56e4d5\n"
    },
    {
      "commit": "bce4bd17453112e8be156bca1aa79579386fac30",
      "tree": "ca270d7e5d2e940b08637919aaa753cc13f248ae",
      "parents": [
        "760e074e5089dbdcba6d8b74252dd3ef1358852f",
        "44d8cdfb06233b3a6322c00b9b4650fd31a56a0f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 18 23:27:46 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 18 23:27:46 2018 +0000"
      },
      "message": "Merge \"[view-compiler] DexBuilder: Add check-cast instruction\""
    },
    {
      "commit": "44d8cdfb06233b3a6322c00b9b4650fd31a56a0f",
      "tree": "c305de276a0a9fa7ef089e368bb1647d9231ccad",
      "parents": [
        "610673690c4a91afbc8f6d81e8aa80667d683316"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Mon Dec 17 13:35:34 2018 -0800"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Dec 18 16:47:05 2018 +0000"
      },
      "message": "[view-compiler] DexBuilder: Add check-cast instruction\n\nBug: 111895153\nTest: atest\n\nChange-Id: I767e56713fab6beaa6970e58c4fc4d3560cc1304\n"
    },
    {
      "commit": "ceea877ddd25939518813d4850946ebb005ae021",
      "tree": "96fa12cff6a747009dcdaa27a9abe16a74d16dee",
      "parents": [
        "18b925a7afd779ea1f9250c6c18efe04212f7fe2",
        "3cbf176e7c6a96c535f56cb7d10e2de79a54cbd0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 17 21:28:37 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 17 21:28:37 2018 +0000"
      },
      "message": "Merge \"[view-compiler] Add layout validation\""
    },
    {
      "commit": "3cbf176e7c6a96c535f56cb7d10e2de79a54cbd0",
      "tree": "405baf89c19d18830dfe7f8111d99ad219485667",
      "parents": [
        "657d61220648e924b24973c62f984d8654f7bd1f"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Dec 13 16:04:56 2018 -0800"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri Dec 14 09:36:14 2018 -0800"
      },
      "message": "[view-compiler] Add layout validation\n\nLayout validation walks over a layout resource and verifies that the layout only\nuses features the layout compiler supports.\n\nCurrently this means we reject layouts that use any of the following tags:\n  * include\n  * fragment\n  * merge\n  * view\n\nIn the future, we will extend the layout compiler to handle these, but for now\nwe want to be liberal in what we reject.\n\nBug: 111895153\nTest: atest view-compiler-tests\nChange-Id: I8dca30c035a83b6763497a36fc60c68438fa1b0c\n"
    },
    {
      "commit": "c69449d95c145365d192cf9d347674494bc8fa70",
      "tree": "2aed52610e6a258fe85c4943b1641d53cf1b2004",
      "parents": [
        "657d61220648e924b24973c62f984d8654f7bd1f"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Dec 13 11:35:58 2018 -0800"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri Dec 14 09:14:12 2018 -0800"
      },
      "message": "[view-compiler] DexBuilder: Add more instructions\n\nThis CL adds the ability to generate code that calls static and virtual methods\nwhich return objects, as well as the not-equal-to-zero comparison operator.\n\nBug: 111895153\nChange-Id: I4ae9b3cb2edc6540671112b73c02bf6380d23051\n"
    },
    {
      "commit": "15b123ef458ed927782b080921e987c995fc56dd",
      "tree": "008426beb4c3b8d4ecb62112efa17be09fe6d427",
      "parents": [
        "58ee538e62b15dd07274beecf5f925543c5332b1",
        "7409b8620ff39ff0788ef1543297f0cb1d49a0e0"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Dec 11 14:13:44 2018 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Dec 11 14:13:44 2018 -0800"
      },
      "message": "DO NOT MERGE - Merge pie-platform-release (PPRL.181205.001) into master\n\nBug: 120502534\nChange-Id: Idc8bfb6d97a869b76cfb87ca1a494201baf9e8bd\n"
    },
    {
      "commit": "60a42ccac53682b9cd7cea63f1c8a4525b44d331",
      "tree": "deee9ff6fa4c994518917dc4e109ace1e10567ca",
      "parents": [
        "e7753e084fc668642aae74ec05af62f03a2688e7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 03 09:38:35 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 03 09:38:35 2018 -0800"
      },
      "message": "C++17 is the default now.\n\nTest: builds\nChange-Id: I64495775afe4ded7d3312cc35a154fecba64adc3\n"
    },
    {
      "commit": "1c0f3f099cf6420af16a9ab29f3bdf6721ac78a3",
      "tree": "fdbb0b490b40357607fc5673633c221669286a12",
      "parents": [
        "2583def750214a34b674d128bc1763f742015dba"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri Nov 09 13:48:59 2018 -0800"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Nov 15 17:44:03 2018 +0000"
      },
      "message": "[view_compiler] cleanup: Use format-specific bytecode encoding functions\n\nThis change corrals most of the bit shifting and ORing needed to encode Dex\ninstructions into EncodeXXX functions that follow the naming scheme at\nhttps://source.android.com/devices/tech/dalvik/instruction-formats. Overall, it\nmakes the code easier to follow and probably even less error prone because we\nonly have to make the format right in one place.\n\nBug: 111895153\nChange-Id: I902ec3c8bca6b5dc4ad900503af7aef58d4bbf5f\n"
    },
    {
      "commit": "b392758a657e4dcedfe3b3823cbfe30dbbf352e2",
      "tree": "8d2471741f13187bc352ca97dd48bbf0dc00fc87",
      "parents": [
        "3cc4afc610ad418cb495a4f3072abc6b4fea51ba"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Nov 08 16:40:16 2018 -0800"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Nov 13 13:47:29 2018 -0800"
      },
      "message": "[view_compiler] DexBuilder: Add support for new and calling constructors\n\nThis change also includes support for calling methods with more that one\nargument. In fact, we can go up to four.\n\nBug: 111895153\nChange-Id: I49472171cefcf57cdfce2ac4d41646ed4df29074\n"
    },
    {
      "commit": "3cc4afc610ad418cb495a4f3072abc6b4fea51ba",
      "tree": "9702f79529edf60e36aba78319431649257403aa",
      "parents": [
        "24df195e7833e38401b9c84e48165d96a6bebd7a"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Nov 08 14:16:20 2018 -0800"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Nov 13 13:41:56 2018 -0800"
      },
      "message": "[view_compiler] DexBuilder: add support for string literals and null pointers\n\nBug: 111895153\nChange-Id: If6bdd9a280f6feed175be4da57733f3442e6dd14\n"
    },
    {
      "commit": "d62c5aa954dd6c995f24353dbfd13c2b0bfb112a",
      "tree": "494c9b360001b979dbc88e89f7d88beba7383bff",
      "parents": [
        "b8740842e0da907c208ae3f1a1281c8985fcbcb9"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Nov 01 15:50:24 2018 -0700"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Sat Nov 10 00:46:07 2018 +0000"
      },
      "message": "[view compiler] Add conditional branch instruction\n\nThis CL adds support for the if-eqz instruction. It should be easy to add\nadditional comparisons as needed.\n\nThis also introduces a new kind of Value called a Label. Labels may be created\nany time and then must be bound to a location in code at some point. References\nto labels are tracked, and when a label is bound all references are patched to\nrefer to the concrete address.\n\nBug: 111895153\nChange-Id: I15424aec75425004f0f1f4bbc6e760bac3a6c7de\n"
    },
    {
      "commit": "d683f9fa3123cb618311f7164a6aedad42e730fd",
      "tree": "dda192faa417ed2859973c70f4d29553b0d523c6",
      "parents": [
        "93bf21dad4279db75c321c141b07c6409d6bcade"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri Oct 26 16:08:09 2018 -0700"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Nov 08 21:14:32 2018 +0000"
      },
      "message": "[view_compiler] Add end-to-end DexBuilder tests\n\nThese tests verify that code produced by DexBuilder can be loaded and run on\ndevice. It works by introducing a new tool, dex_testcase_generator, which writes\nout a couple of DEX files with test cases. This tool runs as a build step. The\ngenerated DEX are then copied over to the device where they are loaded and run\nthe on-device DexBuilderTest.\n\nBug: 111895153\n\nChange-Id: I06f5edd0e3e2f4e9ec2d14a0db7d22b75b424119\n"
    },
    {
      "commit": "faefd4f6c769436f333b153c8fc33bb476b57c2c",
      "tree": "7dcdc432747ef1c64e5c1ce9f4b592b16a6cf5ae",
      "parents": [
        "009b2dd158183062f4c9ad681636797350699f57"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Oct 11 16:25:57 2018 -0700"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Nov 07 00:05:48 2018 +0000"
      },
      "message": "[view-compiler] Support method declaration and invocation in Dex builder\n\nThe Dex builder can now generate calls to methods (although not in all forms\nyet). To help do this, we add a new virtual Instruction and Value class. This is\nneeded to generate code with values that are not known until the entire method\nhas been generated. In particular, we can now refer to function parameters.\n\nThe test method now accepts a String and returns the the length of the string.\n\nBug: 111895153\nChange-Id: I11d52b083ae51d8151fccb1a65e45d40ff05fd81\n"
    },
    {
      "commit": "acf3fbde8263c52317dc1dc429fbeb8d87fdaf23",
      "tree": "f7dc012bb36fda233288b88faf0022990832fc11",
      "parents": [
        "6730f3459004f5bd475c0d9b514beeb93627eeda"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Oct 11 14:20:39 2018 -0700"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Mon Oct 22 11:13:42 2018 -0700"
      },
      "message": "Move startop/tools/view_compiler to startop/view_compiler\n\nThis is planned to ship on device, so by convention the view_compiler should not\nbe in a tools directory.\n\nChange-Id: I0eb03812d77ec38edc3908725acb40bacb345ecd\n"
    },
    {
      "commit": "22fe21df93312e65ea344a7476f4b14c12f88941",
      "tree": "7a578b9612a79dd2e51de5177191086f38dc9088",
      "parents": [
        "719310cd2c57cb249232f76548207ce330624faf",
        "e53713c51459c46ade586a45e952cefeee0dc930"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 17 01:50:35 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 17 01:50:35 2018 +0000"
      },
      "message": "Merge \"iorap: Remove blank newline in TEST_MAPPING\""
    },
    {
      "commit": "7cbabff3f05a7bcc59208cc46620b9321f07d192",
      "tree": "debf14bf5091ec5cdf53afd885d7be1c48cef8de",
      "parents": [
        "fde18facbadb7bd61e75c02469d5ee6ae68b1ce7",
        "b624fc1623f14e3f22190e32f0e5ee97be8ab1b1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 16 22:21:33 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 16 22:21:33 2018 +0000"
      },
      "message": "Merge \"iorap: Add presubmit/postsubmit support\""
    },
    {
      "commit": "e53713c51459c46ade586a45e952cefeee0dc930",
      "tree": "8361d51e0d881e6f411cea48a1a1dd29bf422a56",
      "parents": [
        "b624fc1623f14e3f22190e32f0e5ee97be8ab1b1"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Oct 16 15:15:21 2018 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Oct 16 15:15:21 2018 -0700"
      },
      "message": "iorap: Remove blank newline in TEST_MAPPING\n\nChange-Id: I378e86327951daa05512efd2ac491d27f9995ddd\n"
    },
    {
      "commit": "dbc36e2bcb9eb6d3c6865f2f32d5529b6fc77b09",
      "tree": "8f6f0936a19a5954823a90186b3eb7d2de0b61aa",
      "parents": [
        "0af8c5c73c423ed76c132a46d624cd64af999ab8"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Sep 20 12:03:10 2018 -0700"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Mon Oct 15 15:26:11 2018 -0700"
      },
      "message": "Start on DexBuilder\n\nThis change begins work on DexBuilder, which will allow us to generate DEX files\ndirectly from layouts. This version is rather limited, but we will expand its\nfunctionality in future CLs. The DexBuilder in this CL can create a DEX file\nfrom scratch, define classes, and define methods on those classes. Within\nmethods, it supports extremely simple instructions, such as storing a small\nconstant in a register and returning a value from a register. Additionally,\nthere are tests to make sure that at least at a structural level, the generated\nDEX files are valid.\n\nDexBuilder and its associated builder classes use functionality from\nlibartdexfile and the Dex Slicer tool to support the actual encoding of DEX\nfiles.\n\nTest: atest, also manually tested by loaded a generated DEX file in an Android\napp and verifying its behavior.\n\nChange-Id: Iaa01aa7e3a0c7e4d5f4fa8dbce1492499c93c222\n"
    },
    {
      "commit": "b624fc1623f14e3f22190e32f0e5ee97be8ab1b1",
      "tree": "c3c48eb6fcd39b998f94c8b18a00f14d4488bc01",
      "parents": [
        "ca980ac83c7c8173217c5de39b86f3ce3f11bea4"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Oct 09 14:56:33 2018 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Oct 15 14:28:19 2018 -0700"
      },
      "message": "iorap: Add presubmit/postsubmit support\n\nAlso add support for temporarily disabling selinux\nwhile running the iorap binder integration tests.\n\nTest: atest --test-mapping frameworks/base/startop/iorap\nBug: 72170747\nChange-Id: I0a5a006e28d4e1775aea4087c1b4731ebd3898a4\n"
    },
    {
      "commit": "4ddd969fb9d2dc75088b5acca13c3921a1e94bf6",
      "tree": "b874e059339e613a196c66a9a98402b13bda873c",
      "parents": [
        "337946995021164e2ddd15c854cabca10136a57a",
        "292a9347f721c1b665266993b8dd2d346966da16"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 04 17:46:47 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 04 17:46:47 2018 +0000"
      },
      "message": "Merge \"startop: Add iorapd binder integration test\""
    },
    {
      "commit": "7b532b7370d2f19a08fc373ba0e95663d96cbfd6",
      "tree": "fa84aa242e3bbfefe40841b62600c71eab606b81",
      "parents": [
        "3b12359e4c658c0562297f7d934f340090059676",
        "ca4fee198a41f87e04b9d4a75e4e560d1ec432c0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 04 01:13:47 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 04 01:13:47 2018 +0000"
      },
      "message": "Merge \"startop: Add iorap parcelables for AIDL interfaces\""
    },
    {
      "commit": "292a9347f721c1b665266993b8dd2d346966da16",
      "tree": "0ac9c1c056c567df25d4f00f11c0e9646ab80d53",
      "parents": [
        "ca4fee198a41f87e04b9d4a75e4e560d1ec432c0"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Sep 28 16:48:13 2018 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Oct 02 17:51:38 2018 -0700"
      },
      "message": "startop: Add iorapd binder integration test\n\nConnects to the binder \u0027iorapd\u0027 service as a client\nand tests round-trip callback functionality.\n\nAlso adds mockito-inline to the test build, allowing us to mock\nany class/methods, even if it\u0027s static or final.\n\nNote: selinux is currently not supported, need to use\n $\u003e adb shell setenforce 0\n\nPrior to running any tests relying on binder connectivity.\n\nBug: 72170747\nTest: atest libiorap-java-tests\nChange-Id: Id5ba579845105e331d764838c357924810a64c6c\n"
    },
    {
      "commit": "ca4fee198a41f87e04b9d4a75e4e560d1ec432c0",
      "tree": "45bafe8d483ac92682022aba6aa6baeb0007093a",
      "parents": [
        "06777666155b2d63bd92227c5c94b18bc89e63eb"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Sep 25 17:55:54 2018 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Oct 02 17:51:34 2018 -0700"
      },
      "message": "startop: Add iorap parcelables for AIDL interfaces\n\nBug: 72170747\nTest: atest frameworks/base/startop/iorap\nChange-Id: Icd3feebcd2342e66b63fbb0c0e8f08bade618c76\n"
    },
    {
      "commit": "c4239ac4a8c145c99daf806b6e1a3ce5109049ba",
      "tree": "ac44371eabcd7236ff2694cdd8bf1cbf863d0f87",
      "parents": [
        "53f6d1b060c10121062c4054514c3e3a0c2444bd"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Sep 05 10:43:31 2018 -0700"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Mon Oct 01 14:05:10 2018 -0700"
      },
      "message": "Prototype XML view compiler\n\nThis is an initial step towards a tool for pre-compiling layout XML files.  It\naccepts an XML file and produces a Java language class called CompiledView with\na static method, inflate. Calling CompiledView.inflate should then return a view\nobject that is equivalent to calling LayoutInflater.inflate on the same\nresource.\n\nThere are still several important limitations, but this works well enough to do\nsome experimentation. The limitations include:\n* Currently only one layout can be compiled at a time.\n* `merge` and `include` nodes are not supported.\n* View compilation is a manual process that requires code changes in the\n  application.\n* The tests in this CL do not yet exercise any interesting behavior.\n\nBug: 111895153\nChange-Id: I3e6880b08c52087d24ae7486495bd7fa282f4ff7\n"
    }
  ]
}
