)]}'
{
  "log": [
    {
      "commit": "a4972e951bf2bdb7afdafee95b3ab0c15b8bacae",
      "tree": "9800a9dcd62d945a8ad71549ebcef70393ef5442",
      "parents": [
        "89ea4ca9c26f3c7e365525a0b83500e85517a457"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 14 10:38:05 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 14 12:57:14 2012 -0700"
      },
      "message": "Add new \"options\" argument to all startActivity APIs.\n\nThis will be used to allow new features to be requested...  such as,\nsay, a special kind of animation.  Right now there are no options\ndefined.\n\nChange-Id: I4eb6f27275cdd4bf186f6da316ab93a2372ad4b7\n"
    },
    {
      "commit": "8e94c25f5d7392f299de3b67c49e847cdd103551",
      "tree": "6902558c2696a844c9308879ef9ef9856538cb7f",
      "parents": [
        "1c1d1e7ed7ed2673b22642c6701659146ceaa602",
        "d192598d3e7c6f38fc9deb573b06ababa56d741a"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Tue Mar 13 14:13:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 14:13:07 2012 -0700"
      },
      "message": "Merge \"Record the trimmed cmd string for logs\""
    },
    {
      "commit": "d192598d3e7c6f38fc9deb573b06ababa56d741a",
      "tree": "c6d313abf3a6bbb3ffcc1dd3d01cada775fbfe22",
      "parents": [
        "742f4fa8c963e8d7fbbb19328ea7e337eb4911ee"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Mon Mar 12 15:37:40 2012 -0700"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Tue Mar 13 12:30:14 2012 -0700"
      },
      "message": "Record the trimmed cmd string for logs\n\nThe over the wire command includes a \\0 that mangles log messages.\nbug:6149176\n\nChange-Id: I77d4e443f1966bff060f1b97570851f7549fee8e\n"
    },
    {
      "commit": "a1b09a92d8879f1f385046533628547a118eb558",
      "tree": "9bacee06df45dcd64a69a1850004b5ebe66e6aa1",
      "parents": [
        "53567a756e34706edbeae7217ad4205c55bb76b6",
        "44bf70fba26146d7e788ec051ee4ab45336de2fa"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Mar 13 12:21:09 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 12:21:09 2012 -0700"
      },
      "message": "Merge \"Set the reason for screen-off before usage.\""
    },
    {
      "commit": "44bf70fba26146d7e788ec051ee4ab45336de2fa",
      "tree": "5def88d3fd089522666bb6ba6cd3012966fc640e",
      "parents": [
        "5d1907b2f3e624dc838e9658a1986636252ac8b1"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Mar 13 11:38:38 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Mar 13 11:38:38 2012 -0700"
      },
      "message": "Set the reason for screen-off before usage.\n\nAn occasional call sequence through updateLightsLocked ended up storing\nthe old screen-off reason rather than the current screen-off reason.\nThis caused the Keyguard screen to be bypassed when turning back on. By\nsaving the power-off reason in mScreenOffReason prior to calling\nupdateLightsLocked we eliminate this problem.\n\nThe offending calling sequence was:\n  PowerManagerService.setPowerState(..., reason) \u003d\u003e updateLightsLocked\n  \u003d\u003e animateTo \u003d\u003e screenOffFinishedAminatingLocked(mScreenOffReason)\n  \u003d\u003e sendNotificationLocked.\n\nChange-Id: I8ee0b3226f94af7ff7e7b7b0bf54e47fd0c03631\n"
    },
    {
      "commit": "e0247498304f6591eb4b9347e5ad64bc6b63523b",
      "tree": "6fc7aa4b28787af90f653ee7132abe7c89726b77",
      "parents": [
        "ff31fdcd125ef076fac107a55c3843e3370aaa89",
        "8f30d2191eb88d577d6d2ba9874053cfea0091c8"
      ],
      "author": {
        "name": "Daniel Lehmann",
        "email": "lehmannd@google.com",
        "time": "Mon Mar 12 18:30:17 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 12 18:30:17 2012 -0700"
      },
      "message": "am 8f30d219: am f0533f94: am 0e873700: Remove the country detector logging\n\n* commit \u00278f30d2191eb88d577d6d2ba9874053cfea0091c8\u0027:\n  Remove the country detector logging\n"
    },
    {
      "commit": "f0533f9462275eff04491a1a27ee4cb1f4afd581",
      "tree": "75b721c1080f9b14d1985905423f5971065d6e9e",
      "parents": [
        "442612a273981a1b21fdb2e9c19a887ab710224d",
        "0e87370077b322b3a88c345a44c6bf3d56617071"
      ],
      "author": {
        "name": "Daniel Lehmann",
        "email": "lehmannd@google.com",
        "time": "Mon Mar 12 18:24:41 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 12 18:24:41 2012 -0700"
      },
      "message": "am 0e873700: Remove the country detector logging\n\n* commit \u00270e87370077b322b3a88c345a44c6bf3d56617071\u0027:\n  Remove the country detector logging\n"
    },
    {
      "commit": "13dfcd1f08170df24301e895de0b300c6267ef1e",
      "tree": "1a1b514ef0fe20542588eff2a1cc689dae8200d3",
      "parents": [
        "4faaed97ab331b322afeef8055d740dc7673e1b2",
        "1743b64d87cee56e51dedbe4ad60fa2acc28af9c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 12 18:21:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 12 18:21:25 2012 -0700"
      },
      "message": "Merge \"Dejank: also animate window moves due to requested size changes.\""
    },
    {
      "commit": "4faaed97ab331b322afeef8055d740dc7673e1b2",
      "tree": "21ad27fdbb17b14f2489c2ad2543849ed05f79f5",
      "parents": [
        "b48e0291078e3a7052513572cfb2b19318f6c08c",
        "92a8b22e7410e74e1cba1b856333116652af8a5c"
      ],
      "author": {
        "name": "Siva Velusamy",
        "email": "vsiva@google.com",
        "time": "Mon Mar 12 18:10:36 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 12 18:10:36 2012 -0700"
      },
      "message": "Merge \"ActivityManager: add option to allow OpenGL trace.\""
    },
    {
      "commit": "1743b64d87cee56e51dedbe4ad60fa2acc28af9c",
      "tree": "2d699fdbd52b7c3917643e61cca63aabb8eabc17",
      "parents": [
        "035c20f5b4f31a2a4b592ff5004fe67fef0106d2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 12 17:04:43 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 12 17:04:43 2012 -0700"
      },
      "message": "Dejank: also animate window moves due to requested size changes.\n\nThis performance an animation when, for example, a dialog window is\nmoved because the size of its content has changed.\n\nChange-Id: I2d79a1a57f94e0f2f8ef706a473fca6c9cc637cf\n"
    },
    {
      "commit": "0e87370077b322b3a88c345a44c6bf3d56617071",
      "tree": "9fa4b8ce60f0e1dea9739ea6cf8462b89f2bf20c",
      "parents": [
        "f4ae6aabbcefe39b3c85b03729c74044f02369d4"
      ],
      "author": {
        "name": "Daniel Lehmann",
        "email": "lehmannd@google.com",
        "time": "Mon Mar 12 17:04:17 2012 -0700"
      },
      "committer": {
        "name": "Daniel Lehmann",
        "email": "lehmannd@google.com",
        "time": "Mon Mar 12 17:04:17 2012 -0700"
      },
      "message": "Remove the country detector logging\n\nBug:6156714\nChange-Id: Id0ff60b0530142e2bce055ee8cf8dde94e974aa5\n"
    },
    {
      "commit": "110a6b6252d6daf9882ece7595bd3613b82448a8",
      "tree": "51824211736f3f33654eec918265fc31e216dcd0",
      "parents": [
        "5d1907b2f3e624dc838e9658a1986636252ac8b1"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Mar 12 11:12:41 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Mar 12 14:09:34 2012 -0700"
      },
      "message": "Let \u003cpath-permission\u003e block unprotected providers.\n\nWhen accessing a ContentProvider that is unprotected by top-level\npermissions, and caller doesn\u0027t hold a matching \u003cpath-permission\u003e\npermission, revoke the default top-level access.\n\nThis enables an otherwise unprotected provider to enforce permissions\non specific paths.\n\nBug: 6131916\nChange-Id: Icab89f765ccd90b1acea6988b05f00877fe2c11e\n"
    },
    {
      "commit": "92a8b22e7410e74e1cba1b856333116652af8a5c",
      "tree": "fd340b33bdcf7d2b5f84d9f9454a5805efff54b6",
      "parents": [
        "64d10a1da0a702ffeb086ad9c4a632f2712f1dad"
      ],
      "author": {
        "name": "Siva Velusamy",
        "email": "vsiva@google.com",
        "time": "Fri Mar 09 16:24:04 2012 -0800"
      },
      "committer": {
        "name": "Siva Velusamy",
        "email": "vsiva@google.com",
        "time": "Mon Mar 12 12:18:53 2012 -0700"
      },
      "message": "ActivityManager: add option to allow OpenGL trace.\n\nThis patch adds an option to enable tracing of OpenGL functions.\nOpenGL tracing can be enabled by passing \"--opengl-trace\" option\nto am start.  This option requires either a device in debug mode,\nor that the application itself has debug permission set.\n\nChange-Id: I77788bfe97c9108943b1f947ce81afe8293d78a0\n"
    },
    {
      "commit": "ce8668f809f8e25ddbc65217e7f08490c6165637",
      "tree": "5a8cb23b87c074162450e15133d7261d4c220620",
      "parents": [
        "772a73963d22163deff3fd3c7f65013ccb941f34",
        "9bf3150cfae03421c9dd237b46657714859d871c"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Mar 09 18:33:44 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 09 18:33:44 2012 -0800"
      },
      "message": "Merge \"Save timezone when setting data cycle reset date.\""
    },
    {
      "commit": "9bf3150cfae03421c9dd237b46657714859d871c",
      "tree": "f62a9a964ba0c745ec0cd45814a45cf8fbf922e4",
      "parents": [
        "92d291ef6481c6cbb1305780dd4f450a16bb9a7a"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Mar 09 17:07:21 2012 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Mar 09 17:10:05 2012 -0800"
      },
      "message": "Save timezone when setting data cycle reset date.\n\nInstead of cycle reset at midnight UTC, use midnight of timezone\nactive when user last set cycle reset date.  Tests to verify, and\nalso to test leap year behavior.\n\nBug: 5938567\nChange-Id: Ie06f7f0fa242d23110f9586a3f4f7037af87b31b\n"
    },
    {
      "commit": "466608e9e8bc48dafa2f970249076b03535cb97a",
      "tree": "f30bfbb6ad34352bb0ee572d7eec3ad42ddd1134",
      "parents": [
        "2463353c01d96ec6a2e321a5c14fcbb4da7c782a",
        "ad3a9bb628e912b39e10f8d8a8bde0badefd8bd0"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Mar 09 14:40:45 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 09 14:40:45 2012 -0800"
      },
      "message": "Merge \"Fix state machine sequence causing wallpaper flash.\""
    },
    {
      "commit": "ad3a9bb628e912b39e10f8d8a8bde0badefd8bd0",
      "tree": "3e459f697572c8238b232390706eaba276a905cf",
      "parents": [
        "d4933842b1f665f4d88b75a5d4d152cbc02e7010"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Mar 09 11:31:06 2012 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Mar 09 14:32:06 2012 -0800"
      },
      "message": "Fix state machine sequence causing wallpaper flash.\n\nFixes bug 6127355.\n\nChange-Id: Ie6894329829f78b3ff8936cfe5ed2933490db5d8\n"
    },
    {
      "commit": "55b4b28606e740c3a1f75dd7b9b3b8feee86d795",
      "tree": "f909be0514ddb1ae55e9ad85e90814774721ae4f",
      "parents": [
        "d4933842b1f665f4d88b75a5d4d152cbc02e7010",
        "191874e37106ca503003ef3d4bec392ca2627cbe"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Mar 09 11:40:23 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 09 11:40:23 2012 -0800"
      },
      "message": "Merge \"Improved rotation animation.\""
    },
    {
      "commit": "191874e37106ca503003ef3d4bec392ca2627cbe",
      "tree": "0231599022e063f7b5cf269bed3495b49252c6f4",
      "parents": [
        "a0b29f556519653c9749cebff4af43e68b4d59ce"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Mar 09 11:03:36 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Mar 09 11:20:54 2012 -0800"
      },
      "message": "Improved rotation animation.\n\nChange-Id: Id21686be8b2b229dc61c5d01f888c9b5deabb857\n"
    },
    {
      "commit": "d4933842b1f665f4d88b75a5d4d152cbc02e7010",
      "tree": "851861da157785e214a140944381dbf8a0f84993",
      "parents": [
        "977c9a5d3cb9ecd9190c37da25d1e7476a1dd0bb",
        "e4aecb671ba19903e3e1066a6e265a18c43b188e"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Fri Mar 09 11:06:42 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 09 11:06:42 2012 -0800"
      },
      "message": "Merge \"Fix softap start\""
    },
    {
      "commit": "e4aecb671ba19903e3e1066a6e265a18c43b188e",
      "tree": "f046fc87bace72cac082ba3c132aabb9096bf682",
      "parents": [
        "4c8982ad820007512e4e9cbb7f15925228d70761"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Fri Mar 09 11:01:01 2012 -0800"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Fri Mar 09 11:01:01 2012 -0800"
      },
      "message": "Fix softap start\n\nRemove the unncessary \"softap start\" which was used for broadcom\nspecific implementation\n\nChange-Id: I79458082a116cd630bd13d1ed1a237eda7daaa88\n"
    },
    {
      "commit": "8931da12e85c181652a8e47fb358a5bdfc79a1fd",
      "tree": "1262e4531b02830bee6f2999b7beea08bae3bc75",
      "parents": [
        "8ac70c42507560bf6df7114e96f788c03a18bd6a",
        "d9781fe7ee88ea324e5e688dd9c352ab54fd179a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Mar 08 19:27:21 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 08 19:27:21 2012 -0800"
      },
      "message": "Merge \"Fix crash.\""
    },
    {
      "commit": "d9781fe7ee88ea324e5e688dd9c352ab54fd179a",
      "tree": "eaa924d7bc6e45445a2e7ce203f61c680e0926e4",
      "parents": [
        "a0b29f556519653c9749cebff4af43e68b4d59ce"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Mar 08 18:04:18 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Mar 08 18:04:18 2012 -0800"
      },
      "message": "Fix crash.\n\nChange-Id: Id219351625494c54524e400055755d41f3bef868\n"
    },
    {
      "commit": "df813c03b16ed32c25a8c8fee82a7a98088ac940",
      "tree": "c83351b426b7f4981e2913ec21ce9171a4da1a4a",
      "parents": [
        "21b4d6b7a5959b567355aae032bd76500c148e54",
        "7ae9d5faad5816f7e567ec1ec77e78d746cf7e5c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Mar 08 16:28:48 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 08 16:28:48 2012 -0800"
      },
      "message": "Merge \"Use the Choreographer for Drawable animations.\""
    },
    {
      "commit": "28ca8f9f95b1ee8186463bfc3f33b9383c0d1dd0",
      "tree": "59ad76b3447c2f56b9160a5d487f92f045aaff37",
      "parents": [
        "754682e513772940f23a5b167f1311f34f202d18",
        "04e0d265e3385e9d1fbc35e43c4e8caffbbe3290"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Mar 08 15:55:20 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 08 15:55:20 2012 -0800"
      },
      "message": "Merge \"Make SyncManager and AccountManagerService multi-user aware.\""
    },
    {
      "commit": "583fcb9175cd0c614f096db633d9e784ab7e1f54",
      "tree": "a75573a0bc37dd1df88b127068a4e3c7f47e95ed",
      "parents": [
        "a0b29f556519653c9749cebff4af43e68b4d59ce",
        "bb9908b828a8cfd5965553be66faa6af89973697"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 08 15:06:50 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 08 15:06:50 2012 -0800"
      },
      "message": "Merge \"Dispatch screen state change events to Views Bug #6120957\""
    },
    {
      "commit": "bb9908b828a8cfd5965553be66faa6af89973697",
      "tree": "33ab74a9cb8ad69058cece5ae83d4b82f7b51633",
      "parents": [
        "3bef5e9f3aa90465ee3ab66ef33d7a88d1b0c5c1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 08 11:14:07 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 08 15:05:12 2012 -0800"
      },
      "message": "Dispatch screen state change events to Views\nBug #6120957\n\nUsing this new callback, views can interrupt and resume their\nanimations or other periodic tasks based on the current state\nof the display.\n\nChange-Id: I398f4abd421e9c5f207107bf1009a7b92cf45daa\n"
    },
    {
      "commit": "21c241e061de29a538008ca42df9c878184bcfb8",
      "tree": "2ab9065ae16bbe9fc5b599e1c591a020ac5c7ce1",
      "parents": [
        "c8462e322bcf5a07d9ef677ed099e007ef268932"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Mar 08 13:57:23 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Mar 08 14:34:03 2012 -0800"
      },
      "message": "Add new Intent API for associating a ClipData with an Intent.\n\nAllows applications to propagate multiple URI grants through an\nIntent.\n\nLater on, we should probably redefine the share actions to be\nbased on this ClipData with the old extras-based approach only\nthere for compatibility.  Even if we don\u0027t do that, though, this\nallows you to do a multi-select share that grants multiple URI\npermissions by stuffing the URIs in a ClipData.\n\nAlso add some documentation in various places telling people how\nthey can grant URI permissions.\n\nChange-Id: Id4ba8e72c11caf7e1f1f438cb7af058d1586a37c\n"
    },
    {
      "commit": "04e0d265e3385e9d1fbc35e43c4e8caffbbe3290",
      "tree": "0570669214e6f4f45a81b51c618dfba38a02afae",
      "parents": [
        "e5d076e8d1a44414edf4cc4796d4c510b8d49518"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Feb 14 11:50:53 2012 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Mar 08 10:52:36 2012 -0800"
      },
      "message": "Make SyncManager and AccountManagerService multi-user aware.\n\nAccountManagerService\n- Maintain multiple account lists, one per user\n- Keep multiple databases of accounts\n- Account db moved to /data/system/users/\u003cuserid\u003e/\n\nSyncManager\n- SyncStorageEngine keeps track of multiple users\u0027 accounts.\n- SyncQueue maintained as a single instance, queueing requests from\n  multiple users.\n- Changed some methods to take userId arguments\n- Removed some deadc0de\n- Store the userId in the SyncOperation, so we know which provider\n  instance to bind to when queued operations are processed.\n\nContentService\n- Pass along the userid to sync manager calls.\n\nActivityManagerService:\n- Fixed a bug in cancelIntentSender\n- Don\u0027t bring other user\u0027s task forward when resetting tasks.\n\nUpdated tests\n\nChange-Id: If317340ef68e902787aa3f5ceb4cf96f14aea695\n"
    },
    {
      "commit": "250069bf6bf3d7e2ef85c49e0cd100e80c3c8b7d",
      "tree": "5dbcb720953c2462948ea42160fc5cef0d1b4556",
      "parents": [
        "cd40f4a062d73088462eaca6c3e778440c1ccdd8",
        "7e4e561bc717a6eea4e0d06ec4173ad27420425f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 08 10:47:02 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 08 10:47:02 2012 -0800"
      },
      "message": "Merge \"Ignore draw requests when the display is off\""
    },
    {
      "commit": "7ae9d5faad5816f7e567ec1ec77e78d746cf7e5c",
      "tree": "ba96bb195804706f40e4f9930b8d5ae19ed719c3",
      "parents": [
        "d5f07990822db3531c84755f406c1e12083aee37"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Mar 05 19:33:49 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 07 19:02:51 2012 -0800"
      },
      "message": "Use the Choreographer for Drawable animations.\n\nChange-Id: Ifcbf33434bf3c32d1900fd0b3f5bde004604ce8a\n"
    },
    {
      "commit": "09ec58ea0ff4a49c3c040cda7e5af8df3b040237",
      "tree": "6ed74aa149cc65abc72363a4cc325371536806e2",
      "parents": [
        "97d0ae391d9c472331301a276f2d82742bf3678f",
        "84c00c67d70af4797c098f20124b9f8882980649"
      ],
      "author": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Wed Mar 07 17:04:52 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 07 17:04:52 2012 -0800"
      },
      "message": "Merge \"Prevent potential stall in dns proxy.\""
    },
    {
      "commit": "8247add51db34afd8ccb16ec120f4f1f6d80d576",
      "tree": "137af59149d56e015f1483e0f0ac41c3ef4aa01d",
      "parents": [
        "94828c3f3b41df427363cc890a779a7af937275f",
        "18651804ff913a6c296f772e53bc2d3b84b1b923"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Wed Mar 07 15:21:31 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 07 15:21:31 2012 -0800"
      },
      "message": "Merge \"Fix 6119433: disambiguate screen brightness changes from other lights\""
    },
    {
      "commit": "18651804ff913a6c296f772e53bc2d3b84b1b923",
      "tree": "9e0f9ed556218e5f5bc15a72133d089025ad0b30",
      "parents": [
        "4b97257979034a8031040b84d8f016d8f3175313"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Wed Mar 07 14:19:56 2012 -0800"
      },
      "committer": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Wed Mar 07 14:59:06 2012 -0800"
      },
      "message": "Fix 6119433: disambiguate screen brightness changes from other lights\n\nThis fixes a bug where the code asked to change the keyboard brightness\non a device that doesn\u0027t support it.  Instead of animating the keyboard\nbrightness, it ended up animating the display brightness and invoking\nthe power off animation as a result.  The fix is to ignore keyboard\nbrightness because we don\u0027t have any devices that currently support it.\n\nChange-Id: I672d89f92f991812ea676f19c40058b2d3008656\n"
    },
    {
      "commit": "091ca2d5fb0592304358a9dfcd7931de68bb9983",
      "tree": "7c4f993dacdb633c4a4b5a7e013e1a3122e061fa",
      "parents": [
        "5eb37241fee7e656cf9787bf00a160e94b4894fc",
        "6341fcecc8826924a4bb24169aaf80fec9a20894"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Mar 06 20:04:26 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 20:04:26 2012 -0800"
      },
      "message": "Merge \"Avoid updating network stats after shutdown.\""
    },
    {
      "commit": "6341fcecc8826924a4bb24169aaf80fec9a20894",
      "tree": "982eaad71633447618cd0dda4562498d1f8ceb2a",
      "parents": [
        "09c8f48c105c4ed299617aaa892c7f0cd891b144"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Mar 06 19:59:57 2012 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Mar 06 19:59:57 2012 -0800"
      },
      "message": "Avoid updating network stats after shutdown.\n\nBug: 6109476\nChange-Id: I9a3a8b182c8fa56d83ddc755d204d5b267c9bc5d\n"
    },
    {
      "commit": "5eb37241fee7e656cf9787bf00a160e94b4894fc",
      "tree": "4f6291fcc4462247152ee9927a1ebb90a331266c",
      "parents": [
        "afeecb0740938d295083335950ea901d832a794c",
        "27ff913d56de8400083a13fc572e2812b32c890c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 06 19:06:25 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 19:06:25 2012 -0800"
      },
      "message": "Merge \"Work on more low memory reporting to apps.\""
    },
    {
      "commit": "27ff913d56de8400083a13fc572e2812b32c890c",
      "tree": "f30ec6efb44658b448c5e049bf0c1c3e40f0f06c",
      "parents": [
        "4f03d35f9c040222e6a46dde807fe2ff7852beb8"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 06 14:57:58 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 06 18:46:32 2012 -0800"
      },
      "message": "Work on more low memory reporting to apps.\n\nThere are now some new trim memory levels that are sent to\nnon-background applications as RAM becomes low.\n\nThere is a new API for an application to retrieve information\nabout memory trimming and such on demand.\n\nFixed various checks against the memory trim level to be\nrobust (not compare against exact values).\n\nChange-Id: Ifd1c6151124350168aef20a94e517166fd2e03eb\n"
    },
    {
      "commit": "06402e91e9a94ddccf4562fd98b358aad776b6aa",
      "tree": "15d09d3810703211144e762eff840d15732ffb79",
      "parents": [
        "135fb111dfa512809166ea3a0967ef6d67c76a2b",
        "470007f69a258ccebb7c04927210a091dbcbe181"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Tue Mar 06 11:30:28 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 11:30:28 2012 -0800"
      },
      "message": "Merge \"Make NDC not block forever and handle restart.\""
    },
    {
      "commit": "135fb111dfa512809166ea3a0967ef6d67c76a2b",
      "tree": "aebcba7c8f12c38dbc45c77dbabe9a8dd882b76f",
      "parents": [
        "d1f0023ddf1633eb5d9aa98995086b0fe3080a85",
        "26caf7adf62fa36dc3fa7c194ff38520d1003f11"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Mar 06 11:12:40 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 11:12:40 2012 -0800"
      },
      "message": "Merge \"Fix deadlock by making DropBoxManager call async.\""
    },
    {
      "commit": "4f03d35f9c040222e6a46dde807fe2ff7852beb8",
      "tree": "b73b05ebb248ea627f9428b4b8dc3c1705b3bfba",
      "parents": [
        "b7fdddab0d1cfa666747a0295fcea4bfea709737",
        "6569625beef705ec489662b80d372c4423f9c7f7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 06 10:34:18 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 10:34:18 2012 -0800"
      },
      "message": "Merge \"Fix issues #6103378 and #5959515.\""
    },
    {
      "commit": "26caf7adf62fa36dc3fa7c194ff38520d1003f11",
      "tree": "75022a6bf1bd2dde95c2a50b82bd7b2d526d348a",
      "parents": [
        "eb00769e8983a02397db26a5413147a975b47c1f"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sun Mar 04 17:17:59 2012 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Mar 06 09:30:18 2012 -0800"
      },
      "message": "Fix deadlock by making DropBoxManager call async.\n\nCreated a Handler and used it to make sendBroadcast call asynchronously.\nDeadlock was caused by WindowManagerService Log.wtf call requiring\nActivityManagerService lock while holding its own lock. At the same time\nActivityManagerService was holding its lock while waiting for\nWindowManagerService lock.\n\nTested by forcing a Log.wtf in\nWindowManagerServices.updateWindowsAppsAndRotationAnimationsLocked\ninside mAppTokens loop. Then ran \u0027adb shell monkey -v -v 500000\u0027.\nWithout this fix it would lock up and reboot within a couple of minutes.\nWith this fix it runs until the Camera app crashes. But that\u0027s a\ndifferent bug...\n\nFixes bug 6112676.\n\nChange-Id: I5b360aa08412d117b1765f01bacd931020509db7\n"
    },
    {
      "commit": "6569625beef705ec489662b80d372c4423f9c7f7",
      "tree": "379e247e59452d80275614f22b5f153fa6dc9f79",
      "parents": [
        "c3b91e9afd981f1a994a1024c3e822cf909f070d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 05 18:49:21 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 05 18:49:21 2012 -0800"
      },
      "message": "Fix issues #6103378 and #5959515.\n\nChange-Id: I762d86dd7119c9ac02f4b8803c4a250c6b7637c7\n6103378: APR: IOOBE at android.content.pm.PackageParser.generatePackageInfo(\n    PackageParser.java:355)\n5959515: PackageManager doesn\u0027t validate className in setComponentEnabledSetting\n"
    },
    {
      "commit": "7e4e561bc717a6eea4e0d06ec4173ad27420425f",
      "tree": "3f01d44a6d26494572a10318595895e4bdaf77cf",
      "parents": [
        "fb9c41c2060497a459d16c30122e1d082895e5d1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 05 14:37:29 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 05 14:37:29 2012 -0800"
      },
      "message": "Ignore draw requests when the display is off\n\nWhen WindowManagerService\u0027s events are enabled/disabled, the state of the\ndisplay is dispatched to the known windows. This allows ViewRootImpl to\nignore draw requests until the screen is turned back on. This can potentially\nlead to significant battery savings. For instance, a launcher widget showing\na repeating animation will cause the CPU and the GPU to wake up regularly\nwithout this change.\n(Change submitted by Intel and merged manually)\n\nChange-Id: I7f93b0e60c3e6de1705f619e80860c36b1cdb978\n"
    },
    {
      "commit": "e78d7670ca6d0f7cd66edeef791978234dd8d857",
      "tree": "d75b07a9398c39b9330a5c9d6d4cbf81f20aa474",
      "parents": [
        "c8a0a159949a8b975b7e48a66f7034e2748f367d",
        "d975403a2dc71132cab1f6bfa111a9b353f307f8"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Mar 05 13:19:33 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 05 13:19:33 2012 -0800"
      },
      "message": "Merge \"PowerManagerService: only turn off screen when we really mean to\""
    },
    {
      "commit": "d975403a2dc71132cab1f6bfa111a9b353f307f8",
      "tree": "f150df23689531e0857821c00b599dcb7cb5ecd8",
      "parents": [
        "e6e47f0517b98055625abc21a85eaa702374495a"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Mar 05 09:55:41 2012 -0800"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Mar 05 13:13:33 2012 -0800"
      },
      "message": "PowerManagerService: only turn off screen when we really mean to\n\nChange-Id: I8aa574b38a4d901fce91b6d7771207949f9c8044\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "c3b91e9afd981f1a994a1024c3e822cf909f070d",
      "tree": "cfa6798cb4ac361754be7d95116a1838fdd0b897",
      "parents": [
        "5a2b6077001d948f5d7667829c95b06228556609",
        "9fd74805c8be91df78f3eccc40ab2466c8114fc9"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 05 11:45:19 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 05 11:45:19 2012 -0800"
      },
      "message": "Merge \"More work on rotation animation.\""
    },
    {
      "commit": "9fd74805c8be91df78f3eccc40ab2466c8114fc9",
      "tree": "85c16457755a8dc81a92b740416143b632f542d0",
      "parents": [
        "f8acebe4a5dfc5d8f24e55b50170b6053ba060de"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Mar 01 19:26:31 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 05 11:44:10 2012 -0800"
      },
      "message": "More work on rotation animation.\n\nThe black frame is now a separate animation element.  This allows us\nto have it move through the aspect ratio change, without the old\nand new screen elements doing weird aspect ratio scalings.  This\nmakes the animation generally look different (more like a reveal),\nnot sure if it is better or worse, but definitely has less artifacts\nin things like the gallery.\n\nAlso tweaked the animation definitions a bit.\n\nChange-Id: I94c274ba04bbc7a675946dc6c1778e19386e4a66\n"
    },
    {
      "commit": "db9e6937f18ceeb5715954c828ac4a51e383d140",
      "tree": "38b6165086408ed99e54fbca8e8ac93ac3b9e0f5",
      "parents": [
        "86add4350c228a9a33c71d695098ea8ba7c7c275",
        "86a5f5b9afa97a4ed6f5a2466fb9359ea131e2fb"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Fri Mar 02 16:33:01 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 16:33:01 2012 -0800"
      },
      "message": "Merge \"Enhance WPS\""
    },
    {
      "commit": "86add4350c228a9a33c71d695098ea8ba7c7c275",
      "tree": "1e8581fc4b23d582365312dbf4bb00c524a9d56b",
      "parents": [
        "b6df928e5eff4448f670b92c1ce00de55f0f0eac"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Mar 02 16:09:01 2012 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Mar 02 16:09:01 2012 -0800"
      },
      "message": "Fix reference to wrong ArrayList.\nFixes bug 6107296.\n\nChange-Id: I44f2793c1c92686b276e491436a10be4f18c0d48\n"
    },
    {
      "commit": "b6df928e5eff4448f670b92c1ce00de55f0f0eac",
      "tree": "5ff8ea2f4b71b6af87baa2eb12a115115fa90cef",
      "parents": [
        "dc043b58cb3567246d00057d90e502ea16e1ebf2",
        "a731cd302dc39deaf835aeb52af12f391806a4bf"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Mar 02 16:06:33 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 16:06:33 2012 -0800"
      },
      "message": "Merge \"Fix rotation so orientation changes aren\u0027t dropped. Modify test so that rotation animation is entered one final time after rotation completes. This last time causes mUpdateRotation to be set true forcing a test for orientation change. Fixes bug 6109189.\""
    },
    {
      "commit": "a731cd302dc39deaf835aeb52af12f391806a4bf",
      "tree": "297b7ee73c6bf14805e7213d423764a7d84de220",
      "parents": [
        "861d5ecc7cde0bf7f77ce31d5af2d56ee23b3aee"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Mar 02 15:23:55 2012 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Mar 02 16:03:18 2012 -0800"
      },
      "message": "Fix rotation so orientation changes aren\u0027t dropped.\nModify test so that rotation animation is entered one final time after rotation completes. This last time causes mUpdateRotation to be set true forcing a test for orientation change.\nFixes bug 6109189.\n\nChange-Id: I25475f336a3439a56b1c540205d09ee48c1d2b7c\n"
    },
    {
      "commit": "86a5f5b9afa97a4ed6f5a2466fb9359ea131e2fb",
      "tree": "bee6fb52f69b677065cc1ee4e12f53e07ae00023",
      "parents": [
        "1a7dd039f189036709bc2253ba50955913f59d7a"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Tue Feb 28 17:03:56 2012 -0800"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Fri Mar 02 14:09:53 2012 -0800"
      },
      "message": "Enhance WPS\n\n- Add a cancel API\n- Add more error reporting on WPS\n- Fix network status reporting that showed up with new implementation\n\nChange-Id: I499796c80d16d18df95fb702d029aa7e7283b603\n"
    },
    {
      "commit": "7b72ea71b90f1c12ad9b104cc2e79499d98de863",
      "tree": "c3cfcbc60de46a4fe74fb2935677a8d34569ff64",
      "parents": [
        "ec418d3eae3d10cdc1b9d71f63648ce356722a94"
      ],
      "author": {
        "name": "yoonsung.nam",
        "email": "yoonsung.nam@samsung.com",
        "time": "Fri Mar 02 19:56:16 2012 +0900"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Mar 02 10:23:03 2012 -0800"
      },
      "message": "Fix the bug net.dns1.pid is same as net.dns2.pid\n\nwritePidDns() does not increase the index in case first given dns\nalready exist in the property.\n\nChange-Id: I1129d0042929b3ee119160e53cae0e4143c7ea88\nSigned-off-by: yoonsung.nam \u003cyoonsung.nam@samsung.com\u003e\n"
    },
    {
      "commit": "f8acebe4a5dfc5d8f24e55b50170b6053ba060de",
      "tree": "710691e2f85eec353108f2817883724b3c00450a",
      "parents": [
        "38addbe3aba92ca13d6a94a0103d60e5f14c79d3",
        "dbb7991b4e4638b284814b50e79cacc1e1c9d8cd"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Mar 01 19:29:46 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 01 19:29:46 2012 -0800"
      },
      "message": "Merge \"Separate animation steps into start, step and finish phases. Fixes bug 6089126.\""
    },
    {
      "commit": "b132506e6e104f9c1fad15b5ee7cbc259fcd87c8",
      "tree": "e31ba939576dff7690d761491b75e1f039ed740c",
      "parents": [
        "14700016e9270de4e57a29ef29bf7949cd32518d",
        "0450510f5932c07e66c1208f007711fe514d2555"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Mar 01 19:21:22 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 01 19:21:22 2012 -0800"
      },
      "message": "Merge \"Fix issue where pm would clear preferred apps when updating an app.\""
    },
    {
      "commit": "dbb7991b4e4638b284814b50e79cacc1e1c9d8cd",
      "tree": "6cbd560dadbcf6673a9f023ef170ae95a4af89dd",
      "parents": [
        "5bb59daf42fb24c1131effd4265c2386304feceb"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Mar 01 18:59:14 2012 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Mar 01 19:06:07 2012 -0800"
      },
      "message": "Separate animation steps into start, step and finish phases.\nFixes bug 6089126.\n\nChange-Id: Iafbde36ff719640335a7ecf762e1d991cf7915e4\n"
    },
    {
      "commit": "209266e93f13f598a52b7706319ae1119311e10c",
      "tree": "fc80a01541ac9a229963b9b220b6b84d197b14b5",
      "parents": [
        "ac5a3a1c123ba58ed75ed7ddaf3f82eec37606c7",
        "d3975a917799b85cacaf382b65c5832813066b51"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Mar 01 16:26:52 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 01 16:26:52 2012 -0800"
      },
      "message": "Merge \"Fix WifiManager async API\""
    },
    {
      "commit": "46f31c31ea76e8f8a835abbc6a2929ab0b929965",
      "tree": "eb12e15966e39173326fa94d873180bd37d8b973",
      "parents": [
        "3f4b1c4d582394646043f1a67527ed3e9f999e1b"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Thu Mar 01 14:36:07 2012 -0800"
      },
      "committer": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Thu Mar 01 14:56:47 2012 -0800"
      },
      "message": "Fix 5797764: fix crash on tablets\n\nThis fixes a crash on tablets introduced by Change Ifad76fb2. It was caused\nby calling nativeStartSurfaceFlingerAnimation() on devices that previously\ndidn\u0027t call it and apparently don\u0027t support some feature it uses.\n\nChange-Id: Ia4c04e7e611f45cde0fbeb861aec3435d1719552\n"
    },
    {
      "commit": "3f4b1c4d582394646043f1a67527ed3e9f999e1b",
      "tree": "70746569badc033714fdd5df100edda0093e1b5f",
      "parents": [
        "cab063cf3804539d98086eab9c2d07e0dddd5aab",
        "92e66dd6835cd5fefad463c79d0589166e8fd3a7"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Thu Mar 01 14:30:21 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 01 14:30:21 2012 -0800"
      },
      "message": "Merge \"Fix 5797764: don\u0027t hold PowerManager lock when changing native brightness\""
    },
    {
      "commit": "d3975a917799b85cacaf382b65c5832813066b51",
      "tree": "35f249be09330ebf5222b139bd1c2355823e7e88",
      "parents": [
        "5bb59daf42fb24c1131effd4265c2386304feceb"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Fri Feb 24 10:54:13 2012 -0800"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Mar 01 13:57:23 2012 -0800"
      },
      "message": "Fix WifiManager async API\n\nFix the current asynchronous API to use callback like the way\nwas done with p2p API.\n\nIn the process, fix the use of WPS\n\nChange-Id: Ib6f8714cf51b3525b655948268804e7eaaf17587\n"
    },
    {
      "commit": "5bb59daf42fb24c1131effd4265c2386304feceb",
      "tree": "6db4046e65bf7e4060834de9b5246993cf976ad6",
      "parents": [
        "faf88b85e27ccdba225ec8a501803224a76b9c93"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 01 12:39:25 2012 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 01 13:00:30 2012 -0800"
      },
      "message": "Merge: Send UpdateLock broadcasts to manifest receivers\n\nSo that e.g. the system update service doesn\u0027t need to run all the time.\n\nBug 5543442\n\nChange-Id: I4cd38240e67851daa5542a2962953e5dbed15b86\n"
    },
    {
      "commit": "10bcb6fbb1afda4e8ce8e23dc6620500cea09461",
      "tree": "342b668ce2d1afcbb2f69291e801976c3f910ee6",
      "parents": [
        "592c85cd6c083997ee7f31ecbd52ab67942467d6",
        "c9dac1185d6944e4bdb851a06ae07ea3621042bf"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Thu Mar 01 08:13:24 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 01 08:13:24 2012 -0800"
      },
      "message": "Merge \"Don\u0027t forget to turn off mobile_dun\""
    },
    {
      "commit": "43d8a95fa8dfd26ba8c56ac7489a8bc77c77034c",
      "tree": "8aed3c6b7190073512833b461e4e28aa2a9fe657",
      "parents": [
        "7084e75282d6c800a1b889eff66794a8cd62e0c5",
        "07573b32494acbabd21979d8b9584c1ed3f7a6ad"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Wed Feb 29 19:33:06 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 29 19:33:06 2012 -0800"
      },
      "message": "Merge \"Improve Wi-Fi hand-off\""
    },
    {
      "commit": "07573b32494acbabd21979d8b9584c1ed3f7a6ad",
      "tree": "ad3a4a15c889b4b175717cd38a28a92601ed82ae",
      "parents": [
        "6b48f088b1e0bed242118422c88fea8d714307e0"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Fri Jan 27 21:00:19 2012 -0800"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Wed Feb 29 17:33:36 2012 -0800"
      },
      "message": "Improve Wi-Fi hand-off\n\nWhen Wi-fi connects at L2 layer, the beacons reach and the device\ncan maintain a connection to the access point, but the application\nconnectivity can be flaky (due to bigger packet size exchange).\n\nWe now use Watchdog to monitor the quality of the last hop on\nWi-Fi using signal strength and ARP connectivity as indicators\nto decide if the link is good enough to switch to Wi-Fi as the uplink.\n\nARP pings are useful for link validation but can still get through\nwhen the application traffic fails to go through and thus not best indicator\nreal packet loss since they are tiny packets (28 bytes) and have\nmuch low chance of packet corruption than the regular data\npackets.\n\nSignal strength and ARP used together ends up working well in tests.\nThe goal is to switch to Wi-Fi after validating ARP transfer\nand RSSI and then switching out of Wi-Fi when we hit a low\nsignal strength threshold and waiting until the signal strength\nimproves and validating ARP transfer.\n\nChange-Id: Ica593291ec7772da892f03cf45b649635b730c47\n"
    },
    {
      "commit": "470007f69a258ccebb7c04927210a091dbcbe181",
      "tree": "3786344e495900f9218baa40b46e03cbbdc9f68a",
      "parents": [
        "502695d5283917d4c9e5a549d01c431dea4b1a5c"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Tue Feb 07 11:36:55 2012 -0800"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Wed Feb 29 16:53:27 2012 -0800"
      },
      "message": "Make NDC not block forever and handle restart.\n\nStill possible for netd to get wedged but system won\u0027t die because of it.\nLeads the way to having forking netd - then only individual commands would\nwedge, promoting stability.\n\nbug:5864209\nbug:6019952\nChange-Id: I43e4c5072863b8b812d4fe24d30d92eb1a11651a\n"
    },
    {
      "commit": "8662cab5c6a01ea5c426512e6f6d2cf3e158aea0",
      "tree": "3b59cda27e624d46603427888e906e3686c00379",
      "parents": [
        "c021a119a2b2b274e3a0bc06003e389a00de9112"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Feb 23 14:59:36 2012 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Feb 29 14:05:24 2012 -0800"
      },
      "message": "Merge: Introduce UpdateLocks\n\nAn \"UpdateLock\" works similarly to a wake lock in API: the caller is\nproviding a hint to the OS that now is not a good time to interrupt\nthe user/device in order to do intrusive work like applying OTAs.\nThis is particularly important for headless or kiosk-like products\nwhere ordinarily the update process will be automatically scheduled\nand proceed without user or administrator intervention.\n\nUpdateLocks require that the caller hold the new signatureOrSystem\npermission android.permission.UPDATE_LOCK.  acquire() and release()\nwill throw security exceptions if this is not the case.\n\nThe \"is now convenient?\" state is expressed to interested parties\nby way of a sticky broadcast sent only to registered listeners.  The\nbroadcast is protected; only the system can send it, so listeners\ncan trust it to be accurate.  The broadcast intent also includes a\ntimestamp (System.currentTimeMillis()) to help inform listeners that\nwish to implement scheduling policies based on when the device became\nidle.\n\nThe API change here is a tiny one: a dump(PrintWriter) method has been\nadded to the TokenWatcher class to facilitate getting information out\nof it for dumpsys purposes.  UpdateLock itself is still @hide.\n\nBug 5543442\n\nChange-Id: I3709c831fc1883d7cb753cd2d3ee8e10a61e7e48\n"
    },
    {
      "commit": "c9dac1185d6944e4bdb851a06ae07ea3621042bf",
      "tree": "de4eb222bd5f8d4a79f626f7b2b8056480229fd8",
      "parents": [
        "d9f94416fcca8bd091075d1058eade91811b798f"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Tue Feb 28 12:25:34 2012 -0800"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Wed Feb 29 14:02:55 2012 -0800"
      },
      "message": "Don\u0027t forget to turn off mobile_dun\n\nWhen we find a higher priority match for tethering traffic we should turn off\nwhatever we were trying before.\n\nbug:6083611\nChange-Id: I06ee41336df107353bf1a979150345e461574a48\n"
    },
    {
      "commit": "0450510f5932c07e66c1208f007711fe514d2555",
      "tree": "c8a2a9870580279659658453fccb2b71f4906012",
      "parents": [
        "8279570b222d46def4e541d71ef29dbfd9fbe3d7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Feb 29 12:34:04 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Feb 29 12:34:04 2012 -0800"
      },
      "message": "Fix issue where pm would clear preferred apps when updating an app.\n\nThe code for this was fairly conservative since the components of the\napps could change, leaving junk in the preferred app list.  Now we\ndon\u0027t pro-actively clear them, but try to catch missing components\nlater.\n\nChange-Id: I793063449dcc577fd3d56bb56495b308f0c95ea8\n"
    },
    {
      "commit": "c38358025d8551a7ed225fd08ae7492f140de2e2",
      "tree": "30969dd44af4321d45cfcd2a126fd7be73820a8f",
      "parents": [
        "9f77932422c3e819ea4c2ed16ff1f700337aa779",
        "343511c9ec6a7a1d3760f784824a64e732f3b7a2"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Feb 29 06:18:23 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 29 06:18:23 2012 -0800"
      },
      "message": "Merge changes I08fcd278,I1f496bb7\n\n* changes:\n  Detect animation completions like we used to. Previous approximations weren\u0027t indicating completion and windows weren\u0027t being layered correctly as a result.\n  debug\n"
    },
    {
      "commit": "a6bae56fc533e5817bd85098b52dea9cc24b5dac",
      "tree": "47684073e997f0907f4391cc315caced0d37386d",
      "parents": [
        "1da4ce06990a185bdf08b14354356dadbc801a28",
        "4e713f14419a37f385cf1509b011982bdcf67edc"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Tue Feb 28 17:56:43 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 28 17:56:43 2012 -0800"
      },
      "message": "Merge \"Unblock IPC call in TextServicesManagerService\""
    },
    {
      "commit": "343511c9ec6a7a1d3760f784824a64e732f3b7a2",
      "tree": "f2066948d78252bef75cf6f0c1e0ad19a58d8733",
      "parents": [
        "ba64dfe8728318f1a0db7547d0cc3f27f3a22766"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 28 17:30:50 2012 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 28 17:34:22 2012 -0800"
      },
      "message": "Detect animation completions like we used to.\nPrevious approximations weren\u0027t indicating completion and windows weren\u0027t being layered correctly as a result.\n\nChange-Id: I08fcd278485bb87dc10bca257b9f8073108753f3\n"
    },
    {
      "commit": "ba64dfe8728318f1a0db7547d0cc3f27f3a22766",
      "tree": "ae21094b7decfa3caba277f3f53530bc24fad094",
      "parents": [
        "eb5698a6b98b73d6b3cc136af6eb1ad235e2420f"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 28 12:55:58 2012 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Feb 28 17:34:21 2012 -0800"
      },
      "message": "debug\n\nChange-Id: I1f496bb71068b6c3a09095c39fb04c9f4153e051\n"
    },
    {
      "commit": "8097e1c56702810e56b5c834729e81c30231e5d5",
      "tree": "0e9f83a3b3c6cfbe154d3322a37cea68dfd1268f",
      "parents": [
        "00e6fc4c738a766c6f42b144c473385b944aa399",
        "e7bb71d26943fbb053139e1e34203df4c2afaa9b"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 28 15:14:19 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 28 15:14:19 2012 -0800"
      },
      "message": "Merge \"Disable verbose NetworkStats logging.\""
    },
    {
      "commit": "e7bb71d26943fbb053139e1e34203df4c2afaa9b",
      "tree": "d536183dcdc8559b0941de49bd3a36a40d76781a",
      "parents": [
        "c81ec3637b8e3c177ec041aeb3863e123924505b"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 28 15:13:08 2012 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Feb 28 15:13:08 2012 -0800"
      },
      "message": "Disable verbose NetworkStats logging.\n\nBug: 6076584\nChange-Id: I4efcda2b474f623f4fe70db8b43b0aa69017d749\n"
    },
    {
      "commit": "00e6fc4c738a766c6f42b144c473385b944aa399",
      "tree": "9dd6bba1e349795cc07bd5e9080c6ae97843d4b7",
      "parents": [
        "d9f94416fcca8bd091075d1058eade91811b798f",
        "4953ec1c71c4c2c134da2c969945c0d8b4fcb03c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 28 15:10:39 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 28 15:10:39 2012 -0800"
      },
      "message": "am 4953ec1c: am a2e0e3b5: am 27e20ccd: Merge \"Fix issue #6073913: onActivityResult() not getting called...\" into ics-mr1\n\n* commit \u00274953ec1c71c4c2c134da2c969945c0d8b4fcb03c\u0027:\n  Fix issue #6073913: onActivityResult() not getting called...\n"
    },
    {
      "commit": "4953ec1c71c4c2c134da2c969945c0d8b4fcb03c",
      "tree": "62b899de504888969cd11828865c83d79d0f1d96",
      "parents": [
        "635d492d5918fe11a3a9bb9d9a87839a8331d34b",
        "a2e0e3b5f63dc741fd5e54f45f8dde1a3cb58c6c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 28 15:07:43 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 28 15:07:43 2012 -0800"
      },
      "message": "am a2e0e3b5: am 27e20ccd: Merge \"Fix issue #6073913: onActivityResult() not getting called...\" into ics-mr1\n\n* commit \u0027a2e0e3b5f63dc741fd5e54f45f8dde1a3cb58c6c\u0027:\n  Fix issue #6073913: onActivityResult() not getting called...\n"
    },
    {
      "commit": "c221d6ec2fbaa73f82cd219e2d5ab078697070ab",
      "tree": "cc8f41c5e464eec7e310e7415eae238db6038956",
      "parents": [
        "fa73815e1d953e67c635877440e717dc84465d97",
        "27e20ccd9ac4dd1f9bf902ed2b359cc8beff7c9b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 28 15:03:18 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 28 15:03:18 2012 -0800"
      },
      "message": "am 27e20ccd: Merge \"Fix issue #6073913: onActivityResult() not getting called...\" into ics-mr1\n\n* commit \u002727e20ccd9ac4dd1f9bf902ed2b359cc8beff7c9b\u0027:\n  Fix issue #6073913: onActivityResult() not getting called...\n"
    },
    {
      "commit": "973481d6677ba89721558cb245fa8c701bf5463b",
      "tree": "a57f7261f704c548831745baa5d609eee235f5b4",
      "parents": [
        "a267f0a7079c7d36ecb98e7603c447de6318faa6",
        "ccd08b8de9dc4c9cfaee93cbbcc7053cc9e8d96f"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Feb 28 14:59:18 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 28 14:59:18 2012 -0800"
      },
      "message": "am ccd08b8d: am e939edb5: am f418738c: am d7fa7dee: Merge \"Fixes update of extras Bundle in new Locations for GPS Provider\"\n\n* commit \u0027ccd08b8de9dc4c9cfaee93cbbcc7053cc9e8d96f\u0027:\n  Fixes update of extras Bundle in new Locations for GPS Provider\n"
    },
    {
      "commit": "5c607433e3d609e1a023adb496018fd1389a8ec8",
      "tree": "021b1e5bac436fd2b89b16a377001438cacf305d",
      "parents": [
        "ee329930956c88d3c2cbcbb6da01abde4b40b2e8"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 28 14:44:19 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 28 14:45:23 2012 -0800"
      },
      "message": "Fix issue #6073913: onActivityResult() not getting called...\n\n...if the process is killed and restarted\n\nTry to ensure that in all cases we deliver an activity result if one\nwas requested.\n\nChange-Id: Id43e830d2ee782f98ed1e3b68e5e16f3258d4ad8\n"
    },
    {
      "commit": "e939edb5b4e991998ae8219b03d75c10cdc765cb",
      "tree": "0a9958e7c7955861034cdd242a43d60fcaab4d97",
      "parents": [
        "743aceec4289508a8c514dae7319659cf7f278c4",
        "f418738c64413b818e2dc507c912c2678876632f"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Feb 28 13:33:44 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 28 13:33:44 2012 -0800"
      },
      "message": "am f418738c: am d7fa7dee: Merge \"Fixes update of extras Bundle in new Locations for GPS Provider\"\n\n* commit \u0027f418738c64413b818e2dc507c912c2678876632f\u0027:\n  Fixes update of extras Bundle in new Locations for GPS Provider\n"
    },
    {
      "commit": "f418738c64413b818e2dc507c912c2678876632f",
      "tree": "8ec1409a57a366c29e83b7d9cc2887806b59f833",
      "parents": [
        "f016dc1bd7f9a67adac13b0b564692dab8723392",
        "d7fa7deef9bc0cf22bf450fdb062327697c087c4"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Feb 28 13:30:39 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 28 13:30:39 2012 -0800"
      },
      "message": "am d7fa7dee: Merge \"Fixes update of extras Bundle in new Locations for GPS Provider\"\n\n* commit \u0027d7fa7deef9bc0cf22bf450fdb062327697c087c4\u0027:\n  Fixes update of extras Bundle in new Locations for GPS Provider\n"
    },
    {
      "commit": "4e713f14419a37f385cf1509b011982bdcf67edc",
      "tree": "80ffe6aca8540d81dd5792e4e6911a4feaf85f98",
      "parents": [
        "c108613fb8ef0fabb3f08198a52bd0877e382937"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Tue Feb 28 16:51:15 2012 +0900"
      },
      "committer": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Tue Feb 28 17:00:46 2012 +0900"
      },
      "message": "Unblock IPC call in TextServicesManagerService\n\nBug: 5471520\nChange-Id: Iedf2c2cdd8d4834545d06d72ade3ce211b104b1d\n"
    },
    {
      "commit": "92e66dd6835cd5fefad463c79d0589166e8fd3a7",
      "tree": "894b51a7b8b1fb103661684d62b621f34420cdc1",
      "parents": [
        "79952ee29a8fc67b6d76a8db747bb72dd7d6ecd1"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Tue Feb 21 18:57:12 2012 -0800"
      },
      "committer": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Mon Feb 27 18:31:03 2012 -0800"
      },
      "message": "Fix 5797764: don\u0027t hold PowerManager lock when changing native brightness\n\nThis fixes a bug where the device could see a priority inversion when\nupdating display brightness.  The problem occurs because the code that\nmanages screen brightness holds the master lock while waiting for the\nnative method to complete.  On some devices, each call can amount to\ntens to hundreds of ms, which meant clients using PowerManager APIs\ncould block for the duration of the call.  In some cases, the animation\ncould block for many seconds because the unfairness of Java locks.\n\nThe solution is to handle all brightness updates in a separate thread that\ndoes not hold the master lock while calling native methods.\n\nThis also makes the animation more consistent by animating by actual\nwall clock time rather than depending on the round-trip from the driver.\n\nChange-Id: Ifad76fb2fb77e7b2a72dd9150440d87e22581b40\n"
    },
    {
      "commit": "e5c484cb5588146f2bf3aeaf8324db80bc735d46",
      "tree": "94e5be0189f028f3e7c2334bd1769712cb543623",
      "parents": [
        "2b4d6517b4ccece67088a9476853e142e39a8388",
        "0132a952f75a88582f4437b2c97039b71456f828"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Feb 27 17:01:38 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 27 17:01:38 2012 -0800"
      },
      "message": "Merge \"Increase max size of log size by 50% on userdebug builds.\""
    },
    {
      "commit": "0132a952f75a88582f4437b2c97039b71456f828",
      "tree": "a652ac521e5bfe2299af8c505af0b885b7f3db87",
      "parents": [
        "35ae6e2a841d8a287bccb56881f58e9fe24a07b6"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Feb 27 14:33:30 2012 -0800"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Feb 27 16:46:38 2012 -0800"
      },
      "message": "Increase max size of log size by 50% on userdebug builds.\n\nUseful especially for last kmsg (e.g. IMG/DSS logs truncate\nand loose useful info). Since this is a max, won\u0027t affect files\nthat are already shorter than 64kb.\n\nChange-Id: Ia5bb178678067e69384285e8c338dc8cb6ad071b\n"
    },
    {
      "commit": "83eaab5b43e479c85dc112a1f9b3e53e907bae1f",
      "tree": "47455cfb73ff6c791000ba8610204913b5dbd871",
      "parents": [
        "4709a11b5dcb0abb5f8518e0404b67a0912c0167"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Feb 27 16:15:13 2012 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Feb 27 16:15:13 2012 -0800"
      },
      "message": "Fix bug introduced when moving animation step out from between assignments to wasAnimating and nowAnimating.\nNow wasAnimating once again contains the animation state prior to the animation step.\n\nChange-Id: I2b53bd3f62228183233ab36f0ebe44c0344d2351\n"
    },
    {
      "commit": "84c00c67d70af4797c098f20124b9f8882980649",
      "tree": "054d351ce32cbe4a21fa6408319ad96db27449e4",
      "parents": [
        "35ae6e2a841d8a287bccb56881f58e9fe24a07b6"
      ],
      "author": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Mon Feb 27 15:42:38 2012 -0800"
      },
      "committer": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Mon Feb 27 15:42:38 2012 -0800"
      },
      "message": "Prevent potential stall in dns proxy.\n\nReflect the changes in ResponseCode.h to corresponding java file.\n\nChange-Id: I6d536aa4942bb4bd9db5df97895467fcdb4786ca\n"
    },
    {
      "commit": "5265466e8a5453e738713869f61ca45482b85319",
      "tree": "f5e5b79613f7e223895cb9b66e6aa2794d1b8469",
      "parents": [
        "2abb1381524bdbbc7a09b573505abde4178be2e3",
        "e639da7baa23121e35aa06d6e182558e0e755696"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 24 18:40:37 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 24 18:40:37 2012 -0800"
      },
      "message": "Merge \"New development permissions.\""
    },
    {
      "commit": "0aec3ea6defdee1ee4a9c0d6c4a3c13df3e7b812",
      "tree": "91e2e56e8b3a4da1ea037fded1f9c7078bae6d99",
      "parents": [
        "7b49b4bea8090bb8e5015225eb05686d3676205c",
        "911b505f11c719906985f169a4f45930bdec8695"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 24 15:44:55 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 24 15:44:55 2012 -0800"
      },
      "message": "am 911b505f: am dc5fa185: am 133dc2d7: Merge \"Fix issue #6048808: sometimes auto-correct is inactive\" into ics-mr1\n\n* commit \u0027911b505f11c719906985f169a4f45930bdec8695\u0027:\n  Fix issue #6048808: sometimes auto-correct is inactive\n"
    },
    {
      "commit": "7663d80f6b6fd6ca7a736c3802013a09c0abdeb9",
      "tree": "266fa968bd0d82616ff8d83e5f183a0ba6431cc9",
      "parents": [
        "566328a2a5fcd8c40fc67d8974d6df0df48b0056"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 24 13:08:49 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 24 13:18:23 2012 -0800"
      },
      "message": "Fix issue #6048808: sometimes auto-correct is inactive\n\nMy previous change to speed up the time the IME is dismissed was\nfundamentally flawed.  That change basically switched the order\nthe application called the input method manager service from doing\nstartInput() and then windowGainedFocus(), to first windowGainedFocus()\nand then startInput().\n\nThe problem is that the service relies on startInput() being done\nfirst, since this is the mechanism to set up the new input focus,\nand windowGainedFocus() is just updating the IME visibility state\nafter that is done.  However, by doing the startInput() first, that\nmeans in the case where we are going to hide the IME we must first\nwait for the IME to re-initialize editing on whatever input has\nfocus in the new window.\n\nTo address this, the change here tries to find a half-way point\nbetween the two.  We now do startInput() after windowGainedFocus()\nonly when this will result in the window being hidden.\n\nIt is not as easy as that, though, because these are calls on to\nthe system service from the application.  So being able to do that\nmeant a fair amount of re-arranging of this part of the protocol\nwith the service.  Now windowGainedFocus() is called with all of\nthe information also needed for startInput(), and takes care of\nperforming both operations.  The client-side code is correspondingly\nrearranged so that the guts of it where startInput() is called can\ninstead call the windowGainedFocus() entry if appropriate.\n\nSo...  in theory this is safer than the previous change, since it\nshould not be impacting the behavior as much.  In practice, however,\nwe are touching and re-arranging a lot more code, and \"should\" is\nnot a promise.\n\nChange-Id: Icb58bef75ef4bf9979f3e2ba88cea20db2e2c3fb\n"
    },
    {
      "commit": "3f0c58eb708ca520e84396fe764147800395812f",
      "tree": "550651c9789b6950c1e3cc8e1c90fe084ba3ca71",
      "parents": [
        "525ece4098a636818148dd5a660ebe4d7a2138af",
        "2561b0b10a55841a08e0e1d467e73e10b1bf256d"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Fri Feb 24 10:53:42 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 24 10:53:42 2012 -0800"
      },
      "message": "Merge \"New notification priority and related APIs.\""
    },
    {
      "commit": "2561b0b10a55841a08e0e1d467e73e10b1bf256d",
      "tree": "707a5812a2d6a711838babe41fd4947b96f13649",
      "parents": [
        "c725a3705ba8646e134091981e84da99fe4076b1"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Mon Feb 13 21:04:12 2012 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Fri Feb 24 13:47:00 2012 -0500"
      },
      "message": "New notification priority and related APIs.\n\nThis change introduces a few new bits of data on\nNotification that will help the Notification Manager and\nSystem UI route and display them more intelligently:\n\n -\u003e priority: an integer in a predefined range that\n    indicates the app\u0027s best guess as to the relative\n    importance (to the user, right now) of that information\n\n -\u003e kind: a tag (really, set of tags) indicating the general\n    type of notification (realtime, asynchronous, etc)\n\n -\u003e extras: a Bundle of additional key/value pairs\n    associated with this notification (currently @hidden)\n\nThe notification manager takes these data into account when\nassigning to each notification a score which is passed with\nthe notification on to the system UI, where it can be used to\naffect presentation. For example:\n\n  - Spammy apps (identified explicitly by the user or by\n    some other means) will have their notifications scored\n    very negatively by the notification manager, allowing\n    the UI to suppress them\n  - Notifications of higher score might be shown larger\n    or in a different way\n  - Very important notifications (indicated by a very high\n    score) might interrupt the user during an otherwise\n    important task (videochat, game, etc)\n\nImplementation note: This replaces/extends the old internal\nnotion of \"priority\", which was mostly used to organize\nongoings and system notifications at the top of the panel.\n\nChange-Id: Ie063dc75f198a68e2b5734a3aa0cacb5aba1ac39\n"
    },
    {
      "commit": "42d840b91d161fe98ebe3305f011b3b0f6d4561c",
      "tree": "9aa85d13cc18f6a1c6ce597ab2e9ff50d0f67201",
      "parents": [
        "6caa03004df8bfc7f4718c2afecf56b0b59fa764",
        "57c7fd5a43237afc5e8ef31a076e862c0c16c328"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Feb 23 19:04:41 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 23 19:04:41 2012 -0800"
      },
      "message": "Merge \"Fixing issues with the AccessibilityNodeInfo cache.\""
    },
    {
      "commit": "57c7fd5a43237afc5e8ef31a076e862c0c16c328",
      "tree": "4edfd7d14db15e115089e73dc06aebfce69eb79e",
      "parents": [
        "0d04e245534cf777dfaf16dce3c51553837c14ff"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Feb 23 18:31:39 2012 -0800"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Feb 23 18:51:04 2012 -0800"
      },
      "message": "Fixing issues with the AccessibilityNodeInfo cache.\n\n1. Before there were two caches one in the app process that\n   kept track only the ids of infos that were given to a\n   querying client and one in the querying client that\n   holds the infos. This design requires precise sync\n   between the caches. Doing that is somehow complicated\n   since the app has cache for each window and it has\n   to intercept all accessibility events from that window\n   to manage the cache. Each app has to have a cache for\n   each querying client. This approach would guarantee that\n   no infos are fetched twice but due to its stateful nature\n   and the two caches is tricky to implement and adds\n   unnecessary complexity. Now there is only one cache in\n   the client and the apps are stateless. The client is\n   passing flags to the app that are a clue what nodes to\n   prefetch. This approach may occasionally fetch a node\n   twice but it is considerably simpler and stateless\n   from the app perspective - there is only one cache.\n   Fetching a node more than once does not cause much\n   overhead compared to the IPC.\n\nChange-Id: Ia02f6fe4f82cff9a9c2e21f4a36747de0f414c6f\n"
    },
    {
      "commit": "e639da7baa23121e35aa06d6e182558e0e755696",
      "tree": "7d956fc301eb1988a8646ff3a62786639a843da0",
      "parents": [
        "b8678d76c3e09d0d65255f3971b6112a48e19099"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 21 15:11:13 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 23 16:39:15 2012 -0800"
      },
      "message": "New development permissions.\n\nThese are permissions that an application can request, but won\u0027t\nnormally be granted.  To have the permission granted, the user\nmust explicitly do so through a new \"adb shell pm grant\" command.\n\nI put these permissions in the \"development tools\" permission\ngroup.  Looking at the stuff there, I think all of the permissions\nwe already had in that group should be turned to development\npermissions; I don\u0027t think any of them are protecting public APIs,\nand they are really not things normal applications should use.\n\nThe support this, the protectionLevel of a permission has been\nmodified to consist of a base protection type with additional\nflags.  The signatureOrSystem permission has thus been converted\nto a signature base type with a new \"system\" flag; you can use\n\"system\" and/or \"dangerous\" flags with signature permissions as\ndesired.\n\nThe permissions UI has been updated to understand these new types\nof permissions and know when to display them.  Along with doing\nthat, it also now shows you which permissions are new when updating\nan existing application.\n\nThis also starts laying the ground-work for \"optional\" permissions\n(which development permissions are a certain specialized form of).\nCompleting that work requires some more features in the package\nmanager to understand generic optional permissions (having a\nfacility to not apply them when installing), along with the\nappropriate UI for the app and user to manage those permissions.\n\nChange-Id: I6571785c6bb5f6b291862b7a9be584885f88f3a5\n"
    },
    {
      "commit": "b8678d76c3e09d0d65255f3971b6112a48e19099",
      "tree": "231096efd52582e1747f2378896122366ca17f6e",
      "parents": [
        "c42067d7d7a080ef87ba8a287a794955f98e195b",
        "210c1a262a18c301f218260a8e2727bd4ce04ac6"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 23 10:54:06 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 23 10:54:06 2012 -0800"
      },
      "message": "resolved conflicts for merge of 210c1a26 to master\n\nChange-Id: Ic44193e62215086c22225f2def5eee3159d26ae8\n"
    },
    {
      "commit": "5489e4af193e7e57ac5af4f6ea2632f5df5bda80",
      "tree": "5a570a8dd315f359f0364f97768142e42b07d6bd",
      "parents": [
        "5c9b4329f335b80ee3282b7ee1f1d27292173f24",
        "2f995a7eaa1aba2c038c698039ed6837dfe7e51e"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Feb 22 07:53:43 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 22 07:53:43 2012 -0800"
      },
      "message": "Merge \"- Consolidate all animations in a single place outside of layout loop. - Move mPolicy.startAnimationLw and mPolicy.finishAnimationLw into same method as mPolicy.animatingWindowLw. - Fix first parameter of performLayoutLockedInner(initial, ...) to pass true on initial pass.\""
    },
    {
      "commit": "0d04e245534cf777dfaf16dce3c51553837c14ff",
      "tree": "5ef4b779312394e890bfe5078901e896cc92591a",
      "parents": [
        "b6ad5b14cbb09f8a10c3155895337c773e7a850b"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Feb 21 13:46:36 2012 -0800"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Feb 21 17:09:09 2012 -0800"
      },
      "message": "Improving accessibility APIs used for UI automation.\n\n1. UiTestAutomationBridge was accessing the root node in the\n   active window by tracking the accessibility event stream\n   and keeping the last active window changing event. Now\n   the bridge is stateless and the root node is fetched by\n   passing special window and view id with the request to\n   the system.\n\n2. AccessibilityNodeInfos that are cached were not finished,\n   i.e. not sealed, causing exception when trying to access\n   their children or rpedecessors.\n\n3. AccessibilityManagerService was not properly restoring its\n   state after the UI automation bridge disconnects from it.\n   I particular the devices was still in explore by touch mode\n   event if no services are enabled and the sutomation bridge\n   is disconnected.\n\n4. ViewRootImpl for the focused window now fires accessibility\n   events when accessibility is enabled to allow accessibility\n   services to determine the current user location.\n\n5. Several missing null checks in ViewRootImpl are fixed since\n   there were scenraios in which a NPE can occur.\n\n6. Update the internal window content querying tests.\n\n7. ViewRootImpl was firing one extra focus event.\nbug:6009813\nbug:6026952\n\nChange-Id: Ib2e058d64538ecc268f9ef7a8f36ead047868a05\n"
    },
    {
      "commit": "01011c3d7ce4f76c1a76b33a04fc63da784ddbea",
      "tree": "8dcaf6f1e6ef5426631d2d88513fbd1218e8178b",
      "parents": [
        "2d559b5311be1cd909e5a445afe75a840688b822"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 21 13:54:21 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 21 13:54:21 2012 -0800"
      },
      "message": "Fix issue #6037252: Screen shifts after all apps are upgraded\n\nTwo things: (1) make sure the boot message is always positioned within\nthe entire unrestricted display, and (2) allow the dim background to go\non top of the nav bar when being used for the boot message (this latter\nis really a hack that should be more generally fixed in the future).\n\nChange-Id: I7261b044eb802a39cadff931b50a679ff18781d6\n"
    }
  ],
  "next": "2f995a7eaa1aba2c038c698039ed6837dfe7e51e"
}
