)]}'
{
  "log": [
    {
      "commit": "913554a06818f44dc5fd0fb77673f8fd0e2d32d2",
      "tree": "c0a036a08e73e12d6032971679702ba1b6da9d0a",
      "parents": [
        "8637cbeac59ea76e3009760d7bf24eaa61d64b13",
        "943187668c44db813e0b812468f124352dc0982d"
      ],
      "author": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Thu Mar 30 17:39:56 2017 +0100"
      },
      "committer": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Thu Mar 30 17:39:56 2017 +0100"
      },
      "message": "resolve merge conflicts of 943187668c44 to oc-dev-plus-aosp\n\nTest: make -j30\nTest: runtest -x tests/net/java/com/android/server/ConnectivityServiceTest.java\nTest: runtest -x tests/net/java/com/android/server/connectivity/VpnTest.java\nChange-Id: Ib87cdb96626cd7625e15bec5e4afab12920405e9\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": "9570e7dae77d05c9a7de1a439e4a32b1e330f958",
      "tree": "64dd5960a862aa1078a4353819ccffd6ecb88cca",
      "parents": [
        "f22c3cd18a859f6f4a16b6ef08675afccdcbc850",
        "6c3cd444951744980b91855e0303d7b04afb038a"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Mar 28 23:49:11 2017 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Mar 28 23:49:11 2017 +0900"
      },
      "message": "resolve merge conflicts of 6c3cd4449517 to oc-dev-plus-aosp\n\nTest: make -j64 framework services FrameworksNetTests\nChange-Id: Ib828e56b271cd983ef325e366418ca8db9774628\n"
    },
    {
      "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": "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": "ff51916f839fc80fab34411c3fa405102ce99608",
      "tree": "b4b8b418a3d799e221c5d92986062498b2582177",
      "parents": [
        "ee7a7e029e2e3f2d87ed99b4ff217d85e1c5078e",
        "f8b804be5aeb5d0a36ff88649d7c5ecdc47c3ad1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 23 06:25:33 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 23 06:25:38 2017 +0000"
      },
      "message": "Merge \"Fix NetworkNotificationManagerTest\""
    },
    {
      "commit": "f8b804be5aeb5d0a36ff88649d7c5ecdc47c3ad1",
      "tree": "309e578e0f837368281e3ce8ec5e4ac503af9492",
      "parents": [
        "b096e588116bea15b1e0ad889cd69bbc78c4cb0f"
      ],
      "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 Mar 23 12:32:27 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\nTest: runtest -x frameworks/base/tests/net/java/com/android/server/connectivity/NetworkNotificationManagerTest.java\nChange-Id: I4837b1175d7c9133e9156e33acaa1e7e3341cc62\n"
    },
    {
      "commit": "874a0916fce30da2630ffcfbb4942a3a4d23fec2",
      "tree": "3ef8ccf69bdd13cf328ee9b0b41d446a15e3154b",
      "parents": [
        "b6cee106ed999f631d51e8b291a13799117cd774",
        "7f2afd2dffb232e9ace7e2b50ec0b3dc84a81f08"
      ],
      "author": {
        "name": "Dan Shi",
        "email": "dshi@google.com",
        "time": "Wed Mar 22 17:55:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 22 17:55:58 2017 +0000"
      },
      "message": "Merge \"Add test configs to apct tests under frameworks/base\""
    },
    {
      "commit": "7f2afd2dffb232e9ace7e2b50ec0b3dc84a81f08",
      "tree": "c9c5884a5619b0d85663ee2c62d37f70020f5108",
      "parents": [
        "9d755c046af15a126abd6020f46c82241d1263f8"
      ],
      "author": {
        "name": "Dan Shi",
        "email": "dshi@google.com",
        "time": "Fri Mar 17 10:21:28 2017 -0700"
      },
      "committer": {
        "name": "Dan Shi",
        "email": "dshi@google.com",
        "time": "Tue Mar 21 00:05:14 2017 -0700"
      },
      "message": "Add test configs to apct tests under frameworks/base\n\nTouchLatency is needed by test TouchLatencyJankTestWear\nUiBench is needed by test UiBenchJankTests\n\nDetails about test configs changes are tracked in doc\nhttps://docs.google.com/document/d/1EWUjJ7fjy8ge_Nk0YQbFdRp8DSHo3z6GU0R8jLgrAcw/edit#\n\nBug: 35882476\nTest: local test\nmake -j32 TouchLatency TouchLatencyJankTestWear  \u0026\u0026 \\\ntradefed.sh run template/local --template:map test\u003dTouchLatencyJankTestWear \\\n      --test-tag testname --log-level-display VERBOSE\nmake -j32 UiBenchJankTests UiBench  \u0026\u0026 \\\ntradefed.sh run template/local --template:map test\u003dUiBenchJankTests \\\n      --test-tag testname --log-level-display VERBOSE\n\nChange-Id: I63f23e3a21ad1343607953958fb7bb0a5fb8c343\n"
    },
    {
      "commit": "f927f0c52e7df5b057e7d28888c3cfed164d241a",
      "tree": "e9d6a7e17fedb64ca5175c164fbe9e18121d1de5",
      "parents": [
        "948a85948dcccea4aaa9d70a74405308581b0925"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Mar 17 15:42:40 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue Mar 21 11:43:18 2017 +0900"
      },
      "message": "Connectivity metrics: add transports to validation probes\n\nThis patch adds transports info to ValidationProbeEvent and migrates\nnetId logging for this event to the topt-level netId field in\nConnectivityMetricsEvent.\n\nTest: modified unit tests. $ runtest frameworks-net passes\nBug: 3490169\nChange-Id: Ibf51049ba8901ae5ca4ea86e2f500944a4738b5c\n"
    },
    {
      "commit": "948a85948dcccea4aaa9d70a74405308581b0925",
      "tree": "d72bc48ef47f75ddffd3201a038a7f1185460887",
      "parents": [
        "73fd4d1fafd0208e843abb6a6ad8a46a6fb18143"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu Mar 16 16:33:47 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue Mar 21 10:18:56 2017 +0900"
      },
      "message": "Connectivity metrics: change how interface names are logged\n\nThis patch deprecates the ifname field for specific metrics events of\ntypes DhcpClientEvent, DhcpErrorEvent, IpReachabilityEvent and\nIpManagerEvent.\n\nInstead ifnames are logged in ConnectivityMetricsEvent, allowing for\nlink layer inference.\n\nTest: updated unit tests, $ runtest frameworks-net passes\nBug: 34901696\nChange-Id: I8bfabcb115bbd5289471d653c153a40bb48f28cd\n"
    },
    {
      "commit": "73fd4d1fafd0208e843abb6a6ad8a46a6fb18143",
      "tree": "f8c858801a6b8c20b39523c73ac79d9b1677ab39",
      "parents": [
        "b096e588116bea15b1e0ad889cd69bbc78c4cb0f"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed Mar 15 23:05:01 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue Mar 21 10:18:11 2017 +0900"
      },
      "message": "Connectivity metrics: serialize networkId, transports, ifname\n\nThis patch adds translation from ConnectivityMetricsEvent to\nIpConnectivityEvent of recently added fields:\n - top-level network id\n - top-level ifname\n - transports\n\nAlso adds inference of link layer from transports or ifname.\n\nAt the moment these new fields are not populated in\nConnectivityMetricsEvent. Follow-up patches will fill this gap for\nthe events of the android.net.metrics package.\n\nTest: new unit tests, $ runtest frameworks-net passes\nBug: 34901696\nChange-Id: I563a6a3183470bdfaabb7c781a1beaf6b1058bf0\n"
    },
    {
      "commit": "587b60282e4d9f9cb4bd02df0bb13e69d098b0db",
      "tree": "3dbe6c4e8fa67bb6da85e3f0a60a960fb38894f3",
      "parents": [
        "b30ee8d02502dd38e4b33a7b1accedffd0f3a5d8",
        "473a16e492f0e0b0f726d4351214783458466d2c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 16 17:35:07 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 16 17:35:12 2017 +0000"
      },
      "message": "Merge \"frameworks/base: Add APCT tests to the device-tests suite.\""
    },
    {
      "commit": "44d5d0c2fb4159cdaaf0561af047f4709158c107",
      "tree": "ba59fd0c436b14b5f45d8959209f8a96c0bfd261",
      "parents": [
        "46cda5971ebdcb490a31a2d9e18464cbfef5b9f3",
        "946b7e424e0e4d5bffc65ef405f32b966d192d3c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 16 02:50:18 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 16 02:50:23 2017 +0000"
      },
      "message": "Merge \"ConnectivityMetricsEvent: add ifname, netid, transports\""
    },
    {
      "commit": "946b7e424e0e4d5bffc65ef405f32b966d192d3c",
      "tree": "b43e8100a7d26e8f1552ccd98858ff70f612f69b",
      "parents": [
        "ec27c4d9f33615be1f94d6bb5c5fd1358580ac05"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed Mar 15 16:35:26 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu Mar 16 09:58:02 2017 +0900"
      },
      "message": "ConnectivityMetricsEvent: add ifname, netid, transports\n\nThis patch adds new fields to ConnectivityMetricsEvent to make it more\nsymmetric to IpConnectivityEvent in ipconnectivity.proto.\n\nFollow-up patches will start populating these fields for users of\nIpConnectivityLog.\n\nTest: unit tests updated, $ runtest frameworks-net passes\nBug: 34901696\nChange-Id: I396767cdfcf38cce893c0d6e1f4524f12e3fdc64\n"
    },
    {
      "commit": "97035b4abff91aec8f608de3de7dfc59f9381414",
      "tree": "2dbe5cb72406518eac8d05891f0f968fb5ec1833",
      "parents": [
        "98d1dba2abfc1a257a82e40962900506602648fb",
        "ec27c4d9f33615be1f94d6bb5c5fd1358580ac05"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu Mar 16 00:37:43 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 16 00:37:47 2017 +0000"
      },
      "message": "Merge \"Connectivity metrics: simplify ConnectivityMetricsEvent\""
    },
    {
      "commit": "473a16e492f0e0b0f726d4351214783458466d2c",
      "tree": "b0b5a4f903cde7685aa25da4cad10ff23beb3d31",
      "parents": [
        "123a34f1936983f1b59da9b5609485e1f64347ff"
      ],
      "author": {
        "name": "Simran Basi",
        "email": "sbasi@google.com",
        "time": "Wed Mar 15 14:43:58 2017 -0700"
      },
      "committer": {
        "name": "Simran Basi",
        "email": "sbasi@google.com",
        "time": "Wed Mar 15 14:46:27 2017 -0700"
      },
      "message": "frameworks/base: Add APCT tests to the device-tests suite.\n\nThis CL adds the APCT tests within this project to\na similar suite as CTS known as device-tests.\n\nThe current method of running APCT tests in the infrastructure\nis unaffected.\n\nBug: 35882476\nTest: `make dist device-tests -j` and local builds of\n      continuous_instrumentation_tests \u0026 continuous_native_tests\n\nChange-Id: Ifa382fe691842c1cd76897775b9e2a1653449eb5\n"
    },
    {
      "commit": "ec27c4d9f33615be1f94d6bb5c5fd1358580ac05",
      "tree": "566beb3d5bc0e72d17c299f8393ac0806256ec31",
      "parents": [
        "dc159ee593762513c737453c5650e92115e573c6"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed Mar 15 15:07:42 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed Mar 15 15:12:38 2017 +0900"
      },
      "message": "Connectivity metrics: simplify ConnectivityMetricsEvent\n\nNow that ConnectivityMetricsEvent is only used for core networking\nmetrics and is not @SystemApi anymore, remove unused fields and prepare\nfor additional new fields.\n\nTest: updated unit tests, $ runtest frameworks-net passes\nBug: 34901696\nChange-Id: I15abad19981d491f16f2a3afe401f1e833079907\n"
    },
    {
      "commit": "1809db5cb11a07522092e445525330f2b8e8b83e",
      "tree": "2c1a3669e7092c826c86b654a4fe1b771e5d750b",
      "parents": [
        "9f5e699093ef6a3df78c661bc1dc8b881ea2b3f5",
        "22d9b2d430c9a4fe17b54811bb77289b821e32db"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 15 04:24:25 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 15 04:24:30 2017 +0000"
      },
      "message": "Merge \"IP connectivity metrics: add new APF counters.\""
    },
    {
      "commit": "22d9b2d430c9a4fe17b54811bb77289b821e32db",
      "tree": "5e6281c86ea5e83c5baa0ed24f51aef4bdefa202",
      "parents": [
        "dc159ee593762513c737453c5650e92115e573c6"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed Feb 22 13:02:27 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed Mar 15 11:49:48 2017 +0900"
      },
      "message": "IP connectivity metrics: add new APF counters.\n\nThis patch adds a few missing counters to APF events:\n - an actual lifetime duration to ApfProgramEvent.\n - counters for total number of updates to ApfStatistics.\n\nApfProgramEvents are now recorded at program removal in order to\npopulate the actual lifetime of the program. ApfProgramEvents whose\nactual lifetime was less than 1 second are filtered out.\n\nFinally, instance fields of ApfProgramEvent and ApfStats classes are\nmade mutable to allow for simple record-like creation. This was not\npossible when these classes were tagged @SystemApi.\n\nTest: - manually verified output of $ dumpsys connmetrics list\n      - unit tests updated.\nBug: 34901696\n\nChange-Id: I02694ebb9421ce1c2aa757fa6aa209d19a654dcd\n"
    },
    {
      "commit": "0df5ea973d4d7971a58d708342d8c2018d099d89",
      "tree": "d76197caffc0abe422c92255de2f30ea8b500c29",
      "parents": [
        "4c4936f42572dc39519c5f31c778ae05ee1a2354",
        "eb04c5206377f87531f6571963297f5c3701e985"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 14 06:17:39 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Mar 14 06:17:39 2017 +0000"
      },
      "message": "Merge \"Address some comments on IpManagerTest\" am: b2afa1ede5 am: dea2371e71\nam: eb04c52063\n\nChange-Id: I8716a2f49c6adec97b260c32d65d53414068e41d\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": "a93f236c73007944b4c26b7c1b7365499881cfbd",
      "tree": "329ae99d05370cfc7fd5c5ff3014ffd51937d4ce",
      "parents": [
        "32d08a1440199a1157f899e03a52a743bb432738",
        "4e8ae3eddc84bc12a126aa0fc6d75a930dbc940f"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 14 03:25:04 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Mar 14 03:25:04 2017 +0000"
      },
      "message": "Merge \"Skeleton of an IpManagerTest\" am: db4333a2c2 am: cf07e0d541\nam: 4e8ae3eddc\n\nChange-Id: I25dd93146efe7ce1cd9cb81da19dcb44afc96bd3\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": "a2decca4f25b6d3adfd396cdc475807985783bab",
      "tree": "420af54b28098a7979c83f085a3813874306d7a0",
      "parents": [
        "dc159ee593762513c737453c5650e92115e573c6"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed Feb 22 14:32:27 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Mar 13 09:25:15 2017 +0900"
      },
      "message": "IP connectivity metrics: ConnectStats additions\n\nThis patch:\n  - adds a counter to ConnectStats for counting the number of successful\n    connect() calls done in blocking mode. This allows to compute error\n    rates for connect() in blocking mode.\n  - add printing of ConnectStats when dumping NetdEventListenerService\n    and/or IpConnectivityMetrics service.\n\nTest: $ runtest frameworks-net, + manual tests verifying logged events.\nBug: 34901696\nChange-Id: I889e8ccd12681b0511be487e9d2ee44290a2d7d7\n"
    },
    {
      "commit": "f684050e8f52c773f59a1bedca6efb56647e858c",
      "tree": "67a9a4b207de2b21f31eedb6029d5ce93d806a73",
      "parents": [
        "18f805e73d944fade201f94b7c324fb71bb2bd16"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed Mar 08 11:59:36 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu Mar 09 15:19:02 2017 +0900"
      },
      "message": "IP connectivity metrics: update ipconnectivity.proto\n\nThis patch adds several new fields to ipconnectivity.proto for\nimproving APF metrics, connect metrics, and link_layer inference.\n\nTest: build, flashed, ran $ adb shell dumpsys connmetrics list proto\n      updated metrics unit tests depending on proto schema\nBug: 34901696\nChange-Id: I6f68e16f583a6b407f33f8a500133e100f3453c7\n"
    },
    {
      "commit": "a6a31fd3eb2596fac760e892c6c8106c83870756",
      "tree": "d2452a6749a60262c8edde4a8234a3f7f4ac5825",
      "parents": [
        "9d64b054d221b417bec6f53bdfbce2c15c040bab",
        "22291f84e007ea71b2f1c9fded04e6b84d84f110"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 08 03:11:10 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 08 03:11:15 2017 +0000"
      },
      "message": "Merge \"Fix ApfTest\""
    },
    {
      "commit": "22291f84e007ea71b2f1c9fded04e6b84d84f110",
      "tree": "ab9db5eee32398129f53519c7d38b26d57f951eb",
      "parents": [
        "8cfea13985fe7e729274f6d2763b0de9bd02aae6"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed Mar 08 10:10:28 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed Mar 08 10:33:57 2017 +0900"
      },
      "message": "Fix ApfTest\n\nBy adding missing native libraries to frameworks-net make file. The list\nof missing libraries was found by adding libhidlbase and then resolving\nnew linkage errors iteratively until ApfTest worked.\n\nThis is a temporary fix. Ideally only adding libhidlbase should be\nenough.\n\nTest: $ runtest -x frameworks/base/tests/net/java/android/net/apf/ApfTest.java\nBug: 36012053\nChange-Id: I0eff8b3adbf788ddbfc6ddbf9f74b8da01cdfce4\n"
    },
    {
      "commit": "a33ae2d884bcaa0474c84909d641d23a722a0c7b",
      "tree": "ef76987a2787f2891dfc5a555e1a5d784fe152c4",
      "parents": [
        "0f502cb1b6af28234e918aea8078961abf4198ff",
        "bb54baba0426819d6539aa47c48312440db4fb7e"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 07 13:42:11 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Mar 07 13:42:11 2017 +0000"
      },
      "message": "Merge \"request{LinkProperties,NetworkCapabilities} no longer needed\" am: 75dfc5bd91 am: 0f901af920\nam: bb54baba04\n\nChange-Id: Id2aa8aeff6d299edb85955c12ab0a04023458597\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": "6bbefcbf40afb3173c6dc5a47cd7638ac24ae9a7",
      "tree": "89af95fe104dd86cefe4c5d10a66f03105eb9382",
      "parents": [
        "7cae77b606f72ffc29f642f8f419280698779d55",
        "3765538bab1b8cec9dea4147aca0b99928001ab2"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 07 06:08:40 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Mar 07 06:08:40 2017 +0000"
      },
      "message": "Merge \"Always send all available state when calling onAvailable().\" am: affbb8b6a9 am: e0a62a4398\nam: 3765538bab\n\nChange-Id: Ic82e3cb92841ea99972faad6ae004d77c725831b\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": "45deba76fc6b530c0e0d3afe9762caf7deb504c1",
      "tree": "339397180a3ee7ab2078cdee3a27866420eb75f7",
      "parents": [
        "e1be1dfbc3a7889e4c9d4ae13b4c3dfe43baa6ca",
        "22d4258a75598fad6a39c7380f41cad3052d6fa1"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Mar 06 12:45:10 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Mar 06 12:45:10 2017 +0000"
      },
      "message": "Merge \"Revert \"ConnectivityManager: no double NetworkCallback registration\" because oit caused regressions http://b/35955593, http://b/35921499.\" am: 704520c392 am: 4cf199383f\nam: 22d4258a75\n\nChange-Id: I8e66e223003a38735b707d21d7bedb19170b1937\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": "00a5f2a65882f5b2814c9449e0ab75b6f2656315",
      "tree": "1cc3c7b099e507aa5d2eeb57129510936902e6aa",
      "parents": [
        "a624099635c8d375f1df9f82888c6e4774fc6a94",
        "974e83cc0b8947e645770acdc4ae356bf06b713a"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu Mar 02 08:12:09 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Mar 02 08:12:09 2017 +0000"
      },
      "message": "Merge \"ConnectivityManager: no double NetworkCallback registration\" am: 06a192fa49 am: 5983a772cb\nam: 974e83cc0b\n\nChange-Id: I73569fd084c14a78067e09565418f296994cd424\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"
    },
    {
      "commit": "faa70976b490116323107166f90fdd944c5bdc77",
      "tree": "2132a6cd1009209d4d04cbad213ceea9b672f0db",
      "parents": [
        "2142b14a882c62f442f3442e848c5fb0f85a121f"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Feb 03 15:55:42 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu Mar 02 15:19:37 2017 +0900"
      },
      "message": "ConnectivityManager: no double NetworkCallback registration\n\nTest: new test in ConnectivityManagerTest\nBug: 20701525\nChange-Id: I205333d31d43e6e6c7fe704ce63b458065f345ce\n"
    },
    {
      "commit": "df71c583413329886cff98a9ef6eca80be27dd8d",
      "tree": "6f001a45a15ade67d4fc44c06eef3522a10c681b",
      "parents": [
        "5f9ba4e68e46a0753ccd167aee639d632bdacf74",
        "02310829cf7bd7e5bef49a0583f504b108e6c1f3"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Mar 01 11:13:14 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Mar 01 11:13:14 2017 +0000"
      },
      "message": "Merge \"Also test for additional NetworkCallback calls\" am: dff6c5c30d am: 47d8385184\nam: 02310829cf\n\nChange-Id: I0264a471312423e896a1c2f479c0eeda737a1567\n"
    },
    {
      "commit": "47d8385184761631bbd566c3467597538eddd83c",
      "tree": "1c851a537015615f9156254f69749fa64d02ef06",
      "parents": [
        "43fd84a03c38548f8f1c14627f88132e3737edec",
        "dff6c5c30db313fbe4a1b60eea0f5f97ca9c2462"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Mar 01 11:03:08 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Mar 01 11:03:08 2017 +0000"
      },
      "message": "Merge \"Also test for additional NetworkCallback calls\"\nam: dff6c5c30d\n\nChange-Id: I00b3f7be06bde167872d0cdefe940cda5e138846\n"
    },
    {
      "commit": "1d3db327088fc9a17b13892d8e86b6c8e650a8c1",
      "tree": "fa011bcc333dbdedfb231daf2b9c2e46c5456346",
      "parents": [
        "3e64003641c376573f4809aae79febd0187be81e"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Feb 28 16:20:20 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Mar 01 18:24:36 2017 +0900"
      },
      "message": "Also test for additional NetworkCallback calls\n\nSpecifcally:\n    - onCapabilitiesChanged\n    - onLinkPropertiesChanged\n    - onNetworkSuspended\n\nTest: as follows\n    - built (bullhead)\n    - flashed\n    - booted\n    - runtest frameworks-net passes\nBug: 32163131\n\nChange-Id: Ie0f7c8ac21313b11980bb335c89ecde6fd8e311c\n"
    },
    {
      "commit": "e20e7ebbfb39a52e95c72c6abbf1409a2a9abc44",
      "tree": "1c89531f8c414eb39be51816fee62be3c17da916",
      "parents": [
        "a2ba2a3923f4b247ad516c28a7f3449f9abfd21c",
        "c239511cdbb472e33568e8b635bc968f2a7c6c72"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Feb 24 08:24:51 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 24 08:24:51 2017 +0000"
      },
      "message": "Merge \"Update UpstreamNetworkMonitor to use custom Handlers\" am: 35c89886c2 am: 279a4feb72\nam: c239511cdb\n\nChange-Id: I9a210b4896810e7365b2403495716395b3866650\n"
    },
    {
      "commit": "279a4feb7294bc231e1bfbc662c984c49dbff80e",
      "tree": "7d3dbdd19dbd8f7d914fd3efd946e40864732e8c",
      "parents": [
        "76535e88885881d32016709dbae53e96df238291",
        "35c89886c28eda0d6162c0f8eed217bf0cfa8ed8"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Feb 24 08:15:19 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 24 08:15:19 2017 +0000"
      },
      "message": "Merge \"Update UpstreamNetworkMonitor to use custom Handlers\"\nam: 35c89886c2\n\nChange-Id: I76433822a9b7c124e4b7cfcf2a20cb0e43a60199\n"
    },
    {
      "commit": "b583b03675492280ab87f1eff30c05709cafba23",
      "tree": "a2414a092f2678c379272e624cb20c048564d260",
      "parents": [
        "0743d56e2b291767a33dc0db5a84bd16104ab082"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Feb 22 12:58:24 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Feb 24 13:06:51 2017 +0900"
      },
      "message": "Update UpstreamNetworkMonitor to use custom Handlers\n\nTest: as follows\n    - built (bullhead)\n    - flashed\n    - booted\n    - runtest frameworks-net passes\nBug: 32130437\nBug: 32163131\n\nChange-Id: I2bc3f87cdf7fa6392b4750eb8adb4ea33c6a3f43\n"
    },
    {
      "commit": "95cb226c1a4ff47531da65ef2617ade0dea5c9b8",
      "tree": "b4892fc2349e674751a929be9b9459b2f2926ff3",
      "parents": [
        "56ff7d9e7384fbf09a73ee61120539b2aa0e1983"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed Jan 11 10:11:26 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed Feb 22 12:56:38 2017 +0900"
      },
      "message": "IP connectivity metrics: cleanup obsolete code\n\nThis patch cleans obsolete code related to IP connectivity metrics:\n - remove @SystemApi on android.net.metrics: now that metrics events\n   are processed and serialized in the frameworks only, event classes\n   should not appear in the system apis.\n - remove obsolete Logger classes: ConnectivityMetrics app was the\n   unique user of ConnectivityMetricsLogger until nyc-mr1. From nyc-mr1\n   the app started using dumpsys to get metrics for IpConnectivity and\n   Telephony, which made ConnectivityMetricsLogger obsolete.\n - simplifications in MetricsTestUtil\n\nTest: - runtest frameworks-net\n      - manually verified $ adb shell dumpsys connmetrics\nBug: 30054585\nBug: 32648597\nChange-Id: I85ef65f7f69eb9299e4636cc7af54067201d9daf\n"
    },
    {
      "commit": "01432b306de44975c898b7c48ae1e6a3981b3c19",
      "tree": "2c5731443d332884768ab11aed8042399f216669",
      "parents": [
        "75ad8a5b21e21a8750e7535bc6eae5dd22fdb1cd",
        "9355bce0c323632b88620ede174bf023b7381c81"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Feb 17 10:14:15 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Feb 17 10:47:58 2017 +0900"
      },
      "message": "resolve merge conflicts of 9355bce0c323 to master\n\nTest: none\nChange-Id: Iac65e01d07edf79ec97e7d996f8cfee6f811606b\n"
    },
    {
      "commit": "9355bce0c323632b88620ede174bf023b7381c81",
      "tree": "4c8183db8a19c05388d66a4ca4e14e03e5b52d53",
      "parents": [
        "de021d8162f9c69ce8042da21ce1095a326ef02a",
        "9c2b6afa2fe1429fc5e839ed6349dfffe94057a2"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Feb 17 00:18:35 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 17 00:18:35 2017 +0000"
      },
      "message": "Merge \"IP connectivity metrics: delete obsolete logger service\" am: 37e3f22c2e am: c54962a4bd\nam: 9c2b6afa2f\n\nChange-Id: I5f8cd508812d9532778c2f1f019308a4b8d8ee33\n"
    },
    {
      "commit": "c54962a4bdfed6f5e9f47ae74adffa4b5faa6c77",
      "tree": "4a612461162b46fbb15e747d3dc61f7964506915",
      "parents": [
        "db0803b4e815f3e4e180c0502912dbbca42e1710",
        "37e3f22c2eae225d360f37cca5e6070faf5dc040"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Feb 17 00:00:14 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 17 00:00:14 2017 +0000"
      },
      "message": "Merge \"IP connectivity metrics: delete obsolete logger service\"\nam: 37e3f22c2e\n\nChange-Id: Ib335bc5e19c2c703d23267bf2835fc89fcf5a957\n"
    },
    {
      "commit": "37e3f22c2eae225d360f37cca5e6070faf5dc040",
      "tree": "8af9eedb0d7c3e56e977c61f30bceb1cf75b0ce5",
      "parents": [
        "05dfd10254741b0a7f66504addf8a0f1d356fd4c",
        "d22edc28f5c8417f591a913c0a97e718ae988a6f"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu Feb 16 23:52:12 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 16 23:52:13 2017 +0000"
      },
      "message": "Merge \"IP connectivity metrics: delete obsolete logger service\""
    },
    {
      "commit": "d22edc28f5c8417f591a913c0a97e718ae988a6f",
      "tree": "4cba4b7bc425e77a13338635c0bfe50abadfdd5a",
      "parents": [
        "ed6d75d5f31dd69d2c91cd82cddd5ee1db49b2c7"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Sat Feb 11 02:15:04 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Wed Feb 15 17:12:58 2017 +0900"
      },
      "message": "IP connectivity metrics: delete obsolete logger service\n\nTest: - runtest frameworks-net\n      - manually verified $ adb shell dumpsys connmetrics\nBug: 32648597\n\nChange-Id: I69f7dee5871508398d7f7209658a00c768e2d18e\n"
    },
    {
      "commit": "ea50c00f28aae41c5e45da3460a589366cef5784",
      "tree": "f4b2e37f4408f913afa0b136c1ca9f78f090e18c",
      "parents": [
        "6bf2e10802514cc912233f35de01c0f016122eaf",
        "d850804723992ce5e6e3e484b49fe8dacaf8e19b"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Feb 14 18:19:01 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 14 18:19:01 2017 +0000"
      },
      "message": "Merge \"Verify duplicate upstream notifications are ignored\" am: 3d57eb0bdc am: 02e71f6245 am: 8055dafb08\nam: d850804723\n\nChange-Id: I56a8b708178419d467abac0166f1be6c86b42491\n"
    },
    {
      "commit": "6bf2e10802514cc912233f35de01c0f016122eaf",
      "tree": "a86eb2a7924e990255b277dec251e98a7f8189c3",
      "parents": [
        "f82013b425c98db9289a9de6b5e8db5b9fd963db",
        "ea7e8f73522ca2f34350dcfd3c3e064aa16a8e64"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Feb 14 18:17:43 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 14 18:17:43 2017 +0000"
      },
      "message": "Merge \"Cleanup in the face of upstream error\" am: ed6d75d5f3 am: 76e6f790db am: 663ec79cb2\nam: ea7e8f7352\n\nChange-Id: I5ca36fc3b7153b029174a49593ee769e06758729\n"
    },
    {
      "commit": "d850804723992ce5e6e3e484b49fe8dacaf8e19b",
      "tree": "1b55b74415ace7455a99790f7a2ccefe1b146400",
      "parents": [
        "ea7e8f73522ca2f34350dcfd3c3e064aa16a8e64",
        "8055dafb08c53bc23d4bdf9d43b35e3d89c28c3d"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Feb 14 09:49:56 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 14 09:49:56 2017 +0000"
      },
      "message": "Merge \"Verify duplicate upstream notifications are ignored\" am: 3d57eb0bdc am: 02e71f6245\nam: 8055dafb08\n\nChange-Id: I1e10adfba2ebb9f52e86d8b35f3d0b87134c0e91\n"
    },
    {
      "commit": "02e71f62457c18c301306aff3dbe25c3ad82c556",
      "tree": "ca80d5f68b663e6d9c90d9f9727d7f98596463fb",
      "parents": [
        "76e6f790db5972a38529215fdb55e9f86b06c783",
        "3d57eb0bdc94060a046ea5063628ca69ed548b66"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Feb 14 09:41:53 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 14 09:41:53 2017 +0000"
      },
      "message": "Merge \"Verify duplicate upstream notifications are ignored\"\nam: 3d57eb0bdc\n\nChange-Id: Iff84a1a12714047b20408f03e3bb2252a463b74b\n"
    },
    {
      "commit": "624bf3d7f66e496952c5ae8917dc785676921c99",
      "tree": "c63017f3447819dad1db99e3f663f568a486927b",
      "parents": [
        "ed6d75d5f31dd69d2c91cd82cddd5ee1db49b2c7"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Feb 14 15:55:00 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Feb 14 15:55:57 2017 +0900"
      },
      "message": "Verify duplicate upstream notifications are ignored\n\nTest: as follows\n    - built (bullhead)\n    - flashed\n    - booted\n    - runtest .../tethering/TetherInterfaceStateMachineTest.java passes\nBug: 32163131\n\nChange-Id: I3c097d766fe4c416a8e3f02640809fe1199c6ef2\n"
    },
    {
      "commit": "ea7e8f73522ca2f34350dcfd3c3e064aa16a8e64",
      "tree": "b9e3a227ad9c62522a7020791666835fc4a60778",
      "parents": [
        "fa207eb889c91bb289e1b3341a910bcb7071b8df",
        "663ec79cb2aea77b4ed4eb19584177f5c699fc52"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Feb 14 06:25:47 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 14 06:25:47 2017 +0000"
      },
      "message": "Merge \"Cleanup in the face of upstream error\" am: ed6d75d5f3 am: 76e6f790db\nam: 663ec79cb2\n\nChange-Id: Ib726fe85b816eccbc0beab555873b77f3454bc64\n"
    },
    {
      "commit": "76e6f790db5972a38529215fdb55e9f86b06c783",
      "tree": "0bb470dba7f7c881bd882577a75dced33ee8c365",
      "parents": [
        "18b3a7f586c6e1f2be37792f54ef2d99315121c9",
        "ed6d75d5f31dd69d2c91cd82cddd5ee1db49b2c7"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Feb 14 06:17:38 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 14 06:17:38 2017 +0000"
      },
      "message": "Merge \"Cleanup in the face of upstream error\"\nam: ed6d75d5f3\n\nChange-Id: If8dbf882bd8c4a8d53ae026d8f83a00a52590830\n"
    },
    {
      "commit": "8ea45483fc59ef63851a64640ed1bb18c09f7ea9",
      "tree": "86307cb74e2023e56019eb0f8b9a219633be6e15",
      "parents": [
        "fb19d8d7c142aae0aaa9782db145fee072071fbf"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Feb 13 17:28:53 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Feb 14 12:20:39 2017 +0900"
      },
      "message": "Cleanup in the face of upstream error\n\nIf either enableNat() or startInterfaceForwarding() fail, be sure\nto cleanup any commands that might have succeeded.\n\nMost of this change is a refactoring of cleanupUpstreamIface() into\ntwo methods, one of which (cleanupUpstreamInterface()) is reused\nin error handling scenarios.\n\nTest: as follows\n    - built (bullhead)\n    - flashed\n    - booted\n    - runtest -x .../tethering/TetherInterfaceStateMachineTest.java passes\nBug: 32031803\nBug: 32163131\n\nChange-Id: Ia4d56e03beeab1908d8b8c2202e94992f1aa58a4\n"
    },
    {
      "commit": "349a8aeff997c603852681a3af58d6841c6940c0",
      "tree": "cfe049dfb71651406a28fb3741569df690a8a032",
      "parents": [
        "0bb700914cb84b53a93252e5904826c104b8d65b",
        "60d14c429b830431ff57cda509218797728d96e4"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Feb 13 12:14:13 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Feb 13 12:14:13 2017 +0000"
      },
      "message": "Merge \"Add test coverage for cleanup bug to be fixed.\" am: 89e6bf0532 am: 0cca15ff88 am: 3de5971b40\nam: 60d14c429b\n\nChange-Id: Ia4a084be38e6f4dce14da012afb6760a3cbd32d0\n"
    },
    {
      "commit": "60d14c429b830431ff57cda509218797728d96e4",
      "tree": "1975b995ac7425e1da18a2900506522f7dc8c4f0",
      "parents": [
        "912a5f054cc4f906c941cfd7a276d356b021d32d",
        "3de5971b406888557860c9f17da2bc268edcc7f0"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Feb 13 12:08:11 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Feb 13 12:08:11 2017 +0000"
      },
      "message": "Merge \"Add test coverage for cleanup bug to be fixed.\" am: 89e6bf0532 am: 0cca15ff88\nam: 3de5971b40\n\nChange-Id: I470c481a0eebc9cadf134c73ece08803927f4ca2\n"
    },
    {
      "commit": "0cca15ff88d94a55a703032e2993329f06136c0e",
      "tree": "4bcb385097093a3cc63132105d3df14067f3f056",
      "parents": [
        "549c3fc0da92a7ad4bace45765558695d49625bb",
        "89e6bf0532d6b8288dea51b6af8bb0856dc3642b"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Feb 13 11:57:37 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Feb 13 11:57:37 2017 +0000"
      },
      "message": "Merge \"Add test coverage for cleanup bug to be fixed.\"\nam: 89e6bf0532\n\nChange-Id: I33347c8fc2bec5660b8e9c14a316f6d14a6cf8b1\n"
    },
    {
      "commit": "a954be956315e6d25a63e961fc9befe9916e1cbd",
      "tree": "24dc642ec9f2d43b813ccb735129f975c592b0cf",
      "parents": [
        "e690e0178caa4d352694f1b3bab303e67126fb04"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Feb 13 17:12:02 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Feb 13 17:38:34 2017 +0900"
      },
      "message": "Add test coverage for cleanup bug to be fixed.\n\nThe test calls that need to pass but do not currently are commented out.\n\nTest: as follows\n    - built (bullhead)\n    - flashed\n    - booted\n    - runtest -x .../tethering/TetherInterfaceStateMachineTest.java passes\nBug: 32031803\nBug: 32163131\n\nChange-Id: I68ed476920bef882f353d8e8a54c72120bc27002\n"
    },
    {
      "commit": "e8bc75bfcc4312a5c4e6f4f5879a118b5b98e0d9",
      "tree": "178586eb78049bb9a784ddec0616ce6cb1b54fc1",
      "parents": [
        "b81bc507ff3430b26f1a78d26e44438542ff1006",
        "c700509ade0e0c59333b4f7f90ee209a9380ada3"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Feb 02 20:03:51 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 02 20:03:51 2017 +0000"
      },
      "message": "Merge \"Add ConnectivityManager.networkCapabilitiesForType()\" am: c313123afe am: 6f32aa0259 am: 7196e935a8\nam: c700509ade\n\nChange-Id: I15fe6fe4c9aec3d244b46516c2992ded33337a9f\n"
    },
    {
      "commit": "ee929e69fb502f4bc96782303555e0e5eed1ea7d",
      "tree": "21ca949fa6a0c74fef029b1c20812c9ec06f6fe7",
      "parents": [
        "abf19d1aa4d462c7bd17dfde6558238d5150670d",
        "2ebea210749dc2f035111266b61bcffd94556f9b"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Feb 02 16:52:43 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 02 16:52:43 2017 +0000"
      },
      "message": "Merge \"Add test for repeated calls to registerMobileUpstreamRequest()\" am: 603eefd5d5 am: 180a3d07a8 am: d85f448274\nam: 2ebea21074\n\nChange-Id: I2e0ab82edd8997188c8c16dce6373ccb19657e3d\n"
    },
    {
      "commit": "c700509ade0e0c59333b4f7f90ee209a9380ada3",
      "tree": "31e6013e2ac932a64aaa110b47780e5b97e28274",
      "parents": [
        "814a59ba829642d09b6d1eaf9bcf06ee44bffad4",
        "7196e935a8eb293cf11e54d052866e3ed500c073"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Feb 02 07:32:09 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 02 07:32:09 2017 +0000"
      },
      "message": "Merge \"Add ConnectivityManager.networkCapabilitiesForType()\" am: c313123afe am: 6f32aa0259\nam: 7196e935a8\n\nChange-Id: I2ab05143299f13012dc2a88efca52160e08c6d97\n"
    },
    {
      "commit": "6f32aa0259c5692ea896018ce98065160549557e",
      "tree": "16a26f927f6c33dfda3d8d8d65c9a81bbb3aba7e",
      "parents": [
        "6236f49f0ef8d15ff3fc1d68d2480769ca71ac9f",
        "c313123afe03f9cbc48666e9e3328ff4846a1785"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Feb 02 07:22:05 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 02 07:22:05 2017 +0000"
      },
      "message": "Merge \"Add ConnectivityManager.networkCapabilitiesForType()\"\nam: c313123afe\n\nChange-Id: I0ad50fbf38f11b383fd889dc598cfddd47051477\n"
    },
    {
      "commit": "c313123afe03f9cbc48666e9e3328ff4846a1785",
      "tree": "37c27693239bc2cc1aeab5c6803314f40f8e4a73",
      "parents": [
        "05550d9ed876eeae909190728bf6cc3ffdb88dd9",
        "35bf06c968ecbae502efd9cfb13fff9b7ddf9d6a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 02 07:15:03 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 02 07:15:05 2017 +0000"
      },
      "message": "Merge \"Add ConnectivityManager.networkCapabilitiesForType()\""
    },
    {
      "commit": "2ebea210749dc2f035111266b61bcffd94556f9b",
      "tree": "6174a28b28b6d672c5cd32a4ab065f4dcb4d8175",
      "parents": [
        "a843ab955ced068ff8baded50be0a94f766320c9",
        "d85f448274be6e6ef9e6449371849ad281796686"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Feb 02 05:25:05 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 02 05:25:05 2017 +0000"
      },
      "message": "Merge \"Add test for repeated calls to registerMobileUpstreamRequest()\" am: 603eefd5d5 am: 180a3d07a8\nam: d85f448274\n\nChange-Id: Ia629aa5dbdf10566c28525d9a05b096482db3f2d\n"
    },
    {
      "commit": "180a3d07a8fffa01171e94a7361fee7bda70d9d9",
      "tree": "76ef3216dd1ecbdc033f8e035e4ed12a12bd0e5b",
      "parents": [
        "4ede371d80fcf016c6074c95ef1b8d029a5b7c2a",
        "603eefd5d5c1dbb359a65cf8032ecdd94040cef9"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Feb 02 05:15:23 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 02 05:15:23 2017 +0000"
      },
      "message": "Merge \"Add test for repeated calls to registerMobileUpstreamRequest()\"\nam: 603eefd5d5\n\nChange-Id: I6b2a0d6df70df028ef9b8ff5d689c5a627d8daf8\n"
    },
    {
      "commit": "35bf06c968ecbae502efd9cfb13fff9b7ddf9d6a",
      "tree": "b7ed0126a312db06a3ef901840a4924eee6c605f",
      "parents": [
        "9be24a30404b1ee69140fc22a39e831788fa5947"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Jan 26 18:08:28 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Feb 02 11:07:59 2017 +0900"
      },
      "message": "Add ConnectivityManager.networkCapabilitiesForType()\n\nThis static method returns a NetworkCapabilities instance with\ntransports and capabilities set according to the given legacy type.\n\nAlso:\n    - add NetworkRequest.Builder.setCapabilities(), to be able to use\n      the NetworkCapabilities instances returned from the above\n    - update UpstreamNetworkMonitor to make immediate use of this\n\nTest: as follows\n    - build (bullhead)\n    - flashed\n    - booted\n    - runtest frameworks-net passes\n    - WiFi to DUN upstream tethering works\nBug: 32163131\n\nChange-Id: Idfe1ddd2815c355cbf27cf29eb0e3de177de84e9\n"
    },
    {
      "commit": "7462f467c11536337ea6ab582001551d49f6f06a",
      "tree": "4f9714c1f2165ba744f326c245a9674a82cb1f86",
      "parents": [
        "2ac992fcad6deeee91b46f066cda192a8dded3dc"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Jan 23 19:05:28 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Feb 01 21:30:15 2017 +0900"
      },
      "message": "Add test for repeated calls to registerMobileUpstreamRequest()\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest framework-net passes\nBug: 32163131\n\nChange-Id: I6d2519601b7a9dcfda2917118214a7ceb9dbbb7f\n"
    },
    {
      "commit": "2de4925f5cc64aeb92e02a8f740d3ff20f36dddd",
      "tree": "3f82ac7ea30d168cae0c18024280b5bae03c6ba3",
      "parents": [
        "741ec3ed1d9ded60acf869604d8d6108300e96b0"
      ],
      "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": "Wed Feb 01 17:02:29 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\nTest: builds, boots, runtest frameworks-net passes.\nBug: 34630278\nChange-Id: Ic7fd0b9e1cd879fdfaf84009d7125391895e9087\n"
    },
    {
      "commit": "70fbc788962c789fb200b0d8ea3f43c445571a3e",
      "tree": "8a83d2ec6c2c8d17364966548b7af5509e13d611",
      "parents": [
        "e45952c825d5aeec5cb59010c63d591521205ddd",
        "6e7f7dc64347de04292b58823846532806371924"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Feb 01 03:18:46 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 01 03:18:46 2017 +0000"
      },
      "message": "ConnectivityServiceTest: remove remaining poll loops. am: d2706127d0 am: 54e9050710 am: 67d6d41954\nam: 6e7f7dc643\n\nChange-Id: Idc5d60f9ed5fbbb39256b9983a5b292a0302b2f1\n"
    },
    {
      "commit": "e45952c825d5aeec5cb59010c63d591521205ddd",
      "tree": "4066b22cdaaacdaed7b9729e8e27e8adab9cea94",
      "parents": [
        "7d8b56b8019fc1f542b91e419cead1ee64b1172c",
        "d526434f0559684a7089a5486df3c08bcf948b7a"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Feb 01 03:17:19 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 01 03:17:19 2017 +0000"
      },
      "message": "Rename AvoidBadWifiTracker to MultinetworkPolicyTracker am: 58ebe1c6f1 am: 0bc8070fce am: 338241de94\nam: d526434f05\n\nChange-Id: I5aefc453c022286e6ee2332a53e6c9f36472e9a5\n"
    },
    {
      "commit": "7d8b56b8019fc1f542b91e419cead1ee64b1172c",
      "tree": "caa887bf8e283c4db7606a26442bdbdcb8ec01f5",
      "parents": [
        "026d0b22499738bc35ebd5f28efb1f4644e77a68",
        "8e3718459bfee99c433a01215170080657defca5"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Feb 01 03:16:18 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 01 03:16:18 2017 +0000"
      },
      "message": "Attempt to make waitForIdleHandler reliable. am: ae3ce81cc3 am: 8780a8afeb am: 943808385a\nam: 8e3718459b\n\nChange-Id: Ia2d7a4405ce60ca99b1ee6c80c0babf93983cf64\n"
    },
    {
      "commit": "6e7f7dc64347de04292b58823846532806371924",
      "tree": "ec3b238b4d1157f06d391d6c7c8fe982a7afa63e",
      "parents": [
        "4fc1296cef53c0c9599d1f3d81f0f65d2a839f44",
        "67d6d4195438ac7b526078226e6f19615af0f103"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Feb 01 03:01:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 01 03:01:52 2017 +0000"
      },
      "message": "ConnectivityServiceTest: remove remaining poll loops. am: d2706127d0 am: 54e9050710\nam: 67d6d41954\n\nChange-Id: I31681e1248721704a9b792962a2ef5955e375e93\n"
    },
    {
      "commit": "4fc1296cef53c0c9599d1f3d81f0f65d2a839f44",
      "tree": "a0a8d50a3c5e7582358fe808c8b1b545ae55aab9",
      "parents": [
        "d526434f0559684a7089a5486df3c08bcf948b7a",
        "90babed246186401aebe29e3385131938a036f63"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Feb 01 03:00:41 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 01 03:00:41 2017 +0000"
      },
      "message": "Remove assertEventuallyTrue as it\u0027s unnecessary. am: 30145d755c am: 90a70cac26\nam: 90babed246\n\nChange-Id: Ib16f54aeaa783a6e26a9d80e61388cbd9ecd9bd3\n"
    },
    {
      "commit": "d526434f0559684a7089a5486df3c08bcf948b7a",
      "tree": "0e82826be65fcee4635a4caf17b19ab5c149b047",
      "parents": [
        "8e3718459bfee99c433a01215170080657defca5",
        "338241de943f614d504f7771b12883494db5d0db"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Feb 01 02:59:42 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 01 02:59:42 2017 +0000"
      },
      "message": "Rename AvoidBadWifiTracker to MultinetworkPolicyTracker am: 58ebe1c6f1 am: 0bc8070fce\nam: 338241de94\n\nChange-Id: I91f1338f3488cfc60eef0c2147aa7b1d61107cdd\n"
    },
    {
      "commit": "8e3718459bfee99c433a01215170080657defca5",
      "tree": "a2d9bead5aa98653ee1083907f7a42ed2681d4d3",
      "parents": [
        "28f9de475f5285f08911ed1e41b7c08c29a7391e",
        "943808385af9a9abf28f6c52b5b4ee177f805ece"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Feb 01 02:58:24 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 01 02:58:24 2017 +0000"
      },
      "message": "Attempt to make waitForIdleHandler reliable. am: ae3ce81cc3 am: 8780a8afeb\nam: 943808385a\n\nChange-Id: I2369fbd693b467283232f47703fd471c8ff60c1f\n"
    },
    {
      "commit": "54e905071092a8f7c5fafa665e6205d0ad856cc5",
      "tree": "378d1ded9d895316b3b569881e58b23d89776bf7",
      "parents": [
        "90a70cac26b383dc4af40481a6ed688abe616da7",
        "d2706127d019898d0a14dca1ce818ac44ced1bee"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Feb 01 02:39:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 01 02:39:30 2017 +0000"
      },
      "message": "ConnectivityServiceTest: remove remaining poll loops.\nam: d2706127d0\n\nChange-Id: I675096683c8ed4bc0e540491c0ff6aa828114313\n"
    },
    {
      "commit": "90a70cac26b383dc4af40481a6ed688abe616da7",
      "tree": "32ac6d99fb28da9cc04075890ece78b2529294d5",
      "parents": [
        "0bc8070fcea1b9e09271e38e4f4019148693524d",
        "30145d755cd32c41b3e4032c89cb556d0719b740"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Feb 01 02:38:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 01 02:38:30 2017 +0000"
      },
      "message": "Remove assertEventuallyTrue as it\u0027s unnecessary.\nam: 30145d755c\n\nChange-Id: Id574b27b40e35fbccac49910867e9735c03118d4\n"
    },
    {
      "commit": "0bc8070fcea1b9e09271e38e4f4019148693524d",
      "tree": "9afea5f8612d5188625e19b1a7ac6b664180df02",
      "parents": [
        "8780a8afebf5969881a92609e7f43323818404f0",
        "58ebe1c6f1ef7a686eaa4f3ad3ff991c28e2bc2a"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Feb 01 02:37:31 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 01 02:37:31 2017 +0000"
      },
      "message": "Rename AvoidBadWifiTracker to MultinetworkPolicyTracker\nam: 58ebe1c6f1\n\nChange-Id: I7615c9128deed7011eb9ab6f2efdcfe2e237a1a5\n"
    },
    {
      "commit": "8780a8afebf5969881a92609e7f43323818404f0",
      "tree": "41caed2602f2b3edf51e8e9aaf583891e2ceb465",
      "parents": [
        "71a4792147bcf6bf855ab33617f341018ccca9a6",
        "ae3ce81cc350556b923da3d3d759cf204621aa12"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Feb 01 02:36:22 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 01 02:36:22 2017 +0000"
      },
      "message": "Attempt to make waitForIdleHandler reliable.\nam: ae3ce81cc3\n\nChange-Id: Id7e23c3a2c885ff239efa577a8d366d3df6ca9a2\n"
    },
    {
      "commit": "d2706127d019898d0a14dca1ce818ac44ced1bee",
      "tree": "1e939fec882e123cfdd162c4fd6a1e42259c08fc",
      "parents": [
        "30145d755cd32c41b3e4032c89cb556d0719b740"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Jan 30 17:45:49 2017 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Jan 31 15:44:23 2017 +0900"
      },
      "message": "ConnectivityServiceTest: remove remaining poll loops.\n\nAll the tests are now asynchronous. The only remaining uses of\nThread.sleep() are in the tests that check for NetworkRequest\ntimeouts.\n\nTest: ConnectivityServiceTest passes 100 times in a row\nBug: 32561414\nChange-Id: If420bd66c692a90d5031ee06a888a8cc3b4398a8\n"
    },
    {
      "commit": "30145d755cd32c41b3e4032c89cb556d0719b740",
      "tree": "cb17af4aaf6841d7b0f2a39936b8aa01325de8b7",
      "parents": [
        "58ebe1c6f1ef7a686eaa4f3ad3ff991c28e2bc2a"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Fri Jan 27 18:46:03 2017 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Jan 31 15:42:58 2017 +0900"
      },
      "message": "Remove assertEventuallyTrue as it\u0027s unnecessary.\n\nThe calls in testAvoidBadWifi are no longer necessary now that\nwaitForIdle is reliable, and the calls in testPacketKeepalives\nare replaced with a wait for the NetworkAgent to disconnect.\n\nTest: ConnectivityServiceTest passes 100 times in a row.\nBug: 32561414\nChange-Id: Icbb161ca6e343bd14764a1c9ccfdd14b6cd6803f\n"
    },
    {
      "commit": "58ebe1c6f1ef7a686eaa4f3ad3ff991c28e2bc2a",
      "tree": "f0386f7bd2d719263f549b8217bd61d092de33f6",
      "parents": [
        "ae3ce81cc350556b923da3d3d759cf204621aa12"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Jan 24 09:41:36 2017 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Jan 31 15:42:57 2017 +0900"
      },
      "message": "Rename AvoidBadWifiTracker to MultinetworkPolicyTracker\n\nRename the class and ensure that all code related to bad wifi\navoidance has names that reflect its purpose.  This will allow us\nto reuse most of the the code for other purposes in future CLs.\n\nTest: runtest frameworks-net passes\nBug: 34630278\nChange-Id: Ida190e5a79e7a12f4eec07e1a3e4d9d138e83bcd\n"
    },
    {
      "commit": "ae3ce81cc350556b923da3d3d759cf204621aa12",
      "tree": "06dcec98b135b1087317b1d2c2a72b322230c9d1",
      "parents": [
        "c2e8588396ef713885f4b903a6e079218a135b3b"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Jan 25 23:09:07 2017 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Jan 31 15:42:17 2017 +0900"
      },
      "message": "Attempt to make waitForIdleHandler reliable.\n\nThe current implementation of IdleableHandlerThread is based on\nthe assumption that MessageQueue#isIdle will return true iff the\nmessage loop has finished processing its messages.\n\nUnfortunately, this is incorrect: isIdle returns true iff are no\nmore messages waiting in the queue; thus, it will also return\ntrue while it is processing the last message before going idle.\n\nInstead of using idle handlers, take the simpler approach of\nposting a runnable to the message loop and waiting for it to\nbe processed.\n\nTest: see other CLs in this patch series\nBug: 31479480\nChange-Id: Iae75781f067b762c8653a488a5e4d5ee0c789e01\n"
    },
    {
      "commit": "db11740a0138a16a6aa7d9c284518356e3912029",
      "tree": "302c6d956f79faaf06eb43d9b7f83062bbd63a1e",
      "parents": [
        "cf45c852977e5f68a0d67fca01f03b11c09e32ba",
        "488ffdc784228d5a5dd3ed0956d6b13746e4db51"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue Jan 31 06:16:43 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jan 31 06:16:43 2017 +0000"
      },
      "message": "Merge \"ApfTest: fix flaky testApfFilterRa.\" am: c2e8588396 am: 60e1375f79 am: 811f6c86da\nam: 488ffdc784\n\nChange-Id: Ib4223b548b434211dda4e750f660eb68a30a9d96\n"
    },
    {
      "commit": "488ffdc784228d5a5dd3ed0956d6b13746e4db51",
      "tree": "9df162f826ebb920ce83de7e5575ce684be08ab8",
      "parents": [
        "4717b99a9dbf1c24585eb24f807ad180709bce50",
        "811f6c86da7e7864300b5b67507ea5bdd0cde7e4"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue Jan 31 06:11:35 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jan 31 06:11:35 2017 +0000"
      },
      "message": "Merge \"ApfTest: fix flaky testApfFilterRa.\" am: c2e8588396 am: 60e1375f79\nam: 811f6c86da\n\nChange-Id: Idd738e1a4c9f0a865f5b84270535a94c492341ce\n"
    },
    {
      "commit": "60e1375f79845b3e4ef3e4c3a823b670fa7e26da",
      "tree": "9c4b0c860d1208b07574b06bdeb5c4a7293a1dea",
      "parents": [
        "155d9ba6fcd99f261808ac43d9bba3e00c5d3ec0",
        "c2e8588396ef713885f4b903a6e079218a135b3b"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue Jan 31 06:01:58 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jan 31 06:01:58 2017 +0000"
      },
      "message": "Merge \"ApfTest: fix flaky testApfFilterRa.\"\nam: c2e8588396\n\nChange-Id: I79c3ec0ba35973cc0dd32709447b2cc30e790d08\n"
    },
    {
      "commit": "4456f33a958a7f09e608399da83c4d12b2e7d191",
      "tree": "2b5de933fb70bb8a34ae5d257e6332cc7522db54",
      "parents": [
        "c66327149a8b6666fdfee02a2f0feb48ef7086e3"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Dec 19 14:50:52 2016 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue Jan 31 11:13:44 2017 +0900"
      },
      "message": "ApfTest: fix flaky testApfFilterRa.\n\ntestApfFilterRa is failing with probabiliy 1/10 ~ 1/15 on the following\nassert: assertDrop(program, packet, lifetime/6), for lifetime values\nthat are multiple of 6, where 6 is the hardcoded fraction of RA lifetime\nto filter in ApfFilter.java.\n\nWhen the lifetime is not a multiple of 6, the remainder of 1 to 5\nseconds gives enough margin so that when the APF program is simulated\nthe faked lifetime of the program is less than lifetime/6 away and the\npacket is dropped.\n\nHowever for lifetimes which are exact multiples of 6, this margin is\nalways 0s and that result in nondeterminism in the result. This is\nconsistent with the obervation that the only failed assert was for a\nlifetime of 300s, the only multiple of 6.\n\nThis can be observed by detecting the age limit at which the filter\nstops dropping packet oscillating between lifetime/6 and lifetime/6 + 1\nfor lifetimes which are multiple of 6.\n\nThis patch fixes the flakyness by freezing the flow of time in tests so\nthat the expected filter age threshold is consistent and stable.\n\nTest: no failure observed in 1000 runs.\nBug: 32561414\nChange-Id: I5251d047039f34b82ce8a5d20ae46563e1e0cce8\n"
    },
    {
      "commit": "e17a1754ed27f1c270249798554606f21ad50509",
      "tree": "899b99db3372143645053908a5aa1c35c52d30de",
      "parents": [
        "a3a36dc3278fd49a63fcff52ffa7e5daf6d363e5",
        "8aba32468a64ad8cfdb018f6ace5d1e835e4c695"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Jan 27 19:39:31 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jan 27 19:39:31 2017 +0000"
      },
      "message": "Merge \"Switch to listening for all network changes.\" am: 085ffa76fa am: 46f8abd229 am: 118c0c9e7d\nam: 8aba32468a\n\nChange-Id: I00951c996b04124f3d8fba83802e3610e7b0e6e3\n"
    },
    {
      "commit": "8aba32468a64ad8cfdb018f6ace5d1e835e4c695",
      "tree": "c28aa4b205d478b819b190a52c264c1354f34686",
      "parents": [
        "83b3c5994e2b19ea867c548377e0532fcb49f3a0",
        "118c0c9e7dc60c7e7bb83e525c2b2b1c9c021ceb"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Jan 27 19:33:16 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jan 27 19:33:16 2017 +0000"
      },
      "message": "Merge \"Switch to listening for all network changes.\" am: 085ffa76fa am: 46f8abd229\nam: 118c0c9e7d\n\nChange-Id: I82ac34a2f846f4ebe164e4190716559186204934\n"
    },
    {
      "commit": "46f8abd229dd9b9b795c3e5b30286a530f43fd3d",
      "tree": "30272925467be8a9b05524579a69c10253fb61e6",
      "parents": [
        "b0f03a64ea7e897bd93dc2e4e6b2e211f8004623",
        "085ffa76fa3074e5e3809780c926c2b23c0416af"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Jan 27 19:14:39 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jan 27 19:14:39 2017 +0000"
      },
      "message": "Merge \"Switch to listening for all network changes.\"\nam: 085ffa76fa\n\nChange-Id: I87157788c5c2dc1015f9518c1c443256cfd30bae\n"
    }
  ],
  "next": "085ffa76fa3074e5e3809780c926c2b23c0416af"
}
