)]}'
{
  "log": [
    {
      "commit": "2ac4d5cc0354b6c7acf66734aba450a4ea805832",
      "tree": "8e1f6bee8c04310de6f797913aad8022195db833",
      "parents": [
        "683fe3ea0e7abdf7d66db875b8233f340de72254",
        "17abc1fd9601e23a29a332e2281f801f20aac2ee"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Feb 08 04:26:35 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 08 04:26:35 2019 -0800"
      },
      "message": "Merge \"Add TEST_MAPPING for api specifications\" am: 6bb71b0322 am: cd2586709b\nam: 17abc1fd96\n\nChange-Id: I76724e470d2de7b34900a5d21b6dd3b24ee6124d\n"
    },
    {
      "commit": "507cbc4e5836f583e78527d0f631fc58d8596ecd",
      "tree": "990105c1bd484ffe5e71ae4fd820744901ed1119",
      "parents": [
        "6606b7724700c8be28762a70376a39c854b73df1"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Feb 04 15:43:20 2019 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Feb 06 13:57:42 2019 +0000"
      },
      "message": "Add TEST_MAPPING for api specifications\n\nChanges to the various api directories will run the\ntests which make use of the API specification in those directories.\n\nCould not include CtsSystemApiSignatureTestCases as it is broken on\ngit_master because of bug 116632058.\n\nBug: 123254057\nTest: atest\nChange-Id: I1fe4ca498cbd0393aba7cf4c1386a6325ace7937\n"
    },
    {
      "commit": "a07b052eb4e210329a9f81e6783baed66533143f",
      "tree": "8c3b2883e0ace6a6af4ff2a77c777ef4faeb57bf",
      "parents": [
        "2bfd202ec50bff7e94d178a63e35b77009ea915b"
      ],
      "author": {
        "name": "Sudheer Shanka",
        "email": "sudheersai@google.com",
        "time": "Sat Jan 26 10:40:42 2019 -0800"
      },
      "committer": {
        "name": "Sudheer Shanka",
        "email": "sudheersai@google.com",
        "time": "Sat Jan 26 11:19:34 2019 -0800"
      },
      "message": "Add Cursor.{set,get}NotificationUris.\n\nBug: 120879205\nTest: manual\nTest: atest cts/tests/tests/database/src/android/database/cts/AbstractCursorTest.java\nChange-Id: If3be228dc6b08ea58d24c9209822f9d8c2348082\n"
    },
    {
      "commit": "fe6aeaf2a39ed957f23b0737d141ade6ba6035e5",
      "tree": "0e3939af1b7b30cebaea8f4e10a41c9862f759b5",
      "parents": [
        "25b54058c0e3bb7e0630650f750092f7ccd2289f"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Jan 22 16:58:56 2019 +0100"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Jan 22 16:58:56 2019 +0100"
      },
      "message": "API Compatibility: Fix incompatible abstract methods on Context\n\nBug: 123221743\nTest: m api-stubs-docs-check-last-released-api\nChange-Id: I6d34c86582633d696464c8207a7d631be6d31693\n"
    },
    {
      "commit": "68ea0c3c1375c9a14a0851b90899f36b5d355403",
      "tree": "cdc2c9e5d6b93f789d2be836729def1e19dc20e8",
      "parents": [
        "401e3d4c842ce86569de4477138137dc07a6aa6f"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Wed Dec 26 19:55:07 2018 -0800"
      },
      "committer": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Sat Jan 19 12:07:50 2019 -0800"
      },
      "message": "Update signature files to the new format\n\nThe new format is described in tools/metalava/FORMAT.md.\n\nFixes: 116589402 Switch signature files over to the v2 format\nFixes: 112626813 Drop \"synchronized\" modifier from the signature format\nFixes: 122358225 Omit overriding methods that only differ in final [...]\nFixes: 73088715 API Review: Need doclava to output nullability\nFixes: 79739773 API Review: Metalava enforcing constants are constant\nExempt-From-Owner-Approval: Large-scale tooling change\nTest: make sdk, make update-api, make checkapi\nChange-Id: Ia248aece5250e84e47c815c601133b698bf644c2\n"
    },
    {
      "commit": "8752dedb760cd270e2ecc8f9cd3bb4f00f55e23f",
      "tree": "76efbd9785ea1853a9b288b5738a988d0da7935f",
      "parents": [
        "bc6e433ae488b4ad807c1503a53155a3259fd0b8"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Wed Dec 26 19:55:07 2018 -0800"
      },
      "committer": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Sat Jan 19 07:22:55 2019 -0800"
      },
      "message": "Update signature files to the new format\n\nThe new format is described in tools/metalava/FORMAT.md.\n\nFixes: 116589402 Switch signature files over to the v2 format\nFixes: 112626813 Drop \"synchronized\" modifier from the signature format\nFixes: 122358225 Omit overriding methods that only differ in final [...]\nFixes: 73088715 API Review: Need doclava to output nullability\nFixes: 79739773 API Review: Metalava enforcing constants are constant\nExempt-From-Owner-Approval: Large-scale tooling change\nTest: make sdk, make update-api, make checkapi\nChange-Id: I8314f4e7099fa92e4f8ed7d283ccf836cc9a84a0\nMerged-In: Ia248aece5250e84e47c815c601133b698bf644c2\n"
    },
    {
      "commit": "f8732bb2dbb8316a0b5394d7b4a783dd45fe42a4",
      "tree": "8d9a2b7c097a298119da544dbb48c99b48666009",
      "parents": [
        "be8881da3ba92405522f80fad1d93459e899dea2"
      ],
      "author": {
        "name": "Sundong Ahn",
        "email": "sundongahn@google.com",
        "time": "Thu Nov 08 19:06:45 2018 +0900"
      },
      "committer": {
        "name": "Sundong Ahn",
        "email": "sundongahn@google.com",
        "time": "Thu Jan 17 09:43:25 2019 +0900"
      },
      "message": "Change the impl lib name of java_sdk_library\n\nThe impl lib name of java_sdk_library is changed to {module_name}.jar\ninstead of {module_name}.impl.jar\nandroid.test.mock.impl is removed from stubs_defaults.\nRepetitiveTest class is added to public API in android.test.base\n\nBug: 110404779\nTest: m -j\nChange-Id: I5dd7f3a28bc22136b4e921de3eb5a3e77e5fc75f\nMerged-In: I5dd7f3a28bc22136b4e921de3eb5a3e77e5fc75f\n(cherry picked from commit b7540bf1a3f7e7f041ea8b3d3a3a23b15cab187c)\n"
    },
    {
      "commit": "b7540bf1a3f7e7f041ea8b3d3a3a23b15cab187c",
      "tree": "58623209e274069aa6b8f38878bf51eb8e0f3e7a",
      "parents": [
        "78db121770e6619661ff195f33ec0ff3673219f5"
      ],
      "author": {
        "name": "Sundong Ahn",
        "email": "sundongahn@google.com",
        "time": "Thu Nov 08 19:06:45 2018 +0900"
      },
      "committer": {
        "name": "Sundong Ahn",
        "email": "sundongahn@google.com",
        "time": "Wed Jan 16 12:20:55 2019 +0900"
      },
      "message": "Change the impl lib name of java_sdk_library\n\nThe impl lib name of java_sdk_library is changed to {module_name}.jar\ninstead of {module_name}.impl.jar\nandroid.test.mock.impl is removed from stubs_defaults.\nRepetitiveTest class is added to public API in android.test.base\n\nBug: 110404779\nTest: m -j\nChange-Id: I5dd7f3a28bc22136b4e921de3eb5a3e77e5fc75f\n"
    },
    {
      "commit": "5e6d1173b5b6ad1d477c325cefd1a58d10318ffe",
      "tree": "9bf86dc46c7877fe24ec8ff139d1e13ca49ed2b3",
      "parents": [
        "4900d0e4fff43169915d644b62cea969794e4583",
        "79bdaeb839ff148cba42be992a1955504a8671c2"
      ],
      "author": {
        "name": "Sundong Ahn",
        "email": "sundongahn@google.com",
        "time": "Thu Jan 10 23:06:44 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jan 10 23:06:44 2019 -0800"
      },
      "message": "Merge \"Switch to metalava\" am: 806939b1b1 am: 97466ef516\nam: 79bdaeb839\n\nChange-Id: Ia3849d35e85b66c049922fb092ca6e41f6c9aab4\n"
    },
    {
      "commit": "3e6812ad4984a3a6ca3d18ee2aea3f69d25e4e5d",
      "tree": "b9a588e877f0fce3c30ef69799504f7bccd4ebcf",
      "parents": [
        "2e1d80d4e7014adbdb7c2b562599c95cf2e21a55"
      ],
      "author": {
        "name": "Sundong Ahn",
        "email": "sundongahn@google.com",
        "time": "Wed Jan 09 16:12:24 2019 +0900"
      },
      "committer": {
        "name": "Sundong Ahn",
        "email": "sundongahn@google.com",
        "time": "Wed Jan 09 16:12:24 2019 +0900"
      },
      "message": "Switch to metalava\n\nandroid.test.mock, com.android.location.provider and\ncom.android.mediadrm.signer libraries are change to using metalava\ninstead of doclava.\n\nTest: m -j\nBug: 117127012\nChange-Id: I82e838ab60110698e1c0ea8e567467a1b32707ce\n"
    },
    {
      "commit": "fe7668ab4d1903df21aaf96514d595d9ebb63cc5",
      "tree": "31cc118dcda75b86bdd4a888a9e338b88e5db41e",
      "parents": [
        "3b1b9f7c6df57d897886128dfe5c25fe453b6b32"
      ],
      "author": {
        "name": "Sudheer Shanka",
        "email": "sudheersai@google.com",
        "time": "Sun Dec 16 15:52:33 2018 -0800"
      },
      "committer": {
        "name": "Sudheer Shanka",
        "email": "sudheersai@google.com",
        "time": "Sat Jan 05 19:01:40 2019 -0800"
      },
      "message": "Add Downloads.Impl.COLUMN_MEDIASTORE_URI \u0026 DownloadColumns.Description.\n\nEntries from DownloadProvider are added to MediaStore Downloads\ncollection. COLUMN_MEDIASTORE_URI will be used to track corresponding\nentries in MediaProvider. We can\u0027t re-use COLUMN_MEDIAPROVIDER_URI\nfor this purpose because it is updateable by apps.\n\nBug: 120876251\nTest: atest DownloadProviderTests\nTest: atest cts/tests/app/src/android/app/cts/DownloadManagerTest.java\nTest: atest MediaProviderTests\nTest: atest cts/tests/tests/provider/src/android/provider/cts/MediaStore*\nChange-Id: Ifd252c54f4ee739a31be2866896efac6696a088e\n"
    },
    {
      "commit": "b29f145505660b9f0ccc9f1f36373aaf37b50035",
      "tree": "310c613e459d3af28da8a65083f04c28ff70355b",
      "parents": [
        "b88c797713c594404c0c7aef03a8edbe9ae3b3b5"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Sep 12 16:38:15 2018 +0100"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Dec 31 12:38:07 2018 +0000"
      },
      "message": "Add RollbackManagerService\n\nThis change adds RollbackManagerService as a new system service for\nmanaging apk level rollbacks.\n\nTo work properly this requires additional selinux policy changes. Fails\ngracefully in case of selinux denials, until we have a chance to sort\nout the proper selinux policy.\n\nBug: 112431924\nBug: 116512606\nTest: atest RollbackTest, with selinux enforcement off.\nTest: atest CtsPermission2TestCases:PermissionPolicyTest\nChange-Id: Id72aae9c4d8da9aaab3922ec9233ba335bc0198f\n"
    },
    {
      "commit": "633a13e2fa8f378d523d4ae209dc573c66db8cb1",
      "tree": "12ee3167af570b76906f9c49c7666105503fba2e",
      "parents": [
        "dfeea6047748925a5c7481ff54b1d672bd91bd2b"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Dec 07 12:00:45 2018 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sat Dec 08 11:25:13 2018 -0700"
      },
      "message": "Extract common methods into ContentInterface.\n\nExisting APIs that accept a ContentResolver are too restrictive when\nthe caller has their own ContentProviderClient already bound and\nconfigured, so we\u0027re in the market for a solution to open those\nexisting APIs to accept a wider range of inputs.\n\nThe solution we\u0027ve come up with is to introduce a super-interface\nwhich contains the common ContentProvider APIs, and then make\nContentProvider, ContentResolver, and ContentProviderClient all\nimplement that interface for consistency.\n\nAfter this change lands, we can then safely relax existing APIs to\naccept this new ContentInterface, offering a clean path to solving\nthe problem outlined above.\n\nBug: 117635768\nTest: atest android.content.cts\nTest: atest android.provider.cts\nChange-Id: Ic5ae08107f7dd3dd23dcaec2df40c16543e0d86e\nExempted-From-Owner-Approval: keep tests working\n"
    },
    {
      "commit": "0980c7f092c8c0a30518c69e669378c1f13666e5",
      "tree": "5a8ad2c568837c37c947070b5e53c34a4f855c28",
      "parents": [
        "50f84e882913d3d1e140fa42d82fa046abc92eab"
      ],
      "author": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Wed Nov 28 23:55:15 2018 +0900"
      },
      "committer": {
        "name": "Jaewan Kim",
        "email": "jaewan@google.com",
        "time": "Thu Nov 29 12:48:38 2018 +0900"
      },
      "message": "AML: Make Context#getOpPackageName() public\n\nBug: 119748678\nTest: build\nChange-Id: I79f7d057df5b61fa661987d36f20d24825eb1e5b\n"
    },
    {
      "commit": "a631d56cf37917121f26c5e70a67f1730840ef68",
      "tree": "4ea65c72521a472436e000ac9577fa5f0b888bc1",
      "parents": [
        "f66699ae165ce30f1cda1cfd704027a75bf457d2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 20 15:58:15 2018 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Nov 21 09:13:21 2018 -0800"
      },
      "message": "Add new API to performing grouping and ordering of bindings.\n\nThis will allow apps to better manage many isolated processes,\ntelling the system how they are grouped together (so should be\nmanaged as one related entity within the LRU cache) and fine-tune\nthe ordering within that group.\n\nThe API is not yet tested...  though in theory it is implemented.\nBut the implementation done for that also fixes a *lot* of problems\nwith activity LRU management that, even without groups, should\nmake the ordering of processes in the LRU list much more consistently\nmatch how recently the user has interacted with it.\n\nAlso clean up some of the new dumpsys output in the activity manager:\nmove the new sections to before the process output (so it is still\neasy to see the process state at the end of the output), and add and\ndocument the command line options for controlling them.  And add a\nnew \"lru\" section that gives a clear view of what is going on with\nthe raw LRU list.\n\nAn upcoming change will add tests for the new grouping functionality,\nand probably some fixes resulting from that.\n\nTest: atest CtsAppTestCases:ServiceTest\nBug: 111434506\nChange-Id: I1f6b6b9de66ccde1573e1a0e9615e8c5f8e6c0d7\n"
    },
    {
      "commit": "27b4d94a07ac00367ad12b667c983a89153537d8",
      "tree": "6e7786697585c7cbefe705c79ddc83f7eeb85109",
      "parents": [
        "59805434784886d79c6bdb8253b0aae5351be8d3"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Nov 12 15:01:40 2018 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 13 16:03:02 2018 -0800"
      },
      "message": "Implement naming of isolated service bindings.\n\nThis allows clients to run multiple instances of the same\nmanifest service declaration.  It only works for isolated\nservices, to avoid too much abuse temptation.  This is part\nof the \"Chrome site isolation\" work, to allow chrome to have\nmany more render processes running and help it manage them.\n\nBug: 111434506\nTest: atest CtsAppTestCases:ServiceTest\nChange-Id: I22e65758678a07075ed32ed6463082ddf846d3a4\n"
    },
    {
      "commit": "02f2a315d7f7748a080c8e2c79e96a3afde3dae1",
      "tree": "cb6f53352c002828cc221b77c2a84b4caa89aa41",
      "parents": [
        "6e7ece7e4daa59dad2009e4a2318de6826edfe9e",
        "5281b6b4c06f3b6b3d63ed9877101229645df9a9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 16 00:20:52 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 16 00:20:52 2018 +0000"
      },
      "message": "Merge \"Add Context.getDisplayId() to avoid possible IPC\""
    },
    {
      "commit": "5281b6b4c06f3b6b3d63ed9877101229645df9a9",
      "tree": "d9281480b32b481c2e5fee4efc6bb265150757d3",
      "parents": [
        "2d3972e2f1b86c33adeb5d9bee953cebac4b20df"
      ],
      "author": {
        "name": "Yohei Yukawa",
        "email": "yukawa@google.com",
        "time": "Mon Oct 15 07:38:25 2018 +0800"
      },
      "committer": {
        "name": "Yohei Yukawa",
        "email": "yukawa@google.com",
        "time": "Mon Oct 15 07:38:25 2018 +0800"
      },
      "message": "Add Context.getDisplayId() to avoid possible IPC\n\nContextImpl has an internal rule that when ContextImpl#mDisplay is\nnull the Context is associated with the default display.  The problem\nis that, as discussed in Bug 117709581, when ContextImpl#mDisplay is\nnull ContextImpl#getDisplay() tries to get some non-null Display\nobject by making an IPC to the system server, which is redundant when\nthe display ID is the only thing that the caller wants to know.\n\nBy having an @hide method Context.getDisplayId(), we can ensure that\ndisplay ID can be obtained without any IPC.  This enables us to\nre-submit my CL [1] that aimed to instantiate InputMethodManager (IMM)\nfor each display but then got reverted due to a performance regression\n(Bug 117434607).\n\nThere should be no developer-observable behavior change.\n\n [1]: I7242e765426353672823fcc8277f20ac361930d7\n      c53d78e992694e471ddaae73f9a30977db9cdb75\n\nFix: 117712745\nTest: atest FrameworksCoreTests:android.content.ContextTest\nTest: prebuilts/checkstyle/checkstyle.py -f \\\n      frameworks/base/core/tests/coretests/src/android/content/ContextTest.java\nChange-Id: I2534530a5ce90e2620c5039d793a6454a0a1e154\n"
    },
    {
      "commit": "389cb6f54a5a5bb8dea540f57a3a8ac3c3c1c758",
      "tree": "8e14ff1d81b08098a5a98b700cb5438376928195",
      "parents": [
        "20c6621d823a343734332e6adbd8e0ea129ead75"
      ],
      "author": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Mon Oct 01 18:20:39 2018 -0700"
      },
      "committer": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Fri Oct 12 16:02:53 2018 -0700"
      },
      "message": "Suspending app can customize intercepting dialog\n\nThe suspending app has more context about why a particular app was\nsuspended by the user, but we do not want to delegate the interception\nof the suspended activity out of the system.\nHence allowing it further customizations to the dialog to make\nit clearer.\n\nTest: atest com.android.server.pm.SuspendDialogInfoTest \\\ncom.android.server.pm.SuspendPackagesTest \\\ncom.android.server.pm.PackageUserStateTest \\\ncom.android.server.pm.PackageManagerSettingsTests \\\ncom.android.server.am.ActivityStartInterceptorTest\n\natest GtsSuspendAppsPermissionTestCases GtsSuspendAppsTestCases\n\nBug: 112486945\nBug: 113150060\nChange-Id: If9f4d14587a2b75bb572e7984a90e300a2c72d16\n"
    },
    {
      "commit": "ccf9672f6493add8274e800e814c0f85c9c04d3b",
      "tree": "df908d424f9b644f935c84161b1c54da8d66c81d",
      "parents": [
        "7b532b7370d2f19a08fc373ba0e95663d96cbfd6"
      ],
      "author": {
        "name": "Sundong Ahn",
        "email": "sundongahn@google.com",
        "time": "Mon Sep 17 15:23:14 2018 +0900"
      },
      "committer": {
        "name": "Sundong Ahn",
        "email": "sundongahn@google.com",
        "time": "Thu Oct 04 14:27:37 2018 +0900"
      },
      "message": "Add the metalava_enabled property\n\nThe new property is added for supporting metalava. But some sdk library\ncannot use metalava. So \"metalava_enabled: false\" is added to these\nmodules.\n\nTest: make -j\nTest: checkapi\nBug: 117127012\nMerged-In: Ib65f3cd73dac0ac6ed64afeca6546d99739e4424\nChange-Id: Ib65f3cd73dac0ac6ed64afeca6546d99739e4424\n(cherry picked from commit 558e702be0eb2de76bb45303c99322561d73216c)\n"
    },
    {
      "commit": "558e702be0eb2de76bb45303c99322561d73216c",
      "tree": "c1cf53825977e2c350c63d324247f9985a92d7fc",
      "parents": [
        "2623812b096c5aa6b9e1ef7e3d82b85b791b3b05"
      ],
      "author": {
        "name": "Sundong Ahn",
        "email": "sundongahn@google.com",
        "time": "Mon Sep 17 15:23:14 2018 +0900"
      },
      "committer": {
        "name": "Sundong Ahn",
        "email": "sundongahn@google.com",
        "time": "Tue Oct 02 01:50:09 2018 +0000"
      },
      "message": "Add the metalava_enabled property\n\nThe new property is added for supporting metalava. But some sdk library\ncannot use metalava. So \"metalava_enabled: false\" is added to these\nmodules.\n\nTest: make -j\nTest: checkapi\nBug: 117127012\nChange-Id: Ib65f3cd73dac0ac6ed64afeca6546d99739e4424\n"
    },
    {
      "commit": "a4b3022c51dd25bc169dcedeaa9e562cea740bf8",
      "tree": "76984550c6d61c6da13082f4aea1566608d34c74",
      "parents": [
        "dfa94e444c7e1b1afeb499670c1603b4915bc109"
      ],
      "author": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Fri Aug 31 09:30:18 2018 -0700"
      },
      "committer": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Mon Sep 10 16:46:30 2018 -0700"
      },
      "message": "Make PackageManager#arePermissionsIndividuallyControlled system-api\n\nThe PermissonController is going to become a mainline module, hence it\nhas to compile against @SystemApi.\n\nPackageManager#arePermissionsIndividuallyControlled controls how certain\npermissions are presented in the UI, hence Permission controller needs\nto read it. The value of this API comes from a config option.\n\nBug: 110953302\nTest: Built\nChange-Id: If78b1bb594af0c85e92abf70ae8315e7ba3f31fa\n"
    },
    {
      "commit": "e933cedf837d39a713ef44cadfb07f2c1d863652",
      "tree": "9b32fba18cacc61fb6d7b6145a73183a9e50f2ba",
      "parents": [
        "c96760f4f30279bdddcbdc83398bc069740970f1"
      ],
      "author": {
        "name": "Sundong Ahn",
        "email": "sundongahn@google.com",
        "time": "Tue Jul 31 16:54:41 2018 +0900"
      },
      "committer": {
        "name": "Sundong Ahn",
        "email": "sundongahn@google.com",
        "time": "Wed Aug 29 12:22:59 2018 +0900"
      },
      "message": "Build android.test.* with java_sdk_library\n\nandroid.test.* are built with java_sdk_library and api files are added\nby running \"make update-api\".\n\nandroid.test.base_static is created for allowing to use\nandroid.test.base as a static library.\n\nBug:77577799\nTest: make -j\nTest: make checkapi\nTest: make checkapi fails with a random change in the txt file\nTest: adb shell cmd package list libraries |\\\n      grep android.test.*\n      And check the android.test.* libraries\n\nMerged-In: Ia27612657532e50b077a9c55dbef59ee3ec04b8a\nChange-Id: Ia27612657532e50b077a9c55dbef59ee3ec04b8a\n"
    },
    {
      "commit": "f0764b5c46ae69210baeed28d2523f7f26ff8811",
      "tree": "8de55088f845936e1f6c65a0db650c83f760fcbb",
      "parents": [
        "78567088a85008825009df4d9b858e7e070e0a6d"
      ],
      "author": {
        "name": "Aurimas Liutikas",
        "email": "aurimas@google.com",
        "time": "Wed Aug 22 12:55:04 2018 -0700"
      },
      "committer": {
        "name": "Aurimas Liutikas",
        "email": "aurimas@google.com",
        "time": "Wed Aug 22 13:13:07 2018 -0700"
      },
      "message": "Deprecate Resources#getMovie()\n\nMovie class has been deprecated, deprecate the getMovie as well.\n\nBug: 113054577\nTest: None\nChange-Id: Ic217adc002c7cfbe795e855689af1a58447b7d39\n"
    },
    {
      "commit": "f24779c8c7a3f647f65944e02425b751e580b393",
      "tree": "b7918d6a1a8466b841d915a0628b2e64bc36797f",
      "parents": [
        "c58fdf35e71e31f8e3ad9d472a9aead8002d2f24"
      ],
      "author": {
        "name": "Sundong Ahn",
        "email": "sundongahn@google.com",
        "time": "Tue Jul 31 16:54:41 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Aug 16 12:16:28 2018 +0900"
      },
      "message": "Build android.test.* with java_sdk_library\n\nandroid.test.* are built with java_sdk_library and api files are added\nby running \"make update-api\".\n\nandroid.test.base_static is created for allowing to use\nandroid.test.base as a static library.\n\nBug:77577799\nTest: make -j\nTest: make checkapi\nTest: make checkapi fails with a random change in the txt file\nTest: adb shell cmd package list libraries |\\\n      grep android.test.*\n      And check the android.test.* libraries\n\nChange-Id: Ia27612657532e50b077a9c55dbef59ee3ec04b8a\n"
    },
    {
      "commit": "6c644e620d541e52d3f4e32fddc689aa5e5350e6",
      "tree": "fa932fbf9d77fd0c721a775d6aa776184568ccdf",
      "parents": [
        "148cd8c0bced9bcd72beb2e93a086fde9dcfef9e"
      ],
      "author": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Wed Jul 18 15:41:24 2018 -0700"
      },
      "committer": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Tue Jul 24 11:45:34 2018 -0700"
      },
      "message": "Always review permissions before \u003cM app is started the first time\n\nThis splits the\n- review permissions\n- individually control permissions\n- consent to manage wireleess (wifi + bluetooth)\nproperties.\n\nAlmost all code cares only for the first and it is now always true.\nHence a lot of code can be simplified.\n\nBug: 110431654\nTest: atest PermissionsHostTest\n      started pre-M app\nChange-Id: I733cd476ccd0bf5eaa59e9a9506db34f57c6baee\n"
    },
    {
      "commit": "f8d22dec8788d18c5b37adf3b4710691d5d347ed",
      "tree": "4c4134a5698ec16786423ad7430dec38ae36b1b0",
      "parents": [
        "d7647c1b6685dbf03ff096fd73424163f2468e4e",
        "6e3c86c8ed7a1bcfcbc63bbded0043d4b4efbe10"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 11 11:56:34 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 11 11:56:34 2018 +0100"
      },
      "message": "resolve merge conflicts of 6e3c86c8ed7a1bcfcbc63bbded0043d4b4efbe10 to stage-aosp-master\n\nBUG: None\nTest: I solemnly swear I tested this conflict resolution.\nChange-Id: Ide3c4e229b47e4242cacafc04b70d8b392712cc8\n"
    },
    {
      "commit": "6e3c86c8ed7a1bcfcbc63bbded0043d4b4efbe10",
      "tree": "f30e99989abc761bb86b5256519d649aef86c5d6",
      "parents": [
        "b4919259ab3a5caf367ca05798618c6785606182",
        "89c6432dbf33f7d1d1ce537d2a4e64406f0030fb"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 11 09:18:15 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 11 09:18:15 2018 +0000"
      },
      "message": "Merge \"Compile android.test.*.stubs into dex\""
    },
    {
      "commit": "a977a37c85c4ea5fb785310e0ae78d4d0aa58528",
      "tree": "6515bcca981019ce80f6f14d662bd6ffdfd46408",
      "parents": [
        "0ae3baae77a2d690edc43afd9d24bd73ed2e8bfa",
        "c7f9e053eca9a0c2053ea98442a59a1010afa363"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jul 10 09:45:03 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 10 09:45:03 2018 -0700"
      },
      "message": "Merge \"Mark installable jars with installable: true\" am: 1035f48f61 am: 19609a7993\nam: c7f9e053ec\n\nChange-Id: I5934f14ced4a89fa234d75fde733aae1f102cc7a\n"
    },
    {
      "commit": "19609a7993f30794e79f0f828b06c3ff96fdd20f",
      "tree": "051454c4aca935162bede26e26cb7da6433982ee",
      "parents": [
        "06aa142232b118f4e5c4d7b0889c000164bcb4ea",
        "1035f48f612f259cfa4b6433a5d62cda7355f4ff"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jul 10 09:12:46 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 10 09:12:46 2018 -0700"
      },
      "message": "Merge \"Mark installable jars with installable: true\"\nam: 1035f48f61\n\nChange-Id: Ia3176e68ddd7cfdb8351b2a0ea95efc9dd94d922\n"
    },
    {
      "commit": "89c6432dbf33f7d1d1ce537d2a4e64406f0030fb",
      "tree": "a15ae6ccd1a760cb64a65b0c8d55074148601d59",
      "parents": [
        "ef941e192a16d57cf58dc42f4befb50d87f62042"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jun 28 10:23:50 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jul 10 13:37:05 2018 +0000"
      },
      "message": "Compile android.test.*.stubs into dex\n\nAdjust the build rules of android.test.*.stubs packages to also\nproduce a jar with dex files. This will be used by the `hiddenapi`\ntool to categorize the boot class path equivalents as public API.\n\nBug: 79409988\nTest: m android.test.base.stubs ; check javalib.jar contains dex\nMerged-In: I1d0850b18044c559ea4b9893d929dc45884b32c3\nChange-Id: Ief28cd5e6d0cdd58f22fab751e0173ccf8c69a0c\n"
    },
    {
      "commit": "a2c457fd2a7a805c4150b495965b8ee019f0ee43",
      "tree": "9e0d097d1e22811bb968fd5cc48710c18cb8e288",
      "parents": [
        "e7325a018922402599c5594ce9518f63c46e710e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jun 28 10:23:50 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jul 10 14:34:52 2018 +0100"
      },
      "message": "Compile android.test.*.stubs into dex\n\nAdjust the build rules of android.test.*.stubs packages to also\nproduce a jar with dex files. This will be used by the `hiddenapi`\ntool to categorize the boot class path equivalents as public API.\n\nBug: 79409988\nTest: m android.test.base.stubs ; check javalib.jar contains dex\nChange-Id: I1d0850b18044c559ea4b9893d929dc45884b32c3\n"
    },
    {
      "commit": "a12c0f506cf509e1220f0095010350181c31c367",
      "tree": "7598f2489c53f952940acf254840648450a4b6f2",
      "parents": [
        "f40f05229c81971720ae16d20a2e629f142f39a7"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jun 27 11:00:11 2018 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jun 27 11:49:44 2018 -0700"
      },
      "message": "Mark installable jars with installable: true\n\nMost jars don\u0027t need to be installed on the device.  Instead of\nusing java_library and java_library_static to distinguish between\nthem make java_library and java_library_static identical and use\ninstallable: true to identify the few jars that need to be dexed\nand installed on the device.\n\nBug: 110885583\nTest: m checkbuild\nChange-Id: I579da7c1a712ec4fb49e288e7f3ab369cb75baf4\n"
    },
    {
      "commit": "84dad9565fd054280f057819e0f62bfe1537edbc",
      "tree": "5aaae43dde03f85eefa56cf9bbd91b51d247f3a2",
      "parents": [
        "d27a9f4465c7159b046a3087b7c4d1fad3c2a7c5"
      ],
      "author": {
        "name": "Tyler Gunn",
        "email": "tgunn@google.com",
        "time": "Thu Apr 26 14:43:31 2018 -0700"
      },
      "committer": {
        "name": "Tyler Gunn",
        "email": "tgunn@google.com",
        "time": "Fri May 18 14:37:43 2018 -0700"
      },
      "message": "Require READ_CALL_LOG permission to see phone numbers in phone state.\n\nIncoming and outgoing call phone numbers are visible in the phone state\nbroadcast and via the PhoneStateListener.  To enhance user privacy, change\nto require the READ_CALL_LOG permission in order to receive the call\nphone numbers.\n\nThis means to see phone numbers:\n1. android.intent.action.PHONE_STATE - requires READ_PHONE_STATE and\nREAD_CALL_LOG permission.\n2. PhoneStateListener#onCallStateChanged - now required READ_CALL_LOG\npermission.\n\nTo support this new behavior, added sendBroadcastAsUserMultiplePermissions\nmethod to context to allow sending the broadcast to all users while\nrequiring the two permissions.\n\nBug: 78650469\nTest: Created PHONE_STATE broadcast receiver in test app and verified that\nwhen no permissions are granted, the phone number is empty for incoming\nand outgoing calls.\nTest: Granted Phone state permission to test app and verified that phone\nnumber is not populated.\nTest: Granted test app read call log permission and verified that phone\nnumber is populated.\nTest: Created PhoneStateListener in test app and verified that when no\npermissions are granted, phone number is empty for incoming and outgoing.\ncalls.\nTest: Granted read call log permission to test app and verified that both\nthe incoming and outgoing numbers are populated.\n\nChange-Id: I857ea00cc58a0abbb77960643f361dd6dd9c8b56\n"
    },
    {
      "commit": "b02996cb1427c83c76551141f827c0dcf4935e48",
      "tree": "03771cf5b15d686f80808532c96c58638d88bd3b",
      "parents": [
        "21f2c00de79fda7267fd51fcd4f3d5c47c4bba7b",
        "d6aef2176f8c048e41fa40bd9f12152ace0e4ca5"
      ],
      "author": {
        "name": "Tyler Gunn",
        "email": "tgunn@google.com",
        "time": "Tue May 01 13:52:35 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 01 13:52:35 2018 -0700"
      },
      "message": "Merge \"Require READ_CALL_LOG permission to see phone numbers in phone state.\" into pi-dev am: 7f556daa41\nam: d6aef2176f\n\nChange-Id: Id4b1f204061f6c7f6c12c2faa392015ade4c4b7f\n"
    },
    {
      "commit": "d6aef2176f8c048e41fa40bd9f12152ace0e4ca5",
      "tree": "f4d84d2be0abcb1f299db5d7fbb8e5448b03d48b",
      "parents": [
        "f015c6d04c5de15927f24edc9ac689adbe70f2e4",
        "7f556daa41b727bef3da1e8bad02a89ed904f32b"
      ],
      "author": {
        "name": "Tyler Gunn",
        "email": "tgunn@google.com",
        "time": "Tue May 01 13:41:49 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 01 13:41:49 2018 -0700"
      },
      "message": "Merge \"Require READ_CALL_LOG permission to see phone numbers in phone state.\" into pi-dev\nam: 7f556daa41\n\nChange-Id: Icd641707eef832fd5f3d393c64ce9b3483770e9d\n"
    },
    {
      "commit": "f955e56d51dac0fade192b544af5679d3d8193ac",
      "tree": "9af30f17af98970b4b4123e0f53bc04fbcd587ae",
      "parents": [
        "fd935d3a126c4cfe643765d500a4fbed11d77b9b"
      ],
      "author": {
        "name": "Tyler Gunn",
        "email": "tgunn@google.com",
        "time": "Thu Apr 26 14:43:31 2018 -0700"
      },
      "committer": {
        "name": "Tyler Gunn",
        "email": "tgunn@google.com",
        "time": "Fri Apr 27 08:44:07 2018 -0700"
      },
      "message": "Require READ_CALL_LOG permission to see phone numbers in phone state.\n\nIncoming and outgoing call phone numbers are visible in the phone state\nbroadcast and via the PhoneStateListener.  To enhance user privacy, change\nto require the READ_CALL_LOG permission in order to receive the call\nphone numbers.\n\nThis means to see phone numbers:\n1. android.intent.action.PHONE_STATE - requires READ_PHONE_STATE and\nREAD_CALL_LOG permission.\n2. PhoneStateListener#onCallStateChanged - now required READ_CALL_LOG\npermission.\n\nTo support this new behavior, added sendBroadcastAsUserMultiplePermissions\nmethod to context to allow sending the broadcast to all users while\nrequiring the two permissions.\n\nBug: 78650469\nTest: Created PHONE_STATE broadcast receiver in test app and verified that\nwhen no permissions are granted, the phone number is empty for incoming\nand outgoing calls.\nTest: Granted Phone state permission to test app and verified that phone\nnumber is not populated.\nTest: Granted test app read call log permission and verified that phone\nnumber is populated.\nTest: Created PhoneStateListener in test app and verified that when no\npermissions are granted, phone number is empty for incoming and outgoing.\ncalls.\nTest: Granted read call log permission to test app and verified that both\nthe incoming and outgoing numbers are populated.\n\nChange-Id: I857ea00cc58a0abbb77960643f361dd6dd9c8b56\n"
    },
    {
      "commit": "3fb224521ade14584c0d44ccaa4b9e9053fae7cb",
      "tree": "d5aab0f7bd594ff2734bd0d39529b4fa1c69233a",
      "parents": [
        "420ab92b0bc79b7f603e04308e1a2abcf348860d"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Tue Mar 13 16:06:03 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Apr 13 11:21:54 2018 +0900"
      },
      "message": "Make android.test.mock.stubs in Android.bp\n\nStubs libraries android.test.mock.stubs and\nandroid.test.mock.stubs-system are now built in Android.bp.\n(Note that API check and update are still done in Android.mk)\n\nAs a good side effect, this allows android.test.runner[-minus-junit]\nlibraries (that are defined in Android.bp) to be built with the\nandroid.test.mock.stubs instead of the runtime library\nandroid.test.mock. This in turn allows us to prevent java:sdk -\u003e\njava:platform dependency also in Soong, because the runner libraries\nwere the only violators.\n\nBug: 73829976\nTest: m -j android.test.mock.stubs android.test.mock.stubs-system\nTest: m -j checkapi\nTest: m -j update-api\nMerged-In: I830a8eb13aa43b9aa4c8394f3c2fd91ee18b1f85\nChange-Id: I830a8eb13aa43b9aa4c8394f3c2fd91ee18b1f85\n(cherry picked from commit e649b8066c3385ba0b667a79d378402b15ef3127)\n"
    },
    {
      "commit": "8f2df8a94ffe21cd7b73f3178ef778f10c67b6c1",
      "tree": "3c03a4a3a2500740bd7b172049bc18b6309d73a7",
      "parents": [
        "6964add112adadfac4c59dddce1b21beeb570cfe"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Mar 23 17:29:05 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Mar 30 14:57:23 2018 +0900"
      },
      "message": "Don\u0027t build android.test.mock.stubs for unbundled builds\n\nUnbundled builds use the prebuilt libs in /prebuilts/sdk/current and\nsystem_current.\n\nBug: 73829976\nTest: m -j ANDROID_BUILDSPEC\u003dvendor/google/build/app_build_spec.mk\n\nMerged-In: I61fe0d671778595f49be82d7c11caffc411f58a3\nChange-Id: I61fe0d671778595f49be82d7c11caffc411f58a3\n(cherry picked from commit ea93a9ebc22d2685ecc94b0a51175ec7c6eb7d05)\n"
    },
    {
      "commit": "6964add112adadfac4c59dddce1b21beeb570cfe",
      "tree": "f3639e891f96aa2e79caf851687e71fee77c621c",
      "parents": [
        "293eb1206981518eeaeced321708ede1ccf2cec9"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Tue Mar 13 16:06:03 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Mar 30 14:57:11 2018 +0900"
      },
      "message": "Make android.test.mock.stubs in Android.bp\n\nStubs libraries android.test.mock.stubs and\nandroid.test.mock.stubs-system are now built in Android.bp.\n(Note that API check and update are still done in Android.mk)\n\nAs a good side effect, this allows android.test.runner[-minus-junit]\nlibraries (that are defined in Android.bp) to be built with the\nandroid.test.mock.stubs instead of the runtime library\nandroid.test.mock. This in turn allows us to prevent java:sdk -\u003e\njava:platform dependency also in Soong, because the runner libraries\nwere the only violators.\n\nBug: 73829976\nTest: m -j android.test.mock.stubs android.test.mock.stubs-system\nTest: m -j checkapi\nTest: m -j update-api\nMerged-In: I830a8eb13aa43b9aa4c8394f3c2fd91ee18b1f85\nChange-Id: I830a8eb13aa43b9aa4c8394f3c2fd91ee18b1f85\n(cherry picked from commit e649b8066c3385ba0b667a79d378402b15ef3127)\n"
    },
    {
      "commit": "ea93a9ebc22d2685ecc94b0a51175ec7c6eb7d05",
      "tree": "3925410eb5ab4d2170d15813259fb67f82bf9e56",
      "parents": [
        "39971a30361aa0a0b3a60e6f01c95981784ea79e"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Mar 23 17:29:05 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Mar 23 20:25:18 2018 +0900"
      },
      "message": "Don\u0027t build android.test.mock.stubs for unbundled builds\n\nUnbundled builds use the prebuilt libs in /prebuilts/sdk/current and\nsystem_current.\n\nBug: 73829976\nTest: m -j ANDROID_BUILDSPEC\u003dvendor/google/build/app_build_spec.mk\n\nChange-Id: I61fe0d671778595f49be82d7c11caffc411f58a3\n"
    },
    {
      "commit": "8555e50c1f5a369c8b6752bb81849ca0208f5a49",
      "tree": "1f72bfd0c1dd43d6a826f5c8603e50ff038a416e",
      "parents": [
        "0664e31355f3cbbdc6c5586a61837623c728a946",
        "e649b8066c3385ba0b667a79d378402b15ef3127"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 23 07:15:30 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 23 07:15:30 2018 +0000"
      },
      "message": "Merge \"Make android.test.mock.stubs in Android.bp\""
    },
    {
      "commit": "075541707aa55cd6aedf6cf0e4aaff0bf3e9b183",
      "tree": "fd1576aec9a2114af5f437e3bf0b07b8381972a4",
      "parents": [
        "68aea4c3d5a926ac393699e5571835b2a03d1a59",
        "31b5990893eae7bbc283bf4c1489c729886ee5a2"
      ],
      "author": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Fri Mar 23 01:17:09 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Mar 23 01:17:09 2018 +0000"
      },
      "message": "Merge \"APIs to suspend packages with SUSPEND_APPS permission\" into pi-dev am: 6affc07065\nam: 31b5990893\n\nChange-Id: Ib95745ca26362a9624b704b217b4d9078d0ade7c\n"
    },
    {
      "commit": "e649b8066c3385ba0b667a79d378402b15ef3127",
      "tree": "e698b8218cf79ee2d417d8c977f906c4a1b52b8b",
      "parents": [
        "f56e5b7fb0dfed65e9c34bac41eec92486dfaa36"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Tue Mar 13 16:06:03 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Mar 23 09:47:56 2018 +0900"
      },
      "message": "Make android.test.mock.stubs in Android.bp\n\nStubs libraries android.test.mock.stubs and\nandroid.test.mock.stubs-system are now built in Android.bp.\n(Note that API check and update are still done in Android.mk)\n\nAs a good side effect, this allows android.test.runner[-minus-junit]\nlibraries (that are defined in Android.bp) to be built with the\nandroid.test.mock.stubs instead of the runtime library\nandroid.test.mock. This in turn allows us to prevent java:sdk -\u003e\njava:platform dependency also in Soong, because the runner libraries\nwere the only violators.\n\nBug: 73829976\nTest: m -j android.test.mock.stubs android.test.mock.stubs-system\nTest: m -j checkapi\nTest: m -j update-api\nChange-Id: I830a8eb13aa43b9aa4c8394f3c2fd91ee18b1f85\n"
    },
    {
      "commit": "6affc07065083468c5580b04d3572ef6acbb138c",
      "tree": "ce99f9bff97029318db42ac178b83a8379d99319",
      "parents": [
        "fc16c4b3c48233be0f22db671d7e80188b2dea17",
        "021b57ab8df0927aa1f78a2f3bb01d5e70594b1a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 22 22:15:31 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 22 22:15:31 2018 +0000"
      },
      "message": "Merge \"APIs to suspend packages with SUSPEND_APPS permission\" into pi-dev"
    },
    {
      "commit": "021b57ab8df0927aa1f78a2f3bb01d5e70594b1a",
      "tree": "f051df742120d34fc3ef87ee4c1d65b2e970d6ab",
      "parents": [
        "5d9617c439d0f85b67ba0d21e43f665ab9bf13ae"
      ],
      "author": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Thu Mar 08 18:21:50 2018 -0800"
      },
      "committer": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Thu Mar 22 12:59:57 2018 -0700"
      },
      "message": "APIs to suspend packages with SUSPEND_APPS permission\n\nChanged the existing hidden api setPackagesSuspendedAsUser to a system\napi setPackagesSuspended that can be called by apps with either\nMANAGE_USERS or SUSPEND_APPS permission. Additionally, the suspending\napp can now specify optional extra information meant to be used by the\nsuspended apps and the launcher to deal with this state.\n\nThe following other APIs are added:\n - isPackageSuspended(): Apps can query whether they are in a suspended\n state\n - @SystemApi getPackageSuspendedAppExtras(String): Apps with permission\n SUSPEND_APPS can get the appExtras passed to PM when suspending the\n app.\n - @SystemApi setPackageSuspendedAppExtras(String, PersistableBundle):\n Apps with permission SUSPEND_APPS can update app extras for a\n suspended package.\n - getPackageSuspendedAppExtras(): Apps can call to get the appExtras\n passed in to PM when they were suspended.\n\nTest: Can be run via:\natest com.android.server.pm.PackageManagerSettingsTests\natest com.android.server.pm.PackageUserStateTest\natest com.android.server.pm.SuspendPackagesTest\n\nBug: 74336673\nChange-Id: I3b9ed2c8478b34ee2e8986f5f5fddb2839d102e3\n"
    },
    {
      "commit": "8e8eb51f7283056e129d915cdccf468653cfad3a",
      "tree": "410de146ef9b5ed54728aeb6153d2ca306bc40d9",
      "parents": [
        "f7ddaf5390d89cd582c610aa85bb9f2d41d08718",
        "7680a17d07aa35b61af1a92eaa52abf25b7654c6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 21 19:04:24 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 19:04:24 2018 +0000"
      },
      "message": "Merge \"Remove unused jarjar rule file for the test mock library\""
    },
    {
      "commit": "18e3eb816887156f40def1c14db434ddde9ec245",
      "tree": "eb89c3addc9bac983b9d4fb1138ebe4de5fcc52a",
      "parents": [
        "a5fd0294c76c1faa3479a2093ae3e5f0838791ad"
      ],
      "author": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Fri Mar 09 16:55:55 2018 -0800"
      },
      "committer": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Tue Mar 20 13:57:14 2018 -0700"
      },
      "message": "Add SoundTriggerDetectionService\n\nThe service is meant to replace the PendingIntent based API. Once all\nusers of the PendingIntent based API switched the PendingIntent based API\nwill be removed.\n\nTo have as little as possible impact on the whole SoundTrigger framework\nthe RemoteSoundTriggerDetectionService class implements the same\ninterface as the PendingIntent based class. Hence the exising code has\nvery little change. Further once the old code can be removed the amount\nof changed (and added) code is limited.\n\nThe RemoteSoundTriggerDetectionService -\u003e SoundTriggerDetectionService\nis a vanilla as possible service implementation. The special behaviors\nare:\n- The system holds a wakelock while service operations are in progress\nand the service is bound as foreground. Hence the service can e.g.\nlisten to the microphone.\n- Service operations have a certain amount of time they are allowed to\nrun. Once every operation is either finished or the the operation\nexceeded the allotted time, the system calls onStopOperation for each\nstill pending operation. This is a similar model as for the commonly\nused JobService.\n  Please note that if the time allowed for an operation is 15s and\nop1 was run as 0si, and op1 was run at 5s, the service is allowed to run\nuntil 20s. Hence _both_ onStopOperations will happen at 20s. This is\ndone for ease of implementation but should not give the service more\npower than calling onStopOperation exactly 15s after each operation is\ntriggered.\n- If an operation is done before the allotted time is reached, the\nservice can declare the operation as finished manually by calling\nonOperationFinished. This is a call back into the system, hence a\n\u0027client\u0027 binder is sent to the service. If the operation is finished\nby calling this method onStopOperation will not be called.\n- As the service instance might be killed and restored between\noperations we add a opaque bundle \u0027params\u0027 to each operations. The users\nof the API can use this to send data from the start command to the\noperations. It can also just be set to null. The params are not meant to\nstore changing state in between operations. Such state needs to be\npersisted using the regular methods (e.g. write it to disk)\n- A service can be used for multiple recognition sessions. Each\nrecognition is uniquelity defined by its sound model UUID. Hence each\noperation gets at least tree arguments: Operation ID, sound mode UUID, params\n- As a small optimization the params are cached inside of the service\ninstance.\n\nThe time allowed for each operation is in a @SystemAPI global setting,\nso the service can make sure it finishes the operations before they are\nstopped. It might take some time to deliver the operations via the\nbinder, hence it is not recommended to try to use every last ms of\nallotted time.\n\nTest: atest SoundTriggerDetectionServiceTest (added in separate CL)\n      atest android.provider.SettingsBackupTest\nChange-Id: I47f813b7a5138a6f24732197813a605d29f85a93\nFixes: 73829108\n"
    },
    {
      "commit": "7680a17d07aa35b61af1a92eaa52abf25b7654c6",
      "tree": "1b6e16b1c62af27d953f8e4b22fedbe77112a73a",
      "parents": [
        "f56e5b7fb0dfed65e9c34bac41eec92486dfaa36"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Mar 21 01:16:53 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Mar 21 01:21:15 2018 +0900"
      },
      "message": "Remove unused jarjar rule file for the test mock library\n\nbedfae98011075935cd3e49b8ff8f241b2f3ba81 removed the repackaged test\nmock library but left the jarjar rule file used to build the lib.\nRemoving the leftover.\n\nTest: m -j\n\nChange-Id: I9e3d65ff2801af3fb363c1608c14734bca9d9434\n"
    },
    {
      "commit": "bedfae98011075935cd3e49b8ff8f241b2f3ba81",
      "tree": "d0fbe476e9e413916c41fe2ca924c90d76f3f7d9",
      "parents": [
        "2b6ba64cc5f7d63fa4a451d418f83ee43762cb3d"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Feb 22 12:16:31 2018 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Feb 26 11:57:26 2018 +0000"
      },
      "message": "Remove repackaged.android.test.mock\n\nThe repackaged.android.test.mock uses internal APIs so cannot be built\nagainst the SDK which means that anything that depends on it cannot\nguarantee to run if those internal APIs change.\n\nThat library was built because the classes in\nrepackaged.android.test.runner depend on them. However, the\nrepackaged.android.test.runner library is only used by the\ncts-api-signature-test target and it does not use any android.test.mock\nclasses directly, or indirectly. Therefore, this simply excludes any\nclasses from repackaged.android.test.runner that depend on\nandroid.test.mock classes so that repackaged.android.test.mock can be\nremoved altogether.\n\nBug: 69899800\nBug: 30188076\nTest: make checkbuild\nChange-Id: If4528e6a4ec2b08faffd6d413672c5004d85e0a9\n"
    },
    {
      "commit": "2ebb02123122d6ef3b0cf5c115c2ea4e19319496",
      "tree": "ece8f5b017c174f0d40f9f7440f06f9bac0c837c",
      "parents": [
        "f1862955845e8faaea1b40f179cae578a70119ff",
        "700feef8a60e06784d28d1db9502e650df854cad"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Wed Feb 21 17:22:28 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 21 17:22:28 2018 +0000"
      },
      "message": "Merge \"Shortcut permissions for default text classifier\""
    },
    {
      "commit": "4cdec67417f977427422b13e8218246a507cb2fc",
      "tree": "b5809738a6495155bcc007c6fe71d784851870a3",
      "parents": [
        "d89c7790e1664c42d5986d4954a113d3fd1b675e"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Feb 14 10:36:16 2018 +0000"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Feb 21 15:59:56 2018 +0000"
      },
      "message": "Build android.test.base/legacy against SDK\n\nandroid.test.legacy is now build against SDK, thus available to apps\nbuild with SDK.\n\nIn doing so, android.test.mock.stubs had to be built with SDK (because\nit is used by android.test.legacy). However, this wasn\u0027t trivial.\n\nThe problem was that some classes in test-mock implemented abstract\nmethods of platform classes. Even though they are marked as @hide,\ndoclava automatically emit them to the stub file because otherwise the\nclass in the stub file does not implement some abstract methods from its\nparent class, which in turn makes the stub file non-compilable.\n\nThis CL solves the problem by introducing an adapter class in between\nthe class in test-mock and the class in the framework. The adapter class\nimplements abstract methods which are @hide and having reference to\ntypes that aren\u0027t available to SDK. The abstract methods are removed\nfrom the original class. Then doclava does not emit the abstract\nmethods.\n\nAlso by @hide\u0027ing the adapter classes, they are not compiled when\nbuilding the stub library.\n\nBug: 30188076\nBug: 73339598\nTest: m -j android.test.base\nTest: m -j android.test.legacy\nTest: m -j android.test.mock.stubs\nare successful and do not show link-check warning\nMerged-In: I8e432950e693ee3c6f0240852e62da6133d31571\nChange-Id: I8e432950e693ee3c6f0240852e62da6133d31571\n"
    },
    {
      "commit": "700feef8a60e06784d28d1db9502e650df854cad",
      "tree": "eb635270a03ffb5a2722a2fe85a90e3609e8c434",
      "parents": [
        "f9a02975eaa5a36584eb1f214193d24053af73f1"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Thu Feb 15 10:59:41 2018 -0800"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Tue Feb 20 12:14:18 2018 -0800"
      },
      "message": "Shortcut permissions for default text classifier\n\n- Add two shortcut related permissions as SystemAPI for the default\ntext classifier.\n\n- The default text classifier package name still comes from the\nsystem resource.\n\nBug: 73083596\nBug: 71555985\nTest: atest CtsPermission2TestCases\nTest: Manual test with a test package, with the following in config.xml\n\u003cstring name\u003d\"config_defaultTextClassifierPackage\" translatable\u003d\"false\"\u003ecom.example.android.pm.shortcutlauncherdemo\u003c/string\u003e\n\nChange-Id: I19081d9d6ba0b33eb25d19aa55b4fe2f26a75897\n"
    },
    {
      "commit": "001d87c81f2f2dba7b0440f50d2a1368d95de5d7",
      "tree": "05aad1ab2876ead89366d25a868b7599899bf200",
      "parents": [
        "c3e4916301b421700ca80a338c6086c5cb33a844"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Feb 14 10:36:16 2018 +0000"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Sun Feb 18 21:47:42 2018 +0900"
      },
      "message": "Build android.test.base/legacy against SDK\n\nandroid.test.legacy is now build against SDK, thus available to apps\nbuild with SDK.\n\nIn doing so, android.test.mock.stubs had to be built with SDK (because\nit is used by android.test.legacy). However, this wasn\u0027t trivial.\n\nThe problem was that some classes in test-mock implemented abstract\nmethods of platform classes. Even though they are marked as @hide,\ndoclava automatically emit them to the stub file because otherwise the\nclass in the stub file does not implement some abstract methods from its\nparent class, which in turn makes the stub file non-compilable.\n\nThis CL solves the problem by introducing an adapter class in between\nthe class in test-mock and the class in the framework. The adapter class\nimplements abstract methods which are @hide and having reference to\ntypes that aren\u0027t available to SDK. The abstract methods are removed\nfrom the original class. Then doclava does not emit the abstract\nmethods.\n\nAlso by @hide\u0027ing the adapter classes, they are not compiled when\nbuilding the stub library.\n\nBug: 30188076\nBug: 73339598\nTest: m -j android.test.base\nTest: m -j android.test.legacy\nTest: m -j android.test.mock.stubs\nare successful and do not show link-check warning\nChange-Id: I8e432950e693ee3c6f0240852e62da6133d31571\n"
    },
    {
      "commit": "d89c7790e1664c42d5986d4954a113d3fd1b675e",
      "tree": "3b5d6533c29ce8787b8246a9452851964c5f4aa4",
      "parents": [
        "cfc6897a3951e4e797cb7ab3f81c4b16de976a03"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Dec 19 15:11:47 2017 +0000"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Sun Feb 18 20:36:35 2018 +0900"
      },
      "message": "Fix visibility issues with android.test.mock.stubs\n\nThis ensures that the API definitions for the android.test.mock package\nmatches the definitions in the api/current.txt file.\n\nBug: 30188076\nTest: make update-api\n(cherry-picked from commit bd97e3dd4e5d395f336114016b000ef3cfb26053)\n\nMerged-In: Id325b8cf2f189117ac4cfe7634095ab710eee004\nChange-Id: Id325b8cf2f189117ac4cfe7634095ab710eee004\n"
    },
    {
      "commit": "1d875ad3ae5bb27016f9650b5bf4c39c08b6570e",
      "tree": "2344bf7d126d9287bbaae8e0a575a8f2b46c10bb",
      "parents": [
        "1b37daa810c929938a642f56cb7aeb75c4f89766"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Nov 07 18:49:43 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 14 08:00:56 2018 -0800"
      },
      "message": "Add SystemApis to expose runtime profile information\n\nThe API allows a system apps which acquired\n{@code android.permission.READ_RUNTIME_PROFILE} to snapshot the runtime\nprofiles of installed packages.\n\nThe API is implemented in a new service class (AndroidRuntimeManager)\naccessible from the context using\ncontext().getPackageManager().getAndroidRuntimeManager().\n\nThe main functionality is exposed as a one way call into the\nAndroidRuntimeManager with the result being posted on a callback. The\nprofile is available to the caller as a read-only ParcelFileDescriptor.\n\nThis CL only adds the API interfaces and validation. It does not fully\nimplement the functionality.\n\noneway void snapshotRuntimeProfile(in String packageName,\n  in String codePath, in ISnapshotRuntimeProfileCallback callback)\n\n(cherry picked from commit 45f8b29ce0ca9f80c586850c4be3a1e552bc6c2f)\n\nBug: 30934496\nTest: gts-tradefed -m GtsAndroidRuntimeManagerHostTestCases\n\nMerged-In: Iaa6be4715840f24508acba3162ea9c1ab725bd38\nChange-Id: Iaa6be4715840f24508acba3162ea9c1ab725bd38\n"
    },
    {
      "commit": "12afc7fd7e0a36500c63665021413c944e466234",
      "tree": "58d86459865d46a585c1706b19e8c817186d955b",
      "parents": [
        "8153b12c6a1d300c8c8e231e50754e6b70ef8c49",
        "be3a10993f6753957c166c7e017455f465deb1f7"
      ],
      "author": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Wed Feb 07 03:34:16 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 07 03:34:16 2018 +0000"
      },
      "message": "Merge \"Pin jarjar targets to java_version 1.8.\" am: 2bbf12aa78 am: 3f48e86917\nam: be3a10993f\n\nChange-Id: Ib098b09674edb62f5a27be70f4c3be911a7e0cf6\n"
    },
    {
      "commit": "2bbf12aa78e3583bfcbe7f468a18d0da3bce24ab",
      "tree": "3fed7a21256c5c9617df3a0846e052df8b539717",
      "parents": [
        "1168c31c4a554d37e405c2f940707de0f91eab57",
        "d65595a94e2e5a5dc19540fcb1ba4ff45a7d2b67"
      ],
      "author": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Wed Feb 07 00:16:04 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 07 00:16:04 2018 +0000"
      },
      "message": "Merge \"Pin jarjar targets to java_version 1.8.\""
    },
    {
      "commit": "0aa3b20a66197da5c6843afc1f9de0a1691ca5cc",
      "tree": "b2ae6123ef5a56e152cfcb176e0dda1037bba1fd",
      "parents": [
        "f24612b176d9272d50376138b337de16b45004c9"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Dec 22 16:13:15 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Feb 06 13:38:44 2018 +0000"
      },
      "message": "Add apis needed for android.test.legacy\n\nThe long term goal of removing junit and dependent android.test classes\nfrom the android.jar is the removal of the runtime libraries that\nprovide those classes. A key part of the strategy for migrating APKs off\nthe runtime libraries is the android.test.legacy library which APKs can\nstatically include in place of the runtime dependencies without having\nto change their source code.\n\nThe longer term goal is for all tests to migrate from these classes\naltogther and to use the Android Test Support Library instead but that\nwill require significant changes to the test source code.\n\nIn order for it to be safe to statically include android.test.legacy in\nan APK it cannot use any internal APIs. This change adds the additional\nclasses and methods needed to the android.test.mock API library. The\nadditions are all marked as deprecated to try and avoid developers\nfrom using them in new tests.\n\nIt also marks the AccountManager constructor used by MockAccountManager\nwith the android.annotation.MockApi so that it is included in the mock\nstubs libraries against which the android.test.mock.stubs[-system]\nlibraries build.\n\nBug: 30188076\nTest: make checkbuild\n\n(cherry picked from commit 772b6923206a34e97c45bc48e7ad4bebfd3eae29)\n\nMerged-In: I85417cc328cab898ab93b9b726648f4232555324\nChange-Id: If3b6fc630df93a44e4c07ef769737a2ac3ebf476\n"
    },
    {
      "commit": "d65595a94e2e5a5dc19540fcb1ba4ff45a7d2b67",
      "tree": "38f1ec811333b95b1feb53260816eede5b680c2e",
      "parents": [
        "771e229a23fa4edb2e5ec2c3f76271d0804f2f4b"
      ],
      "author": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Mon Feb 05 15:49:52 2018 +0000"
      },
      "committer": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Mon Feb 05 21:14:24 2018 +0000"
      },
      "message": "Pin jarjar targets to java_version 1.8.\n\nThis CL pins the following make targets to java_version 1.8,\nwhich is currently the default:\n  framework-protos\n  repackaged.android.test.base\n  repackaged.android.test.mock\n  repackaged.android.test.runner\n\nFor consistency, their dependencies,\n  android.test.base\n  android.test.mock\n  android.test.runner\nwhich contain .java source files, are also pinned to 1.8.\n\nThis is so that the two steps:\n a) update jarjar to support v53 class files\n b) support -target 1.9 in the rest of the toolchain\ncan be completed in any order, in future CLs. Before this CL,\nthey would have needed to be completed in order a), b).\n\nBug: 72703434\nTest: EXPERIMENTAL_USE_OPENJDK9\u003dtrue USE_R8\u003dtrue make checkbuild docs\n      (in a client where CL http://r.android.com/596874 was reverted)\n\nChange-Id: If78067294ae7ab78997aa109b0e08be427bdf0b8\n"
    },
    {
      "commit": "97ca19f01382e411e3b1dc078364d37ae39b3758",
      "tree": "3b8734d5c9bed6066cb787180fda97d76a02fe21",
      "parents": [
        "ea27314e38f84b5331a3eac08d774dd16e55b502"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jan 26 14:29:18 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jan 26 14:53:50 2018 +0900"
      },
      "message": "Add conscrypt, okhttp, bouncycastle to the classpath when building stubs\n\nWhen generating the stubs for android.test.mock, the main framework\nsource is also included. The source in turn has references to the\nconscrypt, okhttp, and bouncycastle ibraries (e.g. ActivityThread.java uses\ncom.android.org.conscrypt.OpenSSLSocketImpl).\n\nAlthough this does not break the build because doclava does not abort on\nnon-existing symbols, this creates a lot of error messages to the log\noutput:\n\nframeworks/base/test-mock/../core/java/android/app/ActivityThread.java:143: error: package com.android.org.conscrypt does not exist\nimport com.android.org.conscrypt.OpenSSLSocketImpl;\n                                ^\nframeworks/base/test-mock/../core/java/android/app/ActivityThread.java:144: error: package com.android.org.conscrypt does not exist\nimport com.android.org.conscrypt.TrustedCertificateStore;\n                                ^\n...\n\nTherefore adding the missing libraries to the classpath to prevent the\nscary messages.\n\nTest: mma -j under frameworks/base/test-mock does not show the error\nmessages.\n\nChange-Id: I899be8ff7466f9483e4f3ae8328bc9c72bbe22ed\n"
    },
    {
      "commit": "064f16638be7304e589177386aa09f542a07ff88",
      "tree": "809d3fba0dfc525f58afbd3ba6f03c40fa2c1a5d",
      "parents": [
        "cf8f8026b515c5ead886fe830a13bf97aa3a8959",
        "5cdda3425ccf3c62e400a1646615f4479a8266af"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 24 03:00:27 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 03:00:27 2018 +0000"
      },
      "message": "Merge \"Add API to expose signing certificate proof-of-rotation.\""
    },
    {
      "commit": "c4788e1f044ef2714137d6e781ed8506016954af",
      "tree": "ff7e4e0f2f112bc6b536257dd514d8be50dc367e",
      "parents": [
        "7e004f96dd2c8d232f1ac54ab4dbd669c774d71c",
        "7ee1a7acc4d3ff8d05aaa76ba7665fdef9f315ec"
      ],
      "author": {
        "name": "Roberto Perez",
        "email": "robertoalexis@google.com",
        "time": "Tue Jan 23 18:21:59 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 23 18:21:59 2018 +0000"
      },
      "message": "Merge \"Adding a new category to mark car-optimized launcher activity\""
    },
    {
      "commit": "5cdda3425ccf3c62e400a1646615f4479a8266af",
      "tree": "f8942116930669c5170dad00cac8df019a8a35b1",
      "parents": [
        "77029c5b16351775cb2333369ef9a4bc1d9acf58"
      ],
      "author": {
        "name": "Daniel Cashman",
        "email": "dcashman@google.com",
        "time": "Fri Jan 19 07:22:52 2018 -0800"
      },
      "committer": {
        "name": "Dan Cashman",
        "email": "dcashman@google.com",
        "time": "Tue Jan 23 09:10:13 2018 -0800"
      },
      "message": "Add API to expose signing certificate proof-of-rotation.\n\nWith the addition of APK Signature Scheme v3, the platform now can\nsupport key rotation by using the proof-of-rotation provided by the\nnew scheme.  Create a new API which allows checking of the entire\nprovided history of an APK\u0027s signing certificates, not just the\ncurrent signer.  This should allow for changes of APK signing\ncertificates without fear of losing access to resources that would\nhave been provided under the old signing certificate.\n\nChange getPackageInfo(GET_SIGNATURES) to return the oldest signing\ncertificate in the chain so that apps which do programmatic checks,\nbut are not updated to use the new API, still get the same information\nthey would have gotten had there been no rotation.\n\nBug: 64686581\nTest: Builds, boots.\nChange-Id: I8982fd4cce60f5d85a6180d157a6e2a661b1a6d7\n"
    },
    {
      "commit": "7ee1a7acc4d3ff8d05aaa76ba7665fdef9f315ec",
      "tree": "29df2ef4c209487cd6ab0c1860c238deaa2bfe0e",
      "parents": [
        "82c264e0f27961523e4bd3511890bfd35a01fd7e"
      ],
      "author": {
        "name": "Roberto Perez",
        "email": "robertoalexis@google.com",
        "time": "Mon Dec 04 17:14:33 2017 -0800"
      },
      "committer": {
        "name": "Roberto Perez",
        "email": "robertoalexis@google.com",
        "time": "Thu Jan 18 14:43:27 2018 -0800"
      },
      "message": "Adding a new category to mark car-optimized launcher activity\n\nTest: TBD\nBug: 70681347\n\nChange-Id: I81ea7f9f3021e8a9d25fa980a8687d66765469c5\n"
    },
    {
      "commit": "924431ff1a77016e496207fc4f23a8cf40db5beb",
      "tree": "fee278f16351127abe88dda8c1cdb1a9ba62df1c",
      "parents": [
        "0158d976c8abc5f5ff5cf4d84afda637e2d878d6",
        "2b3bf45c73f7986f00492eee3848b66b14b99282"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jan 16 11:52:20 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jan 16 11:52:20 2018 +0000"
      },
      "message": "Merge \"Replace legacy-test with android.test.base in bp files\" am: 2285630e4b am: caacf3e7c4\nam: 2b3bf45c73\n\nChange-Id: I0c4b7705176b0ae7eb4b06bf5a138757d6b16e9c\n"
    },
    {
      "commit": "b36eb542a9157c488bcc7dc7eb5a65b7b7288155",
      "tree": "251a3793d3b05859b8298b08f43135ed3592cd50",
      "parents": [
        "9cb0b520114c1a166f4972b53cb2bfac7d1a1b78"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Jan 15 15:47:47 2018 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Jan 15 15:47:47 2018 +0000"
      },
      "message": "Replace legacy-test with android.test.base in bp files\n\nThe legacy-test target is deprecated and will be replaced by\nandroid.test.base. This replaces a few usages of the legacy-test target\nin Android.bp files with android.test.base.\n\nBug: 30188076\nTest: make checkbuild\nChange-Id: I3575f638114fe2a3b703e67837496346bde24472\n"
    },
    {
      "commit": "21418277009ee848e095b35903d7fde213d3d5fe",
      "tree": "d9ec3bcd5ffcaa23e26fd177669e249d837999d1",
      "parents": [
        "f0561142f3b7ddd85947d7ee268d5b98a39489b9"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Nov 16 15:47:05 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Jan 12 15:52:39 2018 +0000"
      },
      "message": "Move legacy-test to test-base\n\nMake it consistent with the test-mock and test-runner directories.\nAlso renames the files in api/ subdirectory.\n\n(cherry picked from commit f779efd62cd579f67bd3b387d59fda11ee0cbe90)\n\nBug: 30188076\nTest: make checkbuild\nChange-Id: Ied3621e6201d8717223fe1ccd4ea77d458126b25\nMerged-In: If4f99a65fcca416ede5b3e63481398f0b451bcb7\n"
    },
    {
      "commit": "1ab3d6e56b56fe0cfe31e437326b5cbc66bdb361",
      "tree": "39e7ba3aa2b34512aa29c4f35dd2de1a06777c5f",
      "parents": [
        "464eb00e67e0875e4f5abbc3417fc714ecc6ffe1"
      ],
      "author": {
        "name": "Ben Gruver",
        "email": "bgruv@google.com",
        "time": "Thu Dec 07 13:45:08 2017 -0800"
      },
      "committer": {
        "name": "Ben Gruver",
        "email": "bgruv@google.com",
        "time": "Thu Jan 11 12:13:29 2018 -0800"
      },
      "message": "Implement harmful app warning at activity launch\n\nBug: 63909431\nTest: manual\n\nChange-Id: I8a5497421cb8130af8cdd5129b0f6e1707a01e36\n"
    },
    {
      "commit": "772b6923206a34e97c45bc48e7ad4bebfd3eae29",
      "tree": "269bbfc393c0bafa04c565fff1f11946f99d79a2",
      "parents": [
        "0d64cd33ba31d77f255c2240ea8c69b1a1b05144"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Dec 22 16:13:15 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jan 09 14:38:38 2018 +0000"
      },
      "message": "Add apis needed for android.test.legacy\n\nThe long term goal of removing junit and dependent android.test classes\nfrom the android.jar is the removal of the runtime libraries that\nprovide those classes. A key part of the strategy for migrating APKs off\nthe runtime libraries is the android.test.legacy library which APKs can\nstatically include in place of the runtime dependencies without having\nto change their source code.\n\nThe longer term goal is for all tests to migrate from these classes\naltogther and to use the Android Test Support Library instead but that\nwill require significant changes to the test source code.\n\nIn order for it to be safe to statically include android.test.legacy in\nan APK it cannot use any internal APIs. This change adds the additional\nclasses and methods needed to the android.test.mock API library. The\nadditions are all marked as deprecated to try and avoid developers\nfrom using them in new tests.\n\nIt also marks the AccountManager constructor used by MockAccountManager\nwith the android.annotation.MockApi so that it is included in the mock\nstubs libraries against which the android.test.mock.stubs[-system]\nlibraries build.\n\nBug: 30188076\nTest: make checkbuild\nChange-Id: I85417cc328cab898ab93b9b726648f4232555324\n"
    },
    {
      "commit": "79c238ada6e7072f62f807781d58d314ed2f17a9",
      "tree": "7ddce85f1fbd5a5850d82b998c83de7621e47b79",
      "parents": [
        "ec397abf931a39ed1c3d36f0af4ee9a68b883b07"
      ],
      "author": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Wed Dec 13 15:59:07 2017 -0800"
      },
      "committer": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Thu Jan 04 13:26:28 2018 -0800"
      },
      "message": "Use modern install method in backup service\n\nTest: adb backup -apk myApp -f backup ; adb restore backup\nChange-Id: I2bbcb0487ecc525a6dc8a2693b15ce624db275b0\n"
    },
    {
      "commit": "a23c84c7cac4a48e5850ac7834e7ea233e498963",
      "tree": "34ae50b491e67cd528ac82e6fb4d1c969ed717b0",
      "parents": [
        "bd97e3dd4e5d395f336114016b000ef3cfb26053"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Dec 15 12:49:36 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Dec 19 19:56:21 2017 +0000"
      },
      "message": "Add android.test.mock.stubs-system\n\nThe android.test.mock package contains one class with some methods that\nare annotated with @SystemApi which are not present in the\nandroid.test.mock.stubs. This adds a new android.test.mock.stubs-system\nlibrary that includes those additional methods.\n\nChecked that the new API definition files contain the exact same\ndefinitions for the android.test.mock packages as are found in the\napi/system-current.txt and api/system-removed.txt files.\n\nBug: 30188076\nTest: make update-api \u0026\u0026 make checkbuild\nChange-Id: I4644d30716e556204caa4acb53d7af84ca520271\n"
    },
    {
      "commit": "bd97e3dd4e5d395f336114016b000ef3cfb26053",
      "tree": "b32d838be3189d565c17922d34d475dd4cf951a9",
      "parents": [
        "8ca1e41a0f113f0a2bf8aef0102be9cbb0e3df30"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Dec 19 15:11:47 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Dec 19 19:52:54 2017 +0000"
      },
      "message": "Fix visibility issues with android.test.mock.stubs\n\nThis ensures that the API definitions for the android.test.mock package\nmatches the definitions in the api/current.txt file.\n\nBug: 30188076\nTest: make update-api\nChange-Id: Id325b8cf2f189117ac4cfe7634095ab710eee004\n"
    },
    {
      "commit": "8439ac08b1b8ef362cd649dbefdea4ac140051e2",
      "tree": "f7dfbb91bb60ff3c2e8768aa9975ca45b4563e59",
      "parents": [
        "ff38f236b55b51a9f8e03b909f4791ccca329c48"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Dec 12 17:26:23 2017 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Dec 13 13:59:04 2017 -0700"
      },
      "message": "Start accepting Executors instead of Handlers.\n\nAfter discussion in API council, our new best-practices are to have\ndevelopers provide an Executor to dispatch callbacks/listeners on,\ninstead of the previous guidance of using a Handler.\n\nDefine Context.getMainExecutor() to easily obtain an Executor\nassociated with the main thread of application.  This allows new\nAPIs to require a @NonNull Executor.  Also define a new\n@CallbackExecutor auto-doc annotation that explains background and\npoints developers at new Context method above.\n\nTest: cts-tradefed run commandAndExit cts-dev -m CtsContentTestCases -t android.content.cts.ContextTest#testMainLooper\nTest: cts-tradefed run commandAndExit cts-dev -m CtsContentTestCases -t android.content.cts.ContextTest#testMainExecutor\nBug: 70348426\nChange-Id: I536892bcd80fcfba1bb1ddf67648c08a26d7ddd2\n"
    },
    {
      "commit": "fc7ba9e61f0991c74a161502da4432da45ce384e",
      "tree": "3752cad98fb5958c90e3a330aa802226a37161b0",
      "parents": [
        "c16130898432e5622e60fd7aeb05a9b7db8f9550"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Dec 07 13:11:06 2017 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Dec 12 23:24:40 2017 +0000"
      },
      "message": "Convert legacy-test, test-runner, and test-mock to Android.bp\n\nSee build/soong/README.md for more information.\n\nTest: m checkbuild\nChange-Id: I110f752d2fa94c44581f20d4f308d9d429da0517\nMerged-In: I110f752d2fa94c44581f20d4f308d9d429da0517\n(cherry-picked from commit 2b7d71c7f8028741c2200bfeba8913b7f4f55cde)\n"
    },
    {
      "commit": "c16130898432e5622e60fd7aeb05a9b7db8f9550",
      "tree": "3e11bd7531f7270000f3292585502d75c2b7f52f",
      "parents": [
        "69516f4df7129b39dfa05654b9e5163442438c72"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Nov 16 13:02:37 2017 +0000"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Dec 12 23:24:18 2017 +0000"
      },
      "message": "Remove unused target android.test.mock.sdk\n\nBug: 30188076\nTest: make checkbuild\n\nChange-Id: I9b613969425e6c4d8700f6275484d6452a3cc3af\nMerged-In: I9b613969425e6c4d8700f6275484d6452a3cc3af\n(cherry picked from commit 10d0658bf020197c16264a1da4637e0d20ee6445)\n"
    },
    {
      "commit": "69516f4df7129b39dfa05654b9e5163442438c72",
      "tree": "3e21c3ef15385e32487c3750cdc43af95c2b21f6",
      "parents": [
        "eb652a47a180092b397ec40c718dfc13935f7fb6"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Nov 15 11:39:14 2017 +0000"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Dec 12 23:23:31 2017 +0000"
      },
      "message": "Separate android.test.mock from test-runner source\n\nExtracts the source for the android.test.mock library from the\nframeworks/base/test-runner directory into its own\nframeworks/base/test-mock directory. They are already treated separately\nat runtime and compile time so this just makes the separation complete.\n\nBug: 30188076\nTest: make checkbuild\nChange-Id: I20e5b06ba79677e76117c82e9f9e2ecd15e5fed6\nMerged-In: I20e5b06ba79677e76117c82e9f9e2ecd15e5fed6\n(cherry picked from commit e254526f0fe5d22681555bd4a00b7ee96fee1dc1)\n"
    },
    {
      "commit": "2b7d71c7f8028741c2200bfeba8913b7f4f55cde",
      "tree": "43f9394367779b2f9cd32dcb5f8da61c8f619f7d",
      "parents": [
        "c22e7735c31b711f8bf598c07fc872baba9af0dd"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Dec 07 13:11:06 2017 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Dec 08 21:01:53 2017 +0000"
      },
      "message": "Convert legacy-test, test-runner, and test-mock to Android.bp\n\nSee build/soong/README.md for more information.\n\nTest: m checkbuild\nChange-Id: I110f752d2fa94c44581f20d4f308d9d429da0517\n"
    },
    {
      "commit": "45f8b29ce0ca9f80c586850c4be3a1e552bc6c2f",
      "tree": "9913a099ec8f3f38240422d7cfbedef42b509f4b",
      "parents": [
        "71e9a56fc30d66ad6d475fbf26425d791c2befa2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Nov 07 18:49:43 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Dec 04 14:26:46 2017 -0800"
      },
      "message": "Add SystemApis to expose runtime profile information\n\nThe API allows a system apps which acquired\n{@code android.permission.READ_RUNTIME_PROFILE} to snapshot the runtime\nprofiles of installed packages.\n\nThe API is implemented in a new service class (AndroidRuntimeManager)\naccessible from the context using\ncontext().getPackageManager().getAndroidRuntimeManager().\n\nThe main functionality is exposed as a one way call into the\nAndroidRuntimeManager with the result being posted on a callback. The\nprofile is available to the caller as a read-only ParcelFileDescriptor.\n\nThis CL only adds the API interfaces and validation. It does not fully\nimplement the functionality.\n\noneway void snapshotRuntimeProfile(in String packageName,\n  in String codePath, in ISnapshotRuntimeProfileCallback callback)\n\nBug: 30934496\nTest: gts-tradefed -m GtsAndroidRuntimeManagerHostTestCases\n\nChange-Id: Iaa6be4715840f24508acba3162ea9c1ab725bd38\n"
    },
    {
      "commit": "6117fa8b0fc3b8a49672f8b25582e5097c4c47e4",
      "tree": "bafc29f2767c5bb75edeb26eaea7080ce3f8c88f",
      "parents": [
        "05013b377266f9e4e2651c6aa819960479dc3676"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Nov 30 16:17:16 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Nov 30 16:17:16 2017 +0000"
      },
      "message": "Switch usages of legacy-test to android.test.base\n\nThe legacy-test library has been deprecated in favour of the\nandroid.test.base library which is part of the SDK.\n\nThe following change descriptions were generated automatically and so\nmay be a little repetitive. They are provided to give the reviewer\nenough information to check the comments match what has actually been\nchanged and check the reasoning behind the changes.\n\n* core/tests/overlaytests/OverlayAppFiltered/Android.mk\n    Removed legacy-test from LOCAL_JAVA_LIBRARIES because the source\n    for module \u0027com.android.overlaytest.filtered_app_overlay\u0027 does not\n    depend on classes from legacy-test\n\n* core/tests/overlaytests/OverlayAppFirst/Android.mk\n    Removed legacy-test from LOCAL_JAVA_LIBRARIES because the source\n    for module \u0027com.android.overlaytest.first_app_overlay\u0027 does not\n    depend on classes from legacy-test\n\n* core/tests/overlaytests/OverlayAppSecond/Android.mk\n    Removed legacy-test from LOCAL_JAVA_LIBRARIES because the source\n    for module \u0027com.android.overlaytest.second_app_overlay\u0027 does not\n    depend on classes from legacy-test\n\n* core/tests/overlaytests/OverlayTest/Android.mk\n    Replaced \u0027legacy-test\u0027 with \u0027android.test.base\u0027 in\n    LOCAL_JAVA_LIBRARIES because the source for module \u0027OverlayTest\u0027\n    depends on classes from android.test.base\n\n* core/tests/overlaytests/OverlayTestOverlay/Android.mk\n    Removed legacy-test from LOCAL_JAVA_LIBRARIES because the source\n    for module \u0027com.android.overlaytest.overlay\u0027 does not depend on\n    classes from legacy-test\n\n* test-mock/Android.mk\n    Removed legacy-test from LOCAL_JAVA_LIBRARIES because the source\n    for module \u0027repackaged.android.test.mock\u0027 does not depend on\n    classes from legacy-test\n\nBug: 30188076\nTest: make checkbuild\nChange-Id: I729412304884cf5da88b05dbe8fbe645ad7b5b15\n"
    },
    {
      "commit": "f779efd62cd579f67bd3b387d59fda11ee0cbe90",
      "tree": "056bc7384db35e1c12ddffc3381ebc332d60947d",
      "parents": [
        "10d0658bf020197c16264a1da4637e0d20ee6445"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Nov 16 15:47:05 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Nov 28 12:03:53 2017 +0000"
      },
      "message": "Move legacy-test to test-base\n\nMake it consistent with the test-mock and test-runner directories.\nAlso renames the files in api/ subdirectory.\n\nBug: 30188076\nTest: make checkbuild\nChange-Id: If4f99a65fcca416ede5b3e63481398f0b451bcb7\n"
    },
    {
      "commit": "10d0658bf020197c16264a1da4637e0d20ee6445",
      "tree": "ee6a0168a07f472476a610d38cb851cfedab22bf",
      "parents": [
        "62c9860111a126c23606c9d4071fb6f8591952b3"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Nov 16 13:02:37 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Nov 28 11:24:40 2017 +0000"
      },
      "message": "Remove unused target android.test.mock.sdk\n\nBug: 30188076\nTest: make checkbuild\n\nChange-Id: I9b613969425e6c4d8700f6275484d6452a3cc3af\n"
    },
    {
      "commit": "b8b579e1b8698fc00fdd8950b5645f9e34bfc3ba",
      "tree": "2fbb0c52848b3d388e65e1e6ce69f241daa8d7a5",
      "parents": [
        "9650a435ed909ed4062d64fd2d9b085628d4a455"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Nov 22 12:34:08 2017 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Nov 22 12:34:08 2017 -0700"
      },
      "message": "Emit all APIs using Predicates.\n\nGenerate APIs using updated doclava.\n\nTest: manual inspection of API text files\nBug: 69505783\nChange-Id: I2efd22998a64ebb57588b073c4a591242f4aef91\n"
    },
    {
      "commit": "b13f15332e5279d53afa9af2c6835e2476daa655",
      "tree": "fd6921f40e0e1463bf3235276d0de8aa42b6f0dd",
      "parents": [
        "5209abad9b72623131cc4619d9eab01b386d7c01"
      ],
      "author": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Tue Nov 14 08:34:06 2017 -0800"
      },
      "committer": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Thu Nov 16 11:32:47 2017 -0800"
      },
      "message": "Remove one legacy install path\n\nAlso removed everything needed only for this path\n\nTest: Installed app via package installer, adb, google play store\nBug: 65261282\nChange-Id: Ia8a03fa5900687cd2adf844ba7e6c07e0537382e\n"
    },
    {
      "commit": "e254526f0fe5d22681555bd4a00b7ee96fee1dc1",
      "tree": "c8e450764c8d6704bdac446117634951822f7675",
      "parents": [
        "42753a512e2719ca078851a62760a19890641e6f"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Nov 15 11:39:14 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Nov 16 13:15:29 2017 +0000"
      },
      "message": "Separate android.test.mock from test-runner source\n\nExtracts the source for the android.test.mock library from the\nframeworks/base/test-runner directory into its own\nframeworks/base/test-mock directory. They are already treated separately\nat runtime and compile time so this just makes the separation complete.\n\nBug: 30188076\nTest: make checkbuild\nChange-Id: I20e5b06ba79677e76117c82e9f9e2ecd15e5fed6\n"
    }
  ]
}
