)]}'
{
  "log": [
    {
      "commit": "bb95cb9f997afc34d54f3d5bcb247c44f368b62b",
      "tree": "0f11d1ef9b1427fc6b608bd8f1b92267b963f105",
      "parents": [
        "f1ffb4f7fe2a8e9fd5df947a8071eccdeabaefd4"
      ],
      "author": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Wed Aug 29 10:43:21 2012 -0700"
      },
      "committer": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Tue Sep 04 18:16:24 2012 -0700"
      },
      "message": "Fix GPS settings change listener in LocManager\n\nBug 7051185\n\n- Register a ContentObserver to track settings changes rather than\n  opening up a Cursor with a ContentQueryMap.\n\n- Move updateProvidersLocked into init to assure that the\n  ContentObserver does not miss any changes.\n\n- Move blacklist and fudger creation before loadProvidersLocked to\n  improve code readability.\n\nChange-Id: I4d3e19fa33401c384bc2b00658d4336ea119e0e5\n"
    },
    {
      "commit": "7950d081ac945d97427264f2a0531607097c2c71",
      "tree": "860e75fb63d2312907ed21c6ae4a810347dbdd15",
      "parents": [
        "0116136f4ca252c31a96a055eea4be8a52b32f3b",
        "19d59bc5ad877e9b1544ab13a08282b7b384fefb"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Sep 04 16:35:46 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 16:35:46 2012 -0700"
      },
      "message": "Merge \"Make mLayoutNeeded per-Display.\" into jb-mr1-dev"
    },
    {
      "commit": "19d59bc5ad877e9b1544ab13a08282b7b384fefb",
      "tree": "3ed53a69ada4b472a70c9f3cd27d874cd57a1b91",
      "parents": [
        "34a75df63533914bbca95a82d2c89ca374b2645d"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Sep 04 11:15:56 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Sep 04 16:18:52 2012 -0700"
      },
      "message": "Make mLayoutNeeded per-Display.\n\nSwitch from a global mLayoutNeeded to one for each Display so that\nwe don\u0027t run layout on Displays that haven\u0027t changed.\n\nChange-Id: Ib65c5c667933cceacc46b94f4e6e6bd613d5cb35\n"
    },
    {
      "commit": "175ae55c0d62b6adbc9b3cc215ad2e65a8b40cc3",
      "tree": "5892f9df667e5fed3fc3f18be7fb075869883632",
      "parents": [
        "690420831c9b60f7fb2f1100aeef67ad79bfd3bb",
        "b8ec470617590fa2025db869e8e80dcce8eaec23"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Tue Sep 04 15:20:41 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 15:20:42 2012 -0700"
      },
      "message": "Merge \"Update DevicePolicyManager with ability to disable keyguard widgets\" into jb-mr1-dev"
    },
    {
      "commit": "690420831c9b60f7fb2f1100aeef67ad79bfd3bb",
      "tree": "d47f691a0548ed8e5e047f62f8892b03d788b7d7",
      "parents": [
        "85399cc606a456e7b439352aea58d4b679d8f1ac",
        "68ed7e448d36c2f82062add8a95dfdf995873557"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Tue Sep 04 15:09:09 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 15:09:09 2012 -0700"
      },
      "message": "Merge \"Enable package verification\" into jb-mr1-dev"
    },
    {
      "commit": "035ce2ca92742894f7f906c93d7d217c647aa19a",
      "tree": "091278302dd86f6009db3d86ff95dd607fef8c11",
      "parents": [
        "167611811d4fd6318bc366128590701274488e84",
        "5f7979993979466c79ab4f38d83c6f2aca361662"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Tue Sep 04 15:01:03 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 15:01:03 2012 -0700"
      },
      "message": "Merge \"Add support for \"-rtl\" in resources\" into jb-mr1-dev"
    },
    {
      "commit": "b8ec470617590fa2025db869e8e80dcce8eaec23",
      "tree": "d4341cbea549ffbfad089d16a4b337bfca7688ab",
      "parents": [
        "d2a8df9541c198d555ef6a50347acb9160509863"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Fri Aug 31 17:19:10 2012 -0700"
      },
      "committer": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Tue Sep 04 13:52:36 2012 -0700"
      },
      "message": "Update DevicePolicyManager with ability to disable keyguard widgets\n\nChange-Id: I5876e9e180b2a995aaa355fbbb2b67cebb86104d\n"
    },
    {
      "commit": "68ed7e448d36c2f82062add8a95dfdf995873557",
      "tree": "124e41a5a82df3c8f29b0142359de232de107715",
      "parents": [
        "d2a8df9541c198d555ef6a50347acb9160509863"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Tue Sep 04 13:42:32 2012 -0700"
      },
      "committer": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Tue Sep 04 13:42:32 2012 -0700"
      },
      "message": "Enable package verification\n\nTurn on package verification, if a verifier exists. Play app is now a verifier.\n\nBug: 7064853\nChange-Id: I11f6b108c507ea6236038b1415eb9064ca4c3c6d\n"
    },
    {
      "commit": "d2a8df9541c198d555ef6a50347acb9160509863",
      "tree": "864d7d2731e8b6d5536726f42d8c67be3f29c621",
      "parents": [
        "34a75df63533914bbca95a82d2c89ca374b2645d",
        "b8839dd35723235469a4e805682378c84f50a4fb"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 04 13:11:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 13:11:49 2012 -0700"
      },
      "message": "Merge \"Fix issue #7097984 java.lang.SecurityException: Permission Denial:\" into jb-mr1-dev"
    },
    {
      "commit": "34a75df63533914bbca95a82d2c89ca374b2645d",
      "tree": "e90aba05a2b2943fe2092689d29f469aba1fa38c",
      "parents": [
        "ed48f9f8b253b3140607cb97d623093b3a90e897",
        "ea3a09a5b9c8ae56b0c4975c7a7039a05d4c0b3c"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Sep 04 12:32:11 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 12:32:11 2012 -0700"
      },
      "message": "Merge \"Remove single pass actions from display loop.\" into jb-mr1-dev"
    },
    {
      "commit": "ed48f9f8b253b3140607cb97d623093b3a90e897",
      "tree": "17a5f3b9e4953f1939b7ab8c042d3680b07385ec",
      "parents": [
        "e32bb6c9c6c27fc8d9df513994d996ceb1f226f4",
        "76a7165719dc3ccce902953f6244e2c2668aa753"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Sep 04 12:30:45 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 12:30:45 2012 -0700"
      },
      "message": "Merge \"Change layout inner loop order for multi display.\" into jb-mr1-dev"
    },
    {
      "commit": "b8839dd35723235469a4e805682378c84f50a4fb",
      "tree": "9d17b1b72650ec1beae76b71ca8a85e5d59801a9",
      "parents": [
        "b788556bfde48c1f94c46bda4f4b8d576d5cfb81"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 04 10:55:44 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 04 12:11:21 2012 -0700"
      },
      "message": "Fix issue #7097984 java.lang.SecurityException: Permission Denial:\n\nbroadcast asks to run as user -1 but is calling from user 0; this requires\n\nAlso improve part of issue #7087789: Local denial of service via\nlow-permissioned apps\n\nNo longer allow closeSystemDialogs() from background processes.\n\nChange-Id: I752d5a1d51be0b69fde6999d6659835e5bde3efe\n"
    },
    {
      "commit": "7d69e8bd2168a81a5cb68da99d025c6f290bf166",
      "tree": "2300fc73fb368cf9699821bc0a8d489840896865",
      "parents": [
        "9fc4b356a4552336f661bf4dfaaa19a251194cdb",
        "20e809870d8ac1e5b848f2daf51b2272ef89bdfc"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 04 10:40:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 10:40:07 2012 -0700"
      },
      "message": "Merge \"Add registering for explicit users.\" into jb-mr1-dev"
    },
    {
      "commit": "20e809870d8ac1e5b848f2daf51b2272ef89bdfc",
      "tree": "c863b6c684d1d3b21752880bc9f52bd749545d01",
      "parents": [
        "2701f325a6d4acd920637d2ff6fd6972a9cf836b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 31 19:00:44 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 04 10:39:21 2012 -0700"
      },
      "message": "Add registering for explicit users.\n\nNew API to register as an explicit user, which allows you to\nalso select ALL to see broadcasts for all users.\n\nNew BroadcastReceiver API to find out which user the broadcast\nwas sent to.\n\nUse this in app widget service to handle per-user package broadcasts\nand boot completed broadcasts correctly.\n\nChange-Id: Ibbe28993bd4aa93900c79e412026c27863019eb8\n"
    },
    {
      "commit": "ea3a09a5b9c8ae56b0c4975c7a7039a05d4c0b3c",
      "tree": "74b75b5ee6903c874489bf708f7d1fcb961fbca4",
      "parents": [
        "76a7165719dc3ccce902953f6244e2c2668aa753"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Sep 04 09:49:35 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Sep 04 09:49:35 2012 -0700"
      },
      "message": "Remove single pass actions from display loop.\n\nThe WindowAnimator loop over each Display contained actions that\nonly needed to be done one time but were instead done once per loop.\n\nChange-Id: Ia916b08cdb7670686e6295dbcef6a5ff27474099\n"
    },
    {
      "commit": "76a7165719dc3ccce902953f6244e2c2668aa753",
      "tree": "15774855504edc0b7985da491abce291520a10be",
      "parents": [
        "e94831e5ed4aa3b1ebc5444cc1b16cdab8cb92f8"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Sep 03 23:23:58 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Sep 04 08:59:39 2012 -0700"
      },
      "message": "Change layout inner loop order for multi display.\n\nThe inner loop that ran over each display had a few problems:\n- The Surface transaction was starting and stopping between each\ndisplay.\n- The layout change bits were being applied globally so all\ndisplays were layed out when only individual displays needed to be.\n- Wallpaper and input actions were being applied each time through\nthe display loop rather than once only for the default display.\n\nChange-Id: I924252bab28c426222a4bb73693accc4b21cecbe\n"
    },
    {
      "commit": "e94831e5ed4aa3b1ebc5444cc1b16cdab8cb92f8",
      "tree": "a59b5570ec5855803c469dd70baa37619ae836b5",
      "parents": [
        "0baaac5e9adf3ee280ae1239e2e58754a9d2b099",
        "398341927f3dca68d71024483aa276d10af4c080"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sun Sep 02 07:51:28 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Sep 02 07:51:28 2012 -0700"
      },
      "message": "Merge \"Minor refactors.\" into jb-mr1-dev"
    },
    {
      "commit": "398341927f3dca68d71024483aa276d10af4c080",
      "tree": "1635c135120968daa998c7fd4d179a8f315663ff",
      "parents": [
        "ce20a45e03c2748e79daea187f7d21c33bdfe643"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sun Sep 02 07:47:24 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sun Sep 02 07:47:24 2012 -0700"
      },
      "message": "Minor refactors.\n\n- Refactor DragState to take Display instead of DisplayContent.\n- Rename xxxAnimationLw methods in WindowManagerPolicy to xxxPostLayout\nto reflect animation refactoring.\n\nChange-Id: I502f2aa45a699ad395a249a12abf9843294623f0\n"
    },
    {
      "commit": "2701f325a6d4acd920637d2ff6fd6972a9cf836b",
      "tree": "a6f63da919475d17f8c55d0c9b2c6a331b72a29f",
      "parents": [
        "430e5b23cf702d57aa662972c43d546806147d76",
        "4120375d46091df8527bb701882e056fbb0e6b06"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 31 16:23:41 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 31 16:23:47 2012 -0700"
      },
      "message": "Merge \"Remove Binder.getOrigCallingUid().\" into jb-mr1-dev"
    },
    {
      "commit": "430e5b23cf702d57aa662972c43d546806147d76",
      "tree": "2bb280ea48ed346ff4667aab039dee19531e4988",
      "parents": [
        "ce20a45e03c2748e79daea187f7d21c33bdfe643",
        "61f57379ca2c5b6290c8da7548fa17128f7ab24f"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 31 16:22:52 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 31 16:22:52 2012 -0700"
      },
      "message": "Merge \"Centralize the creation of the user system directory\" into jb-mr1-dev"
    },
    {
      "commit": "f83ec838915c13158ddfda0cf4da5865b260b9c6",
      "tree": "81d0e7f24330cd5a28d5bfd6e899acee6388b562",
      "parents": [
        "3b9a4160c99b2375b4874ccabf92eac68be06af6",
        "4ed8fe75e1dde1a2b9576f3862aecc5a572c56b5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 31 15:49:11 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 31 15:49:17 2012 -0700"
      },
      "message": "Merge \"More improvements to the display manager.\" into jb-mr1-dev"
    },
    {
      "commit": "4ed8fe75e1dde1a2b9576f3862aecc5a572c56b5",
      "tree": "d51a8657c4ca101b5a82c2592d89d789643d388f",
      "parents": [
        "a492c3a7b2c18426fd0cb4d017eacbc368195dc5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 30 18:18:29 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 31 15:42:46 2012 -0700"
      },
      "message": "More improvements to the display manager.\n\nAdded more complete support for logical displays with\nsupport for mirroring, rotation and scaling.\n\nImproved the overlay display adapter\u0027s touch interactions.\n\nA big change here is that the display manager no longer relies\non a single-threaded model to maintain its synchronization\ninvariants.  Unfortunately we had to change this so as to play\nnice with the fact that the window manager wants to own\nthe surface flinger transaction around display and surface\nmanipulations.  As a result, the display manager has to be able\nto update displays from the context of any thread.\n\nIt would be nice to make this process more cooperative.\nThere are already several components competing to perform\nsurface flinger transactions including the window manager,\ndisplay manager, electron beam, overlay display window,\nand mouse pointer.  They are not manipulating the same surfaces\nbut they can collide with one another when they make global\nchanges to the displays.\n\nChange-Id: I04f448594241f2004f6f3d1a81ccd12c566bf296\n"
    },
    {
      "commit": "61f57379ca2c5b6290c8da7548fa17128f7ab24f",
      "tree": "1aadc5b172ecf5689455e03e5ab635b709d5021f",
      "parents": [
        "00453e7a0182b50cf01e65c97650b526284fe084"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 31 12:12:28 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 31 15:33:21 2012 -0700"
      },
      "message": "Centralize the creation of the user system directory\n\nEnvironment.getUserSystemDirectory(int userId)\n\nUse it all relevant places that was hardcoding it.\nAlso, wipe out the user\u0027s system directory when user is removed, otherwise old state\nmight be transferred to a new user.\n\nChange-Id: I788ce9c4cf9624229e65efa7047bc0c019ccef0a\n"
    },
    {
      "commit": "4120375d46091df8527bb701882e056fbb0e6b06",
      "tree": "30a3e6bb32f1912b8ab687e2ede8cb1cb18fe908",
      "parents": [
        "176d105d2f71198966b566d36d4e856a797695c7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 31 14:05:51 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 31 15:11:13 2012 -0700"
      },
      "message": "Remove Binder.getOrigCallingUid().\n\nReplaced all remaining places that used it with explicit user\nspecification.\n\nWhile doing this, I ran into stuff that was creating PendingIntent\nobjects (that now need to specify the explicit user they are for),\nwhich are also posting notifications...  but have no way to specify\nthe user for the notification.\n\nSo the notification manager in the system process now also gets a\nformal concept of a user associated with the notification, which\nis passed in to all the necessary aidl calls.  I also removed the\nold deprecated aidl interface for posting/cancelling notifications,\nsince we now always need a user supplied.\n\nThere is more work that needs to be done here, though.  For example\nI think we need to be able to specify USER_ALL for a notification that\nshould be shown to all users (such as low storage or low battery).\nAlong with that, the PendingIntent creation needs to be tweaked to\nbe able to handle USER_CURRENT by evaluating the user at the point the\npending intent is sent.\n\nThat\u0027s for another change, however.\n\nChange-Id: I468e14dce8def0e13e0870571e7c31ed32b6310c\n"
    },
    {
      "commit": "897798225d9c48bd3424757059318ed1eb3207de",
      "tree": "b2dff460a81e2dcd051f8c3de9846fcaa818cd16",
      "parents": [
        "8c890f8a69ea1e6f8f7fe989a610ffe738e91866"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Aug 31 14:40:03 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Aug 31 14:44:25 2012 -0700"
      },
      "message": "Don\u0027t set the time zone under the caller\u0027s identity\n\n...otherwise you crash trying to send a broadcast to all users.\n\nChange-Id: If627eeb3eadb1052242c986fe24482d87c8fc093\n"
    },
    {
      "commit": "00453e7a0182b50cf01e65c97650b526284fe084",
      "tree": "7123ea08fff84875d71b6d547f10103d66931ce0",
      "parents": [
        "0cc2e9b2e9ff3697388c966d658c9dc5a7293fda",
        "d0dd63dcaed8f63009c03907f38269feb798f305"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 31 00:41:14 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 31 00:41:15 2012 -0700"
      },
      "message": "Merge \"Tweak overlay display adapter scaling.\" into jb-mr1-dev"
    },
    {
      "commit": "a2875f481bc40fb5c7e5ae2d475dfb6d557294c0",
      "tree": "7d3395e0b85cb76136e51379f3b5106ad21dc767",
      "parents": [
        "6cab6005a8746bdf86fd98a2a004f08d9473a445",
        "d1b5cfc94ae940f42be352e7ed98c21c973471b2"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Thu Aug 30 20:35:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 30 20:35:08 2012 -0700"
      },
      "message": "Merge \"Notify verifiers that verification is complete\" into jb-mr1-dev"
    },
    {
      "commit": "f203aeef993b0f4ce65c9630d06bbd50a504e89f",
      "tree": "f1624ae664c7f882e9f320dadbab4eea52b6a4ad",
      "parents": [
        "b2dd4e87ae8ac6a0402b7a0ed37201f27bcb1b9c"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Aug 29 18:41:53 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Aug 30 16:08:23 2012 -0700"
      },
      "message": "Enforce permissions for calls with specified userId\n\nFix a couple of places where incorrect userIds were being passed in.\n\nChange-Id: I398c676e0488ff7e584be96e96c8b32652134238\n"
    },
    {
      "commit": "b2dd4e87ae8ac6a0402b7a0ed37201f27bcb1b9c",
      "tree": "0a851d3b9e7dd8c1f41404e4be2eb34e679ad98f",
      "parents": [
        "0fa814d7e6d16e68fa715175cf3122b19fd9e59c",
        "1a907db07ea105ea65e146713f436ed072d7084b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Thu Aug 30 16:04:19 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 30 16:04:19 2012 -0700"
      },
      "message": "am 1a907db0: am 862c3835: am 4b60a8d1: Merge \"Added check of ActivityInfo launch mode when starting activity.\"\n\n* commit \u00271a907db07ea105ea65e146713f436ed072d7084b\u0027:\n  Added check of ActivityInfo launch mode when starting activity.\n"
    },
    {
      "commit": "d1b5cfc94ae940f42be352e7ed98c21c973471b2",
      "tree": "17d17b61ad35f94a6a6db81432c271355c204c6b",
      "parents": [
        "0fa814d7e6d16e68fa715175cf3122b19fd9e59c"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Wed Aug 29 14:49:51 2012 -0700"
      },
      "committer": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Thu Aug 30 16:00:59 2012 -0700"
      },
      "message": "Notify verifiers that verification is complete\n\nSend the Intent.ACTION_PACKAGE_VERIFIED to all verifiers when\nverification is complete (either one verifier verified the package or a\ntimeout occurred). Details of what occurred is in a new extra,\nPackageManager.EXTRA_VERIFICATION_RESULT.\n\nBug: 7048930\nChange-Id: I4f9855a29b0eb6d77f469891402c69e2e8922945\n"
    },
    {
      "commit": "862c383530d64e6c493fb519f567dd5778d9d48c",
      "tree": "05dc04c43705026ebecf0c882f6427f9e35b057b",
      "parents": [
        "147ef9448540adaa4312e3cbc01adfc3c7902f50",
        "4b60a8d1b8b5f8fd04df5749ce225ed57e0a1a44"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Thu Aug 30 15:59:40 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 30 15:59:40 2012 -0700"
      },
      "message": "am 4b60a8d1: Merge \"Added check of ActivityInfo launch mode when starting activity.\"\n\n* commit \u00274b60a8d1b8b5f8fd04df5749ce225ed57e0a1a44\u0027:\n  Added check of ActivityInfo launch mode when starting activity.\n"
    },
    {
      "commit": "4b60a8d1b8b5f8fd04df5749ce225ed57e0a1a44",
      "tree": "c82ecafbf59f3e913204c43551dd52a4b21abdf8",
      "parents": [
        "60d1e1a09e4603e24652e930597ab204855eaa77",
        "f363dfd26c304bca33f12065a9ed3de291193962"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Thu Aug 30 15:19:03 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 30 15:19:03 2012 -0700"
      },
      "message": "Merge \"Added check of ActivityInfo launch mode when starting activity.\""
    },
    {
      "commit": "73365695e4d169126c6932df8e8e932aefe6aaca",
      "tree": "28bf999c15a738287a7d8aac3e3cb7951848107c",
      "parents": [
        "d02239d1c05054e4a1e06009410a933a45c24d3e",
        "5ac72a29593ab9a20337a2225df52bdf4754be02"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 30 14:56:11 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 30 14:56:11 2012 -0700"
      },
      "message": "Merge \"Improve multi-user broadcasts.\" into jb-mr1-dev"
    },
    {
      "commit": "5ac72a29593ab9a20337a2225df52bdf4754be02",
      "tree": "dc5310e556b3662cb5f097b30e700a26d50a4db5",
      "parents": [
        "e217ee4d7a8223289a1af7363627c69956c46d41"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 29 18:32:08 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 30 14:33:22 2012 -0700"
      },
      "message": "Improve multi-user broadcasts.\n\nYou can now use ALL and CURRENT when sending broadcasts, to specify\nwhere the broadcast goes.\n\nSticky broadcasts are now correctly separated per user, and registered\nreceivers are filtered based on the requested target user.\n\nNew Context APIs for more kinds of sending broadcasts as users.\n\nUpdating a bunch of system code that sends broadcasts to explicitly\nspecify which user the broadcast goes to.\n\nMade a single version of the code for interpreting the requested\ntarget user ID that all entries to activity manager (start activity,\nsend broadcast, start service) use.\n\nChange-Id: Ie29f02dd5242ef8c8fa56c54593a315cd2574e1c\n"
    },
    {
      "commit": "4698e36db68273b556867522b1aaffabb8099518",
      "tree": "79028de4572af83c71ac5dcd04fcc1f290018ae3",
      "parents": [
        "8b300ed14f74a28ac7752d33b39bc7ac91bd9b26",
        "6ab3ea5f48abfd777d5bd18d92acc3bc766f78ce"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Aug 30 13:54:18 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 30 13:54:18 2012 -0700"
      },
      "message": "am 6ab3ea5f: am 147ef944: am 60d1e1a0: Merge \"Watchdog: Improvement of debuggability\"\n\n* commit \u00276ab3ea5f48abfd777d5bd18d92acc3bc766f78ce\u0027:\n  Watchdog: Improvement of debuggability\n"
    },
    {
      "commit": "147ef9448540adaa4312e3cbc01adfc3c7902f50",
      "tree": "0159724dc5fd7c090ac9fe9317c23f06592164fa",
      "parents": [
        "da5cd308028f8f6863bbe3631de91b96802695ec",
        "60d1e1a09e4603e24652e930597ab204855eaa77"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Aug 30 13:49:58 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 30 13:49:58 2012 -0700"
      },
      "message": "am 60d1e1a0: Merge \"Watchdog: Improvement of debuggability\"\n\n* commit \u002760d1e1a09e4603e24652e930597ab204855eaa77\u0027:\n  Watchdog: Improvement of debuggability\n"
    },
    {
      "commit": "e217ee4d7a8223289a1af7363627c69956c46d41",
      "tree": "be3b08c713d8662be094bdabfd8b7f2beffe837f",
      "parents": [
        "08db9df1af78dbe26af89f57c5e2777e1142b566"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Aug 28 16:23:01 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Aug 30 10:37:51 2012 -0700"
      },
      "message": "Access to all users\u0027 external storage.\n\nSystem services holding this permission have external storage bound\none level higher, giving them access to all users\u0027 files.\n\nBug: 7003520\nChange-Id: Ib2bcb8455740c713ebd01f71c9a2b89b4e642832\n"
    },
    {
      "commit": "9211b13c3268035b0da0c51ed2d6d5a578d45ff3",
      "tree": "f33918201873b96e2823c8e3c4fa9ca77058a9c6",
      "parents": [
        "ad955fe87f44b43dbb2842fdcbe4e62900b5a07f"
      ],
      "author": {
        "name": "rikard dahlman",
        "email": "rikard.dahlman@sonymobile.com",
        "time": "Tue Aug 28 16:12:38 2012 +0200"
      },
      "committer": {
        "name": "Kenneth Andersson",
        "email": "kenneth.andersson@sonymobile.com",
        "time": "Thu Aug 30 12:27:50 2012 +0200"
      },
      "message": "Watchdog: Improvement of debuggability\n\nIf the watchdog detects a problem the system server process\nis killed, that is followed by a crash. Because the crash is\ndone after the system server process is killed, the crash\ndon\u0027t contain info about the system server.\nThis improvement will make sure that the system is crashed\nbefore the system server process is killed.\nBehavior is only changed for eng and userdebug builds.\n\nChange-Id: I9f1c8fd8b03d0114032ed44fb582705ad0b49733\n"
    },
    {
      "commit": "428f53937efdc362b60d01592bd01c568691f70e",
      "tree": "9bf91a0b6d8445e6dc32125bcea8ab64fb16661a",
      "parents": [
        "a99e4caa94ed3261d11c650e778c7c9b26b3e590",
        "580dd31a68c65b4af68147d52d57f60e0bd52dbe"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Aug 29 22:33:45 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 29 22:33:45 2012 -0700"
      },
      "message": "Merge \"Locking when clearing VPN source rules.\" into jb-mr1-dev"
    },
    {
      "commit": "580dd31a68c65b4af68147d52d57f60e0bd52dbe",
      "tree": "79defc2d49d3c34728523968ba1b56c205eed932",
      "parents": [
        "0d43c567cea30e6fb7af0f7adadb1c620339c0f5"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Aug 29 22:27:39 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Aug 29 22:31:58 2012 -0700"
      },
      "message": "Locking when clearing VPN source rules.\n\nOtherwise lockdown VPN reset is racy and can bring down system_server.\n\nChange-Id: Ib8eecde1d0857a1669c3ca5506a46198c71b1b51\n"
    },
    {
      "commit": "a99e4caa94ed3261d11c650e778c7c9b26b3e590",
      "tree": "41c124086db076ee20e7aa468d7e2d3e6424d3ff",
      "parents": [
        "7808581ca3b462fb187aed6b0d1b86fb83a8a215",
        "35744c19f6b4e2fc8bbd6fe2c82cea7a76818dfd"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Aug 29 22:29:43 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 29 22:29:43 2012 -0700"
      },
      "message": "Merge \"Bind to screenshot service for current user.\" into jb-mr1-dev"
    },
    {
      "commit": "694121c4004e80deec71736481cfb03bd50e38f5",
      "tree": "32dd259891b706f101e2757758b5786e4eafbd99",
      "parents": [
        "c452a40eea5a8bc23b05201e70a9ca740ee9ceec",
        "317046a08784f0df75165ac1eaaf3d237704618e"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Aug 29 18:52:14 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 29 18:52:14 2012 -0700"
      },
      "message": "Merge \"Fix an NPE in PackageManager when getting the AppInfo for an app\" into jb-mr1-dev"
    },
    {
      "commit": "317046a08784f0df75165ac1eaaf3d237704618e",
      "tree": "84a84de97d748252a420773bb2d02a136df9986d",
      "parents": [
        "c479b55abe059776392af54685b77a825871781e"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Aug 29 18:48:08 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Aug 29 18:48:08 2012 -0700"
      },
      "message": "Fix an NPE in PackageManager when getting the AppInfo for an app\n\nBug: 7072043\nChange-Id: I37378b13820152434e7b3249e13c27001fe4ae5a\n"
    },
    {
      "commit": "d0dd63dcaed8f63009c03907f38269feb798f305",
      "tree": "097cb89bc3b7c1de8466dc93776c28c7df2fe824",
      "parents": [
        "29d8d267dd97f66d829478778de5e0c56b965a47"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 29 18:44:49 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 29 18:45:32 2012 -0700"
      },
      "message": "Tweak overlay display adapter scaling.\n\nChange-Id: I330fc019c5b3f4e03369e6f1c1a839a33f6ce0e3\n"
    },
    {
      "commit": "12631ec35eafc466e0deef315daa5fdfb5066372",
      "tree": "6881c386ff69eca08eae5e90b5199aa4f36a48a5",
      "parents": [
        "ffc45b7d5708e706aeb19454c5172136761d214b",
        "80a4af2bbc6af42ae605e454bf89558e564f5244"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 29 18:15:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 29 18:15:07 2012 -0700"
      },
      "message": "Merge \"Start implementing concept of \"running\" users.\" into jb-mr1-dev"
    },
    {
      "commit": "ffc45b7d5708e706aeb19454c5172136761d214b",
      "tree": "42b3d738e0ec8e55f8ecc97d7e9d36227d2ec2db",
      "parents": [
        "f404d10225a2df60eb118089f8f0e72ab5845d48",
        "509bf2d2cf60201149b4e7711bbcdede8b744791"
      ],
      "author": {
        "name": "Benoit Goby",
        "email": "benoit@android.com",
        "time": "Wed Aug 29 17:05:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 29 17:05:26 2012 -0700"
      },
      "message": "Merge \"UsbDebuggingManager: Fix restart when toggling USB debugging\" into jb-mr1-dev"
    },
    {
      "commit": "a28c18fc618e4bf58da6417166b1ee249dc16ea9",
      "tree": "4d4856b89e7572b09a462cc37cebbff1cdd6fa0f",
      "parents": [
        "402206b6e25af5d9e103cae215048c7a41d68d39",
        "6bfc88876ab575913299b477528225a4d7bf8232"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Wed Aug 29 15:55:43 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 29 15:55:43 2012 -0700"
      },
      "message": "Merge \"Fix DHCP handling at disconnect/reconnect\" into jb-mr1-dev"
    },
    {
      "commit": "d5ea3b464795d4e6adbdd174d1bd2f78b628e280",
      "tree": "0660fe4a3b1da16acabfee6874051887ba056a16",
      "parents": [
        "0552cbcf29f266f608e8326bc467b6afb13b7f3a",
        "bd6e1500aedc5461e832f69e76341bff0e55fa2b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 29 15:43:54 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 29 15:43:55 2012 -0700"
      },
      "message": "Merge \"Add initial multi-display support.\" into jb-mr1-dev"
    },
    {
      "commit": "509bf2d2cf60201149b4e7711bbcdede8b744791",
      "tree": "73135d27fc838b06741c019e2fd4415951146b46",
      "parents": [
        "0552cbcf29f266f608e8326bc467b6afb13b7f3a"
      ],
      "author": {
        "name": "Benoit Goby",
        "email": "benoit@android.com",
        "time": "Wed Aug 29 15:23:30 2012 -0700"
      },
      "committer": {
        "name": "Benoit Goby",
        "email": "benoit@android.com",
        "time": "Wed Aug 29 15:43:51 2012 -0700"
      },
      "message": "UsbDebuggingManager: Fix restart when toggling USB debugging\n\nChange-Id: Iaaec9162b03c4ea77735d096eec670392c61308a\n"
    },
    {
      "commit": "6bfc88876ab575913299b477528225a4d7bf8232",
      "tree": "b0d3577fa9a3ba17766da54d930d51b066544d34",
      "parents": [
        "4bbb13976e54f6325cb013882891c02adea61ec5"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Wed Aug 29 15:35:57 2012 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Wed Aug 29 15:35:57 2012 -0700"
      },
      "message": "Fix DHCP handling at disconnect/reconnect\n\nWifi can have a quick disconnection followed by a reconnection. We used to\ncreate a new DHCP state machine thread for every new connection and\nnever really waited until it quit after disconnect. This may have lead to\nsituations where repeated disconnect/reconnects resulted in multiple dhcp\nstart calls.\n\nWe now keep the statemachine after a disconnect and only shut it at supplicant\nstop.\n\nBug: 6417686\nChange-Id: Icf66efdc654be886e3eb46c81f09f8cce536f2f6\n"
    },
    {
      "commit": "bd6e1500aedc5461e832f69e76341bff0e55fa2b",
      "tree": "a7f6e0a3524872002f2904cc43d926166c3c4515",
      "parents": [
        "c53abc4d42a707caddf7ec9bb7d041125a09dbd7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 28 03:27:37 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 29 15:34:17 2012 -0700"
      },
      "message": "Add initial multi-display support.\n\nSplit the DisplayManager into two parts.  One part is bound\nto a Context and takes care of Display compatibility and\ncaching Display objects on behalf of the Context.  The other\npart is global and takes care of communicating with the\nDisplayManagerService, handling callbacks, and caching\nDisplayInfo objects on behalf of the process.\n\nImplemented support for enumerating Displays and getting\ncallbacks when displays are added, removed or changed.\n\nElaborated the roles of DisplayManagerService, DisplayAdapter,\nand DisplayDevice.  We now support having multiple display\nadapters registered, each of which can register multiple display\ndevices and configure them dynamically.\n\nAdded an OverlayDisplayAdapter which is used to simulate\nsecondary displays by means of overlay windows.  Different\nconfigurations of overlays can be selected using a new\nsetting in the Developer Settings panel.  The overlays can\nbe repositioned and resized by the user for convenience.\n\nAt the moment, all displays are mirrors of display 0 and\nno display transformations are applied.  This will be improved\nin future patches.\n\nRefactored the way that the window manager creates its threads.\nThe OverlayDisplayAdapter needs to be able to use hardware\nacceleration so it must share the same UI thread as the Keyguard\nand window manager policy.  We now handle this explicitly as\npart of starting up the system server.  This puts us in a\nbetter position to consider how we might want to share (or not\nshare) Loopers among components.\n\nOverlay displays are disabled when in safe mode or in only-core\nmode to reduce the number of dependencies started in these modes.\n\nChange-Id: Ic2a661d5448dde01b095ab150697cb6791d69bb5\n"
    },
    {
      "commit": "37ce5c5d5e8216f02230aeb89b147c0395e18329",
      "tree": "c3c3cf3870f813deb586e5c6d0af0d8cfcb9fc5e",
      "parents": [
        "69626dab17f9e059cfa2e8c3ce4ec9aaa5f9853e"
      ],
      "author": {
        "name": "Benoit Goby",
        "email": "benoit@android.com",
        "time": "Wed Aug 29 13:49:07 2012 -0700"
      },
      "committer": {
        "name": "Benoit Goby",
        "email": "benoit@android.com",
        "time": "Wed Aug 29 13:52:17 2012 -0700"
      },
      "message": "UsbDebuggingManager: add missing break in switch\n\nBug: 7079044\nChange-Id: Icf4090e79af47db7d068981537c97f2028d8e405\n"
    },
    {
      "commit": "4e2820c22b3f8b330f8c6d04562037c77845716d",
      "tree": "89394507daae14f50123bcf71a4b1f49352ac14f",
      "parents": [
        "c479b55abe059776392af54685b77a825871781e"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Aug 28 22:17:23 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Aug 28 22:45:17 2012 -0700"
      },
      "message": "Fix adding live wallpaper in a second user\n\nWhen the second user downloads a new wallpaper service, Wallpaper\nservice needs to query the correct user\u0027s package state to figure\nout if it is available and bind to it.\n\nChange-Id: Ifb95db1c859887f996f5b2e821b4b46510ee7016\n"
    },
    {
      "commit": "c479b55abe059776392af54685b77a825871781e",
      "tree": "11295db963c571b488ee2d23045d0f3e88233284",
      "parents": [
        "7af0c166f01f80dbe28339c46b1d381837f92b73",
        "4ccbdd17704e8837f8a8fcc152e8de499b504ff6"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Aug 28 17:16:27 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 28 17:16:28 2012 -0700"
      },
      "message": "Merge \"Check proximity detector before powering off.\" into jb-mr1-dev"
    },
    {
      "commit": "4ccbdd17704e8837f8a8fcc152e8de499b504ff6",
      "tree": "ee965140e17da2ce61ce606f897e0ade541d1a57",
      "parents": [
        "ac137b3211818f9e72f9ffbaf541ad8a1ef27eb1"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Aug 28 17:12:52 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Aug 28 17:12:52 2012 -0700"
      },
      "message": "Check proximity detector before powering off.\n\nDo not automatically power off if the proximity detector wakelock is\nactive.\n\nFixes bug 7047455.\n\nChange-Id: I44e30bf388292e5c476dfb5d0de9226d21853e4d\n"
    },
    {
      "commit": "c3815a5679c21a6b09c2deaa6baedd124f9e717a",
      "tree": "b38d4026b393a6795b600c763f3d91a226b1eb7c",
      "parents": [
        "b5b2acec806a3acfbecb63839f8da431e8a9daab",
        "4ea60693236d73fa2d9b5bf25deeb6d9b602ed30"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Aug 28 16:56:18 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 28 16:56:19 2012 -0700"
      },
      "message": "Merge \"Fix PendingIntent caching for multiuser\" into jb-mr1-dev"
    },
    {
      "commit": "35744c19f6b4e2fc8bbd6fe2c82cea7a76818dfd",
      "tree": "72e21b8f56cb797fc0b88ec8698ab5a186c6e536",
      "parents": [
        "0d43c567cea30e6fb7af0f7adadb1c620339c0f5"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Aug 28 16:48:05 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Aug 28 16:49:10 2012 -0700"
      },
      "message": "Bind to screenshot service for current user.\n\nLet apps bindService() across user boundaries if they hold the\nINTERACT_ACROSS_USERS_FULL permission.\n\nBug: 7012034\nChange-Id: I2047d8318e1de47bfae7470d1dbc6fe5cfe44fdc\n"
    },
    {
      "commit": "80a4af2bbc6af42ae605e454bf89558e564f5244",
      "tree": "3cd054c0e9576c9fda33fc36670ef10458f71ee8",
      "parents": [
        "def8b0f011b5b2b02235063d5021ddfd58aa0baf"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 27 19:18:31 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 28 16:30:55 2012 -0700"
      },
      "message": "Start implementing concept of \"running\" users.\n\nThe activity manager now keeps track of which users are running.\n\nInitially, only user 0 is running.\n\nWhen you switch to another user, that user is started so it is\nrunning.  It is only at this point that BOOT_COMPLETED is sent\nfor that user and it is allowed to execute anything.\n\nYou can stop any user except user 0, which brings it back to the\nsame state as when you first boot the device.  This is also used\nto be able to more cleaning delete a user, by first stopping it\nbefore removing its data.\n\nThere is a new broadcast ACTION_USER_STOPPED sent when a user is\nstopped; system services need to handle this like they currently\nhandle ACTION_PACKAGE_RESTARTED when individual packages are\nrestarted.\n\nChange-Id: I89adbd7cbaf4a0bb72ea201385f93477f40a4119\n"
    },
    {
      "commit": "def8b0f011b5b2b02235063d5021ddfd58aa0baf",
      "tree": "79450cfac58ebe17ae7a64a55d3899f1051db1b4",
      "parents": [
        "b210018760997ee76940080b3257dda0958b681f",
        "377de7b13e6706911cca1d6826b2e4665edd60d4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 28 16:01:52 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 28 16:01:53 2012 -0700"
      },
      "message": "Merge \"Fix infinite loop when uninstalling apps.\" into jb-mr1-dev"
    },
    {
      "commit": "377de7b13e6706911cca1d6826b2e4665edd60d4",
      "tree": "471588a5420e21751a613216d0b72123e8b3a16b",
      "parents": [
        "0e17e5bc43373ff9dd8d567f876a26f990ed638e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 28 15:57:33 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 28 15:57:33 2012 -0700"
      },
      "message": "Fix infinite loop when uninstalling apps.\n\nChange-Id: Ibdf7fa832529a358d1115fc300651101c5185484\n"
    },
    {
      "commit": "2deaa3698d33d428b527329537440ab65ae8dced",
      "tree": "61269ae429f69cd0e3fcbce298bf2e229c1e5431",
      "parents": [
        "b1a1e5ca7d3a2a93d6741db40aeba1467a8631cb",
        "7e67151b912622f8a279ab1523a9bcf26ebaff3d"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Tue Aug 28 15:14:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 28 15:14:26 2012 -0700"
      },
      "message": "Merge \"Add permission checks for Verification API calls\" into jb-mr1-dev"
    },
    {
      "commit": "4ea60693236d73fa2d9b5bf25deeb6d9b602ed30",
      "tree": "82af0e35845f7bd497dfa879c9936db376243f82",
      "parents": [
        "70574efd8f7105eb73a6ffe31992ed3c5971c8cc"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Aug 28 14:34:53 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Aug 28 14:34:53 2012 -0700"
      },
      "message": "Fix PendingIntent caching for multiuser\n\nStore the userId in the PendingIntentRecord.Key, so that it doesn\u0027t match\nan identical pending intent from another user.\n\nChange-Id: Icfc39e0f717c902dc3a60bdf5283a3402bbd2eaa\n"
    },
    {
      "commit": "7e67151b912622f8a279ab1523a9bcf26ebaff3d",
      "tree": "04e046f659971b2c62115755be7265b8fe0b5521",
      "parents": [
        "ac137b3211818f9e72f9ffbaf541ad8a1ef27eb1"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Mon Aug 27 14:44:16 2012 -0700"
      },
      "committer": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Tue Aug 28 14:00:46 2012 -0700"
      },
      "message": "Add permission checks for Verification API calls\n\nEnsure that only applications with\nandroid.Manifest.permission.PACKAGE_VERIFICATION_AGENT can call application\nverification APIs, like PackageManager.verifyPendingInstall and\nPackageManager.extendVerificationTimeout\n\nBug: 7049083\nChange-Id: I5fc28b37e864d67cd319a1ed9d03a90dd15ad052\n"
    },
    {
      "commit": "da6da0907b28d4704aabbdb1bbeb4300954670d1",
      "tree": "58a2b58cf777d02d0d89cc8f54b0ce5d29a9c5b2",
      "parents": [
        "10a0df8459d22b29fb9163071e8cbc2bb7194393"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Aug 16 12:49:23 2012 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Mon Aug 27 22:27:06 2012 -0700"
      },
      "message": "Captive portal handling\n\nWe now notify the user of a captive portal before switching to the network as default.\nThis allows background applications to continue to work until the user confirms he\nwants to sign in to the captive portal.\n\nAlso, moved out captive portal handling out of wifi as a seperate component.\n\nChange-Id: I7c7507481967e33a1afad0b4961688bd192f0d31\n"
    },
    {
      "commit": "10a0df8459d22b29fb9163071e8cbc2bb7194393",
      "tree": "0314b2669b5106df7e023639377f6841ed21558d",
      "parents": [
        "bf3218f64de1692ca26c67b1911af856d81e186c",
        "8bf06edac2088ad100e67dcb00a46d3f0f95c126"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Aug 27 19:33:42 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 27 19:33:42 2012 -0700"
      },
      "message": "Merge \"Relax permission requirement for sending broadcasts to other users\" into jb-mr1-dev"
    },
    {
      "commit": "8bf06edac2088ad100e67dcb00a46d3f0f95c126",
      "tree": "37334aee97da6939d9932e9733c8c8e6838e9bc6",
      "parents": [
        "81efbb30f07d3c2d48b43659dd443ceb625505d2"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Aug 27 19:30:30 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Aug 27 19:30:30 2012 -0700"
      },
      "message": "Relax permission requirement for sending broadcasts to other users\n\nAlso handle USER_CURRENT for broadcasts\n\nChange-Id: I2df5616ac22b7c670a7d007b8d505d4d4d99a24e\n"
    },
    {
      "commit": "dc7d8008eceb08850142fcd77a97404b4fbe688d",
      "tree": "ec86be2fed3987132c6a7283a5dd10721460e9ef",
      "parents": [
        "ac66d4a8d653331a03c27d5444467fd943503c9b",
        "64a55af0ac700baecb0877235eb42caac59a3560"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 17:16:52 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 27 17:16:53 2012 -0700"
      },
      "message": "Merge \"Add plumbing for new surface flinger display API.\" into jb-mr1-dev"
    },
    {
      "commit": "0e17e5bc43373ff9dd8d567f876a26f990ed638e",
      "tree": "344da2d01806715678bede4ec7f4c3d04eb21ead",
      "parents": [
        "40edfc97795e34b1f24b15ca8f0ccba37fa1efbc",
        "786b44046a79d6c4c9cd07f5989d491c7196ad80"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 27 15:59:56 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 27 15:59:56 2012 -0700"
      },
      "message": "Merge \"Fix installing applications from non-primary users.\" into jb-mr1-dev"
    },
    {
      "commit": "786b44046a79d6c4c9cd07f5989d491c7196ad80",
      "tree": "ac3d22036260f4e56340903c4ae71f8f7c81e8fe",
      "parents": [
        "9d9ea05cde56f6663f57925212c87860d1cbc1b2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 27 15:14:02 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 27 15:16:33 2012 -0700"
      },
      "message": "Fix installing applications from non-primary users.\n\nWe also now send the correct broadcasts to each user.\n\nYou no longer need to be running the shell as root\nto be able to create/remove users.\n\nAlso added some more man page material to the pm command, and\ngot rid of a bunch of showUsage() calls that now make error\nmessages completely buried because of how large the usage info\nhas become.\n\nAnd the package manager now shows the user each historical broadcast\nwas sent to.\n\nChange-Id: Iab42498e1352a0c023069139c80fc04d2d69ab4b\n"
    },
    {
      "commit": "a97ec810e0dd5fe493c1ac08545dcb7a9f93b723",
      "tree": "f2531a0f2559a26bf39dc7ff4bd6515924fac0f1",
      "parents": [
        "ac137b3211818f9e72f9ffbaf541ad8a1ef27eb1",
        "595dda6d47a4eeeffc32abbfbc55edfba588d846"
      ],
      "author": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Mon Aug 27 14:59:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 27 14:59:11 2012 -0700"
      },
      "message": "Merge \"Remove unused IntentFilter in LocationManager\" into jb-mr1-dev"
    },
    {
      "commit": "64a55af0ac700baecb0877235eb42caac59a3560",
      "tree": "0f3c36ce8204e6cf8eedf04ce9ae24373239ddd8",
      "parents": [
        "0b722fe9ce98d97dbcb6fefd170b85ab7037e528"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 26 02:47:39 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 14:34:54 2012 -0700"
      },
      "message": "Add plumbing for new surface flinger display API.\n\nCleaned up the implementation of Surface and SurfaceSession\nto use more consistent naming and structure.\n\nAdded JNI for all of the new surface flinger display API calls.\n\nEnforced the requirement that all Surfaces created by\nthe window manager be named.\n\nUpdated the display manager service to use the new methods.\n\nChange-Id: I2a658f1bfd0437e1c6f9d22df8d4ffcce7284ca2\n"
    },
    {
      "commit": "116ee10b95ffff658618be42544ce80971ce28e8",
      "tree": "2b1a0afba2c76dc785f4701f597b0e2f7a3be611",
      "parents": [
        "e45ca31a613d8692a9db2117be96f442e57abfef",
        "69ddab4575ff684c533c995e07ca15fe18543fc0"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Aug 27 13:57:58 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 27 13:57:58 2012 -0700"
      },
      "message": "Merge \"Always-on VPN.\" into jb-mr1-dev"
    },
    {
      "commit": "69ddab4575ff684c533c995e07ca15fe18543fc0",
      "tree": "dfae3a89b9027c33d47b58f80200af021bbe7426",
      "parents": [
        "080ca09c7f4c0033d0efece23687b71f7f8febc9"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sat Aug 25 00:05:46 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Aug 27 12:35:05 2012 -0700"
      },
      "message": "Always-on VPN.\n\nAdds support for always-on VPN profiles, also called \"lockdown.\" When\nenabled, LockdownVpnTracker manages the netd firewall to prevent\nunencrypted traffic from leaving the device. It creates narrow rules\nto only allow traffic to the selected VPN server. When an egress\nnetwork becomes available, LockdownVpnTracker will try bringing up\nthe VPN connection, and will reconnect if disconnected.\n\nConnectivityService augments any NetworkInfo based on the lockdown\nVPN status to help apps wait until the VPN is connected.\n\nThis feature requires that VPN profiles use an IP address for both\nVPN server and DNS. It also blocks non-default APN access when\nenabled. Waits for USER_PRESENT after boot to check KeyStore status.\n\nBug: 5756357\nChange-Id: If615f206b1634000d78a8350a17e88bfcac8e0d0\n"
    },
    {
      "commit": "be7ddb9f293076e0c14dc72ea498aced8742b5a9",
      "tree": "9b3018a721261e9795f81a8a9f3acef969b88460",
      "parents": [
        "a84a4af9b11946fe16689cd42741a92ca285ffe9",
        "250ce285318f9f7d714805e4f859a395ac9615f6"
      ],
      "author": {
        "name": "Andy Stadler",
        "email": "stadler@google.com",
        "time": "Mon Aug 27 12:28:05 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 27 12:28:05 2012 -0700"
      },
      "message": "Merge \"Fix package verifier lookup\" into jb-mr1-dev"
    },
    {
      "commit": "a84a4af9b11946fe16689cd42741a92ca285ffe9",
      "tree": "b7c24079b57d84fc0f77085edf1f9d364bcc0804",
      "parents": [
        "63dc027be28762232335797a30449995c555ae10",
        "2b9146523347d4458d17d99824afdac29e312176"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Aug 27 12:24:24 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 27 12:24:24 2012 -0700"
      },
      "message": "Merge \"Fix adb install\" into jb-mr1-dev"
    },
    {
      "commit": "2b9146523347d4458d17d99824afdac29e312176",
      "tree": "fc0754798be411bcd0e356388873a954f9cb7a6f",
      "parents": [
        "080ca09c7f4c0033d0efece23687b71f7f8febc9"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Aug 27 12:04:40 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Aug 27 12:04:40 2012 -0700"
      },
      "message": "Fix adb install\n\nWas not properly handling creating DefContainerService when the installation was\nfor USER_ALL. Not a problem for Market installs.\n\nBug: 7061571\nChange-Id: I4528b4c56e38effa137da56460e78c55b242ba45\n"
    },
    {
      "commit": "63dc027be28762232335797a30449995c555ae10",
      "tree": "1ef49cf8d897ea68bcad8fb15202fa25bbc7b7bc",
      "parents": [
        "62e2709c3ff91760108c31e6f60fcf57c8c8da46",
        "35bbe27d58ccf01ffd170b0f617a568bc843a49e"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Mon Aug 27 11:59:16 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 27 11:59:16 2012 -0700"
      },
      "message": "Merge \"Fix permission issue on channel\" into jb-mr1-dev"
    },
    {
      "commit": "3486b9696d81da8873ef595daa35b2d39fc83146",
      "tree": "550ca54bc0c53cc166f19eab1f663b41cfb2138f",
      "parents": [
        "71d7c3c628fbce04b8bdb60f127588ada00bae13"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Aug 27 11:31:24 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Aug 27 11:31:24 2012 -0700"
      },
      "message": "Fix drag bug.\n\nPrevious assumption -- that the drag window was defined at time of\nDragState construction -- was false. The window, and hence the\nDisplay, is not known until performDrag. This change delays assigning\nDragState.mDisplayContent until the window/Display is known.\n\nFixes bug 7028203.\n\nChange-Id: I5799005652c484ff0c45ab340ce3b9e4b784883e\n"
    },
    {
      "commit": "af18865486df1e23e2951983fb0d1d4bf17f4f32",
      "tree": "8d1574e853c3c5a2ef4c255205cd0c8e1b6debba",
      "parents": [
        "68cff8c117b18136de8f652782b364fc48f25a84",
        "ba37d595f70d348987a9e60c56c071fdd319260f"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Aug 27 08:16:02 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 27 08:16:02 2012 -0700"
      },
      "message": "am ba37d595: am e70a32af: am eb00f951: Merge \"VibratorService: Fix to ensure actual delay in a vibrate pattern\"\n\n* commit \u0027ba37d595f70d348987a9e60c56c071fdd319260f\u0027:\n  VibratorService: Fix to ensure actual delay in a vibrate pattern\n"
    },
    {
      "commit": "ba37d595f70d348987a9e60c56c071fdd319260f",
      "tree": "a6d35f5db94c8de10a8ada585c94aba8b235e907",
      "parents": [
        "2f1ec0db61554c3c26fe22cbb8f31ef6e6f15ef0",
        "e70a32afc5b27ddc9681efd867780a0c4c77edd3"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Aug 27 08:13:27 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 27 08:13:27 2012 -0700"
      },
      "message": "am e70a32af: am eb00f951: Merge \"VibratorService: Fix to ensure actual delay in a vibrate pattern\"\n\n* commit \u0027e70a32afc5b27ddc9681efd867780a0c4c77edd3\u0027:\n  VibratorService: Fix to ensure actual delay in a vibrate pattern\n"
    },
    {
      "commit": "eb00f951439cd724863d267e8e8d77414383d93f",
      "tree": "d5dae63b27d4f434ea887c173b15404f9906d57f",
      "parents": [
        "13ab2c9fdaec119a40b628ae772fd1462fbb826d",
        "e4c56d9367ae89c705b92e44f327bd1d0132129c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Aug 27 07:55:41 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 27 07:55:41 2012 -0700"
      },
      "message": "Merge \"VibratorService: Fix to ensure actual delay in a vibrate pattern\""
    },
    {
      "commit": "d59db50ab0c3c7a232b2a564e763ca46c6f6ebfa",
      "tree": "56d64362d3d4d6ce3811c7a07d039ab7f883793d",
      "parents": [
        "04a286b95528e1fe7c0a18e8780a64bfadbd1eba",
        "f75724b3d36d84c881d4052cfd4be766d454c98f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Aug 25 13:46:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Aug 25 13:46:49 2012 -0700"
      },
      "message": "Merge \"Initialize screen state earlier in the boot process.\" into jb-mr1-dev"
    },
    {
      "commit": "04a286b95528e1fe7c0a18e8780a64bfadbd1eba",
      "tree": "d6b9605f9ab9cb35cf593a2f00a8a040f472f5aa",
      "parents": [
        "f85ddd6571c9084b76d874f79245d087b152cb67",
        "028872fe07f9b3468aa1506c658d6aae25f53015"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Aug 25 13:44:46 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Aug 25 13:44:51 2012 -0700"
      },
      "message": "Merge \"Fix GpsLocationProvider wake lock book keeping.\" into jb-mr1-dev"
    },
    {
      "commit": "f85ddd6571c9084b76d874f79245d087b152cb67",
      "tree": "9050e94dcd997905a550a9022e44987e71f47864",
      "parents": [
        "080ca09c7f4c0033d0efece23687b71f7f8febc9",
        "a2910d0abbbe18ba1710dfd4a31af45769632255"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Aug 25 13:43:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Aug 25 13:43:48 2012 -0700"
      },
      "message": "Merge \"Make it easier to create asynchronous Handlers.\" into jb-mr1-dev"
    },
    {
      "commit": "f75724b3d36d84c881d4052cfd4be766d454c98f",
      "tree": "3407abe81ef9a86e920096a7d0a1d3ad5a61f083",
      "parents": [
        "ba94170a7a4f78d68fe228e9ee35ed82c4de09c8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Aug 25 13:34:32 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Aug 25 13:41:35 2012 -0700"
      },
      "message": "Initialize screen state earlier in the boot process.\n\nThe system depends on receiving reliable vsync signals from\nsurface flinger during the boot process.  If it doesn\u0027t get them\nbecause the screen is off then a hang may occur.\n\nThis isn\u0027t a problem when surface flinger manages the screen\nblanking itself but it is a problem for devices that still\nrely on early-suspend.  When early-suspend is involved, the\nscreen may be off without surface flinger knowing.  This is a\nproblem because surface flinger will only synthesize fake\nvsyncs when it knows the screen is off, otherwise relying\non the hardware to generate vsync signals itself.  Unfortunately,\nthe hardware won\u0027t generate vsync signals if the screen was\nturned off by early-suspend, so we have a problem.\n\nBug: 6975688\nChange-Id: Iaf4527f716bf4ea72cc3e6fdaf060855697b02f2\n"
    },
    {
      "commit": "028872fe07f9b3468aa1506c658d6aae25f53015",
      "tree": "40069ed51bf79a0daabd60b3b78c93e7d2632cbd",
      "parents": [
        "a2910d0abbbe18ba1710dfd4a31af45769632255"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Aug 25 13:07:01 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Aug 25 13:40:28 2012 -0700"
      },
      "message": "Fix GpsLocationProvider wake lock book keeping.\n\nThe GpsLocationProvider typically acquires a wake lock\nbefore sending a message to its handler then releases it\nafter the message has been handled.\n\nThere were two cases where messages might be removed from\nthe handler, resulting in the wake lock being released.\n\nThere were also two cases where background tasks were being\nstarted while not holding a wake lock for the duration.\n\nFixed these issues and marked the GpsLocationProvider handler\nas asynchronous too so that it doesn\u0027t accidentally get\nblocked by traversals if it happens to share a thread with some UI.\n\nBug: 7057752\nChange-Id: I8e12fc91ae943e84db068c08ec809879537503c6\n"
    },
    {
      "commit": "a2910d0abbbe18ba1710dfd4a31af45769632255",
      "tree": "bac98df3737fe3df7e9cd168973fcfe62fad05b0",
      "parents": [
        "ba94170a7a4f78d68fe228e9ee35ed82c4de09c8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Aug 25 12:29:46 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Aug 25 13:40:26 2012 -0700"
      },
      "message": "Make it easier to create asynchronous Handlers.\n\nThere are potentially very many Handlers owned by services\nthat should not be blocked by barriers introduced by UI traversals\noccurring on the same thread (if that ever happens).\nAdd some convenience constructors to make it easy to switch\nthese Handlers over to being async.\n\nBug: 7057752\nChange-Id: I64d9bffe81e7c52ada4cfad4e89d4340153f4688\n"
    },
    {
      "commit": "080ca09c7f4c0033d0efece23687b71f7f8febc9",
      "tree": "c1b549887437a7474be9550c40838292301c17df",
      "parents": [
        "3782aabe4e0e67839e8a03b694abf6433fd2d65d",
        "6ec101288b93d7548ed9ac9169356e7939783813"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sat Aug 25 07:25:42 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Aug 25 07:25:42 2012 -0700"
      },
      "message": "Merge \"Bind to the correct default container service when installing/moving/measuring pkgs\" into jb-mr1-dev"
    },
    {
      "commit": "6ec101288b93d7548ed9ac9169356e7939783813",
      "tree": "02b1725d9ffab3682bf376513971e655fc4bb975",
      "parents": [
        "0b23b5f6039b3771708c8bc38b342be5f7fb2ee8"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Aug 23 13:49:25 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sat Aug 25 07:17:29 2012 -0700"
      },
      "message": "Bind to the correct default container service when installing/moving/measuring pkgs\n\nChange-Id: I0acfe955b5d57b4985d1922fe3dd841a81c824ed\n"
    },
    {
      "commit": "ba94170a7a4f78d68fe228e9ee35ed82c4de09c8",
      "tree": "547584d64b91a935b00d0d7177bf0bb1a53c2c0f",
      "parents": [
        "f3db71791b0502646d9299c136641a233b743e78",
        "4428e17c5e05c0dad76da8f1c28ccba62a66cd91"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 24 18:03:56 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 24 18:03:56 2012 -0700"
      },
      "message": "Merge \"Some clean up of app install and user management.\" into jb-mr1-dev"
    },
    {
      "commit": "4428e17c5e05c0dad76da8f1c28ccba62a66cd91",
      "tree": "aacaa5e7c6dfb1f1dee8c5edd1b523fd88573bda",
      "parents": [
        "a31803fca6c61486e88d742a8ff58f178195f980"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 24 17:43:05 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 24 18:00:37 2012 -0700"
      },
      "message": "Some clean up of app install and user management.\n\nUserManagerService is now closely tied to PackageManagerService,\nsharing the same locks.  There is no longer direct access of\nInstaller by UserManagerService, instead the package manager is\nback to solely owning it.\n\nCreating a new user now correctly only installs system apps for\nthat user.\n\nFixed some misc bugs, where we were getting nulls when\nquerying content providers and instrumentation in uninstalled\nusers, incorrect locking, etc.\n\nChange-Id: Ife69b6e373d0cf7c5cfc03fc588e36b43ad5d8b0\n"
    },
    {
      "commit": "250ce285318f9f7d714805e4f859a395ac9615f6",
      "tree": "52d6f13f17acee9908e941f0467831168d396194",
      "parents": [
        "d78fc5b94d1bb3dab509ca55d09052821c51412b"
      ],
      "author": {
        "name": "Andy Stadler",
        "email": "stadler@google.com",
        "time": "Fri Aug 24 16:09:03 2012 -0700"
      },
      "committer": {
        "name": "Andy Stadler",
        "email": "stadler@google.com",
        "time": "Fri Aug 24 16:09:03 2012 -0700"
      },
      "message": "Fix package verifier lookup\n\nqueryIntentReceivers() needs the resolvedType string to be non-null\nin order to find the receiver.\n\nChange-Id: If473d7e08e79940c3e495bc7a9d136e4130599a1\n"
    },
    {
      "commit": "595dda6d47a4eeeffc32abbfbc55edfba588d846",
      "tree": "a7b09bb60ef60e0e97774e783b4e82d80b868b0f",
      "parents": [
        "40e1bafc37e2a83453535132c62aeb7ef706de25"
      ],
      "author": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Fri Aug 24 14:54:54 2012 -0700"
      },
      "committer": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Fri Aug 24 14:54:54 2012 -0700"
      },
      "message": "Remove unused IntentFilter in LocationManager\n\nThis intent filter isn\u0027t used anymore, since GpsLocationProvider handles\nthe CONNECTIVITY_ACTION broadcasts now..\n\nChange-Id: I593a9916aa6f8086b4d684cc3e25286c1cb137cc\n"
    },
    {
      "commit": "0b23b5f6039b3771708c8bc38b342be5f7fb2ee8",
      "tree": "19977a75da87b81a89c0b4100246596c9939e5d5",
      "parents": [
        "14b83959204bed9d0ecac3543ceb1291bf9db261",
        "40e1bafc37e2a83453535132c62aeb7ef706de25"
      ],
      "author": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Fri Aug 24 14:53:14 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 24 14:53:14 2012 -0700"
      },
      "message": "Merge \"Fix GPS provider thread blocked by NTP and XTRA\" into jb-mr1-dev"
    },
    {
      "commit": "40e1bafc37e2a83453535132c62aeb7ef706de25",
      "tree": "f28cc813f1c8ba19de987956a910bae52302edcd",
      "parents": [
        "e370c468221bfef8f73c20f9d013cd22f06e2da7"
      ],
      "author": {
        "name": "Kevin Tang",
        "email": "zhikait@codeaurora.org",
        "time": "Tue Jan 10 14:32:44 2012 -0800"
      },
      "committer": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Fri Aug 24 14:06:47 2012 -0700"
      },
      "message": "Fix GPS provider thread blocked by NTP and XTRA\n\nCurrently, the NTP and XTRA downloads block on the GPS provider thread.\nThis could potentially block the next tasks for over a minute of time.\nIf the upcoming task happens to be AGPS, AGPS will time out.\n\nPlaced the NTP and XTRA downloads in separate threads.\n\nBug: 6980618\n\nChange-Id: I57a6aaf5348212bc1246813f6d941da7d5b19136\n"
    },
    {
      "commit": "7767eac3232ba2fb9828766813cdb481d6a97584",
      "tree": "41cc717fb9f11190e9da3dc12d61faf23a22861d",
      "parents": [
        "1552586283f329253edc4786a6cf40c5bb69ea36"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 23 18:25:40 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 24 13:53:13 2012 -0700"
      },
      "message": "Keep track of whether an app is installed for each user.\n\nThis add a new per-user state for an app, indicating whether\nit is installed for that user.\n\nAll system apps are always installed for all users (we still\nuse disable to \"uninstall\" them).\n\nNow when you call into the package manager to install an app,\nit will only install the app for that user unless you supply\na flag saying to install for all users.  Only being installed\nfor the user is just the normal install state, but all other\nusers have marked in their state for that app that it is not\ninstalled.\n\nWhen you call the package manager APIs for information about\napps, uninstalled apps are treated as really being not visible\n(somewhat more-so than disabled apps), unless you use the\nGET_UNINSTALLED_PACKAGES flag.\n\nIf another user calls to install an app that is already installed,\njust not for them, then the normal install process takes place\nbut in addition that user\u0027s installed state is toggled on.\n\nThe package manager will not send PACKAGE_ADDED, PACKAGE_REMOVED,\nPACKAGE_REPLACED etc broadcasts to users who don\u0027t have a package\ninstalled or not being involved in a change in the install state.\nThere are a few things that are not quite right with this -- for\nexample if you go through a full install (with a new apk) of an\napp for one user who doesn\u0027t have it already installed, you will\nstill get the PACKAGED_REPLACED messages even though this is\ntechnically the first install for your user.  I\u0027m not sure how\nmuch of an issue this is.\n\nWhen you call the existing API to uninstall an app, this toggles\nthe installed state of the app for that user to be off.  Only if\nthat is the last user user that has the app uinstalled will it\nactually be removed from the device.  Again there is a new flag\nyou can pass in to force the app to be uninstalled for all users.\n\nAlso fixed issues with cleaning external storage of apps, which\nwas not dealing with multiple users.  We now keep track of cleaning\neach user for each package.\n\nChange-Id: I00e66452b149defc08c5e0183fa673f532465ed5\n"
    },
    {
      "commit": "1552586283f329253edc4786a6cf40c5bb69ea36",
      "tree": "18508291938dcee1535d179b4e7cf8556e45b062",
      "parents": [
        "34f863125865664af058ab4dff44ebec570e2234",
        "2c0929850ae495d54efb91a68e4bbd29a2e0ec95"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 24 11:46:27 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 24 11:46:27 2012 -0700"
      },
      "message": "Merge \"Clean up firewall interface method names.\" into jb-mr1-dev"
    },
    {
      "commit": "2c0929850ae495d54efb91a68e4bbd29a2e0ec95",
      "tree": "4d513be85de3034f72962a3018303b92b0a7cf07",
      "parents": [
        "82f8521d386f3109147c477d04e5e90e5c715fa0"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 24 11:44:40 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 24 11:44:40 2012 -0700"
      },
      "message": "Clean up firewall interface method names.\n\nChange-Id: I653f0a01af7c90fc96b201abb31ea8354b036e74\n"
    },
    {
      "commit": "34f863125865664af058ab4dff44ebec570e2234",
      "tree": "520a3a74893506596e59c531d03f7d69e49e3c08",
      "parents": [
        "96702ad6d736fd2b145968843d5d83615b104a16",
        "82f8521d386f3109147c477d04e5e90e5c715fa0"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 24 11:32:59 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 24 11:33:00 2012 -0700"
      },
      "message": "Merge \"Migrate legacy VPN arguments to system_server.\" into jb-mr1-dev"
    },
    {
      "commit": "82f8521d386f3109147c477d04e5e90e5c715fa0",
      "tree": "38ba5be71c161c63cc9a8fed9362d05b646f0b4e",
      "parents": [
        "c268f0b19efd0b6c6c89c21be0893787f3cc9cf7"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 24 11:17:25 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 24 11:29:58 2012 -0700"
      },
      "message": "Migrate legacy VPN arguments to system_server.\n\nGenerate the racoon and mtpd daemon arguments in system_server,\ninstead of accepting them from Settings.\n\nBug: 5756357\nChange-Id: I42c1a644f6add477fe4222342640d7db15982cb8\n"
    }
  ],
  "next": "96702ad6d736fd2b145968843d5d83615b104a16"
}
