)]}'
{
  "log": [
    {
      "commit": "35f72be50b8a2d11bce591dcdac5dc3fa336dac0",
      "tree": "d6ababee2a2ac0c48a645e923c28e2d5d0842cbd",
      "parents": [
        "af672998af7fb0bba90f7d56504584a63ff189fa"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Sep 16 10:57:39 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Sep 16 14:05:34 2013 -0700"
      },
      "message": "Implement issue #10691359: Kill long-running processes\n\nWe now have the activity manager kill long-running processes\nduring idle maintanence.\n\nThis involved adding some more information to the activity manager\nabout the current memory state, so that it could know if it really\nshould bother killing anything.  While doing this, I also improved\nhow we determine when memory is getting low by better ignoring cases\nwhere processes are going away for other reasons (such as now idle\nmaintenance).  We now won\u0027t raise our memory state if either a process\nis going away because we wanted it gone for another reason or the\ntotal number of processes is not decreasing.\n\nThe idle maintanence killing also uses new per-process information\nabout whether the process has ever gone into the cached state since\nthe last idle maintenance, and the initial pss and current pss size\nover its run time.\n\nChange-Id: Iceaa7ffb2ad2015c33a64133a72a272b56dbad53\n"
    },
    {
      "commit": "c0046f216793a7bc0ea615333a200582b626e3ab",
      "tree": "be3cfc54b874a19e3884921ebfa38cb8b3e53965",
      "parents": [
        "96661c42d0643c129fed60678aa0b8f99d32b456"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Sep 04 15:39:51 2013 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Sep 04 15:39:51 2013 -0700"
      },
      "message": "Add #! to \u0027am\u0027 shell script\n\nShell script needs to start with #! for exec().\n\nBug 10606037\n\nChange-Id: I594da6f0433e838dcf5b45b991188ceaa52d9bd1\n"
    },
    {
      "commit": "2132198d052ca68a6aa2433274f12203a71451df",
      "tree": "27d4417c33c161c41cfb09b0c24900a3507186ca",
      "parents": [
        "39c9c63295ad972a82076676a6cdaf34d9508f62"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Aug 22 15:01:15 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Aug 22 15:01:15 2013 -0700"
      },
      "message": "Fix check for default source in input command\n\nChange-Id: I30b062e78c7d4de59a5530999e6332ba3053f7c9\n"
    },
    {
      "commit": "5827cb5059ed0eec4c73adf1acbd7ee47b2c5c8f",
      "tree": "efcece724190c59e9123196c5b648d927701013f",
      "parents": [
        "3a6f25512c0a682b10961a5a7428e3393ffb0b75"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Fri Jul 26 14:58:06 2013 -0400"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu Aug 01 12:52:21 2013 -0400"
      },
      "message": "Changes needed to support Skia at r10377.\n\nChange-Id: Id1e1c8c5938ee1a33c6fa3caabd2c28e89243eb4\n"
    },
    {
      "commit": "b251f3d0c619c37cc4e4b8d9f8b95eb377423190",
      "tree": "6d20a30329dde7d637fa75751c981a12c7f0f408",
      "parents": [
        "3f44fae1dd18aa3f57aed7cc5f1261d1713b0a89"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 26 14:49:41 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 26 14:58:00 2013 -0700"
      },
      "message": "get rid of HAL pixelformats 5551 and 4444\n\nChange-Id: I6a6c4c656d80280eb85f90f99f35721ffca285df\n"
    },
    {
      "commit": "6f7b58917104916ee6afd6f246c251c1d7a2102a",
      "tree": "e891b7ff6e9e0b591ecd8a9bbf0619dbf759d9cd",
      "parents": [
        "3de52c67e5fa0f2cc8ddfb4d0ab4f206274e0054"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 25 17:25:02 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 25 17:25:02 2013 -0700"
      },
      "message": "get rid of PIXEL_FORMAT_A_8\n\nChange-Id: Ia750811f08ddebdd5818da211fd03d61b75f8e97\n"
    },
    {
      "commit": "57a7f5954cf1f9cbe99c70133863049a4be2e983",
      "tree": "a657b5ca567729d7d2b94af792c6dc6540e522ed",
      "parents": [
        "5cf6663c80a9b6039cc70cc9b4041af64f671571"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jul 22 18:21:32 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 23 11:51:22 2013 -0700"
      },
      "message": "Add \"adb shell am restart\" command.\n\nSo you can restart the system without being root.\n\nChange-Id: I89770f497833ecbe2b69e3a0cfafae7ef472a9f5\n"
    },
    {
      "commit": "77a2dabf01039da8dfe0bf43d41b223d79a8c9d2",
      "tree": "f40e160b0b2e305e6c14fcb33993b633a018eb61",
      "parents": [
        "d55e18eceac46160440054c6725b3461a1ccc1dd"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Jul 22 13:58:45 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Jul 22 13:58:45 2013 -0700"
      },
      "message": "Fix swipe end location\n\nChange-Id: I997ca30dc5399b36e13516c4aeadbdf6fa357df7\n"
    },
    {
      "commit": "5712ca7f2e6ac0c7914875a580380fb363e86566",
      "tree": "9390575a9eccd35c6b1cb04efe2d3eac41e3c70a",
      "parents": [
        "a5bc070e9e7c802b32f0230c670838536a1612f4",
        "9d83b4783c33f1fafc43f367503e129e5a5047fa"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Jul 19 22:44:01 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 19 22:44:01 2013 +0000"
      },
      "message": "Merge \"Allow duration without source to be set for input commands\""
    },
    {
      "commit": "9d83b4783c33f1fafc43f367503e129e5a5047fa",
      "tree": "54cdb3d9f8528ad6e10329adb2c1d3c4d3ee8e2a",
      "parents": [
        "8f5e3d13e166e4873e130a5ef7c987333dbac917"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Jun 20 21:14:58 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Jul 17 16:04:03 2013 -0700"
      },
      "message": "Allow duration without source to be set for input commands\n\nChange-Id: Ib04badeddf0e9d6ff1b275da34ad259f59c1cbbd\n"
    },
    {
      "commit": "ef691179799c11eceea0f118f79a32c47ca9ae96",
      "tree": "7461b46fcfaa60c0511bcf1cab267a8e72043596",
      "parents": [
        "6c1c0b6cbecf0cd0486a9a781da5e6f9bd2c0eaa"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 15 13:22:04 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 15 15:08:39 2013 -0700"
      },
      "message": "Remove dead code in system server initialization.\n\nSystem server always forks from Zygote so we no longer need\nthe system_server executable which was probably broken anyhow.\nThis makes the initialization sequence slightly more intelligible.\n\nLikewise, we don\u0027t need the GrimReaper anymore because init\nwill automatically take care of restarting the system when the\nservice manager dies.\n\nChange-Id: I02c88d9392f7c8133d9cde9d0d978da89ed80452\n"
    },
    {
      "commit": "f2ca6e271758e6f2b476ca909821e63e30c1c09b",
      "tree": "bb769f9afc10e6c82475646307d6ecf6d170c358",
      "parents": [
        "4a9095007ddf2ec763ad7133e9ac8c62c3f53a4e"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jul 11 09:30:26 2013 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jul 11 09:32:30 2013 -0700"
      },
      "message": "Add stopservice command to am\n\nChange-Id: I639ad418750c0e1825b330b3bd56e5628926e7f1\n"
    },
    {
      "commit": "5fa9f2b127c2d7c40da419540f3425ac45a89439",
      "tree": "bd89a1499b9b080938ce48420ceea7efdfefc4ab",
      "parents": [
        "57b867f3f568b026833c6208afdeff2168838ffd",
        "655d0e2029e6ae77a47e922dce4c4989818b8dd1"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Jun 26 23:04:32 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 26 23:04:32 2013 +0000"
      },
      "message": "Merge \"Single-user restrictions\""
    },
    {
      "commit": "655d0e2029e6ae77a47e922dce4c4989818b8dd1",
      "tree": "67a9e2261c5e61f5a1b8f7f4f8cfcca5b433046c",
      "parents": [
        "bf991a8f426921c26e21e54e493781e1d5eb39ff"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Jun 12 14:19:10 2013 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Jun 25 16:03:55 2013 -0700"
      },
      "message": "Single-user restrictions\n\nIntroduces a new \"blocked\" state for each package. This is used to temporarily\ndisable an app via Settings-\u003eRestrictions.\n\nPIN creation and challenge activities for use by Settings and other apps. PIN\nis stored by the User Manager and it manages the interval for retry attempts\nacross reboots.\n\nChange-Id: I4915329d1f72399bbcaf93a9ca9c0d2e69d098dd\n"
    },
    {
      "commit": "4d7dc1a2b1c70ba1837b22e01c5f468d1ad0adc2",
      "tree": "6f4018a7f321a828acaefffe7738bdc1340b8a5c",
      "parents": [
        "95e6aea3676b6b6a851ffc2ec7cd9fbc87b4fae7"
      ],
      "author": {
        "name": "Evan Charlton",
        "email": "evanc@google.com",
        "time": "Tue Jun 25 14:37:02 2013 -0700"
      },
      "committer": {
        "name": "Evan Charlton",
        "email": "evanc@google.com",
        "time": "Tue Jun 25 14:49:08 2013 -0700"
      },
      "message": "Fix a typo\n\ns/will/while/ for the --no-window-animation explanation.\n\nChange-Id: Ia068809d385cc4f54f9603a8713a581fd4f59440\n"
    },
    {
      "commit": "fd1ce8d5a7aa1ec6c7324b171f7e7a15a95f8759",
      "tree": "dedf586add0c31549fc74e4caed43da92f784628",
      "parents": [
        "d213beae7539d8feb7cf1ba8f25f9769f5890e0b"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Jun 17 16:15:42 2013 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Jun 17 18:34:28 2013 -0700"
      },
      "message": "Add new API getStackBoxInfo\n\nChange-Id: Ie2861e5e31bb3876cfe2d5c3d04ff58bb3955634\n"
    },
    {
      "commit": "cbfd23ee6f14445c3e17c5169abbc80c216fa137",
      "tree": "9e5063fe418c4df345b371a0678faa4a1fcb0c48",
      "parents": [
        "be4e6aaa0252dd7da28b7aa85beba982538efa46"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 11 14:26:53 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 11 14:26:53 2013 -0700"
      },
      "message": "Add new API to retrieve a dumpsys of a single package.\n\nAdds a platform API, and pm command.  Fixes some issues with\ndumping per-package data in package manager, makes battery\nstats able to dump per-package state.\n\nChange-Id: I76ee6d059f0ba17f7a7061886792b1b716d46d2d\n"
    },
    {
      "commit": "5a449154d1795abe8e44b7bfe821d640b145e2c6",
      "tree": "e8a9936e1e39aa01b8d217ff36eab0e9e57715f6",
      "parents": [
        "5ff12101722874f5e7b0cadf06f4c53f4ec4b917"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri May 24 15:49:29 2013 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri May 24 16:12:57 2013 -0700"
      },
      "message": "Convert API refs to StackBox from ActivityStack.\n\n- Removed IActivityManager.getStacks() since getStackBoxes() is better.\n- Made createStacks operate relative to StackBox instead of TaskStack.\n- Made resizeStack into resizeStackBox.\n\nChange-Id: I7a0e1f4e34f399b4fd1180c60cc3989f9c2433f3\n"
    },
    {
      "commit": "5ff12101722874f5e7b0cadf06f4c53f4ec4b917",
      "tree": "ad1a1d7af2e94046c486e3cca357a5be6ad3bf4f",
      "parents": [
        "6d90fed076fad7874e04833110bb1d63cdbc7eac"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri May 24 12:50:15 2013 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri May 24 12:50:15 2013 -0700"
      },
      "message": "Add retrieval of StackBox info for more flexibility\n\nFirst step in permitting StackBoxes to be manipulated by user.\nNecessary for Configuration changes coming down.\n\nChange-Id: I4029926a35e4fdc59a5759fd9e4bae10bb308413\n"
    },
    {
      "commit": "1602ec21883f73c5eb2304cf69d2278f70b145ab",
      "tree": "c7a4728753d07f41ac00905d77965d566587cf78",
      "parents": [
        "a5ca95a889236e72f08033bab426c8acee35ce90"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sun May 12 10:24:27 2013 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon May 13 14:39:39 2013 -0700"
      },
      "message": "Log stack issues and start resize effort.\n\n- Modify Am.java to accept \u0027stack resize\u0027 command.\n\n- Add logging for assigning home stack to non-home task to track down\nbug. And maybe fix bug.\n\n- Add template parameter to ArrayList.\n\nChange-Id: Ia73182afc20e9e4430ddadebae034cecb3798eec\n"
    },
    {
      "commit": "befa8b5553046bf46ae59b5d7f9980f513db5d0c",
      "tree": "7deab380c9fd19d50cf300714a09410f5603f3b8",
      "parents": [
        "c5356f6dec3e284b75ba0746d3ec3f3c4a1eff2e"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Sun May 12 23:10:39 2013 -0700"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Sun May 12 23:10:39 2013 -0700"
      },
      "message": "Revert \"Log stack issues and start resize effort.\"\n\nBug: 8935057\n\nThis reverts commit b0245edae86b5811ea743c0f4cea095488304b1a.\n"
    },
    {
      "commit": "b0245edae86b5811ea743c0f4cea095488304b1a",
      "tree": "4ef50af623f742e93013cff244b1e3512a2ba352",
      "parents": [
        "5457e61f64e625be35f997ee3865ef61a2133468"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sun May 12 10:24:27 2013 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sun May 12 10:27:38 2013 -0700"
      },
      "message": "Log stack issues and start resize effort.\n\n- Modify Am.java to accept \u0027stack resize\u0027 command.\n\n- Add logging for assigning home stack to non-home task to track down\nbug. And maybe fix bug.\n\n- Add template parameter to ArrayList.\n\nChange-Id: If904c3ead623464ff5863b7241c68c1b7573bcf4\n"
    },
    {
      "commit": "1519882f524579a30e9569c7f0def32193b45591",
      "tree": "1f6d259c0f4036a29bcbeeb9e531bae076e85ac9",
      "parents": [
        "2d4edcf2e1ef94ef83e02ec2ad075b3603282812",
        "4bdc882800d4bab85ca2a99ee4369e62c6fd01cc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 09 23:58:42 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 09 23:58:42 2013 +0000"
      },
      "message": "Merge \"surfaceflinger is now always running in its own process\""
    },
    {
      "commit": "b14e42f1211940baa76b15589bfa696611fea87f",
      "tree": "af6f98e6617f1227dcdaacea72d5f0bd82d6a19e",
      "parents": [
        "203a91a6cae0e3272e9b3becefc862d2c8a72e10",
        "efa92b2182ab581873aa8e75d596e2e363bd5e6d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 09 22:30:30 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 09 22:30:30 2013 +0000"
      },
      "message": "Merge \"Cleanup some of the thread merging.\""
    },
    {
      "commit": "4bdc882800d4bab85ca2a99ee4369e62c6fd01cc",
      "tree": "02571bd1ac8963fbc84d6ceae7d2fd4767fe589f",
      "parents": [
        "203a91a6cae0e3272e9b3becefc862d2c8a72e10"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 09 14:48:17 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 09 14:57:05 2013 -0700"
      },
      "message": "surfaceflinger is now always running in its own process\n\nChange-Id: I4e04e1aa181b3ebe661354edd0b8dbbfd7a623a6\n"
    },
    {
      "commit": "1f5762e646bed2290934280464832782766ee68e",
      "tree": "123bcdf3ba4c98f885631b02bb90803b7885e438",
      "parents": [
        "9f3e1175657425115e863fdb256b83cadedc33e9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 06 20:20:34 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 07 17:09:46 2013 -0700"
      },
      "message": "libutils clean-up\n\nChange-Id: I11ee943da23a66828455a9770fc3c5ceb4bbcaa9\n"
    },
    {
      "commit": "efa92b2182ab581873aa8e75d596e2e363bd5e6d",
      "tree": "0fe7d35d9678db9416c61cdcc84defd59253c384",
      "parents": [
        "9f3e1175657425115e863fdb256b83cadedc33e9"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 03 14:11:43 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 07 15:33:26 2013 -0700"
      },
      "message": "Cleanup some of the thread merging.\n\nAdds an optimization for checking whether a looper is stuck,\nwith a new Looper method to see if its thread is currently\nidle.  This will allow us to put a large number of loopers\nin the monitor efficiently, since we generally won\u0027t have to\ndo a context switch on each of them (since most looper threads\nspend most of their time idle waiting for work).\n\nAlso change things so the system process\u0027s main thread\nis actually running on the main thread.  Because Jeff\nasked for this, and who am I to argue? :)\n\nChange-Id: I12999e6f9c4b056c22dd652cb78c2453c391061f\n"
    },
    {
      "commit": "1d69bad411123913d32342864454b09ae39dab2c",
      "tree": "1ed91eb3bc121b8509ea65b4404ebc565223d880",
      "parents": [
        "1d41cae973579c07e1594d0496a1847cd644b8c0",
        "a98b0ff812fb204eaa93e4cda848b054d70bbff0"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue May 07 10:14:28 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue May 07 10:14:46 2013 -0700"
      },
      "message": "resolved conflicts for merge of a98b0ff8 to master\n\nChange-Id: I1f4a952d360c48426e22a7772726b6867cc19771\n"
    },
    {
      "commit": "add582122dcec5aeb20d9e8f8c49348e00a5fe76",
      "tree": "eab3b5e88db580b7865d277abd45e27b77a2d15e",
      "parents": [
        "cfba6a07fd24559bfb6bb51007520b8ca3cd5c48",
        "485d7a31a8a07c825281cbae789ca0d04f3949d7"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue May 07 09:47:34 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue May 07 09:51:31 2013 -0700"
      },
      "message": "resolved conflicts for merge of 485d7a31 to master\n\nChange-Id: I058e19af8732df44457bdc614ee810a642dc25e4\n"
    },
    {
      "commit": "a98b0ff812fb204eaa93e4cda848b054d70bbff0",
      "tree": "7e18358abeb46e02938d599babc172d8c1a9ab0a",
      "parents": [
        "1bc3e39ab48936bf82b8c11688ba0939e0866a44",
        "d43a71dad80dfca65b0758f4333360516f6ad300"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 06 16:48:16 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 06 16:48:16 2013 -0700"
      },
      "message": "am d43a71da: Merge \"Help for the debugging help for issue #8734824.\" into jb-mr2-dev\n\n* commit \u0027d43a71dad80dfca65b0758f4333360516f6ad300\u0027:\n  Help for the debugging help for issue #8734824.\n"
    },
    {
      "commit": "8bd64df2adb26fe9547ae3961a58631e241b613e",
      "tree": "060a9ddad01b6dfd4f24abdd323a9b0873b32982",
      "parents": [
        "5b88a2fd7b77880f6e09ae4a1de509bebe28bc3a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 06 16:07:26 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 06 16:07:26 2013 -0700"
      },
      "message": "Help for the debugging help for issue #8734824.\n\nAdd a new \"hang\" am command that lets you hang the system\nprocess.  Useful for testing.\n\nChange-Id: Ice0fc52b49d80e5189f016108b03f9fd549b58a7\n"
    },
    {
      "commit": "485d7a31a8a07c825281cbae789ca0d04f3949d7",
      "tree": "b121ac3a4a1f425e35cdc99df57f686d628eb4a5",
      "parents": [
        "966b340e7d18b78c74a07379bbd08a426e84d8ce",
        "5b88a2fd7b77880f6e09ae4a1de509bebe28bc3a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 06 13:47:04 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 06 13:47:04 2013 -0700"
      },
      "message": "am 5b88a2fd: Debugging help for issue #8734824: WATCHDOG KILLING SYSTEM PROCESS\n\n* commit \u00275b88a2fd7b77880f6e09ae4a1de509bebe28bc3a\u0027:\n  Debugging help for issue #8734824: WATCHDOG KILLING SYSTEM PROCESS\n"
    },
    {
      "commit": "5b88a2fd7b77880f6e09ae4a1de509bebe28bc3a",
      "tree": "19cb92ba626d8b207cfba3ae2b57d623c209a093",
      "parents": [
        "996f6b048ba03ca727c40e1bc33100bf45c93518"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 03 16:25:11 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 06 11:16:18 2013 -0700"
      },
      "message": "Debugging help for issue #8734824: WATCHDOG KILLING SYSTEM PROCESS\n\nIActivityController has a new callback which the Watchdog calls\nwhen it detects that the system process is hung.  This may be\nuse full monkey.  All hail the monkey!\n\nAlso add a new private feature to Binder to be able to turn off\nall incoming dump() calls to a process.  The watchdog uses this\nwhen it reports it is hung, so that if someone, say, wants to\ncollect a bug report at this point they won\u0027t get stuck waiting\nfor things that are all busted.\n\nChange-Id: Ib514d97451cf3b93f29e194c1954e29f948c13b1\n"
    },
    {
      "commit": "09ab7ef9f76d7e1a614ee8a8be915d06894f8d37",
      "tree": "2e2aed0fdeda463536d305955d3a9c918b14e0cc",
      "parents": [
        "fd0b0072db6d89c85a5ea20383a1c3dc289d1d38",
        "b3f6687756ffb660f834ef673bed04b2d4a26d21"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Apr 29 22:50:43 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Apr 29 22:50:43 2013 -0700"
      },
      "message": "resolved conflicts for merge of b3f66877 to jb-mr2-dev-plus-aosp\n\nChange-Id: I4e3c1e1c5613284c60afc9ce6639624abe08df0d\n"
    },
    {
      "commit": "11744d15364b16a976413599933ed1b1d59e4a6f",
      "tree": "ecbb01b787716613b3560e5085e7f00113d15ad4",
      "parents": [
        "f1301d86fb7f414330b08dd9514436e65ba69ceb"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 29 15:22:10 2013 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 29 15:31:10 2013 -0700"
      },
      "message": "Add longpress support to keyevent.\n\nChange-Id: I578cb7dd910425ce07fbe56412a4dc2e0c379e65\n"
    },
    {
      "commit": "f1301d86fb7f414330b08dd9514436e65ba69ceb",
      "tree": "b0a1944d373ec02db2c33e45008da173138fb8a5",
      "parents": [
        "b98212925e41e9420ce6fefc3fe204b29c8f7a83",
        "b3f6687756ffb660f834ef673bed04b2d4a26d21"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 29 15:29:13 2013 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 29 15:29:13 2013 -0700"
      },
      "message": "Merge commit \u0027b3f66877\u0027 into afdmerge\n\nChange-Id: I319863cf23b2e6eacfa4508f7b111fba7b1cbc24\n"
    },
    {
      "commit": "2ac9d8d0f0ea65aae6ba43490b5be6617ad97125",
      "tree": "ee0f4a0b48a193a4e9d26ede2a0297a53f90cfc6",
      "parents": [
        "bd1730dec7356e042ee885ff4a63b40f36733062"
      ],
      "author": {
        "name": "Diego Torres Milano",
        "email": "dtmilano@gmail.com",
        "time": "Thu Apr 04 13:44:34 2013 -0400"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 29 22:05:24 2013 +0000"
      },
      "message": "input: added support for multiple keyevents\n\n- Multiple keyevents can now be send from the command line:\n\n    input keyevent \u003ckey code number or name\u003e ...\n\n  Sometimes invoking \u0027input\u0027 repeatedly does not send the events fast\n  enough, this change solves the problem by allowing multiple key code\n  number or names be added to the command line.\n\nChange-Id: I0d0f34bddd99e0195c9badff2f8b3e2aa9a51737\n"
    },
    {
      "commit": "68a032936e5922ddda271c751400b64712f8f03b",
      "tree": "2bda3f644de040b8774a89910dedd7b407be6ca0",
      "parents": [
        "027f84c310158edfc94d94ab0ef0480843d49d3b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 23 15:30:45 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Apr 25 14:09:21 2013 -0700"
      },
      "message": "Don\u0027t set ADDR_COMPAT_LAYOUT on the emulator\n\nDon\u0027t work around third party app bugs on the emulator.\n\n(cherry picked from commit fc17dc2548234461eb43ff83539ede4c9893a825)\n\nChange-Id: I35246c447de65ad4649b9aa3eb67194234fd6378\n"
    },
    {
      "commit": "02fdc8f30a5cd935fd9fbf9de67a5063118cca13",
      "tree": "61949b8eb4059529a1af5e9de764d2089dc8e5a8",
      "parents": [
        "72fa6b2ffdac45dc0ad9ff9f50c37f6f4ea5a50b",
        "fc8bd4d3f4deece8beee7ce3f7888078dd37c60d"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 23 17:08:31 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 23 17:08:31 2013 -0700"
      },
      "message": "am fc8bd4d3: am 35587a0c: Merge \"Don\\\u0027t set ADDR_COMPAT_LAYOUT on the emulator\"\n\n* commit \u0027fc8bd4d3f4deece8beee7ce3f7888078dd37c60d\u0027:\n  Don\u0027t set ADDR_COMPAT_LAYOUT on the emulator\n"
    },
    {
      "commit": "fc8bd4d3f4deece8beee7ce3f7888078dd37c60d",
      "tree": "e45c438d4a34e40694d2f6e859adf50ce844615d",
      "parents": [
        "2ea5aebe59b72c034b32c132c35a5c75a7a2bf56",
        "35587a0c47c33a8eed7817dc705dbf502f7b5b60"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 23 17:06:58 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 23 17:06:58 2013 -0700"
      },
      "message": "am 35587a0c: Merge \"Don\\\u0027t set ADDR_COMPAT_LAYOUT on the emulator\"\n\n* commit \u002735587a0c47c33a8eed7817dc705dbf502f7b5b60\u0027:\n  Don\u0027t set ADDR_COMPAT_LAYOUT on the emulator\n"
    },
    {
      "commit": "fc17dc2548234461eb43ff83539ede4c9893a825",
      "tree": "8f8bbf8c1ab2defe9926b461fa9090222ced4275",
      "parents": [
        "be4536d214eedc3d12b50f0f30b47bba773b8dbc"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 23 15:30:45 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 23 15:40:03 2013 -0700"
      },
      "message": "Don\u0027t set ADDR_COMPAT_LAYOUT on the emulator\n\nDon\u0027t work around third party app bugs on the emulator.\n\nChange-Id: I4440fcd56b72e3a74881ddec2a469f037a060525\n"
    },
    {
      "commit": "bbcc289dad8c69f99ac2b23e09fc5036f7487fa0",
      "tree": "98cd414481356ebd69af29482190b79ddf550a6c",
      "parents": [
        "53078b25c91660e30849861e88da1a33998c554f",
        "4cd0c13f8f765118a24e31548c058b5029481bea"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Apr 17 01:58:51 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 17 01:58:51 2013 +0000"
      },
      "message": "Merge \"Incremental repairs to side by side stacks.\""
    },
    {
      "commit": "53078b25c91660e30849861e88da1a33998c554f",
      "tree": "7a953bff348848c49c1582ecb2c961fa9fe01537",
      "parents": [
        "e76dd37bdb75e7ed757e1284249c64f0c58e869d",
        "967212cb542e6eeb308678367b53381bff984c31"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Apr 17 01:58:15 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 17 01:58:15 2013 +0000"
      },
      "message": "Merge \"Implement stack splitting and task movement.\""
    },
    {
      "commit": "4cd0c13f8f765118a24e31548c058b5029481bea",
      "tree": "8892450b25dde3a958b33ce3eacb0ac468d80fbd",
      "parents": [
        "967212cb542e6eeb308678367b53381bff984c31"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Apr 16 15:55:52 2013 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Apr 16 18:55:07 2013 -0700"
      },
      "message": "Incremental repairs to side by side stacks.\n\n- Add taskId parameter to createStack() so stacks are pre-populated\nwith a task.\n- Keep track of stack access order in DisplayContent so getTasks\nreturns in MRU order.\n- Set touchableRegion in InputMonitor so modal touching does not\nextend beyond stack boundary.\n- Fix stack merging so that deleting a stack results in a new\nstack the size of the two children.\n\nChange-Id: I62a6ba0a34f34dd7ec866b440bf04595379e19e8\n"
    },
    {
      "commit": "a720a87fded1704d1a7490956bc5ec682b67a4fb",
      "tree": "3241d94b66d95366497cc2cb745a81ce2534129a",
      "parents": [
        "92dc45078221cc98f0a2c0cb3f4c5a634499782d",
        "a0b28ca74806dcf46300d82ebb689b002bd36955"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Apr 16 17:01:12 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 16 17:01:12 2013 -0700"
      },
      "message": "am a0b28ca7: am 95a869f9: Merge \"Disable tracing from Zygote\" into jb-mr2-dev\n\n* commit \u0027a0b28ca74806dcf46300d82ebb689b002bd36955\u0027:\n  Disable tracing from Zygote\n"
    },
    {
      "commit": "6ad0452e6301c0650f58f3991f7c523f6f279ddb",
      "tree": "0f116a6253e62bd96a4deb02c137461516cf6266",
      "parents": [
        "d12a7645a3bf3ffa83b8041bf343f1dc12a2381f"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Apr 15 18:53:24 2013 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 16 22:15:21 2013 +0000"
      },
      "message": "Disable tracing from Zygote\n\nThis change disables all atrace tracing in Zygote immediately after it is\ninitialized.  This is necessary because Zygote has no way to receive\nnotifications that the enabled trace tags have been changed.  Tracing is\nre-enabled when other processes fork from Zygote.\n\nChange-Id: If2983858fb0c4890ba9ab041849b1c4d98f66c13\n"
    },
    {
      "commit": "967212cb542e6eeb308678367b53381bff984c31",
      "tree": "3c9be07cad60efb54a09864703058d24dc420187",
      "parents": [
        "edf10b18c5b86bc7e68b79d1bf47ae58e5d3aed3"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sat Apr 13 21:10:58 2013 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Apr 15 13:46:47 2013 -0700"
      },
      "message": "Implement stack splitting and task movement.\n\nSplit stacks and move tasks between them. Layout the windows\naccording to the new stack split.\n\nAfter layout content rectangles are known split the available area\nbetween all stack boxes. Then use those values for future layout.\n\nProvide stack contents to ActivityManager.\n\nChange-Id: I9746e6185445633810d506be514d0b7b540a7f99\n"
    },
    {
      "commit": "1467991f8c6ba71cd36553029b70d72c1d45ee88",
      "tree": "46a4d534f0536b4f141157897585fb9c6a2cde48",
      "parents": [
        "82c0edaad3ff9da2e28cd17520168e603fe394d5",
        "38bfe9eca0134dd5f66dafeeb6fa10558f9f4394"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 10 03:26:36 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 10 03:26:36 2013 -0700"
      },
      "message": "am 38bfe9ec: am a9574e33: Add touchnavigation to input debugging command.\n\n* commit \u002738bfe9eca0134dd5f66dafeeb6fa10558f9f4394\u0027:\n  Add touchnavigation to input debugging command.\n"
    },
    {
      "commit": "a9574e3361e168671d627071e26280f69d0d081b",
      "tree": "56e635986299e79064435bea52be6c102e08ae5d",
      "parents": [
        "678a1252b4f3cdc18d20b411c05a4320d1d9b719"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 09 20:13:12 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 10 03:01:37 2013 -0700"
      },
      "message": "Add touchnavigation to input debugging command.\n\nBug: 8583760\nChange-Id: I9b150133e3d9ca9fe970550f5c0d7c18e6c7b558\n"
    },
    {
      "commit": "28af35e8cdc601c7ab9c7287d9e72fdc331e8a9d",
      "tree": "2eda89e8e3e1c72cf73920a4eaaddcda7ade3a30",
      "parents": [
        "171af247589f63fffee37a0e81a975afb62279a2",
        "a976bddd9cfff0be5703484009ea875dee5d2456"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 23:21:42 2013 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 23:21:42 2013 -0700"
      },
      "message": "resolved conflicts for merge of a976bddd to master\n\nChange-Id: I64e1cbfb0eee891ce4d1eee40eefdcedcc501f7f\n"
    },
    {
      "commit": "d685894212e6dbeac1fda4996903c1da115d49a6",
      "tree": "c52d05c78811e79a869afbcdbe55a906e38f2fa1",
      "parents": [
        "9fa49cc3308f6af593d780581121afc3c1d7e046"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:54:12 2013 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:54:12 2013 -0700"
      },
      "message": "Add liblog\n\nBug: 8580410\nChange-Id: I746aa8258866508c3a725d0773faf4518096548f\n"
    },
    {
      "commit": "e6bec854d5730426a5338b873490d8963da88471",
      "tree": "161d7cb4f77e0b642809a80626430a1f07258468",
      "parents": [
        "9babf58c305c261b0300cd27c560daf9ff279829",
        "3793b92816d940b265468e9f2f071fbf35db534d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 08 13:24:28 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 08 13:24:28 2013 -0700"
      },
      "message": "am 3793b928: am bc948101: Merge \"Have audio service clean up new receivers in crashing processes.\" into jb-mr2-dev\n\n* commit \u00273793b92816d940b265468e9f2f071fbf35db534d\u0027:\n  Have audio service clean up new receivers in crashing processes.\n"
    },
    {
      "commit": "79f7ec70ebd5758ce54fd5b6fcd60fd27457cba6",
      "tree": "6bc7542adfb792659a153a5000fb94a3ed6abb6a",
      "parents": [
        "bab9687e6473072d6ff4f7ea5a7b21bcfbf95744"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 04 18:50:23 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 08 13:08:37 2013 -0700"
      },
      "message": "Have audio service clean up new receivers in crashing processes.\n\nThe new media button receiver with only a pending intent (no\ncomponent name) could be left hanging if the process that\nregistered it went away.  These semantically need to be tied\nto the calling process\u0027s lifetime; we now clean them up when\nthe calling process goes away.\n\nAlso added some additional cleanup of media button receivers\nwhen packages change (updated, cleared).\n\nAnd on top of that, a new \"media\" command for doing media\nthings.  Currently lets you send media keys and monitor\nremote display data.\n\nOh and finally added a new BaseCommand base class for\nimplementing these command line utilities.\n\nChange-Id: Iba1d56f10bab1eec4a94a7bb1d1c2ae614c8bcf5\n"
    },
    {
      "commit": "faa262cb1041d53834475522d5c8e6671584ce36",
      "tree": "3c32f85fa067286e3dcd242b2b8676fcb500cde3",
      "parents": [
        "6e2d7406f6f5c98f3a64ba2e7855ffac662cc2d5",
        "960650c6e3504c85f9e22210621f0317880f723b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Mar 27 17:51:11 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 27 17:51:11 2013 -0700"
      },
      "message": "am 960650c6: am 7ba6470f: am 4224a4ca: am 3864aa39: Merge \"Add interrupter library to simulate EINTR\"\n\n* commit \u0027960650c6e3504c85f9e22210621f0317880f723b\u0027:\n  Add interrupter library to simulate EINTR\n"
    },
    {
      "commit": "7ba6470f4a734f4dc7255d484566ca84b269b0ae",
      "tree": "5ad4c520ade7f91bf164cb7b9fd25c51d7b6a0de",
      "parents": [
        "a6470d45148beaed765b88068bc76ad652ef33de",
        "4224a4ca85a4e7ba3f4e543ee52c643405464164"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Mar 27 17:45:21 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 27 17:45:21 2013 -0700"
      },
      "message": "am 4224a4ca: am 3864aa39: Merge \"Add interrupter library to simulate EINTR\"\n\n* commit \u00274224a4ca85a4e7ba3f4e543ee52c643405464164\u0027:\n  Add interrupter library to simulate EINTR\n"
    },
    {
      "commit": "3864aa3944254184ddcd61002cb9f1d7cb1d4c67",
      "tree": "4b4c75950c78881a2b3b82208207e21ab5a83d93",
      "parents": [
        "6b96e2f0006b5c33973b3500d3bb72a8c7a3bd38",
        "0054cbd4dbb9315419cc3c3b2aa1754a02fff1f4"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 28 00:16:30 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 28 00:16:31 2013 +0000"
      },
      "message": "Merge \"Add interrupter library to simulate EINTR\""
    },
    {
      "commit": "d734b4f285dff25ed5fed63349d259ff15a07d60",
      "tree": "446923f18c1bcd2f620756332f9af466cd40d99b",
      "parents": [
        "97207ab9669ebb9c166c5d8aa2cd354f2081dbe3",
        "6b8e7b35ef763d29a30c87a5a95ef941d39a8ee9"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 27 16:40:49 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 27 16:40:49 2013 -0700"
      },
      "message": "am 6b8e7b35: am bf20aa76: Merge \"Keep track of who has disabled applications.\" into jb-mr2-dev\n\n* commit \u00276b8e7b35ef763d29a30c87a5a95ef941d39a8ee9\u0027:\n  Keep track of who has disabled applications.\n"
    },
    {
      "commit": "3fa3c28a356108a6558b6b54a0b10e1a5cc4f1b6",
      "tree": "61426df0943f36d09ce0916e8c5f7647b2808db5",
      "parents": [
        "b404ecc91a5dd3dd027554490b2ca18c1048bdba"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 26 16:15:41 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 27 12:01:52 2013 -0700"
      },
      "message": "Keep track of who has disabled applications.\n\nChange-Id: I2640d3dc2200b589e2beb42a43cc93efd090f06e\n"
    },
    {
      "commit": "5ab6d905782562995f1755f03c3716887fba53b8",
      "tree": "7a9c71683a7f906f5695afd1745da0c703018262",
      "parents": [
        "55a67694e19217f3cc0e45b79eb31d48ce3135dd",
        "a4820789136c814e1e9ae26d5a0712e1c7fd4dd5"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 26 17:28:16 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 26 17:28:16 2013 -0700"
      },
      "message": "am a4820789: am 5871b258: Merge \"Change wm commands to return size and density info.\" into jb-mr2-dev\n\n* commit \u0027a4820789136c814e1e9ae26d5a0712e1c7fd4dd5\u0027:\n  Change wm commands to return size and density info.\n"
    },
    {
      "commit": "672cf45de7aa5ad6fd1f75512ee5a451a16c0b39",
      "tree": "1a684fbeadc913b4544c65c12b334e0dc6f93181",
      "parents": [
        "7c566bf3e4a10d74588b3e92ea3f6af310930f37"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 26 15:24:24 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 26 15:24:24 2013 -0700"
      },
      "message": "Change wm commands to return size and density info.\n\nChange-Id: Id25722fe5f0cd9470d04d657f067e5ad29927c98\n"
    },
    {
      "commit": "1e0c8e69891c89a86b2d9879e3c1985563a56f49",
      "tree": "f3d2c545746860a3d38c0156a62626e24deb5f64",
      "parents": [
        "d3f8d0333cf4d9d2e47b5b082a6f70460adcf5ff"
      ],
      "author": {
        "name": "rpcraig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Wed Nov 28 08:37:06 2012 -0500"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 25 14:35:00 2013 +0000"
      },
      "message": "Proper security labeling of multi-user data directories.\n\nThis patch covers 2 cases. When an app is installed\nand the resulting data directory is created for all\nexisting users. And when a new user is created and\nall existing app data directories are created for\nthe new user.\n\nChange-Id: Iacaba6d9d18d5337e65713960d14efe32006b330\nSigned-off-by: rpcraig \u003crpcraig@tycho.ncsc.mil\u003e\n"
    },
    {
      "commit": "d3f8d0333cf4d9d2e47b5b082a6f70460adcf5ff",
      "tree": "201827c55fca7032cab81aa6322460d834089e20",
      "parents": [
        "f6c4dba2d30ddba41ccfd6d9d2be2729ea496902"
      ],
      "author": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Mon Mar 25 06:33:03 2013 -0400"
      },
      "committer": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Mon Mar 25 06:33:03 2013 -0400"
      },
      "message": "Add seinfo parsing to PackageManagerService.\n\nThis patch set allows the PMS to parse the\nmac_permissions.xml file which contains the\nseinfo values. Each package that is installed\non the device will be assigned an seinfo value\nbased on policy. This seinfo value will help label\nthe app process and data directory.  Modifications\ninclude adjustments to ApplicationInfo.java\nto store the seinfo tag per package as well as\nadjustments to installd to communicate the seinfo\ntag to libselinux.\n\nChange-Id: I61ad1ea12fb6a9a6d0b108ec163bc4bf4c954b58\nSigned-off-by: rpcraig \u003crpcraig@tycho.ncsc.mil\u003e\n"
    },
    {
      "commit": "1aa089cef2e2ecb4fb85cd39240a0db05f7fb554",
      "tree": "c277c51f1ff3b7c896b589924447578b3eb08227",
      "parents": [
        "f81dc2a676de816e3a1bc0d682de5652334d5a7d",
        "3f6c9bae6302983d37b3a00523b8c8066fd3caa9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 22 04:51:13 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 22 04:51:13 2013 +0000"
      },
      "message": "am 3f6c9bae: am 921113d5: Merge \"use the bitmap stride when encoding a screenshot as PNG\" into jb-mr2-dev\n\n* commit \u00273f6c9bae6302983d37b3a00523b8c8066fd3caa9\u0027:\n  use the bitmap stride when encoding a screenshot as PNG\n"
    },
    {
      "commit": "a79fd4ca31cca590d81b8663b3649127477bd24a",
      "tree": "513f9dfa4a3e1dfe67cec2e6ab7abd2dfbe7236f",
      "parents": [
        "9eac52698b18d089e73c7ec2bf73a64a39504733"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 21 21:44:49 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 21 21:44:49 2013 -0700"
      },
      "message": "use the bitmap stride when encoding a screenshot as PNG\n\nBug: 8444808\nChange-Id: I47b74c22c940b40bd02634e9cd9dbff39b29a99f\n"
    },
    {
      "commit": "550a0589765d15313062431629cad253ff173b76",
      "tree": "a7339baf9894fc42ce08d78b54169bc998036a20",
      "parents": [
        "28f77f45a51211dcb5c0b7f6fa23089d7f570b79",
        "88dd3464b072bdae72b07605dd0b94786e36b253"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 21 00:14:50 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 21 00:14:50 2013 +0000"
      },
      "message": "am 88dd3464: am 7e55414f: Merge \"make sure screencap\\\u0027s data stream matches what adb expects\" into jb-mr2-dev\n\n* commit \u002788dd3464b072bdae72b07605dd0b94786e36b253\u0027:\n  make sure screencap\u0027s data stream matches what adb expects\n"
    },
    {
      "commit": "0137fb8937e69ed41cff3bf8cb0c1fea43daa3b5",
      "tree": "f891875e2b13707ea34b925414a75c25f34a0e79",
      "parents": [
        "3be79f328a9b8817859679d6c39a509e897db845"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 20 15:38:07 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 20 15:40:45 2013 -0700"
      },
      "message": "make sure screencap\u0027s data stream matches what adb expects\n\nadb assumes the stride is always equal to the width, so\nwe make sure it\u0027s actually the case (screenshot don\u0027t\nalways have this guarantee).\n\nChange-Id: I643b909f6542b7493a611afc6e3c86955b984352\n"
    },
    {
      "commit": "036f43723cf12b7c21ef2c55cb2466d79f958ac6",
      "tree": "bdfeb39f7dffbb7f734a052c3b7e6bc5dac44441",
      "parents": [
        "2effb1dc55e31fec85bdbcb002eb8fb85544bdba",
        "3cbd626c6e09aee02ddbfc08341db95b2345b76d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 20 21:10:23 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 20 21:10:23 2013 +0000"
      },
      "message": "am 3cbd626c: am b936b774: Merge \"make sure to start the binder thread pool\" into jb-mr2-dev\n\n* commit \u00273cbd626c6e09aee02ddbfc08341db95b2345b76d\u0027:\n  make sure to start the binder thread pool\n"
    },
    {
      "commit": "51dce9f651e78ce06ea6da683a65c357e7b15f3b",
      "tree": "98431139d6d5b3effd5396fc00407a2762e3c20c",
      "parents": [
        "8bc2f2e38649a3974fb64e23bc0494baf0431b12",
        "9044dee06da575ee77a2f6fe57d77ce9c67c9eff"
      ],
      "author": {
        "name": "Dan Morrill",
        "email": "morrildl@google.com",
        "time": "Wed Mar 20 16:59:17 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 20 16:59:17 2013 +0000"
      },
      "message": "Merge \"Removing from userdebug builds by default.\""
    },
    {
      "commit": "0678a8c250832a5549703f533f6afea9d8729e43",
      "tree": "12edfb543f95d2a8109d69661dfbd97e711642fa",
      "parents": [
        "0a4962ad11fadf7798c360efaee31b8d9d75bc9e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 19 20:56:00 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 19 20:56:00 2013 -0700"
      },
      "message": "make sure to start the binder thread pool\n\nChange-Id: I5c125a001936797489ebdcd0d4ccbde23adba282\n"
    },
    {
      "commit": "62aad7f66fcd673831029eb96dd49c95f76b17bd",
      "tree": "da743e86cd8cfe6f1c8a61fbce544f271c7e63b9",
      "parents": [
        "e4c9ac2df26f640fa9aeab5928e82bcc59a33da2"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Mar 14 01:11:53 2013 -0700"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Mon Mar 18 18:22:30 2013 -0700"
      },
      "message": "add reboot and shutdown to `svc power` command\n\na runtime shutdown will be performed first, then device will\nreboot with the provided reason or power off.\n\nChange-Id: I44cfbae19626c46147fad3bc8e91434970daa5d5\n"
    },
    {
      "commit": "fdc62ee6098b4fa0b7fae9731e200abd9a886218",
      "tree": "97f8f559078fe85368e3453b0c865054391ba4ca",
      "parents": [
        "e8918c57bde0152a109ac05386b21c8127523018",
        "57eed5b416bd72d4111a0aead2f5c71f24fde07b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 15 14:39:08 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 15 14:39:08 2013 -0700"
      },
      "message": "am 57eed5b4: am 38bfb5a7: Merge \"app_process: don\\\u0027t pollute the environment\"\n\n* commit \u002757eed5b416bd72d4111a0aead2f5c71f24fde07b\u0027:\n  app_process: don\u0027t pollute the environment\n"
    },
    {
      "commit": "9a9350550a7ca51feb97218101ef90c2cb90be71",
      "tree": "ef9b1a88b56ca830da9309928ca59e389f086c0a",
      "parents": [
        "f7ec4e61ebde9ff6d4934bd398e9ef8a39e4c28b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 15 13:12:28 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 15 13:14:52 2013 -0700"
      },
      "message": "app_process: don\u0027t pollute the environment\n\nGive a hoot — don\u0027t pollute!\n\nChange-Id: I30d6c05cecab483f0e9d8063907f7bc0ef2bb104\n"
    },
    {
      "commit": "fe57f62cd854957cd64007ee23b0f70e6fcaea5b",
      "tree": "2d43d216ea5b93d69af104e9b09c7818ae8a5284",
      "parents": [
        "868adf7369ed9f0dcd02cee5dd36a50b892bf936",
        "9c322c756276a9b22b05fd9c8bd67f2edfb50324"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 15 12:19:00 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 15 12:19:00 2013 -0700"
      },
      "message": "am 9c322c75: am f7ec4e61: Merge \"Never call app_main more than once\"\n\n* commit \u00279c322c756276a9b22b05fd9c8bd67f2edfb50324\u0027:\n  Never call app_main more than once\n"
    },
    {
      "commit": "1fe21bd1b6ca8b94c78fbf3666a1e8e0472355de",
      "tree": "d3fe55e4014a23cc1d6991ce3110b26a2d97de83",
      "parents": [
        "1ae6ae2094fd0ab8c82ad1a347e7a8bd67d995e5"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 15 11:38:29 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 15 11:59:03 2013 -0700"
      },
      "message": "Never call app_main more than once\n\nDifferent kernels seem to handle ADDR_COMPAT_LAYOUT differently,\nsometimes passing it to its children, sometimes not. If it\u0027s not\npassed to its child successfully, we can end up in a restart loop.\n\nInstead of testing for the presence of ADDR_COMPAT_LAYOUT, use an\nenvironment variable instead, which is handled more predictably.\n\nBug: 8392487\nChange-Id: Ia531dd2abb4e1cd46f3430d844e644f53581f530\n"
    },
    {
      "commit": "fd31ee4996b67be51f5f4c94d8ee2d55695a01bc",
      "tree": "11a2cb8a77544b7fba5734074fab60def291fb3c",
      "parents": [
        "41c9c8e5847b0d252673e9cceda0c4bc8c843fa1",
        "6098579a205848339cf6886f5c6d476ccf40e6fe"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Mar 14 17:21:38 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 14 17:21:38 2013 -0700"
      },
      "message": "am 6098579a: am 1ae6ae20: Merge \"Don\\\u0027t use ADDR_COMPAT_LAYOUT on the emulator\"\n\n* commit \u00276098579a205848339cf6886f5c6d476ccf40e6fe\u0027:\n  Don\u0027t use ADDR_COMPAT_LAYOUT on the emulator\n"
    },
    {
      "commit": "5fa1ee779e2170fd2e3e96b1e0887f15b04b1f76",
      "tree": "bb51821e615f0a1b70dc962cbac893106ce9f024",
      "parents": [
        "f732108e86fcc9825d5ecaa0b65ee91469c4a24c"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Mar 14 16:31:34 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Mar 14 16:31:34 2013 -0700"
      },
      "message": "Don\u0027t use ADDR_COMPAT_LAYOUT on the emulator\n\nFor the emulator, we want people to see memory as it\nactually is, not how we\u0027re hacking around buggy apps. Don\u0027t\nset ADDR_COMPAT_LAYOUT on the emulator.\n\nFor reasons that I don\u0027t understand, personality(ADDR_COMPAT_LAYOUT)\ndoes not persist across an exec on the emulator. app_main gets\ninto a tight loop restarting itself because of this. This change\nalso works around that bug.\n\nChange-Id: Ia73a7d2d623c25cf39d248145d97307945d554da\n"
    },
    {
      "commit": "8a0a929422682ba3eb6a205dc6c0638e68b909de",
      "tree": "2d97cde26c7050f159c9f20a3267ed1243783250",
      "parents": [
        "733329a2745ce703029b40afaa5dd78c7a5b620c"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Mar 14 13:23:52 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Mar 14 15:21:12 2013 -0700"
      },
      "message": "Respawn app_main if ADDR_COMPAT_LAYOUT is not set\n\nBug: 8358800\nChange-Id: Id81aa26d74dfd16a49f0ee5926ea2cdb3c2106d8\n"
    },
    {
      "commit": "c6ec5401539751017cf82f709a39f91cda9e8ad8",
      "tree": "3c1636dde947db0f9b47d32c3d58a6e297693757",
      "parents": [
        "a1cebc1f8ae2c4361078e3208ac7fa8c438fcf9c",
        "db95ad6dd417889b2d3a16f0392d9bb973978a1c"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Mar 14 21:45:40 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 14 21:45:40 2013 +0000"
      },
      "message": "Merge \"Respawn app_main if ADDR_COMPAT_LAYOUT is not set\" into jb-mr2-dev"
    },
    {
      "commit": "db95ad6dd417889b2d3a16f0392d9bb973978a1c",
      "tree": "56fce468988ac980a3a2450b4d56aff481b4d2ff",
      "parents": [
        "7534707b34ad7f2c8d3954d0fe8d2e6e7fcb2fc6"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Mar 14 13:23:52 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Mar 14 13:23:52 2013 -0700"
      },
      "message": "Respawn app_main if ADDR_COMPAT_LAYOUT is not set\n\nBug: 8358800\nChange-Id: Id81aa26d74dfd16a49f0ee5926ea2cdb3c2106d8\n"
    },
    {
      "commit": "02ffba940ca96988ed3e7774c606b43c58373b5e",
      "tree": "9d829654e361a899b1de8f0621716774e75857ec",
      "parents": [
        "998b692d888765d10827264c953b227439fbf365"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Mar 08 16:13:15 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Mar 13 16:42:38 2013 -0700"
      },
      "message": "Handle finished bugreports, share from private.\n\nShow notification when a bugreport is finished, letting the user\nlaunch a SEND_MULTIPLE intent to share them.  Add dialog that warns\nuser about contents before sharing.  Since bugreports are now stored\nin private app data of the Shell app, use FileProvider to build Uris\nthat we can grant others access to.\n\nDefine BUGREPORT_FINISHED as being a protected broadcast.  Delete\nolder bugreports automatically to reclaim disk space.  Migrate any\nIntent extras to ClipData when building PendingIntents.\n\nAdd --receiver-permission support to am shell command.\n\nBug: 7005318\nChange-Id: If6c607dbcf137362d5887eac482ff7391563890f\n"
    },
    {
      "commit": "294b512ecaa98a6a8ef12285ad14e7a4091b5d57",
      "tree": "d89983eed02f4cc3fc48fb50cd0d779ff345752b",
      "parents": [
        "2042cc403a6eba2de1c5220e8402b045bdf24192"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Feb 19 14:08:59 2013 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Mar 08 15:08:10 2013 -0800"
      },
      "message": "DO NOT MERGE - Full backup/restore now handles OBBs sensibly\n\nOBB backup/ restore is no longer handled within the target app\nprocess.  This is done to avoid having to require that OBB-using\napps have full read/write permission for external storage.\n\nThe new OBB backup service is a new component running in the\nsame app as the already-existing shared storage backup agent.\nThe backup infrastructure delegates backup/restore of apps\u0027\nOBB contents to this component (because the system process\nmay not itself read/write external storage).\n\nFrom the command line, OBB backup is enabled by using new\n-obb / -noobb flags with adb backup.  The default is noobb.\n\nFinally, a couple of nit fixes:\n\n- buffer-size mismatch between the writer and reader of chunked\n  file data has been corrected; now the reading side won\u0027t be\n  issuing an extra pipe read per chunk.\n\n- bu now explicitly closes the transport socket fd after\n  adopting it. This was benign but triggered a logged\n  warning about leaked fds.\n\n(Cherrypicked)\n\nChange-Id: I471f6348abcccb7bf1e1710b7beda9f23de53e14\n"
    },
    {
      "commit": "a83cab0001ca4d90abe622c22a7af1b0da54f739",
      "tree": "51bec7849647a103e8d24179201e7f7e95e46b01",
      "parents": [
        "09ed05ceaecc5fca46e25fe9bd9e8c0ee61fd31d"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 07 17:50:11 2013 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 07 17:50:11 2013 -0800"
      },
      "message": "Do not hang in pm clear on an invalid package name\n\nThe Activity Manager was not properly informing the observer that\nthe operation had concluded (unsuccessfully).\n\nBug 8222595\n\nChange-Id: I8234e32d8edf4112c8c7a5e20e341d0b41e23014\n"
    },
    {
      "commit": "9044dee06da575ee77a2f6fe57d77ce9c67c9eff",
      "tree": "5782afd200d0b9df717b9c398117e1bf9f851f0f",
      "parents": [
        "907f69d62960fd6d991af9e297930dccde63c8c7"
      ],
      "author": {
        "name": "Dan Morrill",
        "email": "morrildl@google.com",
        "time": "Thu Mar 07 17:28:37 2013 -0800"
      },
      "committer": {
        "name": "Dan Morrill",
        "email": "morrildl@google.com",
        "time": "Thu Mar 07 17:28:37 2013 -0800"
      },
      "message": "Removing from userdebug builds by default.\n\nChange-Id: I5579e96437648193ee1ad1573584e5ec8f5e5ade\n"
    },
    {
      "commit": "67df64b3a48a8157d08a98fa90135d0ac0ee621c",
      "tree": "d390d5c537c976a14688e24c1f9a8a213840ff29",
      "parents": [
        "0ffc81c1ada65b4ef4febaacf044e9fa62309b87"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Dec 14 12:09:36 2012 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Mar 06 09:49:44 2013 -0800"
      },
      "message": "Shared accounts and sharing of apps\n\nAPI and preliminary implementation for sharing primary user accounts with a secondary user.\nAbstractAccountAuthenticator has new methods to retrieve and apply a bundle of credentials\nto clone an account from the primary to a restricted secondary user. The AccountManagerService\ninitiates the account clone when it starts up the user and detects that the user has\na shared account registered that hasn\u0027t been converted to a real account.\n\nAccountManager also has new hidden APIs to add/remove/get shared accounts. There might be\nfurther improvements to this API to make shared accounts hidden/visible to select apps.\n\nAccountManagerService has a new table to store the shared account information.\n\nAdded ability in PackageManager to install and uninstall packages for a secondary user. This\nis required when the primary user selects a few apps to share with a restricted user.\n\nRemove shared accounts from secondary users when primary user removes the account.\n\nChange-Id: I9378ed0d8c1cc66baf150a4bec0ede56f6f8b06b\n"
    },
    {
      "commit": "848b4c9a9779e0deac6872f6f1b776acb6b89300",
      "tree": "213b4c2795463b6e6b54cef5bf37d71ffc595625",
      "parents": [
        "7b69e401769fb7a864990f3d732c6a7e8d7ec2f8"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Feb 28 16:43:23 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Feb 28 16:43:23 2013 -0800"
      },
      "message": "installd: use correct header file.\n\nChange-Id: I035524b857a04f8400e96468310d88abf247e582\n"
    },
    {
      "commit": "c2235472dacd31aa30ffc13de2c29488c3b6c338",
      "tree": "e2f8be37960234ee5c5afb6823d66999e9a10712",
      "parents": [
        "9fbdda42a2acff8179c251f6455fd3e2c9971545",
        "f7497c9e551dd3bcbb7438211f5022cc6341c527"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@android.com",
        "time": "Tue Feb 26 18:04:33 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 26 18:04:33 2013 +0000"
      },
      "message": "am f7497c9e: am 755205ad: Merge \"Fix spelling error s/SORT_OREDER/SORT_ORDER/ in \"content --help\"\"\n\n* commit \u0027f7497c9e551dd3bcbb7438211f5022cc6341c527\u0027:\n  Fix spelling error s/SORT_OREDER/SORT_ORDER/ in \"content --help\"\n"
    },
    {
      "commit": "64d0b3f9186bfb41cd14203d11f34c6fe0121945",
      "tree": "78f214cd7c8aa66270205161057b75e388948255",
      "parents": [
        "08a92a335fd84ca427b55c6c2d39f72970d82b76"
      ],
      "author": {
        "name": "Martin Olsson",
        "email": "martin@minimum.se",
        "time": "Tue Feb 26 17:54:39 2013 +0100"
      },
      "committer": {
        "name": "Martin Olsson",
        "email": "martin@minimum.se",
        "time": "Tue Feb 26 17:54:39 2013 +0100"
      },
      "message": "Fix spelling error s/SORT_OREDER/SORT_ORDER/ in \"content --help\"\n\nChange-Id: I8f869c9d2243ae8ff414399b7d6835c7ca74d500\nSigned-off-by: Martin Olsson \u003cmartin@minimum.se\u003e\n"
    },
    {
      "commit": "33c29b0e16a98753aecad894cbc344a87a6307a5",
      "tree": "1ea25e19fe365591e86513617833f56a6519d3c4",
      "parents": [
        "f9b9ead5d4f7bee34ec8a6b083065b624a7f6809"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Feb 19 16:42:16 2013 -0800"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Feb 19 16:42:16 2013 -0800"
      },
      "message": "Use BUILD_PREBUILT to install the shell script\n\nNOTICE files will be picked up automatically.\n\nChange-Id: Ia4938aff013f1c010cbbfceacf5685722c86c39a\n"
    },
    {
      "commit": "c652de8141f5b8e3c6bcf8916842b6e106413b1a",
      "tree": "d3be73e9b665365bdacd01cfc66faa24054f5a9c",
      "parents": [
        "736ef1e9dedbdd0c24e27f170034f2f869fd083f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 15 16:32:56 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 19 12:08:58 2013 -0800"
      },
      "message": "Implement display overscan support.\n\nThe window manager now keeps track of the overscan of\neach display, with an API to set it.  The overscan impacts\nhow it positions windows in the display.  There is a new set\nof APIs for windows to say they would like to go into the\noverscan region.  There is a call into the window manager to\nset the overscan region for a display, and it now has a\nconcept of display settings that it stores presistently.\n\nAlso added a new \"wm\" command, moving the window manager\nspecific commands from the \"am\" command to there and adding\na new now to set the overscan region.\n\nChange-Id: Id2c8092db64fd0a982274fedac7658d82f30f9ff\n"
    },
    {
      "commit": "50707cc8206f0d257ba83de2f1f99c3eaa13a4bd",
      "tree": "cdb9121fe11da7ac68b8786cd1b54aff78b63024",
      "parents": [
        "cd3b804e114c06b111fb0ad049c8845475a11a9b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 08 15:32:05 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 08 17:18:03 2013 -0800"
      },
      "message": "Fix issue #8133857: Tracking ANR in Gallery\n\nReworking the locking in resources so that we never hold the\nstate lock while calling in to potential long running operations.\nThis means the mTmpValue can no longer be final (since we need\nto use it while the lock isn\u0027t held), so a new field needs to\nbe added as the lock and everything that touches mTmpValue must\ndeal with it being null, restoring the value in there when\npossible, etc.\n\nChange-Id: Ie5ffd0f66e5f2d0e869a62d72e7a55b1c74fe872\n"
    },
    {
      "commit": "f51f61269aacdfcf737b2c32b6b216c48ab61e65",
      "tree": "33839b315b97323df81f9638c8bb085241f017cc",
      "parents": [
        "b86147910877f1aae0733f05a9a93b91101e67e2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Feb 04 18:23:34 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 05 11:56:12 2013 -0800"
      },
      "message": "App ops: new operations for SMS.\n\nImplementation required a new framework feature\nto associate an app op with a broadcast.\n\nChange-Id: I4ff41a52f7ad4ee8fd80cbf7b394f04d6c4315b3\n"
    },
    {
      "commit": "f265ea9d8307282ff1da3915978625a94fc2859e",
      "tree": "4e92b5de30239c1808a395cb49c9b17fe28ccffb",
      "parents": [
        "7a4ecc957d437ad4914988edc7593570f1e43f79"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jan 31 15:00:51 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 01 15:14:29 2013 -0800"
      },
      "message": "App ops: vibration, neighboring cells, dialing, etc.\n\nImprove handling of vibration op, so that apps are\nbetter blamed (there is now a hidden vibrator API that\nsupplies the app to blame, and the system now uses this\nwhen vibrating on behalf of an app).\n\nAdd operation for retrieving neighboring cell information.\n\nAdd a new op for calling a phone number.  This required\nplumbing information about the launching package name through\nthe activity manager, which required changing the internal\nstartActivity class, which required hitting a ton of code that\nuses those internal APIs.\n\nChange-Id: I3f8015634fdb296558f07fe654fb8d53e5c94d07\n"
    },
    {
      "commit": "6fc736971a66eb4b461931a5e972d51b65bfa68f",
      "tree": "91c61b24a636c4d11b4ae23d915f31492472dc2a",
      "parents": [
        "8c47e856b067057b5fcbb6eccfc79d1da4cff8f1",
        "d2c0c1021e7da8b2a4d9a6e61d52766381fca23f"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Jan 29 20:52:43 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 29 20:52:44 2013 +0000"
      },
      "message": "Merge \"Implement support for method calls in the `content` tool.\""
    },
    {
      "commit": "d2c0c1021e7da8b2a4d9a6e61d52766381fca23f",
      "tree": "c3d3672fcc0ab1a8e6da6abf39edc00e9c7270ba",
      "parents": [
        "572ec703d5b647cb7de4f30f2db4dc35a5e1a17e"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Jan 29 13:47:04 2013 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Jan 29 14:27:21 2013 -0500"
      },
      "message": "Implement support for method calls in the `content` tool.\n\n  $ content call\n    --uri content://com.example\n    --method methodname\n    [--arg optional_string_arg]\n    [--extra name:s:foo --extra value:i:0]\n\nThe URI is just used to resolve the provider. --extra has\nthe same syntax as --bind.\n\nChange-Id: I98cb89f0174a00e7c29ca0d8c8d809d453de3623\n"
    },
    {
      "commit": "d0fd54648ca6249f56cf469c57181b5a7bbb71d0",
      "tree": "4c710f5a98e913d87290a312b89a46370847ed60",
      "parents": [
        "5924dc4d7a42d04011d2e67aa3f9e28b7d940681",
        "80943d8daa6ab31ab5c486d57aea406aa0730d58"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 29 03:16:40 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 29 03:16:40 2013 +0000"
      },
      "message": "Merge \"Adding UI test automation APIs.\""
    },
    {
      "commit": "80943d8daa6ab31ab5c486d57aea406aa0730d58",
      "tree": "cb7738eff465941484aac3eb6ba15ba365aea576",
      "parents": [
        "64cae1a608c196c2bd1d9e7cfd2a1632fd0e5b83"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jan 02 10:25:37 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 22 17:56:53 2013 -0800"
      },
      "message": "Adding UI test automation APIs.\n\nThis change adds APIs support for implementing UI tests. Such tests do\nnot rely on internal application structure and can span across application\nboundaries. UI automation APIs are encapsulated in the UiAutomation object\nthat is provided by an Instrumentation object. It is initialized by the\nsystem and can be used for both introspecting the screen and performing\ninteractions simulating a user. UI test are normal instrumentation tests\nand are executed on the device.\n\nUiAutomation uses the accessibility APIs to introspect the screen and\na special delegate object to perform privileged operations such as\ninjecting input events. Since instrumentation tests are invoked by a shell\ncommand, the shell program launching the tests creates a delegate object and\npasses it as an argument to started instrumentation. This delegate\nallows the APK that runs the tests to access some privileged operations\nprotected by a signature level permissions which are explicitly granted\nto the shell user.\n\nThe UiAutomation object also supports running tests in the legacy way\nwhere the tests are run as a Java shell program. This enables existing\nUiAutomator tests to keep working while the new ones should be implemented\nusing the new APIs. The UiAutomation object exposes lower level APIs which\nallow simulation of arbitrary user interactions and writing complete UI test\ncases. Clients, such as UiAutomator, are encouraged to implement higher-\nlevel APIs which minimize development effort and can be used as a helper\nlibrary by the test developer.\n\nThe benefit of this change is decoupling UiAutomator from the system\nsince the former was calling hidden APIs which required that it is\nbundled in the system image. This prevented UiAutomator from being\nevolved separately from the system. Also UiAutomator was creating\nadditional API surface in the system image. Another benefit of the new\ndesign is that now test cases have access to a context and can use\npublic platform APIs in addition to the UiAutomator ones. Further,\nthird-parties can develop their own higher level test APIs on top\nof the lower level ones exposes by UiAutomation.\n\nbug:8028258\n\nAlso this change adds the fully qualified resource name of the view\u0027s\nid in the emitted AccessibilityNodeInfo if a special flag is set while\nconfiguring the accessibility service. Also added is API for looking\nup node infos by this id. The id resource name is relatively more stable\ncompared to the generaed id number which may change from one build to\nanother. This API facilitate reuing the already defined ids for UI\nautomation.\n\nbug:7678973\n\nChange-Id: I589ad14790320dec8a33095953926c2a2dd0228b\n"
    },
    {
      "commit": "fd7adedebf88427162a3ce27fcc9cfd3893c869d",
      "tree": "d9dfb04e5d0972a6ae7bf92431b0d48925e97b48",
      "parents": [
        "cc7433470f00fac3bbe7835de3ded4b9bf121244"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 22 17:10:23 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 22 17:10:23 2013 -0800"
      },
      "message": "Add new disabled state for \"optional\" built-in apps.\n\nThe disabled state allows you to make an app disabled\nexcept for whatever parts of the system still want to\nprovide access to them and automatically enable them\nif the user want to use it.\n\nCurrently the input method manager service is the only\npart of the system that supports this, so you can put\nan IME in this state and it will generally look disabled\nbut still be available in the IME list and once selected\nswitched to the enabled state.\n\nChange-Id: I77f01c70610d82ce9070d4aabbadec8ae2cff2a3\n"
    },
    {
      "commit": "d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaac",
      "tree": "5f6d8b2c0e66c99289ae085cb6a6a3be168eb000",
      "parents": [
        "f25febf01453733e8bdd1ac241ecd9d3bcbef475"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jan 17 17:47:37 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jan 18 13:02:26 2013 -0800"
      },
      "message": "Rework ParceledListSlice to be much easier to use.\n\nTake advantage of this to return better information about\npackages filtered by permissions -- include the permissions\nthey have in the requested array.\n\nAlso fix issue #8026793 (Contact picture shows default pic\nwhile searching for a contact in qsb) by using the base\npackage name of the Context when reporting the app name\nof an operation.  Otherwise you could make a resource-only\ncontext for another application and do calls through that\nand get reported as the wrong app.\n\nChange-Id: I5e0488bf773acea5a3d22f245641828e1a106fb8\n"
    },
    {
      "commit": "35654b61e8fe7bc85afcb076ddbb590d51c5865f",
      "tree": "0f42a90b4deaa0156d84df5d79b78cd6f2ac8807",
      "parents": [
        "8a8b047f2d28f6b2d728731a7e71eeaf16f89700"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jan 14 17:38:02 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 16 12:11:01 2013 -0800"
      },
      "message": "More work on App Ops service.\n\nImplemented reading and writing state to retain information\nacross boots, API to retrieve state from it, improved location\nmanager interaction to monitor both coarse and fine access\nand only note operations when location data is being delivered\nback to app (not when it is just registering to get the data at\nsome time in the future).\n\nAlso implement tracking of read/write ops on contacts and the\ncall log.  This involved tweaking the content provider protocol\nto pass over the name of the calling package, and some\ninfrastructure in the ContentProvider transport to note incoming\ncalls with the app ops service.  The contacts provider and call\nlog provider turn this on for themselves.\n\nThis also implements some of the mechanics of being able to ignore\nincoming provider calls...  all that is left are some new APIs for\nthe real content provider implementation to be involved with\nproviding the correct behavior for query() (return an empty\ncursor with the right columns) and insert() (need to figure out\nwhat URI to return).\n\nChange-Id: I36ebbcd63dee58264a480f3d3786891ca7cbdb4c\n"
    },
    {
      "commit": "6b77645aa9ac51ce33ea67adba226aaf1a6e8846",
      "tree": "0eb1ff1cf5bbe1e508596462396c03d878fd9c26",
      "parents": [
        "87ed0a10f5cb563c0a06d22a40472b4e88348e9b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Nov 02 15:40:32 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 14 08:45:52 2012 -0800"
      },
      "message": "Switch keystore to binder\n\nChange-Id: I9fa1fc05068bee1eed3f618fb32f70cf3d4c05d4\n"
    }
  ],
  "next": "2e59369dca975092751b163b803fd27d48d9aca6"
}
