)]}'
{
  "log": [
    {
      "commit": "df89ca3308544cfdd1ca12b22eac4a1d16e04410",
      "tree": "aaff0262790fd74889eb206e0e328c16a6f225f8",
      "parents": [
        "9a04435e5fb7c5869d81184736c97097e24fd881"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Tue Jul 30 20:33:27 2013 -0700"
      },
      "committer": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Wed Aug 07 18:33:12 2013 +0000"
      },
      "message": "batteryservice: add battery current now and charge counter data\n\nAvailable for retrieval via future APIs if desired.  Dumped by dumpsys.\nNot added to batterystats or ACTION_BATTERY_CHANGED intents at this point.\n\nAlso fixes a formatting problem in the existing dumpsys output for voltage.\n\nChange-Id: I5320b19035914256fb872c13095c09c648dd522a\n"
    },
    {
      "commit": "9a04435e5fb7c5869d81184736c97097e24fd881",
      "tree": "d8bdf718d74bcc76af234806afe681e173897284",
      "parents": [
        "d8e974931ede2344e49416f1586279dab8107cab",
        "d0f964f93f100a8a8a2c22df98964a82219dc77f"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Aug 07 18:26:48 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 07 18:26:49 2013 +0000"
      },
      "message": "Merge \"Compare tasks not activities.\""
    },
    {
      "commit": "d0f964f93f100a8a8a2c22df98964a82219dc77f",
      "tree": "0f3b074b2d7edaf8f52c82e84a2a6eaa433d7a68",
      "parents": [
        "2275c6c8bfab76d1db8bc11d2b56b7ff913da4e0"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Aug 07 11:16:33 2013 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Aug 07 11:16:33 2013 -0700"
      },
      "message": "Compare tasks not activities.\n\nIn order to determine if the topmost activity needs to be moved out\nof the way, compare its task to the task of the source activity\nrather than compare the activities themeselves.\n\nFixes bug 10182783.\n\nChange-Id: Idd4542d7ddce8b7586ee47f100366bc47e07d54f\n"
    },
    {
      "commit": "d8e974931ede2344e49416f1586279dab8107cab",
      "tree": "7381b15c9795053cf51f249e287c31f6c66a1e3d",
      "parents": [
        "e2b1b8e2adcc212f8505bf77a5d7e098d7c12c2f",
        "5e486f59c7a5df753c1f2c40bdfa6c371811564e"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Aug 07 18:10:23 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 07 18:10:23 2013 +0000"
      },
      "message": "Merge \"Try again to cleanup all blocked apps\""
    },
    {
      "commit": "5e486f59c7a5df753c1f2c40bdfa6c371811564e",
      "tree": "21f23fffba2e8b43e2f79beb52d665d607009a98",
      "parents": [
        "c3a1914bd777575cee1917d99d14f05bfd128717"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Aug 07 11:06:44 2013 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Aug 07 11:06:44 2013 -0700"
      },
      "message": "Try again to cleanup all blocked apps\n\nSince the Restrictions feature was removed, some cleanup code was\nadded to unblock apps. But the cleanup is causing some runtime exceptions\ndue to happening too early in the boot up sequence. Moved the cleanup\nto after boot_completed broadcast is received.\n\nBug: 10212758\nChange-Id: Id42eff16b54c24ea48cf8b3a81f77ea801264edd\n"
    },
    {
      "commit": "feca78f7af973cbe68ffdeb8acb871820cf6458b",
      "tree": "fee096882e729b269fd905763c1eac612dd7d83d",
      "parents": [
        "b83f62236c8ca879f826941fd605a2f123262239",
        "23fb6e84182f325f036b1735b817ecc253e2bd19"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 07 17:15:04 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 07 17:15:05 2013 +0000"
      },
      "message": "Merge \"Start adding IPC calls to retrieve proc stat data.\""
    },
    {
      "commit": "23fb6e84182f325f036b1735b817ecc253e2bd19",
      "tree": "39df98e6c5169bbf68a42f6966663fcb0aa50b22",
      "parents": [
        "57e76b405faf154352e17f0114bf6b23aa9ac0f0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 07 10:08:22 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 07 10:08:22 2013 -0700"
      },
      "message": "Start adding IPC calls to retrieve proc stat data.\n\nAlso fix a bug where we were not correctly unparcelling service\nduration data.\n\nChange-Id: Ie9113b2e3a747622441b1939ffc45edb5803a10f\n"
    },
    {
      "commit": "dee8bf0eb53b7b557f380e8c3ee5c9179ff0c74d",
      "tree": "97f1a88687d8d9841e9191fe90efcd09ac1207c8",
      "parents": [
        "2275c6c8bfab76d1db8bc11d2b56b7ff913da4e0"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Aug 07 09:24:11 2013 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Aug 07 09:24:11 2013 -0700"
      },
      "message": "Create SurfaceSession before creating DimLayer.\n\nFixes \"java.lang.IllegalArgumentException: session must not be null\"\n\nChange-Id: Id7e77a44e59e5169ed8944682ab79783631182dd\n"
    },
    {
      "commit": "c3a1914bd777575cee1917d99d14f05bfd128717",
      "tree": "924db5a2172ca2a05076d981f1052f013aed93ab",
      "parents": [
        "e9a6f9713ca48aab9a6c87e0645cb0a0af946a11"
      ],
      "author": {
        "name": "Ken Wakasa",
        "email": "kwakasa@google.com",
        "time": "Wed Aug 07 15:03:24 2013 +0000"
      },
      "committer": {
        "name": "Ken Wakasa",
        "email": "kwakasa@google.com",
        "time": "Wed Aug 07 15:03:24 2013 +0000"
      },
      "message": "Revert \"Reduce the transaction fee of getEnabledInputMethodSubtypeList\"\n\nThis reverts commit e9a6f9713ca48aab9a6c87e0645cb0a0af946a11.\n\nChange-Id: I611d31086d4f02aae5c7021ac92975bd92a59f34\n"
    },
    {
      "commit": "e9a6f9713ca48aab9a6c87e0645cb0a0af946a11",
      "tree": "2908165f61df85e877dbd37c29b1fb3fab2464fb",
      "parents": [
        "32c5eb3bf89938ba2221e67362571628e1efd520"
      ],
      "author": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Wed Aug 07 15:43:29 2013 +0900"
      },
      "committer": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Wed Aug 07 17:12:58 2013 +0900"
      },
      "message": "Reduce the transaction fee of getEnabledInputMethodSubtypeList\n\nBug: 8467480\nChange-Id: Ic1fddfe433e097041fcb09d1fd341d77d7d8b13b\n"
    },
    {
      "commit": "9d808b1f4823879ce8b52aefb90c55346017cdc7",
      "tree": "ab814d3b4c66f7c2ba11f192fea52ee5ce6fc0a1",
      "parents": [
        "57e76b405faf154352e17f0114bf6b23aa9ac0f0"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Aug 06 18:00:25 2013 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Aug 06 18:07:13 2013 -0700"
      },
      "message": "Add home StackBox to all DisplayContent.\n\nEach display needs a stack and a stack box to contain windows.\n\nFixes bug 10161525.\n\nChange-Id: Ic617cdf5a082ae68f0589e826ecbb37d8fba52ac\n"
    },
    {
      "commit": "57e76b405faf154352e17f0114bf6b23aa9ac0f0",
      "tree": "05069154a0de33fe802fee88cb9da313638bdbc9",
      "parents": [
        "40f5b63bd9c0d5570d3330d6d9c16f323253aba1"
      ],
      "author": {
        "name": "Ben Gruver",
        "email": "bgruv@google.com",
        "time": "Wed Jul 31 15:41:24 2013 -0700"
      },
      "committer": {
        "name": "Ben Gruver",
        "email": "bgruv@google.com",
        "time": "Tue Aug 06 17:25:27 2013 -0700"
      },
      "message": "Add the inadvertently missing SCHEME string value provider\n\nChange-Id: I70ce104efac23c3776596571e48ee195be958373\n"
    },
    {
      "commit": "614b4c4cd42699161b0c801117416ec517b2afe2",
      "tree": "947d97e295ebfdf6122521bd17b87b267d38d75b",
      "parents": [
        "52a9a10b6b8c7b7a9f97777541841b94d4fd9754",
        "d2932243e3313b59e7538641731aa98852bc5ac7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 06 21:32:41 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 06 21:32:42 2013 +0000"
      },
      "message": "Merge \"Refactor ProcessStats, ProcessTracker.\""
    },
    {
      "commit": "d2932243e3313b59e7538641731aa98852bc5ac7",
      "tree": "d2ccb55820c8c47c535f7b973087cd3446f308b6",
      "parents": [
        "03901667db75696ccd544809e0e7bc000a99f417"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 05 18:18:42 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 06 13:54:07 2013 -0700"
      },
      "message": "Refactor ProcessStats, ProcessTracker.\n\nProcessStats is now called ProcessCpuTracker.\n\nProcessTracker is now ProcessStatsService, and its inner State\nclass is broken out into a separate top-level ProcessStats class.\nThis ProcessStats is moved to the framework, so we will be able\nto use it elsewhere.\n\nChange-Id: I6a127bcb835b6b474b72647c0b99b82c2137e5c5\n"
    },
    {
      "commit": "0dff7064897afd4e07993bac28ae877aaeb1b5e3",
      "tree": "72babedd3360513f6d8c1053741e4ac6d20ccb69",
      "parents": [
        "4373232037606285fc44b816b57c34c95ca444b4",
        "b7c1a17846a306deef62855630bca9f061dc9372"
      ],
      "author": {
        "name": "Ben Gruver",
        "email": "bgruv@google.com",
        "time": "Tue Aug 06 20:02:30 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 06 20:02:30 2013 +0000"
      },
      "message": "Merge \"Read intent firewall rules from any xml file in the ifw directory\""
    },
    {
      "commit": "4373232037606285fc44b816b57c34c95ca444b4",
      "tree": "fcf93845f357e2106335b890500299d1f4476b8f",
      "parents": [
        "445b5f460fd083a0f267669db450d2e2fa049f08",
        "0f922749f45ba0717c317a765286f880bb9a1cce"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Aug 06 19:56:50 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 06 19:56:50 2013 +0000"
      },
      "message": "Merge \"Extend clearing of mLastPausedActivity.\""
    },
    {
      "commit": "aac3954414d34bb22c9db2675fb34ee196685b49",
      "tree": "0d05b581a14927b3c015393f0c8d981834dce934",
      "parents": [
        "3ed2ba3e769ccfb1ec14f52a703f339d643ed555",
        "350962ca82ddd3d455221c0f29fafb92542f38ea"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Aug 06 18:20:55 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 06 18:20:55 2013 +0000"
      },
      "message": "Merge \"Remove restrictions PIN for all users\""
    },
    {
      "commit": "350962ca82ddd3d455221c0f29fafb92542f38ea",
      "tree": "f31d29bdf59172e53faeb4ba1c8c72837019239a",
      "parents": [
        "3d38fa301ca502882b1bbe06c030d037289636b7"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Aug 06 11:18:53 2013 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Aug 06 11:18:53 2013 -0700"
      },
      "message": "Remove restrictions PIN for all users\n\nBug: 10200097\nChange-Id: I4d95cd49a21e8f4f6b2c141d1205f81622c395b5\n"
    },
    {
      "commit": "0f922749f45ba0717c317a765286f880bb9a1cce",
      "tree": "09efd39002b2cf75d5a40af2e8ca5f7e97109730",
      "parents": [
        "f140fd9cef0ad2a522ad0edd852f763003933338"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Aug 06 08:44:42 2013 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Aug 06 08:44:42 2013 -0700"
      },
      "message": "Extend clearing of mLastPausedActivity.\n\nAdd more locations where mLastPausedActivity must be set null before\ncalling resumeTopActivityLocked().\n\nAlso separate the \"No History\" activity from mLastPausedActivity by\nadding mLastNoHistoryActivity. This is necessary because now\nmLastPausedActivity will be null when mLastNoHistoryActivity\nis checked.\n\nContinues to fix bug 10022212.\n\nChange-Id: Ida543b0638c865127691dc51a6e0635062539659\n"
    },
    {
      "commit": "03901667db75696ccd544809e0e7bc000a99f417",
      "tree": "7d62b241f4dbc6301544d7820f526b621085cdaf",
      "parents": [
        "254798f22f133338d016977c65c06e5f3c8dd033",
        "221ea892dcc661bd07d6f36ff012edca2c48aed4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 06 00:16:04 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 06 00:16:04 2013 +0000"
      },
      "message": "Merge \"Start restricting service calls with implicit intents.\""
    },
    {
      "commit": "254798f22f133338d016977c65c06e5f3c8dd033",
      "tree": "8554f81d691c6cb7933d5324e6ec4fc8f32f0dd8",
      "parents": [
        "449ff243539d570f04cb387159f4cf557c0b6702",
        "8eea0fcd3b4a9c58ba70ea80ed0332d37ac43da5"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 06 00:15:16 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 06 00:15:16 2013 +0000"
      },
      "message": "Merge \"Add a new process state for \"service restarting\".\""
    },
    {
      "commit": "221ea892dcc661bd07d6f36ff012edca2c48aed4",
      "tree": "33a29861257497ebd865fe5565c9e3bfbde3cb1a",
      "parents": [
        "33041bd90301d50c61e6375bbd9bb6da2f1c8cba"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Aug 04 16:50:16 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 05 16:53:26 2013 -0700"
      },
      "message": "Start restricting service calls with implicit intents.\n\nThe bindService() and startService() calls have always had\nundefined behavior when used with an implicit Intent and there\nare multiple matching services.  Because of this, it is not\nsafe for applications to use such Intents when interacting with\nservices, yet the platform would merrily go about doing... something.\n\nIn KLP I want to cause this case to be invalid, resulting in\nan exception thrown back to the app.  Unfortunately there are\nlots of (scary) things relying on this behavior, so we can\u0027t\nimmediately turn it into an exception, even one qualified by the\ncaller\u0027s target SDK version.\n\nIn this change, we start loggin a WTF when such a call happens,\nand clean up some stuff in Bluetooth that was doing this behavior.\n\nChange-Id: I62e25d07890588d2362104e20b054aebb6c0e007\n"
    },
    {
      "commit": "449ff243539d570f04cb387159f4cf557c0b6702",
      "tree": "77784fc6e93ce8451be3b06bf246a8b4ee8adef2",
      "parents": [
        "373673abd68f512dd17a6c2b7606ebad365e87cc",
        "f140fd9cef0ad2a522ad0edd852f763003933338"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Aug 05 23:18:07 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 05 23:18:07 2013 +0000"
      },
      "message": "Merge \"Clear last paused activity.\""
    },
    {
      "commit": "f140fd9cef0ad2a522ad0edd852f763003933338",
      "tree": "3a97fb573266fca497f51ad9f906be5d7665e34c",
      "parents": [
        "f239d9d7bb15fbdbe026835d5ee6b0c91d3ac5f0"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Aug 05 16:14:22 2013 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Aug 05 16:14:22 2013 -0700"
      },
      "message": "Clear last paused activity.\n\nMoving an activity to the back used to move it behind the launcher.\nThis meant that the test in resumeTopActivityLocked() for\nmLastPausedActivity being equal to the top activity would fail after\nmoveTaskToBack(). In the new activity stack model the launcher is\non a different stack so if there is only one task then the test\nnow passes. Clearing mLastPausedActivity when moving an activity\nforward now passes the test.\n\nFixes bug 10022212.\n\nChange-Id: I17932d5c87d2483f13c29ae85a7067202a08f34e\n"
    },
    {
      "commit": "8eea0fcd3b4a9c58ba70ea80ed0332d37ac43da5",
      "tree": "a0ed6ce0de84377ef46d5d49c34d6e0030f75758",
      "parents": [
        "33041bd90301d50c61e6375bbd9bb6da2f1c8cba"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 02 13:40:55 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 05 14:19:44 2013 -0700"
      },
      "message": "Add a new process state for \"service restarting\".\n\nThis is a process that is not actually running, but would be\nif we had enough RAM.\n\nAlso rework how service stats are stored to used the nice\ncompact structure we are already using for processes.\n\nAnd fix a bug where when we committed the current state data,\nwe would mistakenly write it under the name of the *next* state\nthat is now starting.  Ouch.\n\nChange-Id: I9f2b84b8b3f305301fd48dcd9d4e6c232abe8ef9\n"
    },
    {
      "commit": "e6a0b7dea21cae5440d71e49eec8981f88413b3e",
      "tree": "bb6240df91faf438139e55f9ccce4e6bfba4af41",
      "parents": [
        "4c59c54f77f2bac38f0225a5212772f5a3837cf2",
        "f4bdcaba5dec17001cae7e654b74020b527c79e5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 05 17:23:20 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 05 17:23:20 2013 +0000"
      },
      "message": "Merge \"Remove member \"m\" prefix from now local variables\""
    },
    {
      "commit": "32230ef4e67291d5dc1357bbcb452fdc9d65b1c5",
      "tree": "fcf8aeee6431d938b6656a0e4b89ab744a706bfa",
      "parents": [
        "7ce7f32257a1e49493d38b96f503069226e98c9a",
        "9764218ff979f735aee2f1189e3547d5f3b02f83"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Mon Aug 05 13:18:53 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 05 13:18:54 2013 +0000"
      },
      "message": "Merge \"Collapse/disable shade when hiding status bar window.\""
    },
    {
      "commit": "7bb1be4ba9ab141cdfbd2debed82ecda1657f9cf",
      "tree": "03fa7e494a60bd0e6c1c5c92e8284968cfa806db",
      "parents": [
        "f76ff0552bbef531c33ef0cb322932d03b7e6632",
        "835835ee6f913408ac91678d6056896a2c5b25e3"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Aug 05 04:08:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 05 04:08:46 2013 +0000"
      },
      "message": "Merge \"Polish the print spooler loading of stored print jobs.\""
    },
    {
      "commit": "835835ee6f913408ac91678d6056896a2c5b25e3",
      "tree": "16f82a42cd1a8d032502adf963912856c9b297a8",
      "parents": [
        "14617a83a64fe982d01450a881a1b4f1ec29e28b"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Sun Aug 04 20:17:52 2013 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Sun Aug 04 20:45:10 2013 -0700"
      },
      "message": "Polish the print spooler loading of stored print jobs.\n\n1. The singleton print spooler isntance is created when the print spooler\n   service gets a connection to the system and is destroyed when this\n   connection is removed. Note that if the spooler has work, then the\n   connection to the system will not be removed.\n\n   When the spooler is created, it reads the stored state and notifies the\n   system which in turn dispatches this to the print services.\n\n   When the system connects to the spooler and passes it a connection, we\n   schedule a delayed check whether there is work for the spooler. We do\n   not handle this immediately to avoid intermitted spinning on and off\n   of the spooler process if a client makes a sequence of queries while\n   the spooler has really no work.\n\n2. Fixed a bug in the NotificationManagerService where adding a notification\n   and removing it immediately after that does not remove the notification.\n   The code that is adding a notification is run on a handler thread while\n   the code to remove it on the calling thread. This creates a race and\n   erroneous results. Now the removal is also scheduled on the handler.\n\n3. Many small fixes here and there.\n\nChange-Id: I6415c253139fa6616393fbe23c659d031a29e1f6\n"
    },
    {
      "commit": "5c7132560aac40f291726095b761a0c46ee32b09",
      "tree": "2965cab1edb1e590aa0544c2c9bca12405509d0a",
      "parents": [
        "0770f9ef66f6e0d8724c972fbdce81aae6de2ca1",
        "46ac6fa614131d567bed93d1d2067d765ecef85d"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sat Aug 03 22:32:04 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Aug 03 22:32:04 2013 +0000"
      },
      "message": "Merge \"Add force default orientation.\""
    },
    {
      "commit": "0770f9ef66f6e0d8724c972fbdce81aae6de2ca1",
      "tree": "54097d07f8fa475f0c007bc68974c2862eaa4a48",
      "parents": [
        "33041bd90301d50c61e6375bbd9bb6da2f1c8cba",
        "c8911ddd486776662e09a6822d4929074d40024d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 02 23:43:31 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 02 23:43:31 2013 -0700"
      },
      "message": "resolved conflicts for merge of c8911ddd to master\n\nChange-Id: I790b547268a23848577199256fc5abc9bdb7abb8\n"
    },
    {
      "commit": "33041bd90301d50c61e6375bbd9bb6da2f1c8cba",
      "tree": "ad725a4ecd7aeea9d3641c85d366649ef45c63e4",
      "parents": [
        "7d00affce6e25b22fd8fc135933b3bf6b547a0dc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 02 21:11:14 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 02 21:11:14 2013 -0700"
      },
      "message": "Add debug message to help diagnose a presentation bug.\n\nBug: 10154780\nChange-Id: I0e711a6316cb231ec48fc31d87b8cbd5d857c2f8\n"
    },
    {
      "commit": "7d00affce6e25b22fd8fc135933b3bf6b547a0dc",
      "tree": "6ceb674184170a62dd93d7b3508f11ed1830349e",
      "parents": [
        "040f44d0ebdd3a50c59ba0cbc0b023fd2d71039d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 02 19:03:49 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 02 21:11:07 2013 -0700"
      },
      "message": "Support public virtual displays.\n\nRefactor the new private virtual display API to also support\ncreating public virtual displays with various characteristics.\nThis feature requires special permissions and is only intended\nfor use by the system.\n\nChange-Id: I44dd19f37cf76ea6d6e313afe42f4a412bd96663\n"
    },
    {
      "commit": "f4bdcaba5dec17001cae7e654b74020b527c79e5",
      "tree": "755739115fb6b3d642d93809e2b4951a9f40abad",
      "parents": [
        "1e01943fe1876144f0c180163b5b39ee0a9a91ee"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 02 19:49:15 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 02 19:49:15 2013 -0700"
      },
      "message": "Remove member \"m\" prefix from now local variables\n\nChange-Id: I7808cafc1f74c47fcd9d9a4b6a90fb50951457b1\n"
    },
    {
      "commit": "040f44d0ebdd3a50c59ba0cbc0b023fd2d71039d",
      "tree": "9dccd7d594c5854c25581f5ee669c73b2b3b50e4",
      "parents": [
        "1e01943fe1876144f0c180163b5b39ee0a9a91ee"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 02 18:14:46 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 02 19:44:19 2013 -0700"
      },
      "message": "Add support for secure overlay displays for development.\n\nChange-Id: I426115ec5a3fbda52a481097731abc8b3d9013a4\n"
    },
    {
      "commit": "c8911ddd486776662e09a6822d4929074d40024d",
      "tree": "82af56772c82f689008b485be62ae6d915c59e0b",
      "parents": [
        "ae311f4c5f86779bb681b9fa8c1122dc174fea72",
        "373a2f15667956ff8a00ba59b42972b9c930af92"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 02 19:32:13 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 02 19:32:13 2013 -0700"
      },
      "message": "am 373a2f15: am 607b414d: Add new app ops method to reset all op modes.\n\n* commit \u0027373a2f15667956ff8a00ba59b42972b9c930af92\u0027:\n  Add new app ops method to reset all op modes.\n"
    },
    {
      "commit": "607b414d0444067e166fa54d8ea37563f2715ea3",
      "tree": "794a9671518840a260c91135d11b13a6339514ee",
      "parents": [
        "7925e7cc089251afb2faceb3e81eea436647c572"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 02 18:10:10 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 02 19:06:25 2013 -0700"
      },
      "message": "Add new app ops method to reset all op modes.\n\nChange-Id: I5ee6764de8dc31d812e5a788914ab0099bbef4c0\n"
    },
    {
      "commit": "c5e32ef628c23758523008358c11aaa7e7422ac4",
      "tree": "c6a196d755d7de4a0c35c77932f6272297246096",
      "parents": [
        "b7645acfd929911adeeea44334a3168dd0a0cf8b",
        "b33278f876be7d6399c04d470c40c97979a87ccf"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 02 23:58:42 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 02 23:58:42 2013 +0000"
      },
      "message": "Merge \"Teach PackageManager to skip core-libart.jar\""
    },
    {
      "commit": "46ac6fa614131d567bed93d1d2067d765ecef85d",
      "tree": "720caf051afb40d98ec279bc19022efc5037ffa5",
      "parents": [
        "cb92a8d9428c2e4a9f038cd5f10e9d61bf265cd4"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Aug 01 10:06:34 2013 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Aug 02 16:23:58 2013 -0700"
      },
      "message": "Add force default orientation.\n\nDevices can be configured to remain in their default landscape or\nportrait orientation by setting config_forceDefaultOrientation true\nin overlay/.../values/config.xml.\n\nActivities that desire to run in the non-default orientation are\nsupported by creating a logical display within the physical display.\nTransitions to and from the activity perform a crossfade rather than\nthe normal rotation animation.\n\nAlso, improve SurfaceTrace debug output.\n\nFixes bug 9695710.\n\nChange-Id: I053e136cd2b9ae200028595f245b6ada5927cfe9\n"
    },
    {
      "commit": "bb9b30078739dba99ffa094b35fde0118c245097",
      "tree": "f03f4fa6218f39ca80108ab294dc7633c55614e9",
      "parents": [
        "4d79d7821d45719b8efe71e68617e511084cb8a1",
        "8c43376ea83a67414bd6823a472b76d41160239e"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Aug 02 21:24:38 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 02 21:24:38 2013 +0000"
      },
      "message": "Merge \"    First cut of the print notifications.\""
    },
    {
      "commit": "4d79d7821d45719b8efe71e68617e511084cb8a1",
      "tree": "3651b1124c848ff70f8770ca32411d440a4772cd",
      "parents": [
        "d347168f508e5d93c280023d6f7357ec8028ff6f",
        "e67b5e314fe5978b55affc1057944a1954016ae0"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Aug 02 21:22:59 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 02 21:22:59 2013 +0000"
      },
      "message": "Merge \"Revert \"ssss\"\""
    },
    {
      "commit": "8c43376ea83a67414bd6823a472b76d41160239e",
      "tree": "05ee0b02f711058ce5443a8bbee33edd19df2d8f",
      "parents": [
        "55b409a97cf6376399a0940313ea852368727d6f"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Aug 02 14:22:19 2013 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Aug 02 14:22:22 2013 -0700"
      },
      "message": "    First cut of the print notifications.\n\n    1. Added notifications for a queued print job, for a started print job,\n       for ongoing canceling a print job, and for a failed print job. The\n       notifications for queued and started state have a cancel action. The\n       notification for failed print job has a cancel and a restart action.\n\n    2. Propagating failure message from the print service to the notifications.\n\n    3. PrintJobConfigActivity was not setting the initial value for the\n       print job copies and was not updating the UI immediately after creation.\n\n    4. Refactored PrintJobConfigActivity to avoid using the hack to avoid\n       reaction for item selection change in a spinner for an event that\n       happened before the callback was registered.\n\n    5. Removed the label attribute from PrinterInfo and now PrinterId is\n       composed of the printer name and the service component name. This\n       is nice since for restarting print jobs we do not need to store\n       information about the printer except the printer id which is\n       already part of the PrintJobInfo\u0027s data. Also the printer name\n       is not expected to change anyway.\n\n    6. Allowing cancellation of a queued print job. Also no print job is\n       cancelled without asking the managing print service to do that.\n       Before we were immediately canceling print jobs in queued state\n       but it was possible for a buggy print service to not set the\n       print job state to started before starting to do expensive work\n       that will not be canceled.\n\n    7. PrintServiceInfo was throwing an exception the the meta-data\n       XML for the print service was not well-formed which would crash\n       the system process. Now we just ignore not well-formed meta-data.\n\n    8. Removed unused permissions from the PrintSpooler\u0027s manifest.\n\nChange-Id: Iba2dd14b487f56e137b90d1da17c3033422ab5e6\n"
    },
    {
      "commit": "e67b5e314fe5978b55affc1057944a1954016ae0",
      "tree": "9a919b2d64c469e11d94d6205d44cdd9ab553802",
      "parents": [
        "650f0ee31bbd2a23dc64b60caba3a52e7665398c"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Aug 02 21:19:37 2013 +0000"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Aug 02 21:19:37 2013 +0000"
      },
      "message": "Revert \"ssss\"\n\nThis reverts commit 650f0ee31bbd2a23dc64b60caba3a52e7665398c.\n\nChange-Id: Iae83ca6ccb7feccb74069bf09cfb3150c03ec710\n"
    },
    {
      "commit": "d347168f508e5d93c280023d6f7357ec8028ff6f",
      "tree": "447d93a67351562718cea64ed98d65d09f2e6c0d",
      "parents": [
        "ec90545b5ff0e651154f8b9ab107b34e3a1124d8",
        "650f0ee31bbd2a23dc64b60caba3a52e7665398c"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Aug 02 21:15:35 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 02 21:15:36 2013 +0000"
      },
      "message": "Merge \"ssss\""
    },
    {
      "commit": "aa3b0ff3e18585d055494ec3f63f1e0ce1325dd9",
      "tree": "2745783ed3a83406e2b0ea4ef66e342b18935ad2",
      "parents": [
        "b213cec0ce659c1e35c3e7f60a61bae38d94482a",
        "0eab98dd24b3a4272d5e9a41f353071f8508ec2a"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Fri Aug 02 13:44:17 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 02 13:44:17 2013 -0700"
      },
      "message": "am 0eab98dd: am 019f4385: am 7925e7cc: Merge \"Revert \"Add version identifier to app ops.\"\" into jb-mr2-dev\n\n* commit \u00270eab98dd24b3a4272d5e9a41f353071f8508ec2a\u0027:\n  Revert \"Add version identifier to app ops.\"\n"
    },
    {
      "commit": "0eab98dd24b3a4272d5e9a41f353071f8508ec2a",
      "tree": "fb8f3dba53792b2649b06cf4ff3b3054f698f403",
      "parents": [
        "5d6b7db5d9cb7de5cee45dd35af18e179f01d583",
        "019f4385d17234324db23521149e1f1cb6d7d061"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Fri Aug 02 13:42:03 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 02 13:42:03 2013 -0700"
      },
      "message": "am 019f4385: am 7925e7cc: Merge \"Revert \"Add version identifier to app ops.\"\" into jb-mr2-dev\n\n* commit \u0027019f4385d17234324db23521149e1f1cb6d7d061\u0027:\n  Revert \"Add version identifier to app ops.\"\n"
    },
    {
      "commit": "7925e7cc089251afb2faceb3e81eea436647c572",
      "tree": "93dd5e8ce3cc50bebac779efc4fcacf964e9317c",
      "parents": [
        "d364859ce657c6b096cadc703485ccef7979c582",
        "0997c5bd79d11e6ecb11970bfd9b9b911001ac0a"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Fri Aug 02 20:36:28 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 02 20:36:28 2013 +0000"
      },
      "message": "Merge \"Revert \"Add version identifier to app ops.\"\" into jb-mr2-dev"
    },
    {
      "commit": "650f0ee31bbd2a23dc64b60caba3a52e7665398c",
      "tree": "e82192c1acd55e42bdebf34810b485974ef89dca",
      "parents": [
        "55b409a97cf6376399a0940313ea852368727d6f"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Aug 02 13:31:20 2013 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Aug 02 13:31:20 2013 -0700"
      },
      "message": "ssss\n\nChange-Id: I001c2ae5bc6caeac7e1a2223e221be69f6e6cb6c\n"
    },
    {
      "commit": "0997c5bd79d11e6ecb11970bfd9b9b911001ac0a",
      "tree": "c95b1fc32cd3980bc59aee4535d9fbe827bfb345",
      "parents": [
        "483a6bbfc118409b9c46b226cf0aa6afdc4d9159"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Fri Aug 02 20:25:02 2013 +0000"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Fri Aug 02 20:25:02 2013 +0000"
      },
      "message": "Revert \"Add version identifier to app ops.\"\n\nThis reverts commit 483a6bbfc118409b9c46b226cf0aa6afdc4d9159.\n\nChange-Id: I91d6b8b8d1789089bf9764e734f7fe59d03151a2\n"
    },
    {
      "commit": "474daa2b7838402a1ef81140a512613e1b37a54e",
      "tree": "d669e3df2bc4f13757f3f13f74efdd27abc07f62",
      "parents": [
        "e242e2f236939ace5930392763057ea1e4fb67cb",
        "ebe51fc0d860077245c44bfb00130be62da001e1"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Fri Aug 02 17:17:38 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 02 17:17:38 2013 +0000"
      },
      "message": "Merge \"Add WorkSource capability to AlarmManager.\""
    },
    {
      "commit": "02260e2141fac0b6a712e4ca63702e657e8e7296",
      "tree": "0a58a90a7a3a050ad10e83422234fa3ef2347401",
      "parents": [
        "cf3f35f322971ed5155a65d3c3fbf28232a35c99"
      ],
      "author": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Fri Aug 02 16:22:04 2013 +0900"
      },
      "committer": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Fri Aug 02 16:22:04 2013 +0900"
      },
      "message": "Add a comment on the spell checker framework\n\nChange-Id: Ibd826d68074d8524cbeaae296ce483f8b10c3d07\n"
    },
    {
      "commit": "2fc324553712f02b3d97b6408b0455ba9efc9dd6",
      "tree": "c04ba497fdc5f99b1ed0909e1ab75ac87856f6fe",
      "parents": [
        "1a4645d03087e743a4704c1b5a51a9ab787bbcab",
        "f1cca18ae460b66242988a8a6204c4a42b6fa1c1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 02 03:34:06 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 02 03:34:06 2013 +0000"
      },
      "message": "Merge \"Try to improve PSS collection.\""
    },
    {
      "commit": "f1cca18ae460b66242988a8a6204c4a42b6fa1c1",
      "tree": "52debee86ff1beec5b5c7660f11285cff3250847",
      "parents": [
        "5d3dff1d66f99fbd5bef9178e62d789119c02ad1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 01 10:50:28 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 01 20:28:36 2013 -0700"
      },
      "message": "Try to improve PSS collection.\n\nThe goal is to collect PSS data from processes when they\nare in as stable a state as possible.  We now have tables\nfor the durations to use for PSS collection based on\nprocess state, and scheduling of collection is all driven\nby process state changes.\n\nChange-Id: I95e076f6971b9c093118e53dc8240fb3f5bad3b2\n"
    },
    {
      "commit": "40e5782f5c79ea660b98b8875086f592367bc1d2",
      "tree": "8fdfd3a5bbe90b996c71e933230b7138505fdaa7",
      "parents": [
        "930524ade21464a4f8cbbf80fed7039f4e813965"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Tue Jul 30 11:36:48 2013 -0700"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Thu Aug 01 14:31:48 2013 -0700"
      },
      "message": "Allow a particular LocationRequest to be excluded from\nAppOps monitoring as long as the client as the appropriate\npermission (UPDATE_DEVICE_STATS).\n\nChange-Id: I7223a53bc1551e6498302a22eb310c8c5b5684b0\n"
    },
    {
      "commit": "930524ade21464a4f8cbbf80fed7039f4e813965",
      "tree": "7c5218fdcdae8f5304270ca6f4d7cd600948e7fc",
      "parents": [
        "8c80a476d966b23b117d12d8762a9611cddddfa3",
        "95990fe4c38641ea574efe9224ae279db61cde0f"
      ],
      "author": {
        "name": "Sascha Prueter",
        "email": "saschap@google.com",
        "time": "Thu Aug 01 13:59:09 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 01 13:59:09 2013 -0700"
      },
      "message": "am 95990fe4: am aa268f8f: am d364859c: Merge \"Add version identifier to app ops.\" into jb-mr2-dev\n\n* commit \u002795990fe4c38641ea574efe9224ae279db61cde0f\u0027:\n  Add version identifier to app ops.\n"
    },
    {
      "commit": "95990fe4c38641ea574efe9224ae279db61cde0f",
      "tree": "635f2ad798183d106764539b1d11041c6da0bf19",
      "parents": [
        "3e2b513cc21f5ae59bd7304aada2afabc54735cb",
        "aa268f8fb2855335fc0d4f181cbf91505448e5eb"
      ],
      "author": {
        "name": "Sascha Prueter",
        "email": "saschap@google.com",
        "time": "Thu Aug 01 13:55:43 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 01 13:55:43 2013 -0700"
      },
      "message": "am aa268f8f: am d364859c: Merge \"Add version identifier to app ops.\" into jb-mr2-dev\n\n* commit \u0027aa268f8fb2855335fc0d4f181cbf91505448e5eb\u0027:\n  Add version identifier to app ops.\n"
    },
    {
      "commit": "b33278f876be7d6399c04d470c40c97979a87ccf",
      "tree": "2f97a189fd43d91948b0b033342ab54d34fb6ee7",
      "parents": [
        "2f3efcf1078b051205c2b6708a79f176fa943d17"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 01 13:55:07 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 01 13:55:07 2013 -0700"
      },
      "message": "Teach PackageManager to skip core-libart.jar\n\nA little grossness for now to support dual booting Dalvik and Art.\n\nWhile I was here, removed isDexOptNeeded calls for boot class path which already return false.\n\nChange-Id: Iaaaf21b7733c1791e7bd8ae27e84c47463f9e9c9\n"
    },
    {
      "commit": "d364859ce657c6b096cadc703485ccef7979c582",
      "tree": "727ea19432c9ba3097ea05c192e07d614bb7039d",
      "parents": [
        "9eb434c3899ce4791ca58affcbe673e5a96ff6b9",
        "483a6bbfc118409b9c46b226cf0aa6afdc4d9159"
      ],
      "author": {
        "name": "Sascha Prueter",
        "email": "saschap@google.com",
        "time": "Thu Aug 01 20:50:01 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 01 20:50:02 2013 +0000"
      },
      "message": "Merge \"Add version identifier to app ops.\" into jb-mr2-dev"
    },
    {
      "commit": "ebe51fc0d860077245c44bfb00130be62da001e1",
      "tree": "9d60bdf605188b125c8b453d346dbb0362776d8c",
      "parents": [
        "8c80a476d966b23b117d12d8762a9611cddddfa3"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Fri Jul 26 13:23:29 2013 -0700"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Thu Aug 01 13:22:40 2013 -0700"
      },
      "message": "Add WorkSource capability to AlarmManager.\n\nChange-Id: I663ea3078d405f0fa667a04bdaa376ae6652e994\n"
    },
    {
      "commit": "e1f886f5e35aa0b4297df85e96716687f3b9517d",
      "tree": "6017deda1afb34e0e6c5c5e91c5eddaaf053accd",
      "parents": [
        "1a02c22d018bf22ab40b2d2d93f750bc7a8135b2",
        "0b8374501975aecd7a628336e2f7e53c272ebeea"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Thu Aug 01 19:24:53 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 01 19:24:53 2013 +0000"
      },
      "message": "Merge \"Add new app op to monitor high power location requests.\""
    },
    {
      "commit": "483a6bbfc118409b9c46b226cf0aa6afdc4d9159",
      "tree": "96c3da4abc0d1a44cd43b6520af16754c29df2bc",
      "parents": [
        "38d4cfd4a19de35c2b16c0f64b26d4b9ed362ede"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 01 11:09:27 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 01 11:15:04 2013 -0700"
      },
      "message": "Add version identifier to app ops.\n\nAll old versions drop their modes except for the notification op\n(which is the only one there is currently a user-visible control for).\n\nChange-Id: I9e09cebe63e9ea81f2adc01aef7d1a5a59f57a56\n"
    },
    {
      "commit": "87d01e9e83f33651872b3f3b2a1492c58d3846b5",
      "tree": "e80861c1c986c9f4dc7da07cc4df1743d44c9307",
      "parents": [
        "9171db279826ee91d64eb9538a504ffed5e53b38",
        "9e6f26a8e1e69b1c49676d60a5ebe36c0a0f23f9"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Aug 01 09:35:16 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 01 09:35:16 2013 -0700"
      },
      "message": "am 9e6f26a8: am f3e2f8fe: am 9eb434c3: Allow the user to block notifications for foreground services.\n\n* commit \u00279e6f26a8e1e69b1c49676d60a5ebe36c0a0f23f9\u0027:\n  Allow the user to block notifications for foreground services.\n"
    },
    {
      "commit": "9e6f26a8e1e69b1c49676d60a5ebe36c0a0f23f9",
      "tree": "72492b4258f2cd075104dde3a4b7049d65e18070",
      "parents": [
        "368d81fe185ed4484e3258a160416e6567896e31",
        "f3e2f8feef1a22708cc7ce1a7bc5d914bb53933d"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Aug 01 09:32:40 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 01 09:32:40 2013 -0700"
      },
      "message": "am f3e2f8fe: am 9eb434c3: Allow the user to block notifications for foreground services.\n\n* commit \u0027f3e2f8feef1a22708cc7ce1a7bc5d914bb53933d\u0027:\n  Allow the user to block notifications for foreground services.\n"
    },
    {
      "commit": "5813f240ec21252b5a79616a67998dd0529986fa",
      "tree": "d689b7d7322cf4eab5e88442913040d2d0f02329",
      "parents": [
        "f296e317fb44ac33fe5294fcfe0cc1218ca5b86c",
        "2380566debfc57eb1cc07db1306ccee23b84ddd4"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Aug 01 16:07:08 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 01 16:07:08 2013 +0000"
      },
      "message": "Merge \"Notification muting conditional to exclusive audio focus request\""
    },
    {
      "commit": "e1cd2931512566232f0306c60d3895b459919098",
      "tree": "cb6a81945549624177337dc247220386d44be7c8",
      "parents": [
        "f4b6daf0ae1dd356f8fe22ea1e08d42c70b23f3b",
        "d1e0fae2bc5c98b1f00b185d7be7219dc7e1d0f7"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Aug 01 06:44:28 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 01 06:44:29 2013 +0000"
      },
      "message": "Merge \"Add accessors for all addresses and clarify compare* methods\""
    },
    {
      "commit": "9eb434c3899ce4791ca58affcbe673e5a96ff6b9",
      "tree": "93dd5e8ce3cc50bebac779efc4fcacf964e9317c",
      "parents": [
        "a99cb5bc41d4493db84c5ee3d9123d4a99df5c53"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Jul 31 20:21:07 2013 -0400"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Aug 01 00:44:57 2013 -0400"
      },
      "message": "Allow the user to block notifications for foreground services.\n\nStepping carefully around the fix in change Idc788527, we\nperform security (and AppOps, and therefore user block)\nchecks against the uid passed to enqueueNotificationInternal\nrather than the Binder caller.\n\nBug: 9502541\nChange-Id: I91745db92823381df75721c1b8f11013a7fa4ecc\n"
    },
    {
      "commit": "fd5d153af8e37ad88b8564408a7dc27fc20e95f0",
      "tree": "13ee5211db2d1c6430776653ca2fca1777eb2dca",
      "parents": [
        "53672be11093e56c47e037b8540d63221ccd2f7f",
        "87c291421544821fe9d10a08ee4e9f31b62d5052"
      ],
      "author": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Thu Aug 01 03:12:35 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 01 03:12:35 2013 +0000"
      },
      "message": "Merge \"Add a debug utility for InputMethodUtils\""
    },
    {
      "commit": "87c291421544821fe9d10a08ee4e9f31b62d5052",
      "tree": "a1ae047d890b29e16de5353e5403a318df3ed8d7",
      "parents": [
        "46fc6a6e3b8c16d66b4880cde59dff43ab1792db"
      ],
      "author": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Wed Jul 31 23:11:54 2013 +0900"
      },
      "committer": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Thu Aug 01 11:57:27 2013 +0900"
      },
      "message": "Add a debug utility for InputMethodUtils\n\nChange-Id: I59f6001bf20640e36e19b09cf117b8579120ba7d\n"
    },
    {
      "commit": "53672be11093e56c47e037b8540d63221ccd2f7f",
      "tree": "9e499048338b528598ee0d9b4b40fe18b194030b",
      "parents": [
        "e303900dbdda25cb09fdc3c6d1f43aa68708713b",
        "55b409a97cf6376399a0940313ea852368727d6f"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Aug 01 02:16:19 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 01 02:16:20 2013 +0000"
      },
      "message": "Merge \"Iteration of the print sub-system.\""
    },
    {
      "commit": "55b409a97cf6376399a0940313ea852368727d6f",
      "tree": "9a919b2d64c469e11d94d6205d44cdd9ab553802",
      "parents": [
        "85b1f883056a1d74473fd9ce774948878f389ab6"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jul 31 17:25:13 2013 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jul 31 18:59:53 2013 -0700"
      },
      "message": "Iteration of the print sub-system.\n\n1. Added APIs for adding partially initialized PrintInfo objects\n   enabling light-weight lookps for print serivces that want to\n   populate the list of available printers without querying each\n   of them for its capabilities. This includes APIs for the system\n   to request from a print service to update certain printers.\n\n2. Fixed a bug in PrinterId#equals().\n\n3. Added equals and hasCode implementaion to PrinterInfo. Also\n   the defaul in PrinterInfo are now an array instead of a\n   SparseArray - cheaper.\n\n4. Now PrintJobConfigActivity works with partially specified\n   printers. Specifically, if such a printer is selected the\n   activity is requesting from the print service to update\n   the printer. We are currently not handling the timeout case.\n   It also handles udpated pritners.\n\nChange-Id: I5e83e924ef597c9e22cbd06a971d4f4d3bd3a9c1\n"
    },
    {
      "commit": "9f1ef00265b4cfd03d024e1fcdc3eaf85b7b8a40",
      "tree": "97afde4a94f05930df9dabc46102e3ef8838fab4",
      "parents": [
        "f94b34f5397d92080c188277b062537480c05b7d",
        "85b1f883056a1d74473fd9ce774948878f389ab6"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Aug 01 00:13:44 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 01 00:13:44 2013 +0000"
      },
      "message": "Merge \"Iteration on the print sub-system.\""
    },
    {
      "commit": "b7c1a17846a306deef62855630bca9f061dc9372",
      "tree": "8ae5cc31c2944f69cbd5d5810dda52c04798fdb5",
      "parents": [
        "af728bd201195799c8e993ece145d607b9ca67df"
      ],
      "author": {
        "name": "Ben Gruver",
        "email": "bgruv@google.com",
        "time": "Tue Jul 23 15:05:28 2013 -0700"
      },
      "committer": {
        "name": "Ben Gruver",
        "email": "bgruv@google.com",
        "time": "Wed Jul 31 16:55:23 2013 -0700"
      },
      "message": "Read intent firewall rules from any xml file in the ifw directory\n\nChange-Id: Ic3358c43a25d3610cfad3e00e70353258850e9a8\n"
    },
    {
      "commit": "552436d17b5e09f66926dfb33901aecd4c5d2dd2",
      "tree": "80c95ea0b6ae8d619b52d01b2bf0c2f38ba08dcc",
      "parents": [
        "af728bd201195799c8e993ece145d607b9ca67df",
        "1aef7fc81a959d9d34d92e3cb018848e0a79b2b7"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Wed Jul 31 23:27:34 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 31 23:27:34 2013 +0000"
      },
      "message": "Merge \"Fix excessive log spew.\""
    },
    {
      "commit": "1aef7fc81a959d9d34d92e3cb018848e0a79b2b7",
      "tree": "8f1404975400b6e3fe6664f11934320ef8d61f34",
      "parents": [
        "99ae1c9f08b193517ea470e9786c3906150cc867"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Wed Jul 31 15:49:04 2013 -0700"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Wed Jul 31 15:49:04 2013 -0700"
      },
      "message": "Fix excessive log spew.\n\nBug: 10115060\nChange-Id: I61fd83071da1224f38757b8d90f58c8d6c41d36b\n"
    },
    {
      "commit": "2380566debfc57eb1cc07db1306ccee23b84ddd4",
      "tree": "4d1073bd9e3c7e3d8a0408a3ee8ca0e3a0582f5b",
      "parents": [
        "3a6f25512c0a682b10961a5a7428e3393ffb0b75"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jul 31 14:19:18 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jul 31 14:37:19 2013 -0700"
      },
      "message": "Notification muting conditional to exclusive audio focus request\n\nSummary of feature:\nDo not mute notifications when speech recognition recording is\n  active, but when an app has requested audio focus with\n  AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE.\n\nImplementation:\nMove definition of AUDIOFOCUS_NONE to AudioManager where other\n  audio focus codes are defined.\nAdd support for querying the current audio focus type.\nWhen audio focus is requested as GAIN_TRANSIENT_EXCLUSIVE, make\n  the corresponding loss by LOSS_TRANSIENT.\nBefore playing a notification, check whether GAIN_TRANSIENT_EXCLUSIVE\n  has been requested.\n\nBug 8251963\n\nChange-Id: I41edc77326b70639d2fdcb4642c53109995b72a8\n"
    },
    {
      "commit": "5b45f2366e97d8c937950285d4dc936fed15d00a",
      "tree": "8a172a3394c32bb8cb4a5d290d501ee4001a6d45",
      "parents": [
        "c580489cb95696ab5f3482aeb9e83f5eb7d68d87",
        "bd61ba5b22f55a70615e128310d365c6175a0a4e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 31 14:18:06 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 31 14:18:06 2013 -0700"
      },
      "message": "am bd61ba5b: am a99cb5bc: (DO NOT MERGE) Fix pub issue #58043: Copy crash in Android 4.3...\n\n* commit \u0027bd61ba5b22f55a70615e128310d365c6175a0a4e\u0027:\n  (DO NOT MERGE) Fix pub issue #58043: Copy crash in Android 4.3...\n"
    },
    {
      "commit": "a99cb5bc41d4493db84c5ee3d9123d4a99df5c53",
      "tree": "4ae782c40eaf91498ef089fb92f52473132c530c",
      "parents": [
        "38d4cfd4a19de35c2b16c0f64b26d4b9ed362ede"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jul 29 18:11:02 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 31 13:48:39 2013 -0700"
      },
      "message": "(DO NOT MERGE) Fix pub issue #58043: Copy crash in Android 4.3...\n\n...when clipboard listener attached\n\nWe need to clear the calling identity before dispatching change\nnotifications.  Also make this more robust, so that in the face\nof any failure we will clean up the broadcast state.\n\nIntegrated from master.\n\nChange-Id: I05e1f76ffd486439535631fe4062dabe94bd2ccf\n"
    },
    {
      "commit": "20f170d6af4d761fa0d73fc05549843a9988bc1f",
      "tree": "dc07fee6814d004f756a69d12c58ba4ce2d821f6",
      "parents": [
        "99ae1c9f08b193517ea470e9786c3906150cc867"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jul 31 13:01:02 2013 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jul 31 13:01:02 2013 -0700"
      },
      "message": "Don\u0027t try to do the work if there isn\u0027t any data.\n\nBug 10056484\n\nChange-Id: I527f592b0bb91bfbfff1d52c3327fe9e2ac53471\n"
    },
    {
      "commit": "9764218ff979f735aee2f1189e3547d5f3b02f83",
      "tree": "657d5e3da05c8882f23aa388fd80679b1171fae2",
      "parents": [
        "46fc6a6e3b8c16d66b4880cde59dff43ab1792db"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Mon Jul 29 17:58:39 2013 -0400"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Wed Jul 31 14:54:03 2013 -0400"
      },
      "message": "Collapse/disable shade when hiding status bar window.\n\nProvide system bar window visibility (showing/hiding) to sysui,\ninformation it did not have before.\n\nUse this new info to disable shade interaction when bars are hiding.\n\nBug: 8682123\nChange-Id: I4105b789866f847582af1c68a703240d773fa71e\n"
    },
    {
      "commit": "d1e0fae2bc5c98b1f00b185d7be7219dc7e1d0f7",
      "tree": "feef126920387019ec91d149ba91ead0ceb8b96b",
      "parents": [
        "a1510c9849d527021b9f14ed3d451bfa8d5f1506"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Jul 31 23:23:21 2013 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Aug 01 00:21:24 2013 +0900"
      },
      "message": "Add accessors for all addresses and clarify compare* methods\n\n1. Add a method to return all addresses and all LinkAddresses on\n   all links (both base links and stacked links). We already had\n   one for routes, but did not yet have any for addresses.\n2. Rename compareRoutes to compareAllRoutes, because unlike the\n   other compare* methods, it looks at all interfaces. Update\n   what appears to be its only caller.\n3. Update the documentation of the compare* methods to match\n   reality (they don\u0027t return lists) and clarify whether they\n   look at all links or only the base link.\n\nChange-Id: Ie22e6c7f163d5de8e407248b45171dc28382d2d3\n"
    },
    {
      "commit": "0766eb045c0e2ecbc4317743b025618654ddea38",
      "tree": "4299a9279f2ccf250c9e29b43b6d36433d08fa71",
      "parents": [
        "5b537bf320f22e892da1d827d54b77f558909a69"
      ],
      "author": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Wed Jul 31 18:30:13 2013 +0900"
      },
      "committer": {
        "name": "Satoshi Kataoka",
        "email": "satok@google.com",
        "time": "Wed Jul 31 18:33:48 2013 +0900"
      },
      "message": "Small refactor on InputMethodUtils\n\nChange-Id: Ie4f797508c02abb13c7fe1be162ec4dc18829925\n"
    },
    {
      "commit": "2841e0afac3782583b541dcd8dead80ad8f6e8ea",
      "tree": "322e8cbf33fc042c53b3c8faf3524427016b3d89",
      "parents": [
        "6d64d5ab84a66f98633acf740414a8848feaa14b",
        "5f221e8f93fff70f8a2e192976aac587b8c9c026"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 31 02:07:25 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 31 02:07:26 2013 +0000"
      },
      "message": "Merge \"If you set an alarm before the epoch, you\u0027re gonna have a bad time\""
    },
    {
      "commit": "5f221e8f93fff70f8a2e192976aac587b8c9c026",
      "tree": "d2cceba1c7000755de96502b1346c98d63e87f90",
      "parents": [
        "f2c89b9ed65116888f1d4a863b7c10c007a49c5d"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jul 30 17:13:15 2013 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jul 30 18:55:01 2013 -0700"
      },
      "message": "If you set an alarm before the epoch, you\u0027re gonna have a bad time\n\nFor apps build against the KLP+ SDK, this will now throw an illegal argument\nexception.  Legacy apps will simply see the alarm delivered immediately.\n\nBug 9965704\n\nChange-Id: Ia103d9529d32640098be324820fe228efa95431d\n"
    },
    {
      "commit": "85b1f883056a1d74473fd9ce774948878f389ab6",
      "tree": "7417d396a98766611636e0123102154f60726737",
      "parents": [
        "0d1daa50f6d180c57f92596501e2e5c0b5ef9997"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jul 24 17:00:06 2013 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jul 30 17:15:11 2013 -0700"
      },
      "message": "Iteration on the print sub-system.\n\n1.  API changes: Moved copies API from PrintAttributes to PrintJobInfo;\n    Changed the PageRange list to an array in PrintDocumentAdapter#onWrite;\n    Added onCancelled method to the layout and write callbacks.\n\n2.  Refactored the serialization of remote layout and write commands. Now\n    the commands are serialized by the code in the client instead in the spooler.\n    The benefit is simple code since the client has to do a serialization to delegate\n    to the main thread anyway. The increased IPC found is fine since these calls\n    are quite unfrequent.\n\n3.  Removed an unused file: IPrintSpoolerObserver.aidl\n\n4.  Added equals and hasCode implementation to PageRange, PrintAttributes,\n    MediaSize, Resolution, Margins, Tray, PrintDocumentInfo.\n\n5.  Added shortcut path for query APIs on PrintJob that return cached values\n    if the print job is in a uncuttable state, i.e. completed or cancelled. Failed\n    print jobs can be restarted.\n\n6.  PrintJobInfo was not properly serialized.\n\n7.  Updated the look of the print dialog to be stable if there is and there isn\u0027t\n    currently selected printer.\n\n8.  PrintJobCOnfigActivity now calls onLayout on every print attributes change\n    but requests a write only on print preview or print button press. Also if the\n    layout did not change the content and it is already written no subsequent\n    call is made. Also if the selected pages change and we already have them\n    no subsequent call to write is made. Also the app is called with print preview\n    attribute set when performing layout and with it cleared after the print button\n    is pressed. A lot of changes making sure that only valid actions are enabled\n    in the activity (looks like a dialog) at a given time frame. The print job config\n    activity is also hidden after we got all the data, i.e. layout and write are done.\n\n9.  The callback from the print spooler to the system are scheduled via messages\n    to avoid lock being held during the call. It was hard to guarantee that since a\n    method holding a lock may be calling one that would like to release the lock\n    at some point to make the callbacks.\n\n10. Print spooler state is persisted only if something changes in a completed\n    print job, i.e. not one that is being constructed due the print job config dialog.\n\n11. Fixed a potential race in the RemotePrintSpooler where it was possible that\n    a client that got a handle to the remote spooler calls into an unbound spooler.\n    E.g: the client gets the remote interface with a lock held, now the client releases\n    the lock to avoid IPC with a lock, during the IPC scheduling the spooler has\n    notified the system that it is done and the system unbinds from it, now the\n    client\u0027s IPC is made to a spooler that is disconnected.\n\nChange-Id: Ie9c42255940a27ecaed21a4d326a663a4788ac9d\n"
    },
    {
      "commit": "0b8374501975aecd7a628336e2f7e53c272ebeea",
      "tree": "bc67bcfdcb3ecf463dbd2d828526991f4f62e32f",
      "parents": [
        "d8501485e30c1184292f15349b9e439343ff5b60"
      ],
      "author": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Mon Jul 29 16:02:13 2013 -0700"
      },
      "committer": {
        "name": "David Christie",
        "email": "dnchrist@google.com",
        "time": "Tue Jul 30 14:59:33 2013 -0700"
      },
      "message": "Add new app op to monitor high power location requests.\n\nThis is a new op parallel to the existing OP_MONITOR_LOCATION\nbut only tracks those requests deemed to be above a\npower threshold.\n\nChange-Id: I76fe4d9d2e550293b9da6d5cf902a5b4dd499f0f\n"
    },
    {
      "commit": "805f52d4cf9bd84cd2e61a1fb96ef631b73b5aed",
      "tree": "f164a7b66a8907d7e24d75a31508c2b55646dbf6",
      "parents": [
        "4d4a137bf5f861bce744c113744718066e1f214e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 30 12:48:12 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 30 12:48:12 2013 -0700"
      },
      "message": "Report more memory tuning info.\n\nChange-Id: I243d67189e325eba5ea22e79937f5a858dfceeed\n"
    },
    {
      "commit": "cc4bee55fa58193073f5ba5ccebc0cc24fdb45c7",
      "tree": "54789fdc6b61d6b476f8bd4b77caf0d84f71fb29",
      "parents": [
        "6c3e7b5f0578aee0c49fa2bd4c1ba2572a9d0726",
        "8fcad020e0c256be1948e42df19d43f53f9f5804"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Jul 30 09:57:21 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 30 09:57:21 2013 -0700"
      },
      "message": "am 8fcad020: Merge \"Make legacy VPN work over stacked interfaces.\"\n\n* commit \u00278fcad020e0c256be1948e42df19d43f53f9f5804\u0027:\n  Make legacy VPN work over stacked interfaces.\n"
    },
    {
      "commit": "6c3e7b5f0578aee0c49fa2bd4c1ba2572a9d0726",
      "tree": "6cd67ff4a31c984e5d512b33c49f3f58e8f91b41",
      "parents": [
        "c2314cf5f4efa2cc767e0069dcc2a67e12d7cd20",
        "158840079a501784c76e9816b215b3a1839074ef"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Jul 30 09:57:18 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 30 09:57:18 2013 -0700"
      },
      "message": "am 15884007: Merge \"464xlat: use a gatewayed route, not point-to-point\"\n\n* commit \u0027158840079a501784c76e9816b215b3a1839074ef\u0027:\n  464xlat: use a gatewayed route, not point-to-point\n"
    },
    {
      "commit": "bc8f82fb1fc7485937fb2e542ebe6ae1ddd2e0d7",
      "tree": "031d318557ffd63cc234b20165df59537a81738b",
      "parents": [
        "efa73c05f7fb0bc8bf9a50604d5c2f65a1a68697"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Fri Jun 28 17:26:21 2013 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Jul 31 01:14:30 2013 +0900"
      },
      "message": "Make legacy VPN work over stacked interfaces.\n\nOn stacked interfaces like 464xlat, Legacy VPN can\u0027t find the\ndefault gateway because it uses getRoutes, which only returns\nroutes for the base link and not for the stacked links. It also\nassumes that the interface that the default route points to is\nthe interface for the base link (e.g., rmnet0) instead of the\ninterface the route actually points to (e.g., clat4).\n\nFix this by calling getAllRoutes to find the default IPv4 route,\nand get the interface name from the route we find instead of\nassuming it\u0027s the base interface.\n\nBug: 9597516\nChange-Id: Ia6ce0b6258a421cd22f60dedca7e94176b32176b\n"
    },
    {
      "commit": "efa73c05f7fb0bc8bf9a50604d5c2f65a1a68697",
      "tree": "54b20cbff21243093441d34b540d250dc4de58f8",
      "parents": [
        "b7dfa02766fef8c32f6217f427a47ad519d1d9f0"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Jun 17 11:10:27 2013 -0700"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Jul 31 01:09:53 2013 +0900"
      },
      "message": "464xlat: use a gatewayed route, not point-to-point\n\nVarious applications such as Skype and our legacy VPN code\ndo not understand routes pointed directly at point-to-point\ninterfaces and require a default gateway IPv4 address in\norder to function.\n\nGrudgingly accept that routes without default gateways Are Hard\nand use gatewayed routes instead. This causes routing to go from:\n\ndefault dev clat4  scope link\n\nto:\n\ndefault via 192.0.0.4 dev clat4  scope link\n192.0.0.4 dev clat4  scope link\n\nand those apps now work.\n\nBug: 9597256\nBug: 9597516\nChange-Id: I7b7890873802d3cb99affd6eb70b8ab75e7a2cf6\n"
    },
    {
      "commit": "8ac59af92cf8e7da1c4cbdd7ca7f6ec23bdb8e73",
      "tree": "aeca448a074f8143c0333e3bc967cf64f6ff2b5b",
      "parents": [
        "c743dfd5a9caffcfabe21cc515feb35afd70d405",
        "7986fe490d86e92240ad1a2d8d20e01c8bb4b48c"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Tue Jul 30 15:57:19 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 30 15:57:19 2013 +0000"
      },
      "message": "Merge \"Fix of RTE from SyncOperation.compare()\""
    },
    {
      "commit": "7986fe490d86e92240ad1a2d8d20e01c8bb4b48c",
      "tree": "1b8fda3dfcb3ae89d9d5c155dd7c647842ddfa37",
      "parents": [
        "0350f4167fab99a3f36c3c96b402301dcfe81782"
      ],
      "author": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Mon Jul 29 16:56:23 2013 -0700"
      },
      "committer": {
        "name": "Matthew Williams",
        "email": "mjwilliams@google.com",
        "time": "Tue Jul 30 08:52:31 2013 -0700"
      },
      "message": "Fix of RTE from SyncOperation.compare()\n\nChange-Id: I2e291b0c0bb9ae6a190d6cdfa9aef8b4bf33d617\n"
    },
    {
      "commit": "821a90df96bf4be160b08db6ccaea48bc80e1291",
      "tree": "4712a25a5c57cd19eef1de6fc94cec08dbfe86ea",
      "parents": [
        "a75246951f5e79889fe4791332d5e77e0cc9b30b",
        "f0989840a00e53751241d0c97bf0e5a1866f6d4c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 30 01:46:30 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 30 01:46:30 2013 +0000"
      },
      "message": "Merge \"Fix pub issue #58043: Copy crash in Android 4.3...\""
    },
    {
      "commit": "a75246951f5e79889fe4791332d5e77e0cc9b30b",
      "tree": "d911644a0eac6d3197d24115074f7b069d946b8f",
      "parents": [
        "37987ef17a821a8b3d8e1968a8bee0943aee3b7a",
        "09397ba3d5a25fd0a2ed8e315a82b5df694c5c9a"
      ],
      "author": {
        "name": "Jonathan Dixon",
        "email": "joth@google.com",
        "time": "Tue Jul 30 01:22:18 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 30 01:22:18 2013 +0000"
      },
      "message": "Merge \"Make WebViewProvider constants private\""
    },
    {
      "commit": "f0989840a00e53751241d0c97bf0e5a1866f6d4c",
      "tree": "b3df9998dca37cc000ded046bb49070c6b06a455",
      "parents": [
        "6077115d74a17ee14ce18c0bc8a2758ef00a636b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jul 29 18:11:02 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jul 29 18:11:02 2013 -0700"
      },
      "message": "Fix pub issue #58043: Copy crash in Android 4.3...\n\n...when clipboard listener attached\n\nWe need to clear the calling identity before dispatching change\nnotifications.  Also make this more robust, so that in the face\nof any failure we will clean up the broadcast state.\n\nChange-Id: I305a8a62738595f1fe5643a063099de5ed7cb062\n"
    },
    {
      "commit": "37987ef17a821a8b3d8e1968a8bee0943aee3b7a",
      "tree": "aa1587056ffc944cd4e335a49564397641afcc4a",
      "parents": [
        "6077115d74a17ee14ce18c0bc8a2758ef00a636b",
        "072252cd486b260192f26dfb8e67ffd454b10a59"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jul 30 00:49:10 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 30 00:49:11 2013 +0000"
      },
      "message": "Merge \"Fix permission privilege w.r.t. updated system apps\""
    },
    {
      "commit": "6077115d74a17ee14ce18c0bc8a2758ef00a636b",
      "tree": "b865e36b818f15396cac44ad5cde2e352662a750",
      "parents": [
        "26faecc85ec3e809135b287173997e97fcb8fc30",
        "635a6d5a0b922b5d845b6e2c7ec8453b14fe4b01"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 30 00:45:37 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 30 00:45:37 2013 +0000"
      },
      "message": "Merge \"Fix some oom tuning and display size stuff.\""
    },
    {
      "commit": "635a6d5a0b922b5d845b6e2c7ec8453b14fe4b01",
      "tree": "23293a5c8a3f49937d7a9a10678f8b3b31b951da",
      "parents": [
        "bf36ee2b0c49241e073da14ee1e1a08b8550f3b9"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jul 29 17:15:38 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jul 29 17:17:31 2013 -0700"
      },
      "message": "Fix some oom tuning and display size stuff.\n\nFix a problem where we would not respect the device\u0027s\noverride display density/size if those had been reset at\nsome point (to an empty string).\n\nTweak the tuning of low RAM devices to consider 480x800 as\nthe base line resolution.  That is our target these days.\n\nImprove output of oom and meminfo to include this tuning\ninformation.\n\nChange-Id: Ic9a85b0391b075178c4ac17e64086ef21889f430\n"
    },
    {
      "commit": "072252cd486b260192f26dfb8e67ffd454b10a59",
      "tree": "f1b54f7c410c19a8758d55fc36dbdeb5d2b1b1ba",
      "parents": [
        "d8501485e30c1184292f15349b9e439343ff5b60"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jul 29 14:20:15 2013 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jul 29 17:13:35 2013 -0700"
      },
      "message": "Fix permission privilege w.r.t. updated system apps\n\nNote that it is *intentional* that even a privileged app cannot\nadd new privileged permissions via unbundled update.  The set of\nprivileged permissions granted is strictly limited to those used\nby the apk file installed as privileged.\n\nBug 10027033\n\nChange-Id: I974bae0671c1962e4526d51dd9a0c53bcd27323e\n"
    },
    {
      "commit": "26faecc85ec3e809135b287173997e97fcb8fc30",
      "tree": "e3fc2d61264d13482b9da04f9c77d85d9965eb10",
      "parents": [
        "0350f4167fab99a3f36c3c96b402301dcfe81782"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Wed May 22 18:54:48 2013 -0700"
      },
      "committer": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Tue Jul 30 00:02:04 2013 +0000"
      },
      "message": "BatteryService use IBatteryProperties interfaces, drop JNI\n\nIBatteryPropertiesListener binder interface to deliver notifications of\nchanged battery/power status from healthd system health daemon.  healthd\nwatches uevents from power_supply.\n\nChange-Id: I1ab38622baf28356a6627fe2354b77e2ef99d838\n"
    }
  ],
  "next": "09397ba3d5a25fd0a2ed8e315a82b5df694c5c9a"
}
