)]}'
{
  "log": [
    {
      "commit": "09efc1604936c234b65a5d278f5ea63da29b17cd",
      "tree": "e0b34882e0af2f7fe364645b8b3c2a8c802bc6d5",
      "parents": [
        "d83edf3d155c49a578851da4f0407affa03b2325"
      ],
      "author": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Mon Feb 22 17:24:57 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 23 02:48:40 2021 +0000"
      },
      "message": "Revert \"Remove obsolete TestApiEnforcementPolicy.\"\n\nThis reverts commit d8b153b7c2026f45db97a7fd5804957becc5cfdf.\n\nReason for revert: cts tests on -user builds is broken\n\nChange-Id: I7528fb6d1606f08d2398bc4cbb27519424cf1b51\n"
    },
    {
      "commit": "fedff519e0bab2702cbf1ea271cbcb89eeeb52a3",
      "tree": "1219011411161f4f97b935e505f6e166df888d6c",
      "parents": [
        "48516425230845987f5fe3d17e5d0acfc6f82131"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Feb 07 21:36:33 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 15:29:12 2021 +0000"
      },
      "message": "Change runtime behavior related to hiddenapi.\n\nWhen resolving a method, if the found method is not accessible, check if\nthere are methods defined in interfaces which are.\n\nBug: 178680596\nBug: 122551864\nTest: 817-hiddenapi\nChange-Id: If7631b30b2eb8eb70d3d0fa1522744fbbd1f66a1\n"
    },
    {
      "commit": "2807839d996167f35e4000ff2f80952dd62c5e8b",
      "tree": "8a925afa4826bd6a1f79f47020a11dd1b25d1540",
      "parents": [
        "745da80dbf169d83e2acb847b0c9c07985d51bdf"
      ],
      "author": {
        "name": "Pedro Loureiro",
        "email": "pedroql@google.com",
        "time": "Thu Jan 21 17:09:55 2021 +0000"
      },
      "committer": {
        "name": "Pedro Loureiro",
        "email": "pedroql@google.com",
        "time": "Wed Feb 10 12:54:47 2021 +0000"
      },
      "message": "Add logcat message when @TestApi access is denied\n\nThis serves to help a developer knowing what to do when a test fails.\n\nTest: manual\n\nFixes: 177047045\nChange-Id: I0e32896bd5a0a4163a4a9a0d405e1f977fd4cd7d\n"
    },
    {
      "commit": "3098e36d2935ad7ce9995ef5fb7395d035383047",
      "tree": "0d56301c7e029a58853be507649f21b1c3438825",
      "parents": [
        "37fd800e917269df7824052452bcbd65f5528a3e"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Tue Jan 26 18:30:54 2021 +0000"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Wed Feb 03 15:21:04 2021 +0000"
      },
      "message": "Limit hidden api logcat logging.\n\nSeveral signature tests are randomly failing due to adb timing out.\nBecause these tests try accessing all nonsdk APIs, they generate a lot\nof output to logcat.\nThis change reduces the number of logged APIs to a maximum of 100. For\nmost use cases, this should be sufficient - and will reduce the amount\nof spam in the signature tests, hopefully addressing them randomly\nfailing.\n\nTest: atest CtsHiddenApiBlocklistDebugClassTestCases\nBug: 176156645\nChange-Id: I0218c9fca651653d3d9a1036296f4cc3186427c6\n"
    },
    {
      "commit": "d8b153b7c2026f45db97a7fd5804957becc5cfdf",
      "tree": "014e91484c13e2c44cfa1380f388c758b7c23c0c",
      "parents": [
        "b1cf83748ce8165fe7e41ce6a57eb5529946a971"
      ],
      "author": {
        "name": "Artur Satayev",
        "email": "satayev@google.com",
        "time": "Fri Jan 22 17:27:07 2021 +0000"
      },
      "committer": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Tue Feb 02 20:25:47 2021 +0000"
      },
      "message": "Remove obsolete TestApiEnforcementPolicy.\n\nAccess to TestApis is now gated by @ChangeId ALLOW_TEST_API_ACCESS.\n\nBug: 147113465\nTest: presubmit\nChange-Id: I4c5e336069bce3bccfcde0bcd84b6c1f539635e9\n"
    },
    {
      "commit": "f7fcb98ab4740db9d9d8ed7652b89928a2e56f60",
      "tree": "5a76fa96e391474345314eac31a6b5e95ec4e10b",
      "parents": [
        "23c926d12f8333d2ca59d6b321064cb9d831f0ad"
      ],
      "author": {
        "name": "Pedro Loureiro",
        "email": "pedroql@google.com",
        "time": "Tue Nov 24 16:44:12 2020 +0000"
      },
      "committer": {
        "name": "Pedro Loureiro",
        "email": "pedroql@google.com",
        "time": "Wed Nov 25 20:19:58 2020 +0000"
      },
      "message": "Check if app has ALLOW_TEST_API_ACCESS change id\n\nAllow apps with the change id ALLOW_TEST_API_ACCESS enabled to\naccess methods annotated with @TestAPi\n\nTest: m test-art-host-gtest-art_runtime_tests\nFixes: 166236554\n\nChange-Id: I78776443dd0b76d8cba24ddfbfb83c3b50b346ab\n"
    },
    {
      "commit": "037d282cd1fc201601ac52dcfe0f1a4d97ca3790",
      "tree": "da6a1d61357cd09c4131501031de691491bcdb2a",
      "parents": [
        "6e71c66b35f6a96908e3d371316cba15dcb75d1f"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Thu Nov 19 00:20:04 2020 +0000"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Mon Nov 23 19:02:00 2020 +0000"
      },
      "message": "Add compat framework logging to ART\n\nLog first call for every change id in ART to logcat.\n\nTest: manual\nBug: 153061480\n\nChange-Id: I37ff5b88572478ae6c24b0b7dec2020da03b2172\n"
    },
    {
      "commit": "fc12a6cb415b2eacee0459fd170490a407c2548a",
      "tree": "f3b8508544e7320635146d0458e612e4b6f735d9",
      "parents": [
        "0f5784886faf0281a7b06eba35105ee68f1e5a00"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Wed Jul 29 19:52:34 2020 +0100"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Mon Aug 10 12:27:13 2020 +0000"
      },
      "message": "Rename ApiList::Value enums\n\nUse a more inclusive terminology for the API lists. This change focuses\nspecifically on the ApiList::Value enum values. The string equivalents\nwill be changed separately, as they have multiple extra dependencies.\n\nBug: 162326106\nTest: m\nTest: m test-art-host-gtest-art_hiddenapi_tests\nTest: art/tools/run-gtests.sh\n\nChange-Id: I1dccf59ecc9e08b60dbd1bfed6ce438b5ce081d0\n"
    },
    {
      "commit": "5158d4a204a8e6404d39d9f76021d5de0eef3174",
      "tree": "dd8b0e044313eff39e3109eea98e24821fd7cca5",
      "parents": [
        "5521c640fcdc0fbb14a7883d35dd2fb7a2a84af1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 27 08:50:06 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 27 13:08:46 2020 +0000"
      },
      "message": "Remove hiddenapi warning on non-android builds.\n\nThe warning only applies to an Android setup.\n\nTest: art script\nChange-Id: Iddd141f0d43482a8d95528910763961fe2a26a15\n"
    },
    {
      "commit": "5868adaefe72cc8bcdcd8325c40f712375a506d1",
      "tree": "a1d4328902c4e860fe69c4e4bb34052de2530df3",
      "parents": [
        "5a62af5dc9e9bafeffcac7820e1a5b7586e58477"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 12 11:50:34 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 13 08:00:22 2020 +0000"
      },
      "message": "Move implementations from class_root.h to -inl.h .\n\nMake it possible to include the definition of enum ClassRoot\nwithout pulling in a lot of other headers.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: Ic90fdd70bfe0c5428a5c9a0d7901ea7e15b03488\n"
    },
    {
      "commit": "d20e51dcd0fc4b2b229c5b6a5e9b500ae042bc61",
      "tree": "2ef7925b2e89c77cee31144a25932a198cd4b65e",
      "parents": [
        "a6653d304faa3bbd981507570a4ac1107760c6a7"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Tue May 05 16:01:19 2020 +0100"
      },
      "committer": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Thu May 07 09:34:47 2020 +0000"
      },
      "message": "\"Move ICU from ART APEX to i18n APEX\" Attempt 2\n\nThe change was previously submitted in https://r.android.com/1283897\n\n\"Calling @IntraCoreApi from core-icu4j should not cause Core platform API violation\"\nhttps://r.android.com/1299494\n\nBug: 138994281\nTest: m checkbuild on aosp_x86-userdebug\nTest: device boots\nChange-Id: Idb3e2450fca5d8300aef353fc1e4e99e24f04372\n"
    },
    {
      "commit": "5477b8e55f01a58fac188f272818b38a19c50d4e",
      "tree": "e6e345925412d7bd3f6f1e46d9c47833c23bdb40",
      "parents": [
        "ed2895678203365b2024c742f51d34791729900b"
      ],
      "author": {
        "name": "Chris Gross",
        "email": "chrisgross@google.com",
        "time": "Fri Apr 24 09:36:45 2020 -0700"
      },
      "committer": {
        "name": "Chris Gross",
        "email": "chrisgross@google.com",
        "time": "Tue May 05 21:12:37 2020 +0000"
      },
      "message": "Allow bootjars in system_ext.\n\nBug: 148385042\nTest: Built and booted Pixel 3a both with and without a boot jar in system_ext.\nTest: m test-art-host-gtest-hidden_api_test32\nTest: m test-art-host-gtest-hidden_api_test64\nChange-Id: I10ef0340b92aa60579ff39f888cb556dc2953f2a\n"
    },
    {
      "commit": "b5146a3b70b9bf15532d25d3b876354938976bc9",
      "tree": "dca0a5f4cd30c2882e404532eb06691a19624306",
      "parents": [
        "50f89ba3237da01adfdbc65abc330d1c8d5af07e"
      ],
      "author": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Tue May 05 11:11:30 2020 +0000"
      },
      "committer": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Tue May 05 11:11:30 2020 +0000"
      },
      "message": "Revert \"Calling @IntraCoreApi from core-icu4j should not cause \"...\"\n\nRevert \"Move v8 and libpac into i18n APEX\"\n\nRevert \"Move core-icu4j into I18n APEX\"\n\nRevert \"Move ICU from ART APEX into i18n APEX\"\n\nRevert \"Move core-icu4j into i18n APEX\"\n\nRevert \"Move libpac into i18n APEX\"\n\nRevert \"Add shared library into i18n APEX and add the required s...\"\n\nRevert \"Make com_android_i18n namespace visible\"\n\nRevert submission 1299494-i18nApex\n\nReason for revert: Breaking aosp_x86-eng on aosp-master\nReverted Changes:\nI30fc3735b:Move ICU from ART APEX to i18n APEX\nIcb7e98b5c:Calling @IntraCoreApi from core-icu4j should not c...\nIc7de63fe3:Move core-icu4j into I18n APEX\nI65b97bdba:Make com_android_i18n namespace visible\nIa4c83bc15:Move v8 and libpac into i18n APEX\nI10e6d4948:Move core-icu4j into i18n APEX\nI8d989cad7:Move ICU from ART APEX into i18n APEX\nI72216ca12:Move ICU into i18n APEX\nIef9dace85:Add shared library into i18n APEX and add the requ...\nI7d97a10ba:Move libpac into i18n APEX\nI90fff9c55:Move ICU from ART APEX into i18n APEX\n\nChange-Id: Ica8f978af397a5ef84847246c89f724b3f8e7d6e\n"
    },
    {
      "commit": "50f89ba3237da01adfdbc65abc330d1c8d5af07e",
      "tree": "98e9d52845a6b7114529628144cd9c51b56904c2",
      "parents": [
        "8419b82fa8d46362eb1369ec1876ee2d3c4bc29d"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Thu Apr 30 18:53:43 2020 +0100"
      },
      "committer": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Tue May 05 08:52:20 2020 +0000"
      },
      "message": "Calling @IntraCoreApi from core-icu4j should not cause \"Core platform API violation\"\n\nTreat I18n APEX as the same domain as ART and Conscrypt APEX.\n\nRemove unused varaiable isJavaDebuggable because it causes the\nNoSuchMethodError for an unknown reason:\njava.lang.NoSuchMethodError: No virtual method isJavaDebuggable()Z in class Ldalvik/system/VMRuntime; or its super classes (declaration of \u0027dalvik.system.VMRuntime\u0027 appears in /apex/com.android.art/javalib/core-libart.jar)\n\nBug: 138994281\nTest: art/test/run-test --chroot $ART_TEST_CHROOT 674-hiddenapi\nChange-Id: Icb7e98b5cd7143c06c05dd4377af0c96ba75bca7\n"
    },
    {
      "commit": "4a1e4dd1a763fc67e6f505b516a28ddfd0da2963",
      "tree": "1d0dbd77a45b946f9297456517c57b3c54b37bdf",
      "parents": [
        "b69312dbce2e0ee31db01263262d6f08324af7d5"
      ],
      "author": {
        "name": "Artur Satayev",
        "email": "satayev@google.com",
        "time": "Thu Apr 23 22:28:59 2020 +0100"
      },
      "committer": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Fri Apr 24 16:04:05 2020 +0000"
      },
      "message": "Add exemption list for hiddenapi warnings.\n\nBug: 154851649\nTest: m\nChange-Id: If8eb30b9e1284c2e0580e806541e2e5c41b8cad6\n"
    },
    {
      "commit": "82cc2a247d9fb9bb8d1d28a09d978f66d0b1c4dd",
      "tree": "2b4b5dce1ea153af57fb4237d70490bcb12b45e5",
      "parents": [
        "3949e5ed86cb752125c7b545ed5c59edfa80580a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Apr 07 21:04:17 2020 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Apr 08 19:54:37 2020 +0000"
      },
      "message": "Remove FileDescriptor ownerId field from Core Platform API bypass\n\nBug: 151443957\nTest: art/tools/run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64 -- libcore.libcore.io\nChange-Id: I99797c5894308c0c6227ec00f0d9ebfc1c7b8d25\n"
    },
    {
      "commit": "eb070f085df78fc39ad2c06f0638edcf0537e6a3",
      "tree": "8d464c44bf9509d8da2a77b02ab5a84e9a7301bf",
      "parents": [
        "539d1d422776c50fea3b1e725ab2b063c533f911"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 10 14:00:18 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 13 10:59:36 2020 +0000"
      },
      "message": "Reland \"art: Add FileDescriptor fields to native Core Platform API\"\n\nThis reverts commit Ie9fa5a25d5352f214a16e10d5bbbe45da9f3c486.\n\nOriginal commit message:\n\nAdds descriptor and ownerId to whitelisted native Core Platform API.\n\nChange in reland:\n\nAdds a method to VMRuntime to disable the initialization of a class\nduring AOT compilation.\n\nBug: 144502743\nBug: 150680645\n\nTest: art/test/run-test --host 001-HelloWorld\nTest: art/tools/run-libcore-tests.sh --mode\u003dhost --variant\u003dX64\nTest: atest PreloadCheck\nChange-Id: I9facfe3d3fa27cf50a345d24be1e7d7e0d26c848\n"
    },
    {
      "commit": "2db169ce8b992fd4834f5828ee874a650c9304ea",
      "tree": "b01e65e1bbe887b59947082547ee24c763539a78",
      "parents": [
        "1dc987a3ebbbadac4fcbb249f3d099d5a5bf04b9"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 10 12:52:21 2020 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 10 13:17:01 2020 +0000"
      },
      "message": "Revert \"art: Add FileDescriptor fields to native Core Platform API\"\n\nReason for revert: Fails \u0027atest PreloadCheck\u0027\nReverted Changes:\nIfd25daed9:art: Add FileDescriptor fields to native Core Plat...\nI7c65da755:libcore: Remove native calls in FileDescriptor \u003ccl...\n\nChange-Id: Ie9fa5a25d5352f214a16e10d5bbbe45da9f3c486\nExempt-From-Owner-Approval: revert\n\nBug: 150680645\nBug: 151107960\n"
    },
    {
      "commit": "47d0c475a11fed0485296f942c0abed8b02efd45",
      "tree": "4ff4447f62c1f306843bc3ef0679efb7ed1202c8",
      "parents": [
        "37d6d77297bf682eed7f9d65be49e8ea61aa3b69"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Mar 05 15:54:54 2020 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 09 11:12:44 2020 +0000"
      },
      "message": "art: Add FileDescriptor fields to native Core Platform API\n\nAdds descriptor and ownerId to whitelisted native Core Platform API.\n\nBug: 144502743\nBug: 150680645\nTest: art/test/run-test --host 001-HelloWorld\nTest: art/tools/run-libcore-tests.sh --mode\u003dhost --variant\u003dX64\nChange-Id: Ifd25daed95516b27eaae4b034fdc45f77ea25a74\n"
    },
    {
      "commit": "814b9286540d0db5685aedc04c507d95e729d96b",
      "tree": "02651d535b27e0f660d1db90b05b289665051804",
      "parents": [
        "9f8ead24a13e0471a333f0776a024e970662591c"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Feb 19 16:37:11 2020 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 03 09:13:01 2020 +0000"
      },
      "message": "Manually add java.io.Buffer private fields to the Core Platform API\n\nThis change adds the private fields in java.nio.Buffer to the Core\nPlatform API programmatically.\n\nThese fields are private and there is no way to express them in the\nAPI defintion. Although unfortunate, we are already doing this for\nmethods and fixing the points of use for these fields is a sizeable\ntask.\n\nBug: 124338141\nBug: 144502743\nTest: Boots, no warnings from native Core Platform API methods\nChange-Id: Icd06cae3f2fe523c71b79430009e76b30caf4b94\n"
    },
    {
      "commit": "2dea07964e4902f62f870b003a7b70ab5b77f253",
      "tree": "80afdd2f4a95298e441ada4a8ae439221b94af02",
      "parents": [
        "615212399037ea41987282800f077941d7ec9f54"
      ],
      "author": {
        "name": "atrost",
        "email": "atrost@google.com",
        "time": "Tue Feb 25 20:11:47 2020 +0000"
      },
      "committer": {
        "name": "Anna Trostanetski",
        "email": "atrost@google.com",
        "time": "Thu Feb 27 15:57:52 2020 +0000"
      },
      "message": "Gate access to targetsdk-max-p,q on compat framework\n\nReplace targetSDK checks for those APIs, keep it for greylist-max-o.\nThis will allow toggling access to APIs that are in greylist-max-p and\ngreylist-max-q (two separate toggles).\n\nBug: 149994052\nBug: 149997251\nTest: mma test-art-host-gtest-hidden_api_test64\nChange-Id: I00777bbeefba50a0863a6645b77e60d48e9bb768\n"
    },
    {
      "commit": "267366ca19e7b71a63d3c4a02976cc56a6e58adc",
      "tree": "063ef118f770096ac667f5b4c7d22b75693896c0",
      "parents": [
        "fa2b2d35255515accd0aa69193aa5e72b009e38e"
      ],
      "author": {
        "name": "Artur Satayev",
        "email": "satayev@google.com",
        "time": "Thu Oct 31 14:59:26 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 07 15:23:32 2019 +0000"
      },
      "message": "Only allow access to @TestApi signatures in instrumented processes.\n\nNote that the check is for \"pure\" @TestApi signatures, i.e. those that are on blacklist. If the signature is also annotated with @SystemApi or @UnsupportedApiUsage then it would not be on blacklist.\n\nBug: 133832325\nTest: manual\nChange-Id: I546fb42495331efd638d9def924ef33da0c80182\n"
    },
    {
      "commit": "e58624f221b967553d7b71f14d8677ceaa000553",
      "tree": "00d6caa5ca66562d9c8e448abc77c0c6018fca0c",
      "parents": [
        "48349ad38887f65da76df268f8e548d508d8c6a1"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Sep 20 15:53:40 2019 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Sep 24 17:40:00 2019 +0000"
      },
      "message": "Various renames following the name change from \"Runtime APEX\" to \"ART APEX\".\n\nIn particular ANDROID_RUNTIME_ROOT is now ANDROID_ART_ROOT.\n\nTest: Build \u0026 boot\nTest: art/tools/run-gtests.sh in chroot\nTest: art/test/testrunner/testrunner.py --target --64 in chroot\nTest: art/tools/run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64 in chroot\nTest: art/tools/run-jdwp-tests.sh --mode\u003ddevice --variant\u003dX64 in chroot\nTest: m test-art-host-gtest\nTest: art/test/testrunner/testrunner.py --host --64\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost\nBug: 135753770\nChange-Id: Ia74da964e54cf396d66e9e12ea56da4e9483662a\n"
    },
    {
      "commit": "0039bc553788c18ba7f619b555d744f548ae749e",
      "tree": "7908e4ac6d8da4b91acc50f97ce5b5959e1ee813",
      "parents": [
        "31cc2795f72e8cf5ecced188e6b4198a236a26ce"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 10 10:22:26 2019 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 11 06:57:08 2019 +0000"
      },
      "message": "Do not change hidden API ArtMethod/ArtField access flags on AOT\n\nHidden API may change the access flags of ArtMethod/ArtField in order\nto dedupe warnings in logcat. Avoid doing that during AOT compilation\nas the updated access flags would survive until runtime in the\nboot/app image. This is not a problem for correctness, but better\nmatches expectations of what the access flags should be and whether we\nshould warn at runtime.\n\nTest: compiles\nBug: 129063331\nChange-Id: I44e235d73914bd42eacf3df69f9ed5285c1e864a\n"
    },
    {
      "commit": "4de9bb69107f5f194697e6c3279d2ca1887a8245",
      "tree": "7a2eb9436b8a407a375f3a96bbd23c358f771435",
      "parents": [
        "5dbd02a497f4bbdf33ae37e715159fe33594a02a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 03 13:06:17 2019 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 03 15:11:28 2019 +0000"
      },
      "message": "Print allowed/denied in hiddenapi warning message\n\nThe error message when accessing hidden APIs currently contains only\nmethod/field signature, API list and access method, but fails to\nmention whether access was granted or denied. Add that information in.\n\nTest: manual\nChange-Id: Ice5ee448b6dc842f5f3f10fa8e0a59b8640abb7f\n"
    },
    {
      "commit": "e3e0f70f2d58674d6cfd324674d8808ca479f5a9",
      "tree": "f2bbef9ef18cb8357acc7a3ceb90c7c4feeec78b",
      "parents": [
        "02998cf18a03467f4c935f9d09cfd18c531b3d4b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 12 07:02:02 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 22 16:21:06 2019 +0000"
      },
      "message": "Return the same dex location for dex file whether backed by dex file or not.\n\nBug: 126901248\nTest: oat_file_assistant_test\nChange-Id: Idae49fb00bfad7007cc55e53a83e4a3e42f53e07\n"
    },
    {
      "commit": "340eff4ef043a58934304b33d0656ee3741b2f94",
      "tree": "ed2667f3d1836cd80a6b166fb6d061ae31cb646f",
      "parents": [
        "72da9855659cd7c1b0780453e74ff56a72c10828"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 21 10:28:47 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 21 22:20:39 2019 +0000"
      },
      "message": "ART: Disable kCorePlatform detection\n\nThe detection is inconsistent, and follow-up failures are hidden.\nDisable for now, as on-host and on-device compilation must be\nconsistent.\n\nBug: 129008061\nTest: m test-art-host\nChange-Id: I62dbb2d1cac899799120b1a9447acfe5fe6e018a\n"
    },
    {
      "commit": "bfaba288427e80e7941e49c4264ba8f6cd6d97d1",
      "tree": "db8e893b87c2406275c82599d43e9b9a5b0f895c",
      "parents": [
        "7dd0f0f2b4af0b15389ca8624bde93e1fb7ed776"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Mar 15 11:35:51 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Mar 16 07:34:43 2019 +0000"
      },
      "message": "Fix buildbots hidden_api_test\n\nTarget buildbots set /system to be the runtime module root because they\nare running without an apex. The test assumes that /system dex files are assigned\nto the application domain but here they get assigned to the core-platform domain.\n\nAdjust the domain setting logic to check if the runtime module root is\ndistict from the android root (as a proxy for \u0027is running with apex\u0027).\nIf not (as is the case with the buildbots), skip checks against apex\nlocations.\n\nTest: m test-art-target-gtest-hidden_api_test\nChange-Id: Iff3890ec69cb04a1e4ed5bc2a3b5c652ada05f36\n"
    },
    {
      "commit": "a5c3a808020d81447bc19d07a99288e9d28a6e6c",
      "tree": "83a9b1eac0a7209e6e407c0462d0b1ba8f95f62c",
      "parents": [
        "98fb083a30e9b37685f943e2923e65e60e0a0971"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Mar 08 14:59:41 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Mar 14 14:34:20 2019 +0000"
      },
      "message": "hiddenapi domain: Use oat dex file location if available\n\nTo determine the caller and callee domains of a hidden API access check,\nthe logic will test the dex location against several known system\nlocations. However, DexFile instances backed by an OatFile have relative\ndex locations to avoid need to rewrite the .oat file when moving files\nbetween folders. The canonical dex location is stored in the OatDexFile\ninstead.\n\nBecause the OatDexFile data structure is not available in libdexfile,\nmove the domain resolution logic to hidden_api.cc and resolve when dex\nfiles is first registered with the class linker.\n\nTest: m test-art-gtest\nTest: camera does not crash\nBug: 126901248\nBug: 127852529\nChange-Id: Id494b1c47a2199c227dec046174e08320b9cbc3b\n"
    },
    {
      "commit": "d51e574e05a66bd6706f6e9e05f8abe0f8581551",
      "tree": "f782a63e1a530a3664724b98ecc8f20c0c6c66a4",
      "parents": [
        "e7e26d10a7a1446b42c00104b162bf07e7c01a04"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Feb 28 14:47:32 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 05 15:17:01 2019 +0000"
      },
      "message": "Reenable core platform API violation warnings, dedupe\n\nPrint a warning the first time a non-core platform API member is\naccessed and add kAccCorePlatformApi to its access flags to not report\nit next time. Only do this when policy is kJustWarn. This prevents\nlogspam.\n\nBug: 125701194\nBug: 119068555\nTest: compiles, boots\nTest: art/test.py -b -r -t 674\nChange-Id: Ia7d6ba4f1f30fbea7bdea1670183c17f84ca1150\n"
    },
    {
      "commit": "6a1dab4184b8048209cdbebac5482393475e9b76",
      "tree": "809f7a486e0f11d25d01afd67b750164bd95bd9a",
      "parents": [
        "d8e040145be0b8e240aef0745651cc14bcacdb9d"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Feb 28 18:45:15 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Mar 04 10:09:52 2019 +0000"
      },
      "message": "Fix handling of proxy classes in hidden_api.h\n\nInspecting proxy classes with reflection/JNI could result in an ART\ncrash because hiddenapi::detail::GetDexFlags() assumed that all classes\nhave a class def index and can be iterated over. This actually revealed\na more general issue with proxy classes.\n\nThis patch replaces a proxy method with the interface method at the\nbeginning of ShouldDenyAccessToMember. This takes care of all proxy\nmethods and will instead look at hidden API flags of the interface\nmethods. What\u0027s left is proxy fields - both synthetic implementation\ndetails. Special case those and assign to greylist for now.\n\nBug: 124218696\nTest: art/test.py -r -t 691-hiddenapi-proxy\nChange-Id: I36c961cd4ffb196641db162818a0f9659aed8a32\n"
    },
    {
      "commit": "6ad020df482b6113b7949c1c36d71b0fdadfa6a2",
      "tree": "1cc8acd0ea3370dec8f7b6bb5c016e29241e779d",
      "parents": [
        "0faaf9cd2fc8eb386bad9d96d86217b14308b243"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Mon Feb 18 12:15:51 2019 +0000"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Wed Feb 20 12:58:29 2019 +0000"
      },
      "message": "Pass sampled value to hidden api access logger\n\nThe hidden api access logger can use multiple logging methods, each with\nits own sampling rate. ART will only be aware of the maximum sampling\nrate, and it will be up to the logger to choose which logging method or\nmethods will be chosen.\n\nTest: m\nBug: 119217680\n\n(cherry picked from commit 5746f795e254fc74ab54ba4e59bc0c5e994efb03)\n\nChange-Id: Ida8d494cb280cb94cd27adf1264776d3e9306471\nMerged-In: I888e55c76ea7a032c35e880a981d1fc9dd4ba6b6\n"
    },
    {
      "commit": "a2d2bc2ed74e35c46b7c6aa5172c652f63679fa3",
      "tree": "4964fce11a9c49086b46aaf08be75f3262462b3d",
      "parents": [
        "4ee4561f2153f3b0bc3be2e781488a97c73ca58e"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Fri Jan 25 16:18:53 2019 +0000"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Wed Jan 30 10:24:00 2019 +0000"
      },
      "message": "Replace libmetricslogger logging with up-call to Java for hidden api\n\nUse VMRuntime.hiddenApiUsedWith{JNI,Reflection} instead of depending on\nlibmetricslogger\n\nTopic: hidden-api-reporting-upcall\nTest: m\nBug: 119217680\nChange-Id: Ifaf0b0e4ae271f6fcd37e8d7cf917a3b81d8ddae\nMerged-In: I3292f1d20cc8635391cddc3ba60d4a80b578fa82\n"
    },
    {
      "commit": "e7681823f8259c8c04ce0c361746216606784e69",
      "tree": "8bd248fc6be126d7d4e55bb4072ed24b2851ebbd",
      "parents": [
        "90faceb71e25748172ba6369209f8a2a66735394"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Dec 14 16:25:33 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 21 10:22:27 2019 +0000"
      },
      "message": "hiddenapi: Print warnings for @CorePlatformApi violations\n\nWhen accessing a method/field at runtime, determine the context of both\nthe caller and the callee, and add new logic for the case\n\"platform -\u003e core-platform\" which used to be always allowed.\n\nIf the callee is marked with kAccCorePlatformApi, access is allowed.\nIf not, a warning is printed into logcat.\n\nBug: 119068555\nTest: 674-hiddenapi\nChange-Id: I64839596bf6eb06d7a169fd59b18fd82c140ce6e\n"
    },
    {
      "commit": "90faceb71e25748172ba6369209f8a2a66735394",
      "tree": "64707bbd718b29de9a19c01b12b0cc872685bb13",
      "parents": [
        "62a4bcf3fe11e6800f5d451b41003c135358ed6a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Dec 14 14:36:15 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 21 09:48:59 2019 +0000"
      },
      "message": "hiddenapi: Support \u0027core-platform-api\u0027 flag\n\nAdd support for parsing @CorePlatformApi stubs and encoding it in\nhiddenapi dex flags of the corresponding fields/methods.\n\n(1) The CL refactors hiddenapi::ApiList class to store a second value:\na bit vector of \"domain API\" flags. These are intended for encoding\nmembership in a set of API stubs only available to certain callers,\ne.g. @CorePlatformApi when platform code calls core platform or\n@TestApi for CTS tests.\n\n(2) Parse @CorePlatformApi stubs and set domain flags for its members.\n\n(3) Parse the flags at runtime and set kAccCorePlatformApi access flag\non the corresponding ArtField/ArtMethod objects.\n\nBug: 119068555\nTest: m appcompat\nTest: dexlayout -b \u003ccore-oj jar\u003e | grep \u0027CORE-PLATFORM-API\u0027\nChange-Id: Idbfa6d3af7459258a5a0b6da7c03c037a577eb75\n"
    },
    {
      "commit": "c5a96e4a8ea9f78135c5cd3df7e1fc965104182e",
      "tree": "662506a68d056c382f6882b65bb28dd3f09366d7",
      "parents": [
        "5d938ef154f504ada9c8fc9c9361fe69aabbe8b9"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 09 10:04:45 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 09 10:04:45 2019 +0000"
      },
      "message": "Do not enter hidden API slow path when policy\u003d\u003dDisabled\n\nAfter a recent refactor the hidden API access check logic would enter\nslow path when the enforcement policy is set to kDisabled. This did\nnot affect correctness but could have a performance impact. Moreover,\na debuggable process would see logcat warnings printed for every such\naccess despite it being granted. This caused occasional logcat buffer\noverflows in killswitch CTS tests and their resulting flakiness.\n\nThe patch exits from ShouldDenyAccessToMember early if policy is\nkDisabled and adds a DCHECK in ShouldDenyAccessToMemberImpl to assert\nslow path is not entered under the policy.\n\nTest: m test-art-host-gtest-hidden_api_test\nChange-Id: I217d9914d2645af11ce84c03a0ed778a82bc760f\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "1a6586327d9de6374f9e7ca98d071f2943b03c99",
      "tree": "1d118af8f32855ef0036080d5e8a560f14e5e482",
      "parents": [
        "d378a567a435a80be9ab7eb8bfe0359c1240c0ff"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Dec 01 17:54:26 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 03 20:19:40 2018 +0000"
      },
      "message": "Keep pointer to original DexFile during JVMTI redefine for hiddenapi\n\nJVMTI redefine overwrites the pointer to the class\u0027 DexFile which\nprevents access checks from reading the hiddenapi flags store. Store\nthe pointer in ClassExt together with the original ClassDef index\nto preserve the access to flags store. Because method/field indices\nare still lost, the corresponding dex member is found using string\ncomparison of member\u0027s name and type.\n\nBug: 119688837\nTest: 999-redefine-hiddenapi\nChange-Id: Ifdf35668e838869a971233bbaae61851014658b1\n"
    },
    {
      "commit": "813a86307e1f3437ed9d17aeea2c5c6ffcda5c67",
      "tree": "6ab0118464a3f721dc967d52a9607a96ce6e4188",
      "parents": [
        "7e09737125ddb8c6f243ac1882d2a23da3f109c4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 29 16:17:01 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 29 17:54:54 2018 +0000"
      },
      "message": "Use ArtMethod::GetDex{File,Cache}() more.\n\nDo not go through the declaring class when it can cause\na DexFile or DexCache mismatch for obsolete methods.\n\nAlso fix similar potential mismatch in hiddenapi.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/834082 ,\n    https://android-review.googlesource.com/836008 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 119830111\nChange-Id: I3fdf1aa1bc7bab816d5d8034b107506a32438b77\n"
    },
    {
      "commit": "dcfa89bfc06a6c211bbb64fa81313eaf6454ab67",
      "tree": "4aaf6da88861029e387525957bf68796cf95648c",
      "parents": [
        "fd667d4165aefe51010e4fe3bd81b820ed9884ef"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Oct 31 11:04:10 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Nov 22 12:49:26 2018 +0000"
      },
      "message": "Rename and reorganize hiddenapi::ApiList\n\nChange values of ApiList flags to make them easier to extend in the\nfuture and unify naming across all components. Light greylist is now\njust \"Greylist\", dark greylist becomes \"GreylistMaxO\".\n\nNote that the version code in \"GreylistMaxO\" must also include any\nmaintenance releases, i.e. entries on \"GreylistMaxO\" are accessible\nto apps with targetSdkVersion\u003c\u003d27 (O MR1).\n\nTest: m, phone boots\nTest: m test-art\nChange-Id: I9622e0646eb265008a8bb2652270876ae95dac84\n"
    },
    {
      "commit": "2bb2fbd2879d0a6d9ebf7acff817079dde89b417",
      "tree": "d607aa6bfb2ea55fbfd875237b37c79f3cfed5f6",
      "parents": [
        "85865697ff9fabede3d64ff64cde72727c3fc4c1"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Nov 13 18:24:26 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 16 11:11:20 2018 +0000"
      },
      "message": "Create SdkVersion enum, migrate users to it\n\nCreates a new SdkVersion enum with integer codes of known\nAndroid SDK versions, together with helper functions for common\npredicates. Also converts target_sdk_version_ in Runtime to\nuint32_t and cleans up its uses.\n\nTest: m test-art\nChange-Id: Idc6e518c8675068bf952d0256686c88bb0eb833e\n"
    },
    {
      "commit": "85865697ff9fabede3d64ff64cde72727c3fc4c1",
      "tree": "0c67639c4c286149fa3f06f5f412683e39014790",
      "parents": [
        "b321ac28f726a7ed41f277382d85702ffdfbe00f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 30 17:26:20 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 16 11:11:20 2018 +0000"
      },
      "message": "Runtime flags only for fast/slow hiddenapi path\n\nWith more flags being supported in the dex file, stop copying all of\nthem into ArtField/ArtMethod access flags. Instead, store the\ninformation needed to figure out whether to enter the slow path and\nretrieve full access flags from dex or not.\n\nAt the moment, the only runtime flag is kAccPublicApi assigned to all\nclass members on the whitelist.\n\nThe CL also moves hardcoded API membership of intrinsics out of\nArtMethod and into hidden_api.h, and moves ArtMethod::SetIntrinsic\ninto the .cc file.\n\nTest: m test-art\nChange-Id: Ia1cc05060dbc22341768161dfd8697c6158e803a\n"
    },
    {
      "commit": "f50ac103426588d9f7c014ef2d2b9c766f8dc25e",
      "tree": "bac6537c3cd63cc382e24d9b94f0eb64f18ab0a4",
      "parents": [
        "b56e8353020acda1a8285daa11c69f57060cd015"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Oct 17 18:00:06 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Nov 14 16:49:40 2018 +0000"
      },
      "message": "Simplify hidden_api.h logic\n\nRefactor GetMemberAction to return a boolean whether access to a class\nmember should be denied. This also moves StrictMode consumer\nnotification into hidden_api.cc and removes notifications for toasts.\nTests are changed accordingly.\n\nTest: phone boots\nTest: m test-art\nMerged-In: I02902143de0ff91d402ba79c83f28226b1822a6f\nChange-Id: I02902143de0ff91d402ba79c83f28226b1822a6f\n(cherry picked from commit 51995f90adaa0e5047dee56d22f15e4225e70517)\n"
    },
    {
      "commit": "47cd272d15f41109b3dacb21cfa509d18a03e011",
      "tree": "f2693adde283631362b3acc2c573d7280632621f",
      "parents": [
        "6e32b0059b4c3073c601018da3ca315ad568525a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 23 12:50:02 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 30 11:04:29 2018 +0000"
      },
      "message": "Remove HiddenApiAccessFlags, move content to hiddenapi::\n\nHiddenapi code in runtime/ has all code in the hiddenapi:: namespace\ninstead of using a class as a wrapper. Refactor HiddenApiAccessFlags\nfor consistency. Also turn ApiList into `enum class` for stricter\ntype checks.\n\nTest: m test-art\nChange-Id: Ifb3c443ea43860476abd4fd3d4934cd14e2cdcc1\n"
    },
    {
      "commit": "c89b44876fbfeb1dc78cf743ded283e2728f58cb",
      "tree": "7197ce5329b9e1d9d8776abbd768d28587211d91",
      "parents": [
        "98765da6b70d01b8c297e38b76a79502898ef4a6",
        "ccd3ba9b9038bf0d324310642c19d6d2c70a765d"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri May 18 01:40:06 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri May 18 01:40:06 2018 -0700"
      },
      "message": "Merge \"Hidden API: only log what we deny.\" into pi-dev\nam: ccd3ba9b90\n\nChange-Id: I0d1c10cc7f4e3df95a261f370c8951d40c35bfd4\n"
    },
    {
      "commit": "015a7ec45bf874891ae57e972531aa5e72b489ae",
      "tree": "84e69c9f91cb83e348002ecdbca96ae6a7d1cfdf",
      "parents": [
        "d527438aea93e17572e7da9c6e90b4ae3686cac1"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Wed May 16 11:18:10 2018 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu May 17 13:28:07 2018 +0000"
      },
      "message": "Hidden API: only log what we deny.\n\nOnly print a \"Accessing hidden ...\" warning in logcat when we deny access\nto any API, or if the app is debuggable. This reduces log spam.\n\nUpdate test expectations accordingly.\n\nBug: 79914966\nTest: $ art/test.py -b --host -t 674-hiddenapi\nChange-Id: Ic6dfa0dd519a8854e3a40ba19c9a001c0c2a378b\n"
    },
    {
      "commit": "b2086eeea9ed01ee72324ad1b6de7417b397d4c2",
      "tree": "375765b565ae9f5bb5066ed1df524484f910a2e6",
      "parents": [
        "02ff38b8e61ff0e77ce3199b23025a1246233310",
        "8c52b12b46b77b976603d75870017ae38b6ed8a4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 15 01:40:05 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 15 01:40:05 2018 -0700"
      },
      "message": "Merge \"Conditionalize LocAccessToEvent on Android target build.\" am: a128781f9e\nam: 8c52b12b46\n\nChange-Id: I6b668cce57230b483cf34b76d55389a7220fe2b7\n"
    },
    {
      "commit": "8a22907f0c98fc82ec18ef233d3363db8404aab9",
      "tree": "b2c5f59b16e3bbe5d88800c116a32b94416c4294",
      "parents": [
        "9076eb66ad173933d7fbd5ce328d31c7f97fd202"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 10 16:34:14 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 14 17:51:26 2018 +0100"
      },
      "message": "Conditionalize LocAccessToEvent on Android target build.\n\nbug: 64382372\nbug: 79671158\nTest: m\nChange-Id: Ida6d672e1d88d9662718257439762cb916b9c7a0\n"
    },
    {
      "commit": "e9c3bbb6a76c49c30562f886c2e480762408a7ed",
      "tree": "7dd23d32e5413db5a00f44eabd53a32a00b2ca1b",
      "parents": [
        "51dda39549033b3c50a7fce5522ffc81325db54b"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu May 03 11:30:01 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 14 16:10:09 2018 +0100"
      },
      "message": "Do not log \"None\" type API accesses.\n\nThey do not imply any actual access, so logging them just pollutes the\nlogs.\n\nBug: 77517571\nTest: m\nTest: $ adb lolcat -b events | grep sysui_multi_action\n\n(cherry picked from commit f59ca619ebd1d546b86a50503d02fc4b3a1e7868)\n\nChange-Id: I837030862e24a86f65a004763e32d680de4d2feb\n"
    },
    {
      "commit": "1f9d3c3a11cd106246d814ac02b6dafd881f40ad",
      "tree": "13e8e39c02df0b610e505901ed6731ee49334ed9",
      "parents": [
        "bb0454a067389a7a1370d2150bf59efd5aac20a1"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed May 02 16:53:06 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:32:55 2018 +0100"
      },
      "message": "Fix hiddenapi::MemberSignature for proxies\n\nProxy classes are classes generated at runtime which implement\na given interface. Because they do not inherit the associated\ndex file form the interface(s), names/signatures of methods cannot\nbe requested directly, but rather through the original interface\nmethod. Calling getName() on a proxy mirror::Class also triggers\na DCHECK.\n\nThis patch will refer to the interface method when printing the\nsignature instead of the proxy method.\n\nThis fixes the warning printed for the proxy method, printing\neven the class name of the interface instead of the name of the\nproxy class. This is meant to provide useful info to the devloper.\n\nProxies do not define fields except for the synthetic \u0027interfaces\u0027\nand \u0027throws\u0027 fields. Their signatures remain unchanged.\n\nThis patch also continues to check the access flags of the proxy\nmethod for performance reasons. De-proxying the method would\nintroduce two new memory accesses into the fast path. That means\ndeduplication of warnings remains independent between the original\nand proxy methods.\n\nBug: 78327881\nTest: make test-art-host-gtest-hidden_api_test\nMerged-In: I8f334e5e2b62ca38691c94524edaf198eb73574b\nChange-Id: I8f334e5e2b62ca38691c94524edaf198eb73574b\n(cherry picked from commit 73a64f6a2a475c2fe018c7ab1151e3f44d316533)\n"
    },
    {
      "commit": "bb0454a067389a7a1370d2150bf59efd5aac20a1",
      "tree": "1f1c6e58290159dca8f0e946317d16295faf629e",
      "parents": [
        "39512f5ac08fb8b567336d7c3874065fce062ce7"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 26 16:52:11 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:32:46 2018 +0100"
      },
      "message": "Do not overwrite hidden access flags for intrinsics\n\nDeduplicating warnings works by overwriting the runtime access flags\nof a method/field to move it from a greylist to the whitelist. This\ntriggers a CHECK when attempted on an intrinsic as their ordinal bits\nclash with the hidden API access flags. Do not attempt to deduplicate\nfor those.\n\nBug: 78574586\nTest: (cd cts/tests/signature ; ./runSignatureTests.sh)\nMerged-In: I39e555a0f4cd5f662eea348baf4ef72a5827306d\nChange-Id: I39e555a0f4cd5f662eea348baf4ef72a5827306d\n(cherry picked from commit 8a6b2f3353d81d8ceb6826bd7b1dd1987c1a6fee)\n"
    },
    {
      "commit": "39512f5ac08fb8b567336d7c3874065fce062ce7",
      "tree": "71a972a6091ec457a8e94c2b5ffac20bb25c1240",
      "parents": [
        "166546c3579b7a9deb413f8e44ad94b8ed41335b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 23 13:51:16 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:32:37 2018 +0100"
      },
      "message": "Fix race in hidden_api.h\n\nThe hidden API decision logic can dedupe warnings by changing the\naccess flags of a previously warned about method to whitelist, thus\nexiting early on the next attempt to access it. This logic had a race\nin it, because it would decode the flags, make a decision and then\ndecode them again when printing a warning. If another thread changed\nthe flags in between, the warning would say \"whitelist\".\n\nChange the code so that the hidden API flags are decoded only once.\nThis may still result in multiple warnings about the same API, but at\nleast the messages will be consistent.\n\nBug: 78327881\nBug: 64382372\nTest: none\nMerged-In: I956dd56536bdfce492845e6a90fdcbe29c2676b5\nChange-Id: I956dd56536bdfce492845e6a90fdcbe29c2676b5\n(cherry picked from commit b8c6619f16348403c3933d9e425b4b8c80af5389)\n"
    },
    {
      "commit": "1724520ec2788838413b20672f73afa5a00b0d4c",
      "tree": "bac735898ef8f9750fcc1fdf04c4538aa6abed22",
      "parents": [
        "c9c87f63f7809568fbab751c8f07107e6151cced"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Apr 12 13:56:37 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:32:05 2018 +0100"
      },
      "message": "Use tron for logging hidden API accesses.\n\nExample output:\nsysui_multi_action: [757,1391,1392,1,1394,Ldalvik/system/VMRuntime;-\u003egetRuntime()Ldalvik/system/VMRuntime;]\nsysui_multi_action: [757,1391,1392,1,1393,1,1394,Ldalvik/system/VMRuntime;-\u003esetHiddenApiExemptions([Ljava/lang/String;)V]\n\nTest: m\nTest: $ adb shell settings put global \\\nTest:     hidden_api_access_log_sampling_rate 65536\nTest: $ adb lolcat -b events | grep sysui_multi_action | grep 1390\nBug: 77517571\nMerged-In: I23548f902d2ff56ad00534421bf8afa902edaa75\nChange-Id: I23548f902d2ff56ad00534421bf8afa902edaa75\n(cherry picked from commit 2d4d62f2c4cb6f4a659333263a32f7d94c08fc11)\n"
    },
    {
      "commit": "0a054d3e8d00ba4f9841883bf3f8452b8578cf6a",
      "tree": "01a4725fab2c772f7a6748f008432f373428ebb4",
      "parents": [
        "523cd63ce4b705d07e3ebfe04807c24860f20346"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Apr 12 15:43:11 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:31:46 2018 +0100"
      },
      "message": "Add note about tests impacted by kLogAllAccesses flag.\n\nTest: m\nBug: 64382372\nMerged-In: Ief4d0596eeff7ed711556b2a23165871d6e06ac3\nChange-Id: Ief4d0596eeff7ed711556b2a23165871d6e06ac3\n(cherry picked from commit 6d6012ec03d20dd0a450715c41e15d710550f0ac)\n"
    },
    {
      "commit": "85b5a57020dd1a61ae5148ff7c854d4323720afd",
      "tree": "d05a45fb998cd3364d29c524b86dde4172c156ec",
      "parents": [
        "1fd97f29d646770c5e8ddee2e8fe468ffcc9ea2c"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Wed Apr 11 16:08:21 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:31:30 2018 +0100"
      },
      "message": "Log for light grey API accesses.\n\nFor the public Beta 1 build, it seems likely that 3P devs will want to\ncheck the logcat for hidden API accesses by their own apps. So enable\nthis logging for light grey API accesses.\n\nThe option can easily be diabled again later by setting the new flag to\nfalse (which should be done before public release).\n\nBug: 64382372\nTest: m\nTest: Verify logcat output\nMerged-In: Ie610ebcf712a0abc3f1c200510048e2c93b712f7\nChange-Id: Ie610ebcf712a0abc3f1c200510048e2c93b712f7\n(cherry picked from commit 27199e603fb9a80f35976eab63e5f400808598bc)\n"
    },
    {
      "commit": "1fd97f29d646770c5e8ddee2e8fe468ffcc9ea2c",
      "tree": "be2fbd393abfe438c1e734055f1d3d084755e6a6",
      "parents": [
        "9a13d423c71517bc9cb3cf40e97dd0f6f5d5c72c"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Tue Apr 03 15:32:32 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:31:20 2018 +0100"
      },
      "message": "Log an event on hidden API accesses.\n\nThe new event consists of:\n- The type of access (reflection, JNI, etc.)\n- The action taken (warn or deny)\n- The type of member accessed (field or method)\n- Name of the class which defined the member accessed\n- The name of the member\n- The type signature of the member (type of field, or method signature)\n\nThe fully qualified member name is also not included to avoid the overhead\nof building the string. It can be build from the information included.\n\nSimilarly, the package name, version, etc. are not included as they can\nbe inferred from the context when analyzing the event log.\n\nThe event is sampled, according to a sampling rate that can be set by a\nconfiguration option, to reduce log spam.\n\nTest: $ m\nTest: $ adb shell settings put global hidden_api_access_log_sampling_rate 65536\nTest: $ adb lolcat -b events | grep art_hidden_api_access\n\nSample output:\n16796 16796 I art_hidden_api_access: [1,0,Ldalvik/system/VMRuntime;,getRuntime,()Ldalvik/system/VMRuntime;]\n16796 16796 I art_hidden_api_access: [1,2,Ldalvik/system/VMRuntime;,setHiddenApiExemptions,([Ljava/lang/String;)V]\n16796 16796 I art_hidden_api_access: [1,3,Landroid/app/Activity;,mDoReportFullyDrawn,Z]\n(Timestamps have been elided)\n\nBug: 64382372\nBug: 77517571\nMerged-In: I012b2c9fbffbd00ed3219918e7a736a4f7435ec8\nChange-Id: I012b2c9fbffbd00ed3219918e7a736a4f7435ec8\n(cherry picked from commit 73ddda4403c8088a730b8d456de46bb8e0307ed8)\n"
    },
    {
      "commit": "9a13d423c71517bc9cb3cf40e97dd0f6f5d5c72c",
      "tree": "db25de5c310f8c3b14dbaad91bfe3b02a8a4c5b3",
      "parents": [
        "9a81945ca49de3c5b3969cc85278ecbadf238c84"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Mon Apr 09 12:24:55 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:31:05 2018 +0100"
      },
      "message": "Consider whitelist when listing class members.\n\nPreviously, only the enforcement policy was considered when getting\ndeclared fields or members, meaning whitelisted APIs would still not be\ndiscoverable. Fix this by calling hiddenapi::GetMemberAction from within\nIsDiscoverable.\n\nBug: 77787686\nBug: 64382372\nTest: cts/tests/signature/runSignatureTests.sh (with ag/3863796)\nTest: art/test.py --host -t 674-hiddenapi\nMerged-In: I234d274f47f377e3e105c81aae2d49072287992a\nChange-Id: I234d274f47f377e3e105c81aae2d49072287992a\n(cherry picked from commit 64ee8aeaeb70aa2d5d1c3ff57a682a5001869653)\n"
    },
    {
      "commit": "9a81945ca49de3c5b3969cc85278ecbadf238c84",
      "tree": "c5d3e508727d1d2d58d7b29af22fd849c32c0544",
      "parents": [
        "4525e0b62cc808a49b4cd2c826bb52a768779e72"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Apr 05 13:58:55 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:30:55 2018 +0100"
      },
      "message": "Treat hidden API exemptions as whitelist.\n\nThis was a request from android-api-council, effectively to treat\nexempted APIs as equivalent to public APIs. The reasoning for this is\nthat if the support library uses such APIs, we don\u0027t want to confuse\ndevelopers with a warning in the log.\n\nTo avoid examing the exemptions list on all light greylist API accesses,\nalso change the light greylist warn behavior to only print a warning in\nthe log if the app is debuggable. This means:\n- less log spam from light greylist usages\n- debuggable apps still get info about light greylist usage\n\nBug: 64382372\nTest: m\nTest: Boot device\nTest: $ adb shell settings put global hidden_api_blacklist_exemptions \\\nTest:     \"\\\"Landroid/app/Activity;-\u003emWindow:,Landroid/app/Activity;-\u003emCalled:\\\"\"\nTest: Verified with test app \u0026 adb logcat\nMerged-In: Ibada61b591517f7e72c7101aea04ff0ad4beb0ee\nChange-Id: Ibada61b591517f7e72c7101aea04ff0ad4beb0ee\n(cherry picked from commit c8ce5f520d2ba84ff8f393f78ba953ae6d467ca8)\n"
    },
    {
      "commit": "4525e0b62cc808a49b4cd2c826bb52a768779e72",
      "tree": "aba9be998bb3684dff53b4b56c0568fb7187502e",
      "parents": [
        "a8503d9696f37ff66b23016f3374ecbe59774dc6"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 05 16:57:32 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:30:45 2018 +0100"
      },
      "message": "Fix verifier/linker IncompatibleClassChangeError with hidden API\n\nThe verifier and class linker will attempt to find a method with\nthe wrong type if it could not be found with the original type,\ni.e an interface method on a regular class and vice versa.\n\nThis logic did not previously take hidden API restrictions into\naccount and would result in bogus error messages to the user or\ndebug crashes.\n\nBug: 64382372\nBug: 77464273\nTest: art/test.py -r -t 674-hiddenapi\nMerged-In: If8327a70dd73b90249da3d9e505f0c6f89838f8e\nChange-Id: If8327a70dd73b90249da3d9e505f0c6f89838f8e\n(cherry picked from commit 54a99cfcf3d3463404fdf4152523dcc69b8648d7)\n"
    },
    {
      "commit": "a8503d9696f37ff66b23016f3374ecbe59774dc6",
      "tree": "ff05ba35980c063a046553885268fcffee04d535",
      "parents": [
        "d94a00cdf0519ff92dff1ee59a5a42234a391ddd"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Apr 05 16:10:25 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:30:33 2018 +0100"
      },
      "message": "Replace kAllLists policy with kJustWarn.\n\nIt seems pretty unlikely that we\u0027d ever want to disallow access to the\nlight greylist in P, since doing do would break do many apps. We don\u0027t need\nthis policy here as an opt-in for apps now, since the StrictMode work will\nachieve the same thing.\n\nInstead, make a kJustWarn policy which allows access to all APIs, but\nleaves the detection and logging logic in place. This gives us the option\nof disabling enforcement, but still gathering logs to find out which apps\nuse which APIs.\n\nAdd some tests for GetActionFromAccessFlags since the logic is getting\nmore complex.\n\nBug: 77517571\nTest: make test-art-host-gtest-hidden_api_test\nTest: boot device\nMerged-In: I2e6824d7ef53532d0836a2b6b1930cbbed196d0c\nChange-Id: I2e6824d7ef53532d0836a2b6b1930cbbed196d0c\n(cherry picked from commit 68693699d62bc7a2192f51be191ae81defcf4388)\n"
    },
    {
      "commit": "7996b873bf5d2a3fc0aa0bf5058d5c98b1a79b8c",
      "tree": "407f144f7306deeac72a8f3964a396723d90153c",
      "parents": [
        "e6801b10046834285e6fdc3e63a259d0f1149168",
        "73a64f6a2a475c2fe018c7ab1151e3f44d316533"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 04 08:20:22 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 04 08:20:22 2018 +0000"
      },
      "message": "Merge \"Fix hiddenapi::MemberSignature for proxies\" into pi-dev"
    },
    {
      "commit": "73a64f6a2a475c2fe018c7ab1151e3f44d316533",
      "tree": "16ed4d02ec6685220ef2eb80316e5d8665b1bad0",
      "parents": [
        "5bcef17fcee4f535c6d39177b1c55eefea81f854"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed May 02 16:53:06 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu May 03 16:07:58 2018 +0100"
      },
      "message": "Fix hiddenapi::MemberSignature for proxies\n\nProxy classes are classes generated at runtime which implement\na given interface. Because they do not inherit the associated\ndex file form the interface(s), names/signatures of methods cannot\nbe requested directly, but rather through the original interface\nmethod. Calling getName() on a proxy mirror::Class also triggers\na DCHECK.\n\nThis patch will refer to the interface method when printing the\nsignature instead of the proxy method.\n\nThis fixes the warning printed for the proxy method, printing\neven the class name of the interface instead of the name of the\nproxy class. This is meant to provide useful info to the devloper.\n\nProxies do not define fields except for the synthetic \u0027interfaces\u0027\nand \u0027throws\u0027 fields. Their signatures remain unchanged.\n\nThis patch also continues to check the access flags of the proxy\nmethod for performance reasons. De-proxying the method would\nintroduce two new memory accesses into the fast path. That means\ndeduplication of warnings remains independent between the original\nand proxy methods.\n\nBug: 78327881\nTest: make test-art-host-gtest-hidden_api_test\nChange-Id: I8f334e5e2b62ca38691c94524edaf198eb73574b\n"
    },
    {
      "commit": "f59ca619ebd1d546b86a50503d02fc4b3a1e7868",
      "tree": "9d2b262d27f34ccc301849c66b31055b5993bddd",
      "parents": [
        "5bcef17fcee4f535c6d39177b1c55eefea81f854"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu May 03 11:30:01 2018 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu May 03 11:30:01 2018 +0100"
      },
      "message": "Do not log \"None\" type API accesses.\n\nThey do not imply any actual access, so logging them just pollutes the\nlogs.\n\nBug: 77517571\nTest: m\nTest: $ adb lolcat -b events | grep sysui_multi_action\nChange-Id: I66100f25a8f0b3cf7b1a04e5fdd046a1368596a1\n"
    },
    {
      "commit": "5bcef17fcee4f535c6d39177b1c55eefea81f854",
      "tree": "e2f821e5f3f17b20a3c76f3d8956968496cb3bf0",
      "parents": [
        "a5dea30f762266dc87e4160e8139101e9d01cde3"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Tue May 01 14:40:12 2018 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Tue May 01 15:34:58 2018 +0100"
      },
      "message": "Include package name in tron events.\n\nAdd this state to Runtime, together with a getter and setter to it can be\npassed at zygote fork time.\n\nThe package name needs to be included in the event itself, as the PID/UID\nalso present are not used to look up the package name later.\n\nBug: 77517571\nTest: m\nTest: $ adb lolcat -b events | grep sysui_multi_action\nChange-Id: I40ec89152b5ecc9a81555f2e74bc4f4b44b2bcac\n"
    },
    {
      "commit": "8a6b2f3353d81d8ceb6826bd7b1dd1987c1a6fee",
      "tree": "35396b4b038613de8aa322b855a229733d5a0162",
      "parents": [
        "354794b1c59894e549cf175e24a3b8c5d5ec2913"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 26 16:52:11 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 26 17:15:03 2018 +0100"
      },
      "message": "Do not overwrite hidden access flags for intrinsics\n\nDeduplicating warnings works by overwriting the runtime access flags\nof a method/field to move it from a greylist to the whitelist. This\ntriggers a CHECK when attempted on an intrinsic as their ordinal bits\nclash with the hidden API access flags. Do not attempt to deduplicate\nfor those.\n\nBug: 78574586\nTest: (cd cts/tests/signature ; ./runSignatureTests.sh)\nChange-Id: I39e555a0f4cd5f662eea348baf4ef72a5827306d\n"
    },
    {
      "commit": "b8c6619f16348403c3933d9e425b4b8c80af5389",
      "tree": "38642b8514fd9b036731c0a02112ec62e80b3e91",
      "parents": [
        "14c212a44ac9a3ad12025ebf30836129669fa949"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 23 13:51:16 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 23 16:08:12 2018 +0100"
      },
      "message": "Fix race in hidden_api.h\n\nThe hidden API decision logic can dedupe warnings by changing the\naccess flags of a previously warned about method to whitelist, thus\nexiting early on the next attempt to access it. This logic had a race\nin it, because it would decode the flags, make a decision and then\ndecode them again when printing a warning. If another thread changed\nthe flags in between, the warning would say \"whitelist\".\n\nChange the code so that the hidden API flags are decoded only once.\nThis may still result in multiple warnings about the same API, but at\nleast the messages will be consistent.\n\nBug: 78327881\nBug: 64382372\nTest: none\nChange-Id: I956dd56536bdfce492845e6a90fdcbe29c2676b5\n"
    },
    {
      "commit": "178787050e4e0853b9762f86603616963705ffca",
      "tree": "129dbaa0878ed422ee0f742ce38f3c4f018403c3",
      "parents": [
        "c5759ba651478d352d8e2b774a8a7fcb761c7803",
        "6d6012ec03d20dd0a450715c41e15d710550f0ac"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri Apr 20 13:38:22 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 20 13:38:22 2018 +0000"
      },
      "message": "Merge \"Add note about tests impacted by kLogAllAccesses flag.\" into pi-dev"
    },
    {
      "commit": "2d4d62f2c4cb6f4a659333263a32f7d94c08fc11",
      "tree": "718c25ef3dce38c0fd2fee22e2366fc7813f98f1",
      "parents": [
        "9f3a0c3d5171f49111e11a62b6ff746a7838afe0"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Apr 12 13:56:37 2018 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Apr 19 16:37:31 2018 +0100"
      },
      "message": "Use tron for logging hidden API accesses.\n\nExample output:\nsysui_multi_action: [757,1391,1392,1,1394,Ldalvik/system/VMRuntime;-\u003egetRuntime()Ldalvik/system/VMRuntime;]\nsysui_multi_action: [757,1391,1392,1,1393,1,1394,Ldalvik/system/VMRuntime;-\u003esetHiddenApiExemptions([Ljava/lang/String;)V]\n\nTest: m\nTest: $ adb shell settings put global \\\nTest:     hidden_api_access_log_sampling_rate 65536\nTest: $ adb lolcat -b events | grep sysui_multi_action | grep 1390\nBug: 77517571\nChange-Id: I23548f902d2ff56ad00534421bf8afa902edaa75\n"
    },
    {
      "commit": "6d6012ec03d20dd0a450715c41e15d710550f0ac",
      "tree": "35c8afe691c56314a8454fddda4f47d356829ebf",
      "parents": [
        "724e9c8cdb75cd606fe583fd2502783046d62796"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Apr 12 15:43:11 2018 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Apr 12 15:43:38 2018 +0100"
      },
      "message": "Add note about tests impacted by kLogAllAccesses flag.\n\nTest: m\nBug: 64382372\nChange-Id: Ief4d0596eeff7ed711556b2a23165871d6e06ac3\n"
    },
    {
      "commit": "eba8b96ccba687421b44d417b3683b844e2dc1e1",
      "tree": "75c07b194d27d50902863efd7423ea5553c26d3a",
      "parents": [
        "38a50121f8cc73cabec72eef17e320c557c164d9",
        "0dbc8bebd026a3a4d70fefd72bb0851a18f0a617"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 12 07:40:37 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 12 07:40:37 2018 +0000"
      },
      "message": "Merge \"Revert \"Update hidden API membership of intrinsics\"\" into pi-dev"
    },
    {
      "commit": "5933cdb50ce9b4f91321a068eda1b73dce2bc2ac",
      "tree": "39a227e83fd23ef4c2e5ce013780256b0e911e15",
      "parents": [
        "47b6ace4d75e69b28deca89c285d6365d4c4afff",
        "27199e603fb9a80f35976eab63e5f400808598bc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 12 03:29:14 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 12 03:29:14 2018 +0000"
      },
      "message": "Merge \"Log for light grey API accesses.\" into pi-dev"
    },
    {
      "commit": "0dbc8bebd026a3a4d70fefd72bb0851a18f0a617",
      "tree": "4c50c959e85cfffa4217fde74cb805c038d09c36",
      "parents": [
        "e1954f30cbf70ed4430b9ca7b85b5d52fdc42251"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 11 20:45:16 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 11 20:45:16 2018 +0000"
      },
      "message": "Revert \"Update hidden API membership of intrinsics\"\n\nThis reverts commit e1954f30cbf70ed4430b9ca7b85b5d52fdc42251.\n\nReason for revert: Breaks all internal tests.\n\nBug: 64382372\nBug: 77733081\nBug: 72430785\nChange-Id: If6138ee1a3d73059b20c582c0dfd388ff07507a2\n"
    },
    {
      "commit": "27199e603fb9a80f35976eab63e5f400808598bc",
      "tree": "5f6e55c770b3e642a0cf714b12eabab1da7f549a",
      "parents": [
        "75e46053d2083dcd197fee56abb86b4b5ec10449"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Wed Apr 11 16:08:21 2018 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Wed Apr 11 18:12:54 2018 +0000"
      },
      "message": "Log for light grey API accesses.\n\nFor the public Beta 1 build, it seems likely that 3P devs will want to\ncheck the logcat for hidden API accesses by their own apps. So enable\nthis logging for light grey API accesses.\n\nThe option can easily be diabled again later by setting the new flag to\nfalse (which should be done before public release).\n\nBug: 64382372\nTest: m\nTest: Verify logcat output\nChange-Id: Ie610ebcf712a0abc3f1c200510048e2c93b712f7\n"
    },
    {
      "commit": "29d8d0b4c49c339bfc57d5b4ff74ee8a0657c640",
      "tree": "302c35c77dba7ee6a0b7705d67a81570e9428f95",
      "parents": [
        "ba4f1a253e1eec424c79ae2ab99123b687856a21",
        "e1954f30cbf70ed4430b9ca7b85b5d52fdc42251"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 11 16:58:49 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 16:58:49 2018 +0000"
      },
      "message": "Merge \"Update hidden API membership of intrinsics\" into pi-dev"
    },
    {
      "commit": "ba4f1a253e1eec424c79ae2ab99123b687856a21",
      "tree": "a6d5461c26c89c83d1b1d9e3fab6ee90cdeb08e0",
      "parents": [
        "75e46053d2083dcd197fee56abb86b4b5ec10449",
        "73ddda4403c8088a730b8d456de46bb8e0307ed8"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Wed Apr 11 16:45:06 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 16:45:06 2018 +0000"
      },
      "message": "Merge \"Log an event on hidden API accesses.\" into pi-dev"
    },
    {
      "commit": "e1954f30cbf70ed4430b9ca7b85b5d52fdc42251",
      "tree": "b33c9cf9ee824751fb4df6dfcb0ea2bf1911ac9a",
      "parents": [
        "75e46053d2083dcd197fee56abb86b4b5ec10449"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 06 14:02:59 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 11 14:22:51 2018 +0100"
      },
      "message": "Update hidden API membership of intrinsics\n\nAn update to Doclava fixes incorrect signatures of methods with\nvarargs. This changes the blacklisting of some of the intrinsics.\nUpdate their list.\n\nBecause only target boot class path dex files have the hidden API\naccess flags, tests need to be special cased and intrinsics\nconsidered whitelisted under such conditions. This special case\nshould be removed as soon as hidden API access flags are also\napplied to tests running with core image / dex files.\n\nBug: 64382372\nBug: 77733081\nBug: 72430785\nTest: make test-art\nChange-Id: I321c9fba0cb649fcac973bf1d7b1cb24a5f2359e\n"
    },
    {
      "commit": "73ddda4403c8088a730b8d456de46bb8e0307ed8",
      "tree": "f07d4b781f15f0750292523029e1dcf27a7324b3",
      "parents": [
        "5665c97b421166f08df08cbd028d757a21000ff5"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Tue Apr 03 15:32:32 2018 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Wed Apr 11 13:14:50 2018 +0100"
      },
      "message": "Log an event on hidden API accesses.\n\nThe new event consists of:\n- The type of access (reflection, JNI, etc.)\n- The action taken (warn or deny)\n- The type of member accessed (field or method)\n- Name of the class which defined the member accessed\n- The name of the member\n- The type signature of the member (type of field, or method signature)\n\nThe fully qualified member name is also not included to avoid the overhead\nof building the string. It can be build from the information included.\n\nSimilarly, the package name, version, etc. are not included as they can\nbe inferred from the context when analyzing the event log.\n\nThe event is sampled, according to a sampling rate that can be set by a\nconfiguration option, to reduce log spam.\n\nTest: $ m\nTest: $ adb shell settings put global hidden_api_access_log_sampling_rate 65536\nTest: $ adb lolcat -b events | grep art_hidden_api_access\n\nSample output:\n16796 16796 I art_hidden_api_access: [1,0,Ldalvik/system/VMRuntime;,getRuntime,()Ldalvik/system/VMRuntime;]\n16796 16796 I art_hidden_api_access: [1,2,Ldalvik/system/VMRuntime;,setHiddenApiExemptions,([Ljava/lang/String;)V]\n16796 16796 I art_hidden_api_access: [1,3,Landroid/app/Activity;,mDoReportFullyDrawn,Z]\n(Timestamps have been elided)\n\nBug: 64382372\nBug: 77517571\nChange-Id: I012b2c9fbffbd00ed3219918e7a736a4f7435ec8\n"
    },
    {
      "commit": "64ee8aeaeb70aa2d5d1c3ff57a682a5001869653",
      "tree": "8fa21a4fd614fc1204d91ad6f04c051950ef4251",
      "parents": [
        "709e67c8ae5d6d2e4d781ec6505c7502f2d7f5fd"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Mon Apr 09 12:24:55 2018 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Tue Apr 10 14:14:41 2018 +0100"
      },
      "message": "Consider whitelist when listing class members.\n\nPreviously, only the enforcement policy was considered when getting\ndeclared fields or members, meaning whitelisted APIs would still not be\ndiscoverable. Fix this by calling hiddenapi::GetMemberAction from within\nIsDiscoverable.\n\nBug: 77787686\nBug: 64382372\nTest: cts/tests/signature/runSignatureTests.sh (with ag/3863796)\nTest: art/test.py --host -t 674-hiddenapi\nChange-Id: I234d274f47f377e3e105c81aae2d49072287992a\n"
    },
    {
      "commit": "f5f1f80aa6c1c10c61b6723bbc52d5aec2eba2b9",
      "tree": "6a83730a41748fcfd6e42be0f31ec7243d631495",
      "parents": [
        "8c5de0f16444441c23a5ae807e4dd5cc0dd586a3"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Apr 03 15:23:46 2018 +0100"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 06 10:08:56 2018 -0700"
      },
      "message": "Revert^2 \"hidden_api: Call back into libcore on hidden api detection\"\"\n\nThis reverts commit bbe60d58496991c16e2943e174e26ab8a096b3d0.\n\nThis CL deviates from the approach of the original change. Instead of\ncalling back every time ShouldBlock.. was called, we explicitly call\nback in cases where it\u0027s safe to do so.\n\nNote that we only call back on reflective accesses for now, and not\nlink time accesses. Coverage for the latter will be added in a follow up\nchange.\n\nBug: 73896556\nTest: test-art-host\nTest: art/test.py --host -t test-art-host-run-test-debug-prebuild-\\\n   interpreter-no-relocate-ntrace-gcstress-checkjni-picimage-pictest-\\\n   ndebuggable-no-jvmti-cdex-fast-674-hiddenapi64\n\n(cherry picked from commit e453a8dd87731f4b37b86a1284f7655d86c2a809)\n\nMerged-In: Ie99ac268a083af167accbdf955639da068bea950\nChange-Id: I76860519d40b87032dbb8db38b04fcf79ef09723\n"
    },
    {
      "commit": "8c5de0f16444441c23a5ae807e4dd5cc0dd586a3",
      "tree": "a0753accc18ccc000280e18327c57f7352e2ace5",
      "parents": [
        "a9660f1dc13b4d595b3f89b06dd5b70eeee18c43"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Apr 03 14:13:13 2018 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 06 10:08:21 2018 -0700"
      },
      "message": "Revert \"hidden_api: Call back into libcore on hidden api detection\"\n\nThis reverts commit 757a9d0a2e97d43bafeb8a95cc3c51102be99586.\n\nReason for revert: Test failures with \"art/test.py --host -t test-art-host-run-test-debug-prebuild-interpreter-no-relocate-ntrace-gcstress-checkjni-picimage-pictest-ndebuggable-no-jvmti-cdex-fast-674-hiddenapi64\"\nBug: 73896556\nTest: art/test.py --host -t test-art-host-run-test-debug-prebuild-interpreter-no-relocate-ntrace-gcstress-checkjni-picimage-pictest-ndebuggable-no-jvmti-cdex-fast-674-hiddenapi64\n\n(cherry picked from commit 9e68ade384abdb15714054feaed06cb38eb5432f)\n\nMerged-In: Ib2ad89c16ad797c37f6212bc7e5c0b6b92ce56b5\nChange-Id: I11fa9b76da07162fde8773eb05cfc6a6514e0ca1\n"
    },
    {
      "commit": "a9660f1dc13b4d595b3f89b06dd5b70eeee18c43",
      "tree": "fba8c4742d8f866b8342794542436ab3cd3f32a8",
      "parents": [
        "9c85c79af0e5fe181df97dfc2801f4999aef77eb"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Mar 29 10:21:47 2018 +0100"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 06 10:07:49 2018 -0700"
      },
      "message": "hidden_api: Call back into libcore on hidden api detection\n\nThis change also removes some unnecessary RI specific logic for\nbuilding src-ex since it isn\u0027t required.\n\nBug: 73896556\nTest: run-test --host 674-hiddenapi\nTest: StrictModeTest\n\nCo-Authored-By: Andreas Gampe \u003cagampe@google.com\u003e\n\n(cherry picked from commit 757a9d0a2e97d43bafeb8a95cc3c51102be99586)\n\nMerged-In: Ib2b4dfad55c5d829630bfe2adb4a468124bea61c\nChange-Id: Ida0943990aa1b3bad0c674bc31ff46766ae493a6\n"
    },
    {
      "commit": "cc4123914fbd6b458fb6af09efdb9a18da59412e",
      "tree": "5a910af78152ea590f39d938c7a508932c89103e",
      "parents": [
        "a5dd33c399fe989f85fdc8541f4b0da582cbc0fc",
        "c8ce5f520d2ba84ff8f393f78ba953ae6d467ca8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 06 13:45:32 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 06 13:45:32 2018 +0000"
      },
      "message": "Merge \"Treat hidden API exemptions as whitelist.\" into pi-dev"
    },
    {
      "commit": "a5dd33c399fe989f85fdc8541f4b0da582cbc0fc",
      "tree": "03232192fe75f9adaeddd3243495b484a8f8d730",
      "parents": [
        "93b728f263ba271ab4029d8b19176efc32c17ee2",
        "68693699d62bc7a2192f51be191ae81defcf4388"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri Apr 06 12:29:06 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 06 12:29:06 2018 +0000"
      },
      "message": "Merge \"Replace kAllLists policy with kJustWarn.\" into pi-dev"
    },
    {
      "commit": "c8ce5f520d2ba84ff8f393f78ba953ae6d467ca8",
      "tree": "c5cf50991104288bd5771a227d52651fa11d039d",
      "parents": [
        "93b728f263ba271ab4029d8b19176efc32c17ee2"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Apr 05 13:58:55 2018 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri Apr 06 12:12:53 2018 +0100"
      },
      "message": "Treat hidden API exemptions as whitelist.\n\nThis was a request from android-api-council, effectively to treat\nexempted APIs as equivalent to public APIs. The reasoning for this is\nthat if the support library uses such APIs, we don\u0027t want to confuse\ndevelopers with a warning in the log.\n\nTo avoid examing the exemptions list on all light greylist API accesses,\nalso change the light greylist warn behavior to only print a warning in\nthe log if the app is debuggable. This means:\n- less log spam from light greylist usages\n- debuggable apps still get info about light greylist usage\n\nBug: 64382372\nTest: m\nTest: Boot device\nTest: $ adb shell settings put global hidden_api_blacklist_exemptions \\\nTest:     \"\\\"Landroid/app/Activity;-\u003emWindow:,Landroid/app/Activity;-\u003emCalled:\\\"\"\nTest: Verified with test app \u0026 adb logcat\nChange-Id: Ibada61b591517f7e72c7101aea04ff0ad4beb0ee\n"
    },
    {
      "commit": "54a99cfcf3d3463404fdf4152523dcc69b8648d7",
      "tree": "971f3e2070018e4fb14fc30d6aa3ee23927e032e",
      "parents": [
        "b658cd77b69bd039795509356900eface235cc93"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 05 16:57:32 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 05 17:13:19 2018 +0100"
      },
      "message": "Fix verifier/linker IncompatibleClassChangeError with hidden API\n\nThe verifier and class linker will attempt to find a method with\nthe wrong type if it could not be found with the original type,\ni.e an interface method on a regular class and vice versa.\n\nThis logic did not previously take hidden API restrictions into\naccount and would result in bogus error messages to the user or\ndebug crashes.\n\nBug: 64382372\nBug: 77464273\nTest: art/test.py -r -t 674-hiddenapi\nChange-Id: If8327a70dd73b90249da3d9e505f0c6f89838f8e\n"
    },
    {
      "commit": "68693699d62bc7a2192f51be191ae81defcf4388",
      "tree": "de906601afb81606cb33d98e7eaba3ed10d08bcc",
      "parents": [
        "b658cd77b69bd039795509356900eface235cc93"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Apr 05 16:10:25 2018 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Apr 05 16:23:47 2018 +0100"
      },
      "message": "Replace kAllLists policy with kJustWarn.\n\nIt seems pretty unlikely that we\u0027d ever want to disallow access to the\nlight greylist in P, since doing do would break do many apps. We don\u0027t need\nthis policy here as an opt-in for apps now, since the StrictMode work will\nachieve the same thing.\n\nInstead, make a kJustWarn policy which allows access to all APIs, but\nleaves the detection and logging logic in place. This gives us the option\nof disabling enforcement, but still gathering logs to find out which apps\nuse which APIs.\n\nAdd some tests for GetActionFromAccessFlags since the logic is getting\nmore complex.\n\nBug: 77517571\nTest: make test-art-host-gtest-hidden_api_test\nTest: boot device\nChange-Id: I2e6824d7ef53532d0836a2b6b1930cbbed196d0c\n"
    },
    {
      "commit": "e453a8dd87731f4b37b86a1284f7655d86c2a809",
      "tree": "9320404a6fa9e381cd60e645e76b85a1f81035cc",
      "parents": [
        "7efc4f2941d53901272f2c415e4e41e50f2c31d4"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Apr 03 15:23:46 2018 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Apr 05 09:08:53 2018 +0100"
      },
      "message": "Revert^2 \"hidden_api: Call back into libcore on hidden api detection\"\"\n\nThis reverts commit bbe60d58496991c16e2943e174e26ab8a096b3d0.\n\nThis CL deviates from the approach of the original change. Instead of\ncalling back every time ShouldBlock.. was called, we explicitly call\nback in cases where it\u0027s safe to do so.\n\nNote that we only call back on reflective accesses for now, and not\nlink time accesses. Coverage for the latter will be added in a follow up\nchange.\n\nBug: 73896556\nTest: test-art-host\nTest: art/test.py --host -t test-art-host-run-test-debug-prebuild-\\\n   interpreter-no-relocate-ntrace-gcstress-checkjni-picimage-pictest-\\\n   ndebuggable-no-jvmti-cdex-fast-674-hiddenapi64\n\nChange-Id: Ie99ac268a083af167accbdf955639da068bea950\n"
    },
    {
      "commit": "9e68ade384abdb15714054feaed06cb38eb5432f",
      "tree": "5659aa522815a24915e77711dc1d9d19defadad8",
      "parents": [
        "757a9d0a2e97d43bafeb8a95cc3c51102be99586"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Apr 03 14:13:13 2018 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Apr 03 14:22:26 2018 +0000"
      },
      "message": "Revert \"hidden_api: Call back into libcore on hidden api detection\"\n\nThis reverts commit 757a9d0a2e97d43bafeb8a95cc3c51102be99586.\n\nReason for revert: Test failures with \"art/test.py --host -t test-art-host-run-test-debug-prebuild-interpreter-no-relocate-ntrace-gcstress-checkjni-picimage-pictest-ndebuggable-no-jvmti-cdex-fast-674-hiddenapi64\"\nBug: 73896556 \nTest: art/test.py --host -t test-art-host-run-test-debug-prebuild-interpreter-no-relocate-ntrace-gcstress-checkjni-picimage-pictest-ndebuggable-no-jvmti-cdex-fast-674-hiddenapi64\n\nChange-Id: Ib2ad89c16ad797c37f6212bc7e5c0b6b92ce56b5\n"
    },
    {
      "commit": "757a9d0a2e97d43bafeb8a95cc3c51102be99586",
      "tree": "e61b8f7cd80e6447427096bcfba3e3b523ef9c91",
      "parents": [
        "80f5fe5fa4fd4044c409b39db0f6b1b77542ce6e"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Mar 29 10:21:47 2018 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Mar 29 18:35:59 2018 +0100"
      },
      "message": "hidden_api: Call back into libcore on hidden api detection\n\nThis change also removes some unnecessary RI specific logic for\nbuilding src-ex since it isn\u0027t required.\n\nBug: 73896556\nTest: run-test --host 674-hiddenapi\nTest: StrictModeTest\n\nCo-Authored-By: Andreas Gampe \u003cagampe@google.com\u003e\nChange-Id: Ib2b4dfad55c5d829630bfe2adb4a468124bea61c\n"
    },
    {
      "commit": "80f5fe5fa4fd4044c409b39db0f6b1b77542ce6e",
      "tree": "5659aa522815a24915e77711dc1d9d19defadad8",
      "parents": [
        "be4aa299da3c547c1854b934ba7f6b42c1e4130b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 28 16:23:24 2018 -0700"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Mar 29 08:38:02 2018 +0100"
      },
      "message": "ART: Refactor hidden_api\n\nAdd hidden_api.cc, move handling of hidden fields there. Also\nremove an unnecessary include that meant hidden_api was imported\ninto too many compilation units, and fix transitive includes.\n\nBug: 73896556\nTest: mmma art\nTest: m test-art-host\nChange-Id: Ie47e11abcea68e326c410bab215ebbfbf049051b\n(cherry picked from commit aa12001baf69c124ab3901c13385aaa43fc76987)\n"
    },
    {
      "commit": "aa12001baf69c124ab3901c13385aaa43fc76987",
      "tree": "9cedf9714284f6a25dc40e8746aae3a719e86de4",
      "parents": [
        "3be56a02c6311d2a751f8a7410843199f9f4c9cc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 28 16:23:24 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 28 17:32:16 2018 -0700"
      },
      "message": "ART: Refactor hidden_api\n\nAdd hidden_api.cc, move handling of hidden fields there. Also\nremove an unnecessary include that meant hidden_api was imported\ninto too many compilation units, and fix transitive includes.\n\nBug: 73896556\nTest: mmma art\nTest: m test-art-host\nChange-Id: Ie47e11abcea68e326c410bab215ebbfbf049051b\n"
    }
  ]
}
