)]}'
{
  "log": [
    {
      "commit": "d017f3523244974a8a3fb653ed4b6d514affcc01",
      "tree": "f6c9922993039a8c119339c8fcfd316d29952fdd",
      "parents": [
        "7a7360ad528576d560aa13fbb4e81740b2c425b2"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Wed Feb 20 13:30:44 2013 -0800"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Feb 21 08:48:18 2013 -0800"
      },
      "message": "Move wifiservice into its own package\n\nChange-Id: I3ff378a29cb4dd191605b0b641147eba1f445d13\n"
    },
    {
      "commit": "32b44d08e2870692451eef9c61c8e2fb6753e06b",
      "tree": "a48b75d29ae289442b5dc635f7586917207f14dc",
      "parents": [
        "5161f20925ec071e72c2b0eb084f7abaa9dffabf"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Feb 21 08:26:06 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Feb 21 08:26:06 2013 -0800"
      },
      "message": "Add null check to setAppGroupId.\n\nFix bug 8217929.\n\nChange-Id: I3bd54c32abcf6683c2fa75a85bf5025f47e09398\n"
    },
    {
      "commit": "5161f20925ec071e72c2b0eb084f7abaa9dffabf",
      "tree": "7123d3ef3918f26d7eb25044217bfe3f02951c24",
      "parents": [
        "07aa25dab9b8f5592b2e9e7dbc708b5e3064c5ff"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Feb 20 16:54:05 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Feb 20 16:54:05 2013 -0800"
      },
      "message": "Fix crashing bug in validator.\n\nChange-Id: I649bb7cfc2b42fbeda478edcaa3a56f3c23d4bc8\n"
    },
    {
      "commit": "07aa25dab9b8f5592b2e9e7dbc708b5e3064c5ff",
      "tree": "5b3feb4681aef0906b835c1c6c122f5ab20741a1",
      "parents": [
        "6f8218a442a8de50ef33d20263a59cd47c513e62",
        "11bf9a52eb9fb02a8c553a1cb1d71725f9706dad"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Feb 21 00:39:00 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 21 00:39:00 2013 +0000"
      },
      "message": "Merge \"Switch topRunning* and moveTaskTo*\""
    },
    {
      "commit": "11bf9a52eb9fb02a8c553a1cb1d71725f9706dad",
      "tree": "b5eabbb426c7b008e278f23485dedbfb616a497b",
      "parents": [
        "223b6b3bfeb7cfa3e844abeb36c04ab5c8318446"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 19 14:08:51 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Feb 20 16:29:07 2013 -0800"
      },
      "message": "Switch topRunning* and moveTaskTo*\n\n- More of the Activity to Task changeover.\n- Fix bug in validateAppTokens().\n- Improved validation of changeover.\n- Eliminated iterator classes.\n\nChange-Id: I934a208eabfc9a2668e5a6162452e1406f2c8d3a\n"
    },
    {
      "commit": "6f8218a442a8de50ef33d20263a59cd47c513e62",
      "tree": "168cf05757f9d724d35e04b9c774ebec2e860dca",
      "parents": [
        "ab8e936e852b984624087c97dffc4c74b250fc68"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 20 16:28:39 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 20 16:28:43 2013 -0800"
      },
      "message": "    Trying to unregister a semi connected accessibility service.\n\n    When an accessibility service connects we get a callback in\n    which we either add the service, if this service is in the list\n    of connecting services (we still want the service to connect),\n    or we unbind and clear the state, if the service is no longer in\n    the list of connecting services (we do not want this service to\n    connect because something change between the bind request and\n    the connection callback).\n\n    The problem is that when the service connects and it is not in\n    the list of connecting services on service connected we called\n    the clean up code before the connection was complete. However,\n    the clean up code expects fully configured services. Now we\n    fully connect the service and in case there is a problem -\n    disconnect it.\n\n    bug:8232627\n\nChange-Id: I939e544e31ffc1406035265a012c180f2ca95d7c\n"
    },
    {
      "commit": "a75a883fe9ea1790803148f0a561473073e3f264",
      "tree": "a76a69d684a9643db3e22b72155aeb849c85a7f5",
      "parents": [
        "7a60c43d874bd047ea4b93b94c9b8771ea5739cc"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Thu Feb 07 16:53:32 2013 -0800"
      },
      "committer": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Wed Feb 20 15:41:14 2013 -0800"
      },
      "message": "Add explicit userId to AppWidget binder calls\n\nKeyguard currently relies on being in the system process to grab the\ngiven user\u0027s widgets.  When we split keyguard into a new process,\nit will need to have access to user-specific info to instantiate a\nspecific user\u0027s widgets.  In order to accomplish this, we add an\nexplicit userid to each binder call as well as new permission\ncheck to allow keyguard access.\n\nThis also fixes a potential race condition of having an incorrect user id\ndue to an async call to change the user.  Every binder call now has a specific\nuser id. The user id is either the calling process user\u0027s id or an explicit\none passed by applications like keyguard. It is created once when an\nAppWidgetManager is instantiated and remains for the lifetime of the object.\n\nFixed bug where widgets sometimes didn\u0027t show up for secondary users.\n\nMoved permission check in AppWidgetService into getImplForUser()\n\nRefactored to use userid from context associated AppWidgetManager instance.\n\nClean up AppWidgetHost to use userId from Context.\n\nRemove redundant userId check in checkPermission since it\u0027s handled by\nActivityManager.handleIncomingUser()\n\nRemoved redundant userid check.\n\nUpload after rebase...\n\nChange-Id: Iae3e20f2b342c323bb58768b3d22051510f8268b\n"
    },
    {
      "commit": "fd171e43e4946ce5789e5dd8ade09a1cbf2a5ae0",
      "tree": "1c9be342fe50f83175239f87e6af02e4663e0bdf",
      "parents": [
        "04de3b8141572aeac5b8c1c48044b6b5bdad898e",
        "3de830b82b74f3df86ede47c8b1a0b8dcac113d6"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Feb 20 21:35:52 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 20 21:35:53 2013 +0000"
      },
      "message": "Merge \"Switch to system process before modifying rotation.\""
    },
    {
      "commit": "3de830b82b74f3df86ede47c8b1a0b8dcac113d6",
      "tree": "cb95a45de7e335b023fcdd8f78862e9dedb362e3",
      "parents": [
        "f025404a8bbb0182dee42a6044ad888f443e7fe4"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Feb 20 15:23:52 2013 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Feb 20 15:23:52 2013 -0500"
      },
      "message": "Switch to system process before modifying rotation.\n\nBug: 8218133\nChange-Id: Ib44d64d48dbdf3095182c409dd2211f6a3b726ad\n"
    },
    {
      "commit": "aa7cc1e2ab9856e9c57c1664020df60afaae3d72",
      "tree": "723695432a47633b1d88d7739d3bcdca77f9ecb1",
      "parents": [
        "8a47d8eaec26d0937aee94a057f561f246748339",
        "b3038ec7cfc5d26eb0be18ae65c62825556bca0f"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 20 19:11:06 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 20 19:11:07 2013 +0000"
      },
      "message": "Merge \"Adding idle maintenance service.\""
    },
    {
      "commit": "223b6b3bfeb7cfa3e844abeb36c04ab5c8318446",
      "tree": "55933d448fbd7e661ee9989c3dff3bc0928e066d",
      "parents": [
        "f025404a8bbb0182dee42a6044ad888f443e7fe4",
        "5d9c7be84d9628c1cf199fcf9015942835c4671b"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Feb 20 16:42:00 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 20 16:42:17 2013 +0000"
      },
      "message": "Merge \"Begin switch over to task based history.\""
    },
    {
      "commit": "f025404a8bbb0182dee42a6044ad888f443e7fe4",
      "tree": "060b36b7fbb196b40b5df98f4c557344214ba927",
      "parents": [
        "1b15ba5d194c1db71d0a34ee110bd1ab169c8a29",
        "09a247e9a86df068422cbe8b60430fb6583c028c"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Feb 20 14:39:53 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 20 14:40:05 2013 +0000"
      },
      "message": "Merge \"New INotificationListener interface.\""
    },
    {
      "commit": "5d9c7be84d9628c1cf199fcf9015942835c4671b",
      "tree": "044e6e2409872d7ee17c71546fcfdceb4bb6ae22",
      "parents": [
        "278dac914d8c3990fc56b39dccab059b1b805d92"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Feb 15 14:02:56 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 19 18:11:33 2013 -0800"
      },
      "message": "Begin switch over to task based history.\n\n- Introduce the task history and add to and remove from it with\nverification.\n\nChange-Id: If97e74f5a13f85acdb1521fc6d0b066a7e8584ae\n"
    },
    {
      "commit": "22cb5b37a572270788f00881727f483da373ec05",
      "tree": "5ec19441707b3bd7f34f41be93029a50f6c88b0b",
      "parents": [
        "81aaf87d097aae2f0a5f8bd7286f82a4d0658b77",
        "3671b1e910e4d297bebcd3ceaa2682bfb4b1f4a1"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 19 23:29:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 19 23:29:49 2013 +0000"
      },
      "message": "Merge \"Migrate to using Mockito directly.\""
    },
    {
      "commit": "3671b1e910e4d297bebcd3ceaa2682bfb4b1f4a1",
      "tree": "4bf1c711e3c819d5b063450c68ca4c34ecf2eb87",
      "parents": [
        "736ef1e9dedbdd0c24e27f170034f2f869fd083f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Jan 31 17:22:26 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 19 15:28:19 2013 -0800"
      },
      "message": "Migrate to using Mockito directly.\n\nChange-Id: I1fcc5d1a780f5831bd6685f0735d4c0c6d245735\n"
    },
    {
      "commit": "09a247e9a86df068422cbe8b60430fb6583c028c",
      "tree": "d6f63d7f593bb9d062ff47ed655e0c73a1ba5893",
      "parents": [
        "5acb33af357b56fffb055997718b1e4aa97f53fc"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Feb 14 10:24:17 2013 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Feb 19 15:26:37 2013 -0500"
      },
      "message": "New INotificationListener interface.\n\nUse with INotificationManager.registerListener(). Limited to\nsystem only right now.\n\nChange-Id: I65b6a8778267022cdc5e58eb75ae607a54b1cc52\n"
    },
    {
      "commit": "c652de8141f5b8e3c6bcf8916842b6e106413b1a",
      "tree": "d3be73e9b665365bdacd01cfc66faa24054f5a9c",
      "parents": [
        "736ef1e9dedbdd0c24e27f170034f2f869fd083f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 15 16:32:56 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 19 12:08:58 2013 -0800"
      },
      "message": "Implement display overscan support.\n\nThe window manager now keeps track of the overscan of\neach display, with an API to set it.  The overscan impacts\nhow it positions windows in the display.  There is a new set\nof APIs for windows to say they would like to go into the\noverscan region.  There is a call into the window manager to\nset the overscan region for a display, and it now has a\nconcept of display settings that it stores presistently.\n\nAlso added a new \"wm\" command, moving the window manager\nspecific commands from the \"am\" command to there and adding\na new now to set the overscan region.\n\nChange-Id: Id2c8092db64fd0a982274fedac7658d82f30f9ff\n"
    },
    {
      "commit": "736ef1e9dedbdd0c24e27f170034f2f869fd083f",
      "tree": "e05e765f701ad8547cdf0086a07721e7f2d1908e",
      "parents": [
        "efd8b105ca7ff1f44040845af201e4bec356f824",
        "be72215c39916af9ae42332260c04b696bc73d7f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 19 18:18:52 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 19 18:18:53 2013 +0000"
      },
      "message": "Merge \"Better API for low disk space warnings.\""
    },
    {
      "commit": "7f7535fd250a30ff5383b046295db88613fe719a",
      "tree": "8f2a02b04040601a47e6dab4744505fc25f219a3",
      "parents": [
        "ac838a3ab9d85112576cf2c943930441f62c51d2"
      ],
      "author": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Mon Feb 18 12:54:16 2013 +0900"
      },
      "committer": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Mon Feb 18 14:08:07 2013 +0900"
      },
      "message": "Fix an issue where voice input is not enabled by default for the secondary user\n\nBug: 8205725\nChange-Id: I438daf996ba48cdb34f0a6158a0cbb510aae931b\n"
    },
    {
      "commit": "be72215c39916af9ae42332260c04b696bc73d7f",
      "tree": "319cc95fb8d2be980460cac828ac766abe86d292",
      "parents": [
        "07aef1c78a92e70552f269b37615c19aea042410"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Feb 15 16:56:38 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Feb 15 16:59:55 2013 -0800"
      },
      "message": "Better API for low disk space warnings.\n\nProvides uniform interface to ask about low disk thresholds; can\nbe mocked by other tests.  Opens door to adjust thresholds based on\ndisk type.\n\nSwitch monitor service to using new API, and use filesystem paths\nfrom Environment instead of hard-coding.\n\nChange-Id: Ifdb536e36a453f1b67bc65849037ec3cc0232cf2\n"
    },
    {
      "commit": "7f84ed31f01997d4906e408c335f783a91d197d5",
      "tree": "e87498e478633de2a96a6d7f76c8eb6449d4fa5e",
      "parents": [
        "8acb27c505c610b4027ec3d140ccc7722ab4faa3",
        "9e065121fa4cd7443c648f29c2f4c3a276041be8"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 15 23:26:59 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 15 23:26:59 2013 +0000"
      },
      "message": "Merge \"Dynamically configurable accessibility flags mishandled.\""
    },
    {
      "commit": "9e065121fa4cd7443c648f29c2f4c3a276041be8",
      "tree": "b56b5be557a1070e81ebc4f65e162601b6d93d29",
      "parents": [
        "00e592272ee44cba41832e3cf0a0ffb2de56585d"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 15 15:24:09 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 15 15:24:13 2013 -0800"
      },
      "message": "Dynamically configurable accessibility flags mishandled.\n\nA bug was preventing clearing dynamically settable accessibility\nservice flags.\n\nbug:8051095\n\nChange-Id: I6844b2f44e323bc741ac39983a892f1d28f3132b\n"
    },
    {
      "commit": "29479ebe1007361222bf6ab4d5e2a27927d4b8e8",
      "tree": "704baab78634aac8fb8139e8a9ea212714d4d26d",
      "parents": [
        "c145317d0b19fbd1e7aff8519696146853367b89"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 14 14:36:04 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 15 12:47:40 2013 -0800"
      },
      "message": "clean-up following Surface split\n\nChange-Id: I853a76d92d957ee38a36fcdd280d6407ec316987\n"
    },
    {
      "commit": "5fec0c5ee5bbd83fd651644c90ff78fe32680a42",
      "tree": "80edc8e93041a4870ca92394dcec01779bbf0a55",
      "parents": [
        "00e592272ee44cba41832e3cf0a0ffb2de56585d"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 15 12:18:33 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 15 12:29:17 2013 -0800"
      },
      "message": "User switch not handled properly in the accessibility manager service.\n\nOn user switch the transient state of the old user was not cleared\nwhich means that when we switch back to this user the operational\nstate such as which event types were dispatched, what state was sent\nto local managers, etc is stale. This leads to semi-updated state\nand broken behavior. Now if the user becomes inactive, we are clearing\nall transient state which will be recreated when the user becomes\nactive.\n\nbug:8196652\n\nChange-Id: Ie9e0d712b6d567e5074b328f1bb87afaa5395c06\n"
    },
    {
      "commit": "b3038ec7cfc5d26eb0be18ae65c62825556bca0f",
      "tree": "ab8f2079344900661bc32101b3abe3ed22ffe8f4",
      "parents": [
        "7379a95a0bb6bf430eaf3b84ddb94e4172dd0eea"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 13 14:39:30 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Fri Feb 15 11:04:11 2013 -0800"
      },
      "message": "Adding idle maintenance service.\n\nIt is beneficial that there is a mechanism on the platform\nto notify applications whether it is safe to perform somehow\nexpensive operations while the user is not using the device.\nThus, user experience will not be degraded. An example is\ndiscarding of unused blocks on a mounted file system instead\nof doing this on every write operation.\n\nbug:8056794\n\nChange-Id: I708bad9d3ce6c8f1d5a1c05c0abf46f81a3d464b\n"
    },
    {
      "commit": "22ee9aad834b055df1bd5d5544e37a63edc963fe",
      "tree": "2f6d2d50a1034472fb866d0b8851db3e5807086a",
      "parents": [
        "0786207be59d34a8ba8a7a1e93602002fac97587",
        "343ad71d7cb4934751a91006677266bd73ed224c"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Feb 14 22:21:52 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 14 22:22:35 2013 +0000"
      },
      "message": "Merge \"Reset and reuse Iterators and don\u0027t new() one.\""
    },
    {
      "commit": "0786207be59d34a8ba8a7a1e93602002fac97587",
      "tree": "e67ba5fcacecaafbfafb57ecc67c7c8fcea4c6d3",
      "parents": [
        "58a1ca6642d404b67e5c9e75076b9bbe08e4076b",
        "dc7b3e3b6e1aa3f347c7d843ee453688c4d90e29"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 14 12:50:34 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 14 12:50:34 2013 -0800"
      },
      "message": "am dc7b3e3b: am 9657ba0e: Merge \"KeyStore: stop using state()\"\n\n# Via Android Git Automerger (1) and others\n* commit \u0027dc7b3e3b6e1aa3f347c7d843ee453688c4d90e29\u0027:\n  KeyStore: stop using state()\n"
    },
    {
      "commit": "343ad71d7cb4934751a91006677266bd73ed224c",
      "tree": "d5624a169986af3ddbe2d98ad99429bd3a948021",
      "parents": [
        "3beb8757ac9ba0829bf96e067ae32315f1d4bb3f"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Feb 13 22:37:26 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Feb 14 12:48:53 2013 -0800"
      },
      "message": "Reset and reuse Iterators and don\u0027t new() one.\n\nSave time and memory by resuing permanent mTmpXxxIterator for\nAllWindowsIterator and AppTokenIterator.\n\nChange-Id: I2e5143364651d9471e9e70eee514d3f45d595468\n"
    },
    {
      "commit": "58a1ca6642d404b67e5c9e75076b9bbe08e4076b",
      "tree": "7904db74da53cbc1f10da3c718ba9d6b1fb99652",
      "parents": [
        "a41b23d55da1bd8e68eb784f28e2c3fe9ded080e",
        "3866f0d581ceaa165710feeee9f37fe1b0d7067d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 14 20:25:08 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 14 20:25:08 2013 +0000"
      },
      "message": "Merge \"split Surface in two classes: SurfaceControl and Surface\""
    },
    {
      "commit": "3866f0d581ceaa165710feeee9f37fe1b0d7067d",
      "tree": "b3469b8b6dc7fa4d92afa97297947d2fb5ec9e1b",
      "parents": [
        "f9136fd9692158574d187af8d4031fa4b1e2b6e6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 11 22:08:48 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 14 12:19:11 2013 -0800"
      },
      "message": "split Surface in two classes: SurfaceControl and Surface\n\nSurfaceControl is the window manager side; it can\ncontrol the attributes of a surface but cannot push buffers\nto it. Surface on the other hand is the application (producer)\nside and is used to push buffers to the surface.\n\nChange-Id: Ib6754c968924e87e8dd02a2073c7a447f729f4dd\n"
    },
    {
      "commit": "b9594ce9ebb3f5f303a280f04312ae5754ce3560",
      "tree": "c2d5554829d9dfce6c387a7a41a2218d5bd5f276",
      "parents": [
        "37edbbc62fa031c75ce5a1298fdd07d981907e89"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 14 10:18:38 2013 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 14 12:06:51 2013 -0800"
      },
      "message": "KeyStore: stop using state()\n\nChange-Id: I721974fd95f8d1ab06a3fd1bbb4c9b4d9d1d7752\n"
    },
    {
      "commit": "496bdbba30a113baaec61d4d0c011461cf5ee36d",
      "tree": "6cacb69143695315403bd6fedd0ca829517070a6",
      "parents": [
        "10c0aa246d9b2633c6cb4e5b714abb0031a4f4cd"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Feb 14 09:32:55 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Feb 14 10:56:11 2013 -0800"
      },
      "message": "Remove AppWindowToken lists.\n\nNo longer necessary.\n\nChange-Id: I0d2b96f69152fb93b6ba56f02ce9693ff1370cbc\n"
    },
    {
      "commit": "534d136aa66fb13f7c1b482513627de45c218c29",
      "tree": "e5dda8665b92cd850448c679b2efb32905d913cb",
      "parents": [
        "fd869887c3477bb2699b72ea752a8466602ea637",
        "b0c0b1fd70e3edeb724e2b2fb2c7063eb943f05e"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Feb 14 18:13:14 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 14 18:13:26 2013 +0000"
      },
      "message": "Merge \"Remove unused App methods.\""
    },
    {
      "commit": "fd869887c3477bb2699b72ea752a8466602ea637",
      "tree": "e235346834e0d61ff3cd78cb594ddef1e6c048b0",
      "parents": [
        "f0b36c559074718c5e932c20a9931d97d9c061ef",
        "9055ae369774e88cd856fd58305738e28b427b88"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Thu Feb 14 16:43:33 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 14 16:43:33 2013 +0000"
      },
      "message": "Merge \"Fix a permissions probem in ConnectivityManager\""
    },
    {
      "commit": "f0b36c559074718c5e932c20a9931d97d9c061ef",
      "tree": "af77c7f282258c013b6433daa2beead375333497",
      "parents": [
        "30d2f8d6e0c26dd32dc8b737170253f015156591",
        "fb32c6e9e97e8c7541e85fcbd200ae86e721e7a4"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Feb 14 06:21:19 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 14 06:22:32 2013 +0000"
      },
      "message": "Merge \"Refactor setAppOpVisibility implementation.\""
    },
    {
      "commit": "9a2c2a6da90abbcc9a064c20e93ed885651f4ae1",
      "tree": "424065d447332bcbc2f95782abcedf897d9a22a2",
      "parents": [
        "336fcac31ddccc7e7a6773d03e7cb17967ebb898"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Jan 14 16:48:51 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Feb 13 17:40:49 2013 -0800"
      },
      "message": "Parse network stats using native code.\n\nSwitch to parsing detailed network stats with native code, which\nis 71% faster than ProcFileReader.\n\nChange-Id: I2525aaee74d227ce187ba3a74dd08a2b06514deb\n"
    },
    {
      "commit": "044dca285f567863a5ab345ac139f1fa31cac2cc",
      "tree": "9c8ea3d959f665b2a8f185a9637b490db11a241a",
      "parents": [
        "805a6fe7b1417640ccaf7914171cb65515b6ab39",
        "51611eb72897645eba2140d5de0795c1830b90da"
      ],
      "author": {
        "name": "Michael Runge",
        "email": "mrunge@google.com",
        "time": "Thu Feb 14 00:51:16 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 14 00:52:31 2013 +0000"
      },
      "message": "Merge \"Add logging for kernel audit failures, including SELinux.\""
    },
    {
      "commit": "51611eb72897645eba2140d5de0795c1830b90da",
      "tree": "9bc3ddc57877934667dce79da76665952214493f",
      "parents": [
        "923bd98f67d36cbafa58941fce5952fafd09de4b"
      ],
      "author": {
        "name": "Geremy Condra",
        "email": "gcondra@google.com",
        "time": "Wed Feb 13 16:07:21 2013 -0800"
      },
      "committer": {
        "name": "Geremy Condra",
        "email": "gcondra@google.com",
        "time": "Wed Feb 13 16:39:44 2013 -0800"
      },
      "message": "Add logging for kernel audit failures, including SELinux.\n\nBug: 7707280\nChange-Id: I3788b465cb5733c93dbf36c91ce26e37d4be41c2\n"
    },
    {
      "commit": "a7d72dfded3437e05c303dc40d61248022eb048b",
      "tree": "b0f0496b311568dbe2bcfdc74c2104da7c611277",
      "parents": [
        "0a4b65e0792c7e5f5e8ce641a899ed06cfa1cf64",
        "7379a95a0bb6bf430eaf3b84ddb94e4172dd0eea"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 13 23:48:35 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 13 23:50:37 2013 +0000"
      },
      "message": "Merge \"Proper clean up when Ui test automation service is unregistered or dies.\""
    },
    {
      "commit": "7379a95a0bb6bf430eaf3b84ddb94e4172dd0eea",
      "tree": "44e6a2db6f5df3eebb390a579ca30c48d15e3390",
      "parents": [
        "0726843ea088e7c6754fe6ac410749a852316aac"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 13 15:47:29 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 13 15:47:32 2013 -0800"
      },
      "message": "Proper clean up when Ui test automation service is unregistered or dies.\n\nThe UI test automation service was not removed from the list of\nenabled and installed service where it was explicitly added on\nregistration. This was leaving the accessibility manager service\nin an inconsistent state.\n\nbug:8185435\n\nChange-Id: Ice17cdef361fe98ce34f8dd01ec11dbad6c4d0c2\n"
    },
    {
      "commit": "b0c0b1fd70e3edeb724e2b2fb2c7063eb943f05e",
      "tree": "698cbfec349c6b8b4a02daf5bdb7a30ee157158e",
      "parents": [
        "ee6e27c122491356f5203b105206a55f0e984fe7"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Feb 13 15:22:54 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Feb 13 15:24:14 2013 -0800"
      },
      "message": "Remove unused App methods.\n\nNow that the Task methods have replaced the App methods remove\nthe App methods.\n\nChange-Id: I0e7432f2c6f99708759ed8c871d20eb5bd38c3c2\n"
    },
    {
      "commit": "ee6e27c122491356f5203b105206a55f0e984fe7",
      "tree": "2dacc3bf076fc4ae25b46a86747a9282949ae3c1",
      "parents": [
        "27b2b04f3c75315cd95357919d34d937ffeac742",
        "926f3839d81e4b6b60238e38350bec7cb6d0269e"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Feb 13 23:22:26 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 13 23:22:27 2013 +0000"
      },
      "message": "Merge \"Stop using AppToken movement and start using Task.\""
    },
    {
      "commit": "0726843ea088e7c6754fe6ac410749a852316aac",
      "tree": "98468eedc4784fd2b3df155d37705c642c8e7600",
      "parents": [
        "fd0fa65eeae00f58863af060950e10f20971726b"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 13 14:55:19 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 13 14:59:00 2013 -0800"
      },
      "message": "Fixing a NPE in accessibility manager service.\n\nThere was a missing null checks as a result of a recent\nrefactoring.\n\nbug:8185435\n\nChange-Id: I3a1e256b434755b3a27f609dd2b6aeec31aa9a4f\n"
    },
    {
      "commit": "926f3839d81e4b6b60238e38350bec7cb6d0269e",
      "tree": "d7a0d58f767317e626e5b72d7db3145ef2f58680",
      "parents": [
        "68b600913b699da0fbfcd9d913e4c4fdb08e06b8"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Feb 13 11:56:07 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Feb 13 11:58:56 2013 -0800"
      },
      "message": "Stop using AppToken movement and start using Task.\n\nChange-Id: I5fbd3b2b692e0e127386051f782b1015515ba384\n"
    },
    {
      "commit": "769a5b72dc076facae20154bf5d55b9810322b87",
      "tree": "840fb829430c7744bbe0713463dbfdb9ba600e9a",
      "parents": [
        "0888a06762fb55d48646c86c6a0184a0b96cdc24",
        "30e2d72810e699d7a61277b7ba1b6cace26b84aa"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Feb 13 19:44:35 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 13 19:44:35 2013 +0000"
      },
      "message": "Merge \"Replace access to mAppTokens with AppTokenIterator\""
    },
    {
      "commit": "eff99182297f1c762789237a7d66c9bef754a3d7",
      "tree": "17e6e4857c458e635877b3ac44703380f034947a",
      "parents": [
        "93799ba01b5f2902d7120db8416a1e15103286e8",
        "0c232f5a99b0fafb7ef188ae54c400d8811d471b"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Feb 13 19:29:48 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 13 19:29:58 2013 +0000"
      },
      "message": "Merge \"Escape arguments before passing to netd.\""
    },
    {
      "commit": "0c232f5a99b0fafb7ef188ae54c400d8811d471b",
      "tree": "730b93e387e8e74fc1f5077ed4185b96d743d691",
      "parents": [
        "ea2f802928297c199c7b94dbbba867a8544e14ac"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Feb 13 11:27:24 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Feb 13 11:27:24 2013 -0800"
      },
      "message": "Escape arguments before passing to netd.\n\nChange-Id: I70bb0cb1e90abd490f8893365c6bdf1844b01d18\n"
    },
    {
      "commit": "9055ae369774e88cd856fd58305738e28b427b88",
      "tree": "f1adf4fd622a6d1225777c6098971485d369323b",
      "parents": [
        "35185a9ccf016f1d5fbe055e89a6c4c79a247981"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Tue Feb 12 17:18:25 2013 -0800"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Tue Feb 12 17:18:25 2013 -0800"
      },
      "message": "Fix a permissions probem in ConnectivityManager\n\nstopUsingNetworkFeature fails because of new permissions checks in netd.\n\nChange-Id: I04cb10d955c9dd9977c460c6c1db0d1910a863ce\n"
    },
    {
      "commit": "30e2d72810e699d7a61277b7ba1b6cace26b84aa",
      "tree": "89011de6d793c94d9503642c6ec9d0b8fcd41e67",
      "parents": [
        "7f03185fbe4ac066ffa7f6e3d29b531a9c43c29f"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 12 11:30:16 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 12 16:03:29 2013 -0800"
      },
      "message": "Replace access to mAppTokens with AppTokenIterator\n\nMore switching from Activity-based to Task-based control.\n\nChange-Id: Ida47d71a52b875a6a6bd77cb62911053f942da15\n"
    },
    {
      "commit": "7f03185fbe4ac066ffa7f6e3d29b531a9c43c29f",
      "tree": "d0f56c04c77cd03c89ddad36db59c628fab1c442",
      "parents": [
        "bea3b60ed1ecf1cc2a9a6b1fe550f8af7392c721",
        "e45e45e37e4ded9a70c7e6c7f4fdf39c35e38fd4"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Feb 13 00:00:22 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 13 00:01:47 2013 +0000"
      },
      "message": "Merge \"Hacks to fix lockdown\""
    },
    {
      "commit": "e45e45e37e4ded9a70c7e6c7f4fdf39c35e38fd4",
      "tree": "516319ced590b2f5485619e046cb79b598ef83b2",
      "parents": [
        "b47e6c77b34da8bde5d706e5a25a413b8cc2e0ba"
      ],
      "author": {
        "name": "Geoffrey Borggaard",
        "email": "geoffreyb@google.com",
        "time": "Thu Jan 24 10:03:20 2013 -0500"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 12 23:57:20 2013 +0000"
      },
      "message": "Hacks to fix lockdown\n\nChange-Id: Icf715e84ac7f8bd12eabd01f35860c36a60a8caf\n"
    },
    {
      "commit": "bea3b60ed1ecf1cc2a9a6b1fe550f8af7392c721",
      "tree": "97fcfefc3e51ac5991b274508ff7f9905df79ff8",
      "parents": [
        "b47e6c77b34da8bde5d706e5a25a413b8cc2e0ba",
        "05d6272bad2d707b488a6f8784ce8aea5e25b110"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 12 23:57:09 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 12 23:57:09 2013 +0000"
      },
      "message": "Merge \"Add AppWindowTokens to TaskList.\""
    },
    {
      "commit": "fb32c6e9e97e8c7541e85fcbd200ae86e721e7a4",
      "tree": "c11a8eac5828fab0ef4cc7cf8c011ba0d3835463",
      "parents": [
        "f9d2c2e63a3c8af5c230a24a3f243c94011bf2b7"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 12 15:08:44 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 12 15:08:44 2013 -0800"
      },
      "message": "Refactor setAppOpVisibility implementation.\n\n- Convert double iteration over DisplayContents and WindowLists to\nsingle iteration over AllWindowsIterator.\n\n- Use existing change check in show() and hide() to trigger animation\nscheduling rather than propagate change state up through calling tree.\n\nChange-Id: Ic703a9fddebacbd0785bd5a186e95f9d0b128c42\n"
    },
    {
      "commit": "559c654801bba35c184f3ed517040305a94fb4d3",
      "tree": "c75416f5faecf322245a5f2a69c1ee9e6085bd8c",
      "parents": [
        "6b2c7600e946b4130585f8665f9720d09feb6411"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Feb 12 14:57:04 2013 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Feb 12 14:57:04 2013 -0800"
      },
      "message": "For now enable backup/restore DEBUG logs\n\nChange-Id: I5733251f1e11c8eedb0601ae6751a35134d6419d\n"
    },
    {
      "commit": "1dba35d62d0b41652a103913296373cc5ead8bff",
      "tree": "0052acd51dd0939d604c7db9b7f2ec8528f82a0e",
      "parents": [
        "1af81b6bdc589c9fc77c51d29c204eaf64e4ff13",
        "78d0d25dca42fcde5dcea98ab74bfc7f5c8e1114"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Feb 12 19:59:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 12 20:01:02 2013 +0000"
      },
      "message": "Merge \"Historical notification access API.\""
    },
    {
      "commit": "78d0d25dca42fcde5dcea98ab74bfc7f5c8e1114",
      "tree": "5f4c34562b2e6e632a418d3f4a65dce1b63b97d5",
      "parents": [
        "bde3104ddce09d03255ff481dfb13bc9e67119e8"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Feb 12 08:14:52 2013 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Feb 12 14:33:24 2013 -0500"
      },
      "message": "Historical notification access API.\n\nSimilar to getActiveNotifications(),\ngetHistoricalNotifications() returns a list of all\nnotifications that have been posted, in\nreverse-chronological order. It currently includes duplicate\nentries for notifications that have been updated (so it\nreally is tracking every notification that has been posted\nto the system).\n\nChange-Id: Icce8d6f96bbe76710c989fd0068ff971c6498605\n"
    },
    {
      "commit": "05d6272bad2d707b488a6f8784ce8aea5e25b110",
      "tree": "6774cfb3e73de09a67864419085ecbf04eb50382",
      "parents": [
        "72baa8fbb2d117e885022e736e91ec231e809264"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Feb 11 09:39:27 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 12 10:52:55 2013 -0800"
      },
      "message": "Add AppWindowTokens to TaskList.\n\n- Add/remove/move TaskLists from ActivityStack.\n- Further isolate mHistory.\n- Cleanup warnings by parameterizing ArrayList.\n- Fix previous bugs.\n\nChange-Id: Ife8c7b7347479c70f10467cc384283456149ac50\n"
    },
    {
      "commit": "b6b23ecdfc262097eaf7afa611e9f22cc543806f",
      "tree": "dc64fa819791b61c99743d4a38825410824b7a00",
      "parents": [
        "702b42dd7415a88e876d4bacb1b543579548c607"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Feb 11 19:29:06 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 12 10:40:16 2013 -0800"
      },
      "message": "App ops: the draw on top op now actually controls what is drawn.\n\nChange-Id: Iccfc0723a0f92108a4f7d631d74efe21dbc6f157\n"
    },
    {
      "commit": "1d3079cb8d477b50d5873e571695d938a6cb4712",
      "tree": "bcf599658217a9eddea3ef53d06d32e5b1b0ffd6",
      "parents": [
        "72baa8fbb2d117e885022e736e91ec231e809264",
        "514074fae81028937eda29e782c92e8ea78d85d2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 12 00:40:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 12 00:41:07 2013 +0000"
      },
      "message": "Merge \"App ops: cleanup, handle root and shell, perms.\""
    },
    {
      "commit": "72baa8fbb2d117e885022e736e91ec231e809264",
      "tree": "f2271538d0e02ebe937516274ce713b63e28f4ed",
      "parents": [
        "20949a76fee62e89d7dc22858a74469efa14f61d",
        "0dd19a8394dea139804fea126ce9ba7539a3724d"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Mon Feb 11 23:57:39 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 11 23:57:47 2013 +0000"
      },
      "message": "Merge \"Reintroduce the net.dns system properties \u003cTEMP\u003e\""
    },
    {
      "commit": "514074fae81028937eda29e782c92e8ea78d85d2",
      "tree": "063f29c329837834d3f60400899ea883322fa02e",
      "parents": [
        "de1fadfb7f70d464382e518c7f3390faf82f81f2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Feb 11 10:52:46 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Feb 11 15:33:48 2013 -0800"
      },
      "message": "App ops: cleanup, handle root and shell, perms.\n\nRework how the shell user is defined so that it is\nassociated with an actual apk, instead of being a free\nroaming uid with special permissions assigned to it.\nThis allows us to correctly account for its operations\nin app ops.\n\nImplement a special case for the root user in app ops --\nit is always allowed, always with the package name \"root\".\n\nAdd various code to take care of cleaning up package state\nfrom app ops -- when packages are uninstalled, and during\nboot if any packages currently being stored no longer exist.\n\nAlso fix a bug in the activity manager to correctly grant\npermissions in all cases when onNewIntent() is being called.\n\nChange-Id: Iae9f6d793ee48b93518c984ad957e46ae4582581\n"
    },
    {
      "commit": "0dd19a8394dea139804fea126ce9ba7539a3724d",
      "tree": "4d61ca13b1811ccca61a9b8f135080cc0144e924",
      "parents": [
        "e2237ce8ad228bdba8d3026beab3b04d794203e9"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Mon Feb 11 15:25:10 2013 -0800"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Mon Feb 11 15:25:10 2013 -0800"
      },
      "message": "Reintroduce the net.dns system properties \u003cTEMP\u003e\n\nRemoving these properties broke video playback as they used\na custom dns resolver.  We\u0027ll work together to resolve our\nresolver issues in the future, but this was the easy fix to\nget things working again.\n\nbug:8173236\nChange-Id: I687dae59eda4fc449efc34eed11c3dc88a110ad0\n"
    },
    {
      "commit": "636c61ed41f08b4a8de11ab9146903a8125a4aa0",
      "tree": "57a29f36e488bcac257a8e5851b07093f92cfcce",
      "parents": [
        "e63fb8f1f92bcae3be2bcb6d521b351dda0f0ae2",
        "e4cf73437a18c1444055f88a1fcc0d146ec23ac5"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Feb 11 23:16:41 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 11 23:17:07 2013 +0000"
      },
      "message": "Merge \"Starting point for User Restrictions API\""
    },
    {
      "commit": "e2237ce8ad228bdba8d3026beab3b04d794203e9",
      "tree": "b213673bdebea01d9000d5e523f20e471dc86ccd",
      "parents": [
        "981e60edc3ed91ea8b5e1dae98669b88b175e19b",
        "cae015fea398e1d99c0b538991535330f31fe543"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Feb 11 22:13:48 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 11 22:13:48 2013 +0000"
      },
      "message": "Merge \"Make ActivityStack.mHistory private.\""
    },
    {
      "commit": "981e60edc3ed91ea8b5e1dae98669b88b175e19b",
      "tree": "1b8d493ad9678307fa462fd4abf2ccb08c214ba3",
      "parents": [
        "d21267a26845c36842990e0705a470b92caa7628",
        "57bf88508e0491caced22c4c592d33aba6d88129"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Mon Feb 11 21:03:08 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 11 21:03:37 2013 +0000"
      },
      "message": "Merge \"Refactoring of the Accessibility.\""
    },
    {
      "commit": "57bf88508e0491caced22c4c592d33aba6d88129",
      "tree": "75acdacb7a8f6f5fc7c463debf6ae6426e814849",
      "parents": [
        "3c6721899ea903ed278feac1e76a97137fa9d0c3"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Feb 07 19:21:42 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Mon Feb 11 13:02:42 2013 -0800"
      },
      "message": "Refactoring of the Accessibility.\n\n1. The accessibility manager service updates its internal state\n   based on which settings are enabled, what accessibility services\n   are installed and what features are requested by the enabled\n   services. It was trying to do the minimal amount of work to\n   react to contextual changes like these which resulted in missed\n   cases and complex code. Now there is a single method that reads\n   the contextual information and single method that reacts to\n   contextual changes. This makes the code much easier to maintain.\n\n2. The accessibility manager service was not updating its internal\n   state when requested features from accessibility services change.\n   It was relying on changing system settings and reacting to the\n   settings change. This is problematic since the internal state is\n   not updated atomically which leads to race condition bugs. For\n   example, if touch exploration is enabled and a service requests\n   it is disabled, the internal state will not be updated but a\n   request for a settings change will be made. Now while the settings\n   change is propagating another request form the same service\n   comes to enable touch exploration but the system incorrectly\n   thinks touch exploration is enabled. At the end the feature is\n   disabled even though it was requested.\n\n3. Fixed a potential NPE if the accessibility input filter\u0027s event\n   handler was nullified between processing two event batches.\n\n4. Fixed a bug where, if magnification is enabled, it does not work\n   on the settings screen since the magnified bounds are not pushed\n   from the window manager to the accessibility manager.\n\nChange-Id: Idf629a06480e12f0d88372762df6c024fe0d7856\n"
    },
    {
      "commit": "e4cf73437a18c1444055f88a1fcc0d146ec23ac5",
      "tree": "04e5ae7765f4177fde594ec37fa65fc00b3cb507",
      "parents": [
        "64d41d7391e57886978e94e86cf01a167226dbfe"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Dec 17 11:12:09 2012 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Feb 08 15:52:47 2013 -0800"
      },
      "message": "Starting point for User Restrictions API\n\nRestrictions saved as key/value pairs, mostly booleans right now\nbut might be expanded to other types later.\n\nSave and restore restrictions in the user manager service.\nEnforce some of the restrictions at the framework level. Some\nare enforced (also) at the app level, such as in Settings.\n\nChange-Id: Id11ffe129cb6a177e094edf79635727388c26f40\n"
    },
    {
      "commit": "cae015fea398e1d99c0b538991535330f31fe543",
      "tree": "9fea143039d131f6a591241f405815f1da5ce0a7",
      "parents": [
        "2ceb08150512ca121acc474d94f84357f0bf0bbf"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Feb 08 14:31:27 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Feb 08 14:31:27 2013 -0800"
      },
      "message": "Make ActivityStack.mHistory private.\n\nIsolate the Activity history for later conversion to Task-based\nmanagement.\n\nChange-Id: I4b6bf22de035c768aa705df0cc4f84486e8ede56\n"
    },
    {
      "commit": "bc18fe851c98dbe6be4eb2655efb1ef95902d961",
      "tree": "1d8ec3c761a18918803b3f1aa3aa342e812a15c1",
      "parents": [
        "b9620a89bd734d749cd162cbcda4699474bbf57a",
        "fd1c028e34fc559ccccebd18979ee85ec7821dea"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Feb 07 17:41:44 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 07 17:41:44 2013 -0800"
      },
      "message": "am fd1c028e: Merge \"Handle hotplug events as described instead of rescanning\"\n\n# Via Gerrit Code Review\n* commit \u0027fd1c028e34fc559ccccebd18979ee85ec7821dea\u0027:\n  Handle hotplug events as described instead of rescanning\n"
    },
    {
      "commit": "190fd9aecae650ace2213fdb17a647b2f5a4aa5f",
      "tree": "89d750b99f67fbfa65aef7b38ca039d75c7996bb",
      "parents": [
        "9434c112d1fef52ade78d7ef818daf981bf63bef"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Nov 08 11:55:14 2012 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 07 21:59:41 2013 +0000"
      },
      "message": "Handle hotplug events as described instead of rescanning\n\nHotplug events say which display they\u0027re for and whether the display\nwas connected or disconnected. Before, this info was ignored, and the\nevent just triggered a rescan of all displays. If a display was\ndisconnected and then reconnected quickly, the rescan would treat this\nas a no-op or a device property change and wouldn\u0027t turn the display\non.\n\nNow the display manager attempts to update its state with the change\nthe event describes. So a quick disconnect/connect cycle will cause\nthe display to be turned on since the display manager will have\nupdated its internal state to reflect the disconnect event, and will\ntreat the connect event as a new display rather than a device property\nchange.\n\nBug: 7491120\nChange-Id: Ia83f7c96b7f16f4c1bed2a73e9b56b0bf7ee3984\n"
    },
    {
      "commit": "fde19b106b2b77bc3540b04445357870caf878b5",
      "tree": "9da09568807fde393a99095921e308b8293d71e3",
      "parents": [
        "da8d8b9699fe8e9557389465007e333d3f03dcc1"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Jan 17 00:21:05 2013 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Feb 07 15:43:02 2013 -0500"
      },
      "message": "New API to request a list of current notifications.\n\nThe ACCESS_NOTIFICATIONS permission is signature|system only.\n\nChange-Id: I41338230aee9611117cbdac251c1b6b6c3cebf00\n"
    },
    {
      "commit": "e11f058ee0c04be308126bb4fbc0c8e9901164c5",
      "tree": "8b1d08185ac77998091623dea1ad2aa287b0a102",
      "parents": [
        "034170cd4ca17bdda2d0baae5f438f2786805147",
        "d080bb07c88ca5ccf99f326789ed472448b50832"
      ],
      "author": {
        "name": "Jaikumar Ganesh",
        "email": "jaikumarg@android.com",
        "time": "Thu Feb 07 11:19:59 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 07 11:19:59 2013 -0800"
      },
      "message": "am d080bb07: am b9620a89: am 9434c112: Merge \"Services: Adding HSPAP info in Android\"\n\n# By Arun Ravindran\n# Via Android Git Automerger (2) and others\n* commit \u0027d080bb07c88ca5ccf99f326789ed472448b50832\u0027:\n  Services: Adding HSPAP info in Android\n"
    },
    {
      "commit": "034170cd4ca17bdda2d0baae5f438f2786805147",
      "tree": "4b5d21d7da58083e34045f4e1729a8a3963d91d0",
      "parents": [
        "2ceb08150512ca121acc474d94f84357f0bf0bbf",
        "8b47b3601f82f299bb8c135af0639b72b67230e6"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Thu Feb 07 19:02:47 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 07 19:02:47 2013 +0000"
      },
      "message": "Merge \"Second pass tying into dns cache per interface\""
    },
    {
      "commit": "2ceb08150512ca121acc474d94f84357f0bf0bbf",
      "tree": "8c6922150040d8529f79b6fdf535d9f080ae1b10",
      "parents": [
        "64d41d7391e57886978e94e86cf01a167226dbfe",
        "b1fd65c0ff5784b90d765edb7e3c3115d767dff0"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Feb 07 18:50:50 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 07 18:50:52 2013 +0000"
      },
      "message": "Merge \"Migrate AppWindowToken lists into DisplayContent.\""
    },
    {
      "commit": "b9620a89bd734d749cd162cbcda4699474bbf57a",
      "tree": "ee017315f765fec74ee04dc7ce4968d56c789409",
      "parents": [
        "1fd774709790b220bb780e95db7275d60a1eae57",
        "9434c112d1fef52ade78d7ef818daf981bf63bef"
      ],
      "author": {
        "name": "Jaikumar Ganesh",
        "email": "jaikumarg@android.com",
        "time": "Thu Feb 07 10:46:10 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 07 10:46:10 2013 -0800"
      },
      "message": "am 9434c112: Merge \"Services: Adding HSPAP info in Android\"\n\n# By Arun Ravindran\n# Via Gerrit Code Review (1) and Shuo Gao (1)\n* commit \u00279434c112d1fef52ade78d7ef818daf981bf63bef\u0027:\n  Services: Adding HSPAP info in Android\n"
    },
    {
      "commit": "9434c112d1fef52ade78d7ef818daf981bf63bef",
      "tree": "7aaeb4943d54a29ea162ff0c0cb9151c093ca76a",
      "parents": [
        "1a1e9b317ac2d737ad92a35c4d806f0fda1ede70",
        "58d46126e4d11e0cc5f6a1192829511bd5850ce2"
      ],
      "author": {
        "name": "Jaikumar Ganesh",
        "email": "jaikumarg@android.com",
        "time": "Thu Feb 07 17:54:41 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 07 17:54:41 2013 +0000"
      },
      "message": "Merge \"Services: Adding HSPAP info in Android\""
    },
    {
      "commit": "64d41d7391e57886978e94e86cf01a167226dbfe",
      "tree": "41c3a06aa71068e89912021e8c820e4973f16d2a",
      "parents": [
        "34e0b05e28b25dbe20c819ad4fa923c716c37e5f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 07 00:33:31 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 07 00:33:31 2013 -0800"
      },
      "message": "Fix build, conflict with another change.\n\nChange-Id: If4d7b6c814d946806838cee7dcaccba4c65c3d0f\n"
    },
    {
      "commit": "34e0b05e28b25dbe20c819ad4fa923c716c37e5f",
      "tree": "0f58340c8cb0326b225748fa700c88cc1ffb0cd9",
      "parents": [
        "8949b2480b8d4c99aa7d20508522a42421a9acef",
        "c2293025a25e04b26bf53713d71f85fd9ca5e8e9"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 07 08:03:13 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 07 08:03:14 2013 +0000"
      },
      "message": "Merge \"App ops: track system windows, monitoring changes.\""
    },
    {
      "commit": "c2293025a25e04b26bf53713d71f85fd9ca5e8e9",
      "tree": "0a29790db261fd32404ea9aecfba5bc53e81fe57",
      "parents": [
        "0984780bc7aed76018b9f88c0d9c3ce300bde39a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Feb 06 23:14:49 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Feb 06 23:59:56 2013 -0800"
      },
      "message": "App ops: track system windows, monitoring changes.\n\nChange-Id: I273e82bdad66ada3bf0f7ec9176bc304b9ee1ee8\n"
    },
    {
      "commit": "8b47b3601f82f299bb8c135af0639b72b67230e6",
      "tree": "4173efedd4513a3ed40d2314db9ab7946d9ae316",
      "parents": [
        "9c4012b31b0c09cb14689bd96a71aae42c8a00cd"
      ],
      "author": {
        "name": "Mattias Falk",
        "email": "mattias.falk@sonyericsson.com",
        "time": "Tue Aug 23 14:15:13 2011 +0200"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Wed Feb 06 17:43:28 2013 -0800"
      },
      "message": "Second pass tying into dns cache per interface\n\nSet dns servers for secondary nets and attach the\nprocesses (pids) that are using the secondary nets\nto the secondary nets associated dns cache.\n\nbug:5465296\nChange-Id: I1eaf92d5c6b81d287e9fb2763b3d972d9de34395\n"
    },
    {
      "commit": "08d11e1fa939ecdda1ecc8bda750c07e924f06aa",
      "tree": "64722e6894c12c2572cc37262ab4774407e0bae7",
      "parents": [
        "511afdd3ac55ba27c5882cbe189d89a2942420b1",
        "b932319bff5d0d29a287bcc7bd0b594685a83036"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Feb 06 23:57:44 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 06 23:57:44 2013 +0000"
      },
      "message": "Merge \"Require that bugreport requesters have DUMP.\""
    },
    {
      "commit": "f21f175369783d9a77f1e580b42ef9b3e918c2af",
      "tree": "dc02f01ba79432081b5fcb3cdbbe10431860da90",
      "parents": [
        "150edcaf8b7eeeba8a4753eb0f6b9855ad1e1eb1",
        "09eeaecf7440ff63c937337bb2f50079ebbbf9a2"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Wed Feb 06 17:50:49 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 06 17:51:09 2013 +0000"
      },
      "message": "Merge \"refactor isAllowedBySettingsLocked()\""
    },
    {
      "commit": "91641ec5538aa3b9872f24c43f811bffbcd12368",
      "tree": "c49a0f1ddd73f2727f8b88eeb9e4d456e4738ed6",
      "parents": [
        "23e500d168e8d649305445f6c1d2b49d8d2c00fd",
        "3d5173deea9d74b0476739c7108f9b77bcd8a495"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Wed Feb 06 17:01:23 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 06 17:01:56 2013 +0000"
      },
      "message": "Merge \"Fix addGpsStatusListener\""
    },
    {
      "commit": "0984780bc7aed76018b9f88c0d9c3ce300bde39a",
      "tree": "d44903b402d5c21c5cc7eec5c53a274bf0a60b32",
      "parents": [
        "33c239f74816449979456e8535b8e058057373d7",
        "961321fe4ed4431a6362d729d9e4ea26bdecde61"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Feb 06 01:34:40 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 06 01:34:40 2013 +0000"
      },
      "message": "Merge \"App ops: add op for writing settings.\""
    },
    {
      "commit": "961321fe4ed4431a6362d729d9e4ea26bdecde61",
      "tree": "0ddcc0f94b7840ce752fd10a9e57b55c3f2c4d9b",
      "parents": [
        "f51f61269aacdfcf737b2c32b6b216c48ab61e65"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 05 17:22:41 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 05 17:22:41 2013 -0800"
      },
      "message": "App ops: add op for writing settings.\n\nAlso fix a build.\n\nAnd fix a bug that I think was introduced in the multi-user work\nthat removed the permission check for writing to settings...!\n\nChange-Id: I5945682faa789ffc78fd3546c0df7d03693f106d\n"
    },
    {
      "commit": "b1fd65c0ff5784b90d765edb7e3c3115d767dff0",
      "tree": "83e907e408d2667911eb74e1adc445fa574c1fbd",
      "parents": [
        "93f770b59fa1bd0f2a5c18fcfaffd2a1fc54f585"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 05 13:34:57 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 05 17:08:10 2013 -0800"
      },
      "message": "Migrate AppWindowToken lists into DisplayContent.\n\nIn preparation for converting ActivityManager control to a task-based\ninterface the AppWindowTokens are being stored per-display.\n\nChange-Id: Ie5e355219554523f5e56eaef138d382975cf1682\n"
    },
    {
      "commit": "3d5173deea9d74b0476739c7108f9b77bcd8a495",
      "tree": "e4e7445e0f8c4c6fe563d1557df3468746fd1139",
      "parents": [
        "080df3f38fc47f15ad321fff00689dcd07e1d075"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Feb 05 16:07:32 2013 -0800"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Feb 05 16:09:41 2013 -0800"
      },
      "message": "Fix addGpsStatusListener\n\n.detrevni saw tset ()sseccAnoitacoLkcehc eht smees tI\n\nBug: 8131283\nChange-Id: I91ded29338c93aa7ab35d849fc5338b3f6d6590b\n"
    },
    {
      "commit": "506f65c3043e98ef598f1329eaf55add01cc8675",
      "tree": "7231da27d659deb0b57144ef03ce2f1e3bf8c26c",
      "parents": [
        "dc3edbb0e5573231fedead8de8898d4111790ea7",
        "213c13aadd5bd4fd3876528f17f179379ca1c1f6"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Feb 05 22:34:36 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 05 22:35:02 2013 +0000"
      },
      "message": "Merge \"Ensure touch explorer and magnifier get a well-formed event stream.\""
    },
    {
      "commit": "a61bb2375c4133852ade5774c5c1e7bd39cc1407",
      "tree": "77d3f81cb13e673d8bb2a52e3af11dfdec0264ad",
      "parents": [
        "da27e5a2c491955bea897ee5826fe6d3e9c7553b",
        "f79811e7b9611066b3ca2df3ceea07bdd99597e9"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Tue Feb 05 21:41:02 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 05 21:41:07 2013 +0000"
      },
      "message": "Merge \"LocationManagerService: Add debug flag lookup from properties\""
    },
    {
      "commit": "b932319bff5d0d29a287bcc7bd0b594685a83036",
      "tree": "0d68873d9c303062afeb95e8b782b4af61ed8eb1",
      "parents": [
        "cd80392fe706e0b419a3e655702006a25d397243"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 05 13:32:18 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 05 13:32:18 2013 -0800"
      },
      "message": "Require that bugreport requesters have DUMP.\n\nBug: 8139970\nChange-Id: I055855fa5450521122e54ed39df5981190b401bd\n"
    },
    {
      "commit": "f51f61269aacdfcf737b2c32b6b216c48ab61e65",
      "tree": "33839b315b97323df81f9638c8bb085241f017cc",
      "parents": [
        "b86147910877f1aae0733f05a9a93b91101e67e2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Feb 04 18:23:34 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 05 11:56:12 2013 -0800"
      },
      "message": "App ops: new operations for SMS.\n\nImplementation required a new framework feature\nto associate an app op with a broadcast.\n\nChange-Id: I4ff41a52f7ad4ee8fd80cbf7b394f04d6c4315b3\n"
    },
    {
      "commit": "09eeaecf7440ff63c937337bb2f50079ebbbf9a2",
      "tree": "319d427bbb894159214a1bc72e604bef8a2be44c",
      "parents": [
        "080df3f38fc47f15ad321fff00689dcd07e1d075"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Feb 05 11:34:13 2013 -0800"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Feb 05 11:34:13 2013 -0800"
      },
      "message": "refactor isAllowedBySettingsLocked()\n\nThis commit splits LocationManagerService.isAllowedBySettingsLocked()\ninto isAllowedByUserSettingsRogkei(), which takes a UID argument, and\nisAllowedByCurrentUserSettingsLocked(), which does not. This removes\nthe need to generate synthetic UIDs with arbitrary application IDs\nand makes more explicit when LocationManagerService is acting on\nbehalf of a caller and when it is acting on behalf of the device\u0027s\ncurrent active user.\n\nChange-Id: I2cb8fb52687d2629848e5a4b66a4bda8f0f66fe1\n"
    },
    {
      "commit": "080df3f38fc47f15ad321fff00689dcd07e1d075",
      "tree": "43730a23908ca28c01655afe632ff1cb4753eec2",
      "parents": [
        "2d6ef86241e981bff217891e52f2b689dae9a6c1",
        "03cdd3d275499df3ef1059905899dcc5aaf2ab01"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Feb 05 17:38:48 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 05 17:38:48 2013 +0000"
      },
      "message": "Merge \"dual-mode switching single/multiuser ServiceWatcher\""
    },
    {
      "commit": "213c13aadd5bd4fd3876528f17f179379ca1c1f6",
      "tree": "e2abfb94926ec60e5aa1245af10984e3a1292ac0",
      "parents": [
        "3b53da493440efbacd147d1aedcea8679c3a642b"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Mon Feb 04 14:26:58 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Mon Feb 04 14:34:40 2013 -0800"
      },
      "message": "Ensure touch explorer and magnifier get a well-formed event stream.\n\nWe use an input filter to manipulate the event stream in accessibility\nmode. Some input events, i.e. touch and hover events, are delivered\nto a touch explorer, if touch exploration is enabled, and to a magnifier,\nif screen magnification is enabled. It is possible that at the moment\neach of these features is enabled we are in the middle of a touch or\nhover gesture. The touch explorer and screen magnifier expect to receive\nan event stream that starts with an event that denotes the stream start.\nThis change ensures that hover or touch events are dispatched to the\ntouch explorer and the magnifier only after the start of the first\nwell-formed hover or touch sequence.\n\nChange-Id: I8cd0ad8e1844c59fd55cf1dfacfb79af6a8916df\n"
    },
    {
      "commit": "f79811e7b9611066b3ca2df3ceea07bdd99597e9",
      "tree": "b4ef0d5584642221e5fc7d82fae186ea68ecbdba",
      "parents": [
        "88a23f2f70222459f057ec8a6bbe8eccc8a7b549"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Fri Feb 01 18:45:05 2013 -0800"
      },
      "committer": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Fri Feb 01 18:47:22 2013 -0800"
      },
      "message": "LocationManagerService: Add debug flag lookup from properties\n\nInstead of hardcoding true/false in the code:\n setprop log.LocationManagerService DEBUG\nworks just fine. Or the reboot-proof version in userdebug/eng builds:\ncat \u003e /data/local.prop \u003c\u003ceof\nlog.tag.LocationManagerService\u003dDEBUG\neof\n\nChange-Id: If4efad1c3adc401c0cb5d1a3cc449b53224ead08\n"
    },
    {
      "commit": "923bd98f67d36cbafa58941fce5952fafd09de4b",
      "tree": "6bb02001d54805c4881b85c7b11526c56fc8a086",
      "parents": [
        "4843993e6fbe6429221cd0e9ed72861f5cff46cf",
        "cd7a17c645761ac0b64c75346b159dd30cbcb01c"
      ],
      "author": {
        "name": "Benoit Goby",
        "email": "benoit@android.com",
        "time": "Sat Feb 02 01:56:41 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 02 01:56:49 2013 +0000"
      },
      "message": "Merge \"UsbDebuggingManager: Add interface to clear secure adb keys\""
    },
    {
      "commit": "03cdd3d275499df3ef1059905899dcc5aaf2ab01",
      "tree": "92b7d65eb267d61d621696a431fa83277139e691",
      "parents": [
        "f48a2d30c5d5f7c167310ff9ca1cd2310121be7c"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Fri Feb 01 15:15:54 2013 -0800"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Fri Feb 01 16:00:20 2013 -0800"
      },
      "message": "dual-mode switching single/multiuser ServiceWatcher\n\nThis changelist revises LocationManager\u0027s previous multiuser system.\n\nLocation provider services that are not multiuser-aware continue to\nrun as before: ServiceWatcher binds to location provider services as\nthe current active user. When the device switches from one user to\nanother, ServiceWatcher unbinds from the old user\u0027s location provider\nservice and binds to the new user\u0027s instance.\n\nNow, location provider services that are multiuser-aware or\nuser-agnostic can declare \"serviceIsMultiuser\" metadata in their\nAndroidManifest.xml to prevent ServiceWatcher from performing this\nswitching. These services will run as singleton services and will be\nexpected to handle user switches on their own.\n\nWith this feature in, I was able to switch FusedLocationProvider to\nrun in multiuser mode, sharing the system_server process instead of\nrunning in its own process. The NetworkLocationProvider is unchanged,\nstill running in singleuser mode, cheerfully oblivious to the\npossibility that there might be any user on the device besides the\none it services.\n\nBug: 8028045\nChange-Id: I1a5bd032918419bab6edb46c62ff8c6811170654\n"
    },
    {
      "commit": "1782468c8867292995cf4199afa6e8e7ae118bef",
      "tree": "d1ee633f0005dbc4ffad5f2603ed95e357d16244",
      "parents": [
        "f265ea9d8307282ff1da3915978625a94fc2859e",
        "03ce76081c29ecd30697fbb827ed45444b4a5f38"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Feb 01 23:31:31 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 01 23:31:48 2013 +0000"
      },
      "message": "Merge \"EntropyMixer: add ro.build.fingerprint to the mix\""
    },
    {
      "commit": "03ce76081c29ecd30697fbb827ed45444b4a5f38",
      "tree": "577f70bb021baf0cba30c7195bfee896ebca884a",
      "parents": [
        "1b0e29aec6a9401c224f3fa3a5e05abc487e2e79"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Feb 01 15:21:50 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Feb 01 15:21:50 2013 -0800"
      },
      "message": "EntropyMixer: add ro.build.fingerprint to the mix\n\nChange-Id: I001d337f61fef9667dd3289461bbafe574652232\n"
    },
    {
      "commit": "f265ea9d8307282ff1da3915978625a94fc2859e",
      "tree": "4e92b5de30239c1808a395cb49c9b17fe28ccffb",
      "parents": [
        "7a4ecc957d437ad4914988edc7593570f1e43f79"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jan 31 15:00:51 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 01 15:14:29 2013 -0800"
      },
      "message": "App ops: vibration, neighboring cells, dialing, etc.\n\nImprove handling of vibration op, so that apps are\nbetter blamed (there is now a hidden vibrator API that\nsupplies the app to blame, and the system now uses this\nwhen vibrating on behalf of an app).\n\nAdd operation for retrieving neighboring cell information.\n\nAdd a new op for calling a phone number.  This required\nplumbing information about the launching package name through\nthe activity manager, which required changing the internal\nstartActivity class, which required hitting a ton of code that\nuses those internal APIs.\n\nChange-Id: I3f8015634fdb296558f07fe654fb8d53e5c94d07\n"
    }
  ],
  "next": "447d94684ee73046d769649d8247aacd581bd6e3"
}
