)]}'
{
  "log": [
    {
      "commit": "3a97d308dad3ac657c60a094fa61d6b8869ad883",
      "tree": "6c894879df0149456d8d16e9f9a65e6151498660",
      "parents": [
        "02db072528792ab5ebb4ab4757a739b4dbd5617d"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Tue Aug 11 13:32:23 2020 +0100"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Thu Aug 13 13:42:10 2020 +0000"
      },
      "message": "Rename classes in art hiddenapi tests\n\nUse more inclusive terminology (go/hiddenapi-list-renaming).\n\nBug: 162500436\nTest: art/test/testrunner/testrunner.py --target --64 -t 674-hiddenapi\nTest: art/test/testrunner/testrunner.py --target --64 -t 999-redefine-hiddenapi\nChange-Id: I9a5139b04196187cbb063c9d122047a8fbc455ce\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": "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": "6442eaf8b21c85d60648f7a7498a6aeb299af861",
      "tree": "9a0fc7a9484e22e341b765b97adb9c517f78ddca",
      "parents": [
        "e30457c0b52caba839b21a03af56200df7a975e2"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Wed Jan 08 16:55:56 2020 +0000"
      },
      "committer": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Fri Jan 17 15:59:09 2020 +0000"
      },
      "message": "Harden hidden api checks.\n\nAlso walk past j.l.r in stackwalk for Hidden API. This is a fix for an\nasan test failure (691-hiddenapi-proxy) introduced in https://r.android.com/1208005.\nInstead of always walking past j.l.r during the stackwalk, this CL adds an\nexception for j.l.r.Proxy.\n\nBug: 142365358\nTest: art/test/testrunner/testrunner.py --target --64 -t674-hiddenapi\nTest: art/test/testrunner/run_build_test_target.py -j110 art-asan\nChange-Id: I98dd46d7070dd2dd4318398d2a5d2ae4ece94015\n"
    },
    {
      "commit": "9406c43b2de9b94b6d70f82474840eccd7699dc7",
      "tree": "5bc44e726bf2a8d0a6e37279056c3f226154afc6",
      "parents": [
        "08d064fb6d02006730710a683e84a4cc54229c67"
      ],
      "author": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Tue Jan 14 15:40:09 2020 +0000"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Jan 14 21:37:43 2020 +0000"
      },
      "message": "Revert \"Harden hidden api checks.\"\n\nRevert submission 1203343-hidden-api-check-hardening\n\nReason for revert: art-asan target failure\nReverted Changes:\nI5af9f79f5: Add change id for hidden api check hardening\nIfc8d39ba2: Harden hidden api checks.\n\nChange-Id: Ifb824ff00cb78f03cd388c56dd7411f5c51bb531\n"
    },
    {
      "commit": "3bf51634271a5cb25eadc3ffc092233663253a41",
      "tree": "e96e45d7ace51f97468ecdac21f754c59eee4ce1",
      "parents": [
        "135b5c8fe69b27c5059a9f042c394a9d438c9788"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Wed Jan 08 16:55:56 2020 +0000"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Tue Jan 14 14:04:46 2020 +0000"
      },
      "message": "Harden hidden api checks.\n\nAlso walk past j.l.r in stackwalk for Hidden API.\n\nBug: 142365358\nTest: art/test/testrunner/testrunner.py --target --64 -t674-hiddenapi\nChange-Id: Ifc8d39ba23808216bbb8dd21e3262d330f2c87f1\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": "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": "eef7757941f2681814462b0f55d29a562c0200da",
      "tree": "647d552b640745f6ca101bee382866fc0aeedae6",
      "parents": [
        "9c422cc4ef2f1825c60a43a1e8d770f270b076e7"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri May 18 13:32:09 2018 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri May 18 13:32:37 2018 +0100"
      },
      "message": "Fix test 674-hiddenapi when debuggable.\n\nThe runtime warns for debuggable apps even when access to an API is\nallowed. Update the expectations of this test accordingly.\n\nThis requires exposing Runtime::IsJavaDebuggable to the java code so\nit knows what to expect.\n\nTest: $ art/test.py -b --host --debuggable -t 674-hiddenapi\nBug: 79914966\nChange-Id: I339f205d7153cf7b1c12dc06813c768608921684\n"
    },
    {
      "commit": "9b5ddff6f74073a2b45669eff8379ed796dbf488",
      "tree": "35678faec5526810a7066a421fbfa712a8795122",
      "parents": [
        "8d2befc479f59f10421066e1586b23d075b16348"
      ],
      "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": "Fri May 18 08:32:32 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\n\n(cherry picked from commit 46b26278907301dcc27010b397d1a4bd1cd53b33)\n\nMerged-In: Ic6dfa0dd519a8854e3a40ba19c9a001c0c2a378b\nChange-Id: Ieda769d51e53ec4b7712d0bb1bf76e1a95d2120f\n"
    },
    {
      "commit": "523cd63ce4b705d07e3ebfe04807c24860f20346",
      "tree": "630d6e5befd64fc6517669c7113da9d8e9100cff",
      "parents": [
        "85b5a57020dd1a61ae5148ff7c854d4323720afd"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Apr 12 14:30:11 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:31:38 2018 +0100"
      },
      "message": "Fix test after ag/3881475.\n\nA side effect of warning for light greylist accesses is that we also check\nthe API exemptions list for then, changing the return value for such APIs\nfrom AllowButWarn to Allow.\n\nBug: 64382372\nTest: art/test.py --host -t 674-hiddenapi\nMerged-In: I45f50e5e2ab37b1c8adb09f198e268390dd84e55\nChange-Id: I45f50e5e2ab37b1c8adb09f198e268390dd84e55\n(cherry picked from commit 724e9c8cdb75cd606fe583fd2502783046d62796)\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": "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": "9574f493cb072466b7b491de97c381e6c2b8b639",
      "tree": "b7f8990b96dc29df2e38bfc480bd8ac62bcdf59b",
      "parents": [
        "b143d262c523f022499b211d5c2b1fbd9f8130cc"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Apr 10 10:20:32 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Apr 11 11:43:35 2018 +0100"
      },
      "message": "ART: Walk past j.l.i in stackwalk for Hidden API\n\nBug: 77631986\nTest: art/test.py --host 674-hidden-api\n\n(cherry picked from change 198a27e92a529115a2db2a17ec11d8b52bd6a315)\n\nChange-Id: I2364036a6b7bd8bb06d2e456fb22f4db9c6cce21\nMerged-In: I2e3e0399765da7f554259fe14247b45e42110ef4\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": "5c7e618a14d638109648094ba37bb3843279ad11",
      "tree": "40c163ceb6a90246e360731310169604fd809ab7",
      "parents": [
        "fc66129b478d49f493b8262f81f8813a5f41459e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Mar 21 14:45:15 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Mar 21 14:45:47 2018 +0000"
      },
      "message": "Revert \"Warn on overriding of hidden methods\"\n\nThis reverts commit fc66129b478d49f493b8262f81f8813a5f41459e.\n\nReason for revert: This was also reverted in internal\n\nBug: 64382372\nMerged-In: I69bdc0fb79831b5ce546205fd40a3300d039de71\nChange-Id: Ice53e73eae7313ae6c72369a1b2e984fb978f2ab\n"
    },
    {
      "commit": "fc66129b478d49f493b8262f81f8813a5f41459e",
      "tree": "305594db27eaf39336175f958ee447536d9bf5d9",
      "parents": [
        "8ce3bfaf1da2139a70b67e6b53c0110489801d40"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Mar 14 13:57:27 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Mar 15 12:54:42 2018 +0000"
      },
      "message": "Warn on overriding of hidden methods\n\nWe could prevent apps from overriding hidden methods in the same\nmanner they cannot override a package-private method - by creating\na separate vtable entry for the child method. For now, start by\nprinting a warning when a hidden method is being overridden but do\nnot change the semantics.\n\nBug: 64382372\nTest: art/test.py -r -t 674-hiddenapi\nChange-Id: I9d5bfa6b833a4c0f5aaffa5f82dbe9b1e1f03f1f\n"
    },
    {
      "commit": "8ce3bfaf1da2139a70b67e6b53c0110489801d40",
      "tree": "40c163ceb6a90246e360731310169604fd809ab7",
      "parents": [
        "722093c305de5646759318fdeedc022c08a6723c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Mar 12 18:01:18 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Mar 15 12:54:27 2018 +0000"
      },
      "message": "Refactor enforcement of hidden API policy when linking\n\nHidden API enforcement when linking was sub-optimal for two reasons:\na) it was based on Class::CanAccessMember and would throw\nIllegalAccessError instead of NoSuchMethodError/NoSuchFieldError, and\nb) no warnings were printed in the code path.\n\nThis patch moves the checks into ClassLinker\u0027s resolution routines and\nuses a code path which prints warning.\n\nBug: 64382372\nTest: art/test.py -r -t 674-hiddenapi\nChange-Id: I8a0fbdca58ce5803c1588b644a3e627a0a9a6504\n"
    },
    {
      "commit": "ee7d2fd16d47b54d7fb5b9d5ec772fbc315faf4b",
      "tree": "844ed2998f78723aa7909ce0a7b19995c34f0bd9",
      "parents": [
        "5a61bb7969347ffe8e0bf4f4dff841cc6c21ed85"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Jan 20 17:25:23 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 25 10:40:56 2018 +0000"
      },
      "message": "Start warning on hidden API greylist\n\nInsert checks into reflection, JNI and the verifier to print\na warning when greylisted methods are invoked and fields accessed.\nWe do this on actual access, because reflection allows to list\nall methods/fields and simply listing a greylisted member would\nprint too many false positives.\n\nIssuing a warning also sets a boolean flag in Runtime. This will\nbe made accessible through VMRuntime to the framework which will\nissue a Toast on Activity start.\n\nThe change was tested with internal microbenchmarks of reflection\nand those flagged one issue. Microbenchmark invoking a field getter\nhas regressed by 35%. We will profile this benchmark in detail and\nconsider options for improvement. Bug b/72482474 was created to track\nprogress.\n\nTest: art/test.py -b -r -t 674-hiddenapi\nBug: 64382372\nBug: 72482474\nChange-Id: I323244935e9091a2f8d012385cefaac6b1fe3777\n"
    },
    {
      "commit": "5a61bb7969347ffe8e0bf4f4dff841cc6c21ed85",
      "tree": "44c266c97576dcbdc931cf94d81774614a2c762b",
      "parents": [
        "d02784e17c20c91a50dcb10522351f4937e250ff"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jan 19 16:59:46 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 25 10:11:11 2018 +0000"
      },
      "message": "Start enforcing hidden API blacklist\n\nInsert checks into reflection, JNI and Class::CanAccessMember to\nmake blacklisted hidden APIs undiscoverable.\n\nThe change was tested with internal microbenchmarks of reflection\nand those showed no measurable performance impact.\n\nTest: art/test.py -b -r -t 674-hiddenapi\nBug: 64382372\nChange-Id: I9e39804b837ae9ffeba926f2a5b1e8e9986c472b\n"
    },
    {
      "commit": "11b67b201adb173d5f6f1b7a3fd337fda91e200f",
      "tree": "90870c2ec271002ab36cb57484c185076e424f3a",
      "parents": [
        "8714435022757567aa078601f54244b8339bbed1"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 18 16:41:40 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 24 14:21:50 2018 +0000"
      },
      "message": "Set up a test for hidden API enforcement\n\nSubmitting the test first for easier review. The expected outcome\nis that all currently class members are discoverable and accessible.\nFuture CLs will implement the enforcement and change the expected\noutcome.\n\nThe test itself has two JARs - parent declares classes and child\ntries to access them using reflection, JNI and static linking.\nThe test driver (\"Main\" class) loads these JARs as follows:\n(a) both with class loaders\n(b) parent in boot class path, child with class loader\n(c) both in boot class path\n\nIn (a), there should be no enforcement as the JAR does not have\nhidden API access flags (would not load otherwise). In situation(b),\nchild should only be allowed to access parent\u0027s public, non-hidden\nmembers. And in (c), parent contains hidden API access flags but\nchild is exempt from access checks.\n\nBug: 64382372\nTest: art/test.py -b -r -t 674-hiddenapi\nChange-Id: I19f5f7c30c0c7913703209817d36006b161c6778\n"
    }
  ]
}
