)]}'
{
  "log": [
    {
      "commit": "5bbece747f7179a629eed942e2aa88507e744b6b",
      "tree": "9f46552fd01838f9ff45091955ac3cfe50e5bc09",
      "parents": [
        "218c226b0882640a351deb0dd945a30b8bc32fff"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Jun 09 17:08:52 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Jun 13 12:04:00 2017 +0900"
      },
      "message": "make UpsreamNetworkMonitor the sole source of upstream network information\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\nBug: 32163131\nChange-Id: I66ce682cf9c31887264a095a4e4638d281d8ed39\n"
    },
    {
      "commit": "ab6439b0f8dd0a67c81235a3fc4d9c149de3780d",
      "tree": "ab01787b4992aafabee3dbff81102ec211a555b1",
      "parents": [
        "32703994fe80583e4779bc0be9829c32635c5812"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Jun 06 19:24:21 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Jun 08 22:28:57 2017 +0900"
      },
      "message": "Convert IControlsTethering from interface into callback\n\nAdditionally:\n    - add updateLinkProperties() method to new callback\n    - skeletally connect LinkProperties updates through\n      to OffloadController\n\nTODOs liberally sprinkled through out.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\nBug: 29337859\nBug: 32163131\nChange-Id: I631d17b26be153534551a1615931fc98b598b953\n"
    },
    {
      "commit": "a1d368af2f01e2048240fb730f6cc399fc1cc1ab",
      "tree": "a49d31e3be5108e4b4af61304b8114ea726378a1",
      "parents": [
        "da5b77fa9b8baf08208180a7186efae1fdf9fefc"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Jun 05 16:02:02 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Jun 08 16:50:17 2017 +0900"
      },
      "message": "Move findPreferredUpstreamType into UNM\n\nThis changes the way in which available networks are found. Previously\nTethering asked ConnectivityService for NetworkInfo and checked for\nwhether or not it was in state CONNECTED.\n\nHere we use the fact that ConnectivityService will not call UNM\u0027s\ncallbacks\u0027 onAvailable() methods until the networks in question have\nbecome connected.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest framework-net passed\nBug: 32163131\n\nChange-Id: I97abe225fdd3accb38bd9168f545445b761a90d8\n"
    },
    {
      "commit": "ec37275ec9702b56bf328031675906a5483b89d4",
      "tree": "2b737fda92d52f9977ac15d1ac38d338247014e0",
      "parents": [
        "bede96729c1e60d53119e9b83ad1b8ff68b28c12"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Jun 07 16:33:19 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Jun 07 17:44:53 2017 +0900"
      },
      "message": "Add additional mocking for Context innards\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\n    - cherry-picked to master and verified there as well\nBug: 32163131\nBug: 32561414\n\nChange-Id: I0b5b1b12d55547d08c332c7d274f19f0023a7b07\n"
    },
    {
      "commit": "7990aef63b4fc410e4e6932a3bc0c6a190667445",
      "tree": "a1ebcb8fcc4c31ffd5759abd2b46ad99540ccaaf",
      "parents": [
        "12fe022fbda6d11fea9c3ee78fa66a8225250b72"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Jun 01 20:11:25 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Jun 06 12:02:13 2017 +0900"
      },
      "message": "Support setting upstream parameters.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\nBug: 29337859\nBug: 32163131\nBug: 34361337\nChange-Id: Id88cae4beed7d38aec3d29a0e2f59a5c7e6a9a4e\n"
    },
    {
      "commit": "2efb827f61db989ab55792052c99713ef5f5eefa",
      "tree": "147a22394143ecf446d346885dd4a4df8aed3c7f",
      "parents": [
        "dae92faa025999f936bb95441ede8f17f71b1e1b"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed May 31 15:53:53 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Jun 02 12:21:15 2017 +0900"
      },
      "message": "Handle Wi-Fi passing explicit interface name and AP/IP mode\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\nBug: 31466854\nBug: 32163131\nBug: 62076211\nChange-Id: I3557a9c14f4e9f1de1869084566a179003d98ffe\n"
    },
    {
      "commit": "7cf3086f371085b49488f42e24a9007fa8a1061b",
      "tree": "295c62a77f64395c3de864f24a67d4b308af0223",
      "parents": [
        "93d7c84726a0dfcde218772c7cd3f033f84a38b3",
        "92c4db04e54a7bb375df01ce6e3fd98d568c6990"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 01 07:50:35 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 01 07:50:35 2017 +0000"
      },
      "message": "Merge \"Add a tethering offload settings kill switch\""
    },
    {
      "commit": "92c4db04e54a7bb375df01ce6e3fd98d568c6990",
      "tree": "c2a217e072941545154a4528ad13d0c68ca2dbdc",
      "parents": [
        "76efbb30f52ea183a42835926776ca8dfb288174"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed May 31 10:21:32 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed May 31 20:33:05 2017 +0900"
      },
      "message": "Add a tethering offload settings kill switch\n\nCheck for tether_offload_disabled (defaulting to false if not present)\nbefore starting the OffloadController.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\nBug: 29337859\nBug: 32163131\nBug: 34361337\nChange-Id: Ifcc0eb1a41f09ad9e717c9252d2d55e69789669b\n"
    },
    {
      "commit": "22143956cfc6d9f59b0aac0e7007a3088200addd",
      "tree": "6cce8885d87b0d3e7b6d75fc977f755fdbd955a5",
      "parents": [
        "76efbb30f52ea183a42835926776ca8dfb288174"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed May 31 15:31:59 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed May 31 15:35:54 2017 +0900"
      },
      "message": "Fix race condition in NsdManagerTest\n\nNsdManagerTest relies on the lastMessage variable to assert the\nconnection of a client to the service. The asserts in test are done on a\ndifferent thread, although the variable was not qualified volatile,\nwhich creates the chance to read a stale value. This patch fixes this\nrace by marking the variable volatile.\n\nBug: 32561414\nBug: 62044295\nTest: NsdManagerTest works\nChange-Id: I0bc2cd8059c6ff8b78a2dda0ba8d6bc7e13ef951\n"
    },
    {
      "commit": "02f8f9c8301e2330c14845ba17b867c2bdb711c2",
      "tree": "3007ce089473d57b3a1851f27d84c8dcf0eff4b4",
      "parents": [
        "6cdcba7b48766e02da7d48b42dd55d5151c2d997"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon May 29 13:13:52 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed May 31 10:23:42 2017 +0900"
      },
      "message": "ConnectivityServiceTest: more tweaks to testRequestBenchmark\n\nRecent continuous testing runs indicates that commit 849b81b7 did not\ncompletely fixed the issue with testRequestBenchmark.\n\nThis patch changes the name of the test to not include \"test\" and\nremoves @SmallTest annotation, which should do the job of @Ignore while\nConnectivityServiceTest still extends AndroidTestCase.\n\nIn addition timeouts are adjusted to take into account recent failures\nobserved.\n\nThis is the last pending action before turning on FrameworksNetTests on\npresubmits.\n\nBug: 32561414\nTest: no functional change\nChange-Id: I56ef334e19e99e5a3483418330e5f0ccd6eb31bb\n"
    },
    {
      "commit": "6bd745320619dc43fec2326582c5f5b2f3c9a740",
      "tree": "dc1be2e1502b15eb7560a416ceb67bd4087b81a9",
      "parents": [
        "8e7057ccf3824d1421a12abad7a2ba8b07e877c6"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri May 19 10:10:41 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Sun May 28 18:05:23 2017 +0900"
      },
      "message": "Minor improvement in logging in TetheringConfiguration\n\nTest: as follows\n    - built\n    - booted\n    - flashed\n    - runtest frameworks-net passes\n    - dumpsys connectivity shows expected output\nBug: 32163131\nBug: 36504926\nBug: 36988090\nBug: 38152109\nBug: 38186915\nBug: 38218697\nChange-Id: I4a2129d780dfec7bca693486a100ea3c78465430\n"
    },
    {
      "commit": "f4b6e34fc093d0e493bc97e91b71d753720f7114",
      "tree": "6ea1af1ad6f0235c127a8d25880cb1ddc873a64d",
      "parents": [
        "0388f0e47b9853437cdeebafc77d38e86606554b"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Apr 25 19:19:59 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri May 26 16:47:04 2017 +0900"
      },
      "message": "Support registration of offload control callbacks.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\nBug: 29337859\nBug: 32163131\nBug: 34361337\nChange-Id: I054cdf6a277c77e4cbf5c81145446a9be1c5fe39\n"
    },
    {
      "commit": "849b81b7abc6334d04636850edda210637594f4d",
      "tree": "9f94c4f561dea9e019fff76a65cabaeab69dfb56",
      "parents": [
        "475d9b283cf6baf28c4800b1e54aac4f27acb485"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu May 25 13:42:31 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri May 26 07:18:15 2017 +0900"
      },
      "message": "@Ignore ConnectivityServiceTest#testRequestBenchmark\n\nIgnore the last remaining test in ConnectivityServiceTest with spurious\nfailures. testRequestBenchmark has some intrinsic chances of failure due\nto the fact it attempts to assert elapsed time durations against a\nreference target.\n\nBug: 32561414\nTest: no functional change\nChange-Id: Ib25d76581b47997b2ef84df3e6a9fd9224b85d92\n"
    },
    {
      "commit": "48859e01d51622399b5ca40a672b77b70e63b696",
      "tree": "db0cebb7420270b70b9d47be0e0fd885eaab0bff",
      "parents": [
        "81fda778848044fa9640e8fda89459a14b8ccac0",
        "e7514335bfa93e896eac979bd9955a216f4317f4"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu May 25 00:50:24 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 25 00:50:27 2017 +0000"
      },
      "message": "Merge \"NsdServiceInfo: move test to tests/net\""
    },
    {
      "commit": "81fda778848044fa9640e8fda89459a14b8ccac0",
      "tree": "107632fee9016ce10c8167d62a39e6d6c38f6ca3",
      "parents": [
        "255a171c5d04cf50a22cf4a1f032cf69f042e6a9",
        "967dec794b1974574d95c9d2dea0a0133fa19717"
      ],
      "author": {
        "name": "Joel Scherpelz",
        "email": "jscherpelz@google.com",
        "time": "Wed May 24 23:54:21 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 24 23:54:24 2017 +0000"
      },
      "message": "Merge \"Ignore flow label when comparing RAs in APF\""
    },
    {
      "commit": "e7514335bfa93e896eac979bd9955a216f4317f4",
      "tree": "0edb295f69fa2bd30956d4570d8ba4a49278f1ec",
      "parents": [
        "0a76f9962140a42392d4bd5e4847c302f28c5f87"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed May 24 15:39:39 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed May 24 16:03:43 2017 +0900"
      },
      "message": "NsdServiceInfo: move test to tests/net\n\nThis patch also\n  - adds a license plate to NsdServiceInfoTest\n  - fixes some formatting and style issues\n      package name\n      uses of canonical junit asserts\n  - update NsdServiceInfoTest to not use the deprecated AndroidTestCase\n\nBug: 62044295\nBug: 32561414\nTest: $ runtest frameworks-net passes\nChange-Id: Ie5ebb00172aef4eec19e6ecd2b41c4467901b93d\n"
    },
    {
      "commit": "0a76f9962140a42392d4bd5e4847c302f28c5f87",
      "tree": "27e180fdd088d463c7ed024ec05901c6e3166217",
      "parents": [
        "485d10308381f8bbe976f00c636d789d462e7af3",
        "523d466b91246529485a971db7edc29dd6753cea"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 24 06:47:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 24 06:47:30 2017 +0000"
      },
      "message": "Merge \"Move NsdServiceTest to correct directory\""
    },
    {
      "commit": "967dec794b1974574d95c9d2dea0a0133fa19717",
      "tree": "1d73819480a46e306a3a14117fba57397bd16823",
      "parents": [
        "65d3a457d2152a431d158352257e3c846fc8a367"
      ],
      "author": {
        "name": "Joel Scherpelz",
        "email": "jscherpelz@google.com",
        "time": "Wed May 24 15:08:39 2017 +0900"
      },
      "committer": {
        "name": "Joel Scherpelz",
        "email": "jscherpelz@google.com",
        "time": "Wed May 24 15:24:24 2017 +0900"
      },
      "message": "Ignore flow label when comparing RAs in APF\n\nThis change modifies the RA filter generation code to ignore bytes 1-3\nof the IPv6 header. It also updates testApfFilterRa such that it fails\nwithout the updates to ApfFilter.\n\nTest: as follows\n        - built\n        - flashed\n        - booted\n        - sent RAs from OS X with differing flow labels and observed\n\t      that they were filtered\n\t- ApfTest passes\nBug: 31166495\n\n(cherry picked from commit 7006bd4fe5eba4b6fad43dd28d9cad2d26ce140a)\n\nChange-Id: I32153238193ac13a0e59be1875d983a0567c41c7\n"
    },
    {
      "commit": "523d466b91246529485a971db7edc29dd6753cea",
      "tree": "7ca9d36ed383b70694266e050623ca01c0943ed7",
      "parents": [
        "70fe11fc38c6b40a5e183ee1dcb18134164a7c35"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed May 24 14:16:55 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed May 24 14:18:48 2017 +0900"
      },
      "message": "Move NsdServiceTest to correct directory\n\nTest: no functional change\nBug: 62044295\nChange-Id: Iad3af646e8d252f84978d1a367878a78c2869982\n"
    },
    {
      "commit": "58059820275c3a347a48e5e8179bdbc839f9d774",
      "tree": "a84258e1a1966872a24c36c394b6f703b12ea0be",
      "parents": [
        "65d3a457d2152a431d158352257e3c846fc8a367"
      ],
      "author": {
        "name": "Jayachandran C",
        "email": "jayachandranc@google.com",
        "time": "Wed May 17 23:53:59 2017 -0700"
      },
      "committer": {
        "name": "Jayachandran C",
        "email": "jayachandranc@google.com",
        "time": "Tue May 23 14:02:46 2017 -0700"
      },
      "message": "Fix up upstream interface types for case DUN_UNSPECIFIED\n\nThe existing logic will add TYPE_MOBILE and TYPE_MOBILE_HIPRI\neven if the carrier config has TYPE_DUN for DUN_UNSPECIFIED.\n\nA check is added not to modify the upstream interface types\nif there is already a cellular interface type. Add TYPE_MOBILE\nand TYPE_MOBILE_HIPRI if there is no cellular types found.\n\nTest: Hotspot on Verizon and T-Mobile US.\n      Verified the requestNetwork has the DUN capability.\n\nBug: 38186915\nChange-Id: I74fc5c791fee2885bf66df8975e92c2b48f1668c\n"
    },
    {
      "commit": "1cebba71734791dade10aeab7313ac896d9ac486",
      "tree": "542e43571f3d221a09ebb84206f41def2171ccde",
      "parents": [
        "b6f77c87c75a210a13c98e42a27364187b81e22d"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon May 22 15:09:25 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue May 23 10:18:41 2017 +0900"
      },
      "message": "Fix NetworkStatsObserversTest\n\nThis patch fixes several spurious unit tests in\nNetworkStatsObserversTest by using the updated waitForIdleHandler of\nConnectivityServiceTest. More specifically this fixes the following\ntests:\n  - testUnregister_knownRequest_releasesCaller\n  - testUpdateStats_deviceAccess_notifies\n  - testUpdateStats_userAccess_usageSameUser_notifies\n  - testUpdateStats_defaultAccess_notifiesSameUid\n\nThis patch also removes the dummy message with type -1 sent at the end\nof tests in NetworkStatsObserversTest and the associated assert, because\nnothing is exercised or asserted immediately after.\n\nThis patch also updates NetworkStatsObserversTest to not depend on the\ndeprecated junit.framework.TestCase.\n\nBug: 32561414\nTest: runtest -x frameworks/base/tests/../NetworkStatsObserversTest.java\nChange-Id: I4fc909ee9bacc964c859fa7a3db34f9dc86b89cf\n"
    },
    {
      "commit": "b6f77c87c75a210a13c98e42a27364187b81e22d",
      "tree": "47f081d7e54426b8cc0a6854266fb44c6f059631",
      "parents": [
        "bb91c57ec5226f11a12653dd988c30b7e3d07ae8"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon May 22 14:33:05 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue May 23 10:18:41 2017 +0900"
      },
      "message": "Fix NetworkStatsAccessTest\n\nThis patch fixes NetworkStatsAccessTest by taking into account\nDEVICESUMMARY which was added in commit\n3a8b343ce5220086c4f71e63f5d42f2d28434c4b.\n\nDoing $ git revert 3a8b343ce5220086c4f71e63f5d42f2d28434c4b shows that\nthe existing assertions of NetworkStatsAccessTest passed before that\ncommit.\n\nThis patch also changes NetworkStatsAccessTest to use up-to-date testing\nstyle and not depend on the deprecated junit.framework.TestCase.\n\nBug: 32561414\nTest: runtest -x frameworks/base/../NetworkStatsAccessTest.java\nChange-Id: Ib78f137578cf35e1c766b377b7f812a09173c49e\n"
    },
    {
      "commit": "bb91c57ec5226f11a12653dd988c30b7e3d07ae8",
      "tree": "62dd8f47305d28184bad3065fff69ba187e70fff",
      "parents": [
        "70fe11fc38c6b40a5e183ee1dcb18134164a7c35"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon May 22 10:44:02 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue May 23 10:18:41 2017 +0900"
      },
      "message": "ConnectivityServiceTest: fix flakyness\n\nThis patch attempts to fix the remaining spurious failures in\nConnectivityServiceTest, which have two causes:\n - waitForIdle() does not take into account the NetworkAgents handlers.\n - the deadlines in testRequestBenchmark are sometimes exceeded.\n\nTo fix the first issue, waitForIdle() is moved to a test level instance\nmethod and also calls waitForIdleHandler on any non null\nMockNetworkAgent. This is expected to fix spurious errors for the\nfollowing tests:\n  - testMobildeDataAlwaysOn\n  - testLingering\n  - testPacketKeepAlive\n  - testMMSonWiFi\n\nTo fix the second issue, the deadlines for testRequestBenchmark are\nextended by 10ms. Also, the failure message is made more actionable by\nproviding the total time it took for the operation, instead of printing\nthe number of dispatches that were achieved before the deadline.\n\nBug: 32561414\nTest: tests pass many times in a row (~500).\nChange-Id: Id33c6ac1edfb0b89634fa7789dccb2da237e2709\n"
    },
    {
      "commit": "30f2544f0cf7b1974f8d95d9da894286dee8bb65",
      "tree": "2a4342d6d2d483cfdabfc2438b7662f2604718b5",
      "parents": [
        "1bc1936ae9001c0f65bcb4d56d3ee5b73b98e5c3",
        "2965d33afc7fd68300b99a53a3f65dab10b5e24e"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri May 19 02:29:19 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 19 02:29:21 2017 +0000"
      },
      "message": "Merge \"Add a method to start the captive portal login app.\""
    },
    {
      "commit": "1bc1936ae9001c0f65bcb4d56d3ee5b73b98e5c3",
      "tree": "db930cec15bb89bf9dab328928df76df4efa8c18",
      "parents": [
        "d4ae914be27a29b4d764846ec57af9fb9fe4a69e",
        "02cc839411c1f7a4e15d8db40fca6f644abd0109"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Fri May 19 02:05:54 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 19 02:05:55 2017 +0000"
      },
      "message": "Merge \"Add test coverage for explicitlySelected networks.\""
    },
    {
      "commit": "2965d33afc7fd68300b99a53a3f65dab10b5e24e",
      "tree": "8a2c9b2834ba1139ba8b0293fffc11c5d10f1eb3",
      "parents": [
        "c01fbf0f0c7903f2181a8be933b7020cc6af85c5"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Apr 27 14:30:21 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri May 19 00:58:41 2017 +0000"
      },
      "message": "Add a method to start the captive portal login app.\n\nBug: 36203355\nBug: 36656914\nTest: ConnectivityServiceTest (including new test) passes\nChange-Id: Ide82858af67024623560ab79beea27c201b63447\nMerged-In: I82a9a9a8da47870ba3f1bbef5941b37e970c844f\n\n(cherry picked from commit 4734cdbbc38752765376aedb0d5208463674535e)\n"
    },
    {
      "commit": "0373340b07580232548e4702c644d10f16392065",
      "tree": "c32bcc2329c16579842ecfd4e3ae877d35af145f",
      "parents": [
        "c13a80deee9990ea5fe370d19ab69964f52ea799",
        "7747fd4ce055e8e1f6381062a58b867728f57d85"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 18 03:25:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 18 03:25:30 2017 +0000"
      },
      "message": "Merge \"Expand logging capabilities of Tethering subsystem\""
    },
    {
      "commit": "e6181b0c47c161be56bbc07f69275fe768634b82",
      "tree": "dc48d7023329e039403b35c9adc8c9e48b4bfed7",
      "parents": [
        "c01fbf0f0c7903f2181a8be933b7020cc6af85c5"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu Mar 23 12:32:27 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu May 18 11:08:31 2017 +0900"
      },
      "message": "Fix NetworkNotificationManagerTest\n\nThe testNotificationsShownAndCleared test was not doing anything\nbecause the list of notification to show was always empty.\n\nThis patch fixes this issue and actually makes the test loop on\nnon-empty collections, and also fixes another ordering issue in\nassertions themselves, hidden until now by the first issue.\n\nBug: 32561414\nTest: runtest -x frameworks/base/tests/net/java/com/android/server/connectivity/NetworkNotificationManagerTest.java\nMerged-In: I4837b1175d7c9133e9156e33acaa1e7e3341cc62\nChange-Id: Ia30587bd68a87b83b62f57eeeb28fef7d95dbf81\n\n(cherry picked from commit f8b804be5aeb5d0a36ff88649d7c5ecdc47c3ad1)\n"
    },
    {
      "commit": "c01fbf0f0c7903f2181a8be933b7020cc6af85c5",
      "tree": "af816efc6bc6f356932813caef7d66cfc0b218b2",
      "parents": [
        "1ae1b6b9609756b1a33073e4ccc43e0309ff7044",
        "d8ddab6ba529ad6c7b69bd3ffc5041f3a6e328b6"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu May 18 02:01:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 18 02:01:40 2017 +0000"
      },
      "message": "Merge \"Move NetworkNotificationManagerTest to tests/net\""
    },
    {
      "commit": "7747fd4ce055e8e1f6381062a58b867728f57d85",
      "tree": "fe367910f375a85bdda460a0b10d73f3b3aab6f9",
      "parents": [
        "8f65e470b0354f5fca3966f61a5995819609fbd2"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri May 12 16:52:48 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu May 18 09:46:45 2017 +0900"
      },
      "message": "Expand logging capabilities of Tethering subsystem\n\nIntroduce a SharedLog that can be shared among all Tethering\ncomponents.  All log entries go to the same log, and each includes\nits subsystem name.  Additionally, all entries emitted to the\nsystem log shared the same tag, so can easily be watched.\n\nMore subsystems can inherit a SharedLog, but to minimize cherry-pick\nconflicts we limit ourselves to these changes only.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - log output observed via dumpsys\n    - runtest frameworks-net passes\nBug: 32163131\nBug: 36988090\nBug: 38218697\nChange-Id: I1229d4c55987402d84b0d4a2c8a595e0c829aa3e\n"
    },
    {
      "commit": "1ae1b6b9609756b1a33073e4ccc43e0309ff7044",
      "tree": "1d2e9d55280a6ed78cba1ff7979873912f1ec5bd",
      "parents": [
        "dde9ee9eddaf61afa18e5d30d78d7d5d4530697b",
        "e7e10303f3bc545a9763fab7a7e89da9120bedfa"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu May 18 00:09:53 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 18 00:09:54 2017 +0000"
      },
      "message": "Merge \"Finish moving NetworkStats tests to tests/net\""
    },
    {
      "commit": "02cc839411c1f7a4e15d8db40fca6f644abd0109",
      "tree": "a8dc74b112d7364872d8d2d4a8ba735ca5af8146",
      "parents": [
        "73818566d6cdab38b96a9a6dbf773f11b166526c"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed May 17 01:28:09 2017 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu May 18 00:46:14 2017 +0900"
      },
      "message": "Add test coverage for explicitlySelected networks.\n\nAlso, make all tests start with mobile data always on disabled.\n\nThis is because some tests only pass when mobile data always on\nis disabled. This doesn\u0027t cause any problems when running all\nthe tests in the file, because these tests are always run after\none or more calls to tearDown, which disables mobile data always\non. However, it does cause issues when those tests are run alone.\n\nTest: new test passes 50 times in a row\nTest: ConnectivityServiceTest passes\nChange-Id: I1eef5d7f5ec5464e0f9a1d7f1130d9ba6dea4557\n"
    },
    {
      "commit": "d8ddab6ba529ad6c7b69bd3ffc5041f3a6e328b6",
      "tree": "f91dc9e67f90dd0dbaa4dfad3de069c904c5f622",
      "parents": [
        "e7e10303f3bc545a9763fab7a7e89da9120bedfa"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue May 16 10:56:46 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed May 17 22:24:05 2017 +0900"
      },
      "message": "Move NetworkNotificationManagerTest to tests/net\n\nBug: 32561414\nTest: no functional change\nChange-Id: Iad17e3336a4a589da5cf88fd6359323e34b747e1\n"
    },
    {
      "commit": "e7e10303f3bc545a9763fab7a7e89da9120bedfa",
      "tree": "c5a5b52853e97ab8ba8386e969042c029417dcc0",
      "parents": [
        "0727abc423bb8ff265534f54daa4df9df7b61ee3"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon May 15 09:53:44 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed May 17 22:24:05 2017 +0900"
      },
      "message": "Finish moving NetworkStats tests to tests/net\n\nFollow-up of commit c86013be936f36c61fa0cdfad95141f6de3c6ef7.\n\nAlso add @SmallTest annotation to classes moved to tests/net.\n\nTest: no functional change\nBug: 32561414\nChange-Id: I0a0e8865d37ba7bae06ce352d3fc385989adc300\n"
    },
    {
      "commit": "5a7c8a0b24adc0f5d5ce3b98e995ef78096abf5b",
      "tree": "fa63192b573c1eebd736129c512a9f85d6b70e02",
      "parents": [
        "b0daeeb879f240fc33eba102a35dc8d8f47b15f1"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Sun Apr 30 19:36:15 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed May 17 13:44:25 2017 +0900"
      },
      "message": "Add tethering offload HAL call via JNI\n\nAdditionally, try to locate java Control interface.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - OffloadController log messages observed, but only ever\n      \"not enabled\" messages (needs a supporting implementation)\nBug: 29337859\nBug: 32163131\nBug: 34361337\nMerged-In: I5251d05f2d2fd732a33a8955a6c346b3a2401e46\nChange-Id: I5251d05f2d2fd732a33a8955a6c346b3a2401e46\n(cherry picked from commit 58ed1b051bdffd239d92919170a0bb41a4cc197c)\n"
    },
    {
      "commit": "54f2f3704e4ccf2c70ff61aab4e7ea9d59918e46",
      "tree": "175644625e78c19d0b4162e7bc17d5db3728e521",
      "parents": [
        "73818566d6cdab38b96a9a6dbf773f11b166526c"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon May 15 21:11:47 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue May 16 15:14:45 2017 +0900"
      },
      "message": "Fix broken DUN evaluation logic\n\nTest: as follows\n    - built\n    - booted\n    - flashed\n    - runtest frameworks-net passes\nBug: 32163131\nBug: 38152109\nBug: 38186915\nChange-Id: Id4803504e825290d62c0b51a2b9bd664dcef30b1\n"
    },
    {
      "commit": "6e039a13cc032d2bbe94167fe54489c80cbc52c1",
      "tree": "383797543d54ffbd7ada17886c739789f15a47fa",
      "parents": [
        "cb88323dd27467d8ee3992fe4f05884a0d05abba"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue May 09 14:09:02 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu May 11 14:15:20 2017 +0900"
      },
      "message": "ConnectivityManager: unit test for argument validation\n\nBug: 36701874, 37107940\nTest: new test passes\nChange-Id: Ie762ce758b3d94052b7438a67fc55bef4690cbbb\n"
    },
    {
      "commit": "cb88323dd27467d8ee3992fe4f05884a0d05abba",
      "tree": "9974d069c0a25dba3a3b31a3896b2e41bfcb7899",
      "parents": [
        "df57734354e9e7115eb7fd188f2815081cd3b626"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu May 11 13:16:17 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu May 11 14:15:15 2017 +0900"
      },
      "message": "ConnectivityManager: uses service error codes and exceptions\n\nThis patch introduces between ConnectivityManager and\nConnectivityService a mechanism for propagating back to clients\ninformative errors in the form of error codes and associated custom\nruntime exceptions.\n\nWithout error code, the service can only throw a limited number of\ndifferent exceptions over Binder. Furthermore the throw site stack\ntraces are always loss. Although for individual instances of a throw,\nthe error message can be inspected, aggregations of stack traces from\napp crashes sanitize error messages and only leaves the stack traces.\n\nThis makes debugging dificult for some service calls such as\nrequestNetwork that can have a variety of failure modes.\n\nIn this patch only one failure mode is codified. More can be added later\nat a light cost by: 1) defining an error code, 2) defining an\nassociated exception, 3) mapping the code to the exception. This patch\ncan serves as a template for doing so.\n\nTest: $ runtest frameworks-net,\n      #testNetworkRequestMaximum() detects the new exception type.\nBug:  36556809, 36701874\nChange-Id: I611fd7915575c9e418f7149fcdc8a879d2a3716d\n"
    },
    {
      "commit": "ba666e0621532526ae3e0e30074ddd060347fd44",
      "tree": "d8a1a8d5d00a56e06f47afac09b0feae25569670",
      "parents": [
        "66deee2bd47929652feb560f3c60a0097543dc7b",
        "e1bb3a14d1ee1aba2f92e5bccf659774699eaffe"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed May 10 00:07:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 10 00:07:29 2017 +0000"
      },
      "message": "Merge \"NetworkStatsFactory: fix double accounting on IPv6 only networks\""
    },
    {
      "commit": "e1bb3a14d1ee1aba2f92e5bccf659774699eaffe",
      "tree": "e1b0d6fe960efc470ba609ef3d7c6f92bbde30ec",
      "parents": [
        "d308803b82f5317eebafdf3a97baff3bcd460e60"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Apr 07 15:20:56 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue May 09 22:46:14 2017 +0900"
      },
      "message": "NetworkStatsFactory: fix double accounting on IPv6 only networks\n\nFor 464xlat scenarios on IPv6 networks, the clatd interface setup\nintroduces double counting of apps ipv4 traffic. NetworkStatsFactory was\naccounting for this on the tx path, but not on the rx path. Also it did\nnot accounted for the 20 bytes added by the IPv6 header.\n\nThis patch subtract correctly the rx and tx traffic from the root uid on\nthe underlying interface, and also adds correctly the 20 bytes cost per\npacket on the stacked interface for 464xlat traffic.\n\nTest: added several new unit tests, based on synthetic data and real\n      data also.\nBug: 33681750\nChange-Id: I2675643b220acbc6110179fa937d4c313b6f5e32\n"
    },
    {
      "commit": "c3d41d50933c69faf0b00540f128b0d130b4d1e8",
      "tree": "661dcbe735dbd0d39fc489118a53609dd84bd438",
      "parents": [
        "b2ac85e76d32ec85cd44b9ca4f53803297048631",
        "1fdc2e23b5d8136e06cafd7de896b49e5f929c7f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 09 10:33:50 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 09 10:33:51 2017 +0000"
      },
      "message": "Merge \"Refactor and improve logging.\""
    },
    {
      "commit": "b2ac85e76d32ec85cd44b9ca4f53803297048631",
      "tree": "e30ee81f1f7005cebf1e8d3fb5d4e17b9a6023cc",
      "parents": [
        "767ac317e2a3de58fb0f2e5ce467c48c229c1d5c",
        "702d506d5788e39e83cc7ba6495f0d5410b46e7a"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue May 09 10:23:15 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 09 10:23:17 2017 +0000"
      },
      "message": "Merge \"Prepare for removal of junit and android.test classes from Android API (step 1)\""
    },
    {
      "commit": "1fdc2e23b5d8136e06cafd7de896b49e5f929c7f",
      "tree": "88012ce77aa4fc5b0c38748fc6c578c10d5f58b2",
      "parents": [
        "1101f45613c7e17dd5fa853e52ce9811d2d37b71"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon May 08 17:56:35 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue May 09 17:29:47 2017 +0900"
      },
      "message": "Refactor and improve logging.\n\nTest: as follows\n    - build\n    - flashed\n    - booted\n    - \"runtest frameworks-net\" passed\n    - \"dumpsys connectivity\" shows new log output\nBug: 32163131\nBug: 36504926\n\nChange-Id: I14d6da18660223f7cace156cb6594ee18928a7b0\n"
    },
    {
      "commit": "ab5bdbf84e89d48ad9daa015cae436a9d27cfdd3",
      "tree": "842066b8ff01430c69104c3cf03ac94effd220bd",
      "parents": [
        "ff3e6ccca1715ae72c6499cc7c894d27f46e8403"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Apr 28 15:31:10 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue May 09 10:49:33 2017 +0900"
      },
      "message": "NsdService: test coverage for client requests.\n\nAdding coverage for:\n  - NsdManager client disconnection\n  - in-flight request GC\n\nTest: new test passes\nBug: 37013369, 33298084\nChange-Id: I92039f297cf99352bbf4196797933d89c0b819ff\n"
    },
    {
      "commit": "702d506d5788e39e83cc7ba6495f0d5410b46e7a",
      "tree": "efa1ca0be77119c15076d0b15729ea349102f806",
      "parents": [
        "d308803b82f5317eebafdf3a97baff3bcd460e60"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Mar 01 13:21:10 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon May 08 19:33:27 2017 +0100"
      },
      "message": "Prepare for removal of junit and android.test classes from Android API (step 1)\n\nIn preparation for removing junit and android.test classes from\nthe Android API this change adds explicit dependencies on junit\nand/or legacy-android-test to ensure that modules will compile\nproperly once it is removed.\n\nCare was taken to ensure that any targets that depended,\ndirectly or indirectly, on android-support-test did not also\ndepend on junit or hamcrest as they conflict with the versions\nembedded within android-support-test.\n\nBug: 30188076\nTest: make checkbuild\nChange-Id: Ice80a29b420061f5d0af6eb46426455abf890e5e\nMerged-In: Ifc3ee3dc804074a3c572bf2600cfb1fe1b6fa749\n"
    },
    {
      "commit": "3e21b1745c6785870a0295bf614a07029b04bf3c",
      "tree": "9301f7ee2b3401c16bfe4439fb09356d0b87f247",
      "parents": [
        "b0e408450cb4199adee79a7bec0f931e7033ba2b",
        "93f45916845814e5a50c26f770e0473212517fe1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 02 08:44:27 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 02 08:44:29 2017 +0000"
      },
      "message": "Merge \"NsdManager: add test coverage for discoverServices()\""
    },
    {
      "commit": "b0e408450cb4199adee79a7bec0f931e7033ba2b",
      "tree": "67bcb8ecaaecc414c4036a42455fcb9cf2aa3783",
      "parents": [
        "c00af4c533689074e3bf635378190c90aa310d6f",
        "8c5eeb0afc5dad35ee8ce11b9e82f7219a1a609d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 02 06:27:08 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 02 06:27:10 2017 +0000"
      },
      "message": "Merge \"NsdManager: unit test coverage for servive registration\""
    },
    {
      "commit": "93f45916845814e5a50c26f770e0473212517fe1",
      "tree": "80a2a3b7e6c40cffaae0d21c42b3c57aace5d1a3",
      "parents": [
        "8c5eeb0afc5dad35ee8ce11b9e82f7219a1a609d"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Apr 28 13:29:21 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue May 02 15:26:33 2017 +0900"
      },
      "message": "NsdManager: add test coverage for discoverServices()\n\nTest: added new tests\nBug: 37013369, 33298084\nChange-Id: If6c1113ee1bd4690db90abd5a61c3e229c827aec\n"
    },
    {
      "commit": "8c5eeb0afc5dad35ee8ce11b9e82f7219a1a609d",
      "tree": "cc7bd650e637235283a90bf56433d8ec37be9eee",
      "parents": [
        "3cff7deecbdad5f30f7db23a9b21e9bc2cf767d6"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Apr 28 11:01:22 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue May 02 13:31:24 2017 +0900"
      },
      "message": "NsdManager: unit test coverage for servive registration\n\nThis patch adds test coverage for NsdManager#registerService() and\nNsdManager#unregisterService(). This test shows a potential defect in\nthe api: if unregisterService() fails, the associated listener is always\nunregistered from NsdManager. If the service initially registered is\nstill registered, this potentially make it impossible to unregister.\n\nTest: added new unit test\nBug: 37013369, 33298084\nChange-Id: Ia089b6d2f2a349907a8b29d9a3acd7f59e177887\n"
    },
    {
      "commit": "216af6d3febb109628d9185ec1a619f0e003bcd1",
      "tree": "39f61626e67e5be3692a6f9f23f9d7a18b01895b",
      "parents": [
        "5bd39aaf42a7d70438cb7c2de5293192e945145e"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Apr 27 20:57:23 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Apr 28 13:46:41 2017 +0900"
      },
      "message": "Notify WifiManager of interface state changes\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - \"runtest frameworks-net\" passes\n      (except for an unrelated IpConnectivityMetricsTest error)\nBug: 31466854\nBug: 32163131\nChange-Id: I702ea79eb2c02604761e4e1ebcd5f9e445178efb\n"
    },
    {
      "commit": "52d9e733aedf210b50f1df389cc23fbf28ab97fe",
      "tree": "ac5e9a008b7463f1bd2b01cfab8409cedc9afdd6",
      "parents": [
        "1fac3191c7ba7921724530ac38c07cb95263a635"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue Apr 25 15:04:10 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu Apr 27 16:35:48 2017 +0900"
      },
      "message": "NsdManager: unit tests for argument validation\n\nTest: new tests pass.\nBug: 37013369, 33298084\nChange-Id: Ia514d2bbd967d46fed54e379f319b572ade22c62\n"
    },
    {
      "commit": "1fac3191c7ba7921724530ac38c07cb95263a635",
      "tree": "ee06f6515be242c8f15a4d8c9685ce3d77b21b3b",
      "parents": [
        "7ca060aa95ce8425b8d69d8dee3a472c968f28e0"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Apr 24 16:19:58 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu Apr 27 16:35:30 2017 +0900"
      },
      "message": "NsdService: disentangle NativeDaemonConnector from ctor\n\nThis patch disentangles the creation of NativeDaemonConnector from the\ncreation of NsdService by introducing a wrapper type DaemonConnection.\n\nThis allows to mock this dependency in unit tests.\n\nTest: enhanced previously introduced new tests.\nBug: 37013369, 33298084\nChange-Id: I894b7cddfc509f86d0134d214c88c063b81b5e0a\n"
    },
    {
      "commit": "7ca060aa95ce8425b8d69d8dee3a472c968f28e0",
      "tree": "2b67c47dcf960e6f8ef35977392f2ce7979b0f29",
      "parents": [
        "ebc94ecac9199729ae7b46faa4ef6908181cad91",
        "cbb13672bcb20cba19a5cd54fdfd1a33e98271c1"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu Apr 27 05:22:52 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 27 05:22:54 2017 +0000"
      },
      "message": "Merge \"NsdService: bootstrap unit tests\""
    },
    {
      "commit": "2fd19ffa060f1c8678f42b8062816aa6900412d5",
      "tree": "44ef3eeef993de38548302c2155a55712581d71b",
      "parents": [
        "7d4a354fd572ac0dc01f9b815a9e0af2d127bc5b",
        "859748f08c42ddff5693c48d17bed633cbfe9cce"
      ],
      "author": {
        "name": "Etan Cohen",
        "email": "etancohen@google.com",
        "time": "Tue Apr 25 13:21:35 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 25 13:21:36 2017 +0000"
      },
      "message": "Merge \"[AWARE] Add UID checking to WifiAwareNetworkSpecifier\""
    },
    {
      "commit": "cbb13672bcb20cba19a5cd54fdfd1a33e98271c1",
      "tree": "5dec22cdd6b72d3b59b516905fc08381d3185b55",
      "parents": [
        "7781a6d4c138dab056459d9e3dfc017a763b70d0"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Apr 24 11:35:06 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue Apr 25 10:42:58 2017 +0900"
      },
      "message": "NsdService: bootstrap unit tests\n\nTest: new tests part of $ runtest frameworks-net\nBug: 37013369, 33298084\nChange-Id: Ief45f838268380b4b2a128390fbf34d55a3b922b\n"
    },
    {
      "commit": "495a17b332e57ea4c0162a4ae63d820b947e3719",
      "tree": "9f53928fc478332032e0c44f6ac101e79a590b97",
      "parents": [
        "9910dbc682118d2527fc17d4b50e8dcb94318534"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu Jan 12 15:31:05 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Sat Apr 22 10:07:03 2017 +0900"
      },
      "message": "Move byte logics from ApfFilter into BitsUtil\n\nThis patch extracts into BitUtils byte manipulation helper methods\nand unsigned type manipulation helper methods from ApfFilter into\nan independent and reusable structure.\n\nTest: $ runtest frameworks-net\nChange-Id: I0f33af10457a63dbde5983f14353a79b8cd877d9\n"
    },
    {
      "commit": "dc54ad7fc37888a1bb3db0d19dec5a6aca167cf0",
      "tree": "861f27397d908e3016a61e8e5aaae8cd2600d27e",
      "parents": [
        "d065cf049e870465571afb9c55d3d033a314015b",
        "db8adb798394af6381974444bfa0c47f4b30f0fb"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Sat Apr 22 00:31:27 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 22 00:31:28 2017 +0000"
      },
      "message": "Merge \"NsdManager: add unit tests\""
    },
    {
      "commit": "b90b2015d3d4e1e165c587738c136709ed8a409c",
      "tree": "b7b9901f859002780c0eff04041729435aef1868",
      "parents": [
        "e4f56a7e44aa707db45970e9471e2603ee0ee24e",
        "a7e148a87440a047cdd99179a99939a73e383d44"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 21 23:12:51 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 21 23:12:52 2017 +0000"
      },
      "message": "Merge \"Mark Restricted APN connections as restricted.\""
    },
    {
      "commit": "a7e148a87440a047cdd99179a99939a73e383d44",
      "tree": "9c084dbaf8cee30f2994db966ff10b785bbc571c",
      "parents": [
        "9487dff8ab8a55202016137f464567b0adbf1f7f"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Mon Apr 10 14:32:23 2017 -0700"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Apr 21 22:00:17 2017 +0000"
      },
      "message": "Mark Restricted APN connections as restricted.\n\nIf anything unrestricted is bundled in the whole thing has to be\nunrestricted (we can\u0027t restrict based on destination or intent)\nbut the NOT_METERED flag wasn\u0027t taken into account.\n\nThis wasn\u0027t a problem before because telephony set that statically\nand late, but a change caused it to be marked NOT_METERED earlier\nwhich exposed this bug.\n\nbug: 37208956\nMerged-In: I7b7a1c38621ce0ecde8cf041e82b1ebb7a9c6f15\nTest: new NetworkCapabilitiesTest.  Fails without fix, works with.\nChange-Id: I86c1b2854413a94662aa53e697d32380695ab9ac\n"
    },
    {
      "commit": "e4f56a7e44aa707db45970e9471e2603ee0ee24e",
      "tree": "ef3a010db7a43c780c98e6c2b29349eeca1bd299",
      "parents": [
        "c8d5f84fcf15fe242fc4d213f9a6b861485bc441",
        "c3736bc10da63d6a351d3f8e7781ff1d67ecc9a6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 21 21:53:14 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 21 21:53:15 2017 +0000"
      },
      "message": "Merge \"Use Vpn rules (not firewall) for always-on VPN\""
    },
    {
      "commit": "859748f08c42ddff5693c48d17bed633cbfe9cce",
      "tree": "8a222bf7820976fce23144109781f47b3bba39d7",
      "parents": [
        "946410eef568ecb9f3771b9c78b16290e694b10e"
      ],
      "author": {
        "name": "Etan Cohen",
        "email": "etancohen@google.com",
        "time": "Mon Apr 03 17:42:34 2017 -0700"
      },
      "committer": {
        "name": "Etan Cohen",
        "email": "etancohen@google.com",
        "time": "Fri Apr 21 18:47:35 2017 +0000"
      },
      "message": "[AWARE] Add UID checking to WifiAwareNetworkSpecifier\n\nWifi Aware networks are per app - i.e. a requestor gets\na dedicated network. Change verifies that the only the\noriginal requestor matches the created network (using UID).\n\nBug: 36053921\nTest: Integration (sl4a) tests\nChange-Id: I4ff3994731dd7ccb88e2bea333d1e6905b136f02\n"
    },
    {
      "commit": "db8adb798394af6381974444bfa0c47f4b30f0fb",
      "tree": "782297a36a79493350589887d4bd7bacb35c76bd",
      "parents": [
        "1321e592fe8ba8f3d975d0e8af6c4fec84481ff4"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Apr 17 15:27:52 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Apr 21 05:16:37 2017 +0000"
      },
      "message": "NsdManager: add unit tests\n\nThis prepares some refactoring and the addition of a timeout to\nresolveService.\n\nTest: new tests pass\nBug: 37013369, 33298084\nChange-Id: Ie8277bd5983278507bfa70495b4ce7d13895b24b\n"
    },
    {
      "commit": "ca41be796a56fab152cd07bbeaf9283de7e8be90",
      "tree": "b5af682fa0536cee003b7a03981045f5db76b4fc",
      "parents": [
        "1321e592fe8ba8f3d975d0e8af6c4fec84481ff4"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Apr 20 22:59:16 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Apr 21 11:12:24 2017 +0900"
      },
      "message": "Clarify IControlsTethering LOCAL_ONLY state name\n\nTest: as follows\n    - build\n    - flashed\n    - booted\n    - \"runtest frameworks-net\" passes\n    - manually starting tethering shows Settings and icon updates\nBug: 31466854\nBug: 32163131\n\nChange-Id: I1f45511f00aca37480f894be4a9a004f1a3b35d7\n"
    },
    {
      "commit": "275edcb940f1fb0aba53f19b87fe76d6fd8538a0",
      "tree": "90c61463d60a49889f6fab767bf17a81686a762c",
      "parents": [
        "4c7a999d79eabbd8d0fea831ab3ae8162bd29a7e",
        "ceb54c63dc7af8f11ec9eac4993a43b9e788ee2f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 20 15:37:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 20 15:37:31 2017 +0000"
      },
      "message": "Merge \"Switch to WifiManager.{start,stop}SoftAp()\""
    },
    {
      "commit": "8351faa900acdba1022f03bb3f18e26f539eadae",
      "tree": "96a9213838c4ef9e49915530d0c1be7e6ed020ca",
      "parents": [
        "fe86a197a112e248f6defede035657c508f41e8b"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Apr 17 16:47:23 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Apr 20 19:44:01 2017 +0900"
      },
      "message": "Add local-only hotspot info into tether state change broadcast\n\nTest: as follows\n    - build\n    - flashed\n    - booted\n    - \"runtest frameworks-net\" passes\n    - manually starting tethering shows Settings and icon updates\nBug: 31466854\nBug: 32163131\n\nChange-Id: I938074587dfeec221c5cdb43a392802ad3fc3589\n"
    },
    {
      "commit": "ceb54c63dc7af8f11ec9eac4993a43b9e788ee2f",
      "tree": "74e834d060f19d5875fcbce895582966fb478f95",
      "parents": [
        "6d033475b307ae95d0e733a3be9260525aa2879d"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Apr 18 14:22:25 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Apr 18 15:22:49 2017 +0900"
      },
      "message": "Switch to WifiManager.{start,stop}SoftAp()\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - \"runtest frameworks-net\" passes\nBug: 31466854\n\nChange-Id: I730d029128a14b936c111ae159b9708d935f4656\n"
    },
    {
      "commit": "dafed3d00818713b60ec09cfff482487a3405202",
      "tree": "a1cb5a5e865a8dc9aaf55d164bb47ed3fe086138",
      "parents": [
        "9ea45b6106cefad09e1cb0235801ec9ec4f918f1"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Mar 06 09:17:06 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Apr 14 22:17:21 2017 +0900"
      },
      "message": "ConnectivityManager: release all requests mapping to a callback.\n\nThis patch changes how callback unregistration works in order to be\nconsistent with undocumented use cases currently de-facto supported\nby the API (although in a buggy way):\n  - callback recycling: releasing then reregistering a callback again.\n  - multiple request registrations with the same callback.\n\nThe second use case is not desirable but needs to be taken into account\nfor now for the purpose of correctly releasing NetworkRequests\nregistered in ConnectivityService.\n\nIn order to support request release in both use cases with minimal\namount of complexity for the time being the following changes are done:\n  - request to callback unmapping is done synchronously at callback\n    release time.\n  - all requests associated to a callback are unmapped at callback\n    release time.\n\nThis fixes the following issues:\n  - a callback stops being triggered as soon as it is released.\n    Otherwise when recycling the callback immediately, it is possible\n    the previous request associated with it triggers it, confusing the\n    app.\n  - when a callback is registered multiple times, the requests are not\n    leaked.\n  - when a callback is registered multiple times and then released, the\n    N-1 first registrations do not trigger the callback anymore.\n\nIn the future it would be desirable to enforce the intended 1:1 mapping\nbetween callbacks and requests at registration time.\n\nBug: 35921499, 35955593, 20701525\nTest: - added new tests in ConnectivityManagerTest to test releasing,\n      recycling, and a disabled test for no multiple regristration.\n      - new tests catch regression causing b/35921499, b/35955593.\nChange-Id: Ia0917ac322fc049f76adb4743bc745989fed6d26\n"
    },
    {
      "commit": "0ef8df6d52adf157ed931ef9d346043d28ecac0a",
      "tree": "db5f59b14d1b61e31bf02a30545f73bd5ade6ca9",
      "parents": [
        "f854c9034c3a7b4bd41c336db3ee05b88c164209",
        "227648f3368876c1cc249f40c26b32b250fd3cae"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 13 08:19:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 13 08:19:07 2017 +0000"
      },
      "message": "Merge \"Extract SimChangeListener to its own file\""
    },
    {
      "commit": "ab3901dc8b1a8e77b83be362415920b955fdcbae",
      "tree": "c5c7b6a9319fe72d51509383283f2944816e923c",
      "parents": [
        "d0f476bdaef85ac178c97b76f0589604f11fd109",
        "c86013be936f36c61fa0cdfad95141f6de3c6ef7"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Apr 13 05:18:46 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 13 05:18:47 2017 +0000"
      },
      "message": "Merge \"Move some NetworkStats tests to tests/net.\""
    },
    {
      "commit": "d0f476bdaef85ac178c97b76f0589604f11fd109",
      "tree": "d63b614adbb5b5ea2ef138b4b2ae87b3c05358d5",
      "parents": [
        "a9acf9db97db75457fc37880ca7f14e605ea1f17",
        "39c6014666e778a48212a60216ab89152aafd3ae"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Apr 12 22:27:35 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 12 22:27:37 2017 +0000"
      },
      "message": "Merge changes from topic \u0027network_specifier\u0027\n\n* changes:\n  [CM] Unhide the NetworkSpecifier as object API\n  Make the NetworkSpecifier a class instead of a string.\n"
    },
    {
      "commit": "c86013be936f36c61fa0cdfad95141f6de3c6ef7",
      "tree": "9937e64aabc108e781468ff5ef9c5594b3094b06",
      "parents": [
        "70fea2df2a1bfc6f4981a6d3f636e26f3cb96490"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Apr 13 01:18:05 2017 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Apr 13 02:38:11 2017 +0900"
      },
      "message": "Move some NetworkStats tests to tests/net.\n\nThis groups them together with the rest of the networking unit\ntests. It also speeds up compile/test cycles (\"runtest -x\" of one\nfile goes from 1m15s to 30s).\n\nTest: runtest frameworks-net passes on internal tree\nChange-Id: I53cb0c51355fe4b4b30e451fa09fbbf58da39efd\n"
    },
    {
      "commit": "227648f3368876c1cc249f40c26b32b250fd3cae",
      "tree": "30d24fae6d93bb45aff28fa742485e5a46a90343",
      "parents": [
        "d269f30d62d9ea142790736c7509bb3b5637a38c"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Jan 20 20:26:10 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Apr 12 15:57:49 2017 +0900"
      },
      "message": "Extract SimChangeListener to its own file\n\nTest: as follows\n    - built (bullhead)\n    - flashed\n    - booted\n    - runtest frameworks-net passes\n    - runtest -x full/path/to/SimChangeListenerTest.java passes\nBug: 32163131\nChange-Id: If90539fe9a5dc07c7c24ed0b70b920d94065a623\n"
    },
    {
      "commit": "ea9cc488eb0f096c9fd402eff49e3d30f5b6de2e",
      "tree": "454cce0aebf18e715f501b4e5fba11b1a24bf287",
      "parents": [
        "7a12f7efc79ba3848c82ebc7b74d1ada11f970e0"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Mar 10 19:35:34 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Apr 10 19:11:08 2017 +0900"
      },
      "message": "Tethering: support Local-only Hotspot mode for downstreams\n\nTest: as follows\n    - built (bullhead)\n    - flashed\n    - booted\n    - \"runtest frameworks-net\" passes\nBug: 31466854\n\nChange-Id: Ia50e28c8ce0af8cdd7ac63217d921aff213668e7\n"
    },
    {
      "commit": "7a12f7efc79ba3848c82ebc7b74d1ada11f970e0",
      "tree": "ec93745c7cdd95aac8a7d9a13ad31d7c36924da7",
      "parents": [
        "b2adaad26b7f7f204234bab087437527717d5d48",
        "46aa9c022ed059f1e38f4dbf54d8850e090bce13"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 10 05:40:08 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 10 05:40:10 2017 +0000"
      },
      "message": "Merge \"Add an API hint for metered multipath traffic.\""
    },
    {
      "commit": "fa0dadc540b33998ec74bbe6a77ab16e5c65db84",
      "tree": "a23fccd9fe87f42e0d63823bab8fb70696b16ae3",
      "parents": [
        "7bf58d5975a00bb5ec810e21253e200f6e01c732"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Apr 10 13:12:49 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Apr 10 13:19:23 2017 +0900"
      },
      "message": "DO NOT MERGE IP connectivity metrics: fix tests.\n\nThis patch fixes mismatch between current proto compiler and what is\nexpected in several IP connectivity metrics unit tests.\n\nTest: built, flashed, $ runtest frameworks-net\nBug: 37126521\nChange-Id: I1476c923d61f748ecac1146423127f54ba117502\n"
    },
    {
      "commit": "46aa9c022ed059f1e38f4dbf54d8850e090bce13",
      "tree": "db6e47131cb7909a8b9cee1fa343106d9490082b",
      "parents": [
        "9680667b1d889f189e25b3e5e2d44bbd611c0171"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Jan 24 18:08:41 2017 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Apr 06 16:50:06 2017 +0900"
      },
      "message": "Add an API hint for metered multipath traffic.\n\nThis allows an application that knows how to provide seamless\nnetwork connectivity (e.g., using QUIC multipath) to find out if\ndoing so is desired.\n\n(cherry picked from commit 2de4925f5cc64aeb92e02a8f740d3ff20f36dddd)\n\nTest: builds, boots, runtest frameworks-net passes.\nBug: 34630278\nChange-Id: Ic7fd0b9e1cd879fdfaf84009d7125391895e9087\n"
    },
    {
      "commit": "a743427896d0877aacedb34ac4927691c56768db",
      "tree": "465b459c6aefe46ff0c453cbb4a8daf8279b175e",
      "parents": [
        "9a029b52625c3852f2b7628c208d57cf4f64b34e"
      ],
      "author": {
        "name": "Etan Cohen",
        "email": "etancohen@google.com",
        "time": "Mon Apr 03 12:17:51 2017 -0700"
      },
      "committer": {
        "name": "Etan Cohen",
        "email": "etancohen@google.com",
        "time": "Wed Apr 05 14:18:20 2017 -0700"
      },
      "message": "Make the NetworkSpecifier a class instead of a string.\n\nBug: 27533960\nBug: 36053921\nBug: 36275276\nTest: connectivity, wifi, telephony unit tests\nChange-Id: Idd9b10a8418c53c8cf386d9ff8252226b076bbf9\n"
    },
    {
      "commit": "0e068f63604f1e1c6d11190a4f7fb83dc0faf721",
      "tree": "1fbb63874073be846fe89245320af3f9e6d62457",
      "parents": [
        "6db00a22b098700b8cbb2ac066e610613981f8c6",
        "9a029b52625c3852f2b7628c208d57cf4f64b34e"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Apr 03 10:45:22 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 03 10:45:22 2017 +0000"
      },
      "message": "Merge \"Add test coverage for NetworkSpecifiers.\"\nam: 9a029b5262\n\nChange-Id: Ia328b945af4c4f55ef560b33b00fa861b8f81b0d\n"
    },
    {
      "commit": "6556a220d7d3240be325328c718f28f1be9e381a",
      "tree": "69cc807cdb77b2428d2109a0175d6f06c1929254",
      "parents": [
        "db104b23670d5c0302c6d6540b72e0007abfb94a"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Apr 03 17:46:35 2017 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Apr 03 17:46:35 2017 +0900"
      },
      "message": "Add test coverage for NetworkSpecifiers.\n\nTests various combinations of empty / non-empty NetworkSpecifiers\nand changing specifiers on the fly.\n\nTest: ConnectivityServiceTest passes\nBug: 27533960\nChange-Id: Ibd6b4efc861dc51689e46f3882ba859223411bf0\n"
    },
    {
      "commit": "e61a30f635a885905df7bb318d608451d316ee59",
      "tree": "8905a753ccfb04f3c4bb3b54f551e59f8b592e8f",
      "parents": [
        "6d3c10495e2eecc153e42322f2fb1b3e573f7c2f",
        "ec864620331b0940d1fe6b421d0ffedfdb105263"
      ],
      "author": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Thu Mar 30 16:08:50 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Mar 30 16:08:50 2017 +0000"
      },
      "message": "Merge \"Move some VPN logic out of ConnectivityService\"\nam: ec86462033\n\nChange-Id: I212c2d6de1676ab65e6bbf34148d66e183d60c62\n"
    },
    {
      "commit": "ec864620331b0940d1fe6b421d0ffedfdb105263",
      "tree": "3ccf0cbb40970d3098980f90e01581efad006018",
      "parents": [
        "d1188269716ecba29266178d68092ff2147f83e5",
        "b8c2a2b85052479cb6affe2d4a8240e78198e2d5"
      ],
      "author": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Thu Mar 30 16:00:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 30 16:00:41 2017 +0000"
      },
      "message": "Merge \"Move some VPN logic out of ConnectivityService\""
    },
    {
      "commit": "0a34afb48dd95fdf756b2ae937da95c4bb4f7a33",
      "tree": "2249d8ff2f537ba4737f55ca78a0c08ffae5defc",
      "parents": [
        "673de5b39d697cb8b29ea683d2a5b421ac2ba1d1",
        "22b829c049042cf2fbad0935d6bde322a0229236"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Mar 28 12:33:28 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Mar 28 12:33:28 2017 +0000"
      },
      "message": "Merge changes If94102c7,I8d51e8e0\nam: 22b829c049\n\nChange-Id: I8aa529a05fc40241ec9664775ca0ebd8960098a8\n"
    },
    {
      "commit": "42cdf577037770a66d27f831d0f9e26532c3628d",
      "tree": "69c0890d43d331065be9a5228c705447a7bfd708",
      "parents": [
        "c02ac733d210e5769cd779100d671bc43fe0ec3b"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Mar 21 18:54:11 2017 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Mar 28 12:53:06 2017 +0900"
      },
      "message": "Make ConnectivityServiceTest pass on wifi-only devices.\n\nTest: ConnectivityServiceTest passes on ryu on internal master\nTest: ConnectivityServiceTest passes on bullhead\nChange-Id: If94102c7df0257ea9e69e72b07a685ae3c2c4022\n"
    },
    {
      "commit": "c3736bc10da63d6a351d3f8e7781ff1d67ecc9a6",
      "tree": "6ab24235d42416de6c6acc1f0238f4ad1b3e58ef",
      "parents": [
        "b8c2a2b85052479cb6affe2d4a8240e78198e2d5"
      ],
      "author": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Fri Mar 10 16:19:54 2017 +0000"
      },
      "committer": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Mon Mar 27 13:40:51 2017 +0100"
      },
      "message": "Use Vpn rules (not firewall) for always-on VPN\n\nFirewall rules don\u0027t work on 464xlat because they were created under\nan assumption that there\u0027s only one address for the server and it\u0027s\nipv4, which doesn\u0027t go so well when we\u0027re on an ipv6-only network.\n\nBug: 33159037\nTest: runtest -x net/java/com/android/server/connectivity/VpnTest.java\nChange-Id: Id331526367fe13838874961da194b07bd50d4c97\n"
    },
    {
      "commit": "b8c2a2b85052479cb6affe2d4a8240e78198e2d5",
      "tree": "556283ab73c13014cebb8c6afec531f77687ff8e",
      "parents": [
        "1a69570fe8f2ed2ee541d13716f359b1116105e0"
      ],
      "author": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Fri Mar 10 16:17:06 2017 +0000"
      },
      "committer": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Mon Mar 27 13:40:51 2017 +0100"
      },
      "message": "Move some VPN logic out of ConnectivityService\n\nThis cleanup helps declutter ConnectivityService, and encapsulates the\nalways-on setting inside of Vpn instead of spreading it across two\nclasses.\n\nIn particular having the save code in one file and the load code in\nanother file was weird and I apologise for that.\n\nAdded a SystemServices wrapper for Settings.Secure and PendingIntent\ncalls to decouple some of the global state nastiness and make it\ntestable without forcing ConnectivityService to drive the load/save.\n\nTest: runtest -x tests/net/java/com/android/server/ConnectivityServiceTest.java\nTest: runtest -x tests/net/java/com/android/server/connectivity/VpnTest.java\nBug: 33159037\nChange-Id: Ie2adb1c377adfcef0a5900dc866e6118f451b265\n"
    },
    {
      "commit": "dea2371e71854bb3212481f39a90a0390bfedc7d",
      "tree": "7f723573754a7e89467ddefaf9dd469d03289a05",
      "parents": [
        "cf07e0d541689da7e75100fb51351c09c4c11c78",
        "b2afa1ede523e54f9eeb93c5e47f5b2f6e8291f5"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 14 06:08:34 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Mar 14 06:08:34 2017 +0000"
      },
      "message": "Merge \"Address some comments on IpManagerTest\"\nam: b2afa1ede5\n\nChange-Id: Ic986c23c693757b8311e0de0c0a94281db67f62d\n"
    },
    {
      "commit": "246bc1f79532a4fb82a17b1678152c6e8fc3d80e",
      "tree": "88ff1559c9634f28d3e4a88e2178bafe8ed54de4",
      "parents": [
        "db4333a2c211802eaf2ee87e5d0b76c93acd84f5"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 14 13:00:27 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 14 13:02:49 2017 +0900"
      },
      "message": "Address some comments on IpManagerTest\n\nTest: as follows\n    - built (bullhead)\n    - flashed\n    - booted\n    - runtest frameworks-net passes\nBug: 26991160\nChange-Id: Ib543874188537e31422206d67d1760762a7c85cd\n"
    },
    {
      "commit": "cf07e0d541689da7e75100fb51351c09c4c11c78",
      "tree": "b66383c1b1db8fd60568489dece5428f1751bc38",
      "parents": [
        "921a49f7f8568b9e954fb62007817dbbbdb374be",
        "db4333a2c211802eaf2ee87e5d0b76c93acd84f5"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 14 03:11:15 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Mar 14 03:11:15 2017 +0000"
      },
      "message": "Merge \"Skeleton of an IpManagerTest\"\nam: db4333a2c2\n\nChange-Id: I5817c2458c222afb85389deaf22b43d245577b2a\n"
    },
    {
      "commit": "aa95ae57ecc5bbc461e42ca44bcc9d78537da4fe",
      "tree": "63059ecf505c13208acbd2d08dc262bd50e4d49e",
      "parents": [
        "7eaa2ad1724997d1a435f2a9dda4fcd0591bf37c"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 14 10:01:58 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 14 10:19:52 2017 +0900"
      },
      "message": "Skeleton of an IpManagerTest\n\nTest: as follows\n    - biult (bullhead)\n    - flashed\n    - booted\n    - runtest frameworks-net passes\nBug: 26991160\nChange-Id: Idddddf0c1a7a8d0a8acff8a5526b02a533d5f3ec\n"
    },
    {
      "commit": "260b81aaf2ebd64dff77943ba0870deaf9cfa607",
      "tree": "90eafa3fe5068bec2aa51b48fa8d90ec4aab8bf6",
      "parents": [
        "0501c50040f1ed37391d53825c6bd4e03791b490",
        "33bade08de444d59648bf7b263dca7bf93343607"
      ],
      "author": {
        "name": "Joachim Sauer",
        "email": "jsauer@google.com",
        "time": "Wed Mar 08 17:40:13 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Mar 08 17:40:13 2017 +0000"
      },
      "message": "Merge \"Renaming Czech Republic to Czechia.\"\nam: 33bade08de\n\nChange-Id: Ie76ebb1bd53eb4993f0d01c7d3b5ba7dae9c6504\n"
    },
    {
      "commit": "33bade08de444d59648bf7b263dca7bf93343607",
      "tree": "3e6147ee15e728be00a3c5a04f43f046e1d0ed08",
      "parents": [
        "769fa0c8811a1471c6d0dc795e40297b9cbe07cd",
        "45ded8f6ba72e3d68fb71a8febafbcee63877017"
      ],
      "author": {
        "name": "Joachim Sauer",
        "email": "jsauer@google.com",
        "time": "Wed Mar 08 17:31:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 08 17:31:27 2017 +0000"
      },
      "message": "Merge \"Renaming Czech Republic to Czechia.\""
    },
    {
      "commit": "b29311bbba54f6bb1de42d7c7914fdd104ca225b",
      "tree": "1a596261ca039613591049fd32fafc67432f7b3c",
      "parents": [
        "12358b4057e9c92003507462fe1d61c33cbe371a",
        "0a11c83016823529c465439f3e25f199dc5cd873"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Mar 08 14:59:26 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Mar 08 14:59:26 2017 +0000"
      },
      "message": "Merge \"Replace usages of littlemock with mockito\"\nam: 0a11c83016\n\nChange-Id: I1456ae3d07d396080a817de01796eefc71230981\n"
    },
    {
      "commit": "9df5d4f715f2ba5670753b78a236ff98eff34cfb",
      "tree": "c96272fef635d0a84b88ee331bd6af0b04fc3b5d",
      "parents": [
        "75dfc5bd910ab5904b0364eacce5ece83ea2c828"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Mar 06 14:56:06 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Mar 07 13:55:52 2017 +0000"
      },
      "message": "Replace usages of littlemock with mockito\n\nLittlemock appears to have been created as an alternative to\nMockito that would work on Android. Given that Mockito does\nnow work on Android and Littlemock has had no activity since\nAug 2012 it seems prudent to switch over to use Mockito instead.\n\nhttps://code.google.com/archive/p/littlemock/\n\nThis is being done as part of the work to upgrade Mockito.\n\nBug: 32912773\nTest: Build and install affected APKs, test using am instrument\nChange-Id: Id0e57880ea66c5681b664bbfb534c96410544665\n"
    },
    {
      "commit": "0f901af9205908a265e774c2a427d8d03373c9f3",
      "tree": "0dcc49e8bce219930c43ae24e4fa02eddfec74bf",
      "parents": [
        "4cf8f7a8cd349821688c7c84339d35448c5bcd67",
        "75dfc5bd910ab5904b0364eacce5ece83ea2c828"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 07 13:33:29 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Mar 07 13:33:29 2017 +0000"
      },
      "message": "Merge \"request{LinkProperties,NetworkCapabilities} no longer needed\"\nam: 75dfc5bd91\n\nChange-Id: I79b9323be242ed5d2bf83962f78c613a465a20b8\n"
    },
    {
      "commit": "465c46d555c867caf40333db197ef97cff75a754",
      "tree": "bc9312faac3b960998e1f797c4e35671ce00d7f2",
      "parents": [
        "ae758b2c7f7fc5e417757d60da1fbe7f38d1316c"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 07 15:25:32 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 07 17:18:06 2017 +0900"
      },
      "message": "request{LinkProperties,NetworkCapabilities} no longer needed\n\nTest: as follows\n    - built (bullhead)\n    - flashed\n    - booted\n    - runtest frameworks-net passes\n    - manual USB tethering toggling between WiFi and mobile\nBug: 32163131\nChange-Id: I57edf5114b6361f320577c7870e40f8b3cdf74ce\n"
    },
    {
      "commit": "e0a62a4398f7048026548b5f200424d678806fcc",
      "tree": "e2807d5f4b018833b539bf1ba8a587b7c7ab31a3",
      "parents": [
        "dd4bc7c69c57b5e59c262b7d947c30f55048fef0",
        "affbb8b6a9de8fb0839e04786827fad3dc17101f"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 07 06:00:09 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Mar 07 06:00:09 2017 +0000"
      },
      "message": "Merge \"Always send all available state when calling onAvailable().\"\nam: affbb8b6a9\n\nChange-Id: I81e70fecf060a4103b51084a60a32c78f6219f6b\n"
    },
    {
      "commit": "c75d4fad229899e88f6512636eee9141be4b0951",
      "tree": "d726fb0df9d7836b5a67f8d6c4e51b97f9110ffe",
      "parents": [
        "9324d6513bdc333cc2a05a8f33ba120a322fd566"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Feb 15 19:59:17 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 07 12:57:26 2017 +0900"
      },
      "message": "Always send all available state when calling onAvailable().\n\nThe state that needs to be transferred includes:\n    - NetworkCapabilities\n    - LinkProperties\n    - whether the network is currently suspended\n\nAdditionally:\n    - Rename notifyNetworkCallback() to notifyNetworkAvailable()\n      in order to clarify its real function.\n    - fix previous copy/paste error in unittest\n\nTest: as follows\n    - built (bullhead)\n    - flashed\n    - booted\n    - runtest frameworks-net passes\n    - USB tethering with mobile and Wi-Fi upstream toggling\nBug: 32163131\nChange-Id: Ib4460bcd5d08863a9feac9e8ab41a238897bb3ea\n"
    },
    {
      "commit": "4cf199383fdd9479aec3b24c37a6b1c88ec58c5d",
      "tree": "cb3a36ffc30cff1a36515e5c8a62a4f7ee61160c",
      "parents": [
        "071dcc02b4dbd58ba043d740b1f053b1c669b112",
        "704520c39290252e2589674afe195affa5c53d94"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Mar 06 12:30:05 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Mar 06 12:30:05 2017 +0000"
      },
      "message": "Merge \"Revert \"ConnectivityManager: no double NetworkCallback registration\" because oit caused regressions http://b/35955593, http://b/35921499.\"\nam: 704520c392\n\nChange-Id: Ia0ae78f8406b81377491407cf5ef8ca339952def\n"
    },
    {
      "commit": "649e32484e8f29850039565fb4b5be54ef02ed6f",
      "tree": "fb92cfbb220fadbb17e49966d9c915e2c1e177e1",
      "parents": [
        "faa70976b490116323107166f90fdd944c5bdc77"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Mar 06 06:16:51 2017 +0000"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Mar 06 06:16:51 2017 +0000"
      },
      "message": "Revert \"ConnectivityManager: no double NetworkCallback registration\" because oit caused regressions http://b/35955593, http://b/35921499.\n\nThis reverts commit faa70976b490116323107166f90fdd944c5bdc77.\n\nChange-Id: I86c07c113f24753be7c977e6d7f570b99391e1b5\n"
    },
    {
      "commit": "5983a772cbe08441e4eb1337fb3afa7267e9dfa5",
      "tree": "85550e2b2ca0ca6f54ebf6f1143c20263fec05e4",
      "parents": [
        "01cfdb4f3ae025bde7d30b2a1b48ab873187a2d4",
        "06a192fa4929ab46c1cc20ea601cb33bb1deb6ba"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu Mar 02 08:04:03 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Mar 02 08:04:03 2017 +0000"
      },
      "message": "Merge \"ConnectivityManager: no double NetworkCallback registration\"\nam: 06a192fa49\n\nChange-Id: I250fa7d3c5e37a66caa41cc898a44bcb18c9a0c4\n"
    }
  ],
  "next": "faa70976b490116323107166f90fdd944c5bdc77"
}
