)]}'
{
  "log": [
    {
      "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": "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": "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"
    }
  ]
}
