)]}'
{
  "log": [
    {
      "commit": "3256601f5e4d94713f59e97b9d4912875c1bdcaf",
      "tree": "f1419e55b5b45e0b8485845ad21b72eadeccd977",
      "parents": [
        "9eb2092ea146faa21b8c6e0e512c03fc67a09dda"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Dec 02 18:30:14 2014 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Dec 08 08:42:59 2014 -0800"
      },
      "message": "Offer to \"merge\" subscribers for data usage.\n\nThere are some cases where multiple subscriber identities (IMSI)\nshould be treated as \"merged together\" from a data usage\nperspective.  This is done by extending the template used for\nmatching purposes to support multiple subscribers.\n\nThen, when we query historical usage or set network policies, we\nnormalize the matching template to merge to any other identities\nthat should be included.  When normalizing, the \"lowest\" identity\nis always used for equality and storage purposes, which allows\nidentities to come and go over time.\n\nThis change also fixes data usage recording for multi-SIM devices\nby passing along the concrete subscriber identity for each network\ninterface.  Also correctly create default policies for multi-SIM\ndevices.  This change also drops setPolicyDataEnable() until it can\nbe wired up to the right underlying NetworkAgent.  (This means we\nstill bring up the network, and then rely on iptables rules to block\ntraffic when over the limit, instead of proactively disabling the\nconnection.)\n\nBug: 18012787\nChange-Id: If6acf32009fdfea2b836f5aff8e2f3e5e0248b4a\n"
    },
    {
      "commit": "21b5ee3f0e39be4a79bcfb2b79b0529f75f5cb58",
      "tree": "4cab5d1c3150323c137477c0ac5a42784083106f",
      "parents": [
        "08229e817ecb67b0c7ebbd6b5b9ce4aef1b38cc2"
      ],
      "author": {
        "name": "Sreeram Ramachandran",
        "email": "sreeram@google.com",
        "time": "Wed Nov 12 22:31:52 2014 -0800"
      },
      "committer": {
        "name": "Sreeram Ramachandran",
        "email": "sreeram@google.com",
        "time": "Fri Nov 21 08:07:13 2014 -0800"
      },
      "message": "Eliminate race conditions in UID-based network filtering.\n\nThe previous code retrieved information from the legacy tracker multiple\ntimes for each user query, leading to race conditions where the info\ncould\u0027ve changed between the calls.\n\nRefactors the handling of legacy data types in ConnectivityService and\nunifies call paths so that APIs that deal with legacy data types\n(NetworkInfo and int/networkType) and newer types (such as Network) go\nthrough common code paths, using NetworkState to hold all the necessary\ndata pieces. This enables follow-on bug fixes to getActiveNetworkInfo().\n\nThe changes are limited to public \"query\" APIs (those that retrieve some\nnetwork information or the other). More details about the specific\nchanges and their rationale can be found in the code review thread.\n\nBug: 17460017\nChange-Id: I656ee7eddf2b8cace5627036452bb5748043406c\n"
    },
    {
      "commit": "e542499a304f067372d85722e11a74b4e56b0bd7",
      "tree": "49545d3c3c8808a2b60f68bc71aa489714423aa5",
      "parents": [
        "3dcae68501a1fc1c433d12a9d55a31c7eaab016c"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Fri Nov 07 21:47:17 2014 +0100"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Mon Nov 10 21:03:12 2014 +0000"
      },
      "message": "Add LockSettingsStorage tests\n\nBug: 18163444\nChange-Id: I563276e6d445d43d05bf0d3c633440a8e0109b69"
    },
    {
      "commit": "d634d39c605553e669a16fd8fd406aa4695f54af",
      "tree": "7e0aec422a5d800f2f68b5180dd7e8664b8baf2e",
      "parents": [
        "ac7d8c5cc85dc5929b5d1c9d7836aca58a4e9ea5",
        "cff1d673394f8ef8c92bb69fea18cef4f7d07959"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Oct 27 22:01:57 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 27 22:01:58 2014 +0000"
      },
      "message": "Merge \"Follow API removal.\" into lmp-mr1-dev"
    },
    {
      "commit": "cff1d673394f8ef8c92bb69fea18cef4f7d07959",
      "tree": "0c5d230a50cc01feb1f497a2c25a9c10b6681206",
      "parents": [
        "5274dcc85dc18b524b729ae9a2148c651dc1a654"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Oct 27 14:53:40 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Oct 27 14:53:40 2014 -0700"
      },
      "message": "Follow API removal.\n\nBug: 18118003\nChange-Id: Iad73ce748e05ba0660246e8dbb041415c187f792\n"
    },
    {
      "commit": "036ebd782ca60c87360df354acf85854d428de12",
      "tree": "e1a849dd1a03b3d70bceb97719bd51869095c11a",
      "parents": [
        "9f837a99d48c5bb8ad7fbc133943e5bf622ce065"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Oct 27 13:49:56 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Oct 27 13:51:23 2014 -0700"
      },
      "message": "Follow ArraySet refactoring.\n\nBug: 18115729\nChange-Id: I2c32965b621b5bb57ff3bde02b00b31b59a5cd6d\n"
    },
    {
      "commit": "48a30db75dd0eedf8e065c89825b2af86a381b62",
      "tree": "5fd56bfd2acd997a623f9603c64a29aa2c5ed113",
      "parents": [
        "f7efd5c6a815b65e5401d51e0e9aae0f459eed72"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Tue Sep 23 13:39:36 2014 -0700"
      },
      "committer": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Tue Sep 23 17:34:46 2014 -0700"
      },
      "message": "Fix lock ordering in JobScheduler\n\nBUG: 17625667\nTwo part clean-up.\n1) Don\u0027t try to lock in onControllerStateChanged. Do it in the handleMessage\ninstead where the rest of the locking is. This is sufficient to fix this bug.\n2) The other side of the deadlock came b/c we lock when cancelling and calling\nstopTrackingJob. Controllers handle their own locking so this isn\u0027t\nnecessary. B/c of a potential race from the controller side, added an explicit\ncheck for the JSS to only run an expired job if it still exists.\n\nChange-Id: Iaeebbc19437eb5b73e3ced3168f1fc13e564a4be\n"
    },
    {
      "commit": "0e8d7d63ba439cc0604af7055679dae3d30fdc48",
      "tree": "c1602cdb8d5fee4547fe06bdb8b77563344383a9",
      "parents": [
        "0fd79c955b3745648d5f326bc784ced1e1188935"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Sep 03 13:17:28 2014 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Sep 03 13:17:28 2014 -0700"
      },
      "message": "Add some @SystemApi tags for internal user-related APIs\n\nAlso added an internal isManagedProfile()\n\nBug: 17371392\nChange-Id: Ibcc26771d954505cbd530192bf4a8a25a8d4cae0\n"
    },
    {
      "commit": "d1c06753d045ad10e00e7aba53ee2adba0712ccc",
      "tree": "6a1103dfcc0b6db0dfc030aba6cdb4961e2a91c2",
      "parents": [
        "acb570cd84b4e3503e7e96138ea0d9d236ca9b9e"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Fri Aug 22 14:15:28 2014 -0700"
      },
      "committer": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Fri Aug 22 16:08:45 2014 -0700"
      },
      "message": "Implement API review feedback for JobScheduler\n\nBUG: 17005336\n\nTook the opportunity to clean up some back-off logic\n\nChange-Id: Ibc8ae34d1d44dd064ba071e4cbad17872f7e38cf\n"
    },
    {
      "commit": "31fe102d575ec6d26d99c11bf4d396be4d316aab",
      "tree": "cdff9e08500ae817a7ae02556869cab10f37c92a",
      "parents": [
        "a277db28e990d1f6f74ace0c32fe92401660a840"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Aug 22 12:35:04 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Aug 22 11:37:20 2014 +0000"
      },
      "message": "Remove a line that was accidentally committed.\n\nPrevents the APK from being installed.\n\nbug: 17153971\n\nChange-Id: Ic53c94dc6f0583371965d5edb0b12248c915214e"
    },
    {
      "commit": "d8b54e831dc59ea5f903f0e920a64cf2411dd3ab",
      "tree": "aa756baacdf6bb463bce107152903968289dab99",
      "parents": [
        "f860be88a9c8fca910f2d97694d102f627d06c71"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Aug 21 12:25:24 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Aug 21 12:31:39 2014 +0100"
      },
      "message": "Fix service tests.\n\nDepending on a LOCAL_JAVA_LIBRARY doesn\u0027t do anything at runtime\nunless the library is manually added to the class path. Since\nsystem server classes (and the system server) can\u0027t be instrumented\nlike a normal app can, we can\u0027t really write \"real\" Instrumentation\nTests for its classes.\n\nGiven that, we can just compile the classes under test into the same\njar file as the testcases.\n\nChange-Id: Ie4377bf81b9542ceca938e26ac78e30835fc40bc\n"
    },
    {
      "commit": "235510e67210f90de30c2d5582a2077ccc589619",
      "tree": "f03ee027a96a47c9b321521e50a29448da069c47",
      "parents": [
        "4b6c6697da5a20c08b2f9f2ca40c94008477e914"
      ],
      "author": {
        "name": "Jose Lima",
        "email": "joselima@google.com",
        "time": "Wed Aug 13 12:50:01 2014 -0700"
      },
      "committer": {
        "name": "Jose Ricardo Lima",
        "email": "joselima@google.com",
        "time": "Thu Aug 14 02:10:41 2014 +0000"
      },
      "message": "Made AlarmClockInfo a nested class in AlarmManager\n\nBug: 16959028\nChange-Id: I150eaaff765d1e214c3621c1bf50162ec0dac8ec\n"
    },
    {
      "commit": "95ab7849444125387dc88088bb5197ee463d8c17",
      "tree": "c5747585a3e3e2dd8aed2475767eaf91c9376ff5",
      "parents": [
        "437e61d5adc81b57c11f56b94ecc75239708fbb1"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Aug 11 17:09:26 2014 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Aug 13 20:09:20 2014 +0000"
      },
      "message": "Decouple user limit from guest creation\n\nAllow Guest to be created even if there are N users.\nAllow N users to be created even if there are N-1 users\n   and a Guest.\nLimit number of guests and managed profiles that can\nbe added.\n\nAdded unit tests.\n\nBug: 15934700\nChange-Id: I1a8f0fa38a91d71ef7b2980e05c974244dfc337a\n"
    },
    {
      "commit": "6831f1d80f9a5ad2400bd186fb6179e0e511be05",
      "tree": "0129e83a9aea02132594ead8db51d636deb3926f",
      "parents": [
        "9e6143642460163452721ee4af2f6d5818e54aa0"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Sun Jul 27 12:06:40 2014 -0700"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Mon Jul 28 14:48:52 2014 -0700"
      },
      "message": "Remove dead code 2.\n\nRemoving ConnectivityService.NetworkFactory.  This requires disabling\nthe ConnectivityServiceTest, but that\u0027s been broken since we stopped\nusing NetworkStateTrackers anyway.\n\nChange-Id: I9b86bd37eb9d018c40f60dca5b00d62c36d4e3ad\n"
    },
    {
      "commit": "01ac45b6ff2334925c8d24b5278b44e5e30f5622",
      "tree": "87eac13ff608e6c7bd5b0bef7b3bfe6a8f57ddf9",
      "parents": [
        "5a836f74df027bb568da17fbde4e641b6a56d2a9"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Tue Jul 22 20:44:12 2014 -0700"
      },
      "committer": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Wed Jul 23 15:33:09 2014 -0700"
      },
      "message": "Fix JobScheduler race condition\n\nThe loading of jobs from disk is now done sychronously.\n\nBug: 16372824\nChange-Id: Ica0592d6de51e89662c9e49ed1eb59209b64356c\n"
    },
    {
      "commit": "1031c974855ff4117a6d7866e664295786840319",
      "tree": "2761392630e3c4f84be153b68cbb671fe07cb9a7",
      "parents": [
        "dedc4a379ff2697d5abce37aa422918a01ad0676"
      ],
      "author": {
        "name": "Chris Wren",
        "email": "cwren@android.com",
        "time": "Wed Jul 23 13:11:45 2014 +0000"
      },
      "committer": {
        "name": "Chris Wren",
        "email": "cwren@android.com",
        "time": "Wed Jul 23 09:45:25 2014 -0400"
      },
      "message": "Honor the sort and group keys for notification ranking.\n\nSort notifications naturally, then move group childen to be next their proxy.\nThe group proxy is the summary, or if no summary exists, the lowest-ranked\nmember of the group is chosen as the proxy.\n\nNotifications with a sortKey but no group and placed into a synthetic\ngroup that consists of all notifications from that package and user in\nthe same priority bucket that also have sortKeys.\n\nExpose a new API for listeners to get the group key for the notificaiton.\n\nBug: 15190903\nChange-Id: I324ba0c394affdabb3588ca2ebafa7cf0acad2af\n"
    },
    {
      "commit": "cf7ed583080b6c958f5a02817110505bae2a17df",
      "tree": "e5a6b91ec9941a948f41b1608268aa1aa3462f9b",
      "parents": [
        "4a24fd3c7bab53e4e9c127214e7168db0af8800a"
      ],
      "author": {
        "name": "Chris Wren",
        "email": "cwren@android.com",
        "time": "Wed Jul 23 12:41:37 2014 +0000"
      },
      "committer": {
        "name": "Chris Wren",
        "email": "cwren@android.com",
        "time": "Wed Jul 23 12:41:37 2014 +0000"
      },
      "message": "Revert \"Honor the sort and group keys for notification ranking.\"\n\nThis reverts commit df09d4c348f9f2aea10391b27d157d8b71a9e189.\n\nChange-Id: Idbc9ed5c5c83cd0cad5a71872bcc203321a11e9e\n"
    },
    {
      "commit": "4a24fd3c7bab53e4e9c127214e7168db0af8800a",
      "tree": "697b76542e4966ba05e8b2cd030bf7b7b82d4f2f",
      "parents": [
        "0c434aed47faf396caef06b146355565b0e778c2"
      ],
      "author": {
        "name": "Chris Wren",
        "email": "cwren@android.com",
        "time": "Thu Jul 17 17:08:53 2014 -0400"
      },
      "committer": {
        "name": "Chris Wren",
        "email": "cwren@android.com",
        "time": "Wed Jul 23 10:36:57 2014 +0000"
      },
      "message": "Honor the sort and group keys for notification ranking.\n\nSort notifications naturally, then move group childen to be next their proxy.\nThe group proxy is the summary, or if no summary exists, the lowest-ranked\nmember of the group is chosen as the proxy.\n\nNotifications with a sortKey but no group and placed into a synthetic\ngroup that consists of all notifications from that package and user in\nthe same priority bucket that also have sortKeys.\n\nBug: 15190903\nChange-Id: I377ed65b9592079446da4a4189f5ab49d28630ec\n"
    },
    {
      "commit": "03666c705ddabe0e7c5869ab69c2ca8b964164e9",
      "tree": "c24ae1fb4a94ea49af37c122a3e194a35b37d873",
      "parents": [
        "921ec8056a3010d0a21400f97312cf3f7d97ffaa"
      ],
      "author": {
        "name": "Sreeram Ramachandran",
        "email": "sreeram@google.com",
        "time": "Sat Jul 19 23:21:46 2014 -0700"
      },
      "committer": {
        "name": "Sreeram Ramachandran",
        "email": "sreeram@google.com",
        "time": "Tue Jul 22 15:46:34 2014 -0700"
      },
      "message": "Cleanup: Delete dead code.\n\nBug: 15413389\nChange-Id: I315468832ef18ffc84174e54774ab63b86d284dc\n"
    },
    {
      "commit": "900c67fc51fc2672458dd1c9641250f2ecc01a31",
      "tree": "6be17e409dd09f2f25a76e42a41ab439583120b9",
      "parents": [
        "244911f9769946249aad1e0ed7187f2cb1d01831"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Wed Jul 09 12:46:53 2014 -0700"
      },
      "committer": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Thu Jul 10 16:51:27 2014 -0700"
      },
      "message": "Add job persistance as a setter in the API\n\nBug: 15936795\nChange-Id: I11e5a722bab5838dc151670256ed09dfaa7fdaa7\n"
    },
    {
      "commit": "c42a1e1071937ae48b7aa5d6291a32c29078b74b",
      "tree": "b5806ebfdc7738b325b5e5488ae79fd81f507367",
      "parents": [
        "cafd15216ee66a302ee69c0ea0c6c63b07a2f68c"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Mon Jul 07 23:35:53 2014 +0200"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Thu Jul 10 17:07:36 2014 +0000"
      },
      "message": "Add AlarmClock API to AlarmManager\n\nAdds a new kind of alarm that represents an alarm clock and\na way to query the next scheduled alarm clock.\n\nDeprecates Settings.System.NEXT_ALARM_FORMATTED.\n\nBug: 14589952\nChange-Id: I297eeeff36d07adcda010afac183d0f5ee37dc99"
    },
    {
      "commit": "43c4f41adb330522c6784177bf8e9a1239c6a15f",
      "tree": "1c685626f8fcc57f926b853f46ce0e6c8def1f17",
      "parents": [
        "dbff68ae1a04ddc4a9b71c1cb0a007468a85fda8",
        "46919f358390ad40e19259d12ef04b6898b9e4a4"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Wed Jun 11 17:02:53 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 11 17:02:53 2014 +0000"
      },
      "message": "am 8e8c1401: Fix build.\n\n* commit \u00278e8c140114cb3a4f1cf448c4492c13769738ca12\u0027:\n  Fix build.\n"
    },
    {
      "commit": "0188bee2c526270c178a0b1f918b2a09999de25f",
      "tree": "493dd8356757ef85b8dab61cd0de3329f2d8e38f",
      "parents": [
        "acdee873669860f9e7be77327274d1c60fb6b400",
        "e9ed3707b234c893622aec3ddecbf2f9d41d1454"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jun 11 17:02:18 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 11 17:02:18 2014 +0000"
      },
      "message": "am d8f71d34: Merge \"Out with the old; in with the new\" into lmp-preview-dev\n\n* commit \u0027d8f71d34c3c7fb161a1586de8edb52161c32d672\u0027:\n  Out with the old; in with the new\n"
    },
    {
      "commit": "46919f358390ad40e19259d12ef04b6898b9e4a4",
      "tree": "ffe99cc9278d2fe98dbe70101c0ec89b638767e1",
      "parents": [
        "ce3d6c4c0201f136d9b89ea224aa10b86faef4da"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Tue Jun 10 16:06:13 2014 -0700"
      },
      "committer": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Tue Jun 10 16:11:08 2014 -0700"
      },
      "message": "Fix build.\n\nTwo tests were breaking the build.\n\nChange-Id: If424a552d3fedb912fa94870b88c60dc3750b69a\n"
    },
    {
      "commit": "7060b04f6d92351b67222e636ab378a0273bf3e7",
      "tree": "82fce1e04dd58a5d79895d0869b3b0adeffbb417",
      "parents": [
        "6d7a25f317be60ae8a4d8806e517052be2398753"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 09 19:50:00 2014 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 10 12:51:55 2014 -0700"
      },
      "message": "Out with the old; in with the new\n\nSwitch to the official \"JobScheduler\" etc naming.\n\nBug 14997851\n\nChange-Id: I73a61aaa9af0740c114d08188bd97c52f3ac86b7\n"
    },
    {
      "commit": "f53c295ae3ccabf1cf5a31c03f64233526e683eb",
      "tree": "fb59f194508169e78b3c3197c1c463b193ffea8b",
      "parents": [
        "1a2f7a1e29e59e0c9140ac5d3f465dc110c70b48",
        "5553aeb2aeee88929b11ee3bbf8e02da1e9368bd"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Tue Jun 10 14:55:46 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 10 14:55:46 2014 +0000"
      },
      "message": "am 3b471117: Merge \"Add OnNetworkActive to TaskManager and simplify locking.\" into lmp-preview-dev\n\n* commit \u00273b4711176e77640d697e94137e65fa93c8363f5c\u0027:\n  Add OnNetworkActive to TaskManager and simplify locking.\n"
    },
    {
      "commit": "effacfa75bd9c2ebc889a7bc4f002c07f82f4c31",
      "tree": "ebf6924fa6222a337da7893ab788a859379f08b7",
      "parents": [
        "6fffd2b85469d2b055dbb68f5f28b7c58da2fc3d"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Thu Jun 05 20:56:40 2014 -0700"
      },
      "committer": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Mon Jun 09 17:18:11 2014 -0700"
      },
      "message": "Add OnNetworkActive to TaskManager and simplify locking.\n\nBug: 14993295\nHooks up a ConnectivityManager.NetworkActiveListener.\n    \nPreviously was using 3 locks where 1 would suffice,\nnegligible to no performance issues b/c most of the previous locks\nwere nested.\n\nAdded OnNetworkActiveListener so that the ConnectivityController can kick of\ntasks when it knows that the network is active.\n\nFixed some bugs that stopped timecontroller from executing tasks.\n\nRequesting a retry will not add a deadline to that task. However backed-off\ntasks are run as soon as they are ready, subject to their constraints.\n\nAdded receiver to listen for package removal and user removal, which will\ndelete any outstanding jobs for that uid.\n\nChange-Id: I4c4523af558b927f19b8a215878fcc7198abb93f\n"
    },
    {
      "commit": "38b200fe6c1aba63b57b315f4274d337545f0c89",
      "tree": "b35feade7894ab5e8d97d4269658250c9a0d33e4",
      "parents": [
        "ed50e94d6c47a99c9dae0b950a258c074576493e",
        "afcece8115d89802b0618dacf8a6a18fc5a349b1"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Thu Jun 05 20:08:54 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 05 20:08:54 2014 +0000"
      },
      "message": "am 1a2f47d4: Merge \"Add persistence of tasks for TaskManager \u0026 BatteryController\" into lmp-preview-dev\n\n* commit \u00271a2f47d4cdc0ea40dff1b88f7976d64c19d687b1\u0027:\n  Add persistence of tasks for TaskManager \u0026 BatteryController\n"
    },
    {
      "commit": "3d86fd2bb9db6067c49634bc4c6cdb4d5235ad36",
      "tree": "ead7a5dbd6d077bb22e04f6e9d9ac33d5df0f60a",
      "parents": [
        "03b62b3c7ff57f44a9142bac48603656dfb550ed"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Fri May 16 18:02:17 2014 -0700"
      },
      "committer": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Thu Jun 05 18:28:43 2014 +0000"
      },
      "message": "Add persistence of tasks for TaskManager \u0026 BatteryController\n\nTasks are persisted only if the client has the RECEIVE_BOOT_COMPLETED\npermission. This applies to both periodic and one-off tasks.\nWrite out task as xml, using PersistableBundle for the extras data.\nTodo: Add persistable bundle to xml when ag/468207 is merged.\n\nAlso added BatteryController logic.\n\nChange-Id: I23eeeb8b3bc6ba155e7fa4ec25857a68ee8b1567\n"
    },
    {
      "commit": "5b5aa4072fb58aea47f523c724878c579adae294",
      "tree": "d4c575b5b7e8338c4e797e7293358c3a7ca1308b",
      "parents": [
        "82ed45da97b0d6a144386b60847437e8aaef9866"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sun Jun 01 20:10:14 2014 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sun Jun 01 20:17:37 2014 -0700"
      },
      "message": "Handle saving and restoring ints in application restrictions\n\nUnit tests for restrictions types and proper escaping.\n\nChange-Id: Iac35521faf5798398a89fecbad82fcdd256a4146\n"
    },
    {
      "commit": "92af372fc60f59c628a7169d4a506e9c834c097a",
      "tree": "cfa67bf9e30edd9fe3253c00128572dbe4d49b7f",
      "parents": [
        "f5152735b5e3fa53b91dc7781037e287096b53a4"
      ],
      "author": {
        "name": "Chris Wren",
        "email": "cwren@android.com",
        "time": "Tue May 27 16:37:02 2014 -0400"
      },
      "committer": {
        "name": "Chris Wren",
        "email": "cwren@android.com",
        "time": "Thu May 29 16:14:31 2014 +0000"
      },
      "message": "add tests for ValidateNotificationPeople.getExtraPeople()\n\nChange-Id: Ieb8acce58574c25cccce674b4494f75d96b57125\n"
    },
    {
      "commit": "4ddebf7f5b85d082c56f6a8aad11bd0c5ca68fde",
      "tree": "f67bc88a47d8fa946c8acaba36b20e1b16b53fc9",
      "parents": [
        "b2829fa165124264c7ec06a6e23b08a1d97b99e5"
      ],
      "author": {
        "name": "Sreeram Ramachandran",
        "email": "sreeram@google.com",
        "time": "Wed Apr 16 10:56:07 2014 -0700"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed May 14 03:56:33 2014 -0700"
      },
      "message": "Fix build.\n\nChange-Id: I5dab09d2d8a9cff56fa17bb4e8c14b365449399b\n"
    },
    {
      "commit": "a7b9796345335e4906d98432a1d194fa242cd23e",
      "tree": "304fa1bcc832aa8c4310283ff2ea3a55ef35a000",
      "parents": [
        "13e817df516a803fbedeacca2c802a9fc1c1370f"
      ],
      "author": {
        "name": "Paul Jensen",
        "email": "pauljensen@google.com",
        "time": "Tue Apr 15 15:48:48 2014 -0400"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed May 14 03:56:33 2014 -0700"
      },
      "message": "Get ConnectivityServiceTest building again after 8f80cc8.\n\nChange-Id: I4520011ba2076d8fac1ca234cb9a79c774992671\n"
    },
    {
      "commit": "629f76682729a63c0e3d29f836c3c69c6fdb4c77",
      "tree": "728c83810c1888648ecd4ce892ee99d1b5e9e6be",
      "parents": [
        "26ad3af74d4b8a6f960de7a4370684a987551f6d",
        "80edaa676bd59409f8a82e12c035bee96e653004"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 11 10:57:28 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 11 10:57:28 2014 +0000"
      },
      "message": "am 80edaa67: am 24c089a8: Fix build.\n\n* commit \u002780edaa676bd59409f8a82e12c035bee96e653004\u0027:\n  Fix build.\n"
    },
    {
      "commit": "24c089a8b5871b331441d0858aa164364b7737cb",
      "tree": "ab10e7a5f7847895355e2a001e6dda01d956c7d7",
      "parents": [
        "b11f250e09195d1ab250c93bfed0b31ed3a40f3d"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 11 11:42:33 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 11 10:50:43 2014 +0000"
      },
      "message": "Fix build.\n\nisScreenOn was changed to isInteractive.\n\nChange-Id: I381d0b0ca745b61e64ac6309c2a6307696f52be0\n"
    },
    {
      "commit": "c798e4f5497c39a3c6c14b120cffdee1122a9212",
      "tree": "929194e78eec01b7913b05aba4a50a9d81974472",
      "parents": [
        "e9b50e75a050e75161aa316b0c73bdab500ca14d",
        "4701b51af216ce2b6fa9fa508ebba47bf13063c7"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Tue Mar 25 09:57:36 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 25 09:57:36 2014 +0000"
      },
      "message": "am 4701b51a: am bb87ac7f: DO NOT MERGE: Downgrade expedited to normal on reschedule.\n\n* commit \u00274701b51af216ce2b6fa9fa508ebba47bf13063c7\u0027:\n  DO NOT MERGE: Downgrade expedited to normal on reschedule.\n"
    },
    {
      "commit": "bb87ac7f9733ca9b490cb34e8a675dba083a57b7",
      "tree": "1dafdaf3def68c809f7831fecbe86c8330dc2ceb",
      "parents": [
        "c41853cee89b391cd2d4d93205ea69c746ccfa4c"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Mon Mar 24 14:42:06 2014 -0700"
      },
      "committer": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Mon Mar 24 14:42:06 2014 -0700"
      },
      "message": "DO NOT MERGE: Downgrade expedited to normal on reschedule.\n\nbug: 12033540\nExpedited was previously tracked by a redundant internal variable, ostensibly\nas an optimisation. This variable could differ from the value in the bundle\ndepending on how the operation is initialised, which led to confusion. Now an\nexpedited sync will only be treated as such on its first execution.\n\nChange-Id: Ibfc4e9e49b86c82f2364a6ef55f887705a053eb6\n"
    },
    {
      "commit": "cde7086b900fd192a8e389f62ab5007d351d86b8",
      "tree": "8b82f7dd61c65e1c677a3664ddc4deaae53362d9",
      "parents": [
        "717e0f5db7161ddfff98f21fe1cdb2a3b1a6c8b7",
        "6428046767ee4195617fb41b5639eefa2ca7a939"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Fri Mar 21 21:59:07 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 21 21:59:07 2014 +0000"
      },
      "message": "Merge \"Downgrade expedited to normal on reschedule.\""
    },
    {
      "commit": "a3f828ba3079408543091a4ccd6c11896ec4e0c7",
      "tree": "115b1a92d6768d81a323069cd84f449b9788fff3",
      "parents": [
        "ea818400f8e9cd1a182d9565d42571a709c98990"
      ],
      "author": {
        "name": "Ashish Sharma",
        "email": "ashishsharma@google.com",
        "time": "Tue Mar 18 16:38:58 2014 -0700"
      },
      "committer": {
        "name": "Ashish Sharma",
        "email": "ashishsharma@google.com",
        "time": "Tue Mar 18 16:38:58 2014 -0700"
      },
      "message": "Update the tests to deal with the new timestamps in idletimer module.\n\nChange-Id: I1a8368d84ef806f1501b0a1f5e817388a1d10518\n"
    },
    {
      "commit": "8a985d24ce9a38f40ed88fecbdcd0e75e3a68f44",
      "tree": "a71a241bf554a157a25d54dce66364d7881c3579",
      "parents": [
        "875e2101d71afe7e4acf10b061c942fbf7294775"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Feb 25 09:40:05 2014 -0500"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Feb 25 09:49:29 2014 -0500"
      },
      "message": "Tabs -\u003e spaces in frameworks/base.\n\nChange-Id: I5a84e8e93ac99b5ed0212b37bf66efa5e53864be\n"
    },
    {
      "commit": "d63b4314b85e982a1d70d4064af59851f476dd36",
      "tree": "f427ceb35b814b9395a1bf0a0a6c5b505e9c3b3a",
      "parents": [
        "6b1a93fcb9551730583f1d3ea36dbfd5589859f3",
        "2ff96af24de2c22a21de9b56ea8543dccdbdcb9d"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Thu Feb 13 20:25:00 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 13 20:25:01 2014 +0000"
      },
      "message": "Merge \"Log history of location requests in LocationManager. -Assists with debugging power issues. Bug: 12824233\""
    },
    {
      "commit": "6428046767ee4195617fb41b5639eefa2ca7a939",
      "tree": "e97481c124c8727245b852970b69dabdb78b7446",
      "parents": [
        "cb1b23b5e600abe542e3374b66c2be7976fccd72"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Thu Jan 09 10:49:23 2014 -0800"
      },
      "committer": {
        "name": "Liam Byrne",
        "email": "morepork@google.com",
        "time": "Thu Feb 06 17:22:08 2014 +0000"
      },
      "message": "Downgrade expedited to normal on reschedule.\n\nbug: 12033540\nExpedited was previously tracked by a redundant internal variable, ostensibly\nas an optimisation. This variable could differ from the value in the bundle\ndepending on how the operation is initialised, which led to confusion. Now an\nexpedited sync will only be treated as such on its first execution.\n\nChange-Id: I9979102317aecbe8bc53a36381d4b2782ac131be\n\nConflicts:\n\tservices/core/java/com/android/server/content/SyncOperation.java\n\tservices/core/java/com/android/server/content/SyncQueue.java"
    },
    {
      "commit": "776c555d954d9494069f786785877c08add27327",
      "tree": "1cad8070340a8e2924efd9ca371d6c5098cfcfdc",
      "parents": [
        "cb1b23b5e600abe542e3374b66c2be7976fccd72"
      ],
      "author": {
        "name": "Adam Connors",
        "email": "adamconnors@google.com",
        "time": "Thu Jan 09 10:42:56 2014 +0000"
      },
      "committer": {
        "name": "Adam Connors",
        "email": "adamconnors@google.com",
        "time": "Thu Feb 06 10:07:19 2014 +0000"
      },
      "message": "Extend DeviceOwner concept to accommodate ProfileOwners\n\nProfileOwners, like DeviceOwners, are Device Admins that have\nadditional priviledges. ProfileOwners however are scoped per\nuser.\n\nChange-Id: I1e22c85878e0672121e6ebbe97fca38591f992b2\n"
    },
    {
      "commit": "2ff96af24de2c22a21de9b56ea8543dccdbdcb9d",
      "tree": "cc9d5959d48b0b0fcabdabe6bdd6ff3469c2721f",
      "parents": [
        "4c2315d10c462cbebe098cae656675a46e8cfe3d"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Thu Jan 30 16:09:37 2014 -0800"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Mon Feb 03 13:53:10 2014 -0800"
      },
      "message": "Log history of location requests in LocationManager.\n-Assists with debugging power issues.\nBug: 12824233\n\nChange-Id: Iaaef0dbe00154c7668034a166587671b75d1f3c7\n"
    },
    {
      "commit": "ba09ada20e9d801068cf51340fee30760203bf51",
      "tree": "1f24760b035c87d96f47f386fc245d10c9a5c9bb",
      "parents": [
        "aef49f9a7142892f38c3bb84b5eae3ceb9a96a15"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Thu Jan 09 11:02:03 2014 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Jan 09 20:41:57 2014 +0000"
      },
      "message": "Include subdirectory Android.mks.\n\nChange-Id: I6e6bc721dbcf127b52f2a60f255c9fc677d3be29\n(cherry picked from commit c459bfea7e7be4343387dee137d4a5be9742fd91)"
    },
    {
      "commit": "c459bfea7e7be4343387dee137d4a5be9742fd91",
      "tree": "1f3a6df442aab52cd7181eb7caaf8bce94ea6828",
      "parents": [
        "9e2694b5217be8c30a015c6254ee2ea70784958c"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Thu Jan 09 11:02:03 2014 -0800"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Thu Jan 09 11:02:03 2014 -0800"
      },
      "message": "Include subdirectory Android.mks.\n\nChange-Id: I6e6bc721dbcf127b52f2a60f255c9fc677d3be29\n"
    },
    {
      "commit": "4598ea4e5e6b2accce5165a76f5e2d04ce46c74c",
      "tree": "c8750497aed5e07242cd2ce0e4361b2b04a79b39",
      "parents": [
        "3f6239e37e1eff1e42e0a595ffd4d30d1876a9ea",
        "263c4788dcf45f104f8668fd6621d1a7c39689b9"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Dec 09 18:34:44 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 09 18:34:44 2013 +0000"
      },
      "message": "am 263c4788: am 30253d7a: am 2daa0c93: Merge \"Add address flags and scope to LinkAddress.\"\n\n* commit \u0027263c4788dcf45f104f8668fd6621d1a7c39689b9\u0027:\n  Add address flags and scope to LinkAddress.\n"
    },
    {
      "commit": "64483947fdb03bf838e317ac0a4af5e0f53a5bbf",
      "tree": "856dbc2a83c5b1586b1127e0b3c14f6f335a30fc",
      "parents": [
        "6e2d0c1d91f644ab50e0c0b7cae4306262a4ca41"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Fri Nov 15 18:43:52 2013 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Fri Dec 06 13:54:35 2013 +0900"
      },
      "message": "Add address flags and scope to LinkAddress.\n\nThis is necessary so that the framework can know whether an IPv6\naddress is likely to be usable (i.e., if it\u0027s global scope and\npreferred). Also, it will simplify the address notification\nmethods in INetworkManagementEventObserver, which currently take\nthe address, the flags, and the scope as separate arguments.\n\n1. Add flags and scope to the class and update the unit test.\n   Use the IFA_F_* and RT_SCOPE_* constants defined by libcore.\n   Since most callers don\u0027t know about flags and scope, provide\n   constructors that default the flags to zero and determine the\n   scope from the address. Addresses notified by the kernel will\n   have these properly set. Make multicast addresses invalid.\n   Update the class documentation.\n2. Provide an isSameAddressAs() method that compares only the\n   address and prefix information between two LinkAddress\n   objects. This is necessary because an interface can\u0027t have\n   two addresses with the same address/prefix but different\n   flags.\n3. Update LinkProperties\u0027s addLinkAddress and removeLinkAddress\n   to identify existing addresses to add/remove using\n   isSameAddressAs instead of implicit equals(). Specifically:\n   - If addLinkAddress is called with an address that is already\n     present, the existing address\u0027s flags and scope are updated.\n     This allows, for example, an address on an interface to go\n     from preferred to deprecated when it expires, without it\n     having to be removed and re-added.\n   - If removeLinkAddress is called with an address that is\n     present but with different flags, it deletes that address\n     instead of failing to find a match.\n4. Update the INetworkManagementEventObserver address\n   notification methods to take just a LinkAddress instead of\n   LinkAddress, flags, and scope. While I\u0027m at it, change the\n   order of the arguments for consistency with the other\n   functions in the interface.\n\nChange-Id: Id8fe0f09a7e8f6bee1ea3b52102178b689a9336e\n"
    },
    {
      "commit": "317d15c15531b353aa3e8cb1a3ba03d98b71efb6",
      "tree": "11a8c9fa17556233b9ee165dd37ff627e6999e6a",
      "parents": [
        "d786a1900e94c4f0c919b50b44667cea32fd2939",
        "4806fdfbd0fecf91584396fc0f620c97a05ab837"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Dec 02 20:53:06 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 02 20:53:06 2013 +0000"
      },
      "message": "am 4806fdfb: am f226bc60: Merge \"Use LinkAddress in address notifications.\"\n\n* commit \u00274806fdfbd0fecf91584396fc0f620c97a05ab837\u0027:\n  Use LinkAddress in address notifications.\n"
    },
    {
      "commit": "5ad421a3d00c92c155d57af9d1a05d81cc2fa88f",
      "tree": "68626927245cd2e5bbe42cddeff69b3199465e6a",
      "parents": [
        "9d4ac9703657142b190d3c256de7c3329e5a4b29"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Sun Nov 17 15:05:02 2013 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Nov 26 21:55:15 2013 +0900"
      },
      "message": "Use LinkAddress in address notifications.\n\nCurrently address{Updated,Removed} pass in the address as a\nstring such as \"fe80::1/64\". Use LinkAddresses instead, since\nthat\u0027s what it is.\n\nThis makes the code more robust in the unlikely case that netd\npasses in an invalid string. In the future we can move flags and\nscope into the LinkAddress itself and simplify the code further.\n\nBug: 9180552\nChange-Id: I66599f9529cf421caa7676fdd0141bb110b8589e\n"
    },
    {
      "commit": "5ae4a531cc31be2868f65c40e8636658f1ae2f06",
      "tree": "d2a5bf64fd3bb9ee4ddfa45ff44750459ead8d94",
      "parents": [
        "a9626c1c956f51e7b4cb783d70b75abc3b180a00"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Oct 31 11:59:46 2013 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Nov 25 17:27:17 2013 +0900"
      },
      "message": "Pass DNS server info notifications to observers.\n\nThese are sent if the device receives IPv6 Router Advertisements\nwith DNS server configuration options. Currently, nothing listens\nto them; in a future change we will use them as IPv6 DNS servers.\n\n[Cherry-pick of 416740ad4d9132005a71dc0883334e852235a18a]\n\nBug: 9180552\nChange-Id: I05000c0cd3867a68ab390102e8470b6912a9d3aa\n"
    },
    {
      "commit": "a9626c1c956f51e7b4cb783d70b75abc3b180a00",
      "tree": "1c1bef2ecca682d5d55176b3956bf4c611febbbf",
      "parents": [
        "132fe8d27dcb45b363dff3eeb347ff2f4cf60901"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Nov 04 17:44:09 2013 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Nov 25 17:25:45 2013 +0900"
      },
      "message": "Minor cleanups to NetdCallbackReceiver.onEvent.\n\n- Clean up identical error messages.\n- Fix the array length check for InterfaceAddressChange.\n\n[Cherry-pick of 59be800e7fe81842aa8c77b91319f58ab165983d]\n\nBug: 9180552\nChange-Id: Id871f481445b530c3ad749725f1548df0e3a1228\n"
    },
    {
      "commit": "416740ad4d9132005a71dc0883334e852235a18a",
      "tree": "4b71edee51111709fe1c1333b2edc4ed70cdcdcd",
      "parents": [
        "4be55a0eac092d79d7462ac6921505ebb628f428"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Oct 31 11:59:46 2013 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Nov 18 12:04:14 2013 +0900"
      },
      "message": "Pass DNS server info notifications to observers.\n\nThese are sent if the device receives IPv6 Router Advertisements\nwith DNS server configuration options. Currently, nothing listens\nto them; in a future change we will use them as IPv6 DNS servers.\n\nBug: 9180552\nChange-Id: I05000c0cd3867a68ab390102e8470b6912a9d3aa\n"
    },
    {
      "commit": "59be800e7fe81842aa8c77b91319f58ab165983d",
      "tree": "139113b3fee24556463e828ccbffd90a243a9216",
      "parents": [
        "f4e90eac87bc31611ddd80c46fc924d35ce66c1c"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Nov 04 17:44:09 2013 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Nov 04 18:30:20 2013 +0900"
      },
      "message": "Minor cleanups to NetdCallbackReceiver.onEvent.\n\n- Clean up identical error messages.\n- Fix the array length check for InterfaceAddressChange.\n\nBug: 9180552\nChange-Id: Id871f481445b530c3ad749725f1548df0e3a1228\n"
    },
    {
      "commit": "d08d6686c5e16cedc23cd9bc836a28d629b8622c",
      "tree": "a2ef9a87b326d3d5715fd0cb309fee5a78199ea8",
      "parents": [
        "8f7b859a7dffc1526a7e357c9d0ec6e1a7854da9",
        "94b518101c2b2587cb60664dde8931b11f154ec0"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Mon Oct 14 10:39:41 2013 -0700"
      },
      "committer": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Mon Oct 14 10:39:41 2013 -0700"
      },
      "message": "resolved conflicts for merge of 94b51810 to master\n\nChange-Id: Ida818f066b66c356a84c80e5eab0a4e2cf4ebd49\n"
    },
    {
      "commit": "94b518101c2b2587cb60664dde8931b11f154ec0",
      "tree": "bcb9426c5d2798982c6a9374670666de15b3bef2",
      "parents": [
        "09872a35cb09fc8dbe97d443d083d6c5b0948b90",
        "e0a2bdaf61a7a72e92d614f81f86e7fd441b38e4"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Fri Oct 11 14:33:18 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 11 14:33:18 2013 -0700"
      },
      "message": "am e0a2bdaf: am 32551ae5: Merge \"Fix infinite boot-loop bug in SM.\" into klp-dev\n\n* commit \u0027e0a2bdaf61a7a72e92d614f81f86e7fd441b38e4\u0027:\n  Fix infinite boot-loop bug in SM.\n"
    },
    {
      "commit": "632515b9d0960749ddb1636677d7f12f196d73f7",
      "tree": "4812bfb7f9de3d5e9851e4fb1fa5f11f4e224bb7",
      "parents": [
        "9dc7e12c67476d05e64822d3f019c4b7f46d253b"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Thu Oct 10 15:51:00 2013 -0700"
      },
      "committer": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Fri Oct 11 13:18:22 2013 -0700"
      },
      "message": "Fix infinite boot-loop bug in SM.\n\nBug:11064918\nIf the ContentResolver sync API is used with the empty (\"\")\nstring as a provider, the ContentService will throw an RTE.\nThis cl addresses all the entry points of the API that could\nallow this, as well as adds an ifEmpty check at the point of\nfailure.\nAlso removed RTE throws from public functions(no point in\ncrashing the phone).\n\nChange-Id: I57427d12a6cafb3e6d7a32ca0c10b05315b20580\n"
    },
    {
      "commit": "87e385effb106d1764abaf1c7d77ff3751b922dc",
      "tree": "588bfc527ef8521a9041a9c0ac6501dce9837836",
      "parents": [
        "6981a92433fc779aba9b347b7e5b99c8807a65c9",
        "aa947f15314a4239de91a1cd0bea085e3399d43e"
      ],
      "author": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Thu Oct 03 15:23:23 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 03 15:23:23 2013 -0700"
      },
      "message": "am aa947f15: am a9bce468: am 84742149: Merge \"Make EntropyMixer mix in output of Hardware RNG into Linux RNG.\"\n\n* commit \u0027aa947f15314a4239de91a1cd0bea085e3399d43e\u0027:\n  Make EntropyMixer mix in output of Hardware RNG into Linux RNG.\n"
    },
    {
      "commit": "aa947f15314a4239de91a1cd0bea085e3399d43e",
      "tree": "543cd13e3fdc13a1b1c1a5e2f70604b080bd6c19",
      "parents": [
        "3e64aa117ad52c71d9676761b8f6a6947cb7ac15",
        "a9bce46876d6f1f82727ab6922748fcc6b43c767"
      ],
      "author": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Thu Oct 03 15:21:08 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 03 15:21:08 2013 -0700"
      },
      "message": "am a9bce468: am 84742149: Merge \"Make EntropyMixer mix in output of Hardware RNG into Linux RNG.\"\n\n* commit \u0027a9bce46876d6f1f82727ab6922748fcc6b43c767\u0027:\n  Make EntropyMixer mix in output of Hardware RNG into Linux RNG.\n"
    },
    {
      "commit": "6ab3d20d3c2de01a342450d83103e9f5e89e670e",
      "tree": "49fd38c7387041ee8a3c127db75c8aa76241519e",
      "parents": [
        "1a07229bc2042676c866051938ebe35d9cded900"
      ],
      "author": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Thu Oct 03 13:23:13 2013 -0700"
      },
      "committer": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Thu Oct 03 15:07:37 2013 -0700"
      },
      "message": "Make EntropyMixer mix in output of Hardware RNG into Linux RNG.\n\nOn devices with Hardware RNG (HW RNG), this makes EntropyMixer\nperiodically (every three hours) read 512 bytes from HW RNG and mix\nthem into the Linux RNG.\n\nThis is done without increasing Linux RNG\u0027s entropy estimates to\navoid having to trust the quality of the HW RNG. This approach cannot\nreduce the quality of the Linux RNG output, but may increase it.\n\nChange-Id: Ifde851004301ffd41b2189151a64a0c5989c630f\n"
    },
    {
      "commit": "06485a7c6e3bbea1f427f345ac3a18b2346750e0",
      "tree": "ec25556c025afd966e155f67de4752abb7ad477a",
      "parents": [
        "df2dae01b065ef18b7de7f76b29a9857bf70f443"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Fri Jul 26 12:56:39 2013 -0700"
      },
      "committer": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Mon Sep 16 15:23:41 2013 -0700"
      },
      "message": "Pending op fix didn\u0027t merge properly from KLP-dev.\n\nManually merge in Cl c/342668. Add another test to ensure that it\nWAI.\n\nChange-Id: Iae603328d525cc71e4e31ad30a13384efc50f823\n"
    },
    {
      "commit": "86f4b37d196bb9a72a22f706f89f3066ab2bf287",
      "tree": "68e72f5089daa4509b76d4afbb329bcefba4f44c",
      "parents": [
        "5e3b1b36c72522796be738b749a72b07cf9aa9d9",
        "8ef2204c8f5f9744a2ff7abdbbf2d26a5ea02837"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Mon Sep 16 18:29:36 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 16 18:29:36 2013 +0000"
      },
      "message": "Merge \"Refactor SyncManager rename authority-\u003etarget\""
    },
    {
      "commit": "8ef2204c8f5f9744a2ff7abdbbf2d26a5ea02837",
      "tree": "017cb6032ce24a0d698dee5c0474af671a3f43bd",
      "parents": [
        "c0b9bba53a6b46ffc4f3bb488f692f46ba3a4c14"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Fri Jul 26 12:56:39 2013 -0700"
      },
      "committer": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Fri Sep 13 19:22:50 2013 -0700"
      },
      "message": "Refactor SyncManager rename authority-\u003etarget\n\nfix bug that was stopping any sync service sync from\nfrom taking place.\nChange-Id: Ib3f46d43be630d4196fbf0ca32da03b6e7a6a5b9\n"
    },
    {
      "commit": "123eeea6d62a80fb9660ad623fd378d2f2f0c904",
      "tree": "c76e62b22167f31bdcb6964bfffc69272981b7a1",
      "parents": [
        "317c602f0e03dd219c39495999049f853132feff",
        "e2d76fa8c6d0f5c3d1a73a3ec9756c4bc545806d"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Sep 11 17:23:29 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 11 17:23:29 2013 -0700"
      },
      "message": "am e2d76fa8: am cecccecc: Merge changes Ib1274847,I2eb2a1bf into klp-dev\n\n* commit \u0027e2d76fa8c6d0f5c3d1a73a3ec9756c4bc545806d\u0027:\n  Fix SDK build.\n  Request all tethering interfaces, fix corruption.\n"
    },
    {
      "commit": "e4984bea95a07dea0ef0259fefa1e52f0bbb1533",
      "tree": "6d59f9f1690c9a32493d86c8660e42284d9d85d8",
      "parents": [
        "ed903213e6d3d75d497498c9cf95aa8e74277a9e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Sep 10 21:03:27 2013 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Sep 10 21:03:30 2013 -0700"
      },
      "message": "Request all tethering interfaces, fix corruption.\n\nnetd now tracks statistics for tethered interfaces across tethering\nsessions, so switch to asking for all tethering stats.  (Currently\nwe\u0027re double-counting all tethering data, ever since it started\ntracking across sessions.)\n\nAlso catch OOME to handle corrupt stats files, which we then dump to\nDropBox and then start over.\n\nBug: 5868832, 9796109\nChange-Id: I2eb2a1bf01b993dd198597d770fe0e022466c6b9\n"
    },
    {
      "commit": "56dbf8f23677d28615e61ef2fbb0e738cca02528",
      "tree": "0b69d2fd85af218ef72ef39df30967519749aa1c",
      "parents": [
        "c213bdea26019acccfc835b9ab8d63ba2130c7f9"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Fri Jul 26 12:56:39 2013 -0700"
      },
      "committer": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Thu Sep 05 15:58:24 2013 -0700"
      },
      "message": "Fix broken javadocs\n\nChange-Id: Ibf7f2ed92919efd36fffa963447b1a443c0bb9db\n"
    },
    {
      "commit": "7421a01f18f34d554ca7a9fd987c4f96da2bdf2f",
      "tree": "0a7bc83740354382f5ddeef47f170bb7cfe79b54",
      "parents": [
        "5bc1ea4e4ae0133d4d5eaa4ac98cf4719effd032"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Aug 20 22:51:24 2013 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Fri Aug 23 18:30:19 2013 +0900"
      },
      "message": "Add a simple test for NetworkManagementService.\n\nFor now, this only tests network observers. It works by starting\nNetworkManagementService with a fake netd socket, feeding it\ninputs, and seeing if the appropriate observer methods are\ncalled.\n\nBug: 10232006\nChange-Id: I827681575642a4ee13ae48b81272521544b676bd\n"
    },
    {
      "commit": "ba35271e91648c9cde2bb606aaf2001282231b07",
      "tree": "833f8ec64cd9f1c853414580f3fadd7a41a9c3d1",
      "parents": [
        "2241d45c68739e5bdf187ba3325ee237ef143e21"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Tue Aug 13 15:53:31 2013 -0700"
      },
      "committer": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Fri Aug 16 12:01:22 2013 -0700"
      },
      "message": "Use pending.xml to persist sync ops.\n\nSupport pending ops by producing badly formed xml.\nfixed bug that stopped alarm manager from updating if the\nnext alarm time is in the past.\nUse new AlarmManager API for old AM behaviour - to set\nexact alarms.\n\nChange-Id: I57090f9c7155996298be7ec968a88f17ac1938a7\n"
    },
    {
      "commit": "ba530545f70e7aadad774987681091f9abbecb79",
      "tree": "3dbb33969e9916f7925b54bab29468f596a5af70",
      "parents": [
        "0ca981fe42c43a4b7c345f4a0a2b3b2a519be5da"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Tue Aug 06 17:28:03 2013 +0000"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Tue Aug 06 17:28:03 2013 +0000"
      },
      "message": "Revert \"Fix broken unit test\"\n\nThis reverts commit 0ca981fe42c43a4b7c345f4a0a2b3b2a519be5da.\n\nChange-Id: I67f5e7227a8a874158c4f0954e62a77a317f1edd\n"
    },
    {
      "commit": "0ca981fe42c43a4b7c345f4a0a2b3b2a519be5da",
      "tree": "b9f3530588a409fa62a3ec3f683c1fe0577583d5",
      "parents": [
        "df2cab2fc46c3f2c56f85dee1a19d0fa48cfd444"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Fri Aug 02 11:06:02 2013 -0700"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Fri Aug 02 12:33:00 2013 -0700"
      },
      "message": "Fix broken unit test\n\nChange-Id: I4aa0035233749f6d585c151329436439ae9b2921\n"
    },
    {
      "commit": "df2cab2fc46c3f2c56f85dee1a19d0fa48cfd444",
      "tree": "3dbb33969e9916f7925b54bab29468f596a5af70",
      "parents": [
        "474daa2b7838402a1ef81140a512613e1b37a54e"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Fri Aug 02 10:54:55 2013 -0700"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Fri Aug 02 10:54:55 2013 -0700"
      },
      "message": "Fix build breakage\n\nChange-Id: Ia684fb55db301fdadaa3aae93f82b2cdcfc200af\n"
    },
    {
      "commit": "ebe51fc0d860077245c44bfb00130be62da001e1",
      "tree": "9d60bdf605188b125c8b453d346dbb0362776d8c",
      "parents": [
        "8c80a476d966b23b117d12d8762a9611cddddfa3"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Fri Jul 26 13:23:29 2013 -0700"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Thu Aug 01 13:22:40 2013 -0700"
      },
      "message": "Add WorkSource capability to AlarmManager.\n\nChange-Id: I663ea3078d405f0fa667a04bdaa376ae6652e994\n"
    },
    {
      "commit": "fa77418134c6f1f80af225a78819f069e9c974fb",
      "tree": "b4fd04dcefae8302e8e209f3ca29275a79df93a5",
      "parents": [
        "7bfddb5434736a26fa9b32d7cd1741067169ae74"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Tue Jun 18 15:44:11 2013 -0700"
      },
      "committer": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Wed Jul 24 15:25:29 2013 -0700"
      },
      "message": "AnonymousSyncService \u0026 SyncRequest.\n\nChanges to the way bundles are parcelled broke SM,\nthis update writes out the bundle as xml. This circumvents\nthe need for parcel, and makes it easier to debug whats\nhappening.\nChange-Id: I6cd5d3a2eb80bfa5b3ae0c7f2d2ff91a65daaa34\n"
    },
    {
      "commit": "bc668ac4b7c54278ed20d8329eb80e0b54892dc7",
      "tree": "c1a446cc55c7119cc3418e42cab6c97749ae390a",
      "parents": [
        "d55e18eceac46160440054c6725b3461a1ccc1dd"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Sun Jul 21 02:01:34 2013 -0700"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Sun Jul 21 02:01:34 2013 -0700"
      },
      "message": "fix build\n\nChange-Id: Ie4bd7c3fe9320d22b7da2962e5e5a4abca510bd2\n"
    },
    {
      "commit": "3e07a89b2c7fd8ac67a83b08b583682840f8fa5c",
      "tree": "12a6151e9241aef2229bb1cb6703cad727c7a912",
      "parents": [
        "b4be694873d174b3b5d2ec7c341a907fe7087e9d"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 18 18:23:57 2013 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 18 18:23:57 2013 -0700"
      },
      "message": "Fix build \u0026 preserve DHCP scheduling as-is\n\nChange-Id: I4063b18532c476280f343658bf3641495e526ed4\n"
    },
    {
      "commit": "a8c7e3f86ab205a557c7b8cc1e8c6a61cec06f41",
      "tree": "6f2e80b8c1f75f80a88ca0638a215e080c5d5387",
      "parents": [
        "111704816128cc6cef9fa28a246e0c2a363523fe"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jul 16 13:43:41 2013 -0700"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jul 16 13:43:41 2013 -0700"
      },
      "message": "Fix the build - missed a renaming\n\nChange-Id: I0e85723647c0e5a6f6374e119f0fbd43db477ee0\n"
    },
    {
      "commit": "56cd646abeae51e806791f82ab0995fe047b1fe4",
      "tree": "b9d9f3c39d6364af9b0ac432e841cd91bf11be17",
      "parents": [
        "00d17f7aab54ef055d35da603dab5a7bae751876"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Jun 07 15:09:15 2013 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Jun 07 15:09:32 2013 -0700"
      },
      "message": "Avoid logging sensitive data.\n\nWhen building commands to send across NativeDaemonConnector, scrub\nsensitive arguments to prevent them from being logged.\n\nBug: 8609800\nChange-Id: I84b16791749264a010f7e59f9918f68d71bac6b9\n"
    },
    {
      "commit": "31c0959b1a04f4e17d7528a6e4a9296701e3ade7",
      "tree": "4d8727ec527774111b5f60191760d537cd2029e6",
      "parents": [
        "9e8ba8f27316c793578e68fcc6632a6ea6240f4a"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sat Mar 30 19:00:30 2013 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sat Mar 30 19:00:30 2013 -0700"
      },
      "message": "Fix test\n\nChange-Id: I329ceff03d3707e10c2e4eabfb8e6ea61082ae6d\n"
    },
    {
      "commit": "9d034debdd7226ea33530143710fcb962144be22",
      "tree": "b183e9aedc2fab741b9ef5d0a83b4bf85ae4d354",
      "parents": [
        "eff1151d6c66bb7ab4fcf1a2ce0f92c2770ae886",
        "24948d3ca7ff7fa70ee85e9aa7530239d7b482b2"
      ],
      "author": {
        "name": "Geremy Condra",
        "email": "gcondra@google.com",
        "time": "Thu Mar 28 16:55:03 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 28 16:55:03 2013 -0700"
      },
      "message": "am 24948d3c: am 946a5c91: Merge \"Save off the seinfo value with packages.list.\"\n\n* commit \u002724948d3ca7ff7fa70ee85e9aa7530239d7b482b2\u0027:\n  Save off the seinfo value with packages.list.\n"
    },
    {
      "commit": "7039738f813f8e38e4857d439b7e46f3c877794d",
      "tree": "a8f44a7149da70b96546e6dddf4981e53d841395",
      "parents": [
        "bf20aa767e7a56b3c1e05c6d2a8b140fd1c18dd0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 27 17:19:35 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 27 17:19:35 2013 -0700"
      },
      "message": "Fix build.\n\nChange-Id: I38a25dc63107fc907a520169e1b58f00e51dbb9d\n"
    },
    {
      "commit": "05191053545065c9c71afae173d3ab42a2d947fa",
      "tree": "98baa98585fbfd80ae6b4534f85c20ff019f9e3f",
      "parents": [
        "df5e9fe1819099097901641b1267374ca0bbc319"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Mar 26 15:32:29 2013 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Mar 26 15:32:29 2013 -0700"
      },
      "message": "Match tests to new API.\n\nChange-Id: I9a537a437c721ae64d9307b889b9de5d5429670f\n"
    },
    {
      "commit": "4a4537331be12e7ac11066931c845ec9d8064571",
      "tree": "baaba25a736143268efd38aa79910f7cb9932e95",
      "parents": [
        "2aee33c1cdf89c0754bb660cd2e0ec95a007d4a8"
      ],
      "author": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Tue Mar 26 08:21:37 2013 -0400"
      },
      "committer": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Tue Mar 26 08:45:28 2013 -0400"
      },
      "message": "Save off the seinfo value with packages.list.\n\nPatch adds the seinfo label per package to the file.\nThis is of particular interest to the run-as program\nwhich uses the seinfo tag to correctly label the\napp security context before running the shell.\n\nChange-Id: I9d7ea47c920b1bc09a19008345ed7fd0aa426e87\nSigned-off-by: rpcraig \u003crpcraig@tycho.ncsc.mil\u003e\n"
    },
    {
      "commit": "e16713597661c326d2bb6586a8b13e27520c4227",
      "tree": "06db53def925439275cadc813996d99130805239",
      "parents": [
        "45b9a5bb93569ca49bbd44f7a518091371687f96"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Fri Mar 08 12:30:44 2013 -0800"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Fri Mar 08 16:41:25 2013 -0800"
      },
      "message": "Always specify an interface for host routes.\n\nChange-Id: I05b4d87e7d7e8237c6f4a70f1fedae00f416f581\n"
    },
    {
      "commit": "79619ddbfe7367e11dd17d848b179877350b7b8e",
      "tree": "b714e48fe02e74ceaa4661f498b561cacd95dce3",
      "parents": [
        "cdac497289fd2c39a352f6167dae3f77cc608cb8"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Mar 04 13:05:32 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Mar 04 13:46:45 2013 -0800"
      },
      "message": "EntropyMixer: Write entropy at shutdown / reboot / power\n\nWrite out entropy if we\u0027re shutting down or rebooting,\nor if someone plugs in the power.\n\nBug: 8312061\nChange-Id: Id9a48064a7bdfe6c05a9227ea95a1bdbd0e9b8ae\n"
    },
    {
      "commit": "6794458f8626c3be27eac3db3a5c89d94f132675",
      "tree": "67840d15784013dede06dc3e40306c35e30d4be7",
      "parents": [
        "ff4fcdb98c9575642c48f1daeafff4b257769e81"
      ],
      "author": {
        "name": "Maggie Benthall",
        "email": "mbenthall@google.com",
        "time": "Fri Feb 22 14:58:27 2013 -0500"
      },
      "committer": {
        "name": "Maggie Benthall",
        "email": "mbenthall@google.com",
        "time": "Mon Feb 25 12:45:14 2013 -0500"
      },
      "message": "Add location sharing toggle user restriction.\n\nAnd add support for respecting it.\n\nChange-Id: Ia5cf9134c5f5741c3f55afadbe54f862da7bfe5b\n"
    },
    {
      "commit": "3671b1e910e4d297bebcd3ceaa2682bfb4b1f4a1",
      "tree": "4bf1c711e3c819d5b063450c68ca4c34ecf2eb87",
      "parents": [
        "736ef1e9dedbdd0c24e27f170034f2f869fd083f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Jan 31 17:22:26 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 19 15:28:19 2013 -0800"
      },
      "message": "Migrate to using Mockito directly.\n\nChange-Id: I1fcc5d1a780f5831bd6685f0735d4c0c6d245735\n"
    },
    {
      "commit": "20949a76fee62e89d7dc22858a74469efa14f61d",
      "tree": "45de9ef9d5bf8f7e386d3ab2363a17e4520deb90",
      "parents": [
        "636c61ed41f08b4a8de11ab9146903a8125a4aa0"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Feb 11 15:47:30 2013 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Feb 11 15:47:30 2013 -0800"
      },
      "message": "Fix UserManager test\n\nChange-Id: I927ffdda3dd5f69dc136e65c8069f2e480badfe9\n"
    },
    {
      "commit": "e4cf73437a18c1444055f88a1fcc0d146ec23ac5",
      "tree": "04e5ae7765f4177fde594ec37fa65fc00b3cb507",
      "parents": [
        "64d41d7391e57886978e94e86cf01a167226dbfe"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Dec 17 11:12:09 2012 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Feb 08 15:52:47 2013 -0800"
      },
      "message": "Starting point for User Restrictions API\n\nRestrictions saved as key/value pairs, mostly booleans right now\nbut might be expanded to other types later.\n\nSave and restore restrictions in the user manager service.\nEnforce some of the restrictions at the framework level. Some\nare enforced (also) at the app level, such as in Settings.\n\nChange-Id: Id11ffe129cb6a177e094edf79635727388c26f40\n"
    },
    {
      "commit": "f265ea9d8307282ff1da3915978625a94fc2859e",
      "tree": "4e92b5de30239c1808a395cb49c9b17fe28ccffb",
      "parents": [
        "7a4ecc957d437ad4914988edc7593570f1e43f79"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jan 31 15:00:51 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 01 15:14:29 2013 -0800"
      },
      "message": "App ops: vibration, neighboring cells, dialing, etc.\n\nImprove handling of vibration op, so that apps are\nbetter blamed (there is now a hidden vibrator API that\nsupplies the app to blame, and the system now uses this\nwhen vibrating on behalf of an app).\n\nAdd operation for retrieving neighboring cell information.\n\nAdd a new op for calling a phone number.  This required\nplumbing information about the launching package name through\nthe activity manager, which required changing the internal\nstartActivity class, which required hitting a ton of code that\nuses those internal APIs.\n\nChange-Id: I3f8015634fdb296558f07fe654fb8d53e5c94d07\n"
    },
    {
      "commit": "d4d9364019ed071509213b9ce772f4a5904d2847",
      "tree": "e1b998350f4dcf680c1c981ca019acad6793e4d2",
      "parents": [
        "e8ae8b8982da37ca77bbaed8e98349d51dec824a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 29 16:12:48 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 29 16:12:48 2013 -0800"
      },
      "message": "Maybe fix build.\n\nChange-Id: Ibad8edb15e7cc332d6c29958a386d32a96f4e755\n"
    },
    {
      "commit": "56dc0e02fc0e519a86c5efefe0143001d2563d43",
      "tree": "3d3e66ab50897acf3a704002b6f6ecc4125b9ec0",
      "parents": [
        "6c6317a8ca7a5233bf250d2428cfa29ee859ba02",
        "1539905b4621f94b0a1a215407a71034da806247"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jan 23 01:35:21 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 23 01:35:21 2013 +0000"
      },
      "message": "Merge \"Tests to assert correct January behavior.\""
    },
    {
      "commit": "1539905b4621f94b0a1a215407a71034da806247",
      "tree": "173cf31d0f39b5a7500663d326f43665d8a20eda",
      "parents": [
        "9003007d35c6ae1cdeac4ca831a036292b7089e9"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jan 15 14:15:53 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jan 22 17:32:53 2013 -0800"
      },
      "message": "Tests to assert correct January behavior.\n\nChange-Id: I162102b6f1b892b79e2f5b96cb0184abb85d00bc\n"
    },
    {
      "commit": "ca6486e7f579fa885b6213513f26ce2ca49f873b",
      "tree": "2bd8579677f10c991538b1dd3ab9dea656b1dff2",
      "parents": [
        "707a71e39e8e3bf284422265b680b73a7c63debf"
      ],
      "author": {
        "name": "Sasha Levitskiy",
        "email": "sanek@google.com",
        "time": "Mon Jan 14 16:59:33 2013 -0800"
      },
      "committer": {
        "name": "Sasha Levitskiy",
        "email": "sanek@google.com",
        "time": "Mon Jan 14 16:59:33 2013 -0800"
      },
      "message": "Removed Throttle Manager as obsolete\n\nChange-Id: I63e8514f34c880d0badaab33a347f54a80c84da6\n"
    },
    {
      "commit": "03cb98aecfeef0b0894f69987f8b4a15c02501f3",
      "tree": "9bc900ba51fb0099160983ff70e758d1bc3d7112",
      "parents": [
        "e03c17f1cb50a7869ef33406a2be275fdb040ea1"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Dec 11 11:14:58 2012 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Dec 11 11:15:25 2012 -0800"
      },
      "message": "Move Observer test to servicetests\n\nChange-Id: Ib3493af4eb3185db79004a3cad5473161ed51f71\n"
    },
    {
      "commit": "e03c17f1cb50a7869ef33406a2be275fdb040ea1",
      "tree": "a6ab13533af6f621f67003e57c0ccddb97cff89d",
      "parents": [
        "28db1975802374985f2cb8bf4aedc7f5a9e81a22",
        "814a8d35ae11b70027e0e476ca1c0bb589106b4d"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Dec 11 11:08:06 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 11 11:08:06 2012 -0800"
      },
      "message": "Merge \"Move one more test.\""
    },
    {
      "commit": "814a8d35ae11b70027e0e476ca1c0bb589106b4d",
      "tree": "ddebfe69aa178ba17e80be807253f30bb7447858",
      "parents": [
        "16db3c72c09bb03b6d418893686e837fa89b601b"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Dec 11 11:06:21 2012 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Dec 11 11:06:21 2012 -0800"
      },
      "message": "Move one more test.\n\nChange-Id: Iea0e0b5727746f2332db2ab1c1b216326eb50f13\n"
    },
    {
      "commit": "8ff9a156c04c24458d94c716a64a5b7327f0e987",
      "tree": "3d0c2ad0d1f6b1627dc2983f9a612e471f443efa",
      "parents": [
        "16db3c72c09bb03b6d418893686e837fa89b601b"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Dec 11 10:42:09 2012 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Dec 11 10:42:09 2012 -0800"
      },
      "message": "Fix build. Forgot to move this test.\n\nChange-Id: I06aab8ec6e2dac86b65bbeed3587444260fec2e8\n"
    },
    {
      "commit": "7a96c39c510923ef73bbb06ab20109f0168b8eb1",
      "tree": "70fd480a814add0fdcb274540e1f421806020f24",
      "parents": [
        "151cb90c6093d5b4371b9367b507f8aa7c1a4370"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Nov 15 14:01:46 2012 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Dec 11 09:50:50 2012 -0800"
      },
      "message": "Move lingering services to services.jar.\n\nThis helps reduce the pressure on framework.jar, and makes it clear\nthat it should only be used by the system_server.\n\nBug: 7333397\nChange-Id: I0858904239535380fbf30562b793e277d8c3f054\n"
    },
    {
      "commit": "b2e18e91ec1f9c521b69e44761db2805e3a61ba3",
      "tree": "aa0614466d13b171055beefc5f56edc67aea5ffc",
      "parents": [
        "5007dea96e357e11316f5c9a4aea1123ba9dd4c1",
        "b443ddbbc7f1c7ed2d30310f80323cd4a5bf3e8d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Nov 29 14:26:45 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 29 14:26:45 2012 -0800"
      },
      "message": "am b443ddbb: am 2c41c4a2: Fix build.\n\n* commit \u0027b443ddbbc7f1c7ed2d30310f80323cd4a5bf3e8d\u0027:\n  Fix build.\n"
    },
    {
      "commit": "b443ddbbc7f1c7ed2d30310f80323cd4a5bf3e8d",
      "tree": "5ad15a453e1f23393a639477e3c9e1b3e6c8e7b4",
      "parents": [
        "bac91ebdd0ae310a6b92a8b4bb91613025238356",
        "2c41c4a2766dcce506fc0e9e361fc8198553293c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Nov 28 19:48:57 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 28 19:48:57 2012 -0800"
      },
      "message": "am 2c41c4a2: Fix build.\n\n* commit \u00272c41c4a2766dcce506fc0e9e361fc8198553293c\u0027:\n  Fix build.\n"
    }
  ],
  "next": "2c41c4a2766dcce506fc0e9e361fc8198553293c"
}
