)]}'
{
  "log": [
    {
      "commit": "f40a02f85f112e4b78fcea6f0d0390bfad15c2e2",
      "tree": "cd28be557574a718cfbe089894313a354d670004",
      "parents": [
        "6db653355bbf79f4bfe666fb96262c0df2ec34aa",
        "54ac7a510245e5f00c16ff5595b6ae8d002c1c3b"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Apr 19 10:27:58 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 10:27:58 2012 -0700"
      },
      "message": "Merge \"Fix build\""
    },
    {
      "commit": "54ac7a510245e5f00c16ff5595b6ae8d002c1c3b",
      "tree": "d157fb8f805cabbba95b76afdd3ecf5e894173da",
      "parents": [
        "6c07ba8183edc593527335238a2c6083392df7bc"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Apr 19 10:26:34 2012 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Apr 19 10:26:34 2012 -0700"
      },
      "message": "Fix build\n\nChange-Id: I1968e0d7d25f613fa6cf72f82d79f17224e3d5ab\n"
    },
    {
      "commit": "76eb1032d8bb1580469563a79c36849c8b0a3cb3",
      "tree": "a4a74365f96c247c4c9e09d2bdd17010b49e08f1",
      "parents": [
        "1bf4d5f24e2f958a7045598f9263e6bfc526fbdb",
        "de6198ebd7f9ea5b7940d38bf5839dfbc6a192c4"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Apr 19 10:07:35 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 10:07:35 2012 -0700"
      },
      "message": "Merge \"Defer the Surface.show until animation phase.\""
    },
    {
      "commit": "de6198ebd7f9ea5b7940d38bf5839dfbc6a192c4",
      "tree": "abef5acb9f2da446b37d59e6210f50c265af792b",
      "parents": [
        "b7c30a847ae3526cee28e2e3e96b010a6fe7961c"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Apr 19 09:59:31 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Apr 19 09:59:31 2012 -0700"
      },
      "message": "Defer the Surface.show until animation phase.\n\nThis fixes a rotation bug introduced by delaying rendering animation\ninto the Surface. Now instead of delaying the rendering we delay the\nshow by eliminating a point where we were showing the Surface too soon.\n\nChange-Id: I63ad3b494963111ffc96569093c8d43517c5408b\n"
    },
    {
      "commit": "66e69db6d99dd1c1a3906ae1b941ea13703f73b5",
      "tree": "1db8790cf72d00b1eb815c00612bbe07b9362288",
      "parents": [
        "d38e766e5ed461fcce96cf055ee0de7050126b01",
        "3ef889bf561e59561ff2c6c4b2ffb586b9c5af5c"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Apr 19 09:57:02 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 09:57:02 2012 -0700"
      },
      "message": "Merge \"Add user control to turn on/off nsd\""
    },
    {
      "commit": "3ef889bf561e59561ff2c6c4b2ffb586b9c5af5c",
      "tree": "34ce74d073837ee4c351753b50d401f209d1fa41",
      "parents": [
        "c5cbcb51baaf2e9e61f3bdbd5ef97a05aac25010"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Tue Apr 17 23:15:29 2012 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Apr 19 09:52:09 2012 -0700"
      },
      "message": "Add user control to turn on/off nsd\n\nChange-Id: Ide3cc20adb21ac6dffaf6b9b9136d77a129afa3b\n"
    },
    {
      "commit": "0da673f02e542c644c300568807c80e196296860",
      "tree": "3792b57fe26674eec61df907a3da4eda4852ede1",
      "parents": [
        "f7a1956b06faeb6025fdea331f81d66edda58b3c"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Apr 11 12:33:16 2012 -0400"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Apr 19 11:39:49 2012 -0400"
      },
      "message": "Notifications may now be disabled on a per-package basis.\n\nWhen a package\u0027s ability to post notifications is disabled,\nall outstanding notifications from that package are\nimmediately canceled, and the score of any future\nnotification from that package is set so low that the\nnotification manager won\u0027t even send it to the status bar.\n\nNo UI for this yet, but you can try it out:\n\n  adb shell service call notification 8 s16 $PKG i32 (1|0)\n\nBug: 5547401\n\nChange-Id: Ieccac5746b40f60debd902a45d1dedbc91dcdc89\n"
    },
    {
      "commit": "08ce91a1a4c4b69a30a46095ed701d804dd6302e",
      "tree": "38aabc729384a307e2ec927b85a2559c2e41647f",
      "parents": [
        "4a900a6b488862919728306ead3fac05a04c3bcb",
        "7eda9de1a638e4ed1ce5dc65fecd673400b9f3c0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Wed Apr 18 20:45:45 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 18 20:45:45 2012 -0700"
      },
      "message": "am 7eda9de1: am 2fe57183: am 30eec832: Merge \"Transparent activity orientation problem when previous landsacpe fullscreen activity not yet destroyed.\"\n\n* commit \u00277eda9de1a638e4ed1ce5dc65fecd673400b9f3c0\u0027:\n  Transparent activity orientation problem when previous landsacpe fullscreen activity not yet destroyed.\n"
    },
    {
      "commit": "7f58b95f7c2bd75a991ec6a2f05676aaba47a544",
      "tree": "36d1ad2fb38dac8159d89e83896e97ec3ff0b2d9",
      "parents": [
        "f01d3dd710e8b86b3e2846af62835158fd4e0db1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 18 12:59:29 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 18 14:58:03 2012 -0700"
      },
      "message": "Fix to custom scale animations.\n\nThese now do something reasonable when performing transitions\nacross two activities that are both on top of the wallpaper.\n\nFixed computation of the pivot point of the animations.\n\nFixed issue where the recents panel was considered a status\nbar element for purposes of deciding if the animating elements\nare obscured by the status bar, which would result in us not\nrunning the animation correctly.\n\nChange-Id: I4b9b588b80243463e6f087a9703ee886ee281630\n"
    },
    {
      "commit": "f01d3dd710e8b86b3e2846af62835158fd4e0db1",
      "tree": "a644bb5682a50cb0585bc6052fb962d8794e5608",
      "parents": [
        "f35ea5d25b286e166bdc43a589a45b56b6358499",
        "005b83b0c62d3d0538f0d566b08bd457015ec661"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 18 14:14:37 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 18 14:14:37 2012 -0700"
      },
      "message": "Merge \"Adding some more gestures and actions for accessibility.\""
    },
    {
      "commit": "f35ea5d25b286e166bdc43a589a45b56b6358499",
      "tree": "c15eec8fd7f17d686318f0c1634e277af1d48837",
      "parents": [
        "f341e5545c8ac8ccec26ec549d57d2ddee069f55",
        "9546e457fcfed1da9448d72758642793d9e271bb"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Apr 18 14:12:22 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 18 14:12:22 2012 -0700"
      },
      "message": "Merge \"Delay rendering into Surface until draw completed.\""
    },
    {
      "commit": "9546e457fcfed1da9448d72758642793d9e271bb",
      "tree": "206f44a853d1903f9aee1b959b9cef13918ad872",
      "parents": [
        "a51a9564fd53b661446cd63eea23208656acc678"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Apr 18 14:04:38 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Apr 18 14:04:38 2012 -0700"
      },
      "message": "Delay rendering into Surface until draw completed.\n\nHold off on updating surface with animation until the Surface draw has\ncompleted. Previously we were calling Surface.setAlpha/setLayer/\nsetMatrix prior to the app drawing into the surface. This fixes a bug\nthat caused a flash of the target animation image before the animation\nhad begun.\n\nChange-Id: Id9142e09b0b22d631dc002eba4dc787455dea03a\n"
    },
    {
      "commit": "005b83b0c62d3d0538f0d566b08bd457015ec661",
      "tree": "d83728a70e5a25f14289fafd0654b2e35c2c07e6",
      "parents": [
        "b3830f6737bb17185e2e1c95f4dcde9ce82ac7e4"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Apr 16 18:17:17 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 18 13:43:55 2012 -0700"
      },
      "message": "Adding some more gestures and actions for accessibility.\n\n1. Added more gesture for accessibility. After a meeting\n   with the access-eng team we have decided that the current\n   set of gestures may be smaller than needed considering\n   that we will use four gestures for home, back, recents,\n   and notifications.\n\n2. Adding actions for going back, home, opening the recents,\n   and opening the notifications.\n\n3. Added preliminary mapping from some of the new gestures\n   to the new actions.\n\n4. Fixed a bug in the accessibility interaction controller\n   which was trying to create a handled on the main looper\n   thread which may be null if the queried UI is in the\n   system process. Now the context looper of the root view\n   is used.\n\n5. Fixed a bug of using an incorrect constant.\n\n6. Added a missing locking in a couple of places.\n\n7. Fixed view comparison for accessibilityt since it was\n   not anisymmetric.\n\nbug:5932640\nbug:5605641\n\nChange-Id: Icc983bf4eafefa42b65920b3782ed8a25518e94f\n"
    },
    {
      "commit": "e7d9cd363d6095d37ca25d393c5e86067d3cc5e5",
      "tree": "58dc6cd7926ba1c3cf5d8685e4363ce12d6b74dc",
      "parents": [
        "23a2ce1fad31fc8467f3f53d39428e2d1f0a000e",
        "15ec7d6d7f23ec197a88619b5e03320cfebd2240"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Apr 18 12:22:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 18 12:22:49 2012 -0700"
      },
      "message": "Merge \"Add ALLOW_METERED column to DownloadManager.\""
    },
    {
      "commit": "15ec7d6d7f23ec197a88619b5e03320cfebd2240",
      "tree": "7451becce140741cc122da92f5d1443f89125cb7",
      "parents": [
        "70544533aec6b318ff1687c9eec0cb9e86ce1b1a"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Apr 17 12:23:40 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Apr 18 10:12:09 2012 -0700"
      },
      "message": "Add ALLOW_METERED column to DownloadManager.\n\nAlso allow isActiveNetworkMetered() to inspect networks without\nrequiring ACCESS_WIFI_STATE.\n\nBug: 3001465\nChange-Id: Ibc23577d4ad941e4f93db417be6b046881dcbfb1\n"
    },
    {
      "commit": "3cdfcdc1c4802ecc2f0eb6beb6f7bdb714a85d2d",
      "tree": "e464a11dfd8ddc0fd3a54f2a3967c98c3b5f3dd3",
      "parents": [
        "f52b6ede246cbf3d453d9c7093fa02d145e031ad",
        "95a6a96e1cfb79b1960bb2a9e6bc22d9d8e5a238"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Apr 18 10:04:28 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 18 10:04:28 2012 -0700"
      },
      "message": "Merge \"Fix an NPE when launching an activity that\u0027s not found.\""
    },
    {
      "commit": "95a6a96e1cfb79b1960bb2a9e6bc22d9d8e5a238",
      "tree": "fa666cab47aef05e74abf5e55b6cb52cf6a10d1b",
      "parents": [
        "d7f256dd2f31ec74c8154f783a660dfe3e55b036"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Apr 18 09:54:43 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Apr 18 09:54:43 2012 -0700"
      },
      "message": "Fix an NPE when launching an activity that\u0027s not found.\n\nBug: 6356194\nChange-Id: I66aeeda3ecab36a4aa32fb78c1d0559a73cd9a7a\n"
    },
    {
      "commit": "0445bc6e4eeba8af74e7eea7c9d68e1ede74f90d",
      "tree": "65cc73ea68caa5aebf00a0260913e3a4479193a7",
      "parents": [
        "544f89aece46e8f4bbe4eed93116c8736e68ac07"
      ],
      "author": {
        "name": "p13451",
        "email": "cheoloh.park@gmail.com",
        "time": "Wed Apr 18 15:13:26 2012 +0900"
      },
      "committer": {
        "name": "p13451",
        "email": "cheoloh.park@gmail.com",
        "time": "Wed Apr 18 15:13:26 2012 +0900"
      },
      "message": "Transparent activity orientation problem when previous landsacpe fullscreen activity not yet destroyed.\n\nAfter terminating landsacpe fullscreen activity,\nwhen user launch transparent activity via portrait home app, transparent activity is shown as landscape mode.\n\nAt this time AppWindowToken of previous acitivity has not been deleted, because Activity.onDestory() has not been returned yet.\nIn this case, getOrientationFromAppTokensLocked() returned ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE.\n\nIgnore hidden application is terminated on the top.\nSee also http://code.google.com/p/android/issues/detail?id\u003d28927\n\nChange-Id: I51239431120ec6ba8f8ff76871efb2347b9810ca\n"
    },
    {
      "commit": "420489ca1f92b290f4737fb675bfd3db9cdbed29",
      "tree": "f77b82c1d51a6ef84858397b29cdd494949f1f72",
      "parents": [
        "4db3ca7f814c54ca80211053c583df5163237a60",
        "6ec6f79e1ac1714e3b837796e99f07ff88f66601"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 17:59:03 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 17:59:03 2012 -0700"
      },
      "message": "Merge \"Support loading keyboard layout overlays from resources.\""
    },
    {
      "commit": "6ec6f79e1ac1714e3b837796e99f07ff88f66601",
      "tree": "02aa55617bfa6dd2eb0bec29156e279c8afaaa0d",
      "parents": [
        "a3bc565882dd3984e995363642b1295fe3d24d10"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 16:52:41 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 17:56:32 2012 -0700"
      },
      "message": "Support loading keyboard layout overlays from resources.\n\nAdded the concept of a keyboard layout overlay, which is\na key character map file that has \"type OVERLAY\".\n\nAdded support for loading keyboard layout overlays from\nresources dynamically.  The layouts are reloaded whenever they\nare changed in the Settings application or an application\nis installed.  This is somewhat more aggressive than necessary\nso we might want to optimize it later.\n\nBefore system-ready, the input system uses just the generic\nkeyboard layouts that are included on the device system image.\nAfter system-ready, it considers the user\u0027s selected keyboard\nlayout overlay and attempts to load it as necessary.  We need to\nwait until system-ready before doing this because we need to\nbe in a state where it is safe to start applications or access\ntheir resources.\n\nBug: 6110399\nChange-Id: Iae0886d3356649b0d2440aa00910a888cedd8323\n"
    },
    {
      "commit": "a51a9564fd53b661446cd63eea23208656acc678",
      "tree": "08b84aa11dd9b02309c1fa6508d2fd73e16e033d",
      "parents": [
        "c843642fbb76619520f960043adaa268e252a657"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Apr 17 17:05:26 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Apr 17 17:25:50 2012 -0700"
      },
      "message": "Add call-stack reporting methods into Debug\n\nAdded two public methods to Debug. These methods return a String\nindicating the caller (getCaller()) or callers (getCallers(int depth))\nof the calling method. The String indicates the class, method and line\nnumber of the caller(s). Similar to using Throwable.fillInStackTrace()\nbut much more concise.\n\nChange-Id: I53d0085aa50e4501d28e8eb3ad5b91ef700ac218\n"
    },
    {
      "commit": "c843642fbb76619520f960043adaa268e252a657",
      "tree": "1309dae3f15c0a60c3d8658dd632d80c2d7c0cdb",
      "parents": [
        "26c246a3f12553c9c4667d7ee32ce137638a9b07",
        "acaf9cca865902e6f1823e771f4234bfda53cfd1"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Apr 17 13:18:45 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 13:18:45 2012 -0700"
      },
      "message": "Merge changes I4752bdf1,I37690cf2\n\n* changes:\n  Move Surface operations into existing transaction.\n  Clear orientation variable until rotation is done.\n"
    },
    {
      "commit": "d95ce04bdc92fe337c929c0dca9366fde7a564d2",
      "tree": "53c8f546e9fbb9bc7fa8303b53757809cd3f934f",
      "parents": [
        "0192e966ff9df6d8da2a07e26f06fedcc8fdafbd",
        "a4a54e2a5f383e766bfecaec776e0b00002badd1"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Apr 17 11:55:54 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 11:55:54 2012 -0700"
      },
      "message": "Merge \"Make sure persistent processes are not replicated for secondary users.\""
    },
    {
      "commit": "acaf9cca865902e6f1823e771f4234bfda53cfd1",
      "tree": "c8cdd65aee8e7ad38b1842ab69a259c7ffeec1c2",
      "parents": [
        "3255a28b6a18bb97f0e533dc1673c5e28837b4f2"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Apr 17 11:45:25 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Apr 17 11:55:00 2012 -0700"
      },
      "message": "Move Surface operations into existing transaction.\n\nSeveral Surface operations - notably setPosition, setSize, and show -\nhad been moved outside of a Surface.openTransaction/closeTransaction\nwindow. This corrects that problem.\n\nIn addition, before animations were separated from layout the Surface\nframe was computed prior to returning from relayoutWindow(). After\nseparation the frame was being computed during animation. This checkin\nrestores the frame calculation in layout.\n\nFixes bug 6343291.\n\nChange-Id: I4752bdf1fed0f2b46c5eb9508825c9b1b0fd702f\n"
    },
    {
      "commit": "0192e966ff9df6d8da2a07e26f06fedcc8fdafbd",
      "tree": "052da9d7fe8f6a55ea1b314950abba66950cd0d9",
      "parents": [
        "1645ee2473e6264d83122ed262e1f7485541c995",
        "a3bc565882dd3984e995363642b1295fe3d24d10"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 11:52:29 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 11:52:29 2012 -0700"
      },
      "message": "Merge \"Add persistence for selected keyboard layout.\""
    },
    {
      "commit": "a3bc565882dd3984e995363642b1295fe3d24d10",
      "tree": "e2894e12724075687867545d988c0eae4769b8e5",
      "parents": [
        "4481d9c10ceaf3b886fb5cab1d20941932af5b0f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 11:42:25 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 11:42:25 2012 -0700"
      },
      "message": "Add persistence for selected keyboard layout.\n\nBug: 6110399\nChange-Id: I99544bf05e9755385bee478b5f047ccec2e5cae3\n"
    },
    {
      "commit": "a4a54e2a5f383e766bfecaec776e0b00002badd1",
      "tree": "5ca5b9edf7ab887e69bb452e20e59eaef82e0363",
      "parents": [
        "455b7bb83ce4a12a72f5b8341eda19754d582293"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Apr 16 15:44:19 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Apr 17 11:41:30 2012 -0700"
      },
      "message": "Make sure persistent processes are not replicated for secondary users.\n\nAn intent is launched in a singleton process if the process is persistent\nand the resolved activity/service/etc is not requested to run in a different\nprocess.\n\nChange-Id: I1463e73a76bc8bde4185f9cf4395edb47515841d\n"
    },
    {
      "commit": "2e3dec5aebb2020a9107e847659af5aaf7215f66",
      "tree": "c08d5f030875103dbba110d315fef673c789b4b0",
      "parents": [
        "70eafab9050601f869c21bf3aebc4f58737b7026",
        "92784670c48759c0db604ddb95c05a7b9bdebed8"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Tue Apr 17 11:39:08 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 11:39:08 2012 -0700"
      },
      "message": "Merge \"Open network service discovery API\""
    },
    {
      "commit": "55a28720fe7ecb100a8068d818c6055678e85ed5",
      "tree": "c8b89de8a403ae0e6b1acb7e17b44eee13a2f925",
      "parents": [
        "14c92b8f8448b33c2f76e21ec67461f59d3ec2a5",
        "31725b3f387dacf018804e3c500d693261f1d994"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Apr 16 19:30:45 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 19:30:45 2012 -0700"
      },
      "message": "Merge \"Fixing a regression I have introduced.\""
    },
    {
      "commit": "31725b3f387dacf018804e3c500d693261f1d994",
      "tree": "0ade8e6ca8a5672118cc4ef6aff9f7b211d146db",
      "parents": [
        "3cb889caa3726256bd00976c2662f51a14d91d49"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Apr 16 19:28:22 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Apr 16 19:29:43 2012 -0700"
      },
      "message": "Fixing a regression I have introduced.\n\nbug:6344558\n\nChange-Id: Ie726e091942e337962baa052953002be724068b1\n"
    },
    {
      "commit": "e1531a65a93cfad27ff2ef743456a9b57a14cc7b",
      "tree": "82cb6880baf7d6806ab8c8119022c46150d2ffe5",
      "parents": [
        "21d1251637e0b0e23583e8c80d4437fe7e5e57d3",
        "60792375761c0b2aed11f7f2ccb60c2e59f9fec1"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Mon Apr 16 19:24:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 19:24:55 2012 -0700"
      },
      "message": "Merge \"Log messages in dump\""
    },
    {
      "commit": "ac76e72272c957dc7609aa68224efa2d32c23cd0",
      "tree": "3fb89e515da0aabcfedddf871aa92ee0b1173c38",
      "parents": [
        "2c2ab0e07106942ee64dd66d6efa71e70b336b0d",
        "eabfb3a36e9469c5e219f92b39b7200104319185"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 16 17:34:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 17:34:25 2012 -0700"
      },
      "message": "Merge \"Add new scale-up window manager animation.\""
    },
    {
      "commit": "eabfb3a36e9469c5e219f92b39b7200104319185",
      "tree": "ef38c351e0d5f6b1a60b514c78a4396e3a2c20a6",
      "parents": [
        "455b7bb83ce4a12a72f5b8341eda19754d582293"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 16 16:28:22 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 16 17:32:50 2012 -0700"
      },
      "message": "Add new scale-up window manager animation.\n\nLike zoom thumbnail, but without the thumbnail.\n\nChange-Id: I9486dd204398b87c9e70ff0d05d03f4a22449cd6\n"
    },
    {
      "commit": "60792375761c0b2aed11f7f2ccb60c2e59f9fec1",
      "tree": "75f399a0ffce95a2dcc618c7f3250d81d9dcfe29",
      "parents": [
        "d4fecc2567ca54427b9c86900bccbc7103ea8fde"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Mon Apr 16 16:47:10 2012 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Mon Apr 16 16:47:10 2012 -0700"
      },
      "message": "Log messages in dump\n\nRemove event logging and add messages in dump\n\nChange-Id: Ic79c68443bac9b7257644ed6941853f44a9b0661\n"
    },
    {
      "commit": "3255a28b6a18bb97f0e533dc1673c5e28837b4f2",
      "tree": "e3d046bdfb0f16ce95f58d2e326d1a5db3af1947",
      "parents": [
        "a0e9d0f60eb33e480be7e02b08863be588f4df7d"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Apr 16 15:42:47 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Apr 16 15:52:48 2012 -0700"
      },
      "message": "Clear orientation variable until rotation is done.\n\nIn the old code orientationChangeComplete was set to true on each pass\nthrough perfomLayout. If any window was rotating the variable was set\nto false on the way through the performLayout. Since we can now make\npasses through performLayout before any animation step occurs we were\nseeing mOrientationChangeComplete true prior to rotation completing.\n\nThis change sets mOrientationChangeComplete false at the start of a\nrotation and sets it to true if we ever get through an animation step\nwithout encountering any rotating windows.\n\nChange-Id: I37690cf20868dfbaac94a81640bc4d9cb9fb8f00\n"
    },
    {
      "commit": "9704e78418a1ed9927ac2596a5c0084953dcb22b",
      "tree": "210fd93e313e4cd5bee2dfa86c06d0dda5cd2910",
      "parents": [
        "1c23ed621893c49db56a6d687112bdbaf8ef0200",
        "25157e458d6e10b027d1ba6b78b0487156c9f57a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 16 15:46:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 15:46:47 2012 -0700"
      },
      "message": "Merge \"Refactor SensorManager to move non-API bits into a subclass.\""
    },
    {
      "commit": "8206525b242ceb012d882849c4e355223ba81b9d",
      "tree": "f68d13cb8dc96e9532d7fc745f3e7b3b473fc710",
      "parents": [
        "70544533aec6b318ff1687c9eec0cb9e86ce1b1a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 16 13:19:05 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 16 13:19:05 2012 -0700"
      },
      "message": "Fix lock ordering bug due to use of reentrant lock.\n\nBug: 6340736\nChange-Id: I4dc738da8c976182669b89af9dcb6fd11dcb0223\n"
    },
    {
      "commit": "25157e458d6e10b027d1ba6b78b0487156c9f57a",
      "tree": "efa43a5f2f1ec18fef855b56c3f6b99442375c64",
      "parents": [
        "a5d552fc2bad6aea2087f56e88fb1ce836a79571"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 16 12:13:05 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 16 13:03:55 2012 -0700"
      },
      "message": "Refactor SensorManager to move non-API bits into a subclass.\n\nChanged the SensorManager class so that it only contains API-related\nbits including what\u0027s needed to support legacy sensors.  Mostly just\nmoved stuff around.  Making the class abstract is safe because\nit does not have a visible constructor in the API.\n\nOne minor change is that the cache of sensor type to sensor lists\nis now per instance of SensorManager instead of being static.\nWe can fix this if desired.\n\nAnother small change is that we bail out early from registerListener\nif the listener has already been registered for the particular\nsensor.  This happened for both legacy and standard listeners.\nThe problem is that the ListenerDelegate maintains two lists of\nsensors, one is a Map and the other is a List.  Adding a sensor\ntwice causes one entry to be added to the Map and two entries to be\nadded to the List, but when the sensor is removed the next time, only\none entry is removed from the List, leaving it in an inconsistent\nstate.\n\nRemoved Sensor.getLegacyType() since the value it provides is only\nneeded in LegacyListener and we don\u0027t really save any significant\ncomputation by caching it.  Removing the field makes support for\nlegacy sensors a little more self-contained.\n\nBug: 6339552\nChange-Id: I50d41ac97cf535924f2bfa2026d28547a4d00286\n"
    },
    {
      "commit": "123328778e99b5bbc68b80ab8efc43ca506a6a2c",
      "tree": "6e5dc502371322b0041a6a44c560f92387ca05d7",
      "parents": [
        "c0e5b8c7fab8d02e8a9cbae7a4e32f5176001712",
        "234766a36af6214644fa8205202287084ca9cf93"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 16 12:11:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 12:11:21 2012 -0700"
      },
      "message": "Merge \"Move TrafficStats iface counters to xt_qtaguid.\""
    },
    {
      "commit": "6e0ac89f3896369363698801e75671b3478e8d4f",
      "tree": "d89c64c0d6735757827f54e48ffced416c3bd16c",
      "parents": [
        "7bf8fba6f0e0fe8072201a0b174727b905437990",
        "ddf322915ba87ef0bf604406ae441c63b371fda0"
      ],
      "author": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Mon Apr 16 11:23:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 11:23:55 2012 -0700"
      },
      "message": "Merge \"Find new recognizer if old one is gone\""
    },
    {
      "commit": "7bf8fba6f0e0fe8072201a0b174727b905437990",
      "tree": "7b38d7d9bc0b8aa73d5fc472152ff4966cf0ba14",
      "parents": [
        "a5d552fc2bad6aea2087f56e88fb1ce836a79571",
        "9f7cbf0e50bcb7e9163b23524814003ba8784732"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 16 11:22:22 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 11:22:22 2012 -0700"
      },
      "message": "Merge \"API to report if active network is metered.\""
    },
    {
      "commit": "9f7cbf0e50bcb7e9163b23524814003ba8784732",
      "tree": "d9647d60bbe2f5f00142c72b6aef841f8dad4718",
      "parents": [
        "a94afeb5b3c3c95c6d2cf0cd4d69587aba569cfb"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Apr 12 18:34:54 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 16 11:20:27 2012 -0700"
      },
      "message": "API to report if active network is metered.\n\nReport to developers if active network is \"metered\" and define it\nas the user being sensitive to heavy data usage.\n\nBug: 3001465\nChange-Id: I855ca3cd3eb1de3c4814148d70ccf24957af898a\n"
    },
    {
      "commit": "ddf322915ba87ef0bf604406ae441c63b371fda0",
      "tree": "bc90e868c6901eabc86bd3ad312b2e58dc08ea44",
      "parents": [
        "32f038deabc516cb9e1420eee300a581c5692460"
      ],
      "author": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Mon Apr 16 18:16:37 2012 +0100"
      },
      "committer": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Mon Apr 16 18:16:37 2012 +0100"
      },
      "message": "Find new recognizer if old one is gone\n\nBefore, RecognitionManagerService just cleared the recognizer\nsetting, which the Settings app really doesn\u0027t like.\n\nBug: 6332933\nChange-Id: If4f9b583c304c5ea99021dddda50fca55e3ac541\n"
    },
    {
      "commit": "a0e9d0f60eb33e480be7e02b08863be588f4df7d",
      "tree": "0d64372a2e18609d35973e424656367731e6c72f",
      "parents": [
        "32f038deabc516cb9e1420eee300a581c5692460",
        "7d8df3905d294127cc58100912a57c816bfb2502"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Apr 16 08:39:32 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 08:39:32 2012 -0700"
      },
      "message": "Merge \"Animate from Choreographer only.\""
    },
    {
      "commit": "92784670c48759c0db604ddb95c05a7b9bdebed8",
      "tree": "b7cc7829b366f64e6bf9e8b200c2e6d915d6e945",
      "parents": [
        "d4fecc2567ca54427b9c86900bccbc7103ea8fde"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Fri Apr 13 12:15:41 2012 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Sun Apr 15 17:09:48 2012 -0700"
      },
      "message": "Open network service discovery API\n\nAdd support for DNS based network service discovery API. This\nallows applications to discover and resolve applications on a\nlocal network such as Wi-Fi\n\nChange-Id: Ie89895edd35d12b7f7a23fb5fed36cb2b2079f7a\n"
    },
    {
      "commit": "313a93ddf9dce7bdda21f29c10a464dd303871da",
      "tree": "7ee8b68c0783affb2e7b0be1cdfed3132eaa63e8",
      "parents": [
        "011d778c9ff3c03184ce12dbd363d0f2f844de57",
        "3f99afc0d5c25321b870f95415d7f31e2b3ec934"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Sat Apr 14 18:43:53 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 14 18:43:53 2012 -0700"
      },
      "message": "Merge \"Close streams for forward-locked apps\""
    },
    {
      "commit": "3f99afc0d5c25321b870f95415d7f31e2b3ec934",
      "tree": "70f7f4de1948dc87379794f0d633b2c894437f4b",
      "parents": [
        "a94afeb5b3c3c95c6d2cf0cd4d69587aba569cfb"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Sat Apr 14 10:13:10 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Sat Apr 14 12:23:13 2012 -0700"
      },
      "message": "Close streams for forward-locked apps\n\nForward-locked apps aren\u0027t very prevalent, but it needed to be\nrestructured to make sure both streams and ZipFile objects are closed.\n\nChange-Id: I41f863224fecd24069e525e9ce3738de8237bd5e\n"
    },
    {
      "commit": "011d778c9ff3c03184ce12dbd363d0f2f844de57",
      "tree": "eb64402f2b11588239b0e890b088d7042b51583a",
      "parents": [
        "9688fea77ee5415749d4b2e71e05961b28e748d5",
        "8c11f1d6abbf322f4e0aca2a27a076ec1af1e071"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Sat Apr 14 12:16:58 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 14 12:16:58 2012 -0700"
      },
      "message": "Merge \"Add warning log for mismatched signatures\""
    },
    {
      "commit": "8c11f1d6abbf322f4e0aca2a27a076ec1af1e071",
      "tree": "b09871dd86fd995f7335eca79c8e36b48c3a3a38",
      "parents": [
        "a94afeb5b3c3c95c6d2cf0cd4d69587aba569cfb"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Sat Apr 14 12:10:38 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Sat Apr 14 12:11:40 2012 -0700"
      },
      "message": "Add warning log for mismatched signatures\n\nIt\u0027s difficult to see in bugreports when this situation arises. Add a\nsmall log so we can easily determine installation failure reason.\n\nChange-Id: Ie59c205cf731cad7b3d04ceb995e58a093c62455\n"
    },
    {
      "commit": "7d8df3905d294127cc58100912a57c816bfb2502",
      "tree": "98e4fac6ce73b4773314d564579dbe849531bab5",
      "parents": [
        "9688fea77ee5415749d4b2e71e05961b28e748d5"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Apr 06 15:26:23 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sat Apr 14 10:45:48 2012 -0700"
      },
      "message": "Animate from Choreographer only.\n\nAnimation steps are now executed on a Thread launched from the\nChoreographer rather than being called at the end of the WindowManager\nlayout process. Animations and layout are still tightly coupled in\nthat they share considerable state information and neither can be\nexecuted without holding a lock on WindowServiceManager.mWindowMap.\n\nChange-Id: Ie17d693706971507b50aa473da1b7258e9e67764\n"
    },
    {
      "commit": "9688fea77ee5415749d4b2e71e05961b28e748d5",
      "tree": "991354ace9fadbaf4944bf17206e86ec19e0be9c",
      "parents": [
        "75bf74460d057c0e21d707061407844c22fb4113",
        "7f6c231a76f0bedaf9655a24707737d343244312"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 20:39:50 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 20:39:50 2012 -0700"
      },
      "message": "Merge \"Add setting to redirect vibrator to game controller.\""
    },
    {
      "commit": "7f6c231a76f0bedaf9655a24707737d343244312",
      "tree": "63eaaa6255f04d34dd125da1459d2b2e70753002",
      "parents": [
        "90aba7caac78b407347b930cfb6ff7d6658ac90a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 20:38:38 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 20:38:38 2012 -0700"
      },
      "message": "Add setting to redirect vibrator to game controller.\n\nBug: 6334179\nChange-Id: I70093e38824ea3e5cf9cf242d1d7b6d26115ed80\n"
    },
    {
      "commit": "dd0c13060dc385da3f264a3c08d766826565b6bf",
      "tree": "f8bdd116458a00be847c03f91404dd5172c8b54a",
      "parents": [
        "4213804541a8b05cd0587b138a2fd9a3b7fd9350",
        "854b2b1670bda1eeb87a14b7ac3d222024f0aad6"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Apr 13 20:15:54 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 20:15:54 2012 -0700"
      },
      "message": "Merge \"Surface list of apps with given network policy.\""
    },
    {
      "commit": "854b2b1670bda1eeb87a14b7ac3d222024f0aad6",
      "tree": "86991bce25cb49406daf069ea1d5c9496d532790",
      "parents": [
        "a94afeb5b3c3c95c6d2cf0cd4d69587aba569cfb"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Apr 13 16:03:40 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Apr 13 19:46:33 2012 -0700"
      },
      "message": "Surface list of apps with given network policy.\n\nBug: 6007276\nChange-Id: I0f0e939ee6481496480c4afaa108c99eb158547c\n"
    },
    {
      "commit": "4213804541a8b05cd0587b138a2fd9a3b7fd9350",
      "tree": "6b19718ddbc60229cd4f2e059feea8021225c5e6",
      "parents": [
        "dbed083ff07f4e6fa727ea22cdd7d758291630c1"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Mar 20 11:51:39 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Apr 13 19:05:24 2012 -0700"
      },
      "message": "Accessibility focus - framework\n\nUsefulness: Keep track of the current user location in the screen when\n            traversing the it. Enabling structural and directional\n            navigation over all elements on the screen. This enables\n            blind users that know the application layout to efficiently\n            locate desired elements as opposed to try touch exploring the\n            region where the the element should be - very tedious.\n\nRationale: There are two ways to implement accessibility focus One is\n           to let accessibility services keep track of it since they\n           have access to the screen content, and another to let the view\n           hierarchy keep track of it. While the first approach would\n           require almost no work on our part it poses several challenges\n           which make it a sub-optimal choice. Having the accessibility focus\n           in the accessibility service would require that service to scrape\n           the window content every time it changes to sync the view tree\n           state and the accessibility focus location. Pretty much the service\n           will have to keep an off screen model of the screen content. This\n           could be quite challenging to get right and would incur performance\n           cost for the multiple IPCs to repeatedly fetch the screen content.\n           Further, keeping virtual accessibility focus (i.e. in the service)\n           would require sync of the input and accessibility focus. This could\n           be challenging to implement right as well. Also, having an unlimited\n           number of accessibility services we cannot guarantee that they will\n           have a proper implementation, if any, to allow users to perform structural\n           navigation of the screen content. Assuming two accessibility\n           services implement structural navigation via accessibility focus,\n           there is not guarantee that they will behave similarly by default,\n           i.e. provide some standard way to navigate the screen content.\n           Also feedback from experienced accessibility researchers, specifically\n           T.V Raman, provides evidence that having virtual accessibility focus\n           creates many issues and it is very hard to get right.\n           Therefore, keeping accessibility focus in the system will avoid\n           keeping an off-screen model in accessibility services, it will always\n           be in sync with the state of the view hierarchy and the input focus.\n           Also this will allow having a default behavior for traversing the\n           screen via this accessibility focus that is consistent in all\n           accessibility services. We provide accessibility services with APIs to\n           override this behavior but all of them will perform screen traversal\n           in a consistent way by default.\n\nBehavior:  If accessibility is enabled the accessibility focus is the leading one\n           and the input follows it. Putting accessibility focus on a view moves\n           the input focus there. Clearing the accessibility focus of a view, clears\n           the input focus of this view. If accessibility focus is on a view that\n           cannot take input focus, then no other view should have input focus.\n           In accessibility mode we initially give accessibility focus to the topmost\n           view and no view has input focus. This ensures consistent behavior accross\n           all apps. Note that accessibility focus can move hierarchically in the\n           view tree and having it at the root is better than putting it where the\n           input focus would be - at the first input focusable which could be at\n           an arbitrary depth in the view tree. By default not all views are reported\n           for accessibility, only the important ones. A view may be explicitly labeled\n           as important or not for accessibility, or the system determines which one\n           is such - default. Important views for accessibility are all views that are\n           not dumb layout managers used only to arrange their chidren. Since the same\n           content arrangement can be obtained via different combintation of layout\n           managers, such managers cannot be used to reliably determine the application\n           structure. For example, a user should see a list as a list view with several\n           list items and each list item as a text view and a button as opposed to seeing\n           all the layout managers used to arrange the list item\u0027s content.\n           By default only important for accessibility views are regared for accessibility\n           purposes. View not regarded for accessibility neither fire accessibility events,\n           nor are reported being on the screen. An accessibility service may request the\n           system to regard all views. If the target SDK of an accessibility services is\n           less than JellyBean, then all views are regarded for accessibility.\n           Note that an accessibility service that requires all view to be ragarded for\n           accessibility may put accessibility focus on any view. Hence, it may implement\n           any navigational paradigm if desired. Especially considering the fact that\n           the system is detecting some standard gestures and delegates their processing\n           to an accessibility service. The default implementation of an accessibility\n           services performs the defualt navigation.\n\nbug:5932640\nbug:5605641\n\nChange-Id: Ieac461d480579d706a847b9325720cb254736ebe\n"
    },
    {
      "commit": "90aba7caac78b407347b930cfb6ff7d6658ac90a",
      "tree": "a18918aeb2785b4ca801ee5319ed27973fdde49f",
      "parents": [
        "21e09bc4cbfd7d8f0e2f7ab5211a50339b1b8d20",
        "a47425a13c19f95057df78b8bb65bb25657e8753"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 17:34:20 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 17:34:20 2012 -0700"
      },
      "message": "Merge \"Add support for input devices that have vibrators.\""
    },
    {
      "commit": "75e0dcbca1fe6d218685c73829ae8c75a45b4920",
      "tree": "ad5514f90162d5acf11c47fd835a92a954a79976",
      "parents": [
        "8b2dd9c870ab81f35db8d8cd995c7f428c943e50",
        "c2346134bb519a54d50655cbef940fc3fdec60a9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 17:03:05 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 17:03:05 2012 -0700"
      },
      "message": "Merge \"Extract Vibrator implementation from interface.\""
    },
    {
      "commit": "a47425a13c19f95057df78b8bb65bb25657e8753",
      "tree": "675c0d6bf611f2427bb3d11315d410bf9087b20a",
      "parents": [
        "c2346134bb519a54d50655cbef940fc3fdec60a9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 04:09:27 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 17:01:15 2012 -0700"
      },
      "message": "Add support for input devices that have vibrators.\n\nAdded a getVibrator() method to InputDevice which returns a Vibrator\nassociated with that input device.  Its uses the same API as the\nsystem vibrator which makes it easy for applications to be modified\nto use one or the other.\n\nBug: 6334179\nChange-Id: Ifc7f13dbcb778670f3f1c07ccc562334e6109d2e\n"
    },
    {
      "commit": "10b6f68d484d19de418403e35589deea33f212b3",
      "tree": "5bde2f97f8a5c05e6cfe217e716acbf2b4749300",
      "parents": [
        "7358fbfeb2febb60085067fcacc192f429b06545",
        "5d32e772b3a19c1ac84e665f2885755427d590c8"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Apr 13 10:42:33 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 10:42:33 2012 -0700"
      },
      "message": "Merge \"Enforce READ_EXTERNAL on non-user builds.\""
    },
    {
      "commit": "7358fbfeb2febb60085067fcacc192f429b06545",
      "tree": "80cf176d7e9f8430a3b16867e1bd7f3d1b82ef5a",
      "parents": [
        "f804ba131b4f543ece1973126c0ae5d4b919ee8b"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Apr 12 21:06:33 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Apr 13 10:01:32 2012 -0700"
      },
      "message": "Minor cleanups.\n\n- Replace HashSet with ArrayList.\n- Check for Watermark and SurfaceSession initialization once, not every\n  time through layout.\n- Move watermark rendering into animation.\n- Add surface operation debugging.\n\nChange-Id: I4b7e7c0b8d89d43c67a42753832f90b8632d4f5d\n"
    },
    {
      "commit": "c2346134bb519a54d50655cbef940fc3fdec60a9",
      "tree": "6b86f97b2175bc2b0181cbf123e4f874867e7c91",
      "parents": [
        "069c4f3f0c8190289d60296ec54fafa56abb4776"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 01:55:38 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 04:05:17 2012 -0700"
      },
      "message": "Extract Vibrator implementation from interface.\n\nMoved the core logic of Vibrator into SystemVibrator, potentially\nallowing for the creation of other Vibrator subclasses.\n\nFixed several places where we were creating new Vibrator\ninstances unnecessarily instead of getting it from the Context.\n\nIt is safe to make Vibrator abstract because its constructor\nwas hidden from the SDK so it was not possible to subclass it.\n\nBug: 6334179\nChange-Id: I18ece6544c26a7efb2d5099f8346a10aef8a5e18\n"
    },
    {
      "commit": "5d32e772b3a19c1ac84e665f2885755427d590c8",
      "tree": "c6dd57611996b8ec3f2871fc7304d0f83ce920b6",
      "parents": [
        "9492947a5970325c494872324078b898868b9403"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Apr 12 15:59:23 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Apr 12 23:29:14 2012 -0700"
      },
      "message": "Enforce READ_EXTERNAL on non-user builds.\n\nEnable default enforcement of READ_EXTERNAL_STORAGE on non-user\nbuilds. Users can still explicitly enable enforcement in Settings.\n\nBug: 6131916\nChange-Id: I7dc66b624ad252ed2a2ad3647f3ea85dda7f8e82\n"
    },
    {
      "commit": "882735972e9e7ee52a3116a3aba0440968b2da1a",
      "tree": "be12d9a5d1f8608629d74382f6f1927eadcbbdb8",
      "parents": [
        "d4fecc2567ca54427b9c86900bccbc7103ea8fde",
        "af9e8d38184c6ba4d2d3eb5bde7014a66dd8a78b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 18:55:57 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 12 18:55:57 2012 -0700"
      },
      "message": "Merge \"Notify applications when input devices change.\""
    },
    {
      "commit": "af9e8d38184c6ba4d2d3eb5bde7014a66dd8a78b",
      "tree": "50cf9dd27d673bc5b3f75e6e18e9577873eecd6c",
      "parents": [
        "cc1169831921d9295b2fc01c1eaf7e9b00836f53"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 17:32:48 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 18:54:54 2012 -0700"
      },
      "message": "Notify applications when input devices change.\n\nThis change allows the InputManager to keep track of what input\ndevices are registered with the system and when they change.\nIt needs to do this so that it can properly clear its cache of\ninput device properties (especially the key map!) when changes\noccur.\n\nAdded new API so that applications can register listeners for\ninput device changes.\n\nFixed a minor bug in EventHub where it didn\u0027t handle EPOLLHUP\nproperly so it would spam the log about unsupposed epoll events\nuntil inotify noticed that the device was gone and removed it.\n\nChange-Id: I937d8c601f7185d4299038bce6a2934fe4fdd2b3\n"
    },
    {
      "commit": "67ae551272f2bc8ffe83ecd62e970f657dc965d5",
      "tree": "8d38b0feaf8a45217ef47d8811bbb14a947ada30",
      "parents": [
        "cbba37c6096486cbc8ce6f0c4eb7df9a352d54b1",
        "ff5b158f69bf453cf1fdedd175a09482c65f2bf2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 12 18:18:45 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 12 18:18:45 2012 -0700"
      },
      "message": "Merge \"Keep activities stopped while the lock screen is up.\""
    },
    {
      "commit": "cbba37c6096486cbc8ce6f0c4eb7df9a352d54b1",
      "tree": "381c4788296568fdeed935cd425eae245c0106c1",
      "parents": [
        "6c70ef1fb2efd705406d73272b87573900812aff",
        "817388e056a5d1d0e7cd7de2c6b0c9c80617bc5f"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Apr 12 17:55:15 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 12 17:55:15 2012 -0700"
      },
      "message": "Merge \"Bonjour fixes\""
    },
    {
      "commit": "ff5b158f69bf453cf1fdedd175a09482c65f2bf2",
      "tree": "d9eb803d3a4a88814757434a8c8ec6c6ffb67cf3",
      "parents": [
        "b0398f59aae2c72161ea20339efaa950a788c375"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 12 17:24:07 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 12 17:26:55 2012 -0700"
      },
      "message": "Keep activities stopped while the lock screen is up.\n\nTell the activity manager when the lock screen is shown, so it\ncan keep itself (mostly) in sleep mode during this time, having\nthe foreground actvities remain in their stopped state.\n\nChange-Id: I71c86d3298f23a98014d7ae36fd540c9df9a64e6\n"
    },
    {
      "commit": "0c2acffec8689f8721a454845b24a830bc37ce92",
      "tree": "5c4d68095376aabd3af04c4b7d2d78b9e9ea8c2b",
      "parents": [
        "ed4995d646252313323f648e44a9539d9384f901"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 12 15:17:07 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 12 15:26:11 2012 -0700"
      },
      "message": "Clean up lock screen hide animation.\n\nWe now have an animation to apply to the thing behind the lock\nscreen animation when it isn\u0027t on the wallpaper, which looks\nsimilar to the animation we use when both are on the wallpaper.\n\nIn implementing this, cleaned up the code to figure out up-front\nwhich animation to run, getting rid of that kludgy thing that\ncleared the window animation if the wallpaper was not being used\nfor the lower windows.\n\nChange-Id: Ifc4c8a8894ad384124dcf4bbdaab134f1157b0f3\n"
    },
    {
      "commit": "234766a36af6214644fa8205202287084ca9cf93",
      "tree": "81484fc9d4b9da4821544b2bebb44ff4f02aa637",
      "parents": [
        "9492947a5970325c494872324078b898868b9403"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Apr 10 19:48:07 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Apr 12 14:53:32 2012 -0700"
      },
      "message": "Move TrafficStats iface counters to xt_qtaguid.\n\nUse xt_qtaguid iface_stat_all counters, which are monotonic during\na single boot.\n\nTrack all ifaces associated with mobile networks since boot, and\nmove TrafficStats to using these ifaces.  This will include usage of\nnetworks omitted from config_data_usage_network_types, specifically\non devices that recycle network interfaces across APNs.\n\nSplit wildcard template matching, and move NetworkStatsService to\nuse mobile wildcard when logging stats.\n\nBug: 5324515\nChange-Id: I2211c374c05d1b598cc647f2f873630538955ffe\n"
    },
    {
      "commit": "187ae2105eb771e10ef54e0e9f2796e7fb7cb4e9",
      "tree": "85c9c1b4851fb7eb529fc96f3774bfe7dab4ded0",
      "parents": [
        "4f8b71e41d26538711920495242892839a1757f9"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 11 18:12:06 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 12 13:08:26 2012 -0700"
      },
      "message": "Revert to ICS screen rotation animation.\n\nChange-Id: Ida76f17a00e4c8ab828deae51095107e4eeaa321\n"
    },
    {
      "commit": "817388e056a5d1d0e7cd7de2c6b0c9c80617bc5f",
      "tree": "e37932441599a8363cc9b41c8da0f92330a78704",
      "parents": [
        "63c115c4aa2158ea18338a9fb2c2619755958ddc"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Wed Apr 11 14:52:19 2012 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Apr 12 12:08:51 2012 -0700"
      },
      "message": "Bonjour fixes\n\nChange-Id: I1df1dc470bb42c84abc7e1a46bedf9f206910b65\n"
    },
    {
      "commit": "2b23adbc33c888a2c9fa22dd2e967227baa27e5c",
      "tree": "4d7aa968bf1b475078ade41ec881c5397f7f51f8",
      "parents": [
        "b187d52f8adaad068997595118f32cb02d7a9013",
        "7463adacbd5ccb329b094c5343a0389f4872f5e7"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Apr 12 11:18:08 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 12 11:18:08 2012 -0700"
      },
      "message": "Merge \"Make dumpsys activity services work again.\""
    },
    {
      "commit": "7463adacbd5ccb329b094c5343a0389f4872f5e7",
      "tree": "7e4e6cf6e618ffc8e2020e4ce125c2727cbf5980",
      "parents": [
        "30ff5aecd751a2d5d6722c9ae96204eda2c3cbc4"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Apr 11 15:02:39 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Apr 12 10:41:19 2012 -0700"
      },
      "message": "Make dumpsys activity services work again.\n\nDue to the step to query the users, dumpsys was crashing when run\nas non-root. Clearing the calling identity after checking perms\nfixes this.\n\nBug: 6311443\nChange-Id: I0b0bca5c7305cea19adc772b3bfec34c16bb24c4\n"
    },
    {
      "commit": "a11236bf0908c5d02e7be24b97ec4cf9e63e33f3",
      "tree": "94d90b9cd0141c642bf552ae1af99514e580c260",
      "parents": [
        "5bd43d15373746544a1a2b4150252c969c5886b3",
        "1c27576aff247ff1d7789e0a571958726f161593"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Apr 11 19:11:35 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 19:11:35 2012 -0700"
      },
      "message": "Merge \"Include enforcement state in dumpsys.\""
    },
    {
      "commit": "1c27576aff247ff1d7789e0a571958726f161593",
      "tree": "c0f09dd5b6eb7fefaf76f0fc0dbc3bc917a950ee",
      "parents": [
        "5554b7082220d37496e30f39a0d9146afc177ab4"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Apr 11 19:07:08 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Apr 11 19:07:08 2012 -0700"
      },
      "message": "Include enforcement state in dumpsys.\n\nBug: 6323087\nChange-Id: I6d779798538c114ea9816d3bdbbff5552c285df6\n"
    },
    {
      "commit": "2f63cfda7645cf8ac6734b751fb9dcee42d6b302",
      "tree": "b899547ddd074006cdbe99b03ffa2e44897592c8",
      "parents": [
        "fe07820bf3bb87a0b44609833af791f01b942ede",
        "4ea7bfea312e4ddf815eabdef04d3f3b4878a51a"
      ],
      "author": {
        "name": "Justin Mattson",
        "email": "jmatt@google.com",
        "time": "Wed Apr 11 17:44:53 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 11 17:44:53 2012 -0700"
      },
      "message": "am 4ea7bfea: Merge \"Check if WallpaperService is enabled\" into ics-aah\n\n* commit \u00274ea7bfea312e4ddf815eabdef04d3f3b4878a51a\u0027:\n  Check if WallpaperService is enabled\n"
    },
    {
      "commit": "1e1edaa60dc183b1b8f0b8588deb8c42c9169cfb",
      "tree": "6fbada8f5ef6bc815c1b57b5b213938ee3e6d2a1",
      "parents": [
        "30ff5aecd751a2d5d6722c9ae96204eda2c3cbc4",
        "f20588fdc65a5651c3a5ab5c0c20165c0e33c394"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Apr 11 17:18:44 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 17:18:44 2012 -0700"
      },
      "message": "Merge \"Check WindowState when looking for animation.\""
    },
    {
      "commit": "f20588fdc65a5651c3a5ab5c0c20165c0e33c394",
      "tree": "5a1ab6db613753443fd34cec2ccdef4db16328f1",
      "parents": [
        "f0cabba38bcb1aefad191915e214e836fa5ed2bd"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Apr 11 17:06:21 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Apr 11 17:15:09 2012 -0700"
      },
      "message": "Check WindowState when looking for animation.\n\nThe method setTokenVisibilityLocked returns true when animations are\ndelaying the exit of an app. Previously this only checked AppToken\nanimations but that caused exiting WindowState animations to be\nignored.\n\nIn particular if an application both hid an AppToken and then\ndismissed the AppToken, the AppToken was being removed from\nmClosingTokens before the animation finished. This caused\nrebuildAppWindowListLocked to lose a WindowState. Furthermore\nSurfaces were not being removed when a WindowState was lost and\nwe were leaking Surfaces.\n\nFixes bug 6297563.\n\nChange-Id: Ie75c71064518199237ec4a17d3f65e2a2dd29674\n"
    },
    {
      "commit": "f882efadd378e0476b7362e474f3a20dcf1c0d27",
      "tree": "9e36983c9902eefbfbf45c7cc8e5002c9fca703a",
      "parents": [
        "50a926789f9ec335f72346a3a1c922729a301f34"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 11 16:04:12 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 11 16:04:12 2012 -0700"
      },
      "message": "Fix issue #6266651: Low storage warning takes long time to sort apps by usage\n\nOn a device with emulated external storage, the low storage notification\nshould go to the main storage settings UI.  This shows the user all of\nthe things that could be causing their storage to be low.\n\nChange-Id: I9c345b6cb7abbabc24a67c7e104d077ecbbfb86d\n"
    },
    {
      "commit": "b4148125490d48fb57c69b8543c997e3a6be1f44",
      "tree": "76298c079b1bb07cedd5e700bbc4b7a41115844f",
      "parents": [
        "3bf928d51ec9ce53d1ebeb53c7265980e349e444",
        "f8d4fbb9c87201350534861c4d988e63691fe24f"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Apr 11 09:35:05 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 09:35:05 2012 -0700"
      },
      "message": "Merge \"Check for existing dimming before stop dimming.\""
    },
    {
      "commit": "f8d4fbb9c87201350534861c4d988e63691fe24f",
      "tree": "f665a4ac0261ed07b3e89c568771af26e81e2c88",
      "parents": [
        "f0cabba38bcb1aefad191915e214e836fa5ed2bd"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Apr 11 09:25:53 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Apr 11 09:25:53 2012 -0700"
      },
      "message": "Check for existing dimming before stop dimming.\n\nAdd a test to make sure that we are dimming before we send the message\nto stop it. This prevents a CPU consuming loop when dimming is already on.\n\nFixes bug 6320003.\n\nChange-Id: If26dc5b0800300d8e38c166824651223eded4cfa\n"
    },
    {
      "commit": "3bf928d51ec9ce53d1ebeb53c7265980e349e444",
      "tree": "f5cfcd74ac14c6b14abadca10e1ac619455a9578",
      "parents": [
        "8d33d39d68d46af758143a56c89322360cbbada2",
        "0af489568de297fafc1d0e577481181ce3d81d4c"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Apr 11 07:03:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 07:03:00 2012 -0700"
      },
      "message": "Merge \"Fix PowerMgr NPE on emulator.\""
    },
    {
      "commit": "8d33d39d68d46af758143a56c89322360cbbada2",
      "tree": "0ab6d8815b5864cd74f299bcc458d0592bf980db",
      "parents": [
        "9f25b7fdf216c9ef0bd2322cd223eeaf0d60f77f",
        "01038492ff0317f0d3cff54d8a7ee36bb31ff175"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Wed Apr 11 00:12:59 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 00:12:59 2012 -0700"
      },
      "message": "Merge \"Show physical keyboard control button on the input method switch dialog\""
    },
    {
      "commit": "01038492ff0317f0d3cff54d8a7ee36bb31ff175",
      "tree": "cb598b11ea2c012bd15e7e7f44a3006f752c0b81",
      "parents": [
        "63c115c4aa2158ea18338a9fb2c2619755958ddc"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Mon Apr 09 21:08:27 2012 +0900"
      },
      "committer": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Wed Apr 11 15:49:35 2012 +0900"
      },
      "message": "Show physical keyboard control button on the input method switch dialog\n\nBug: 5240095\nChange-Id: Ica768083f95c33dc1e494a28ba7d8b6eb989b0ef\n"
    },
    {
      "commit": "9f25b7fdf216c9ef0bd2322cd223eeaf0d60f77f",
      "tree": "b0b509a261874435cab3f5f1a727c02b399bd91c",
      "parents": [
        "54ae14749bc7f9e73cfda35a8b49f9efa80a77fb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 10 14:30:49 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 10 18:23:58 2012 -0700"
      },
      "message": "Request key maps from input manager service.\n\nInstead of each application loading the KeyCharacterMap from\nthe file system, get them from the input manager service as\npart of the InputDevice object.\n\nRefactored InputManager to be a proper singleton instead of\nhaving a bunch of static methods.\n\nInputManager now maintains a cache of all InputDevice objects\nthat it has loaded.  Currently we never invalidate the cache\nwhich can cause InputDevice to return stale motion ranges if\nthe device is reconfigured.  This will be fixed in a future change.\n\nAdded a fake InputDevice with ID -1 to represent the virtual keyboard.\n\nChange-Id: If7a695839ad0972317a5aab89e9d1e42ace28eb7\n"
    },
    {
      "commit": "2a854c13f864d5493846a7fc66bb6aefeaac8c8b",
      "tree": "ebd489d95dd9276e93a92f33af507c321c6d7a97",
      "parents": [
        "4245ab34d12cf7d608f1789981326d9009cc304f",
        "162bc0ea0d7862b92f18d0ce47310a85304205f7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Apr 10 15:25:43 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 10 15:25:43 2012 -0700"
      },
      "message": "Merge \"Some small tweaks to improve memory management.\""
    },
    {
      "commit": "162bc0ea0d7862b92f18d0ce47310a85304205f7",
      "tree": "7d7342164ba4c6dde86e3951bcd6b79dead4273e",
      "parents": [
        "d3ce6f50c114f58a3f50e44764e9b315ac41f637"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 09 14:06:16 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Apr 10 14:43:58 2012 -0700"
      },
      "message": "Some small tweaks to improve memory management.\n\nWe now allow processes that currently have stopping activities to\nbe managed as if they were done stopping, so that memory trimming\ncan be done before the process goes to the background.  Hopefully\nthis will reduce cases where the processes goes to the background\nand immediately gets killed, but wouldn\u0027t have had to be killed if\nit had a chance to trim its memory.\n\nAlso change window memory trimming to always do the aggressive\ntrimming when memory is critical, even if not on a low-end device.\n\nAnd tweak web view trimming to not trim for foreground UI events.\n\nChange-Id: I241b3152b52d09757bd14a202477cf69c9b78786\n"
    },
    {
      "commit": "f0cabba38bcb1aefad191915e214e836fa5ed2bd",
      "tree": "20d24cf9e5c32f6d3651c65044b314f272a65ba8",
      "parents": [
        "cd2a3ea5c8aaca505452e3287b2ad30bbba0e8d1",
        "1f4e0ccba08e4abb55a38a8b5936dbb244475fb9"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Apr 10 14:33:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 10 14:33:07 2012 -0700"
      },
      "message": "Merge \"Fix NPE in setTransparentRegion.\""
    },
    {
      "commit": "cd2a3ea5c8aaca505452e3287b2ad30bbba0e8d1",
      "tree": "01d18f3cd91b0f260b01c77fed4d4c9d5039105c",
      "parents": [
        "592647ee2e2eb64904a3a9c30e8f20b1f08c4ba0",
        "deb6ed8c2e63fcb2a189ce6e0338f13edcb7c783"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 10 14:30:20 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 10 14:30:20 2012 -0700"
      },
      "message": "Merge \"Don\u0027t reuse StringBuilder outside of lock when dumping ANR.\""
    },
    {
      "commit": "deb6ed8c2e63fcb2a189ce6e0338f13edcb7c783",
      "tree": "3bc613a13dda616f361d19fe35b7fa0595524e11",
      "parents": [
        "27fd3420ac0498ff5086f71023f443966541aa04"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 10 14:26:26 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 10 14:26:26 2012 -0700"
      },
      "message": "Don\u0027t reuse StringBuilder outside of lock when dumping ANR.\n\nThe ANR dumping code was reusing the shared StringBuilder while\nnot holding the ActivityManagerService lock.  As a result, other\nthreads could sweep in and clobber the ANR information.\nWe don\u0027t want to hold the lock here, so just create a new StringBuilder.\n\nChange-Id: I0d91af55f5c123102cfab2cd97035491efed59c0\n"
    },
    {
      "commit": "1f4e0ccba08e4abb55a38a8b5936dbb244475fb9",
      "tree": "12add2ae1fed7ee4b4846086fc30fc6133b28661",
      "parents": [
        "1ade5ae9c812464f086f2151069781db1b27db2f"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Apr 10 14:24:38 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Apr 10 14:24:38 2012 -0700"
      },
      "message": "Fix NPE in setTransparentRegion.\n\nCheck for null Surface before using it.\n\nFixes bug 6312835.\n\nChange-Id: Iaaac2a5d88e81b88e369815e09818c268085e4b7\n"
    },
    {
      "commit": "8330e40b9897afb1e2b2e6354ed3c35e7c557486",
      "tree": "523e03a963378f1c866983cd6dfeedfd9c3d2513",
      "parents": [
        "ad0ef210113f8337f56940962baaf2d19a33871e",
        "73850cb6991074e33c31d310ccb63a1f863f7b4e"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Apr 10 13:01:12 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 10 13:01:12 2012 -0700"
      },
      "message": "Merge \"Reduce load on CPU when animating rotation.\""
    },
    {
      "commit": "73850cb6991074e33c31d310ccb63a1f863f7b4e",
      "tree": "cda721463fccf3541ba94fc916ccda6584f55887",
      "parents": [
        "1ade5ae9c812464f086f2151069781db1b27db2f"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Apr 10 12:56:27 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Apr 10 12:56:27 2012 -0700"
      },
      "message": "Reduce load on CPU when animating rotation.\n\nThis change keeps requestTraversalLocked from being called on virtually\nevery call to animate while rotating.\n\nChange-Id: I6d2db37db3bb82f4f9ecc84b17dbf121819a6c1b\n"
    },
    {
      "commit": "0af489568de297fafc1d0e577481181ce3d81d4c",
      "tree": "d784073cd7fa8a33ee6e280674ca51149ad29076",
      "parents": [
        "450c75a59bf510ef97bfc208ee7c7660fdb73afa"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Apr 10 15:14:35 2012 -0400"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Apr 10 15:15:32 2012 -0400"
      },
      "message": "Fix PowerMgr NPE on emulator.\n\nBug: 6313695\nChange-Id: Ib12b9102df01603df135cef03fd2a2f6e3634dd1\n"
    },
    {
      "commit": "c38cf4c7dbe7d96255d42dabf8ca801830813f5e",
      "tree": "c34bc1561f67c0838d7ebd4d625b568738dc4589",
      "parents": [
        "06cce885296f60b6cc2d0dad3d167681536a53a5",
        "7d276c377ce0c56630c06a6da431a6cb9bd76d1e"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Apr 10 05:33:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 10 05:33:07 2012 -0700"
      },
      "message": "Merge \"New Android Dreams architecture, disabled for now.\""
    },
    {
      "commit": "4233f262499aa1dea332fe60d7a30ab4cdc4e3ed",
      "tree": "227875fb0ad486c9dc3857cf8bb9fbba8bd2aaeb",
      "parents": [
        "14d3b807b730e04d90d6dd9c9569decdf12cc9cb"
      ],
      "author": {
        "name": "Justin Mattson",
        "email": "jmatt@google.com",
        "time": "Mon Apr 09 18:23:16 2012 -0700"
      },
      "committer": {
        "name": "Justin Mattson",
        "email": "jmatt@google.com",
        "time": "Mon Apr 09 18:36:15 2012 -0700"
      },
      "message": "Check if WallpaperService is enabled\n\nIf WallpaperService is disabled, don\u0027t delay starting SurfaceFlinger\nuntil it is.\n\nChange-Id: I95db6b7bc791329e2bae33472cfeb125e5f6f324\n"
    },
    {
      "commit": "7d276c377ce0c56630c06a6da431a6cb9bd76d1e",
      "tree": "b5c96c71988ec1a0f3cbd7f64269651e69c8de92",
      "parents": [
        "63c115c4aa2158ea18338a9fb2c2619755958ddc"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Mon Jan 30 14:33:52 2012 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Mon Apr 09 15:33:26 2012 -0400"
      },
      "message": "New Android Dreams architecture, disabled for now.\n\nRather than normal Activities (which have a host of problems\nwhen used for this purpose), screen savers are now a\nspecial kind of Service that can add views to its own\nspecial window (TYPE_DREAM, in the SCREENSAVER layer).\n\nDreams are now launched by the power manager; whenever it is\nabout to turn the screen off, it asks the window manager if\nit wants to run a screen saver instead. (http://b/5677408)\n\nAlso, the new config_enableDreams bool allows the entire\nfeature to be switched on or off in one place. It is\ncurrently switched off (and the APIs are all @hidden).\n\nChange-Id: Idfe9d430568471d15f4b463cb70586a899a331f7\n"
    },
    {
      "commit": "eaeee6a55c443fcd71cd2012e4b3366421723e74",
      "tree": "8469e7e977dd9cf0b756743cb565199a0db37bb7",
      "parents": [
        "fd6ebee93c1b85118e4958a8fe4376af9033929e",
        "bfdd680ab44da173a4a39fcd6feccdebb9d1f855"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 09 11:26:34 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 09 11:26:34 2012 -0700"
      },
      "message": "Merge \"Migrate to @Override to remove warnings.\""
    },
    {
      "commit": "fd6ebee93c1b85118e4958a8fe4376af9033929e",
      "tree": "b0f342cbe4ae89b7b13f8b831bbec718e081ff2f",
      "parents": [
        "3b0ea8dbb6fa8407242b4dac9f07318f239bfbb6",
        "27fd3420ac0498ff5086f71023f443966541aa04"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 09 11:25:02 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 09 11:25:02 2012 -0700"
      },
      "message": "Merge \"Fix lid switch interpretation.\""
    },
    {
      "commit": "27fd3420ac0498ff5086f71023f443966541aa04",
      "tree": "dc29332ba544ec0d8da9503d9205e6ef753c0e56",
      "parents": [
        "eca3cf58c096d5a4ba4ae80318f72266c21a9a6d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 09 11:05:16 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 09 11:22:12 2012 -0700"
      },
      "message": "Fix lid switch interpretation.\n\nAlso remove unnecessary permission check for method that is\nonly called internally.\n\nChange-Id: I32f63fc3e96b06709d18b046ee2d3c8f310de70d\n"
    }
  ],
  "next": "bfdd680ab44da173a4a39fcd6feccdebb9d1f855"
}
