)]}'
{
  "log": [
    {
      "commit": "323e8c616e12f98eb12b39b486aafe988dba202d",
      "tree": "789318a70be1a4b5a1b057a7d75f228b0ea79c2e",
      "parents": [
        "82e347bd4e0afa7ab3895c197cc36242cf169db1"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Aug 20 11:13:58 2019 -0700"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Aug 20 12:10:46 2019 -0700"
      },
      "message": "Fix out-of-bounds read in ApiList::Dump.\n\nIn this loop i ranges from DomainApi::kMin to DomainApi:kMax, while API\nnames in kDomainApiNames are stored at indexes starting from zero, so we need\nto subtract DomainApi::kMin before indexing into kDomainApiNames. Found by\nrunning CTS under HWASAN with the new global instrumentation support.\n\nBug: 139749928\nChange-Id: Ib35c4494e7652cfaf84e07ff362210d67a50fba2\n"
    },
    {
      "commit": "6ae463f33c71805ca3f8572513bb507c472bcf6d",
      "tree": "499753903b999eceb926015f8791ae70121b3d5c",
      "parents": [
        "d112012197d2a6b4c96a710737b35d50d75098aa"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed May 01 11:55:01 2019 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed May 01 11:55:01 2019 +0100"
      },
      "message": "hiddenapi, class2greylist: Add support for greylist-max-q\n\nTest: set maxTargetSdk\u003dQ on an API, compile, check hiddenapi-flags.csv\nChange-Id: I05b3418d76bdb2ef34a717e199abdda73f73ffd7\n"
    },
    {
      "commit": "370a06477c418a2887528a593601a99c2ab828cd",
      "tree": "2ca2ce4611e0e66936a22500f9e0c1d32a7e64dd",
      "parents": [
        "60ee778ea7cff778f95fafe63138f336def9fb18"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Fri Mar 01 17:48:27 2019 +0000"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Fri Mar 08 16:22:09 2019 +0000"
      },
      "message": "Differentiate system and test apis in whitelist\n\n@SystemApi and @TestApi entries in the whitelist can now be\ndifferentiated from the rest of the public apis.\n\nTest: m test-art-host-gtest-hiddenapi_test\nChange-Id: I2929cd5d48b760af92fc3cc7061039da9fe94f67\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": "62a4bcf3fe11e6800f5d451b41003c135358ed6a",
      "tree": "afa2a9caad5eec12d8cd22cd3ea67b2a065ddbc2",
      "parents": [
        "ed9e0c9a5462bbb805000cb9483e334cda867b48"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Dec 13 17:00:06 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 21 09:48:59 2019 +0000"
      },
      "message": "hiddenapi: Produce CSV for `list` command\n\nThe `hiddenapi` build tool is used for generating a list of all public\nand private API. The output is currently two text files, each with\na list of API signatures belonging to the corresponding API set\n(public/private). Refactor the code to produce a single CSV file\ninstead in anticipation of other categories of APIs, namely\n@CorePlatformApi.\n\nAlso change class2greylist, which is a consumer of the public API text\nfile, to parse and filter the CSV file instead.\n\nBug: 119068555\nTest: compiles, hiddenapi-flags.csv unchanged\nTest: atest class2greylisttest\nChange-Id: I4ac9d96c0d10a87795c6a779f0231269c99959a3\n"
    },
    {
      "commit": "80d16289df2ec243737063e4f9d092ac3a7cbb10",
      "tree": "65ee57a867a58f5ddaf42747bf49fef987c57356",
      "parents": [
        "e701de908bf5cb9375f15a3dbd113206aa582e7e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Nov 01 09:55:09 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Nov 29 16:42:14 2018 +0000"
      },
      "message": "hiddenapi: Introduce greylist-max-p\n\nAdd a new hiddenapi::ApiList constant for a greylist only accessible to\napps targeting SDK version \u003c Q.\n\nThe patch also removes SdkVersion::kP_MR1 which is invalid.\n\nTest: m, phone boots\nTest: m test-art\nTest: atest art/tools/class2greylist/test\nChange-Id: I48f3d1a4703166168fd8e0d1c3337aa2957b66ce\n"
    },
    {
      "commit": "91690d37ad9d947e4e72b5622b9fbf6a9391274d",
      "tree": "729fac9e3c27017b8199bcd509c5f9bfd2de3473",
      "parents": [
        "f2970cd870948a6ee1c8ecd30c9c3147d05aa0be"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sun Nov 04 18:07:23 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Nov 29 16:42:10 2018 +0000"
      },
      "message": "hiddenapi: Convert API lists to a flags CSV file\n\nAccess flags for hiddenapi have been managed as a series of test files,\none file per flag. This requries too many changes every time a flag is\nchanged or a new flag is introduced. Change `hiddenapi` and `veridex`\nto expect flags as a CSV file in the format:\n\n  \u003capi signature\u003e,\u003cflag1\u003e,...,\u003cflagN\u003e\n\nTest: m, phone boots\nTest: m test-art\nTest: m appcompat\nChange-Id: Iffa64b36ffc5524779d5f57c3c6f0c0e84bfc606\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"
    }
  ]
}
