)]}'
{
  "log": [
    {
      "commit": "53149acf7bfe262ff8764351d35af247fcdc4ef0",
      "tree": "89f8beaf34db680f6f0b81713247dad09c6d9048",
      "parents": [
        "d665b49518d1952c2c32825782ff117a13bc7484",
        "c895be7bc68b6f5b37fbb9881f464dd5ea0eb017"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 12 21:41:16 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 12 23:03:59 2013 +0000"
      },
      "message": "Merge \"Implement limited shared libraries in apks.\" into jb-mr2-dev"
    },
    {
      "commit": "274323ce8fa11e39ba66e9874c0a576e58046b1b",
      "tree": "edd43b111f112b93f5b337bb96dfaad37189a43e",
      "parents": [
        "93f99846df1e00f115c8870eab6ef3df54d1ec6a"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Mar 12 14:12:39 2013 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Mar 12 14:44:59 2013 -0700"
      },
      "message": "Remove old show/hide messages on new ime (DO NOT MERGE)\n\nThe previous show/hide messages in the queue were still trying\nto be honored even after a new ime was attached.\n\nFixes bug 8263462.\n\nChange-Id: Iee60dbd1d58542f73aedeac5ccb54cddeb5d5dfe\n"
    },
    {
      "commit": "c895be7bc68b6f5b37fbb9881f464dd5ea0eb017",
      "tree": "fe7ba171c41d3df63b595adaf46a67ace2a7d7d3",
      "parents": [
        "9725d80adc7426ea20f3a193fc81dc1e8b8c4b31"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 11 17:48:43 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 12 12:51:38 2013 -0700"
      },
      "message": "Implement limited shared libraries in apks.\n\nYou can now declare shared libraries in apks that are\non the system image.  This is like the existing mechanism\nof using raw jar files as shared libraries, but since they\nare contained in an apk the library can actually be updated\nfrom the Play Store.  And this even (mostly) works.\n\nThere are some deliberate limitations on this feature.  A\nnew shared library *must* be declared by an apk on the system\nimage.  Installing an update to a system image apk does not\nallow you to add new shared libraries; they must be defined\nby everything on the base system image.  This allows us to\nget rid of a lot of ugly edge cases (shared libraries that were\nthere disappearing after an update is uninstalled for example)\nand give some brakes on apps that happen to be pre-installed\non devices from being able to throw in new shared libraries\nafter the fact.\n\nIn working on this, I ran into a recently introduced bug where\nuninstalling updated to system apps would fail.  This was done\nto allow for the new restricted users that don\u0027t have all\nsystem apps, but conflicts with the existing semantics for\nuninstalling system apps.  To fix this I added a new uninstall\nflag that lets you switch on the new mode if desired.\n\nAlso to implement the desired logic for limitations on declaring\nnew shared libraries in app updates, I needed to slightly tweak\nthe initial boot to keep the Package object for hidden system\npackages associated with their PackageSetting, so we can look at\nit to determine which shared libraries are allowed.  I think\nthis is probably more right than it was before -- we already\nneed to parse the package anyway, so we have it, and when you\ninstall an update to a system app we are in this same state\nuntil you reboot anyway.\n\nAnd having this fixed also allowed me to fix another bug where\nwe wouldn\u0027t grant a new permission to an updated app if its\nsystem image version is updated to request the permission but\nits version is still older than whatever is currently installed\nas an update.  So that\u0027s good.\n\nAlso add new sample code showing the implementation of an apk\nshared library and a client app using it.\n\nChange-Id: I8ccca8f3c3bffd036c5968e22bd7f8a73e69be22\n"
    },
    {
      "commit": "1d280ee9583cc3b8e96f02fcf73cde484f29cc69",
      "tree": "852bec0f325dae554fc3e818e9af20eb0fe54e15",
      "parents": [
        "9f6421a36574b3319d10d700a6e6e506e490ce66",
        "23d7c700324d6ae9a20ddc89617ccc1846f80fc8"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Mar 12 15:53:44 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 12 15:53:45 2013 +0000"
      },
      "message": "Merge \"Accumulate updates to notifications before archiving.\" into jb-mr2-dev"
    },
    {
      "commit": "2adea7ff3b1c30d9de6abd3cb7361a9a5a937dd0",
      "tree": "7c0096142e6fa83ac1092ebf73e429751fb2dffa",
      "parents": [
        "8c63487f3eea9b7276e0559af13f9b35f587cbe5"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Mar 12 07:39:59 2013 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Mar 12 07:39:59 2013 +0900"
      },
      "message": "Remove redundant parameter to modifyRoute\n\nmodifyRoute takes both an interface name and a LinkProperties.\nThis is redundant because all callers get the interface name\nfrom the LinkProperties. Make modifyRoute get the interface\nname from the LinkProperties instead.\n\nChange-Id: I41ba8e0a10241c2f1107204fcaca2be74556042b\n"
    },
    {
      "commit": "de965891130bc50bd02eb6f7bac2ea177a733c2c",
      "tree": "7db214a1d7b3bd023d18dc3d35bb6df91537b29c",
      "parents": [
        "1dc2ff66af106d1e951a5678586215ce0e27e8f6",
        "e16713597661c326d2bb6586a8b13e27520c4227"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Mar 11 17:22:25 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 11 17:22:25 2013 +0000"
      },
      "message": "Merge \"Always specify an interface for host routes.\" into jb-mr2-dev"
    },
    {
      "commit": "e16713597661c326d2bb6586a8b13e27520c4227",
      "tree": "06db53def925439275cadc813996d99130805239",
      "parents": [
        "45b9a5bb93569ca49bbd44f7a518091371687f96"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Fri Mar 08 12:30:44 2013 -0800"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Fri Mar 08 16:41:25 2013 -0800"
      },
      "message": "Always specify an interface for host routes.\n\nChange-Id: I05b4d87e7d7e8237c6f4a70f1fedae00f416f581\n"
    },
    {
      "commit": "294b512ecaa98a6a8ef12285ad14e7a4091b5d57",
      "tree": "d89983eed02f4cc3fc48fb50cd0d779ff345752b",
      "parents": [
        "2042cc403a6eba2de1c5220e8402b045bdf24192"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Feb 19 14:08:59 2013 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Mar 08 15:08:10 2013 -0800"
      },
      "message": "DO NOT MERGE - Full backup/restore now handles OBBs sensibly\n\nOBB backup/ restore is no longer handled within the target app\nprocess.  This is done to avoid having to require that OBB-using\napps have full read/write permission for external storage.\n\nThe new OBB backup service is a new component running in the\nsame app as the already-existing shared storage backup agent.\nThe backup infrastructure delegates backup/restore of apps\u0027\nOBB contents to this component (because the system process\nmay not itself read/write external storage).\n\nFrom the command line, OBB backup is enabled by using new\n-obb / -noobb flags with adb backup.  The default is noobb.\n\nFinally, a couple of nit fixes:\n\n- buffer-size mismatch between the writer and reader of chunked\n  file data has been corrected; now the reading side won\u0027t be\n  issuing an extra pipe read per chunk.\n\n- bu now explicitly closes the transport socket fd after\n  adopting it. This was benign but triggered a logged\n  warning about leaked fds.\n\n(Cherrypicked)\n\nChange-Id: I471f6348abcccb7bf1e1710b7beda9f23de53e14\n"
    },
    {
      "commit": "a83cab0001ca4d90abe622c22a7af1b0da54f739",
      "tree": "51bec7849647a103e8d24179201e7f7e95e46b01",
      "parents": [
        "09ed05ceaecc5fca46e25fe9bd9e8c0ee61fd31d"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 07 17:50:11 2013 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 07 17:50:11 2013 -0800"
      },
      "message": "Do not hang in pm clear on an invalid package name\n\nThe Activity Manager was not properly informing the observer that\nthe operation had concluded (unsuccessfully).\n\nBug 8222595\n\nChange-Id: I8234e32d8edf4112c8c7a5e20e341d0b41e23014\n"
    },
    {
      "commit": "23d7c700324d6ae9a20ddc89617ccc1846f80fc8",
      "tree": "0d99ba9b33eff61ad55a96be6b50e88973be0160",
      "parents": [
        "21ca44d67b972e66a5c8698886ee8747366c8b05"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Mar 07 16:32:06 2013 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Mar 07 16:32:06 2013 -0500"
      },
      "message": "Accumulate updates to notifications before archiving.\n\nBy only adding notifications to the archive when they are\nremoved we batch up multiple updates and only store the\nfinal version. Some data is lost in this process, but we\nsave tons of memory storing otherwise redundant /\nuninteresting data (e.g. each step of a download).\n\nChange-Id: I008afefc1242bb7c433d45da2c36fcc626dd3706\n"
    },
    {
      "commit": "9f3443c55c51562e22abb6b16c83cbe036dd2db4",
      "tree": "bee57c3d41c5644e0d3bae105d05ca47e3f730c0",
      "parents": [
        "1f33ebd41dd1c149f86c822ad56f936f0373013d",
        "21ca44d67b972e66a5c8698886ee8747366c8b05"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Mar 07 20:46:09 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 07 20:46:09 2013 +0000"
      },
      "message": "Merge \"Properly support USER_ALL in notification listener API.\" into jb-mr2-dev"
    },
    {
      "commit": "21ca44d67b972e66a5c8698886ee8747366c8b05",
      "tree": "8213848925220e0e3b691189f87f5981e624b04c",
      "parents": [
        "4c333e177220387cf6746d47e1948bbfcc374512"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Mar 07 13:58:00 2013 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Mar 07 14:01:22 2013 -0500"
      },
      "message": "Properly support USER_ALL in notification listener API.\n\nListeners should be notified for any notification if they\nregister for USER_ALL, or for any notification posted to\nUSER_ALL.\n\nBug: 8328357\nChange-Id: Ib5024d41287090d1a390539a015d8cb4dfa854a7\n"
    },
    {
      "commit": "94d7ddb4b503c89c350d06965aac4e9e1203206b",
      "tree": "8164a5fcf68483feb79f17af8347ecf210d11206",
      "parents": [
        "f6fcea602750bbc0eb7d394f4daf3848ffaaed7d"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Mar 06 15:02:12 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Mar 06 15:10:57 2013 -0800"
      },
      "message": "Use enabled/enabledSetting from PackageParser.\n\nPackageParser.updateApplicationInfo() has already interpreted the\nvarious COMPONENT_ENABLED flags for us, no need to clobber them.\n\nBug: 8331767\nChange-Id: If1363c5651a2f0326ee60e92517cfc0e6f256699\n"
    },
    {
      "commit": "cc947fdc2decb83a70484bd0f831c58cc0346657",
      "tree": "a23682fad41a856878a583e9853aa29d22351d13",
      "parents": [
        "67df64b3a48a8157d08a98fa90135d0ac0ee621c",
        "a99764e5978b51021db8575912b448d85541379b"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Mar 06 18:40:48 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 06 18:40:48 2013 +0000"
      },
      "message": "Merge \"Add window leak check and possible recovery.\" into jb-mr2-dev"
    },
    {
      "commit": "a99764e5978b51021db8575912b448d85541379b",
      "tree": "e11931cd108602ae13e2258f30913eb1a8289d97",
      "parents": [
        "7341786b138cb52eac053108b524ea3296d40f6d"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Mar 06 10:22:16 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Mar 06 10:22:16 2013 -0800"
      },
      "message": "Add window leak check and possible recovery.\n\nSearch output for \"!!! LEAK !!!\"\n\nFor bug 8322020.\n\nChange-Id: I6db572a1c7fe0e6b386ccb0dba08bc376659a75a\n"
    },
    {
      "commit": "67df64b3a48a8157d08a98fa90135d0ac0ee621c",
      "tree": "d390d5c537c976a14688e24c1f9a8a213840ff29",
      "parents": [
        "0ffc81c1ada65b4ef4febaacf044e9fa62309b87"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Dec 14 12:09:36 2012 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Mar 06 09:49:44 2013 -0800"
      },
      "message": "Shared accounts and sharing of apps\n\nAPI and preliminary implementation for sharing primary user accounts with a secondary user.\nAbstractAccountAuthenticator has new methods to retrieve and apply a bundle of credentials\nto clone an account from the primary to a restricted secondary user. The AccountManagerService\ninitiates the account clone when it starts up the user and detects that the user has\na shared account registered that hasn\u0027t been converted to a real account.\n\nAccountManager also has new hidden APIs to add/remove/get shared accounts. There might be\nfurther improvements to this API to make shared accounts hidden/visible to select apps.\n\nAccountManagerService has a new table to store the shared account information.\n\nAdded ability in PackageManager to install and uninstall packages for a secondary user. This\nis required when the primary user selects a few apps to share with a restricted user.\n\nRemove shared accounts from secondary users when primary user removes the account.\n\nChange-Id: I9378ed0d8c1cc66baf150a4bec0ede56f6f8b06b\n"
    },
    {
      "commit": "f4d6f153e66eb54f7da5f9bd8f5b6fcc25dfd919",
      "tree": "f6d922dee012b7e369620ecc32366399adb0ec73",
      "parents": [
        "78421f903342e5fbc43b162380a99351c27f4fb5",
        "11e7d88d1441c20605d7f06ab31ef2c81590d5c4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 06 03:52:50 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 06 03:52:50 2013 +0000"
      },
      "message": "Merge \"remove suppor for SurfaceControl.FX_SURFACE_SCREENSHOT\" into jb-mr2-dev"
    },
    {
      "commit": "11e7d88d1441c20605d7f06ab31ef2c81590d5c4",
      "tree": "e8020fad8e0ab2a482f1e093d1aac58e89538436",
      "parents": [
        "188f8c5e4b266429b07b4381d58d33b1e771be48"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 05 14:14:55 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 05 14:14:55 2013 -0800"
      },
      "message": "remove suppor for SurfaceControl.FX_SURFACE_SCREENSHOT\n\nthe window manager can now use the SurfaceControl.screenshot\nAPI with a \"regular\" surface.\n\nChange-Id: I76bed81d5e7b078ea1b3e8f96814aba32e9d5405\n"
    },
    {
      "commit": "c7ede61f592a2389790ce0993b8ee0a16de54b5e",
      "tree": "6b90ec00851fcc730f537b2b9eeeda66121a535f",
      "parents": [
        "43abdc486d19c137b79a2bde9ce4706c91656bda",
        "c808a1955f7571108e8c22502897ed82c69a7c3b"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Tue Mar 05 18:13:58 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 05 18:13:59 2013 +0000"
      },
      "message": "Merge \"Fix client tracking\" into jb-mr2-dev"
    },
    {
      "commit": "c808a1955f7571108e8c22502897ed82c69a7c3b",
      "tree": "6524a763a66cb9da40ecd38e068027731bc19e71",
      "parents": [
        "4c333e177220387cf6746d47e1948bbfcc374512"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Tue Mar 05 09:46:36 2013 -0800"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Tue Mar 05 09:46:36 2013 -0800"
      },
      "message": "Fix client tracking\n\nBug: 8311559\nChange-Id: I167fcdd5c3da4d46b7d99e18041036023c8c60f7\n"
    },
    {
      "commit": "a55136169eb3367c70f7b8686d51289483310586",
      "tree": "171bfb6b73e3073e20b246b13c40012829cc3e31",
      "parents": [
        "9c9aec721a78f23b4315ac920c26b109999a07f1",
        "e3f23a36d86fedf6c8c6503378cd6d2190c5ab23"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 05 17:37:43 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 05 17:37:43 2013 +0000"
      },
      "message": "Merge \"Add new WindowId for cross-process monitoring of focus.\" into jb-mr2-dev"
    },
    {
      "commit": "e3f23a36d86fedf6c8c6503378cd6d2190c5ab23",
      "tree": "cb4cb3a9598cd94d320203f7f1ba34842599b435",
      "parents": [
        "7be6d4c421cfa6f93079517d3ee54024c8049ae5"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Mar 01 13:25:35 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 05 09:33:48 2013 -0800"
      },
      "message": "Add new WindowId for cross-process monitoring of focus.\n\nThis is a class representing a window and providing limited\ninteraction with it, which can be handed across processes.\n\nChange-Id: I22885f2064a9cc8c68d690a5858c2e28bbb6a0f3\n"
    },
    {
      "commit": "188f8c5e4b266429b07b4381d58d33b1e771be48",
      "tree": "13853397778ba99f309b14ff33b39120ce6d7f95",
      "parents": [
        "836f93dc5f00536baa56f7c035c424a130f9c2a3",
        "0449a40586b45ee05f760802020dc2f8a6e0506b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 05 02:31:15 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 05 02:31:15 2013 +0000"
      },
      "message": "Merge \"screenshots can now go into a Surface from java\" into jb-mr2-dev"
    },
    {
      "commit": "0449a40586b45ee05f760802020dc2f8a6e0506b",
      "tree": "953b1e7777e044d316f887a7571f06fc1902de3b",
      "parents": [
        "8edd78499e2656916e89eeae91aa0f023f69eddc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 01 23:01:51 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 04 17:45:26 2013 -0800"
      },
      "message": "screenshots can now go into a Surface from java\n\nA Surface can trivially be created from a SurfaceTexture.\nUpdate ElectronBeam to use this new API.\n\nBug: 6940974\nChange-Id: I20459443d0d853e3f8ae23104c08d185c336abea\n"
    },
    {
      "commit": "79619ddbfe7367e11dd17d848b179877350b7b8e",
      "tree": "b714e48fe02e74ceaa4661f498b561cacd95dce3",
      "parents": [
        "cdac497289fd2c39a352f6167dae3f77cc608cb8"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Mar 04 13:05:32 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Mar 04 13:46:45 2013 -0800"
      },
      "message": "EntropyMixer: Write entropy at shutdown / reboot / power\n\nWrite out entropy if we\u0027re shutting down or rebooting,\nor if someone plugs in the power.\n\nBug: 8312061\nChange-Id: Id9a48064a7bdfe6c05a9227ea95a1bdbd0e9b8ae\n"
    },
    {
      "commit": "32440aa25d958c8b82e7c17f784defc0a5860c0a",
      "tree": "ff9b2f209fb7e51073fea1b3f6a4b97e3599b41c",
      "parents": [
        "7be6d4c421cfa6f93079517d3ee54024c8049ae5",
        "7dd5bb18d44a9ed0521308595f664b51b6e9b3e9"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Mar 01 22:20:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 01 22:20:46 2013 +0000"
      },
      "message": "Merge \"Unify inputDispatchingTimedOut with keyDispatchingTimedOut\" into jb-mr2-dev"
    },
    {
      "commit": "7dd5bb18d44a9ed0521308595f664b51b6e9b3e9",
      "tree": "19e0562b4a408c2ce699228dbae8fd11d7334190",
      "parents": [
        "5633e23c2222c00f388a73f74295acee3fd13c44"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Feb 27 17:07:29 2013 -0800"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Mar 01 14:14:35 2013 -0800"
      },
      "message": "Unify inputDispatchingTimedOut with keyDispatchingTimedOut\n\nBug: 8194916\nChange-Id: Iac40108d848bcca77f49a7a49c57a095b3dbe9c9\n"
    },
    {
      "commit": "7f61d0146e48275bf372e6b1ea82d2f48163c73d",
      "tree": "1d53f5f2b18d1c52859906eb5595e9512a33b73d",
      "parents": [
        "f5e0471703d73a1285601928b790cdf0ab028fa5",
        "812085bc70a4a644ffab7fbbf9d4564632325a83"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Mar 01 00:58:31 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 01 00:58:32 2013 +0000"
      },
      "message": "Merge \"Allow loopback traffic in lockdown mode.\" into jb-mr2-dev"
    },
    {
      "commit": "812085bc70a4a644ffab7fbbf9d4564632325a83",
      "tree": "8dc33fe4bab4704536e27715b773308a4d21bb87",
      "parents": [
        "ba761979ee883237b8e0143973ba5b6032f37d05"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Feb 28 16:57:58 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Feb 28 16:57:58 2013 -0800"
      },
      "message": "Allow loopback traffic in lockdown mode.\n\nBug: 8245184\nChange-Id: If993e3d6f5c7ce5970bfe701074c85b9245aa2aa\n"
    },
    {
      "commit": "79751848d1c3a5139eb5ccd6ddecaf84c2a09783",
      "tree": "71f86448bdb5a5a0328bdcf4d655be663f90ffb2",
      "parents": [
        "c732976e6b40be5a23eee2df2bff23101abc1f91"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Feb 28 16:16:03 2013 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Feb 28 16:33:48 2013 +0900"
      },
      "message": "Expose clatd commands to NetworkManagementService.\n\nFor now, we only support running one clat at a time. This is\nenforced by the netd ClatdController code.\n\nBug: 8276725\nChange-Id: I8a50305f9182f4da0f80716081211625a0202583\n"
    },
    {
      "commit": "2a45b9fe99b10baeedb9c4529dcc5177ad7e3584",
      "tree": "f90768e98757f0f4cbfd401dfea76dbd444134de",
      "parents": [
        "29466f85c06b7b58b2d058dcf293298fecdeb704",
        "3c55e5c6595d28c64f5a760947c66fdefa2481e2"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Thu Feb 28 02:33:05 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 28 02:33:05 2013 +0000"
      },
      "message": "Merge \"Fake accessibility service used by UiAutomation not destroyed.\" into jb-mr2-dev"
    },
    {
      "commit": "3c55e5c6595d28c64f5a760947c66fdefa2481e2",
      "tree": "b4e37137661ff97004653f50adb413664847fd16",
      "parents": [
        "9ad665417713398524d425f63b0d6fa751244237"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 27 18:24:28 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 27 18:32:17 2013 -0800"
      },
      "message": "Fake accessibility service used by UiAutomation not destroyed.\n\nUiAutomation registers a fake accessibility service to introspect\nthe screen. Upon the death of the shell process that started an\ninstrumentation in which a UiAutomation resides the connection\nbetween the UiAutomation and the system is kept alive allowing\nthe instrumentation to introspect the screen even after the death\nof the shell process.\n\nbug:8285905\n\nChange-Id: I1a16d78abbea032116c4baed175cfc0d5dedbf0c\n"
    },
    {
      "commit": "a60fdfac9432972e520e8c53b3b0717b4c3a2973",
      "tree": "4c574b95441696126b4228d0e60218264eb8ffc4",
      "parents": [
        "9ad665417713398524d425f63b0d6fa751244237"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Feb 26 19:16:18 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Feb 26 19:25:01 2013 -0800"
      },
      "message": "NPE in AccessibilityManagerService.\n\nIf an accessibility service is connected but already removed\nfrom the list of connecting services we get a NPE since the\ncall to set the service connection is made over a null\nremove interface. Note that service connection is asynchronous.\n\nbug:8229877\n\nChange-Id: I7b05f219dd0c1da6286ee4ec90b1ef310908545d\n"
    },
    {
      "commit": "173bb61544fb41a10398606766f2bdf079ee02fc",
      "tree": "7297265576fda88a30527eb8a2fd12cc0b55df29",
      "parents": [
        "d0d209ed4d6280b6e1203eebe823f04f9db766c0",
        "5633e23c2222c00f388a73f74295acee3fd13c44"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Feb 26 22:14:41 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 26 22:14:41 2013 +0000"
      },
      "message": "Merge \"Move stack dump off of InputDispatcher thread\" into jb-mr2-dev"
    },
    {
      "commit": "305dbea8e39608b61810637944b6ffbbe6c07d2f",
      "tree": "e2130142cd31c905e9f8e5cc586586901eda74d5",
      "parents": [
        "4b141acde00840db4cd850e5cddbe2cf849830aa",
        "efcc1a23a1f731390ef8506b3536b9562d18ed78"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 26 18:16:22 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 26 18:16:22 2013 +0000"
      },
      "message": "Merge \"App ops: adding operations for reading/writing clipboard.\" into jb-mr2-dev"
    },
    {
      "commit": "9fbdda42a2acff8179c251f6455fd3e2c9971545",
      "tree": "62b08d053971a58636aa9b7a424de688fd1c4e25",
      "parents": [
        "30a51b3f01ceee9f17ba4070e518b1829e32063d",
        "302b06de7ea7ac97ac4a2189213a1133220bfdc8"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Tue Feb 26 17:04:58 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 26 17:04:58 2013 +0000"
      },
      "message": "Merge \"Fix leak in WifiManager\" into jb-mr2-dev"
    },
    {
      "commit": "302b06de7ea7ac97ac4a2189213a1133220bfdc8",
      "tree": "c51d4d2e36504f8384d893cc8f178135fe40f593",
      "parents": [
        "ff4fcdb98c9575642c48f1daeafff4b257769e81"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Fri Feb 22 12:35:31 2013 -0800"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Tue Feb 26 09:01:48 2013 -0800"
      },
      "message": "Fix leak in WifiManager\n\nAvoid leaks from having a channel connection per manager instance\n\nBug: 8254124\nChange-Id: I10de91d7e5a775bc14bbab245734717d3b2f90d5\n"
    },
    {
      "commit": "efcc1a23a1f731390ef8506b3536b9562d18ed78",
      "tree": "3bf75913746cac59177a3d1c7ff2d82034e03cc2",
      "parents": [
        "f4b36ad1617920691def64c00179666e2e42d5fa"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Feb 25 18:02:35 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Feb 25 18:02:35 2013 -0800"
      },
      "message": "App ops: adding operations for reading/writing clipboard.\n\nChange-Id: Ic4cade153618fe86954754a3b3edde64a52a0a9c\n"
    },
    {
      "commit": "5633e23c2222c00f388a73f74295acee3fd13c44",
      "tree": "1d994b6968ad323ae56e88c73a1874e82ef0e4e3",
      "parents": [
        "40bbc3bb9997c6e9ea9aae42edd6bb4430d70978"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Feb 25 17:52:37 2013 -0800"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Feb 25 17:52:37 2013 -0800"
      },
      "message": "Move stack dump off of InputDispatcher thread\n\nChange-Id: I7250a0488c3e4c5dc159f4635a57e1e49aa8397a\n"
    },
    {
      "commit": "2e5528c5e0f354c7b780ca5ab436809efd611dcc",
      "tree": "97c7e8c0bb48c9364d18e5dc9f4b50e36f66b53d",
      "parents": [
        "19a38f6f408d8672ca8d253fb7a6039a7f25c96f",
        "2ad920759b1981eaf526fd37a314fbc5a3ed90ae"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 26 01:08:28 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 26 01:08:28 2013 +0000"
      },
      "message": "Merge \"Revert ActivityManager changes for tasks. DO NOT MERGE\" into jb-mr2-dev"
    },
    {
      "commit": "2ad920759b1981eaf526fd37a314fbc5a3ed90ae",
      "tree": "3835b2fb240c592668afa5019f2dbad7036513f1",
      "parents": [
        "ff4fcdb98c9575642c48f1daeafff4b257769e81"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Feb 25 16:19:24 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Feb 25 17:07:39 2013 -0800"
      },
      "message": "Revert ActivityManager changes for tasks. DO NOT MERGE\n\nKeeping all activity\u003d\u003etask changes in master and removing them\nfrom jb-mr2.\n\nRevert \"Update histories simultaneously.\"\nRevert \"Add null check to setAppGroupId.\"\nRevert \"Fix crashing bug in validator.\"\nRevert \"Switch topRunning* and moveTaskTo*\"\nRevert \"Begin switch over to task based history.\"\nRevert \"Reset and reuse Iterators and don\u0027t new() one.\"\nRevert \"Remove AppWindowToken lists.\"\nRevert \"Fix build.\"\nRevert \"Remove unused App methods.\"\nRevert \"Stop using AppToken movement and start using Task.\"\nRevert \"Replace access to mAppTokens with AppTokenIterator\"\nRevert \"Refactor setAppOpVisibility implementation.\"\nRevert \"Add AppWindowTokens to TaskList.\"\nRevert \"Make ActivityStack.mHistory private.\"\nRevert \"Migrate AppWindowToken lists into DisplayContent.\"\n\nChange-Id: I5722c9a4956dccb52864207e2967690bc58e4ebb\n"
    },
    {
      "commit": "40bbc3bb9997c6e9ea9aae42edd6bb4430d70978",
      "tree": "89eeb78b7a70316d8f3f6646fb0eaf68f6cf46b7",
      "parents": [
        "eb9dddbffb9f2d568d2222454c5dd7582efa819d",
        "6794458f8626c3be27eac3db3a5c89d94f132675"
      ],
      "author": {
        "name": "Maggie Benthall",
        "email": "mbenthall@google.com",
        "time": "Mon Feb 25 21:42:13 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 25 21:42:13 2013 +0000"
      },
      "message": "Merge \"Add location sharing toggle user restriction.\" into jb-mr2-dev"
    },
    {
      "commit": "eb9dddbffb9f2d568d2222454c5dd7582efa819d",
      "tree": "0bc39ed902751b736c4b328c83c0ff28a7e73653",
      "parents": [
        "88a1cf841ef8b5792fad8f3af4b4831101497c6c",
        "01d159d88a51c44d7e282e07b834535e5b0e8bd1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Feb 25 21:35:29 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 25 21:35:29 2013 +0000"
      },
      "message": "Merge \"Lookup permission groups by name\" into jb-mr2-dev"
    },
    {
      "commit": "01d159d88a51c44d7e282e07b834535e5b0e8bd1",
      "tree": "87d98fe2d57cf241f679838408dc95e258722f16",
      "parents": [
        "ff4fcdb98c9575642c48f1daeafff4b257769e81"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Feb 25 13:22:42 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Feb 25 13:22:42 2013 -0800"
      },
      "message": "Lookup permission groups by name\n\nWhen a top-level permission group is specified, lookup the group id\nby name instead of parsing the value as an integer. This matches\nwhat we do when the group tag is a child of \u003cpermission/\u003e.\n\nChange-Id: I54954ae683cecdf72cf846f75383bf6ba862dc5b\n"
    },
    {
      "commit": "7b4596fd68a24643145e33f3dc4da9285d0f53aa",
      "tree": "c55735d226ad7aa77648d5786f35477d591ffaa4",
      "parents": [
        "02a4cec107f1f07409fd03106b1cde56043894fa"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Feb 25 10:55:29 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Feb 25 11:02:50 2013 -0800"
      },
      "message": "Require command and argument separation, cleanup.\n\nWhen invoking NativeDaemonCommands, require that base command and\narguments are separate.  Clean up reverse tethering commands, and\nremove deprecated throttle events.\n\nChange-Id: I302a74130b4f7c3f3045815a56d566e89c8969f6\n"
    },
    {
      "commit": "6794458f8626c3be27eac3db3a5c89d94f132675",
      "tree": "67840d15784013dede06dc3e40306c35e30d4be7",
      "parents": [
        "ff4fcdb98c9575642c48f1daeafff4b257769e81"
      ],
      "author": {
        "name": "Maggie Benthall",
        "email": "mbenthall@google.com",
        "time": "Fri Feb 22 14:58:27 2013 -0500"
      },
      "committer": {
        "name": "Maggie Benthall",
        "email": "mbenthall@google.com",
        "time": "Mon Feb 25 12:45:14 2013 -0500"
      },
      "message": "Add location sharing toggle user restriction.\n\nAnd add support for respecting it.\n\nChange-Id: Ia5cf9134c5f5741c3f55afadbe54f862da7bfe5b\n"
    },
    {
      "commit": "c4aad01cbbb69c916ef323693e1fd0560b0eccba",
      "tree": "20f636eb690f976e9f83ec0a23e6ac991776b08b",
      "parents": [
        "fb6806570911851fb8cbaaf5bdf275a89f3c3ef4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 22 15:05:25 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 22 19:14:37 2013 -0800"
      },
      "message": "Formalize overscan metrics.\n\nThe window manager now maintains and reports a new formal\n\"overscan insets\" for each window, much like the existing\ncontent and visible insets.  This is used to correctly\nposition the various UI elements in the various combination\nof layout options.  In particular, this allows us to have\nan activity that is using fitSystemWindows to have the content\nof its UI extend out to the visible content part of the screen\nwhile still positioning its fixed UI elements inside the\nstandard content rect (and the entire window extending all\nthe way into the overscan area to fill the screen as desired).\n\nOkay, maybe that is not written so clearly.  Well, it made\nmy head hurt too, so suffer!\n\nThe key thing is that windows now need to know about three\nrectangles: the overall rectangle of the window, the rectangle\ninside of the overscan area, and the rectangle inside of the\ncontent area.  The FLAG_LAYOUT_IN_OVERSCAN option controls\nwhether the second rectangle is pushed out to fill the entire\noverscan area.\n\nAlso did some improvements to debug dumping in the window\nmanager.\n\nChange-Id: Ib2368c4aff5709d00662c799507c37b6826929fd\n"
    },
    {
      "commit": "e436e4f8a48a6bc3094c036166cca3911a540321",
      "tree": "9286b3b1844afbd675919b463622eba0e9fa7ea7",
      "parents": [
        "ea53d7e0a46f333642f3663ce54ee0d36b87b813"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Feb 22 14:57:00 2013 -0800"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Feb 22 15:36:33 2013 -0800"
      },
      "message": "Remove two new permission checks\n\nThese checks while technically reasonable are a hard to swallow API change\nthat may break existing apps and pragmatically serves no purpose:  the protected\ndata is available in publicly readable java VM properties.\n\nChange-Id: I522c493c2604a33e28d99e2be31054326c9a8323\n"
    },
    {
      "commit": "a3f0665c62b79429009ed44960b712f4c0ca1f0e",
      "tree": "5f5cc32bc6cd70d05a03a2a93e5422d19b586424",
      "parents": [
        "7508039d66a2c1a3d19d3710f0d68e2cca0d872b",
        "5a6bdc46e2fdc8cfd930396773dd89efd19fa1f1"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Feb 22 20:02:02 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 22 20:02:02 2013 +0000"
      },
      "message": "Merge \"Improve ConnectivityManager docs\""
    },
    {
      "commit": "12e563fff95ebb186126d531b6f65af18eb1a069",
      "tree": "1645068724f4d0d5c7cc1bb9d3b7ce6f935c6324",
      "parents": [
        "d99375528ce5d87bdeb23a63b726fd04f6922ed7",
        "3c1743705c4df816089e07a17753c6043b4d8e66"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Feb 22 18:51:20 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 22 18:51:21 2013 +0000"
      },
      "message": "Merge \"Create rotation animation modes.\""
    },
    {
      "commit": "3c1743705c4df816089e07a17753c6043b4d8e66",
      "tree": "dd68b3b869a0b24bac79d713af19eeba57f3e668",
      "parents": [
        "7a7360ad528576d560aa13fbb4e81740b2c425b2"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Feb 21 17:54:37 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Feb 22 10:44:52 2013 -0800"
      },
      "message": "Create rotation animation modes.\n\nAllow fullscreen windows to specify crossfade or jumpcut animations\nthat override the default rotation animation. Only if the incoming\nand outgoing topmost windows are fullscreen and both specify the\nsame animation to use.\n\nFixes bug 8182773.\n\nChange-Id: I6b3c0020d7bd2cdfba5c66189e114ec62cd54fcf\n"
    },
    {
      "commit": "d99375528ce5d87bdeb23a63b726fd04f6922ed7",
      "tree": "eedddcb2a2815900c8bb48627f6e19a22ad0dd12",
      "parents": [
        "bc340d03c3d67a64951162f2a901c805f9f56734",
        "bcc97ca43a339c3356b5c8d9eaf1cbdfb0de3165"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Fri Feb 22 18:40:23 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 22 18:40:24 2013 +0000"
      },
      "message": "Merge \"Clean up scan handling\""
    },
    {
      "commit": "5a6bdc46e2fdc8cfd930396773dd89efd19fa1f1",
      "tree": "d574060601fb49345a80d1155669305718d65efb",
      "parents": [
        "b84951451c35813ccf8aefdb12f5092926785fd4"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Feb 15 10:56:35 2013 -0800"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Feb 22 10:39:20 2013 -0800"
      },
      "message": "Improve ConnectivityManager docs\n\nAlso fix some permission problems.\nbug:5738328\n\nChange-Id: Ib32c223f425b1fc03b8cce528456bcb50b540fdf\n"
    },
    {
      "commit": "bcc97ca43a339c3356b5c8d9eaf1cbdfb0de3165",
      "tree": "0620ab5952f774238704ec0d1097b775e7b68dfc",
      "parents": [
        "8a64b1a7f4b07e71b9eb0f4a98710cb1409588bf"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Feb 21 14:15:18 2013 -0800"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Fri Feb 22 09:23:55 2013 -0800"
      },
      "message": "Clean up scan handling\n\nRemove obsolete active/passive scan handling - drivers always\ndo active scan.\n\nAlso, remove AP_SCAN hack for preventing connections and use\nthe TYPE\u003dONLY scan.\n\nBug: 8158647\nChange-Id: I8f70e19219ad789b7501a40529bcd6b6524739e8\n"
    },
    {
      "commit": "47e8074d401b0a2c38b376329bfe8bf1f62da23b",
      "tree": "1be896883496631d978e2dbf57781343f3e941d3",
      "parents": [
        "eab51de4de88219256260fe26e2018a6234ef83b",
        "b44de0d910a3ec22b9963e538117e257f621de47"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Feb 22 04:02:24 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 22 04:02:24 2013 +0000"
      },
      "message": "Merge \"Update histories simultaneously.\""
    },
    {
      "commit": "b44de0d910a3ec22b9963e538117e257f621de47",
      "tree": "c144d5debdc96bfb3826dec18b1f932b24c16c18",
      "parents": [
        "7a7360ad528576d560aa13fbb4e81740b2c425b2"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Feb 21 20:00:58 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Feb 21 20:00:58 2013 -0800"
      },
      "message": "Update histories simultaneously.\n\nIn moveTaskToBackLocked calls that used mHistory were being made\nbetween the times that mTaskHistory and mHistory were modified. This\ncaused an inconsistent state that led to Windows arranged out of\norder. Updating both history stacks at the same time fixes this.\n\nFixes bug 8244261.\n\nChange-Id: I9669762ad39b06ab6d401122702b74969d4dc658\n"
    },
    {
      "commit": "ab6b77fd85979212299d8aef0b2c83c005b13abc",
      "tree": "49f66ef905bfe5d79a891fe754a0dfdb01a648bc",
      "parents": [
        "e4d3b06b6ddb055739b8b2aa82ffc7840588253a",
        "5cb5c337d5fe523723b8e5ceb4bdf38dff0cec70"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Feb 21 23:45:02 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 21 23:45:02 2013 +0000"
      },
      "message": "Merge \"Be cool in backup/restore of apps that can\u0027t touch external storage\""
    },
    {
      "commit": "5cb5c337d5fe523723b8e5ceb4bdf38dff0cec70",
      "tree": "c6e81528f7bbbf4495841725a07ac2c15616b873",
      "parents": [
        "780294be50b57d94455c709044e36098c829f72a"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Feb 21 14:32:12 2013 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Feb 21 15:43:52 2013 -0800"
      },
      "message": "Be cool in backup/restore of apps that can\u0027t touch external storage\n\nBug: 8241337\nChange-Id: I23f6eeba8448b234a7b18ce50d2ced2ba54b4ebd\n"
    },
    {
      "commit": "2b3a47b9ce0f422323395286937944a2afa51ed6",
      "tree": "bb84a66ab85fb072f9d6d33a68c7c34c513ba7b2",
      "parents": [
        "c0997b0e6291d7c97963623eed2a41994a7855cf",
        "42c0c9f35a8efa71703f810ce2bff6d86bb5b30e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Feb 21 18:33:16 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 21 18:33:29 2013 +0000"
      },
      "message": "Merge \"Allow L2TP traffic to lockdown VPN servers.\""
    },
    {
      "commit": "42c0c9f35a8efa71703f810ce2bff6d86bb5b30e",
      "tree": "99ddc8f1d0a6cea00854b084d8f661ae0cb8d079",
      "parents": [
        "4fa63b2d5e3b2e2a85bf17a9bf056cbdfb7046f0"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Feb 21 10:31:45 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Feb 21 10:31:45 2013 -0800"
      },
      "message": "Allow L2TP traffic to lockdown VPN servers.\n\nBug: 8067988\nChange-Id: I6cb7d07e0c4b7c6e112a26a06892e859e6b515a8\n"
    },
    {
      "commit": "c0997b0e6291d7c97963623eed2a41994a7855cf",
      "tree": "551a4a4d26bb598844b0661df174c40b30697123",
      "parents": [
        "8a64b1a7f4b07e71b9eb0f4a98710cb1409588bf",
        "4fa63b2d5e3b2e2a85bf17a9bf056cbdfb7046f0"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Feb 21 17:49:27 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 21 17:49:28 2013 +0000"
      },
      "message": "Merge \"Improve notification UI for lockdown VPN.\""
    },
    {
      "commit": "4fa63b2d5e3b2e2a85bf17a9bf056cbdfb7046f0",
      "tree": "974d799412098de464ddc8ded7929c38fe86f136",
      "parents": [
        "ec6156f9e884ba85c76a9c4683f83f18b3f64afa"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Feb 20 18:21:19 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Feb 21 09:47:11 2013 -0800"
      },
      "message": "Improve notification UI for lockdown VPN.\n\nBug: 7064111\nChange-Id: I9554f6a426697b4abeb2ddd0827d314920e88ed6\n"
    },
    {
      "commit": "8a64b1a7f4b07e71b9eb0f4a98710cb1409588bf",
      "tree": "e8da0b8b00bc4797150317133cbc4922b661fb74",
      "parents": [
        "b8c0e009a74ac2eaee8946fbe0bb3b3fe2749c9a"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Wed Feb 20 15:12:41 2013 -0800"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Feb 21 08:49:54 2013 -0800"
      },
      "message": "Handle airplane settings properly\n\nFix bug dealing with airplane mode settings of whether wifi\nis sensitive to airplane mode change and whether wifi is\nallowed to override airplane mode that likely has been\nbroken ever since.\n\nBug: 8141918\nChange-Id: Ia3116c9dfce2952cbe3911e9d81dbbae0430abef\n"
    },
    {
      "commit": "b8c0e009a74ac2eaee8946fbe0bb3b3fe2749c9a",
      "tree": "08774fb96cd340d37a93dda45db6786954b54e73",
      "parents": [
        "d017f3523244974a8a3fb653ed4b6d514affcc01"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Wed Feb 20 14:19:54 2013 -0800"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Feb 21 08:49:07 2013 -0800"
      },
      "message": "Restructure wifiservice for clarity\n\nMove seperate operation pieces into own classes\n\nBug: 8141918\nChange-Id: Iacb15ceca5431136051e815aa71617eef89b9fe9\n"
    },
    {
      "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"
    }
  ],
  "next": "044dca285f567863a5ab345ac139f1fa31cac2cc"
}
