)]}'
{
  "log": [
    {
      "commit": "9545dc020ea11649d70dcbe911a8e82a3254a4ea",
      "tree": "2eafaf32537c73b462f5f06c24c477655bacb71b",
      "parents": [
        "162fabbcf81157fddab1c38de09bdabaff8c068a"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 06 22:46:30 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 06 23:15:20 2012 -0700"
      },
      "message": "Include primary flag in StorageVolume.\n\nBug: 7003520\nChange-Id: Iaae2ae22253820c954c51e0199c31087bc825f3f\n"
    },
    {
      "commit": "6da5827193408ec6d2a77b64448b2f1c40b9a482",
      "tree": "840718c7f3d92ffe7239d18de3467bfb76899108",
      "parents": [
        "c71d4060609ee64939ad5369d33b86d44baa17a9",
        "1cf70bbf96930662cab0e699d70b62865766ff52"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 06 18:57:43 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 06 18:57:43 2012 -0700"
      },
      "message": "Merge \"Screen magnification - feature - framework.\" into jb-mr1-dev"
    },
    {
      "commit": "1cf70bbf96930662cab0e699d70b62865766ff52",
      "tree": "2173762d4e4d7be76f5691cebd74e1bd8f2b8543",
      "parents": [
        "fa8d83d90444354e8eca6ca0e080bc917e5a1f32"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Aug 06 10:53:34 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Sep 06 18:56:17 2012 -0700"
      },
      "message": "Screen magnification - feature - framework.\n\nThis change is the initial check in of the screen magnification\nfeature. This feature enables magnification of the screen via\nglobal gestures (assuming it has been enabled from settings)\nto allow a low vision user to efficiently use an Android device.\n\nInteraction model:\n\n1. Triple tap toggles permanent screen magnification which is magnifying\n   the area around the location of the triple tap. One can think of the\n   location of the triple tap as the center of the magnified viewport.\n   For example, a triple tap when not magnified would magnify the screen\n   and leave it in a magnified state. A triple tapping when magnified would\n   clear magnification and leave the screen in a not magnified state.\n\n2. Triple tap and hold would magnify the screen if not magnified and enable\n   viewport dragging mode until the finger goes up. One can think of this\n   mode as a way to move the magnified viewport since the area around the\n   moving finger will be magnified to fit the screen. For example, if the\n   screen was not magnified and the user triple taps and holds the screen\n   would magnify and the viewport will follow the user\u0027s finger. When the\n   finger goes up the screen will clear zoom out. If the same user interaction\n   is performed when the screen is magnified, the viewport movement will\n   be the same but when the finger goes up the screen will stay magnified.\n   In other words, the initial magnified state is sticky.\n\n3. Pinching with any number of additional fingers when viewport dragging\n   is enabled, i.e. the user triple tapped and holds, would adjust the\n   magnification scale which will become the current default magnification\n   scale. The next time the user magnifies the same magnification scale\n   would be used.\n\n4. When in a permanent magnified state the user can use two or more fingers\n   to pan the viewport. Note that in this mode the content is panned as\n   opposed to the viewport dragging mode in which the viewport is moved.\n\n5. When in a permanent magnified state the user can use three or more\n   fingers to change the magnification scale which will become the current\n   default magnification scale. The next time the user magnifies the same\n   magnification scale would be used.\n\n6. The magnification scale will be persisted in settings and in the cloud.\n\nNote: Since two fingers are used to pan the content in a permanently magnified\n   state no other two finger gestures in touch exploration or applications\n   will work unless the uses zooms out to normal state where all gestures\n   works as expected. This is an intentional tradeoff to allow efficient\n   panning since in a permanently magnified state this would be the dominant\n   action to be performed.\n\nDesign:\n\n1. The window manager exposes APIs for setting accessibility transformation\n   which is a scale and offsets for X and Y axis. The window manager queries\n   the window policy for which windows will not be magnified. For example,\n   the IME windows and the navigation bar are not magnified including windows\n   that are attached to them.\n\n2. The accessibility features such a screen magnification and touch\n   exploration are now impemented as a sequence of transformations on the\n   event stream. The accessibility manager service may request each\n   of these features or both. The behavior of the features is not changed\n   based on the fact that another one is enabled.\n\n3. The screen magnifier keeps a viewport of the content that is magnified\n   which is surrounded by a glow in a magnified state. Interactions outside\n   of the viewport are delegated directly to the application without\n   interpretation. For example, a triple tap on the letter \u0027a\u0027 of the IME\n   would type three letters instead of toggling magnified state. The viewport\n   is updated on screen rotation and on window transitions. For example,\n   when the IME pops up the viewport shrinks.\n\n4. The glow around the viewport is implemented as a special type of window\n   that does not take input focus, cannot be touched, is laid out in the\n   screen coordiates with width and height matching these of the screen.\n   When the magnified region changes the root view of the window draws the\n   hightlight but the size of the window does not change - unless a rotation\n   happens. All changes in the viewport size or showing or hiding it are\n   animated.\n\n5. The viewport is encapsulated in a class that knows how to show,\n   hide, and resize the viewport - potentially animating that.\n   This class uses the new animation framework for animations.\n\n6. The magnification is handled by a magnification controller that\n   keeps track of the current trnasformation to be applied to the screen\n   content and the desired such. If these two are not the same it is\n   responsibility of the magnification controller to reconcile them by\n   potentially animating the transition from one to the other.\n\n7. A dipslay content observer wathces for winodw transitions, screen\n   rotations, and when a rectange on the screen has been reqeusted. This\n   class is responsible for handling interesting state changes such\n   as changing the viewport bounds on IME pop up or screen rotation,\n   panning the content to make a requested rectangle visible on the\n   screen, etc.\n\n8. To implement viewport updates the window manger was updated with APIs\n   to watch for window transitions and when a rectangle has been requested\n   on the screen. These APIs are protected by a signature level permission.\n   Also a parcelable and poolable window info class has been added with\n   APIs for getting the window info given the window token. This enables\n   getting some useful information about a window. There APIs are also\n   signature protected.\n\nbug:6795382\n\nChange-Id: Iec93da8bf6376beebbd4f5167ab7723dc7d9bd00\n"
    },
    {
      "commit": "2b0442f33029c6b6cf1247a1633a97f5908d6cab",
      "tree": "b3a5a1eeb666c2c857badfac54d515899eec9bda",
      "parents": [
        "fa8d83d90444354e8eca6ca0e080bc917e5a1f32",
        "91c6a64a04c2d8b27b886d96a56800ae24efb7a9"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 06 18:34:17 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 06 18:34:17 2012 -0700"
      },
      "message": "Merge \"Event logging for lockdown VPN state changes.\" into jb-mr1-dev"
    },
    {
      "commit": "91c6a64a04c2d8b27b886d96a56800ae24efb7a9",
      "tree": "91992f0805a350844ea0cf550292d0b1ebdebde6",
      "parents": [
        "f56e2435b64f9638e029777fa9492d42f157033e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 06 18:33:14 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 06 18:33:14 2012 -0700"
      },
      "message": "Event logging for lockdown VPN state changes.\n\nBug: 7079350\nChange-Id: I3670efe7f09c0fca55552b6a04a2be159b9beb3c\n"
    },
    {
      "commit": "fa8d83d90444354e8eca6ca0e080bc917e5a1f32",
      "tree": "b5248aa8f033baf085826c2144067e55bb5a52a5",
      "parents": [
        "b75111df9bf22496bacb7a6f9d9412e4a7b6827f",
        "f56e2435b64f9638e029777fa9492d42f157033e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 06 18:02:44 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 06 18:02:44 2012 -0700"
      },
      "message": "Merge \"Restrict lockdown and firewall to AID_SYSTEM.\" into jb-mr1-dev"
    },
    {
      "commit": "f56e2435b64f9638e029777fa9492d42f157033e",
      "tree": "fead98e1fcd7a8d31a1f0f03b72581b99cbc5fa1",
      "parents": [
        "c862d0fc0574de74bf1758f69c98ccbf8e506532"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 06 17:54:29 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 06 17:59:14 2012 -0700"
      },
      "message": "Restrict lockdown and firewall to AID_SYSTEM.\n\nBug: 7076289\nChange-Id: Iafa3054335e8b1c3c8c3b8db2a4191d4ed4c8c41\n"
    },
    {
      "commit": "9e130e70eff57d15c0888f51c4f1a7cc4cd62573",
      "tree": "79d989396f57be8f447e1a59707449fdd81c45b6",
      "parents": [
        "5851c6e63879ce7c08d345e80db9a2872657a59f",
        "69b0818179201fadc9d2a384d692d8ae4aecd85c"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Sep 06 16:30:33 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 06 16:30:34 2012 -0700"
      },
      "message": "Merge \"Limit certain actions to default Display.\" into jb-mr1-dev"
    },
    {
      "commit": "69b0818179201fadc9d2a384d692d8ae4aecd85c",
      "tree": "0e7d2978798e010dc49f002eef35a4d3f6227912",
      "parents": [
        "256a1b4dac832746a3cc37bd67f60f88a98adb07"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Sep 05 13:07:13 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Sep 05 19:54:32 2012 -0700"
      },
      "message": "Limit certain actions to default Display.\n\nStop messing up PhoneWindowManager state when passing in windows\nfrom non-default Display.\n\nChange-Id: I472f7a13c5e2241fbf1f79ae1c8045fd92af016c\n"
    },
    {
      "commit": "fd5494b8ef91e8a909622c3bf45dac7537254b41",
      "tree": "9c4b4f0d11e57131e616e31043fe3f7b8af43fe0",
      "parents": [
        "ec098efcb11c4f4a12e7d3e44995536ef1eb7c1b",
        "c9ce0abe29baecc540c48f4913255a71586bcfd3"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Sep 05 12:38:24 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 05 12:38:25 2012 -0700"
      },
      "message": "Merge changes I4ef284da,Ie8cc69bd into jb-mr1-dev\n\n* changes:\n  Make the SystemUI stop the screen saver when a full-screen notification is posted.\n  Do not play sounds or vibes for background users\u0027 notifications.\n"
    },
    {
      "commit": "ec098efcb11c4f4a12e7d3e44995536ef1eb7c1b",
      "tree": "2bac4d13e270d27c1695f55b00b7ca51b50fa194",
      "parents": [
        "f389f2820c731b2b938a7057cde9dc11d87bcbe3",
        "342c6bc8e5edb5a0cfa2ad65162d559b7f2ad993"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Sep 05 12:36:04 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 05 12:36:04 2012 -0700"
      },
      "message": "am 342c6bc8: am 54099555: am 380a8e3d: Merge \"Am: Clean mLaunchingProviders of all providers started by the client\"\n\n* commit \u0027342c6bc8e5edb5a0cfa2ad65162d559b7f2ad993\u0027:\n  Am: Clean mLaunchingProviders of all providers started by the client\n"
    },
    {
      "commit": "540995555505486074e9652a9c682bdf6e3056c5",
      "tree": "73a903372418c842f8416a97ff63e7b561955ce7",
      "parents": [
        "b4ac801c477c0a0de18da89744d9a78e79d2ff51",
        "380a8e3d126374b0205e8452bf2b4b70779e2606"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Sep 05 12:10:48 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 05 12:10:48 2012 -0700"
      },
      "message": "am 380a8e3d: Merge \"Am: Clean mLaunchingProviders of all providers started by the client\"\n\n* commit \u0027380a8e3d126374b0205e8452bf2b4b70779e2606\u0027:\n  Am: Clean mLaunchingProviders of all providers started by the client\n"
    },
    {
      "commit": "380a8e3d126374b0205e8452bf2b4b70779e2606",
      "tree": "b2e91b17932566ec187326d84e07eaff53dabf15",
      "parents": [
        "1ca2fee9547dbdd7008211ac318b1f8f40ce1e35",
        "4ee364982e783b4a2eac6e05f81d167c6121e110"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Sep 05 11:40:29 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 05 11:40:30 2012 -0700"
      },
      "message": "Merge \"Am: Clean mLaunchingProviders of all providers started by the client\""
    },
    {
      "commit": "0b5a4a15132a9367b6bbff62781e9ad3441b6c1d",
      "tree": "e34f155132c59db41ad1bd58be2368a0b4101c0d",
      "parents": [
        "4a332f5bae18ae613b23b5c643063fb1a23f29c1",
        "11626a91b6e695e7a8fa9e9a9f1a37df11cfb4e2"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Sep 05 11:07:21 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 05 11:07:21 2012 -0700"
      },
      "message": "am 11626a91: am 9eb3bd88: am 42a58ecd: Merge \"Revert \"Watchdog: Improvement of debuggability\"\"\n\n* commit \u002711626a91b6e695e7a8fa9e9a9f1a37df11cfb4e2\u0027:\n  Revert \"Watchdog: Improvement of debuggability\"\n"
    },
    {
      "commit": "9eb3bd88f14c386c89dd2576c3ca798f2493b0fd",
      "tree": "40b5096080b4edcbbaf905dc29736ebf97d6066d",
      "parents": [
        "d3b74b9124e713e291053652839a7d725ffb64d9",
        "42a58ecd27783d347242206bcffd4052cf1d5164"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Sep 05 11:01:25 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 05 11:01:25 2012 -0700"
      },
      "message": "am 42a58ecd: Merge \"Revert \"Watchdog: Improvement of debuggability\"\"\n\n* commit \u002742a58ecd27783d347242206bcffd4052cf1d5164\u0027:\n  Revert \"Watchdog: Improvement of debuggability\"\n"
    },
    {
      "commit": "c9ce0abe29baecc540c48f4913255a71586bcfd3",
      "tree": "c1a97909b09e86d3528f65a1b4e35af6bca48417",
      "parents": [
        "24518e466ab36ce7c6d2ffd733ac4d57f255766e"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Sep 04 13:27:09 2012 -0400"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Sep 05 08:41:07 2012 -0400"
      },
      "message": "Make the SystemUI stop the screen saver when a full-screen notification is posted.\n\nThis keeps all the fullScreenIntent logic (including\nmultiuser implications) in one place.\n\nChange-Id: I4ef284daf90464f105780ade1d971e9e081fbbb5\n"
    },
    {
      "commit": "24518e466ab36ce7c6d2ffd733ac4d57f255766e",
      "tree": "d866e7851240f6660791d864780bdfe73cbe262b",
      "parents": [
        "e94831e5ed4aa3b1ebc5444cc1b16cdab8cb92f8"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Sep 04 13:23:01 2012 -0400"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Sep 05 08:41:07 2012 -0400"
      },
      "message": "Do not play sounds or vibes for background users\u0027 notifications.\n\nUSER_ALL notifications will still play/vibe for any user.\n\nChange-Id: Ie8cc69bd1541193ed9c4207ef38a8d4898af0a9d\n"
    },
    {
      "commit": "580e9f72e09efc4645aa98753ad8e9806d428950",
      "tree": "0b5938ccef128da65af4fb00d5b6a326b0618c5c",
      "parents": [
        "f87633f38c399edf5b2c358992ecbbbbbad5a648",
        "f3c74f34999337b8eb77e1a5ed0287561b512c21"
      ],
      "author": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Tue Sep 04 22:48:35 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 22:48:36 2012 -0700"
      },
      "message": "Merge \"Make battery shutdown temperature configurable\" into jb-mr1-dev"
    },
    {
      "commit": "f87633f38c399edf5b2c358992ecbbbbbad5a648",
      "tree": "e834224f05c56e17071ba639c4ec13469afecda3",
      "parents": [
        "0d727c714b75b9d9c927eca83aacba8938b08537",
        "63f1c43fbef157397869475ef30d23e631b88bbe"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 04 20:30:02 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 20:30:02 2012 -0700"
      },
      "message": "Merge \"update to new SurfaceComposerClient API\" into jb-mr1-dev"
    },
    {
      "commit": "0d727c714b75b9d9c927eca83aacba8938b08537",
      "tree": "37077b3466fb75cde12aefdcdd7ed78460a32f96",
      "parents": [
        "b326fa046b64b05b9969e0a6e89cf48577bfdae1",
        "e62e6d8731ab1e02c1632ebc011792d07b902af8"
      ],
      "author": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Tue Sep 04 20:27:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 20:27:50 2012 -0700"
      },
      "message": "Merge \"Add subtypeId for keeping enabled \"InputMethodSubtype\"s even if subtype parameters are changed\" into jb-mr1-dev"
    },
    {
      "commit": "63f1c43fbef157397869475ef30d23e631b88bbe",
      "tree": "f485bac161dae075a2df0b5a1c07a5adc76d0a23",
      "parents": [
        "d2a8df9541c198d555ef6a50347acb9160509863"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 04 19:29:13 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 04 20:23:23 2012 -0700"
      },
      "message": "update to new SurfaceComposerClient API\n\nChange-Id: I8f2c96df56fe3a851b8ec03bb8734db0b6bea3d5\n"
    },
    {
      "commit": "bac6c12974c278a8045ed8deefb08d0348aa8496",
      "tree": "1de6070a76cef74dca2a065cfb3038edf1f58cc1",
      "parents": [
        "68093520872476fc19b50c096a9536a826c084e5",
        "fd8bf5c790749b0382c9d70424cac2367d6276e3"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 04 18:50:30 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 18:50:30 2012 -0700"
      },
      "message": "Merge \"Fix another issue #7097984 java.lang.SecurityException: Permission Denial:\" into jb-mr1-dev"
    },
    {
      "commit": "fd8bf5c790749b0382c9d70424cac2367d6276e3",
      "tree": "99c2e277f5bb882e23da577584632be152f3e1b0",
      "parents": [
        "d2a8df9541c198d555ef6a50347acb9160509863"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 04 18:48:37 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 04 18:48:37 2012 -0700"
      },
      "message": "Fix another issue #7097984 java.lang.SecurityException: Permission Denial:\n\nbroadcast asks to run as user -1 but is calling from user 0; this requires\n\nDupped bug of a different problem.\n\nChange-Id: I15f4ab08b81f5f5746ba1cd183dee4f0b1281df5\n"
    },
    {
      "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": "f3c74f34999337b8eb77e1a5ed0287561b512c21",
      "tree": "b6ab858370d84c5988eafc9f88f8ce8dd4d637b7",
      "parents": [
        "34a75df63533914bbca95a82d2c89ca374b2645d"
      ],
      "author": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Fri Aug 31 15:14:48 2012 -0700"
      },
      "committer": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Tue Sep 04 14:29:15 2012 -0700"
      },
      "message": "Make battery shutdown temperature configurable\n\nBug 7079455\n\nChange-Id: I448f21231bf0548ef975f99482576acb24a1a70e\n"
    },
    {
      "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": "784827b27cf4cd82bf074b571e63cb5e660c54af",
      "tree": "95a415c62daa7a168023b5ee0eb81540aaa79a5d",
      "parents": [
        "b307ceb43fa96e8d54851c20278a4344469c9269"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Sep 04 13:35:12 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Sep 04 13:35:12 2012 -0700"
      },
      "message": "Revert \"Watchdog: Improvement of debuggability\"\n\nThis reverts commit 9211b13c3268035b0da0c51ed2d6d5a578d45ff3.\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": "e62e6d8731ab1e02c1632ebc011792d07b902af8",
      "tree": "179eba3cd548a5c981f95a9c04d3960d546ea2e7",
      "parents": [
        "e94831e5ed4aa3b1ebc5444cc1b16cdab8cb92f8"
      ],
      "author": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Mon Jul 02 18:45:43 2012 +0900"
      },
      "committer": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Tue Sep 04 15:29:03 2012 +0900"
      },
      "message": "Add subtypeId for keeping enabled \"InputMethodSubtype\"s even if subtype parameters are changed\n\nBug: 6752230\nChange-Id: I3a2d512e395fe8645edf6ab82108948b927c629a\n"
    },
    {
      "commit": "4ee364982e783b4a2eac6e05f81d167c6121e110",
      "tree": "c93350d6bc18db12b816d23529144bf33d24a62e",
      "parents": [
        "98853623bcb27155e9b030301a0cb2a987cfc612"
      ],
      "author": {
        "name": "Vairavan Srinivasan",
        "email": "vairav@codeaurora.org",
        "time": "Mon Sep 03 17:09:58 2012 -0700"
      },
      "committer": {
        "name": "Vairavan Srinivasan",
        "email": "vairav@codeaurora.org",
        "time": "Mon Sep 03 17:09:58 2012 -0700"
      },
      "message": "Am: Clean mLaunchingProviders of all providers started by the client\n\nLaunching providers is removed from mLaunchingProviders when the client\nprocess dies and works as long as the client process had requested just\none provider and not otherwise. Fix is to make sure mLaunchingProviders\nis updated to remove all providers launched by the client process.\n\nChange-Id: Ib4b8b44b6a102762a6558f65fb2e6dbf11d725ea\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"
    }
  ],
  "next": "be7ddb9f293076e0c14dc72ea498aced8742b5a9"
}
