)]}'
{
  "log": [
    {
      "commit": "e588d6145dfd7171903e2e8c3583ba4904e07394",
      "tree": "f1dca5a8784eac0b6e86edc86be714c7ce7d642b",
      "parents": [
        "36b0b60e40fb37f9f08a718ed040ad5010018b8e",
        "63bf68d5c3eebe227fae099609eda2b470e20bf0"
      ],
      "author": {
        "name": "Gopinath Elanchezhian",
        "email": "gelanchezhian@google.com",
        "time": "Sat Mar 17 00:55:05 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 17 00:55:05 2018 +0000"
      },
      "message": "Merge \"Add cycle-clean option in AppLaunch\" into pi-dev"
    },
    {
      "commit": "a8bb9d255fe933938dab8c7ceec94b4fcd984847",
      "tree": "950caeba2669c34bd777b6a937f5ff4ff6595c24",
      "parents": [
        "3b0450d4a96b8caa24bb2ae0a8d29bfc1ff4e7d3",
        "62ec27e97f68513c5637383fb72de469c5e903c1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 16 22:40:46 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 16 22:40:46 2018 +0000"
      },
      "message": "Merge \"App Time Limits API in UsageStats\" into pi-dev"
    },
    {
      "commit": "63bf68d5c3eebe227fae099609eda2b470e20bf0",
      "tree": "9522b5d17a521309b2e3c06c0babc14b66721b9d",
      "parents": [
        "6604af68c5606a64ec103c973e5dea43e52817a7"
      ],
      "author": {
        "name": "gopinath",
        "email": "gelanchezhian@google.com",
        "time": "Thu Mar 15 19:24:38 2018 -0700"
      },
      "committer": {
        "name": "Gopinath Elanchezhian",
        "email": "gelanchezhian@google.com",
        "time": "Fri Mar 16 19:08:09 2018 +0000"
      },
      "message": "Add cycle-clean option in AppLaunch\n\nIf cycle-clean is enabled then all the apps will be\nkilled at the end of the cycle and cache will dropped.\n\nCycle time is also enabled to measure the sum of launch times\nduring each cycle.\n\nAbove two options will enable use to measure app launch time under\nmemeory pressue by not killing the app between the launches and\nby killing all the apps and dropping the cache before each cycle\nand measuring the cycle time.\n\nBug: b/73091210\n\nTested : Tested with nodropcache, no force stop between launches\nand cycle clean option and the cycle time avg,min and max\nis printed as expected.\n\nChange-Id: I8fb22439a9fe191104ce024c8a85a2688068cd60\n"
    },
    {
      "commit": "62ec27e97f68513c5637383fb72de469c5e903c1",
      "tree": "ce5ceae6a6e2939674f9a6633acdb84a81e19bf5",
      "parents": [
        "200de1cc86c38bc34317c500f808be40baf341d0"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sun Mar 11 14:42:06 2018 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Mar 15 17:07:28 2018 -0700"
      },
      "message": "App Time Limits API in UsageStats\n\nAllow setting groups of apps to control usage time limits on.\nApplies only to activity time in the foreground.\n\nUpdated UsageStatsTest app to be able to add an observer for\na 30 second timeout across multiple comma separated package\nnames.\n\nBug: 74335821\nTest: atest FrameworksServicesTests:AppTimeLimitControllerTests\n      Install and run frameworks/base/tests/UsageStatsTest\n\nChange-Id: I677c30b4f211f7acf72c9766df3d8c1ac56a4b4e\n"
    },
    {
      "commit": "e87923c2df457bfec3bd804f51315471291015cb",
      "tree": "85e0f6fd351140654a3b2ff0a6fffdc4e10d509f",
      "parents": [
        "4985fdef8bee4598df89f014a0886be24cd17fdb"
      ],
      "author": {
        "name": "Kevin Neas",
        "email": "kneas@google.com",
        "time": "Mon Mar 12 17:36:23 2018 -0700"
      },
      "committer": {
        "name": "Yuanlang Song",
        "email": "yuanlang@google.com",
        "time": "Thu Mar 15 21:55:45 2018 +0000"
      },
      "message": "Protecting against trying to launch apps that don\u0027t exist\n\nBUG: 74083361\n\nChange-Id: Ia0750bcca2534e794a81f094d5c214af4011c0ce\nTest: Locally\n(cherry picked from commit cb45b97a539a6460af1ecb43ddc3bf574f8100a9)\n"
    },
    {
      "commit": "f85de9616f1ddba0a143b84c79368c4ddabcccb1",
      "tree": "ea64bebbce70f75c3db871e62867ef53d52a839c",
      "parents": [
        "560b26a9d25c806b00b40c2852ef519d2adb1597",
        "090c6b1c94f75fb0d2193354ca453d528da0fa99"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 12 05:07:32 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 12 05:07:32 2018 +0000"
      },
      "message": "Merge \"Allow apps in /odm/app and /odm/priv-app\" into pi-dev"
    },
    {
      "commit": "090c6b1c94f75fb0d2193354ca453d528da0fa99",
      "tree": "cf7af82334e2f94e594aed9f219f5d456b2f9d56",
      "parents": [
        "be1033fda24a7c1ba9ef3ca590da30be56acc6d2"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Dec 28 12:03:28 2017 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Mar 12 10:40:33 2018 +0900"
      },
      "message": "Allow apps in /odm/app and /odm/priv-app\n\n/odm is a vendor partition other than /vendor. Both partitions are for\nHW-specific modules such as HALs. The difference is that /odm is owned\nby ODM (usually device manufacturer which designs the board), whereas\n/vendor is owned by SoC manufacturer. In other words, /odm partition is\nfor board-specific customization to the /vendor partition.\n\nSince apps can exist in /vendor/app and /vendor/priv-app, the same has\nto be supported for /odm partition.\n\nBug: 71366495\nTest: m -j\nTeet: cd frameworks/base/tests/OdmApps; atest .\nChange-Id: I1ec8b22b080efdefd67a45ce9c7aeaa2aef350e0\n"
    },
    {
      "commit": "505511c8290e8815fa6d8b69dead08d71e347e7b",
      "tree": "002b5e3cd28a2d67168d3dd40357c3df736468bf",
      "parents": [
        "0aa191ccbf159b0d6127cfc190e2c4d5fa319eb9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 08 18:12:46 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 08 18:30:06 2018 -0800"
      },
      "message": "Add sleep for profile saving in AppLaunch\n\nAim to prevent cases where the profile won\u0027t be saved when we compile.\n\nBug: 70734839\nTest: m\nChange-Id: Ib6f8740c70729914fc559f249b19adea1e7777f0\n"
    },
    {
      "commit": "d137c872cdc5e157c0ff65076689f7c4552a9013",
      "tree": "3c2dffe6115c25dc65faf975c7d3bc12f397bde4",
      "parents": [
        "aa79f03ca6c4c5a3a262aeaf2b608ffd4807ab13"
      ],
      "author": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Fri Feb 23 12:57:51 2018 +0000"
      },
      "committer": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Wed Mar 07 11:42:04 2018 +0000"
      },
      "message": "frameworks/base: Set LOCAL_SDK_VERSION where possible.\n\nThis change sets LOCAL_SDK_VERSION for all packages where\nthis is possible without breaking the build, and\nLOCAL_PRIVATE_PLATFORM_APIS :\u003d true otherwise.\n\nSetting one of these two will be made required soon, and this\nis a change in preparation for that. Not setting LOCAL_SDK_VERSION\nmakes the app implicitly depend on the bootclasspath, which is\noften not required. This change effectively makes depending on\nprivate apis opt-in rather than opt-out.\n\nTest: make relevant packages\nBug: 73535841\nExempt-From-Owner-Approval: Global cleanup\nChange-Id: I26458e41ecb84de91ac9a356a5d4bafb44f463c1\n"
    },
    {
      "commit": "16268a69d6fdf6758d34f67ee635dae96d479333",
      "tree": "ef49116300f6a0940ea4dec2234745b6f4acd68f",
      "parents": [
        "69598bbef56ba17a85a044f62380141964b93183",
        "dd027b3ab2087f4ccaf4e9d72472327f27789a1d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 06 23:04:16 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 23:04:16 2018 +0000"
      },
      "message": "Merge \"Fix issue #72116995: Add permission guarding Service#startForeground\" into pi-dev"
    },
    {
      "commit": "67ccb4f5c49b0a05b536a78ec66ea986ad43c26c",
      "tree": "e72d2dc4ce52c8043dc0d5286c45a8398af30b78",
      "parents": [
        "983c1e54e1ae651ffb4c0f1ce34a561624af6060",
        "0d3aa08a2f0cb82adb936e26d4de2b14408a1dd9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 06 18:50:01 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 18:50:01 2018 +0000"
      },
      "message": "Merge \"Update UsbHandlerTests\" into pi-dev"
    },
    {
      "commit": "ea1b8bd5a5647dd1cb65cac0100bac29e41ddc48",
      "tree": "592e0e5a6f374aa1895d9ad97326e6c9010a825c",
      "parents": [
        "cefe0c65184b0a288fe0c4cdce721ebc0ffb8efa"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Mar 02 16:51:13 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 06 11:06:34 2018 +0900"
      },
      "message": "Fail if the interface is not available when starting\n\nAddresses a long-standing TODO.  Now, when calling IpClient\u0027s\nstartProvisioning(), the interface has to be available (i.e.\nInterfaceParams#getByName() must return non-null).\n\nAlso:\n    - add a test\n    - refactor for testability\n    - delete some constructors no longer used\n    - properly handle passed-in null IpClient.Callback\n    - some more IpManager -\u003e IpClient renaming\n    - permit recording metrics before starting a provisioning\n      attempt (logging immediate errors) without Log.wtf().\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks/opt/net/wifi/tests/wifitests/runtests.sh passes\n    - runtest frameworks-net passes\n    - basic WiFi IpClient connections works fine\nBug: 62476366\nBug: 73487570\nMerged-In: I68e5e24122dc31e730cdbe8d75e33847e6332da4\nMerged-In: Ifd27f5d908947cd7b4e1b8d54f9fa87e43ebb11b\nMerged-In: Ief3c8e1652f69af0276fe35946ae1bf6e6b1b57e\nChange-Id: Ic83ad2a65637277dcb273feb27b2d1bb7a11eb2b\n(cherry picked from commit b152cd0aa4f333b721615bb17773b35a989245fb)\n"
    },
    {
      "commit": "dd027b3ab2087f4ccaf4e9d72472327f27789a1d",
      "tree": "1f937eaea62c46d7f3758ccb73835acfa3c77ee9",
      "parents": [
        "081d3d2d89e7f73d01260ab92114814718614bea"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jan 19 17:44:46 2018 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 05 16:59:21 2018 -0800"
      },
      "message": "Fix issue #72116995: Add permission guarding Service#startForeground\n\nNow requires permission if targeting P.\n\nNote that this is a separate permission from the existing one\nthat is required for instant apps to use foreground services.  The\nreason for this is that their semantics are different (the instant\napps permission is associated with an app op for control over what\nthe app is allowed, while the regular app permission is just a\nnormal permission that is always granted and only there for\nauditing of apps), and there are probably going to be cases where\na developer will want to use a foreground service in the full\nversion of their app but not as an instant app.\n\nBug: 72116995\nTest: atest CtsAppTestCases\nChange-Id: I883c9515c307ed8e39f0bf888c4045944c8183ac\n"
    },
    {
      "commit": "0d3aa08a2f0cb82adb936e26d4de2b14408a1dd9",
      "tree": "4847ce58b9f059a07d648153aa003cf49db3563b",
      "parents": [
        "74cfe5674202a85f2779d5e8c9092edcf0ebd4db"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri Mar 02 12:38:26 2018 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Mar 05 22:52:11 2018 +0000"
      },
      "message": "Update UsbHandlerTests\n\nSome tests weren\u0027t being run due to\nmissing annotations.\n\nBug: None\nTest: atest UsbTests -- passes\nChange-Id: Ifc99d8f0b1a825bacf7d1ed59c790c343722b37c\n"
    },
    {
      "commit": "2d8067ed3ddc3a227cd5fdf6309c4961ad41e75f",
      "tree": "ae9b2a143f138e4e2f7b45e7376810bb7381fc06",
      "parents": [
        "b9774cbe9dc0833a257e3efde166e9b91f55aa73",
        "f5312f353810abf484e9d3f3756fee97a6740337"
      ],
      "author": {
        "name": "Pavel Maltsev",
        "email": "pavelm@google.com",
        "time": "Sat Mar 03 00:14:52 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Mar 03 00:14:52 2018 +0000"
      },
      "message": "Merge \"Extend network request to query networks w/o capabilites\" am: d846adac83 am: a3be78b5e7\nam: f5312f3538\n\nChange-Id: I3bf776767be61577f1bca0d98d4aaf82a0e45336\n"
    },
    {
      "commit": "f5312f353810abf484e9d3f3756fee97a6740337",
      "tree": "c338f65767be37b896bdb643715b3814ec73a808",
      "parents": [
        "5f01f4272376b2d8aeab674baddd5510be938175",
        "a3be78b5e734ba40cbc7d8dc766c5114e695b89e"
      ],
      "author": {
        "name": "Pavel Maltsev",
        "email": "pavelm@google.com",
        "time": "Sat Mar 03 00:03:37 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Mar 03 00:03:37 2018 +0000"
      },
      "message": "Merge \"Extend network request to query networks w/o capabilites\" am: d846adac83\nam: a3be78b5e7\n\nChange-Id: Ie0c4fa4648c235589fecd79a25d28f1e62025fb7\n"
    },
    {
      "commit": "a3be78b5e734ba40cbc7d8dc766c5114e695b89e",
      "tree": "d0484ad22ace01b3e02912349b85f3ad43d6614c",
      "parents": [
        "32c5a97aece336db86e5fd6122c55e2cda270aad",
        "d846adac83878b82dcabcf2e4d73dc8a74c176d0"
      ],
      "author": {
        "name": "Pavel Maltsev",
        "email": "pavelm@google.com",
        "time": "Fri Mar 02 23:52:18 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Mar 02 23:52:18 2018 +0000"
      },
      "message": "Merge \"Extend network request to query networks w/o capabilites\"\nam: d846adac83\n\nChange-Id: Id1d86938fa2d5aff4dbf9cde87548d80c76674d9\n"
    },
    {
      "commit": "d846adac83878b82dcabcf2e4d73dc8a74c176d0",
      "tree": "ae1cc735b597b10279fa89f76483300f5ae542b9",
      "parents": [
        "45277c7aca55997670a15ff186d373b0735397de",
        "1cd48dae228b4c3fdddac12fea6621599b2274a8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 02 19:04:31 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 02 19:04:31 2018 +0000"
      },
      "message": "Merge \"Extend network request to query networks w/o capabilites\""
    },
    {
      "commit": "d1bf7733afd26c97321ab43384badb3eb9924283",
      "tree": "98e287cd8652b418568670f86fbadfaaf89ad48b",
      "parents": [
        "9fae0a82af2be32a6d29001457f686f27e551c4e",
        "1be320a494cd292235d16ce4d155bfb858eaadf0"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Mar 02 13:25:02 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Mar 02 13:25:02 2018 +0000"
      },
      "message": "Merge \"Give apps with NETWORK_SETTINGS right to see any VPN.\" am: 6001f72478 am: e5e819f078\nam: 1be320a494\n\nChange-Id: I9a9d0eb212f6de105abc070a1eb5ff698b4e67bc\n"
    },
    {
      "commit": "1be320a494cd292235d16ce4d155bfb858eaadf0",
      "tree": "2161161814650c7b6c09ac39e9a206d4ab539b81",
      "parents": [
        "207b8e2b4efdc90c6dd06e70a28365b8d6592202",
        "e5e819f0784bbe8c924744abf9e089b0c1d9a5b4"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Mar 02 13:17:23 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Mar 02 13:17:23 2018 +0000"
      },
      "message": "Merge \"Give apps with NETWORK_SETTINGS right to see any VPN.\" am: 6001f72478\nam: e5e819f078\n\nChange-Id: I7f08217c5abc86a8784b91145f1b02d6693b3919\n"
    },
    {
      "commit": "e5e819f0784bbe8c924744abf9e089b0c1d9a5b4",
      "tree": "8b3fdd117986b1d3a7be85b02962c5a9be0e17bf",
      "parents": [
        "18e51821b10eaae1745039daa80883f0fd864491",
        "6001f72478f44bc139e348be5e86e3d39525444d"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Mar 02 13:10:45 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Mar 02 13:10:45 2018 +0000"
      },
      "message": "Merge \"Give apps with NETWORK_SETTINGS right to see any VPN.\"\nam: 6001f72478\n\nChange-Id: Iab9c8df6071e6dec35b5f492eb8344ba370e0036\n"
    },
    {
      "commit": "9fae0a82af2be32a6d29001457f686f27e551c4e",
      "tree": "e12198ee20096878be7042bb76c882ab66128897",
      "parents": [
        "f10700343c142ef95694aa5fa92ccba95201a4dc",
        "207b8e2b4efdc90c6dd06e70a28365b8d6592202"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Mar 02 12:54:29 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Mar 02 12:54:29 2018 +0000"
      },
      "message": "Merge \"Give VPNs the INTERNET capability when they route most of the IP space\" am: 20013384dc am: 18e51821b1\nam: 207b8e2b4e\n\nChange-Id: Ifd77149ca2c45249b8776c878c6fac46ae81c2a4\n"
    },
    {
      "commit": "207b8e2b4efdc90c6dd06e70a28365b8d6592202",
      "tree": "7161eb4596c2ef2f654fcd8b66098acaa7776ef5",
      "parents": [
        "85f47b72b8f245bc1b94ff2ecadb48e454a95b3f",
        "18e51821b10eaae1745039daa80883f0fd864491"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Mar 02 12:46:46 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Mar 02 12:46:46 2018 +0000"
      },
      "message": "Merge \"Give VPNs the INTERNET capability when they route most of the IP space\" am: 20013384dc\nam: 18e51821b1\n\nChange-Id: I33c6fcc72753e00af601cf915aa78416174a3871\n"
    },
    {
      "commit": "18e51821b10eaae1745039daa80883f0fd864491",
      "tree": "17ba0b668968fbdaf90bf4fd3de44cd6674e91a3",
      "parents": [
        "1c1b58432b0a79ab7e9c1b5676e61c8f0083c055",
        "20013384dcb0eb69ccabf9f7444df0ecfd47c75e"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Mar 02 12:34:25 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Mar 02 12:34:25 2018 +0000"
      },
      "message": "Merge \"Give VPNs the INTERNET capability when they route most of the IP space\"\nam: 20013384dc\n\nChange-Id: Icd1466c79d2593fcab5bd2e31a1acb3a36a705da\n"
    },
    {
      "commit": "6001f72478f44bc139e348be5e86e3d39525444d",
      "tree": "f6bd4fccb0d76a3d28e7867855fd53d2043ad306",
      "parents": [
        "20013384dcb0eb69ccabf9f7444df0ecfd47c75e",
        "b552c4655f59131cbfd00beaf9cbfcd291dfe852"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Mar 02 11:52:15 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 02 11:52:15 2018 +0000"
      },
      "message": "Merge \"Give apps with NETWORK_SETTINGS right to see any VPN.\""
    },
    {
      "commit": "b552c4655f59131cbfd00beaf9cbfcd291dfe852",
      "tree": "11a177484e6f7a4427428b8ea852aa654f862dc8",
      "parents": [
        "6b0e7370e2a2f3bcfe526af5803135c7872ad81a"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Wed Feb 21 18:43:54 2018 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Mar 02 17:10:11 2018 +0900"
      },
      "message": "Give apps with NETWORK_SETTINGS right to see any VPN.\n\n...not only the ones that apply to them.\n\nBug: 73217368\nTest: runtest frameworks-net and CTS\nChange-Id: I436972a3e51e98bdd815771b451bcedadf684763\n"
    },
    {
      "commit": "adbf1d029b753fabc2a7a5ad3b22d3d416cecdd9",
      "tree": "d9ea33106d990144d6577e5692c5757e176c6fc3",
      "parents": [
        "6b0e7370e2a2f3bcfe526af5803135c7872ad81a"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Mon Feb 26 11:52:46 2018 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Mar 02 16:20:22 2018 +0900"
      },
      "message": "Give VPNs the INTERNET capability when they route most of the IP space\n\nTest: manual, plus wrote some new tests for this\nBug: 72765718\nChange-Id: I9759da72b752fd8eeb1d0647db9ab341f04c0528\n"
    },
    {
      "commit": "1cd48dae228b4c3fdddac12fea6621599b2274a8",
      "tree": "53e5cac577192f2818f729542e823319d69f388d",
      "parents": [
        "7959e70ef2c4ac5c4a3782a8cd231f9b20568dd5"
      ],
      "author": {
        "name": "Pavel Maltsev",
        "email": "pavelm@google.com",
        "time": "Thu Feb 01 11:16:02 2018 -0800"
      },
      "committer": {
        "name": "Pavel Maltsev",
        "email": "pavelm@google.com",
        "time": "Thu Mar 01 17:52:02 2018 -0800"
      },
      "message": "Extend network request to query networks w/o capabilites\n\nAdd another bit mask into NetworkCapabilities class that represents\nunwanted capabilities and corresponding methods to add and remove them.\n\nBug: 72828388\nBug: 68762530\n\nTest: runtest -x frameworks/base/tests/net/\nChange-Id: Ie291167eb74fdb696c7ee145c8cc46ea8115d6ba\n"
    },
    {
      "commit": "09ad1cbdc0bd1a88d1de0758aecb42caa92d6e99",
      "tree": "dfb24fd029e47d6ede80aa31cc888ee1ea4757db",
      "parents": [
        "669194a830299225fce7e384dc0f501decfee1e1",
        "9ee9e6b2b64dfdcb1a9a30c4134244a270883ae9"
      ],
      "author": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Thu Mar 01 11:53:43 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Mar 01 11:53:43 2018 +0000"
      },
      "message": "Merge \"frameworks/base: Set LOCAL_SDK_VERSION where possible.\" am: c164c83191\nam: 9ee9e6b2b6\n\nChange-Id: I984b5ee633078401769d3c649aa9b020715772df\n"
    },
    {
      "commit": "9ee9e6b2b64dfdcb1a9a30c4134244a270883ae9",
      "tree": "75b836921fd9350f4a322fefbcc3bce0c4d1a262",
      "parents": [
        "773523a6672952fe8fb844db3e73c6fc853a2f31",
        "c164c831918dd20903974b325d494991b146d08d"
      ],
      "author": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Thu Mar 01 11:46:29 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Mar 01 11:46:29 2018 +0000"
      },
      "message": "Merge \"frameworks/base: Set LOCAL_SDK_VERSION where possible.\"\nam: c164c83191\n\nChange-Id: Icd753634a498a9c1a2d2e27ad4e6cd788e7b9e1f\n"
    },
    {
      "commit": "1ddda1cba36080f9b8d658dea063ae7c10ac96bf",
      "tree": "ed26909be041c2fe70c63de76e089d6714dc84ef",
      "parents": [
        "467b444d0a84e0095cd89442dd274f7e2403ef24",
        "bc697b6abf61f6940f37661ec58aa1288edcc51e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 01 02:47:15 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 01 02:47:15 2018 +0000"
      },
      "message": "Merge \"Fix link-type check warning on com.android.media.remotedisplay\""
    },
    {
      "commit": "a3e79fbb8cdc9ef78e519f2d89e2f70e41864a1d",
      "tree": "e2bac4b9794e76f3923b096f5efb99d631a19c6a",
      "parents": [
        "e8b557bc08facb3d60b605f3e8cb26b31baaa28b"
      ],
      "author": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Fri Feb 23 12:57:51 2018 +0000"
      },
      "committer": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Wed Feb 28 17:15:21 2018 +0000"
      },
      "message": "frameworks/base: Set LOCAL_SDK_VERSION where possible.\n\nThis change sets LOCAL_SDK_VERSION for all packages where\nthis is possible without breaking the build, and\nLOCAL_PRIVATE_PLATFORM_APIS :\u003d true otherwise.\n\nSetting one of these two will be made required soon, and this\nis a change in preparation for that. Not setting LOCAL_SDK_VERSION\nmakes the app implicitly depend on the bootclasspath, which is\noften not required. This change effectively makes depending on\nprivate apis opt-in rather than opt-out.\n\nTest: make relevant packages\nBug: 73535841\nChange-Id: Ibcffec873a693d1c792ca210fb597d2bf37e9068\nMerged-In: I4233b9091d9066c4fa69f3d24aaf367ea500f760\n"
    },
    {
      "commit": "ab6ec61251786bf6b4d0407db3bc28aeefcb55db",
      "tree": "fbdb5c5bd38879440eac702018dd53c0ed639541",
      "parents": [
        "58c83fa7c8609059f3d66a5860abb302284c2981"
      ],
      "author": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Fri Feb 23 12:57:51 2018 +0000"
      },
      "committer": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Wed Feb 28 15:13:23 2018 +0000"
      },
      "message": "frameworks/base: Set LOCAL_SDK_VERSION where possible.\n\nThis change sets LOCAL_SDK_VERSION for all packages where\nthis is possible without breaking the build, and\nLOCAL_PRIVATE_PLATFORM_APIS :\u003d true otherwise.\n\nSetting one of these two will be made required soon, and this\nis a change in preparation for that. Not setting LOCAL_SDK_VERSION\nmakes the app implicitly depend on the bootclasspath, which is\noften not required. This change effectively makes depending on\nprivate apis opt-in rather than opt-out.\n\nTest: make relevant packages\nBug: 73535841\nChange-Id: I4233b9091d9066c4fa69f3d24aaf367ea500f760\n"
    },
    {
      "commit": "9f3bad7260d718558d6f2f2048d973f2cd588b0b",
      "tree": "919f3f567603fb8cf0b98d86f200f546910d66f8",
      "parents": [
        "4c00edd36139789a94cc4a01c51451edc4476df8"
      ],
      "author": {
        "name": "Alexandru-Andrei Rotaru",
        "email": "rotaru@google.com",
        "time": "Tue Jul 18 16:49:22 2017 +0100"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Feb 28 17:52:38 2018 +0900"
      },
      "message": "Notify the user and turn off tethering when the service is disallowed.\n\nAdded UserRestrinctionListener for turning the service off one the\nDISALLOW_CONFIG_TETHERING is on into Tethering.  Added notification\nabout\ntethering being turned off. Also added Unit Tests to test the\nfunctionality\nof the UserRestrictionListener added.\n\nBug: 27936525\nTest: Turn the tehering service on (either wifi, usb or bluetooth).\nAutomatically the system should send a notification about the service\nbeing active.Close settings from recents. From TestDPC User Restrictions\nswitch on DISALLOW_CONFIG_TETHERING. The tethering should be turned off\nand a notification should appear informing that the service is inactive.\n\nMerged-In: Ib7ea8885cedc2a842ebd4487c8b366a6666996bc\nChange-Id: I4a57137a7ad592ca186d9508d5cc2fad3f1bc985\n"
    },
    {
      "commit": "b1a83edb5cd2a5ce018536e16bec92f1c928fb03",
      "tree": "7e47241d63c9f67358cf28c48a89e7bf19f66868",
      "parents": [
        "805ea225b9f65206a5296b5cdeb52081e57154f3",
        "3b7de5541924927e4dee1b8718ad2b6097222cb0"
      ],
      "author": {
        "name": "Pavel Maltsev",
        "email": "pavelm@google.com",
        "time": "Wed Feb 28 08:42:24 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 28 08:42:24 2018 +0000"
      },
      "message": "Merge \"Add OEM_PAID network capability\" am: 4c00edd361 am: 7b87c2050c\nam: 3b7de55419\n\nChange-Id: Id64d288764dc5a556b60f5e3b866b40792647ac0\n"
    },
    {
      "commit": "3b7de5541924927e4dee1b8718ad2b6097222cb0",
      "tree": "5d829f96032af5601ac212e04a957039bb402493",
      "parents": [
        "9af710c58756fb75c9b97604b85f8d9000a8c2df",
        "7b87c2050c61db50a809737fe9be3fc33682cf59"
      ],
      "author": {
        "name": "Pavel Maltsev",
        "email": "pavelm@google.com",
        "time": "Wed Feb 28 08:28:25 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 28 08:28:25 2018 +0000"
      },
      "message": "Merge \"Add OEM_PAID network capability\" am: 4c00edd361\nam: 7b87c2050c\n\nChange-Id: Ie0377fea66f784c910bd0a06f87543cc5cf82c84\n"
    },
    {
      "commit": "4c00edd36139789a94cc4a01c51451edc4476df8",
      "tree": "fcff696be14e41d4490762d5896562208a4c512e",
      "parents": [
        "8c32954906f0ce7192f25b38154d9dbc18bc508b",
        "43403201e66f49a309fd23f42705e3a434a5fa01"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 28 07:06:00 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 28 07:06:00 2018 +0000"
      },
      "message": "Merge \"Add OEM_PAID network capability\""
    },
    {
      "commit": "bc697b6abf61f6940f37661ec58aa1288edcc51e",
      "tree": "4ba7ce0d33099a2eaf97dc2aa153161701fb69f7",
      "parents": [
        "2016c0f4f6de20411257ed84d4fc1aa3d6226d41"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Feb 22 16:21:14 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Feb 28 09:45:40 2018 +0900"
      },
      "message": "Fix link-type check warning on com.android.media.remotedisplay\n\nThe library has been built without SDK, and is used by an app\nRemoteDisplayProviderTest that is built with SDK. Such this SDK -\u003e\nnon-SDK dependency has been causing link-type check warnings, which will\nturn into errors soon.\n\nThis change fixes the warning by making a stub library\ncom.android.media.remotedisplay.stubs from the runtime library and let the app\nto link against the stub library. Since the stubs library does not use any\nprivate APIs, it is built with SDK.\n\nBug: 69899800\nTest: m -j RemoteDisplayProviderTest is successful and does not show any\nlink-type check warning.\n\nChange-Id: I7ee297a9d1aa4f01136b9a026a4939df2d483b8c\n"
    },
    {
      "commit": "23aee1bbb511310d636347d45a0e6fa14aae9543",
      "tree": "7fb741f41e16bd27745cce22b1f0a8c1951e7fc8",
      "parents": [
        "7cd6e3a0e9152cf6b694266281e48e61e4bf8c3b",
        "7db57cbea2c15d03d153969d0bbf45b3fd0761da"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 28 00:09:15 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 28 00:09:15 2018 +0000"
      },
      "message": "Merge changes from topic \"terminal_type_fix\"\n\n* changes:\n  Add test for UsbDescriptorParser.java\n  USB Audio: broaden Terminal Type interpretation\n"
    },
    {
      "commit": "8fa73a4b8787ef5bc842a3ca3b47c3bac251a899",
      "tree": "471fc4a4d24cf142a5f29202d888e0101246903f",
      "parents": [
        "911128733927bce59a4a567f459a3e8c29f19d2b",
        "20f00dfe66f01e02a7bd131f723c0bfe1baaed6a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 27 19:39:51 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 27 19:39:51 2018 +0000"
      },
      "message": "Merge \"Frameworks: Annotate JUnit4 test with @Test\" am: 4d9bec6b4a am: 0e8e9472ba\nam: 20f00dfe66\n\nChange-Id: I0c611c22eedda2d849bd16ef2e2bb7e2e60e0a5a\n"
    },
    {
      "commit": "20f00dfe66f01e02a7bd131f723c0bfe1baaed6a",
      "tree": "aa13e269a57c976746e7a53ef11faf560325a891",
      "parents": [
        "9f53412f2f11cee6fc3eaa6e97f0a362354617f7",
        "0e8e9472baffd618a4c2da84a0b073849734e6a5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 27 19:19:01 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 27 19:19:01 2018 +0000"
      },
      "message": "Merge \"Frameworks: Annotate JUnit4 test with @Test\" am: 4d9bec6b4a\nam: 0e8e9472ba\n\nChange-Id: I70e11136f6e261cccf4ce57f757f97999f74b402\n"
    },
    {
      "commit": "7db57cbea2c15d03d153969d0bbf45b3fd0761da",
      "tree": "db318328fc88c2a8a324dce8e72454201896a3cf",
      "parents": [
        "0ef73801f5b5a560a1f84ccad3d13bd80b525de2"
      ],
      "author": {
        "name": "Andrew Chant",
        "email": "achant@google.com",
        "time": "Mon Feb 26 14:32:19 2018 -0800"
      },
      "committer": {
        "name": "Andrew Chant",
        "email": "achant@google.com",
        "time": "Mon Feb 26 17:41:26 2018 -0800"
      },
      "message": "Add test for UsbDescriptorParser.java\n\nTests with descriptors from USB-C to 3.5mm adapter in four cases:\n - line level load connected, no microphone\n - low impedance load with microphone\n - low impedance load without microphone\n - no load attached.\n\nTest: Ran tests without fix for bug 73813676, failed.\nRan tests with fix, all passed.\n\nChange-Id: I067a15a122996e80c70bf287c6982611b6deee01\n"
    },
    {
      "commit": "886a7bdc3b19d7755cd77dd1254cd9ebefdeaa95",
      "tree": "9f086b72d475454becb30dd86eaedfec1b46c5e4",
      "parents": [
        "d8580e897be41b130a491ac959926b4444aec2b5"
      ],
      "author": {
        "name": "Arthur Eubanks",
        "email": "aeubanks@google.com",
        "time": "Mon Feb 26 14:53:56 2018 -0800"
      },
      "committer": {
        "name": "Arthur Eubanks",
        "email": "aeubanks@google.com",
        "time": "Mon Feb 26 15:06:19 2018 -0800"
      },
      "message": "Remove internal links from ActivityManagerPerfTests README\n\nTest: None\nChange-Id: I0dd9cfa210c5ce3a207708c80813fed032c6e196\n"
    },
    {
      "commit": "5f50a4b8275dfe009eb346457da531e40c1874a5",
      "tree": "03cc95e62e7602733d3a53186cad127fbf400ba8",
      "parents": [
        "ee211a8822a073debe8255ae7aa075b2a5a6eb14",
        "dec475649aceb419c496b56748aaf5d600f904bb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 26 22:29:16 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 26 22:29:16 2018 +0000"
      },
      "message": "Merge \"Improve output of voice interaction test app.\""
    },
    {
      "commit": "f157b9f983c50c642885e5138666bec15abe8f00",
      "tree": "9eb3c55e3fcb0d1f8c6aab036021e49279f56809",
      "parents": [
        "61799eacf4af2a9f3b9477096ab7712eb8de22e2",
        "0fbfc627ee2f1e43e69f6339c48d169e74f556d5"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Feb 26 17:11:50 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 26 17:11:50 2018 +0000"
      },
      "message": "Merge \"CoreTests: Tidy up legacy tests.\""
    },
    {
      "commit": "a7b26b59af43393cd7d1731dd2833e252bc82933",
      "tree": "86a4190be14f21941f5b211a66b6f044f35cabc0",
      "parents": [
        "701421c6c9cc388b8e0c2817e4081a1b35e92ce6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 26 08:06:30 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 26 08:09:26 2018 -0800"
      },
      "message": "Frameworks: Annotate JUnit4 test with @Test\n\nMollify Errorprone.\n\nBug: 72076216\nTest: m javac-check RUN_ERROR_PRONE\u003dtrue\nTest: atest IpSecServiceParameterizedTest\nChange-Id: Ia3a253c4c5994937efc0f498ac047c5fb4eee3e9\n"
    },
    {
      "commit": "dec475649aceb419c496b56748aaf5d600f904bb",
      "tree": "ce24dca4f7151a992049bef40f5cbc58fdf96090",
      "parents": [
        "761b33299afba0537a6b527495b30c17ecadbc65"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 23 15:38:03 2018 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 23 15:38:03 2018 -0800"
      },
      "message": "Improve output of voice interaction test app.\n\nBug: 73830394\nTest: built and ran\nChange-Id: I9722b91021585e15ec52ffd36325f884e784f7da\n"
    },
    {
      "commit": "aa23db0fdcf01c679d634e684c278a4faf753a0a",
      "tree": "eac7d800f1851b950c7c372031cc51764fc52155",
      "parents": [
        "bf077b51b4065da8c8af0a3ff59f39c8eeda1690",
        "55ca1f4c47f941a0a7418b71819a13a99b0dde64"
      ],
      "author": {
        "name": "Gopinath Elanchezhian",
        "email": "gelanchezhian@google.com",
        "time": "Fri Feb 23 22:20:22 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 23 22:20:22 2018 +0000"
      },
      "message": "Merge \"Add support for hot launch in App launch test.\""
    },
    {
      "commit": "c5f5ad103fb9416cb63ec9f7c2397bb343cb2f44",
      "tree": "46188506d53f9a59e12750ec95f146b424460687",
      "parents": [
        "1dcd64578992a650f3134be2178694ce0b6ee9d8",
        "dd531adbd2e49ccb47ae70df0bb75c77472612bc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 23 21:26:02 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 23 21:26:02 2018 +0000"
      },
      "message": "Merge \"Frameworks: Remove bogus test method\" am: c65d52ff78 am: 8120e8616b\nam: dd531adbd2\n\nChange-Id: I0317dedfe5c20c54551f72e6c691dea67dde83ca\n"
    },
    {
      "commit": "dd531adbd2e49ccb47ae70df0bb75c77472612bc",
      "tree": "72cc206d64192d970e5daab9dac8356e2c82f70d",
      "parents": [
        "239d74fa195fd047f66c9fd9f1d5ad1cdb4de62c",
        "8120e8616bb571b3b40abbab14fb391f38401149"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 23 21:15:06 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 23 21:15:06 2018 +0000"
      },
      "message": "Merge \"Frameworks: Remove bogus test method\" am: c65d52ff78\nam: 8120e8616b\n\nChange-Id: I1dd4cb24ed7c5afdb9185bacabf7b0a3e8f3a7d8\n"
    },
    {
      "commit": "55ca1f4c47f941a0a7418b71819a13a99b0dde64",
      "tree": "5359581d94faabf85861cfb991166d014a779ec8",
      "parents": [
        "0f3f71f41a1cb60fde4ab60d6a4bb1a189ba5920"
      ],
      "author": {
        "name": "gopinath",
        "email": "gelanchezhian@google.com",
        "time": "Tue Feb 20 17:21:18 2018 -0800"
      },
      "committer": {
        "name": "Gopinath Elanchezhian",
        "email": "gelanchezhian@google.com",
        "time": "Fri Feb 23 19:42:15 2018 +0000"
      },
      "message": "Add support for hot launch in App launch test.\n\nforce-stop-app option is added to control hot launch and\ncold launch.\n\nBug: b/73091210\n\nTest:\nam instrument -w -r   -e debug false -e launch_directory /sdcard\n-e apps \"Calculator^Calculator|Clock^Clock\" -e trial_launch true\n-e log false -e timeout_msec 300000 -e force-stop-app false\n-e launch_order CYCLIC -e simpleperf_cmd \"simpleperf stat -a\"\n-e launch_iterations 10 com.android.tests.applaunch/android.test.InstrumentationTestRunner\n\nChange-Id: I4b0f7a61c46e8091e69cad9fa65b5b34f680252d\n"
    },
    {
      "commit": "725024bb2a4488ef90de86ea4f70f3c4a1d4fc7c",
      "tree": "e4fc9fdf790b7f800304c9418f4dad9bcc651441",
      "parents": [
        "f6ff0f88eed8fa3b1e12bb6d95fe2c7ca625330c",
        "e0c2995d0f16246336d4385d5ebe631a60e12e86"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Fri Feb 23 16:28:58 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 23 16:28:58 2018 +0000"
      },
      "message": "Merge \"Name specific app for rapid data usage.\""
    },
    {
      "commit": "e0c2995d0f16246336d4385d5ebe631a60e12e86",
      "tree": "7a91be48313ada0edbddf6edf2b35f34e2a9165d",
      "parents": [
        "f66699314c762ea8ee3bcfbd6654b02e4e6b7c98"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 20 17:24:55 2018 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Fri Feb 23 16:27:39 2018 +0000"
      },
      "message": "Name specific app for rapid data usage.\n\nWhen a single app is responsible for more than half of the data usage\nthat caused us to trigger a \"rapid usage\" alert, name that app in the\nnotification.  Tests to verify.\n\nMove NPMS-\u003eNSS direct calls to \"Internal\" pattern, following\nbest-practices to avoid unnecessary AIDL exposure.\n\nRemove 3G/4G split mobile plan support, which has been deprecated for\nyears and was never supported in a shipping product.\n\nMove MultipathPolicyTracker in tree to reflect its package name.\n\nTest: bit FrameworksNetTests:*\nTest: bit FrameworksServicesTests:com.android.server.NetworkPolicyManagerServiceTest\nBug: 69263587, 64221505, 73431080, 72746951\nExempt-From-Owner-Approval: approved in previous PS\nChange-Id: I3e4ec1ae2222d51b232f76f32faca93d4f8cd272\n"
    },
    {
      "commit": "336dd4c262dbc98e8fcc1622d2815716ab6012b3",
      "tree": "72ad5f25f30125ebc0e7bb68d09a27b9c3fadd4a",
      "parents": [
        "c3e842fde8132e40d3f8915658853a0f7b378160"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 22 21:25:25 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 22 21:25:25 2018 -0800"
      },
      "message": "Frameworks: Remove bogus test method\n\nIt\u0027s tripping Errorprone\u0027s JUnit3 test pattern.\n\nBug: 73797534\nTest: m javac-check RUN_ERROR_PRONE\u003dtrue\nChange-Id: Ib0b9b342e085ba640d60e82ebd9a1bbb4fc4e916\n"
    },
    {
      "commit": "f8149eb6ae50ac373731984c817b52f3deb63a67",
      "tree": "8ee44f56c4922ff310e417fbc74fc3787eefbd00",
      "parents": [
        "99ef04f7173677ac52bf952979085e97e25f858c",
        "ebd2ea0daf7d5bbeba8b6444c81b023ea55becec"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 22 18:49:15 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 22 18:49:15 2018 +0000"
      },
      "message": "Merge \"Start target package by binding to Service, not starting Activity\""
    },
    {
      "commit": "ebd2ea0daf7d5bbeba8b6444c81b023ea55becec",
      "tree": "7e1473c8c132fc3053aa0e1a0d4681b36b5a197f",
      "parents": [
        "6ccc053d8b3cfedc25f9c87c672e5af824085610"
      ],
      "author": {
        "name": "Arthur Eubanks",
        "email": "aeubanks@google.com",
        "time": "Tue Feb 13 10:20:39 2018 -0800"
      },
      "committer": {
        "name": "Arthur Eubanks",
        "email": "aeubanks@google.com",
        "time": "Wed Feb 21 17:36:38 2018 -0800"
      },
      "message": "Start target package by binding to Service, not starting Activity\n\nThis reduces the stddev for a bunch of perf tests by quite a bit\n(mostly the ones that rely on starting the package).\n\nThis is because previously the target\npackage was made to start running by starting an Activity, which takes\nup CPU cycles.\n\nNow we start a Service and wait for it to report back that its Looper\nqueue is idle, then proceed.\n\nThis does seem to slightly increase the runtime for some of the tests\nthough...\n\nSome test numbers (only tests that have a large difference before and\nafter):\n\nBefore:\nregisteredBroadcast_mean\u003d1920309\nregisteredBroadcast_median\u003d1724844\nregisteredBroadcast_stddev\u003d559809\nmanifestBroadcastRunning_mean\u003d2395693\nmanifestBroadcastRunning_median\u003d2063385\nmanifestBroadcastRunning_stddev\u003d809836\ncontentProviderRunning_mean\u003d668463\ncontentProviderRunning_median\u003d588125\ncontentProviderRunning_stddev\u003d214116\nbindServiceAllowOomManagement_mean\u003d1952431\nbindServiceAllowOomManagement_median\u003d2017682\nbindServiceAllowOomManagement_stddev\u003d289311\nbindServiceAlreadyBound_mean\u003d2146257\nbindServiceAlreadyBound_median\u003d2022891\nbindServiceAlreadyBound_stddev\u003d614549\nbindServiceRunning_mean\u003d4947541\nbindServiceRunning_median\u003d4710521\nbindServiceRunning_stddev\u003d962094\nstartServiceProcessRunningReadUriPermission_mean\u003d1914106\nstartServiceProcessRunningReadUriPermission_median\u003d1915209\nstartServiceProcessRunningReadUriPermission_stddev\u003d196136\nstartServiceProcessRunning_mean\u003d2841122\nstartServiceProcessRunning_median\u003d2564792\nstartServiceProcessRunning_stddev\u003d684654\n\nAfter:\nregisteredBroadcast_mean\u003d2559587\nregisteredBroadcast_median\u003d2579792\nregisteredBroadcast_stddev\u003d191377\nmanifestBroadcastRunning_mean\u003d2709707\nmanifestBroadcastRunning_median\u003d2725365\nmanifestBroadcastRunning_stddev\u003d165661\ncontentProviderRunning_mean\u003d663058\ncontentProviderRunning_median\u003d639062\ncontentProviderRunning_stddev\u003d97864\nbindServiceAllowOomManagement_mean\u003d1899179\nbindServiceAllowOomManagement_median\u003d1932553\nbindServiceAllowOomManagement_stddev\u003d184329\nbindServiceAlreadyBound_mean\u003d2023920\nbindServiceAlreadyBound_median\u003d2051614\nbindServiceAlreadyBound_stddev\u003d159993\nbindServiceRunning_mean\u003d6683975\nbindServiceRunning_median\u003d6753699\nbindServiceRunning_stddev\u003d475811\nstartServiceProcessRunningReadUriPermission_mean\u003d2388997\nstartServiceProcessRunningReadUriPermission_median\u003d2405365\nstartServiceProcessRunningReadUriPermission_stddev\u003d244184\nstartServiceProcessRunning_mean\u003d3384101\nstartServiceProcessRunning_median\u003d3388282\nstartServiceProcessRunning_stddev\u003d207333\n\nTest: m ActivityManagerPerfTestsTestApp ActivityManagerPerfTests\nTest: adb install \\\n$OUT/data/app/ActivityManagerPerfTestsTestApp/ActivityManagerPerfTestsTestApp.apk\nTest: adb install \\\n$OUT/data/app/ActivityManagerPerfTests/ActivityManagerPerfTests.apk\nTest: adb shell am instrument -w \\\ncom.android.frameworks.perftests.amtests/android.support.test.runner.AndroidJUnitRunner\n\nBUG: 67460485\nChange-Id: Iaaaf7d8db885cc1149e74cb7ce4b47a295ab20e4\n"
    },
    {
      "commit": "2f72369ee9abde548786087f7612b2528abee6c8",
      "tree": "cc096d3a2f8ed8f8fc38276cf5c8c49c73c72fd6",
      "parents": [
        "bf65339444bcaf9ee987940101a39d7339f76ea7"
      ],
      "author": {
        "name": "Kevin Neas",
        "email": "kneas@google.com",
        "time": "Wed Feb 21 15:37:21 2018 -0800"
      },
      "committer": {
        "name": "Kevin Neas",
        "email": "kneas@google.com",
        "time": "Wed Feb 21 15:38:50 2018 -0800"
      },
      "message": "Updating AppLaunchWear to correctly parse the launch message.\n\nWhen we don\u0027t kill Home, we get an Warning message:\n\"Warning: Activity not started, its current task has ben brought to\nthe front\"\n\nThis causes the current parser to think the app didn\u0027t launch, because\nit\u0027s looking in the wrong line. Adding +1 to each line, in the cases\nwhere we launch Home\n\nTest: locally\nChange-Id: Ie232a57921ed7cf82a6f17b607fbb47591bcdbed\n"
    },
    {
      "commit": "e70172cbd32a9928002b5e3bdb9604d61bdf1df7",
      "tree": "15183cbd4daa3054c063690a9e8cf560136a23f7",
      "parents": [
        "f135eed0eb1adfe942f7bf4dab20a3aa93603aae",
        "ca17a8ea26167c257c8df07c5f42ef07cfd7ae8a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 21 20:40:47 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 21 20:40:47 2018 +0000"
      },
      "message": "Merge \"Update ActivityManagerPerfTests README with atest\""
    },
    {
      "commit": "e8520b4fc9154afcf377e1e4bfafaa9c0a852884",
      "tree": "fb4d38fa527afac42597f9ddf16966d6e55e840e",
      "parents": [
        "026cd5e3da3f0c21cdde0741a11ad0212555cee7"
      ],
      "author": {
        "name": "Kevin Neas",
        "email": "kneas@google.com",
        "time": "Wed Feb 21 12:31:40 2018 -0800"
      },
      "committer": {
        "name": "Kevin Neas",
        "email": "kneas@google.com",
        "time": "Wed Feb 21 12:34:43 2018 -0800"
      },
      "message": "Updating AppLaunchWear with more logging and logic.\n\nAgenda keeps failing. Need to more logging to know why\nContacts keeps getting killed. Again, need more logging\n\nTest: local\n\nChange-Id: I6930892d8a2eaa7ad410284fba9ed1c4980820f7\n"
    },
    {
      "commit": "f1862955845e8faaea1b40f179cae578a70119ff",
      "tree": "ed957c7c5a82dc554a028e3b1ab2a75c5c76a0f4",
      "parents": [
        "efee606e8634a5415739b7ec11b4e7330e2e0d2a",
        "514fc731221384f45302841e0f6336ad9dfccc89"
      ],
      "author": {
        "name": "Kevin Neas",
        "email": "kneas@google.com",
        "time": "Wed Feb 21 16:59:20 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 21 16:59:20 2018 +0000"
      },
      "message": "Merge \"Updating AppLaunchWear to add more logging.\""
    },
    {
      "commit": "0fbfc627ee2f1e43e69f6339c48d169e74f556d5",
      "tree": "56c05c5846ce4375b904f9ca48018dae1ffdb6a9",
      "parents": [
        "89c32b38a82dc7e810f53c44284fa7b60e7f10f0"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Feb 21 14:11:53 2018 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Feb 21 14:52:51 2018 +0000"
      },
      "message": "CoreTests: Tidy up legacy tests.\n\n(not to be confused with core/tests/FrameworksCoreTests.)\n\n- JniLibTest: Completely broken, ther\u0027s no Jni lib to load.\n- MiscRegressionTest: Doesn\u0027t test anything.\n- Sha1Test: We have more systematic and complete benchmarks in libcore.\n\nThe Apache HTTP tests remain, and only because they are the only\nremaining tests of the Apache HTTP lib. They will be moved to the apache\nrepository in a separate commit.\n\nAlso remove bogus dependencies on conscrypt and bouncycastle.\n\nBug: 73635411\nTest: adb shell am instrument -w android.core/android.test.InstrumentationTestRunner\n\nChange-Id: Ia3648da023ceabcb6023941961810516857c4f48\n"
    },
    {
      "commit": "514fc731221384f45302841e0f6336ad9dfccc89",
      "tree": "557dacd725801bc99cc597b6ad140049c79c79c0",
      "parents": [
        "437680c4ff4a33c7377b22cc39209561ae2e3b55"
      ],
      "author": {
        "name": "Kevin Neas",
        "email": "kneas@google.com",
        "time": "Tue Feb 20 16:13:20 2018 -0800"
      },
      "committer": {
        "name": "Kevin Neas",
        "email": "kneas@google.com",
        "time": "Wed Feb 21 04:37:05 2018 +0000"
      },
      "message": "Updating AppLaunchWear to add more logging.\n\nTest: local\nChange-Id: Ib29afa44819c053789dd956d655395f205b89f64\n"
    },
    {
      "commit": "ca17a8ea26167c257c8df07c5f42ef07cfd7ae8a",
      "tree": "2e3cf0a0540d67b584064a4dc6b10bcc5f1c3c17",
      "parents": [
        "6ccc053d8b3cfedc25f9c87c672e5af824085610"
      ],
      "author": {
        "name": "Arthur Eubanks",
        "email": "aeubanks@google.com",
        "time": "Tue Feb 20 17:24:36 2018 -0800"
      },
      "committer": {
        "name": "Arthur Eubanks",
        "email": "aeubanks@google.com",
        "time": "Tue Feb 20 17:24:36 2018 -0800"
      },
      "message": "Update ActivityManagerPerfTests README with atest\n\natest command now works\n\nTest: atest -v ActivityManagerPerfTests\nChange-Id: I4368199bacb2359d2ddef66ba9783ce1b663e2ab\n"
    },
    {
      "commit": "0799a5f5c5225d96ccc965c61e27ce7b19d53573",
      "tree": "692c7859e36cb4679aad35388e2340c7807e959d",
      "parents": [
        "6ccc053d8b3cfedc25f9c87c672e5af824085610"
      ],
      "author": {
        "name": "gopinath",
        "email": "gelanchezhian@google.com",
        "time": "Tue Feb 20 17:24:33 2018 -0800"
      },
      "committer": {
        "name": "gopinath",
        "email": "gelanchezhian@google.com",
        "time": "Tue Feb 20 17:24:33 2018 -0800"
      },
      "message": "Fix string format in App launch\n\nChange-Id: I22676ab95d39b8b92118eb48145b0d7614d0f03f\n"
    },
    {
      "commit": "e7e42ceb028c49b626e2cee591a967c7a16fb830",
      "tree": "ec730be5dae3608dbe2ccae21e4d70711315c86f",
      "parents": [
        "b729375d47c72fef61d195857ba7086f2941dc20",
        "0a177afbb88a6f3cbc401edbb6cd47282ff9e671"
      ],
      "author": {
        "name": "nharold",
        "email": "nharold@google.com",
        "time": "Tue Feb 20 23:21:59 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 20 23:21:59 2018 +0000"
      },
      "message": "Merge \"Fix ConnectivityServiceTest for NATT Keepalive\" am: 6d5aea8811 am: ad96984eb5\nam: 0a177afbb8\n\nChange-Id: I2ce9d740b82f591b847150ec1eaffa39bfbd0241\n"
    },
    {
      "commit": "0a177afbb88a6f3cbc401edbb6cd47282ff9e671",
      "tree": "be5452436195bc99880294c5dafb3b691924bd96",
      "parents": [
        "50450452cfc4240ac3728d4dbdd756f6403b6995",
        "ad96984eb5be6f986e5d3d492a507e4885094e3d"
      ],
      "author": {
        "name": "nharold",
        "email": "nharold@google.com",
        "time": "Tue Feb 20 23:07:53 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 20 23:07:53 2018 +0000"
      },
      "message": "Merge \"Fix ConnectivityServiceTest for NATT Keepalive\" am: 6d5aea8811\nam: ad96984eb5\n\nChange-Id: I3c28cbb55f8226776792df9cacf1b5e527389157\n"
    },
    {
      "commit": "6d5aea8811af3e87c3c3fead609cbb8d50c38df7",
      "tree": "771b4f3ef15a20f97b427489da5a4b93ee2b4ff3",
      "parents": [
        "0ea144f4bf510a5f41e40b80b23a5a6e531750a0",
        "63dd81390dcae5b59c6a490b803e67721804b80a"
      ],
      "author": {
        "name": "nharold",
        "email": "nharold@google.com",
        "time": "Tue Feb 20 19:17:23 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 20 19:17:23 2018 +0000"
      },
      "message": "Merge \"Fix ConnectivityServiceTest for NATT Keepalive\""
    },
    {
      "commit": "29ff057e1a2d7d3421d2d551818b36cc44c302cb",
      "tree": "8ffc15b6d825bf7ee5865b3958525ad9abbeef5e",
      "parents": [
        "b3dc6321987ec20cc69693c4da4d6009893d9839",
        "bb186ddfb48e46605ed5d135b6fb6e3e5859e3ac"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Mon Feb 19 08:36:01 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Feb 19 08:36:01 2018 +0000"
      },
      "message": "Merge changes Ic28c5653,Ic635f97b am: 1ea3d9411a am: 27dbc898dc\nam: bb186ddfb4\n\nChange-Id: Ieea9917b3a68e08686c74ebf39e5fed61f641a7a\n"
    },
    {
      "commit": "bb186ddfb48e46605ed5d135b6fb6e3e5859e3ac",
      "tree": "7aab474b1efa64adc310d8da090bbbb4d432fe56",
      "parents": [
        "da97198167f2d043820d111e5667d8cfc1c47a7c",
        "27dbc898dc1dc7b006cf81315c73f994b3aacc4d"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Mon Feb 19 08:24:47 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Feb 19 08:24:47 2018 +0000"
      },
      "message": "Merge changes Ic28c5653,Ic635f97b am: 1ea3d9411a\nam: 27dbc898dc\n\nChange-Id: I6596fae1946bffade125a14b3bd095eda557a7a5\n"
    },
    {
      "commit": "1ea3d9411ab4a66f94e64ffa0d358a139117e15c",
      "tree": "05d1ee268e515b39aa39b350f7d9131ba06b8bcd",
      "parents": [
        "114278c9eb563fba69efef294c91478c3eab2091",
        "b72b62d2f7e7104f9901bc8f44d5a3c0bb9dbf7a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 19 03:45:27 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 19 03:45:27 2018 +0000"
      },
      "message": "Merge changes Ic28c5653,Ic635f97b\n\n* changes:\n  [LT2] Fix release request while lingering.\n  [LT1] Add a test for release request while lingering\n"
    },
    {
      "commit": "b72b62d2f7e7104f9901bc8f44d5a3c0bb9dbf7a",
      "tree": "5886ef2aabdaeed764f4fea718468c1645806553",
      "parents": [
        "1fa777d4046299475c38baa8dfaa947ad27cccf1"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Feb 16 16:08:35 2018 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Mon Feb 19 11:00:58 2018 +0900"
      },
      "message": "[LT2] Fix release request while lingering.\n\nTest: runtest framework-net\nChange-Id: Ic28c5653d16351903b792e76ba8b199b7ed1f8d4\n"
    },
    {
      "commit": "f084a7a40f9a3a0b5e310c63e026520080df5d7e",
      "tree": "d49e2866dfc0f6ca8c15da49e684caaa68f6bb76",
      "parents": [
        "b331d1f1ef96e24838abeb15ac0310e376d707d4",
        "1fc931a38a9335b3b4b498c7cc31d37a777c7a5a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Feb 18 19:43:54 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Feb 18 19:43:54 2018 +0000"
      },
      "message": "Merge \"Switch to inline mockito for a bunch of tests\""
    },
    {
      "commit": "1fc931a38a9335b3b4b498c7cc31d37a777c7a5a",
      "tree": "910234f60264e0a10f14106ce23f3e9f6f874751",
      "parents": [
        "700448e4b480b7315d781c92c4a8f5538a02a745"
      ],
      "author": {
        "name": "Jason Monk",
        "email": "jmonk@google.com",
        "time": "Thu Dec 14 13:22:58 2017 -0500"
      },
      "committer": {
        "name": "Jason Monk",
        "email": "jmonk@google.com",
        "time": "Sun Feb 18 13:02:25 2018 -0500"
      },
      "message": "Switch to inline mockito for a bunch of tests\n\nSo we can mock final stuff\n\nTest: The tests\nChange-Id: Ia3a47c6655c4b0b9af0aea0ee6f8f6cb9ebaab09\n"
    },
    {
      "commit": "25c50380dfc94b125052070ba8cda30f4e4056dc",
      "tree": "ceecf5f14c53854d147cab2691f19a4a21e15463",
      "parents": [
        "d64db3a88ba575633983da77621836ee7e1f89e2",
        "cff2fe4f76af4f0d47f9ba35fe7c394b0501160d"
      ],
      "author": {
        "name": "Etan Cohen",
        "email": "etancohen@google.com",
        "time": "Sat Feb 17 15:36:59 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 17 15:36:59 2018 +0000"
      },
      "message": "Merge \"Add Executor to the TestLooper\""
    },
    {
      "commit": "63dd81390dcae5b59c6a490b803e67721804b80a",
      "tree": "eeeb62da82cdc6d7a48af6152f6b9d1f7a106297",
      "parents": [
        "9f92ed943cc0d6224cc2fccd9620b9918fa54e44"
      ],
      "author": {
        "name": "Nathan Harold",
        "email": "nharold@google.com",
        "time": "Wed Feb 14 13:09:45 2018 -0800"
      },
      "committer": {
        "name": "Nathan Harold",
        "email": "nharold@google.com",
        "time": "Fri Feb 16 16:34:50 2018 -0800"
      },
      "message": "Fix ConnectivityServiceTest for NATT Keepalive\n\nFix test breakages I caused when adding cell\nsupport for NATT keepalives.\n\n-Make the minimum keepalive interval a constant in\n ConnectivityManager and use it in tests.\n-Re-Disallow IPv6 Keepalives\n\nBug: 73327535\nTest: \u0027runtest -x ConnectivityServiceTest\u0027 now passes\nChange-Id: I5ec4367d250ee371014e65c897c3897a25a05e2d\n"
    },
    {
      "commit": "5e4bebb891553e0bec7abd499bb3848f89aef94f",
      "tree": "366cf11732526e0a58badff2a83d30ab4f7b3570",
      "parents": [
        "009a848d903f63e32a8943ef63440329370e1c7a",
        "9911a28adb3b1196fe912ff5b65b8d5cbc7321ec"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Fri Feb 16 22:13:01 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 16 22:13:01 2018 +0000"
      },
      "message": "Merge \"Better handling of NTP-based clocks.\""
    },
    {
      "commit": "9911a28adb3b1196fe912ff5b65b8d5cbc7321ec",
      "tree": "69ee97b44a28739a2f864a6e469a25de981fb9fc",
      "parents": [
        "0f888de06b3dcbb73a410578d48539ca970f4f3b"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Feb 14 22:29:11 2018 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Fri Feb 16 22:11:35 2018 +0000"
      },
      "message": "Better handling of NTP-based clocks.\n\nNow that we have a nice Clock abstraction, we can use it to represent\na clock backed by an NTP fix.  (This makes testing logic much easier\nto write.)\n\nWe now rely completely on NetworkTimeUpdateService to keep our NTP\nfix up to date, instead of trying to refresh in the middle of\ncritical paths which could trigger random ANRs.\n\nAdd internal FallbackClock to make it easier to handle missing NTP\nfixes.  Add internal SimpleClock to let implementers focus on single\nmillis() method.\n\nTest: bit FrameworksNetTests:com.android.server.net.NetworkStatsServiceTest\nTest: bit FrameworksServicesTests:com.android.server.NetworkPolicyManagerServiceTest\nBug: 69714690, 72320957\nChange-Id: Ic32cdcbe093d08b73b0e4b23d6910b23ea8e1968\nExempt-From-Owner-Approval: approved in previous PS\n"
    },
    {
      "commit": "f04eb2edafc4b101c52a0aab4047852a8de3c296",
      "tree": "4f158fa2a7c73c05c3420f9280dc633336c0b0e0",
      "parents": [
        "2ab510ee246fdf047882dc0af89fcecdb0e57a05",
        "12cb5aae57f325652c7e5ca8a67b8cb6c3bd0f98"
      ],
      "author": {
        "name": "Benedict Wong",
        "email": "benedictwong@google.com",
        "time": "Fri Feb 16 20:51:37 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 16 20:51:37 2018 +0000"
      },
      "message": "Merge \"Correct bug in IpSecTransformTest\" am: 999d1fc172 am: c9f558d46d\nam: 12cb5aae57\n\nChange-Id: Ic29f13053365f3de8d01f9c38f8460d92748a41d\n"
    },
    {
      "commit": "12cb5aae57f325652c7e5ca8a67b8cb6c3bd0f98",
      "tree": "c759e0d427d0e9317b05f566138a1151ca6850ed",
      "parents": [
        "63f4ea33e70e3fe339e047292185a487612cc5fd",
        "c9f558d46db0842e6ef89056359dbce80f982093"
      ],
      "author": {
        "name": "Benedict Wong",
        "email": "benedictwong@google.com",
        "time": "Fri Feb 16 20:43:12 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 16 20:43:12 2018 +0000"
      },
      "message": "Merge \"Correct bug in IpSecTransformTest\" am: 999d1fc172\nam: c9f558d46d\n\nChange-Id: I990729e8592e70898867fe72a3d628fd7f9fdaf0\n"
    },
    {
      "commit": "cff2fe4f76af4f0d47f9ba35fe7c394b0501160d",
      "tree": "85dee9fc7b93365c48c618d8dce1519c6933ec8f",
      "parents": [
        "4577b9b17c485fae7691203a86ff704381a2d60f"
      ],
      "author": {
        "name": "Etan Cohen",
        "email": "etancohen@google.com",
        "time": "Wed Feb 14 11:44:13 2018 -0800"
      },
      "committer": {
        "name": "Etan Cohen",
        "email": "etancohen@google.com",
        "time": "Fri Feb 16 10:13:26 2018 -0800"
      },
      "message": "Add Executor to the TestLooper\n\nAdd a method to obtain an Executor from a TestLooper: the executor\nexecutes on a new Handler on the test looper.\n\nBug: 73088768\nTest: new unit test for executor\nChange-Id: Ib0aa10011116a4d998f8d3a7434939338d9b516d\n"
    },
    {
      "commit": "a24da17e7512fa2824c6c4d7ad0bcb6861077189",
      "tree": "8a84a31850bb5c5f1722f08cf9a04bd7f0dcc45e",
      "parents": [
        "75f5f239bc0d5de963d4ef382523fdfe3a7ae006",
        "aff528421ffda3087495bea2a9fb4b4f99dfba4c"
      ],
      "author": {
        "name": "Kevin Neas",
        "email": "kneas@google.com",
        "time": "Fri Feb 16 16:06:19 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 16 16:06:19 2018 +0000"
      },
      "message": "Merge \"AppLaunch tests for Wear\""
    },
    {
      "commit": "371321835588bd67a1e2df5fd748b2f836c2af98",
      "tree": "f5b6cd9ede1dfb106344a2f74b6b2a3d189bdd0a",
      "parents": [
        "299b0e4b4eb330723be4fa4df3cfd2dcadb3be44",
        "aacac603553d56c7d6b7202bf9a27c83df0308ac"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 16 11:28:13 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 16 11:28:13 2018 +0000"
      },
      "message": "Merge \"Small cleanup in AppLaunch.\""
    },
    {
      "commit": "1fa777d4046299475c38baa8dfaa947ad27cccf1",
      "tree": "a0b941c5bfe59d87f49a3c5004da0908210602dc",
      "parents": [
        "d35e81d6159f54a3072317082b5fa89f18e8cef5"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Feb 16 16:07:53 2018 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Feb 16 18:09:42 2018 +0900"
      },
      "message": "[LT1] Add a test for release request while lingering\n\nTest: runtest framework-net\nChange-Id: Ic635f97bf3dad8b695b3b8cc32c1a8b891166f9f\n"
    },
    {
      "commit": "aff528421ffda3087495bea2a9fb4b4f99dfba4c",
      "tree": "5adf5c3beeb5f5035916de3182278aa5c75453b9",
      "parents": [
        "519802d7675d89c733221dc43b2ccf22310d111b"
      ],
      "author": {
        "name": "Kevin Neas",
        "email": "kneas@google.com",
        "time": "Thu Feb 15 17:53:48 2018 -0800"
      },
      "committer": {
        "name": "Kevin Neas",
        "email": "kneas@google.com",
        "time": "Fri Feb 16 04:46:49 2018 +0000"
      },
      "message": "AppLaunch tests for Wear\n\nWear needs specific changes that the platform team is unable to support.\nMost of this code is an exact copy of the AppLaunch file, with a specific\ncheck to not kill the app is Wear Home.\n\nChange-Id: I2332416d61676b52518d6988849271e0b0777009\n"
    },
    {
      "commit": "9eb885547e4ab8cea94cb0e71ae74d9e5032ac13",
      "tree": "c59d83aa536bb475f62efbcbff4d87307cc21d62",
      "parents": [
        "377e6be425d314e0831ea63e8c480d9cdc1c8c61",
        "24165609aaf7db5fb638408d881f9eeb7a23ad2d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 16 03:29:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 16 03:29:36 2018 +0000"
      },
      "message": "Merge \"Add LOCAL_MIN_SDK_VERSION to run on older builds\""
    },
    {
      "commit": "cd67fb3e27b32685d75da8fc074a432a1a09af04",
      "tree": "ba178a50af5d3529d68fa3f0f5bcfacd2ee81983",
      "parents": [
        "3df127aefe70a2b6ab8fb744c6a82fae59549740"
      ],
      "author": {
        "name": "Benedict Wong",
        "email": "benedictwong@google.com",
        "time": "Thu Feb 15 18:47:49 2018 -0800"
      },
      "committer": {
        "name": "Benedict Wong",
        "email": "benedictwong@google.com",
        "time": "Thu Feb 15 18:52:07 2018 -0800"
      },
      "message": "Correct bug in IpSecTransformTest\n\ntestCreateTransformsWithSameConfigEqual used assertFalse rather than\nassertTrue\n\nBug: 69385347\nTest: Passing on walleye\nChange-Id: I8caa26e184e8bfc3e8acc9061d85c22d27ebf448\n"
    },
    {
      "commit": "24165609aaf7db5fb638408d881f9eeb7a23ad2d",
      "tree": "a57ef0ad8f7d20dafdd318dfcf21a5b383b40968",
      "parents": [
        "de9d31b4a634e0114a5aacc974167586bf35c6dc"
      ],
      "author": {
        "name": "Arthur Eubanks",
        "email": "aeubanks@google.com",
        "time": "Thu Feb 15 15:50:47 2018 -0800"
      },
      "committer": {
        "name": "Arthur Eubanks",
        "email": "aeubanks@google.com",
        "time": "Thu Feb 15 15:51:28 2018 -0800"
      },
      "message": "Add LOCAL_MIN_SDK_VERSION to run on older builds\n\nTest: make and run ActivityManagerPerfTests and\nActivityManagerPerfTestsTestApp\n\nChange-Id: I38fff6b976b6b450df16238a9fa3f103edcd0c19\n"
    },
    {
      "commit": "aacac603553d56c7d6b7202bf9a27c83df0308ac",
      "tree": "4a55ad305258866d389519e4e9efa8a485f0afbf",
      "parents": [
        "2792c7f6a2477e0e0a4fbf829ed3973654383a9c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 15 22:11:59 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 15 22:32:02 2018 +0000"
      },
      "message": "Small cleanup in AppLaunch.\n\ncloseApp is always force closing app. Just make it so.\nMove the go home intent into its own method.\n\nTest: adb shell \"am instrument -w -e drop_cache true -e simpleperf_app true -e compiler_filters speed\\|speed-profile\\|quicken\\|verify -e apps Maps^Maps -e launch_directory /data/local/tmp com.android.tests.applaunch/android.test.InstrumentationTestRunner\"\n\nChange-Id: I0d7d28a99a1ce9dfcefc4572ec3a0142482b1e48\n"
    },
    {
      "commit": "c8edf4a409bfe5c60b6dafc76d766cbfdee9e357",
      "tree": "d1b7efb663f06aff4c5f8f76af7708211f217374",
      "parents": [
        "eb46f6fc32715666f5b03482f0008c9645feb780",
        "e7a566f2fb6701d7fd32ca0c983dbe9364a90ca1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 15 20:39:58 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 15 20:39:58 2018 +0000"
      },
      "message": "Merge \"Add more ways to run AppLaunch.\""
    },
    {
      "commit": "43403201e66f49a309fd23f42705e3a434a5fa01",
      "tree": "e0e6a3e547b005d99d36f6375eb60a25c75f4fc1",
      "parents": [
        "1da6f542ef187c860a5772f7c2e391e5a2e6c2d5"
      ],
      "author": {
        "name": "Pavel Maltsev",
        "email": "pavelm@google.com",
        "time": "Tue Jan 30 17:19:44 2018 -0800"
      },
      "committer": {
        "name": "Pavel Maltsev",
        "email": "pavelm@google.com",
        "time": "Thu Feb 15 10:46:00 2018 -0800"
      },
      "message": "Add OEM_PAID network capability\n\nBug: 68762530\n\nTest: runtest -x frameworks/base/tests/net/\n\nChange-Id: I51c07e0c2211d631e90b27468c26b599e7b07bc8\n"
    },
    {
      "commit": "76ac62500aa173d3ebc2750ee489fc7ca6411e1f",
      "tree": "2b7423c4fa6894df2699923f64062feead0f7f12",
      "parents": [
        "ee3a2ba97204f7d23c733504991d930aefd9fe7b",
        "2dd6779d3817468e84032fe470b13c76c5fb9ae9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 15 17:04:51 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 15 17:04:51 2018 +0000"
      },
      "message": "Merge \"Update README for ActivityManagerPerfTests\""
    },
    {
      "commit": "243a0875687afd03bcc22121c9f26b4d9e57e66d",
      "tree": "a0cde283a71fda467c191c36567ab8b3547469e7",
      "parents": [
        "cfaaecf9ce82f90f3ad8d028a5f9e885f3d2d416",
        "3d3fa2269883ec09892799698375d09af810502e"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Thu Feb 15 14:23:57 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 15 14:23:57 2018 +0000"
      },
      "message": "Merge changes I3d68dbf8,I6ea524bb,I978d9119 am: edab226d0e am: 6fe110fa36\nam: 3d3fa22698\n\nChange-Id: Ic6d639358c3310820bd925df93d4843d7edffc57\n"
    },
    {
      "commit": "3d3fa2269883ec09892799698375d09af810502e",
      "tree": "0afd3b9e91ab3a0659d9c74b21e12c6f83a997ff",
      "parents": [
        "00d125652e44e940189f3f8be1ea44fbff950798",
        "6fe110fa363db27dae1b28126ec5203997733d41"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Thu Feb 15 13:09:26 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 15 13:09:26 2018 +0000"
      },
      "message": "Merge changes I3d68dbf8,I6ea524bb,I978d9119 am: edab226d0e\nam: 6fe110fa36\n\nChange-Id: Iebc6a31b975fd7ba429bd9bae89cd9783776d1c3\n"
    },
    {
      "commit": "edab226d0ed7a3d63706bc7a58f0c17ea1c75b74",
      "tree": "e3b8166d7e4e8715e8f7556479119cdabd507a87",
      "parents": [
        "47ef64b0d2ca41f879facbfb278a7d14c3b9577b",
        "054cd16781763838c17b221ffcd1196641b57b00"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Thu Feb 15 11:25:36 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 15 11:25:36 2018 +0000"
      },
      "message": "Merge changes I3d68dbf8,I6ea524bb,I978d9119\n\n* changes:\n  Deprecate CONNECTIVITY_ACTION.\n  Publish FOREGROUND and add NOT_SUSPENDED capabilities.\n  Send null UIDs to apps instead of single-uid lists.\n"
    },
    {
      "commit": "e7a566f2fb6701d7fd32ca0c983dbe9364a90ca1",
      "tree": "9e98a378a9809f4232082e49f358d261760e13dc",
      "parents": [
        "90f285ba517995f391494279d12a7cdb4bd024c2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 12 21:21:20 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 15 10:44:17 2018 +0000"
      },
      "message": "Add more ways to run AppLaunch.\n\n1) Pass a list of compiler filters.\n2) Pass an option to output cpu cycles and major faults from app.\n\nbug: 73091359\n\nTest: adb shell \"am instrument -e drop_cache true -e compiler_filters \\\"speed-profile|verify|quicken\\\" -e simpleperf_app true -e apps com.google.android.apps.maps^Maps -e launch_directory /data/local/tmp -w  com.android.tests.applaunch com.android.tests.applaunch/android.test.InstrumentationTestRunner\"\n\nTest:\nadb shell \"am instrument -e drop_cache true -e simpleperf_cmd \\\"simpleperf stat -a\\\" -e apps com.google.android.apps.maps^Maps -e launch_directory /data/local/tmp -w  com.android.tests.applaunch com.android.tests.applaunch/android.test.InstrumentationTestRunner\"\n\ncom.android.tests.applaunch.AppLaunch:INSTRUMENTATION_STATUS: Maps\u003d1488,1850,1973,1972,1929,1947,1968,1771,2006,1912,\nINSTRUMENTATION_STATUS_CODE: 0\n.\nTest results for InstrumentationTestRunner\u003d.\nTime: 88.636\n\nOK (1 test)\n\nChange-Id: I61fea8c124107cbd7234f69358078780ab74c4b6\n"
    },
    {
      "commit": "1f3228d242e8f4a5eb18ec35160320ebc06dbf99",
      "tree": "986f34d6b3297abf1a67c20e4dc9928a5cc749fb",
      "parents": [
        "237b1d0cf699c6e9fe3f59ac00d1167227e52a80",
        "fe9728d4949a1350c1b6bf3661905730c8e03770"
      ],
      "author": {
        "name": "Benedict Wong",
        "email": "benedictwong@google.com",
        "time": "Thu Feb 15 06:01:49 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 15 06:01:49 2018 +0000"
      },
      "message": "Merge \"Copy IpSecConfig when IpSecTransforms are created\" am: 2c8456b22e am: 3988c929ad\nam: fe9728d494\n\nChange-Id: I511e6b0cadfc24f24a492ae63c48a8b4baa89edb\n"
    },
    {
      "commit": "fe9728d4949a1350c1b6bf3661905730c8e03770",
      "tree": "cb2cff02d40642a2efd771962f80ed9f565eb995",
      "parents": [
        "ddf41d99f34239215eff8a6eca6e9ce81549072a",
        "3988c929ad6fe641ab59efede50ea0c34e9d3b7a"
      ],
      "author": {
        "name": "Benedict Wong",
        "email": "benedictwong@google.com",
        "time": "Wed Feb 14 21:25:08 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 14 21:25:08 2018 +0000"
      },
      "message": "Merge \"Copy IpSecConfig when IpSecTransforms are created\" am: 2c8456b22e\nam: 3988c929ad\n\nChange-Id: I041cd94be9cefc997b95478444661b557d95e3dc\n"
    },
    {
      "commit": "2dd6779d3817468e84032fe470b13c76c5fb9ae9",
      "tree": "9c8340505d5a6f933de52de05cc22419fd9b060f",
      "parents": [
        "de9d31b4a634e0114a5aacc974167586bf35c6dc"
      ],
      "author": {
        "name": "Arthur Eubanks",
        "email": "aeubanks@google.com",
        "time": "Wed Feb 07 15:55:10 2018 -0800"
      },
      "committer": {
        "name": "Arthur Eubanks",
        "email": "aeubanks@google.com",
        "time": "Wed Feb 14 10:57:04 2018 -0800"
      },
      "message": "Update README for ActivityManagerPerfTests\n\nAlso add codelab\n\nTest: None\nBUG: 67460485\nChange-Id: I20f9b45766e31bedff955faa92f6e16d7bcb011f\n"
    },
    {
      "commit": "804b8fb96854555f16946924aec80c4b450bafb3",
      "tree": "8f10489075a133a33eb7f6adf9f0f0278ce7bc42",
      "parents": [
        "f19db374092738928b2b0c36aaf144c303c8874c"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Tue Jan 30 22:41:41 2018 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Wed Feb 14 15:14:41 2018 +0900"
      },
      "message": "Publish FOREGROUND and add NOT_SUSPENDED capabilities.\n\nNOT_SUSPENDED and FOREGROUND are capabilities that need to\nbe public so as to reach feature parity with what information\ncan be gotten through the use of CONNECTIVITY_ACTION and\nsynchronous calls to ConnectivityManager. This change makes\nthem public, and wires up the NOT_SUSPENDED capability.\nThis deprecates in effect the old onSuspended and onResumed\ncallbacks, but these have never been public.\n\nThis also converts the onAvailable path from a multiple\nbinder call design to a simpler, single binder call. This\nis only for internal convenience\n\nTest: runtest frameworks-net\nTest: cts\nTest: also manual testing\nChange-Id: I6ea524bb361ecef0569ea2f9006c1e516378bc25\n"
    },
    {
      "commit": "f19db374092738928b2b0c36aaf144c303c8874c",
      "tree": "114a7548a95860b34d2b8b546919fc89e8fa9554",
      "parents": [
        "f27242dbd6aa4736070f5d82d750f30bee674a0d"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Jan 26 19:24:40 2018 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Wed Feb 14 12:47:15 2018 +0900"
      },
      "message": "Send null UIDs to apps instead of single-uid lists.\n\nPrior to this change ConnectivityManager used to patch in the UID\nof the requesting app inside the NetworkCapabilities sent to it.\nThe rationale was that the app may not know what other apps may\nuse the network, so the view it should have of the network should\nalways say the network only applies to that app.\n\nBut this has an unfortunate side effect : apps can\u0027t match the\nreceived network against a default NetworkCapabilities. Ostensibly\nthis only applies to the system because all involved calls are\n@hide, but still : system code would get some NetworkCapabilities,\nfor example using networkCapabilitiesForType, and then try to\nmatch the capabilities of an available network using\nsatisfiedByNetworkCapabilities. Because the passed network is\ndeclared to only apply to one\u0027s own UID and the UIDs of the\nNetworkCapabilities are set to null meaning \"I need this network\nto apply to all UIDs\", the answer will be \"false\".\n\nWhile this is WAI in a sense, it is very counter-intuitive that\ncode trying to match a network would be required to patch in its\nown UIDs.\nThere are three ways of fixing this :\n1. Require all apps to do the above. It\u0027s correct, but it\u0027s\n   cumbersome and counterintuitive. Multiple places in existing\n   code needs to be fixed, Tethering is an example.\n2. Write the UIDs of the caller in any NetworkCapabilities object\n   that is created. This is not very practical, because it imposes\n   the converse requirement on all NetworkAgents, which would then\n   have to clear the UIDs before they send the capabilities to\n   ConnectivityService. All NetworkAgents need to be fixed.\n3. Instead of sending an object with a list of one UID to apps,\n   send a null list. The drawback is that the networks nominally\n   look to apps like they apply to all apps. I argue this does\n   not matter ; what matters is that the UID lists do not leak.\n   Clients just see a null list of UIDs (and third party can\u0027t\n   even access them without using reflection). No other changes\n   are required besides this two-line patch.\n\nThis patch implements 3. I believe it is the saner approach, with\nboth the most intuitive behavior and the best backward compatibility\ncharacteristics, as well as the easiest change.\n\nThis does not encroach on the future plans to make the actual\nUID list available to apps with NETWORK_SETTINGS.\n\nTest: runtest frameworks-net\nChange-Id: I978d91197668119e051c24e1d04aafe1644a41cf\n"
    }
  ],
  "next": "9dd3a385279403ff94dd07b052424da3acd3a1f4"
}
