)]}'
{
  "log": [
    {
      "commit": "37a37f445cbcd64376af153dd79ea2a123d9405d",
      "tree": "7b2ae5f75d4c6bff056472da64752473e1d211f9",
      "parents": [
        "82d53ce283b7c275624d66e9bf20cfe2614af5c4"
      ],
      "author": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Tue Aug 14 15:21:02 2012 -0700"
      },
      "committer": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Mon Aug 20 10:04:12 2012 -0700"
      },
      "message": "add wireless charger support\n\nbug: 6879638\n\n- add new enum value BATTERY_PLUGGED_WIRELESS\n- check for sys online file with contents \"Wireless\"\n\nChange-Id: I22dc3c40f50573c98643e7b5cbcb237d0216530d\n"
    },
    {
      "commit": "ce777171fce4911f383e838d9019d84520426456",
      "tree": "c1ee7c19877743f18c34b8731f1b2ef2456ba289",
      "parents": [
        "f337a89b4d6f6fd0a49b6edd7f895f06cb96d28b"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sat Aug 18 22:13:07 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sat Aug 18 22:13:07 2012 -0700"
      },
      "message": "Fixed static wallpaper for multi-user\n\nEarlier assumption that systemui was running in the system process\ndoes not hold true, so running static wallpaper in its own user\nsandbox.\n\nBug: 7008230\nChange-Id: I32a128e6bbd8efa7006286330e970bafcf37f05a\n"
    },
    {
      "commit": "fc6e0ca07e599de5229582efe29c4f78eabaa3b8",
      "tree": "4e400dc105a8f28a7bba9a09b4ead350e4b2733b",
      "parents": [
        "998ca2301c695c02966cc169ce2e407054dc7c5c"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 17 17:07:14 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 17 17:07:14 2012 -0700"
      },
      "message": "Fix build part 2\n\nChange-Id: I3b4ed430f214468a22d3b3aaf3605e570cfd0ed1\n"
    },
    {
      "commit": "7fdaa3976d6082bd7e96329240bda478c08b751e",
      "tree": "d9b3d459a3d19883dbfba71c9bc70e447251a3c5",
      "parents": [
        "029675e5ad8737a8a097c17d216afb3f11f0b12c",
        "a3f133afe885f9e005dfc0584cb7b3b90f75f665"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 17 16:19:18 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 17 16:19:19 2012 -0700"
      },
      "message": "Merge \"Save preferred activity info with user id.\" into jb-mr1-dev"
    },
    {
      "commit": "029675e5ad8737a8a097c17d216afb3f11f0b12c",
      "tree": "1a0332de73ad4bd4737c137e80339d083a0626bb",
      "parents": [
        "2b7a0d00426218523629e4e8dd2e9197d445c09b",
        "7300dbeba06a85948d63e480da36258d78840b30"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 17 15:54:18 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 17 15:54:18 2012 -0700"
      },
      "message": "Merge \"Fix launching activity from a pending intent\" into jb-mr1-dev"
    },
    {
      "commit": "2b7a0d00426218523629e4e8dd2e9197d445c09b",
      "tree": "337da69dba57f48b5c6e96fb6c382f658cf765ad",
      "parents": [
        "4035f5a7c191a68bc9a5912ce44c43c82e9e5dbf"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 17 15:09:44 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 17 15:25:21 2012 -0700"
      },
      "message": "Fix addGeofence() and addProximityAlert().\n\nNeed to clear the callers identity before calling into geofence manager\nbecause it in turn calls fused location API\u0027s.\n\nChange-Id: I7993b0b8b2a947ff93c37a7c9d29ca0e7c95f9a8\n"
    },
    {
      "commit": "4035f5a7c191a68bc9a5912ce44c43c82e9e5dbf",
      "tree": "df96aa5f4a8a2d60d872a17024d89944ece40d60",
      "parents": [
        "81c304b99d920e8d66ac16332489d78ff7162e12"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 17 14:43:49 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 17 15:25:16 2012 -0700"
      },
      "message": "Port location blacklist code to MR1.\n\nI had to re-do this change for MR1 because LocationManagerService changed\nso much. Here is the original change description:\n\nAdd package-name-prefix blacklist for location updates.\n\nThe Settings.Secure value locationPackagePrefixBlacklist and\nlocationPackagePrefixWhitelist contains comma seperated package-name\nprefixes.\n\nLocation \u0026 geo-fence updates are silently dropped if the receiving\npackage name has a prefix on the blacklist. Status updates are\nnot affected. All other API\u0027s work as before.\n\nA content observer is used so run-time updates to the blacklist\napply immediately. There is both a blacklist and a whitelist.\nThe blacklist applies first, and then exemptions are allowed\nfrom the whitelist. In other words, if your package name prefix\nmatches both the black AND white list, then it is allowed.\n\nBug: 6986553\nChange-Id: I1e151e08bd7143e47db005bc3fe9795076398df7\n"
    },
    {
      "commit": "7300dbeba06a85948d63e480da36258d78840b30",
      "tree": "0b236adce2e1ed2679a56e098990ccf66e6eac29",
      "parents": [
        "81c304b99d920e8d66ac16332489d78ff7162e12"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 17 14:17:57 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 17 14:19:57 2012 -0700"
      },
      "message": "Fix launching activity from a pending intent\n\nThe creator of the pending intent is the user on which the activity\nshould be launched.\n\nChange-Id: I733326ed8a5784985ac93a84ce91de4dda17c730\n"
    },
    {
      "commit": "81c304b99d920e8d66ac16332489d78ff7162e12",
      "tree": "cc73962e5561ac1a15b7a51936996fd9f13b452d",
      "parents": [
        "5d683a013114f38f503e6f7194400f60f35bfa5a",
        "1ab36c1d83969bab7ef782af11fa1673993b76fa"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 17 13:58:17 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 17 13:58:17 2012 -0700"
      },
      "message": "Merge \"Send USER_SWITCHED with the correct permission\" into jb-mr1-dev"
    },
    {
      "commit": "1ab36c1d83969bab7ef782af11fa1673993b76fa",
      "tree": "f386b9e2c95fa5c9edabdf304ff706ee47d215df",
      "parents": [
        "9c38d6e52bb71671c6f034a10b6751a1569c9ee0"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 17 13:55:02 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 17 13:55:02 2012 -0700"
      },
      "message": "Send USER_SWITCHED with the correct permission\n\nForgot to change this from MANAGE_ACCOUNTS to MANAGE_USERS.\n\nChange-Id: Ib07d2ac84c19cef278a0e564676b6200e0f97dd1\n"
    },
    {
      "commit": "a3f133afe885f9e005dfc0584cb7b3b90f75f665",
      "tree": "3807ce789848ee176459f2acec9f2dfbad3d4b86",
      "parents": [
        "9c38d6e52bb71671c6f034a10b6751a1569c9ee0"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Aug 09 17:11:28 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 17 13:32:02 2012 -0700"
      },
      "message": "Save preferred activity info with user id.\n\nSo each user can have their own set of intent resolution preferences.\n\nResolverActivity now launches the activity on the correct user, and\npersists the preference for the correct user.\n\nBug: 6961905\nChange-Id: I6d3a8a9af89bc649277d4fc8d0f367ee123f8392\n"
    },
    {
      "commit": "d2ae85d41ec1651dd1bf4c33fe31833ba5c5cff5",
      "tree": "a13ab2da158404c627977d9316501332cd863dd8",
      "parents": [
        "aeca6898041437a7e2ba68c1421b9be90669154d",
        "832cb229cd748505c90f74ae8154fc3557d61a73"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Fri Aug 17 13:03:15 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 17 13:03:15 2012 -0700"
      },
      "message": "Merge \"Adding a thumbnail scale down animation\" into jb-mr1-dev"
    },
    {
      "commit": "aeca6898041437a7e2ba68c1421b9be90669154d",
      "tree": "60fe7de113a79ffddfdaeaac1e3e72b95188e620",
      "parents": [
        "79af1dd54c16cde063152922b42c96d72ae9eca8",
        "f2033e473aea4bfd0152feee51129fc4748e6f79"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 17 11:57:52 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 17 11:57:52 2012 -0700"
      },
      "message": "Merge \"Fix regression from location changes: GPS battery tracking.\" into jb-mr1-dev"
    },
    {
      "commit": "f2033e473aea4bfd0152feee51129fc4748e6f79",
      "tree": "15fa6161d7889dc4c69dba4f04c8dc86a0f96012",
      "parents": [
        "2ff0c048446c47f9cb995def2a6d8cc5177533a2"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 17 11:55:10 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 17 11:56:39 2012 -0700"
      },
      "message": "Fix regression from location changes: GPS battery tracking.\n\nThe client UID list wasn\u0027t being saved, so we never removed\nclient UID\u0027s. As a result apps get blamed for GPS even when\nthey are no longer using it.\n\nBug: 7007314\nChange-Id: Idff3b7c8c0ee87b99c9bdd7bd20d8391d0b1ac0f\n"
    },
    {
      "commit": "79af1dd54c16cde063152922b42c96d72ae9eca8",
      "tree": "142abf0037d20841712e88d65febcbbd92dd5561",
      "parents": [
        "f1b995f9d049cb5c7225b3b17f09369237a83ca2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 16 16:42:52 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 17 10:36:08 2012 -0700"
      },
      "message": "Switch public APIs to use new UserHandle class for identifying users.\n\nGets rid of \"yet another integer\" confusion.\n\nChange-Id: Id07ea7307aea7c62f0087c6663a1f1c08e2e5dee\n"
    },
    {
      "commit": "2a00329c6d55c6cd9166e01963d7410e95d80d21",
      "tree": "a33ab8060e095dd7b9a79962f7c3bf506d6008b7",
      "parents": [
        "76b858e3794f652c4af2323504787aebbbb7e89a"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Aug 14 18:25:45 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 17 09:06:10 2012 -0700"
      },
      "message": "UserHandle to UserSerialNo mapping\n\nUse AtomicFile for usermanager files.\n\nAdded a MANAGE_USERS permission that apps (signature permission) can use\nto create/query/modify/remove users.\n\nChange-Id: I5cf232232d0539e7508df8ec9b216e29c2351cd9\n"
    },
    {
      "commit": "1f3f128ad1744dfbe4108857f322a805b1dc5eb7",
      "tree": "69ddf22ac5711d9e47664e66723253deed4a0fc1",
      "parents": [
        "2ff0c048446c47f9cb995def2a6d8cc5177533a2",
        "4e31c4fffbc42b4c2b5dca6431cfeef9e078f5b4"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Thu Aug 16 18:05:31 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 16 18:05:32 2012 -0700"
      },
      "message": "Merge \"Add javadoc for new location API\u0027s.\" into jb-mr1-dev"
    },
    {
      "commit": "4e31c4fffbc42b4c2b5dca6431cfeef9e078f5b4",
      "tree": "e1e5a1df577872de6f947623cdccfe50062cb521",
      "parents": [
        "74fa7eabda3d0c1a85e0b568e3fc4230ed4fe7a4"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Mon Aug 13 19:35:39 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Thu Aug 16 17:59:34 2012 -0700"
      },
      "message": "Add javadoc for new location API\u0027s.\n\nChange-Id: If15024ee88421c07ba3a174747774fc451fd002e\n"
    },
    {
      "commit": "9a994b5350731b8169a9b25463f57266ee2988fb",
      "tree": "670fdf9ade80e54995c73f7a80a023ff9836fa79",
      "parents": [
        "13c589b66c47aa4d988eecce9a12c39d580939c9",
        "050c87f87e2a48c7bc90f5b15fb6e4e37e667286"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 16 16:43:20 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 16 16:43:20 2012 -0700"
      },
      "message": "am 050c87f8: am a950daf5: Merge changes Ieb566a2a,I953057cd\n\n* commit \u0027050c87f87e2a48c7bc90f5b15fb6e4e37e667286\u0027:\n  Use Libcore\u0027s stat instead of FileUtils#getFileStatus\n  Use Libcore.os.stat instead of FileUtils\n"
    },
    {
      "commit": "050c87f87e2a48c7bc90f5b15fb6e4e37e667286",
      "tree": "814988aae175fa4081aa6d53a91161608cc3646f",
      "parents": [
        "b18bcf13fd47102a2527e599cde0b1d59ab7c51e",
        "a950daf5c14a0009c2c62e9c3e0e8d51eb0cf7d9"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 16 16:33:40 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 16 16:33:40 2012 -0700"
      },
      "message": "am a950daf5: Merge changes Ieb566a2a,I953057cd\n\n* commit \u0027a950daf5c14a0009c2c62e9c3e0e8d51eb0cf7d9\u0027:\n  Use Libcore\u0027s stat instead of FileUtils#getFileStatus\n  Use Libcore.os.stat instead of FileUtils\n"
    },
    {
      "commit": "13c589b66c47aa4d988eecce9a12c39d580939c9",
      "tree": "62da402e6e794134566c3635fdbe0c1a144ba998",
      "parents": [
        "cc48c144bb0c15e003d1b9469c87a2c132ea6308"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 16 16:20:54 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 16 16:26:54 2012 -0700"
      },
      "message": "Animate brightness with electron beam.\n\nAlso added an internal flag to control whether the electron beam\non animation is used.  It\u0027s on for now but we might want to\nturn if off if we can\u0027t get the HAL to provide the\nnecessary screen on synchronization on all devices.\n\nChange-Id: Iaa3cfa0fd61de10174e68351e4db890eff2d2918\n"
    },
    {
      "commit": "520ee7bcadafdc5768fa8fc8890199ebe29886da",
      "tree": "6ed0a3d41ecdeaa926bbe8bcc77c24dba2fdfa7d",
      "parents": [
        "3931f6b3ffd30b53b742bbb127ba8438bef44fa0",
        "a2e8365cc883de0d3e56e9f4af350ecfe1b8fc4c"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@android.com",
        "time": "Thu Aug 16 15:32:52 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 16 15:32:52 2012 -0700"
      },
      "message": "am a2e8365c: am 9b0da58e: Merge \"Introduce a restorecon JNI binding.\"\n\n* commit \u0027a2e8365cc883de0d3e56e9f4af350ecfe1b8fc4c\u0027:\n  Introduce a restorecon JNI binding.\n"
    },
    {
      "commit": "a2e8365cc883de0d3e56e9f4af350ecfe1b8fc4c",
      "tree": "402949d2d3cce35eceaf665ca547deb6a106d745",
      "parents": [
        "617ccc081f18f563aa953556c22ace10a1998f34",
        "9b0da58e3a30b760de37138cdd51d20f269c383e"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@android.com",
        "time": "Thu Aug 16 15:29:41 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 16 15:29:41 2012 -0700"
      },
      "message": "am 9b0da58e: Merge \"Introduce a restorecon JNI binding.\"\n\n* commit \u00279b0da58e3a30b760de37138cdd51d20f269c383e\u0027:\n  Introduce a restorecon JNI binding.\n"
    },
    {
      "commit": "786cbcacd2efbd94476eb05a4d5b77211f20d434",
      "tree": "503b514a488b8e5cdb91e198fea752972eb06f25",
      "parents": [
        "d2fb6e99bda1ae607b5dfbb68905030f2133f8e8"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 16 11:10:58 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 16 15:27:55 2012 -0700"
      },
      "message": "Use Libcore.os.stat instead of FileUtils\n\nPackageManagerService just needed to know the owner for this file, so\njust use stat instead so we can remove the old JNI code.\n\nThis is the last user of FileUtils#getPermissions so just remove the\nFileUtils method as well.\n\nChange-Id: I953057cd6b9de4410f33b6f22e4bddff02fe2988\n"
    },
    {
      "commit": "60020e2fa3dd31280ccec91029113f88ee5338c8",
      "tree": "2c968e040ec8c341db043ef3c41239c3a707904d",
      "parents": [
        "242143904800e0fe145977cd8880974545a166a5",
        "74fa7eabda3d0c1a85e0b568e3fc4230ed4fe7a4"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Thu Aug 16 15:23:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 16 15:23:11 2012 -0700"
      },
      "message": "Merge \"Improve coarse locations.\" into jb-mr1-dev"
    },
    {
      "commit": "74fa7eabda3d0c1a85e0b568e3fc4230ed4fe7a4",
      "tree": "aaf46ec024fa88f5172c39cfb46a0f8bf8c4a877",
      "parents": [
        "08ca1046fe4f1890f91241f8d082a024ef6cfd93"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Mon Aug 13 19:36:38 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Thu Aug 16 15:22:24 2012 -0700"
      },
      "message": "Improve coarse locations.\n\nFix a couple of bugs, and modify the behavior of the random offset.\n\nThe random offset now slowly changes over time, to mitigate against\napplications averaging out the offset over time while at a\ngrid boundary.\n\nChange-Id: Iecffff29145b8c2b30d1eca1662cf9d3e8cff756\n"
    },
    {
      "commit": "9b0da58e3a30b760de37138cdd51d20f269c383e",
      "tree": "a13dce4b8868e06d94996e0a895487fcf065e156",
      "parents": [
        "1090f7023abefc448a492e143f76f9e0925fd6ee",
        "554cb0c290406f5bba34908489db5382a69d0a9a"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@android.com",
        "time": "Thu Aug 16 14:38:30 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 16 14:38:30 2012 -0700"
      },
      "message": "Merge \"Introduce a restorecon JNI binding.\""
    },
    {
      "commit": "c584b65b2093396c9a0c9303dab6ff6cb81ac315",
      "tree": "1cb29ffba0fa43c4fcb9ebe6603c5891853a36f2",
      "parents": [
        "a579f7926af72597f1c11c5df0486253d5d2c435",
        "5b1ada2562c17921adf6a62ea62bcb445160983c"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Aug 16 14:32:38 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 16 14:32:39 2012 -0700"
      },
      "message": "Merge \"Multi-user external storage support.\" into jb-mr1-dev"
    },
    {
      "commit": "ee98610f1af9c12fcb89522cf1795470bec60938",
      "tree": "da0101f23364bf5e3d450e3c2a25114b169546be",
      "parents": [
        "c40771a90d348b59ce0ffb8654f2d0cde39d7384",
        "122415f5c813408fe2c7b81e33144f2beff9c3d5"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Aug 16 13:43:14 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 16 13:43:14 2012 -0700"
      },
      "message": "Merge \"Set the brightness to zero on screen-off\" into jb-mr1-dev"
    },
    {
      "commit": "122415f5c813408fe2c7b81e33144f2beff9c3d5",
      "tree": "c2a0d1efabdbc596140498093bbdcb6ca0e7e8d6",
      "parents": [
        "ca34bcf6746454c561b0c07ca5c6e42bd4a73e9e"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Aug 16 12:47:21 2012 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Aug 16 12:48:28 2012 -0700"
      },
      "message": "Set the brightness to zero on screen-off\n\nFixes b/6996990\n\nIdeally, the HWC HAL should turn off the backlight when the display is turned\noff.  This patch enforces this at the PowerManager, which can guard against\nerrant HWC implementations.\n\nChange-Id: Ibb826a02871c983f8a68034d010e68abe9c5c1d5\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8",
      "tree": "893430514916fc74f4fd008dbcb457c2dd317989",
      "parents": [
        "ca34bcf6746454c561b0c07ca5c6e42bd4a73e9e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 16 10:48:27 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 16 12:46:38 2012 -0700"
      },
      "message": "Rename UserId to UserHandle.\n\nThis is the start of turning this into a formal public API.\n\nChange-Id: I5786d2c320f1de41a06ed5d0f65adb68967287a0\n"
    },
    {
      "commit": "7c964e78993ab1bc93c079e4f75b22ce1ebdec98",
      "tree": "223bd71373576e787509ffb07df12c5078d916d9",
      "parents": [
        "e663975055eb1dc0a0da5efffc3c92312b15498e",
        "1a30b55036c2279d72ba69cb1107ec5f6f40d5e9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 16 02:06:39 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 16 02:07:27 2012 -0700"
      },
      "message": "Merge changes I39804ee6,I6a5a7ea2 into jb-mr1-dev\n\n* changes:\n  Use spline interpolation for auto-brightness.\n  Add FloatMath.hypot.\n"
    },
    {
      "commit": "e663975055eb1dc0a0da5efffc3c92312b15498e",
      "tree": "b184d5bff25f7a8aecb765593576a5881adf3f74",
      "parents": [
        "228916713db16dd536a8f3d7256b5726a2eaeb2b",
        "06565b64de1953fc9534f789b2e8b8fd70758979"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 16 02:06:18 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 16 02:06:18 2012 -0700"
      },
      "message": "Merge \"Improve auto-brightness debounce.\" into jb-mr1-dev"
    },
    {
      "commit": "1a30b55036c2279d72ba69cb1107ec5f6f40d5e9",
      "tree": "32fd9c82689d3d41703da8eb01880fcbe2aa6f34",
      "parents": [
        "270e3381e7053c3b15aa8f508c9df9d98032cd62"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 16 01:31:11 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 16 01:45:10 2012 -0700"
      },
      "message": "Use spline interpolation for auto-brightness.\n\nStrictly speaking, this is a change in behavior for all products.\nInstead of using discrete zones, they will all now use spline\ninterpolation.  We could make this behavior configurable\nbut there seems to be little point to it.  The range of brightness\nvalues used will be more or less the same as before, it\u0027s just\nthat what used to be the brightness value for all levels within\na particular zone now becomes the brightness value for the\nhighest level in that zone and lower values are used for lower\nlevels within the zone.\n\nChange-Id: I39804ee630ba55f018e1e53c0576b28e7bd27931\n"
    },
    {
      "commit": "832cb229cd748505c90f74ae8154fc3557d61a73",
      "tree": "ff2c3b98b5bd2c91c195f39d320b14d56062a8f1",
      "parents": [
        "32e7bd9fe1343e365dc40c8d215b0d98df99a2de"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Fri Apr 13 09:32:47 2012 -0700"
      },
      "committer": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Thu Aug 16 00:14:03 2012 -0700"
      },
      "message": "Adding a thumbnail scale down animation\n\nRecents animation will temporarily look a bit\nwrong, but a subsequent change will fix this."
    },
    {
      "commit": "06565b64de1953fc9534f789b2e8b8fd70758979",
      "tree": "646c45d5cf99b572573bb4ac8b4cc84fc98b7dc6",
      "parents": [
        "978f853d189c1857190b4a2e200c7a283e31ca14"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 15 21:10:32 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 15 21:10:32 2012 -0700"
      },
      "message": "Improve auto-brightness debounce.\n\nChange-Id: I045e2a14cb31ff987a22872733c442fc92ebadbf\n"
    },
    {
      "commit": "5b1ada2562c17921adf6a62ea62bcb445160983c",
      "tree": "de45aa88e185f4ce052df43acf486e77778adcfb",
      "parents": [
        "4d1988699b11a9409015ef38a825d0de841a1d0f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Aug 14 18:47:09 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Aug 15 19:45:53 2012 -0700"
      },
      "message": "Multi-user external storage support.\n\nEmulated external storage always has multi-user support using paths\nlike \"/data/media/\u003cuser_id\u003e\".  Creates and destroys these paths along\nwith user data.  Uses new ensure_dir() to create directories while\nalways ensuring permissions.\n\nAdd external storage mount mode to zygote, supporting both single-\nand multi-user devices.  For example, devices with physical SD cards\nare treated as single-user.  Begin migrating to mount mode instead\nof relying on sdcard_r GID to enforce READ_EXTERNAL_STORAGE.\n\nBug: 6925012\nChange-Id: I9b872ded992cd078e2c013567d59f9f0032ec02b\n"
    },
    {
      "commit": "a1a1a1d6caddc25c4e249e5b5030d6a3ed861dd9",
      "tree": "721b2ba84b83c2eaef5b7e2730409cb51f90c71c",
      "parents": [
        "6d00c724330702c6bfd2bba2b7b2501fa3ab62ff",
        "5a052a4d19556700a21286029f37e1cc37f217b1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 15 18:53:33 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 15 18:53:34 2012 -0700"
      },
      "message": "Merge \"Fix issue #6955586: No navigation bar in landscape on tablets\" into jb-mr1-dev"
    },
    {
      "commit": "5a052a4d19556700a21286029f37e1cc37f217b1",
      "tree": "eb5dcf941af6e8dfca094329340f56126ebc5611",
      "parents": [
        "abac0cd16105c60fdd6c5ce37116c972dc7431bb"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 15 18:49:23 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 15 18:49:23 2012 -0700"
      },
      "message": "Fix issue #6955586: No navigation bar in landscape on tablets\n\nThe window manager was telling the activity manager to evaluate\nthe new configuration when first initializing the display, before\nactually setting mDisplay, so it failed creating that first config.\n\nChange-Id: I6e94fcf55b0587ccf15a5fd7ecbe2c9a0c201b96\n"
    },
    {
      "commit": "f6307820c88e694e102824225b9d8caa6de75a30",
      "tree": "6ce6183a3fe1ecc748312d7a101150028f456cdf",
      "parents": [
        "7ef6c20dbcdfaa9b74278546a45fb25950ff22a3"
      ],
      "author": {
        "name": "Yuhao Zheng",
        "email": "yuhaozheng@google.com",
        "time": "Tue Aug 14 14:21:25 2012 -0700"
      },
      "committer": {
        "name": "Yuhao Zheng",
        "email": "yuhaozheng@google.com",
        "time": "Wed Aug 15 15:22:37 2012 -0700"
      },
      "message": "CTS test for WiFi watchdog - framework support.\n\nThe new WiFi watchdog requires kernel/driver to export some packet loss\ncounters. This CTS tests whether those counters are correctly exported.\n\nChange-Id: I41999676f8488e86f35f1f8214ce668f1a2b5638\n"
    },
    {
      "commit": "9630704ed3b265f008a8f64ec60a33cf9dcd3345",
      "tree": "0c905e55ac062b625bf7a9ced250f05213d7873f",
      "parents": [
        "ff7e6ef4f18ff94a9836492ff3ccd1ba7f6804f3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 27 15:51:34 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 15 03:06:24 2012 -0700"
      },
      "message": "Power manager rewrite.\n\nThe major goal of this rewrite is to make it easier to implement\npower management policies correctly.  According, the new\nimplementation primarily uses state-based rather than event-based\ntriggers for applying changes to the current power state.\n\nFor example, when an application requests that the proximity\nsensor be used to manage the screen state (by way of a wake lock),\nthe power manager makes note of the fact that the set of\nwake locks changed.  Then it executes a common update function\nthat recalculates the entire state, first looking at wake locks,\nthen considering user activity, and eventually determining whether\nthe screen should be turned on or off.  At this point it may\nmake a request to a component called the DisplayPowerController\nto asynchronously update the display\u0027s powe state.  Likewise,\nDisplayPowerController makes note of the updated power request\nand schedules its own update function to figure out what needs\nto be changed.\n\nThe big benefit of this approach is that it\u0027s easy to mutate\nmultiple properties of the power state simultaneously then\napply their joint effects together all at once.  Transitions\nbetween states are detected and resolved by the update in\na consistent manner.\n\nThe new power manager service has is implemented as a set of\nloosely coupled components.  For the most part, information\nonly flows one way through these components (by issuing a\nrequest to that component) although some components support\nsending a message back to indicate when the work has been\ncompleted.  For example, the DisplayPowerController posts\na callback runnable asynchronously to tell the PowerManagerService\nwhen the display is ready.  An important feature of this\napproach is that each component neatly encapsulates its\nstate and maintains its own invariants.  Moreover, we do\nnot need to worry about deadlocks or awkward mutual exclusion\nsemantics because most of the requests are asynchronous.\n\nThe benefits of this design are especially apparent in\nthe implementation of the screen on / off and brightness\ncontrol animations which are able to take advantage of\nframework features like properties, ObjectAnimator\nand Choreographer.\n\nThe screen on / off animation is now the responsibility\nof the power manager (instead of surface flinger).  This change\nmakes it much easier to ensure that the animation is properly\ncoordinated with other power state changes and eliminates\nthe cause of race conditions in the older implementation.\n\nThe because of the userActivity() function has been changed\nso that it never wakes the device from sleep.  This change\nremoves ambiguity around forcing or disabling user activity\nfor various purposes.  To wake the device, use wakeUp().\nTo put it to sleep, use goToSleep().  Simple.\n\nThe power manager service interface and API has been significantly\nsimplified and consolidated.  Also fixed some inconsistencies\nrelated to how the minimum and maximum screen brightness setting\nwas presented in brightness control widgets and enforced behind\nthe scenes.\n\nAt present the following features are implemented:\n\n- Wake locks.\n- User activity.\n- Wake up / go to sleep.\n- Power state broadcasts.\n- Battery stats and event log notifications.\n- Dreams.\n- Proximity screen off.\n- Animated screen on / off transitions.\n- Auto-dimming.\n- Auto-brightness control for the screen backlight with\n  different timeouts for ramping up versus ramping down.\n- Auto-on when plugged or unplugged.\n- Stay on when plugged.\n- Device administration maximum user activity timeout.\n- Application controlled brightness via window manager.\n\nThe following features are not yet implemented:\n\n- Reduced user activity timeout for the key guard.\n- Reduced user activity timeout for the phone application.\n- Coordinating screen on barriers with the window manager.\n- Preventing auto-rotation during power state changes.\n- Auto-brightness adjustment setting (feature was disabled\n  in previous version of the power manager service pending\n  an improved UI design so leaving it out for now).\n- Interpolated brightness control (a proposed new scheme\n  for more compactly specifying auto-brightness levels\n  in config.xml).\n- Button / keyboard backlight control.\n- Change window manager to associated WorkSource with\n  KEEP_SCREEN_ON_FLAG wake lock instead of talking\n  directly to the battery stats service.\n- Optionally support animating screen brightness when\n  turning on/off instead of playing electron beam animation\n  (config_animateScreenLights).\n\nChange-Id: I1d7a52e98f0449f76d70bf421f6a7f245957d1d7\n"
    },
    {
      "commit": "ff7e6ef4f18ff94a9836492ff3ccd1ba7f6804f3",
      "tree": "53bfb8f41e2fd99b0419e336fa36254f9df9f8f3",
      "parents": [
        "109025d778c12d78f8585920447320aaf0f1d2f8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 15 02:05:18 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 15 02:09:05 2012 -0700"
      },
      "message": "Apply ValueAnimator scale factor immediately in WM.\n\nNormally the ValueAnimator scale factor is applied the first\ntime a ViewRootImpl window session is created but that may\nbe too late for animators created by system services that\nstart early in the boot process.  So set the scale factor\nimmediately whenever the setting changes.\n\nAlso make ValueAnimator.getDurationScale() accessible (but @hide)\nfor custom animators that want to apply the same scale to\ntheir animations.\n\nChange-Id: I0f5a750ab5b014f63848445435d8dca86f2a7ada\n"
    },
    {
      "commit": "58de1427c313e0debf2a929931e8c4065d4d46c5",
      "tree": "9e9682873930c27344a86089f8ce468b38d2c969",
      "parents": [
        "caaeda955bd80df9d9ab310e7ab504865a2e32e9",
        "fffa86ba834d37684238c83c0dd081133324984d"
      ],
      "author": {
        "name": "Matthew Xie",
        "email": "mattx@google.com",
        "time": "Tue Aug 14 00:37:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 14 00:37:01 2012 -0700"
      },
      "message": "Merge \"Implement enableNoAutoconnect()\" into jb-mr1-dev"
    },
    {
      "commit": "fffa86ba834d37684238c83c0dd081133324984d",
      "tree": "50e8de04a2b1294a29a3467871a231ff39901bec",
      "parents": [
        "06439fd29f9bbf7031f58f5b06aa6c022ac9897a"
      ],
      "author": {
        "name": "Ganesh Ganapathi Batta",
        "email": "ganeshg@broadcom.com",
        "time": "Wed Aug 08 15:35:49 2012 -0700"
      },
      "committer": {
        "name": "Matthew Xie",
        "email": "mattx@google.com",
        "time": "Tue Aug 14 00:18:07 2012 -0700"
      },
      "message": "Implement enableNoAutoconnect()\n\nAdding enableNoAutoconnect() API support in Bluetooth service\n to let BT enable in quiet mode\n\nChange-Id: I546f3ceb298082a9c9a698f406379470e3cc0d4f\n"
    },
    {
      "commit": "510cff946874b8408664c86f9935d6a38f770e82",
      "tree": "09052993b0264f2faa55a7bbaaa49969a9425c47",
      "parents": [
        "863b19bc8fcfa436011781b67a237fcce3cb703a",
        "f02354e208ec7b7e0dee68e12c0b5cde86a0f20a"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Mon Aug 13 20:45:04 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 13 20:45:04 2012 -0700"
      },
      "message": "am f02354e2: am 9064a483: Merge \"Added missing USB_DEVICE_ATTACHED broadcast to running Activity\"\n\n* commit \u0027f02354e208ec7b7e0dee68e12c0b5cde86a0f20a\u0027:\n  Added missing USB_DEVICE_ATTACHED broadcast to running Activity\n"
    },
    {
      "commit": "f02354e208ec7b7e0dee68e12c0b5cde86a0f20a",
      "tree": "457a7c9c5bb43510ae709f9ef87ce50d2f27a79e",
      "parents": [
        "55ed7e34b981e9725f664587c6ca1f43d78c3f6e",
        "9064a48365c131ef5f64b26ab33dd40a7d1246a7"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Mon Aug 13 20:42:42 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 13 20:42:42 2012 -0700"
      },
      "message": "am 9064a483: Merge \"Added missing USB_DEVICE_ATTACHED broadcast to running Activity\"\n\n* commit \u00279064a48365c131ef5f64b26ab33dd40a7d1246a7\u0027:\n  Added missing USB_DEVICE_ATTACHED broadcast to running Activity\n"
    },
    {
      "commit": "9064a48365c131ef5f64b26ab33dd40a7d1246a7",
      "tree": "0ca0f025a3b0e94703d5be84892367e69d1a123d",
      "parents": [
        "b17a583a3acc57db845993599e4de56e91d5e75a",
        "82991054575130b2f065d9ab8d6aee270cd07239"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Mon Aug 13 19:59:38 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 13 19:59:38 2012 -0700"
      },
      "message": "Merge \"Added missing USB_DEVICE_ATTACHED broadcast to running Activity\""
    },
    {
      "commit": "bf7d222011bcb417a2d6ab0f086b25e1608445cb",
      "tree": "f92f75219ad3b12fb22ef6d507d9629daaf9ae9d",
      "parents": [
        "ae5ac108b03214e02781a92592f7913ada8ef2d4",
        "aac71ff465399251fa8e830407f2917b986988d9"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Aug 13 17:58:39 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 13 17:58:40 2012 -0700"
      },
      "message": "Merge \"Don\u0027t back up / restore non-primary users\u0027 data\" into jb-mr1-dev"
    },
    {
      "commit": "aac71ff465399251fa8e830407f2917b986988d9",
      "tree": "12178251368dfef76d9d23ed8a493358e7ab514c",
      "parents": [
        "38cc2a5a3ad076fbbb0824a91f49730a4297549b"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Aug 13 17:36:14 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Aug 13 17:36:14 2012 -0700"
      },
      "message": "Don\u0027t back up / restore non-primary users\u0027 data\n\nFor now only the device owner \"user\" gets cloud backups.  Also, only the\ndevice owner account has access to local backup/restore.\n\nBug 6956438\n\nChange-Id: I87d7ba5969e606c23f4214469f9bf2fd47a6c61b\n"
    },
    {
      "commit": "1866f68dfe35da46995e5f2321f33e8fee44bcf8",
      "tree": "4b26f014c9b0fdbc5f58628d15944367e06ad1d1",
      "parents": [
        "87c42b9978bde888c3fd2d94e9d52256e56c3187",
        "ee7621c0f5de6eca2cfb9fb2b6117fb61e13cc41"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 13 17:15:03 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 13 17:15:04 2012 -0700"
      },
      "message": "Merge \"Modify how the background process LRU list is handled.\" into jb-mr1-dev"
    },
    {
      "commit": "f88dd0b32ea2042eb2011170be465259a21d2563",
      "tree": "0be85df1f64f04e99783d109dbab35029b07f9b0",
      "parents": [
        "ee8655c6739cdfb35f192b05d8d4d84402e0d956"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 08 17:20:32 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 13 17:11:47 2012 -0700"
      },
      "message": "Small service cleanup.\n\nGet rid of duplication between find/retrieve service funcs; when\na service in a persistent process crashes, restart it immediately\nsince the persistent process is going to be immediately restarted\nanyway; when a new process is attaching, immediately restart any\nservices associated with it that are waiting to restart, since\nit is weird to not let them run if the process comes back for some\nother reason.\n\nChange-Id: Id087fe04ebf2b6a4bd00732796c8326364765ea7\n"
    },
    {
      "commit": "ee7621c0f5de6eca2cfb9fb2b6117fb61e13cc41",
      "tree": "78ea6a9d60816abd589ee523433a3564af81fd6f",
      "parents": [
        "ee8655c6739cdfb35f192b05d8d4d84402e0d956"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 13 16:42:18 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 13 17:09:19 2012 -0700"
      },
      "message": "Modify how the background process LRU list is handled.\n\nA long time ago, we had a concept of an \"empty\" process -- this was\na process that didn\u0027t have any interesting components in it, which\nwould be placed below everything else in the LRU list.\n\nEmpty processes didn\u0027t work out well, because you could get into\nbad situations where you have filled your LRU list with things that\nhave hidden activities, pushing empty processes to the bottom and\nbeing immediately killed as soon as they go into the list.  So this\nwas removed.\n\nThis change brings the concept back, but in a slightly different\nform, to address a more specific problem: for people who are switching\nbetween N different applications, we would like to try to keep those\nactivities available in RAM in a consistent manner.  Currently the\nprevious activities would be killed often quickly and suprisingly,\neven on devices with lots of RAM.  This is for two reasons:\n\n(1) As you sit in one application, other things going on in the\nbackground will go to the top of the LRU list, pushing down the\nprevious apps you have visited, even though you aren\u0027t aware at all\nof these other things executing.\n(2) There is a hard limit on the number of background processes\n(currently 16) after which they are killed regardless of the amount\nof available RAM.  This is desireable because if there is lots of\nRAM we can end up with tons and tons of processes sitting around,\nnot really serving any purpose, but using up resources.\n\nTo improve the situation, we have again a concept of \"empty\" processes\nbut now it means one with no activities.  Processes that aren\u0027t empty\nbut in the background list are called hidden.  We maintain these as\ntwo parallel lists, each getting half of the process limit: so with\na 16 process limit, you can have at most 8 empty and 8 hidden processes.\n\nThis allows us to consistently keep up to 8 recent applications around\nfor fast app switching; we will also keep around 8 other processes to\nmake it more efficient for background work to execute again if it needs\nto.\n\nChange-Id: Iee06e45efc20787da6a1e50020e5421c28204bd7\n"
    },
    {
      "commit": "7be1a3d67c32d73b20e30e85084f07c609617762",
      "tree": "6d11eee5bcd64ad3738aed954337f370468193f0",
      "parents": [
        "38cc2a5a3ad076fbbb0824a91f49730a4297549b"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Mon Aug 13 16:45:12 2012 -0400"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Mon Aug 13 16:45:12 2012 -0400"
      },
      "message": "Stop screensaver on incoming phone call.\n\nUse notification manager as an indicator of when to stop the screensaver\ndue to immediately-needed user interaction.\n\nAny notification with a fullScreenIntent will now exit the screensaver.\n\nBug: 6976796\nChange-Id: Id91cd4c32f3fad018b56f4dfe24b37110bab32d8\n"
    },
    {
      "commit": "38cc2a5a3ad076fbbb0824a91f49730a4297549b",
      "tree": "0442cdf8c2ca24a1259043e1defa2af4fc37406d",
      "parents": [
        "4d1988699b11a9409015ef38a825d0de841a1d0f",
        "3221bf27ff6b8eebf360ed2496ad5c56b95fd689"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Aug 13 11:42:20 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 13 11:42:20 2012 -0700"
      },
      "message": "am 3221bf27: am 438a0efc: Do not eject internal ASECs when storage unmounted\n\n* commit \u00273221bf27ff6b8eebf360ed2496ad5c56b95fd689\u0027:\n  Do not eject internal ASECs when storage unmounted\n"
    },
    {
      "commit": "3221bf27ff6b8eebf360ed2496ad5c56b95fd689",
      "tree": "a288fa2b522adea646206c8a20854755c0a4313a",
      "parents": [
        "82c2ff554682d4d3e99adb8ad4de664bb8a5bce9",
        "438a0efcfbee5dc953e8e5bbdf4cb3dbe94b3f80"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Aug 13 11:40:10 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 13 11:40:10 2012 -0700"
      },
      "message": "am 438a0efc: Do not eject internal ASECs when storage unmounted\n\n* commit \u0027438a0efcfbee5dc953e8e5bbdf4cb3dbe94b3f80\u0027:\n  Do not eject internal ASECs when storage unmounted\n"
    },
    {
      "commit": "438a0efcfbee5dc953e8e5bbdf4cb3dbe94b3f80",
      "tree": "d3490b8f71bf399772fd94cd87719625fd447b50",
      "parents": [
        "ea31b47a72a6fed1269e2ba3c29c438212322bf0"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 09 13:36:16 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Aug 13 10:51:09 2012 -0700"
      },
      "message": "Do not eject internal ASECs when storage unmounted\n\nIf the incoming request is to notify of storage unmounted, don\u0027t mess\nwith apps that are in internal ASECs.\n\nBug: 6948035\nChange-Id: I63ffb895c4d994ee03a5a9bd6bb23f69c88e2a87\n"
    },
    {
      "commit": "258848d2ae04f447ff1c18023fa76b139fcc0862",
      "tree": "8736421f4007d81206d0f0ea8b32a2013508976a",
      "parents": [
        "75f0fac91bd7fa67fa76cfdd4e163b9f35be0432"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 10 17:06:33 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sat Aug 11 18:24:07 2012 -0700"
      },
      "message": "User Manager service to manage users and query user details\n\nMoved a bunch of methods from PackageManager to UserManager.\n\nFix launching of activities from recents to correct user.\n\nGuest creation APIs\n\nChange-Id: I0733405e6eb2829675665e225c759d6baa2b708f\n"
    },
    {
      "commit": "75f0fac91bd7fa67fa76cfdd4e163b9f35be0432",
      "tree": "6dc191c40d77915fff757b7770d16060f32f1f74",
      "parents": [
        "0e545e24f0818b0577d0e6284ba1b49356f84be7",
        "08ca1046fe4f1890f91241f8d082a024ef6cfd93"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 10 17:19:09 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 10 17:19:09 2012 -0700"
      },
      "message": "Merge \"Fix a couple of bugs from the location overhaul.\" into jb-mr1-dev"
    },
    {
      "commit": "08ca1046fe4f1890f91241f8d082a024ef6cfd93",
      "tree": "da4e378d5fb57beac9ab8bca3f28e0f6da335456",
      "parents": [
        "3914e4b7d12b014f73085cd6e34b6fd69ea26226"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 10 15:47:53 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 10 17:17:32 2012 -0700"
      },
      "message": "Fix a couple of bugs from the location overhaul.\n\nMarshall LocationRequest array correctly.\n\nObserve reportLocation from FusionEngine.\n\nActually deliver the setRequest message to fusion engine.\n\nChange-Id: Iff64596fdd42f9fb06e563591dda9fbe0241533a\n"
    },
    {
      "commit": "77b257967de44e031c313858a45fccdd6e89732f",
      "tree": "c55367092b00153f6e0a7e8079da5bdba8b90e91",
      "parents": [
        "6cc7a9276bdad8b230e35141204c949291350f0b",
        "0412423f06ec633203b96f68b51f0720c33a2473"
      ],
      "author": {
        "name": "Ashish Sharma",
        "email": "ashishsharma@google.com",
        "time": "Fri Aug 10 16:04:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 10 16:04:07 2012 -0700"
      },
      "message": "Merge \"Setup idletimer for network interface.\" into jb-mr1-dev"
    },
    {
      "commit": "0412423f06ec633203b96f68b51f0720c33a2473",
      "tree": "9098a9e777823d17100edc8da46e73e7bce4a2cf",
      "parents": [
        "c47f80f1ae96e3c8b6a750d68cc12dfbbca97254"
      ],
      "author": {
        "name": "Haoyu Bai",
        "email": "bhy@google.com",
        "time": "Thu Jun 28 15:26:19 2012 -0700"
      },
      "committer": {
        "name": "Haoyu Bai",
        "email": "bhy@google.com",
        "time": "Fri Aug 10 15:58:34 2012 -0700"
      },
      "message": "Setup idletimer for network interface.\n\nCherry-picked from commit f71ca8a5728e425de61ba794c9653dd0b04f16e3 in\nmaster. DO NOT MERGE\n\nChange-Id: I6101c7ae041b4cc1237ce7a9983753dbdfa301d3\n"
    },
    {
      "commit": "6fa9ad4afcd762aea519ff61811386c23d18ddb2",
      "tree": "5b027550205ada4b972f5cc3d8073819c07d9c75",
      "parents": [
        "c47f80f1ae96e3c8b6a750d68cc12dfbbca97254"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Mon Jul 16 12:18:23 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 10 14:57:09 2012 -0700"
      },
      "message": "Location overhaul, major commit.\n\nThemes: Fused Location, Geofencing, LocationRequest.\n\nAPI changes\no Fused location is always returned when asking for location by Criteria.\no Fused location is never returned as a LocationProvider object, nor returned\n  as a provider String. This wouldn\u0027t make sense because the current API\n  design assumes that LocationProvider\u0027s have fixed properties (accuracy, power\n  etc).\no The fused location engine will tune itself based on the criteria passed\n  by applications.\no Deprecate LocationProvider. Apps should use fused location (via Criteria\n  class), instead of enumerating through LocationProvider objects. It is\n  also over-engineered: designed for a world with a plethora of location\n  providers that never materialized.\no The Criteria class is also over-engineered, with many methods that aren\u0027t\n  currently used, but for now we won\u0027t deprecate them since they may have\n  value in the future. It is now used to tune the fused location engine.\no Deprecate getBestProvider() and getProvider().\no Add getLastKnownLocation(Criteria), so we can return last known\n  fused locations.\no Apps with only ACCESS_COARSE_LOCATION _can_ now use the GPS, but the location\n  they receive will be fudged to a 1km radius. They can also use NETWORK\n  and fused locatoins, which are fudged in the same way if necessary.\no Totally deprecate Criteria, in favor of LocationRequest.\n  Criteria was designed to map QOS to a location provider. What we\n  really need is to map QOS to _locations_.\n  The death knell was the conflicting ACCURACY_ constants on\n  Criteria, with values 1, 2, 3, 1, 2. Yes not a typo.\no Totally deprecate LocationProvider.\no Deprecate test/mock provider support. They require a named provider,\n  which is a concept we are moving away from. We do not yet have a\n  replacement, but I think its ok to deprecate since you also\n  need to have \u0027allow mock locations\u0027 checked in developer settings.\n  They will continue to work.\no Deprecate event codes associated with provider status. The fused\n  provider is _always_ available.\no Introduce Geofence data object to provide an easier path fowards\n  for polygons etc.\n\nImplementation changes\no Fused implementation: incoming (GPS and NLP) location fixes are given\n  a weight, that exponentially decays with respect to age and accuracy.\n  The half-life of age is ~60 seconds, and the half-life of accuracy is\n  ~20 meters. The fixes are weighted and combined to output a fused\n  location.\no Move Fused Location impl into\n  frameworks/base/packages/FusedLocation\no Refactor Fused Location behind the IProvider AIDL interface. This allow us\n  to distribute newer versions of Fused Location in a new APK, at run-time.\no Introduce ServiceWatcher.java, to refactor code used for run-time upgrades of\n  Fused Location, and the NLP.\no Fused Location is by default run in the system server (but can be moved to\n  any process or pacakge, even at run-time).\no Plumb the Criteria requirements through to the Fused Location provider via\n  ILocation.sendExtraCommand(). I re-used this interface to avoid modifying the\n  ILocation interface, which would have broken run-time upgradability of the\n  NLP.\no Switch the geofence manager to using fused location.\no Clean up \u0027adb shell dumpsys location\u0027 output.\no Introduce config_locationProviderPackageNames and\n  config_overlay_locationProviderPackageNames to configure the default\n  and overlay package names for Geocoder, NLP and FLP.\no Lots of misc cleanup.\no Improve location fudging. Apply random vector then quantize.\no Hide internal POJO\u0027s from clients of com.android.location.provider.jar\n  (NLP and FLP). Introduce wrappers ProviderRequestUnbundled and\n  ProviderPropertiesUnbundled.\no Introduce ProviderProperties to collapse all the provider accuracy/\n  bearing/altitude/power plumbing (that is deprecated anyway).\no DELETE lots of code: DummyLocationProvider,\no Rename the (internal) LocationProvider to LocationProviderBase.\no Plumb pid, uid and packageName throughout\n  LocationManagerService#Receiver to support future features.\n\nTODO: The FLP and Geofencer have a lot of room to be more intelligent\nTODO: Documentation\nTODO: test test test\n\nChange-Id: Iacefd2f176ed40ce1e23b090a164792aa8819c55\n"
    },
    {
      "commit": "14262d79c42072b01d8beccc3a0d688938da4214",
      "tree": "99be5cc1bdfd5aebae7c8f785db024a2b0c547f5",
      "parents": [
        "f6e802283cea8d682d05ee15fe0d500cff118533",
        "1715cb36d9231f08f244ec6c0a373f1a46d66cc7"
      ],
      "author": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Thu Aug 09 18:46:09 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 09 18:46:10 2012 -0700"
      },
      "message": "Merge \"Control GPS logging with property\" into jb-mr1-dev"
    },
    {
      "commit": "1715cb36d9231f08f244ec6c0a373f1a46d66cc7",
      "tree": "a7f26aaa988919f6e6d965f7bc0f4d6c25feddf0",
      "parents": [
        "7c46e4380e6c50c30aad80807f87af25f000c7ff"
      ],
      "author": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Wed Aug 08 17:32:21 2012 -0700"
      },
      "committer": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Thu Aug 09 17:14:13 2012 -0700"
      },
      "message": "Control GPS logging with property\n\nThis allows users of the PDK to debug GPS issues.\n\nChange-Id: I4aff12e124f4264abd1a0be012df4c431044189c\n"
    },
    {
      "commit": "c5bfe1962626ec73ce8dac67ab26bad96637e2f1",
      "tree": "ab22dccd39af329e51cb9cb37cca92528dc7046e",
      "parents": [
        "a7bbbabc15724e2aef0e6354d5dafa9e225e2ea9",
        "b9ba2b6768063b4a4135143bc5b6219fb9b3b22f"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Thu Aug 09 15:43:24 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 09 15:43:25 2012 -0700"
      },
      "message": "Merge \"Fix screen timeout determination for starting dream.\" into jb-mr1-dev"
    },
    {
      "commit": "b9ba2b6768063b4a4135143bc5b6219fb9b3b22f",
      "tree": "1f24c618d2811e1b914c0d4914defbd952b9a5ab",
      "parents": [
        "7c46e4380e6c50c30aad80807f87af25f000c7ff"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Thu Aug 09 14:47:49 2012 -0400"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Thu Aug 09 14:47:49 2012 -0400"
      },
      "message": "Fix screen timeout determination for starting dream.\n\nIt turns out OFF_BECAUSE_OF_TIMEOUT is not the best indicator\nof actual screen timeout.\n\nFor example, it is the reason passed down when acquiring a wake lock.\nThis was causing us to launch Dreams in the wrong situations, and\ndeadlocking on calls to WindowManager.\n\nThis fix simply adds an additional check ensuring the intention is to\nturn the screen off.\n\nChange-Id: If8adff446b5b1fcb19424b45878b75bfd0552b90\n"
    },
    {
      "commit": "2c02933b13b426637808d3d4fd57aea1ff11011a",
      "tree": "5cb4d58306e46f3256d76af62a88d1e874857d49",
      "parents": [
        "1567a4341bf642e17432a079d3de3381c7a93340",
        "4860cfc68464ebdcc391324518772c79f047597f"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Aug 09 11:45:54 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 09 11:45:55 2012 -0700"
      },
      "message": "Merge \"Send BOOT_COMPLETED to all users.\" into jb-mr1-dev"
    },
    {
      "commit": "015b9f45d4cfa1e9764d7fbd6142ee612b2ea628",
      "tree": "0f0cb8bd2437675dface7b994af0fe11951f1a83",
      "parents": [
        "a1300467332e3189e1b7c02af03fd66aac8e79e9"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Aug 09 00:05:36 2012 -0400"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Aug 09 11:11:33 2012 -0400"
      },
      "message": "Fix the dock-insertion Dream entry codepath.\n\nBug: 6956040\nChange-Id: I663e13f8a28db13b94d0f5aa4dbcf0cd64ef22fe\n"
    },
    {
      "commit": "4860cfc68464ebdcc391324518772c79f047597f",
      "tree": "fb4ba6771bb384eb6af51fc7d365730f653e3078",
      "parents": [
        "a56d9cecee8a34e0554770ac6253dd3a76b9199c"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Aug 08 19:14:18 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Aug 08 19:15:58 2012 -0700"
      },
      "message": "Send BOOT_COMPLETED to all users.\n\nAt least until we have a concept of logged-in users.\n\nChange-Id: I65e3bed2aeef9692dbc64169cf02a7451cfed1cd\n"
    },
    {
      "commit": "8264408f5995534f8e3147b001664ea0df52aaa5",
      "tree": "e6e963d2ec701047872bf641b28888a93c7b866a",
      "parents": [
        "fb11ffa2a04f0a6b1291cd7ffc68032fcc322312"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 03 13:09:11 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 16:52:53 2012 -0700"
      },
      "message": "Start the correct settings from the status bar.\n\nAdded a new method to Context: startActivityAsUser() requiring the\nINTERACT_ACROSS_USERS_FULL permission.\n\nShow the correct Recents list, based on current user.\nAdded a getRecentTasksForUser() in ActivityManager. Hidden and requires\nthe INTERACT_ACROSS_USERS_FULL permission.\n\nChange-Id: If5b56465efdd3ead36601a3b51ed4af157bbf35c\n"
    },
    {
      "commit": "fb11ffa2a04f0a6b1291cd7ffc68032fcc322312",
      "tree": "ba8010132fbf760c285ab7d2465f670fd5f69260",
      "parents": [
        "82f479d0647855148af84fe2ba5484cb188c92cc",
        "fb878b66b9456f8fee2bcb1076263852d207949d"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Aug 08 16:25:40 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 16:25:41 2012 -0700"
      },
      "message": "Merge \"Isolate NetworkStateTracker creation, test.\" into jb-mr1-dev"
    },
    {
      "commit": "fb878b66b9456f8fee2bcb1076263852d207949d",
      "tree": "2f2d3f1de5c8de8e04c4a84d5c443471837adf58",
      "parents": [
        "088f29f55eebc6862a4cb5dddeaefacf24f74d95"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Jul 26 18:32:30 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Aug 08 16:23:41 2012 -0700"
      },
      "message": "Isolate NetworkStateTracker creation, test.\n\nChange ConnectivityService to use a factory when creating\nNetworkStateTrackers, which gives us a good place to inject mocks\nfor testing.  Add initial tests to verify that network routes are\nadded and removed as networks changed.\n\nChange-Id: I11cbc61a84c2ed4afa2670036295b1494eab26e1\n"
    },
    {
      "commit": "82f479d0647855148af84fe2ba5484cb188c92cc",
      "tree": "db1d276b5151af550ab97b4fe9d2f95bdaf42c9a",
      "parents": [
        "f3c16a12aa0408a69ff358843d020f9ff6b883f1",
        "088f29f55eebc6862a4cb5dddeaefacf24f74d95"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Aug 08 16:22:23 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 16:22:23 2012 -0700"
      },
      "message": "Merge \"Cleaner controls between Vpn and init services.\" into jb-mr1-dev"
    },
    {
      "commit": "a56d9cecee8a34e0554770ac6253dd3a76b9199c",
      "tree": "3e617e7c34c9dafec25b373af7cd392154881b19",
      "parents": [
        "f007bd3cf8cacd75287781c1bb37fe4167c79cba",
        "e1d7c711df3e3a2d2f195457882aa4ddb5626167"
      ],
      "author": {
        "name": "Rich Cannings",
        "email": "richc@google.com",
        "time": "Wed Aug 08 13:50:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 13:50:56 2012 -0700"
      },
      "message": "Merge \"Revert \"Pass URLs to package verifiers\"\" into jb-mr1-dev"
    },
    {
      "commit": "5017f2328407447002ab2d0cae1fe8ef87c50501",
      "tree": "3e47a10c7c51935be5e134af19649d0b6c79985d",
      "parents": [
        "86d09388ee1b98513de40dfff5de6e7c3b24cc07"
      ],
      "author": {
        "name": "Jason Simmons",
        "email": "jsimmons@google.com",
        "time": "Fri Jul 27 15:44:39 2012 -0700"
      },
      "committer": {
        "name": "Jason Simmons",
        "email": "jsimmons@google.com",
        "time": "Wed Aug 08 13:15:00 2012 -0700"
      },
      "message": "Call systemReady on the lock settings before doing so on the window manager\n\nAt systemReady time, the window manager needs to obtain values from the lock\nsettings service (e.g. whether the lock screen is disabled).  During the\ninitial boot of a wiped device, the window manager was getting the wrong\nvalues because LockSettingsService.systemReady/migrateOldData had not yet been\ncalled.\n\nChange-Id: I60825d0e4fad53a5b4349dabf9e5e299b863d0d0\n\n(cherry pick of 2458abaf6676d5015af733c1010ecd67a085e9e2 from jb-aah-dev)\n"
    },
    {
      "commit": "e1d7c711df3e3a2d2f195457882aa4ddb5626167",
      "tree": "d27b6e508c1bdbd29028034471ee46acfe5d6cf8",
      "parents": [
        "24713907fe4632d263aea82f7a35c8fb08918a09"
      ],
      "author": {
        "name": "Rich Cannings",
        "email": "richc@google.com",
        "time": "Wed Aug 08 12:46:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 12:46:06 2012 -0700"
      },
      "message": "Revert \"Pass URLs to package verifiers\"\n\nThis reverts commit 24713907fe4632d263aea82f7a35c8fb08918a09\n\nChange-Id: Ie04ba73475b813635c4a74915c45e83250801b6b\n"
    },
    {
      "commit": "537915828b45693e846a126292e026c5b4f05152",
      "tree": "6c47dca99eda5792f1fc006e0f20088ad4048db1",
      "parents": [
        "ec0feefd4422db1151aee722732d8c9528f6dfa8",
        "7d19e0242faac8017033dabb872cdf1542fa184c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 08 10:22:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 10:22:49 2012 -0700"
      },
      "message": "Merge \"More mult-user API work.\" into jb-mr1-dev"
    },
    {
      "commit": "786546eaccfc7a284b90b077f505cf42206c6f5f",
      "tree": "eca70253bd3fafbc617618ee6f071bc2de212e41",
      "parents": [
        "85b1041f891b4bbfe81e4f6423397fca50c14e5b"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Wed Aug 08 11:40:20 2012 -0400"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Wed Aug 08 11:40:20 2012 -0400"
      },
      "message": "Check the ACTIVATE_ON_DOCK setting in DockObserver.\n\nOtherwise docking the device will always launch a Dream.\n\nChange-Id: I2e74ca62f80d7e386d11c00920a75a5a6e78926c\n"
    },
    {
      "commit": "7d19e0242faac8017033dabb872cdf1542fa184c",
      "tree": "ab12d3c6597bc42bc7c0dca10ded546192c5c249",
      "parents": [
        "03ad783c5078c7bd487e47bb2a2af67dfbe89f1a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 07 19:12:33 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 07 19:19:22 2012 -0700"
      },
      "message": "More mult-user API work.\n\n- You can now use android:singleUser with receivers and providers.\n- New API to send ordered broadcasts as a user.\n- New Process.myUserHandle() API.\n\nFor now I am trying out \"user handle\" as the name for the numbers\nrepresenting users.\n\nChange-Id: I754c713ab172494bb4251bc7a37a17324a2e235e\n"
    },
    {
      "commit": "85b1041f891b4bbfe81e4f6423397fca50c14e5b",
      "tree": "e9fcd98e2326aeb0a4855ca25550f0583939b5d3",
      "parents": [
        "3c91724e7a8850df41a00fe4829a4d69d6ba9094",
        "758143ecfedbe08cc6c4fed0ad8ad7a854194ca4"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Aug 06 23:51:35 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 06 23:51:36 2012 -0700"
      },
      "message": "Merge \"Window position not reported if the window is not moved.\" into jb-mr1-dev"
    },
    {
      "commit": "758143ecfedbe08cc6c4fed0ad8ad7a854194ca4",
      "tree": "c7102e7f3b5f71180cb23d1a13c01158f558feb6",
      "parents": [
        "4cb3384772cf7015a4e05789470123efb07219d9"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Aug 06 16:40:27 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Aug 06 23:49:38 2012 -0700"
      },
      "message": "Window position not reported if the window is not moved.\n\n1.If a window is shown but never moved the window window\n  is never notified for its current location. Therefore,\n  accessibility nodes do not contain correct bounds in\n  screen coordinates.\n\nbug:6926295\n\nChange-Id: I7df18b095d33ecafffced75aba9e4f4693b0c393\n"
    },
    {
      "commit": "3c91724e7a8850df41a00fe4829a4d69d6ba9094",
      "tree": "9e82bbf47ba41faf5cca9fbdce8a48a49afa792f",
      "parents": [
        "ecbbfdd3bfd5f82fb4bce78ffef48dc6fe12bd48",
        "599db5c85faa5733af538a712b870e1f507cd380"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 06 17:53:18 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 06 17:53:18 2012 -0700"
      },
      "message": "Merge \"Refactor Service code out of main ActivityManagerService class.\" into jb-mr1-dev"
    },
    {
      "commit": "599db5c85faa5733af538a712b870e1f507cd380",
      "tree": "765a44d3a895e56c76968a5584a5c938982c9934",
      "parents": [
        "4cb3384772cf7015a4e05789470123efb07219d9"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 03 19:28:48 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 06 17:52:02 2012 -0700"
      },
      "message": "Refactor Service code out of main ActivityManagerService class.\n\nChange-Id: I83ade73b48e8fda1ad413634c1eb0dba2a545ca7\n"
    },
    {
      "commit": "088f29f55eebc6862a4cb5dddeaefacf24f74d95",
      "tree": "c641ced2808f01868c146699259d09f3c6f10363",
      "parents": [
        "216c181e76ee11a47a0b2a180f9af96740ab38ad"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Aug 05 14:55:04 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Aug 06 14:48:49 2012 -0700"
      },
      "message": "Cleaner controls between Vpn and init services.\n\nChange-Id: I35edf054f4a1190f7fb7b4c48ee832e899c9528b\n"
    },
    {
      "commit": "4e4306ab14f1f2125035ed43fbb021db8bc99c3f",
      "tree": "0a04d688799841c9cb7bfec820b7f7550734f368",
      "parents": [
        "4cb3384772cf7015a4e05789470123efb07219d9",
        "75fbb4bdfde9188081f000506845d852f31362f0"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Aug 06 13:40:44 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 06 13:40:44 2012 -0700"
      },
      "message": "Merge \"Include network type that caused broadcast.\" into jb-mr1-dev"
    },
    {
      "commit": "75fbb4bdfde9188081f000506845d852f31362f0",
      "tree": "567b30e20b9c8ef14ac61d072e22d0faac4236c0",
      "parents": [
        "187019c51fb1f8f79d4d5919facbc8d569ff844e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Aug 06 11:41:50 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Aug 06 11:45:01 2012 -0700"
      },
      "message": "Include network type that caused broadcast.\n\nNetwork type can be obtained through EXTRA_NETWORK_INFO, but offer\nit as first-class extra since the returned NetworkInfo is deprecated.\n\nBug: 6936247\nChange-Id: Ief59577afd2bd930f0f4c5650b413feef86bfbc3\n"
    },
    {
      "commit": "bec1d13da2ef3c8c2c4cc4f740474d095068bd8b",
      "tree": "b7f3a7b10e5a19280cdd955c381a27ab2e62c2a2",
      "parents": [
        "9c5c65959790bdceda384f87cf457bc7f9c2d433",
        "216c181e76ee11a47a0b2a180f9af96740ab38ad"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Aug 05 14:58:13 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Aug 05 14:58:13 2012 -0700"
      },
      "message": "Merge \"Make generic BaseNetworkObserver.\" into jb-mr1-dev"
    },
    {
      "commit": "9c5c65959790bdceda384f87cf457bc7f9c2d433",
      "tree": "dc7fc1bef126901ee89e6e833bfc34a65c8cb314",
      "parents": [
        "fe33a09a3f0d53bf96f7c65bfeb271d6487012e1",
        "065b299df4159602327977dd007cb2cd6b64ab20"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Aug 05 14:55:27 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Aug 05 14:55:28 2012 -0700"
      },
      "message": "Merge \"Make LocalSocket Closeable.\" into jb-mr1-dev"
    },
    {
      "commit": "216c181e76ee11a47a0b2a180f9af96740ab38ad",
      "tree": "dd32870b7e0cbe4a52d90e593de1b0d8b8d3b771",
      "parents": [
        "065b299df4159602327977dd007cb2cd6b64ab20"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Aug 05 14:29:23 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Aug 05 14:32:41 2012 -0700"
      },
      "message": "Make generic BaseNetworkObserver.\n\nThis makes it easier to add new INetworkManagementEventObserver events\nin future.\n\nChange-Id: I432263d745558de4b878f313c1951230ed9db2b1\n"
    },
    {
      "commit": "065b299df4159602327977dd007cb2cd6b64ab20",
      "tree": "962d115b14145cf1af13ae9de6f599a15617a9eb",
      "parents": [
        "187019c51fb1f8f79d4d5919facbc8d569ff844e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Aug 05 14:16:48 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Aug 05 14:21:07 2012 -0700"
      },
      "message": "Make LocalSocket Closeable.\n\nEnables usage of IoUtils.closeQuietly().\n\nChange-Id: I91126297c1f235ae9da09f82d8f4f22db46558eb\n"
    },
    {
      "commit": "2e5746a7a807c6d9d61af48978695214ef9d6717",
      "tree": "9b750a0101d2e4b963c85d541a17813d309bdcd0",
      "parents": [
        "c09211911c28795354f7ce5a1b75b13ac6a7b4d0",
        "dde331cebd87982faded6818ad5f9927ff994c96"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 03 17:45:52 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 03 17:45:52 2012 -0700"
      },
      "message": "Merge \"We can now (kind-of) change screen density on the fly.\" into jb-mr1-dev"
    },
    {
      "commit": "dde331cebd87982faded6818ad5f9927ff994c96",
      "tree": "c2f9c4c62113fc93948d3988fc09cc3727c4b9ca",
      "parents": [
        "5345c310af8363948cee6a91d11add3ec51e8a9c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 03 14:01:57 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 03 17:27:29 2012 -0700"
      },
      "message": "We can now (kind-of) change screen density on the fly.\n\nPreloaded drawables now have a density associated with them, so we\ncan load the correct drawable if we are using a different density.\n\nWindow manager now formally keeps track of the density for each\nscreen, allowing it to be overridden like you can already do with\nsize, and relies on this density to drive itself internally and\nthe configurations it reports.\n\nThere are a new set of Bitmap constructors where you provide a\nDisplayMetrics so they can be constructed with the correct density.\n(This will be for when you can have different windows in the same\napp running at different densities.)\n\nActivityThread now watches for density changes, and pushes them\nto the DENSITY_DEVICE and Bitmap global density values for that\nprocess.\n\nA new am command allows you to change the density.\n"
    },
    {
      "commit": "0b24b1d37a955a0674a31d4da9ee1d0357a1d7f8",
      "tree": "dc40ce14607c20565d3f19e7b6d83f46152122f4",
      "parents": [
        "a70cd04985eec51d95355cc7b822bc65f4ebce05",
        "821bd8081a3a02de946af7a5c2ab52cdc3e48c4e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 03 11:56:02 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 03 11:56:03 2012 -0700"
      },
      "message": "Merge \"Pass changed NetworkInfo to LocationProvider.\" into jb-mr1-dev"
    },
    {
      "commit": "821bd8081a3a02de946af7a5c2ab52cdc3e48c4e",
      "tree": "c30bc9303fd555e250f13eeb05b2a54b42c4b6c8",
      "parents": [
        "187019c51fb1f8f79d4d5919facbc8d569ff844e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 03 11:53:01 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 03 11:53:01 2012 -0700"
      },
      "message": "Pass changed NetworkInfo to LocationProvider.\n\nLocationProviders often rely on non-default networks, so pass the\nnetwork that actually changed, instead of the default.\n\nBug: 6929692\nChange-Id: I31d9eec792e07259282aa1bb57ec66c01962df64\n"
    },
    {
      "commit": "3185b376b0b9b8c393fb8300b18df441a3481ad0",
      "tree": "29830b1310100b0b03a062d67e0d0a7a5807d363",
      "parents": [
        "72c30e2cec3ad67d4673baa31291ea0ddd712786",
        "bc632a28e4fba4a659baf39b9fd3d06d10cfda97"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Fri Aug 03 08:36:41 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 03 08:36:41 2012 -0700"
      },
      "message": "Merge \"Re-enable dreams: frameworks/base\" into jb-mr1-dev"
    },
    {
      "commit": "7de53949bc89e1e79ed63d730beaa49f838038b6",
      "tree": "ecf844ccd7f15112c2311034700f362eff0ed207",
      "parents": [
        "187019c51fb1f8f79d4d5919facbc8d569ff844e",
        "9de4936c99b979f6010440b043edc6d6142d1980"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Aug 03 08:25:41 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 03 08:25:42 2012 -0700"
      },
      "message": "Merge \"Add features to DisplayManager.\" into jb-mr1-dev"
    },
    {
      "commit": "bc632a28e4fba4a659baf39b9fd3d06d10cfda97",
      "tree": "7673f90d9f6a3aa9c47ea5c3a926ffa155e60f0c",
      "parents": [
        "187019c51fb1f8f79d4d5919facbc8d569ff844e"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Jul 31 08:28:12 2012 -0400"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Fri Aug 03 08:51:17 2012 -0400"
      },
      "message": "Re-enable dreams: frameworks/base\n\nEnable feature in config. Expose Dream in public api for unbundled apps.\nUnhide package.  Add isDreaming() method to service.\n\nRe-arrange the Dream api a bit.  (use onStart as hook for subclasses).\nCoordinate properly with power manager.\n\nReplace old dock mode (don\u0027t fire old intent).\n\nChange-Id: I1318d20cc1613e5d862f2913f2fcdc9719302cf7\nBug: 6921930\n"
    },
    {
      "commit": "329465c6b2407ee086a171cac1a3581f83dbb048",
      "tree": "0d69eee745692b133e3f2c955561c0e09807ffb5",
      "parents": [
        "478923885da8fac0c1e0a8b7d85b98d1988504bc",
        "b4163a6e12ee7100c758c6d3d062ade1f2843fce"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 02 19:14:39 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 02 19:14:39 2012 -0700"
      },
      "message": "Merge \"Add APIs for interacting across users.\" into jb-mr1-dev"
    },
    {
      "commit": "b4163a6e12ee7100c758c6d3d062ade1f2843fce",
      "tree": "2948e83dec184906f2c44ee332431f219b78359d",
      "parents": [
        "b1758cf8cd007bfffb3d8adceca25f3b0c82bd77"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 02 18:31:26 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 02 19:07:57 2012 -0700"
      },
      "message": "Add APIs for interacting across users.\n\n- Expose the existing Context.sendBroadcast() as\n  Context.sendBroadcastAsUser().\n- Add new android:singleUser attribute for services.\n- Add new INTERACT_ACROSS_USERS_FULL permission for full\n  system-level access to cross-user interface (allows\n  sendBroadcastAsUser() to send to any receiver).\n- Add new INTERACT_ACROSS_USERS_FULL permission for\n  more restricted cross-user interaction: this is required\n  for android:singleUser, and allows you to use\n  sendBroadcastAsUser() but only to send to your own\n  receivers.\n\nChange-Id: I0de88f6718e9505f4de72e3f45d29c0f503b76e9\n"
    },
    {
      "commit": "f95f3ebf12bf9ee23b8ed4e940ab007cbc22f3f3",
      "tree": "1cf63ea99447d0336101e56e92b2c8273296b316",
      "parents": [
        "7786687e7eb17c7670dacb08eca3346a945232aa",
        "e7c1d88fba71122038d516d3b758d68f9f92fa64"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 02 14:58:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 02 14:58:47 2012 -0700"
      },
      "message": "Merge \"Allow access to display manager service from isolated processes.\" into jb-mr1-dev"
    }
  ],
  "next": "e7c1d88fba71122038d516d3b758d68f9f92fa64"
}
