)]}'
{
  "log": [
    {
      "commit": "dbea3cd118fe4eeb9b43ea50727987fa790a2edd",
      "tree": "48c62fd389ed91bbcfdfc844f0e4316b6ac8e0af",
      "parents": [
        "962bd4a69175077a95bc04bcdcc80ee6cb1034f8"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Nov 24 14:45:40 2014 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Nov 24 14:51:34 2014 -0800"
      },
      "message": "Better am error when SELinux blocking access.\n\nBug: 18479882\nChange-Id: I0732e54838c4e04d9d727e7c5fd9d7e7bacbaa1f\n"
    },
    {
      "commit": "24b1c23c62b3d8ca1d762a76b2f1ef6360fc683e",
      "tree": "7ff5b24df000003126c17c504313507f4693107a",
      "parents": [
        "a6d2789c954698f6dca5479b305689d22fc05d80"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Nov 20 17:17:39 2014 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Nov 20 17:17:39 2014 -0800"
      },
      "message": "Fix issue #15828903: Intent.parseUri allows call to FLAG_GRANT_*_URI_PERMISSION\n\nYou now need to set a flag if you want this unsafe behavior.\n\nChange-Id: I185e9a04e005e42a887c3d58a2818616790b060a\n"
    },
    {
      "commit": "85d558cd486d195aabfc4b43cff8f338126f60a5",
      "tree": "0a228ca6ffb9079635434a740abeeece370f055d",
      "parents": [
        "993e3d2d40cbd95d78cd3d2a76c77af2f4ab0e88"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 04 10:31:54 2014 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 11 00:42:18 2014 +0000"
      },
      "message": "Add Activity API to get referrer information.\n\nThis expands the use of EXTRA_REFERRER to be relevant anywhere,\nallowing apps to supply referrer information if they want.  However,\nif they don\u0027t explicitly supply it, then the platform now keeps\ntrack of package names that go with Intents when delivering them\nto apps, which it can be returned as the default value.\n\nThe new method Activity.getReferrer() is used to retrieve this\nreferrer information.  It knows about EXTRA_REFERRER, it can return\nthe default package name tracked internally, and it also can return\na new EXTRA_REFERRER_NAME if that exists.  The latter is needed\nbecause we can\u0027t use EXTRA_REFERRER in some cases since it is a Uri,\nand things like #Intent; URI extras can only generate primitive type\nextras.  We really need to support this syntax for referrers, so we\nneed to have this additional extra field as an option.\n\nWhen a referrer is to a native app, we are adopting the android-app\nscheme.  Since we are doing this, Intent\u0027s URI creation and parsing\nnow supports this scheme, and we improve its syntax to be able to build\nintents with custom actions and stuff, instead of being all hung up\non custom schemes.\n\nWhile doing this, fixed a problem when parsing both intent: and new\nandroid-app: schemes with a selector portion, where we were not\nrespecting any scheme that was specified.\n\nChange-Id: I06e55221e21a8156c1d6ac755a254fea386917a2\n"
    },
    {
      "commit": "795893eb6ff0c02c30a5765e06807ce1ee43978f",
      "tree": "40742a3bb20209ab5cf499ec3c41a1b729af8a53",
      "parents": [
        "685720309a582acc513454d674f82368479c5297"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Oct 29 00:01:25 2014 -0400"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Oct 29 00:05:56 2014 -0400"
      },
      "message": "More flexible intent extra parsing.\n\nSpecifically, --ei (int extras) and --eia (int[] extras) now\nuse Integer.decode(), which means they accept negative\nintegers, base-16 integers formatted as #NNN and 0xNNN, and\nbase-8 integers formatted as 0NNN.\n\nAdditionally, --ez (boolean extras) can now be specified as\n\"true\", \"false\", \"t\", \"f\", or an integer (any nonzero\ntreated as true). The previous behavior, based on\nBoolean.valueOf(), would silently assign false if you\nmanaged to get the spelling of \"true\" wrong.\n\nChange-Id: I058254e907308006d403b5b7866c86bcaa03d8d3\n"
    },
    {
      "commit": "ab4a81b3c625e33d04ae8070fcce6b6baee6522c",
      "tree": "0318213138edcfa4e65cd4e2c640f1a96bdeeb45",
      "parents": [
        "f9df9dd845ba1d1b14b450bd9df654243921381f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Oct 09 17:59:38 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Oct 09 18:21:59 2014 -0700"
      },
      "message": "Improve some docs, fix some debugging.\n\n- Add docs to Binder, Messenger, ResultReceier to explain their\n  relation (or lack there-of) to process lifecycle.\n- Clarify some aspects of process lifecycle for services.\n- Fix help text of am command.\n- Fix per-package dumping of battery stats to not include history.\n- Fix per-package dumping of proc stats to only include aggregated\n  and current stats and fix some formatting.\n- Fix per-process dumping of meminfo to have an option to interpret\n  the input as a package, so including all processes that are\n  running code of that package.\n- Fix top-level per-package debug output to correctly include all\n  of these improvements and give them a little more time (10s) to\n  complete for timing out.\n\nChange-Id: I2a04c0f862bd47b08329443d722345a13ad9b6e2\n"
    },
    {
      "commit": "979e40e9ba02b74226d9833b2f8156aa89a39053",
      "tree": "7d525caa993ae0d4b61bf27acdd2f70d384ff72c",
      "parents": [
        "311fc0b399f01a79169ae69aea05556043a7d7df"
      ],
      "author": {
        "name": "Alexandra Gherghina",
        "email": "alexgherghina@google.com",
        "time": "Thu Sep 25 18:23:13 2014 +0100"
      },
      "committer": {
        "name": "Alexandra Gherghina",
        "email": "alexgherghina@google.com",
        "time": "Mon Sep 29 12:35:03 2014 +0000"
      },
      "message": "Adds the ability to start a user in background\n\nBug: 15900074\nChange-Id: I03b278f8e7a4618ea56a5f1935cfba34beb45981\n"
    },
    {
      "commit": "6cfbb718905210d146fbe8fb18c8e124f24845ec",
      "tree": "4d7d4045ad5db8a4501fd2a480d63d55e4778d65",
      "parents": [
        "6b5db58f10365b28fe956caabbf1e2948458781b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Sep 17 12:47:35 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Sep 17 12:47:35 2014 -0700"
      },
      "message": "Fix issue #17536024: The am start\u0027s wait option doesn\u0027t...\n\n...give time in some cases\n\nThis switch to multiple stacks broke the check to determine if it\nshould actually wait for a new activity to be shown.  The new check\nnow also requires that the top activity be resumed, which means\nwe may get some false positives where we decide to wait and shouldn\u0027t,\nbut that is better than consistently not deciding to wait in some\ncases when we should.  (And we will always finish waiting then next\ntime something becomes visible).\n\nAlso add another time, which is how long it took from the startActivity\ncall to return with the result.  And fix when we decide to report that\nwe are done so that, in the case where we are bringing an existing\nactivity to the foreground, we don\u0027t wait until its animation is complete.\n\nChange-Id: Id38ca0070f04e7bf8c73e131fb055808553a0e2f\n"
    },
    {
      "commit": "f58e532e015ef31d879ee51aeeb251349784717c",
      "tree": "8a1ab40c5c14943b12da70c5c70bbde48fc65bd1",
      "parents": [
        "c96e3927657558f0d01626c252cf480624749120",
        "8cd28b57ed732656d002d97879e15c5695b54fff"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Sep 11 16:46:33 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 11 16:46:34 2014 +0000"
      },
      "message": "Merge \"Apply cross-user restrictions to Shell\" into lmp-dev"
    },
    {
      "commit": "8cd28b57ed732656d002d97879e15c5695b54fff",
      "tree": "33f02a0e243e5c3d8889862c26af5accc0e4e98b",
      "parents": [
        "da6e6c888f81d3bd19ff1f3cf9b081b7f9b2a013"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sun Jun 08 17:54:27 2014 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Sep 10 17:15:06 2014 -0700"
      },
      "message": "Apply cross-user restrictions to Shell\n\nEven though Shell user is allowed to perform cross-user actions,\nlock that path down if the target user has restrictions imposed by\nthe profile owner device admin that prevents access via adb.\n\nIf the profile owner has imposed DISALLOW_DEBUGGING_FEATURES, don\u0027t\nallow the shell user to make the following types of calls:\nstart activities, make service calls, access content providers,\nsend broadcasts, block/unblock packages, clear user data, etc.\n\nBug: 15086577\nChange-Id: I9669fc165953076f786ed51cbc17d20d6fa995c3\n"
    },
    {
      "commit": "65e76d1200395a9c67893378ddb64c47ede400b4",
      "tree": "198c2f2a9163870d75453753ccadbca2dc34c7c2",
      "parents": [
        "05c4f7ad765e2178e6e28676fd3438d2aaa38894"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Sep 09 17:28:03 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Sep 10 15:02:59 2014 -0700"
      },
      "message": "Output recent configs in am get-config command\n\nChange-Id: Ic516e73d2e72ac0dc3136f7226cedd851fe22b85\n"
    },
    {
      "commit": "1b012d302b56b4adf950035136d1d191a1936d5a",
      "tree": "4b6fc0a3e89f7a2251680e7e13f7211a8dff7ba2",
      "parents": [
        "987eb9734445bd92f6925b596b9b0ece90ad70b8"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Aug 20 10:35:34 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Aug 26 15:54:25 2014 -0700"
      },
      "message": "Add sample profiling option to am.\n\nAlso bundles all profiling options into a class.\n\nBug: 17040932\nChange-Id: I85d675ee1494bdc7308caffdf94145d27c996e9d\n"
    },
    {
      "commit": "b9583c9d93bd1d2c9d506dffae87a5ca2b7f7307",
      "tree": "42d7b26e9fcc1df8db992f4428d675a91f092c83",
      "parents": [
        "ccf9fca47149d102293668c2e81febc175e0329e"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 24 17:03:22 2014 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Fri Jul 25 00:30:07 2014 +0000"
      },
      "message": "Turn on debugging override of idle time\n\n\u0027adb shell am idle-maintenance\u0027 has traditionally been used to force\nthe system to consider itself to be in an \"idle\" state.  Unfortunately\nthe new Job Manager hadn\u0027t yet been aware of this.  Rectify the situation.\n\nAlso fixes a bug in debug logging that would cause a system server\ncrash under certain race circumstances.\n\nChange-Id: I8a29bd7757924f8e464865235c344233fc03d8c3\n"
    },
    {
      "commit": "afc00e1c81a2ae00dc01bb980bc617f382441102",
      "tree": "116ff9d9668e3209f3950264f2c66b1474d10852",
      "parents": [
        "e54a764cfd83825096edd55dd22cc7b3a6af45da"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 17 10:44:05 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 17 20:27:39 2014 +0000"
      },
      "message": "Change am get-config command to use ABI string array\n\nThere is a list of supported ABIs in android.os.Build which\nis ordered by preference. This is a more flexible list to use\ninstead of 2 fixed ABIs.\n\nChange-Id: I6aa3b39b5ffa888ed83a870b937e18328dd6de39\n"
    },
    {
      "commit": "2c749d242759ea36c0229ea933f22b6363337b19",
      "tree": "26f9c01de17f8fca123212e2946e4093d8b9f819",
      "parents": [
        "b69fc08303af782539d09d1775e6f63d4ccad3a1"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 04 13:00:29 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jun 16 23:01:19 2014 +0000"
      },
      "message": "New command to get device config\n\nChange-Id: I7172a3a150fd83e2382ca3e4e4a0188758189f14\n"
    },
    {
      "commit": "dfed4bc99f9f3d48ee7bf9e8ea051a8d5bc4f299",
      "tree": "166fb21faaced287ba8dfb8adc9324a8df436a33",
      "parents": [
        "8c29df5afcde5e1dd27c3ca21cfdec2af47205d1",
        "f7871c31469c6245c1b232a15104704f7481103c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri May 30 11:51:03 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 30 11:51:03 2014 +0000"
      },
      "message": "am f7871c31: am b9b31f4b: am bd4d3203: Merge \"Support an ABI flag for instrumentation.\"\n\n* commit \u0027f7871c31469c6245c1b232a15104704f7481103c\u0027:\n  Support an ABI flag for instrumentation.\n"
    },
    {
      "commit": "f7871c31469c6245c1b232a15104704f7481103c",
      "tree": "cf332f40710fa1359c80c63c93532438a80991bf",
      "parents": [
        "92ab0b91cdcb83c3cb101386d01f04c7d7dfd404",
        "b9b31f4b8eda123e7b544d1a0fa886576064adca"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri May 30 10:49:00 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 30 10:49:00 2014 +0000"
      },
      "message": "am b9b31f4b: am bd4d3203: Merge \"Support an ABI flag for instrumentation.\"\n\n* commit \u0027b9b31f4b8eda123e7b544d1a0fa886576064adca\u0027:\n  Support an ABI flag for instrumentation.\n"
    },
    {
      "commit": "8dcfefd652fa2c5612b3acbc4bf842d2dfb1cf21",
      "tree": "012fc44dd25c9ab1005d993df0db0b77711fa7fc",
      "parents": [
        "402120a2236b294dff9a51461cb22400a6ef67f6"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 15 18:12:59 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri May 16 10:30:00 2014 +0100"
      },
      "message": "Support an ABI flag for instrumentation.\n\nAllows us to choose what ABI a process uses when\nlaunching it with \"adb shell am instrument\", for eg.\n\nadb shell am instrument --abi arm64-v8a component/runner\n\nNote that we only perform very basic validation of the\nABI. In general, there is no guarantee that the app will\nlaunch with the instruction set we choose, for eg. if it\nhas native libraries that are for a different ABI.\n\nbug: 14453227\n\nChange-Id: Ifb7e89b53675080dc87941091ee5ac360f218d7f\n"
    },
    {
      "commit": "91097de49b0f683b00e26a75dbc0ac6082344137",
      "tree": "82c3185634a71233ce2e81a3645b07b1ba55f412",
      "parents": [
        "23af77a3cd1febc740d885ff03ead09837df269c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 04 18:02:06 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 24 17:48:58 2014 -0700"
      },
      "message": "Initial implementation of new voice interaction API.\n\nThis gives a basic working implementation of a persist\nrunning service that can start a voice interaction when\nit wants, with the target activity(s) able to go through\nthe protocol to interact with it.  It may even work when\nthe screen is off by putting the activity manager in the\ncorrect state to act like the screen is on.\n\nIncludes a sample app that is a voice interation service\nand also has an activity it can launch.\n\nNow that I have this initial implementation, I think I\nwant to rework some aspects of the API.\n\nChange-Id: I7646d0af8fb4ac768c63a18fe3de43f8091f60e9\n"
    },
    {
      "commit": "846318a3250fa95f47a9decfbffb05a31dbd0006",
      "tree": "c5d28f5d77e1fd625117e65bc9d24acfdfb6b94e",
      "parents": [
        "fb5d9f338153f569775bbc76177cab05441999c1"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Apr 04 12:12:41 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Apr 22 21:06:49 2014 -0700"
      },
      "message": "Allow prefix-based Uri permission grants.\n\nDefine new FLAG_GRANT_PREFIX_URI_PERMISSION which indicates that a\nUri permission grant should also apply to any other Uris that have\nmatching scheme, authority, and path segments.  For example, a prefix\ngrant for /foo/ would allow /foo/bar/ but not /foo2/.\n\nAllow persistable and prefix grants to be issued directly through\ngrantUriPermission().  Relaxing persistable is fine, since it still\nrequires the receiver to actively take the permission.\n\nSince exact- and prefix-match grants for the same Uri can coexist,\nwe track them separately using a new UriGrant key.  (Consider the\ncase where an app separately extends READ|PREFIX and WRITE for\nthe same Uri: we can\u0027t let that become READ|WRITE|PREFIX.)\n\nFix revoke to always take away persisted permissions.  Move prefix\nmatching logic to Uri and add tests.  Add new flags to \"am\" tool, and\nvarious internal uses around Intent and Context.  Switch some lagging\nusers to ArraySet.\n\nBug: 10607375\nChange-Id: Ia8ce2b88421ff9f2fe5a979a27a026fc445d46f1\n"
    },
    {
      "commit": "aea74a5977ca9f1054926eb24f247562c3a4a6ba",
      "tree": "64ea3d6369a984cc8863c7331baa052a3c9891bf",
      "parents": [
        "1cb98aeaad2e04e6f1cc4f67c92808aa1c8f50e5"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Sat Mar 08 14:23:10 2014 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Mar 13 11:09:13 2014 -0700"
      },
      "message": "Add Lock Task Mode.\n\nWhen in lock task mode only the specified task may run. All\nattempts to switch to another task are ignored until the task\nfinishes or a call to stopLockTaskMode() is made.\n\nChange-Id: I6cfe92fe1bcf22cd47b5398c08e23c52a4092dda\n"
    },
    {
      "commit": "28600e261c088eddcd0201820ed93730c77af282",
      "tree": "53d62682d1e1b993c55055044f4d2bb56845690d",
      "parents": [
        "adcd253a144bc0c8efdfec6de63adf6bfb97acbd"
      ],
      "author": {
        "name": "Dale Hawkins",
        "email": "dkhawk@google.com",
        "time": "Wed Feb 26 16:39:51 2014 -0700"
      },
      "committer": {
        "name": "Dale Hawkins",
        "email": "dkhawk@google.com",
        "time": "Wed Feb 26 18:01:00 2014 -0700"
      },
      "message": "Adds support for array string extra.\n\nAdds support for setting an array string extra on an intent when\nlaunching an activity/service.  Allows inclusion of commas using\nan escape character.\n\nChange-Id: I8857f7d28d60b75ddc65dc47f345a77230d00467\n"
    },
    {
      "commit": "e0a3884cb627efc650e19fbe76b1b3343468cf57",
      "tree": "5cdfc0e202bb18c314138dea3f1328c3f6e55ba0",
      "parents": [
        "02d5df1066c07972e1169a338e5fba16c86cc51b"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Dec 16 16:14:02 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Jan 06 08:51:21 2014 -0800"
      },
      "message": "Extend stack management to other displays.\n\n- Abandon ActivityContainer.startActivity() in favor of\nIActivityManager.startActivityAsUserInContainer().\n- Modify Am to test starting an activity on a container.\n- Create a DisplayContext as the base context if the activity token\nis on a different display.\n- Test for home display in more cases when manipulating home stack.\n- Rename mDisplayInfos \u003d\u003e mActivityDisplays.\n- Create new method for moving task to front of stack regardless of\nwhich display it is on.\n\nChange-Id: I4fcb83ae844c5839ee3e2722229623d1a80ed921\n"
    },
    {
      "commit": "4a1cb22056112f7ffd5f4fad8b7a092b96e7cc7b",
      "tree": "2a30eb0760369a59905895e88f8325fbf9934414",
      "parents": [
        "3bcdbd6b2d96427d7cee835e9ed79aeed51de267"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Dec 04 16:14:06 2013 -0800"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Wed Dec 18 15:08:15 2013 -0800"
      },
      "message": "Pair ActivityStacks with Displays\n\n- Introduce concept of ActivityStacks residing on Displays and able\nto be decoupled and moved around.\n- Add a new interface, IActivityContainer for clients to handle\nActivityStacks.\n- Abandon ordering of stacks based on mStackState and instead use\nActivityDisplayInfo.stacks\u003cActivityStack\u003e ordering.\n\nProgress towards closing bug 12078972.\n\nChange-Id: I7785b61c26dc17f432a4803eebee07c7415fcc1f\n"
    },
    {
      "commit": "bdc748af8ce62778d2ad15040ecdfada6e4635fd",
      "tree": "fbe9925fbb945d4435a8e2aa5aa8ab0844ceab48",
      "parents": [
        "09e9cdceceb722643e2c80c6544d44a43d7f95f0"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Dec 02 14:08:25 2013 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Mon Dec 09 15:15:34 2013 -0800"
      },
      "message": "DO NOT MERGE: Eliminate StackBox.\n\nStackBox is too constraining. Adding size and position to TaskStacks\ndirectly makes stack positioning and management more flexible and\nprepares for ActivityView.\n\nChange-Id: I33c6b4e1c23a5a8069fd507c160bcb34e4d287b2\n"
    },
    {
      "commit": "7625c8404553fae274a1074388ca0458df32dce4",
      "tree": "89320646dd6a00eaf35bc57650e6f710001dd278",
      "parents": [
        "3b945405cf96eae8b882f87934222a453718a559"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Nov 14 10:03:32 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Nov 14 10:57:55 2013 -0800"
      },
      "message": "Fix am argument ordering documentation.\n\nBug: 11690520\nChange-Id: I84b10a6eb6e6404212ab9737e7cee1f1ad4d5309\n"
    },
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "c0bd747b0605af251ff136277f14220a5a4c9818",
      "tree": "42c57d29d70cb1a8db3ad34da224ac3882481029",
      "parents": [
        "840590dd642719f402491092944a12475d6d6a8e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Oct 09 14:00:30 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Oct 09 17:57:14 2012 -0700"
      },
      "message": "Further work on issue #7307399: Framework needs a new pre-user-shutdown...\n\n...phase \u0026 callback API\n\nI realized there were a few things wrong with what was there.  The new\nACTION_USER_STARTING was not being sent for the first user at boot, and\nthere was an existing problem where ACTION_USER_STARTED was sent every\ntime there was a user switch.\n\nAlso improved some debug output of broadcasts to make it easier to see\nwhat is going on in this stuff, and better reporting of why a service\ncouldn\u0027t be started.\n\nChange-Id: Id8a536defbbad1f73d94a37d13762436b822fbe3\n"
    },
    {
      "commit": "d4ac8d7b3de27a9f0e4c6af2496ca71d794e42d1",
      "tree": "874663abeb7379376c3deeb68081606e6f62d8d3",
      "parents": [
        "97298cdcc0e699912288191c28bebe895759e75e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 27 23:20:10 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 28 15:37:22 2012 -0700"
      },
      "message": "Fix issue #7211769 and #7244492, thrash around on #7226656.\n\nIssue #7211769: Crash dialog from background user has non-working \"report\"\n\nThe report button now launches the issue reporter for the correct user.\nAlso for crashes on background users, either disable the report button,\nor simply don\u0027t show the dialog depending on the build config.\n\nIssue #7244492: Bugreport button in Quick Settings doesn\u0027t actually do anything\n\nNow they do.\n\nIssue #7226656: second user seeing primary user\u0027s apps\n\nI haven\u0027t had any success at reproducing this.  I have tried to tighten up\nthe path where we create the user to ensure nothing could cause the\nuser\u0027s applications to be accessed before the user it fully created and thus\nmake them installed...  but I can\u0027t convince myself that is the actual problem.\n\nAlso tightened up the user switch code to use forground broadcasts for all\nof the updates about the switch (since this is really a foreground operation),\nadded a facility to have BOOT_COMPELTED broadcasts not get launched for\nsecondary users and use that on a few key system receivers, fixed some debug\noutput.\n\nChange-Id: Iadf8f8e4878a86def2e495e9d0dc40c4fb347021\n"
    },
    {
      "commit": "b12e1354f25f04e9c9a71da76c6fca858b7d39d0",
      "tree": "3568c1a0ce0a3348fbfcb4d5773140f26f630f80",
      "parents": [
        "2fd6cb043901c1bfbf5f566d13522cc3c1c21fb4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Sep 26 11:39:20 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Sep 26 14:50:12 2012 -0700"
      },
      "message": "Maybe fix issue #7211766: bindService() to User u0 While u10 is...\n\n...Forground Sometimes Doesn\u0027t Take\n\nThe main change here is a one-liner in ActiveServices to check the\nuid when deciding whether to remove an item from mPendingServices.\nThis could cause the problem being seen -- if the same service for\ntwo users is starting at the same time, the second one would blow\naway the pending start of the first one.  Unfortunately I have had\ntrouble reproducing the bug, so I don\u0027t know if this is actually\nfixing it.  It\u0027s a bug, anyway.\n\nThe reason so much has changed here is because I spread around\nlogging and printing of the user ID associated with operations and\nobjects to make it easier to debug these kind of multi-user things.\n\nAlso includes some tweaks to the oom manager to allow more background\nprocesses (I have seen many times in logs where we thrash through\nprocesses because the LRU list is too short), plus to compensate an\nadditional time-based metric for when to get rid of background processes,\nplus some new logic to try to help things like Chrome keep around\ntheir service processes.\n\nChange-Id: Icda77fb2a1dd349969e3ff2c8fff0f19b40b31d3\n"
    },
    {
      "commit": "43aa15912891930833edfc101615a9c881de54a1",
      "tree": "efc406d48cce0d3ae7e1b299ffba0c65646cb089",
      "parents": [
        "df46c637550b4c6f0543574cfbd544329f48f5c7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Sep 10 17:36:31 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Sep 10 17:50:18 2012 -0700"
      },
      "message": "Allow adb shell am display-size to use bigger sizes.\n\nWe now support scaling the logical display to fit the\nphysical display, whatever size it is.  So we can allow\nadb shell am display-size to use more or less arbitrary sizes\nalthough we do enforce an upper and lower bound to\nprotect the user.\n\nChange-Id: I5fe6ba32ad1f9e4fbcd6915f7d36850b987bbcc0\n"
    },
    {
      "commit": "1676c856d61b97c871dc2be0cb1f1fb1e12e24e9",
      "tree": "7352f5bccdec8d7b9d90f9fb1d43dfa901e00f4a",
      "parents": [
        "41bd89f6b61296492d3775e5ef30e94c5f18d34f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Sep 10 14:52:30 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Sep 10 14:52:30 2012 -0700"
      },
      "message": "Flesh out multi-user in am commands.\n\nNow we default to the current user instead of user 0 for most commands\n(except where we can do the command for all users).\n\nMany more commands take a user argument: force-stop, kill, profile,\ndumpheap.\n\nImproved help text.\n\nChange-Id: I719a13b4d31b668f57ca21e51d7043ac3e0d4e1b\n"
    },
    {
      "commit": "649d0d71b245d88746b78399ffa1f75da7c80974",
      "tree": "2e09499bacc887453c6fbe0c2a2c737e3d0bb247",
      "parents": [
        "55e6b77bda7da1684ca32493d9e03184bd441dab",
        "5e03e2ca7d25b899b129baad2dd5eca6bf99d88a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 07 14:11:56 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 07 14:11:56 2012 -0700"
      },
      "message": "Merge \"More multi-user stuff:\" into jb-mr1-dev"
    },
    {
      "commit": "5e03e2ca7d25b899b129baad2dd5eca6bf99d88a",
      "tree": "10c601a58b0bbeb6902d43e0862c58f3ec121c78",
      "parents": [
        "970683c5d42a1d8588d656d4e570ce4f0f6e0abc"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 06 14:21:19 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 07 13:55:23 2012 -0700"
      },
      "message": "More multi-user stuff:\n\n- New (hidden) isUserRunning() API.\n- Maintain LRU list of visited users.\n- New FLAG_IS_DATA_ONLY for ApplicationInfo.\n- Clean up pending intent records when force-stopping a user (or package).\n  (Also fixes bug #6880627: PendingIntent.getService() returns stale\n  intent of force stopped app)\n- Fix force-stopping when installing an app to do the force-stop across\n  all users for that app.\n- When selecting which processes to kill during a force stop, do this\n  based on the actual packages loaded in the process, not just process\n  name matching.\n- You can now use --user option in am when starting activities, services,\n  and instrumentation.\n- The am --user option accepts \"current\" and \"all\" as arguments.\n- The pm uninstall command now uninstalls for all users, so it matches\n  the semantics of the install command.\n- PhoneWindowManager now explicitly says to start home in the current\n  user.\n- Activity manager call to retrieve the MIME type from a content provider\n  now takes a user argument, so it will direct this to the proper user.\n- The package manager uninstall paths are now implemented around\n  PackageSetting, not PackageParser.Package.  This allows them to work\n  even if the application\u0027s apk has been removed (in which case it only\n  exists as a PackageSetting, not the PackageParser.Package parsed from\n  the apk).\n\nChange-Id: I3522f6fcf32603090bd6e01cc90ce70b6c5aae40\n"
    },
    {
      "commit": "3065963f817f9a0f032ec7992c4154cfdeed443d",
      "tree": "851cf3cad6d5cc7b3a8ecfbb46211ab92a19ad5e",
      "parents": [
        "9ca26e43652b516f6d38dc92120d802b5e8bfde4"
      ],
      "author": {
        "name": "Felipe Leme",
        "email": "felipeal@google.com",
        "time": "Thu Sep 06 11:41:20 2012 -0700"
      },
      "committer": {
        "name": "Felipe Leme",
        "email": "felipeal@google.com",
        "time": "Thu Sep 06 11:43:03 2012 -0700"
      },
      "message": "Wrapped call to notifyAll() in a synchronized block\n\nChange-Id: I452caa56bef4541b53917bdd6f22034161255dd1\nBug: 7118468\n"
    },
    {
      "commit": "e2bdca5c4330b6bc9cc26480ae4c1eefe5ee9ce9",
      "tree": "73aa5b32f41bea32f379145db03291b021226ac4",
      "parents": [
        "52fba38f7d155e22e7487fc173243b4df2a9e76a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 04 11:13:41 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 04 11:13:41 2012 -0700"
      },
      "message": "Fix my fix.\n\nChange-Id: I35fce760f8d91fceb554d372e7423749a4ac6d2d\n"
    },
    {
      "commit": "52fba38f7d155e22e7487fc173243b4df2a9e76a",
      "tree": "7b5e68bf029e89086643f812bcbf3a88acbedc98",
      "parents": [
        "7d69e8bd2168a81a5cb68da99d025c6f290bf166"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 04 11:08:43 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 04 11:08:43 2012 -0700"
      },
      "message": "Fix build.\n\nChange-Id: I15592889b8679d946e402dcfdeb124df349cbd4d\n"
    },
    {
      "commit": "80a4af2bbc6af42ae605e454bf89558e564f5244",
      "tree": "3cd054c0e9576c9fda33fc36670ef10458f71ee8",
      "parents": [
        "def8b0f011b5b2b02235063d5021ddfd58aa0baf"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 27 19:18:31 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 28 16:30:55 2012 -0700"
      },
      "message": "Start implementing concept of \"running\" users.\n\nThe activity manager now keeps track of which users are running.\n\nInitially, only user 0 is running.\n\nWhen you switch to another user, that user is started so it is\nrunning.  It is only at this point that BOOT_COMPLETED is sent\nfor that user and it is allowed to execute anything.\n\nYou can stop any user except user 0, which brings it back to the\nsame state as when you first boot the device.  This is also used\nto be able to more cleaning delete a user, by first stopping it\nbefore removing its data.\n\nThere is a new broadcast ACTION_USER_STOPPED sent when a user is\nstopped; system services need to handle this like they currently\nhandle ACTION_PACKAGE_RESTARTED when individual packages are\nrestarted.\n\nChange-Id: I89adbd7cbaf4a0bb72ea201385f93477f40a4119\n"
    },
    {
      "commit": "7e0e19d4201374d72b7082492bd269dbdb17d972",
      "tree": "32b9080c4bf6da4ed4fb51fc46dbbefdaf1b5b92",
      "parents": [
        "71d7c3c628fbce04b8bdb60f127588ada00bae13"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 27 10:57:30 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 27 10:57:30 2012 -0700"
      },
      "message": "Restore man page entries.\n\nChange-Id: I002808037ec117c039aeb71f425c1f43d4cac6d8\n"
    },
    {
      "commit": "7767eac3232ba2fb9828766813cdb481d6a97584",
      "tree": "41cc717fb9f11190e9da3dc12d61faf23a22861d",
      "parents": [
        "1552586283f329253edc4786a6cf40c5bb69ea36"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 23 18:25:40 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 24 13:53:13 2012 -0700"
      },
      "message": "Keep track of whether an app is installed for each user.\n\nThis add a new per-user state for an app, indicating whether\nit is installed for that user.\n\nAll system apps are always installed for all users (we still\nuse disable to \"uninstall\" them).\n\nNow when you call into the package manager to install an app,\nit will only install the app for that user unless you supply\na flag saying to install for all users.  Only being installed\nfor the user is just the normal install state, but all other\nusers have marked in their state for that app that it is not\ninstalled.\n\nWhen you call the package manager APIs for information about\napps, uninstalled apps are treated as really being not visible\n(somewhat more-so than disabled apps), unless you use the\nGET_UNINSTALLED_PACKAGES flag.\n\nIf another user calls to install an app that is already installed,\njust not for them, then the normal install process takes place\nbut in addition that user\u0027s installed state is toggled on.\n\nThe package manager will not send PACKAGE_ADDED, PACKAGE_REMOVED,\nPACKAGE_REPLACED etc broadcasts to users who don\u0027t have a package\ninstalled or not being involved in a change in the install state.\nThere are a few things that are not quite right with this -- for\nexample if you go through a full install (with a new apk) of an\napp for one user who doesn\u0027t have it already installed, you will\nstill get the PACKAGED_REPLACED messages even though this is\ntechnically the first install for your user.  I\u0027m not sure how\nmuch of an issue this is.\n\nWhen you call the existing API to uninstall an app, this toggles\nthe installed state of the app for that user to be off.  Only if\nthat is the last user user that has the app uinstalled will it\nactually be removed from the device.  Again there is a new flag\nyou can pass in to force the app to be uninstalled for all users.\n\nAlso fixed issues with cleaning external storage of apps, which\nwas not dealing with multiple users.  We now keep track of cleaning\neach user for each package.\n\nChange-Id: I00e66452b149defc08c5e0183fa673f532465ed5\n"
    },
    {
      "commit": "dde331cebd87982faded6818ad5f9927ff994c96",
      "tree": "c2f9c4c62113fc93948d3988fc09cc3727c4b9ca",
      "parents": [
        "5345c310af8363948cee6a91d11add3ec51e8a9c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 03 14:01:57 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 03 17:27:29 2012 -0700"
      },
      "message": "We can now (kind-of) change screen density on the fly.\n\nPreloaded drawables now have a density associated with them, so we\ncan load the correct drawable if we are using a different density.\n\nWindow manager now formally keeps track of the density for each\nscreen, allowing it to be overridden like you can already do with\nsize, and relies on this density to drive itself internally and\nthe configurations it reports.\n\nThere are a new set of Bitmap constructors where you provide a\nDisplayMetrics so they can be constructed with the correct density.\n(This will be for when you can have different windows in the same\napp running at different densities.)\n\nActivityThread now watches for density changes, and pushes them\nto the DENSITY_DEVICE and Bitmap global density values for that\nprocess.\n\nA new am command allows you to change the density.\n"
    },
    {
      "commit": "59c009776dae5ccbdfb93d7151ff2065ca049dc3",
      "tree": "45ffbc8d93e8f245ed1c78ffa64b8bcc5ae59355",
      "parents": [
        "fa14d824d235c33b137a429c3eb6818f273407ab"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Jul 30 12:10:24 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Aug 02 08:47:44 2012 -0700"
      },
      "message": "Introduce multiple displays with DisplayContent.\n\nFix a couple of bugs that turned up.\nRemove touch/focus from display. Add iterators for access.\nRespond to comments. Remove TODOs, and some deviceId parameters.\n\nChange-Id: Idcdb4f1979aa7b14634d450fd0333d6eff26994d\n"
    },
    {
      "commit": "fd3d009dde21d7670d42d26f197f67c4c8e59184",
      "tree": "7e91bd87dcab0b4e6e470400924ce9e657642259",
      "parents": [
        "5ab6e12b450d13c8eb501001c7a8669826b86ea4"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed May 30 17:57:06 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed May 30 17:57:06 2012 -0700"
      },
      "message": "Remove some unnecessary man page entries\n\nChange-Id: I1ceda3f5efac83b80ab4b6e7cae4086aeed5062a\n"
    },
    {
      "commit": "13b907353f18215b52b5ceda24bbf520d91d72a1",
      "tree": "5b32cdf7b5729f68c0b61dadbeab7ffd263b25b0",
      "parents": [
        "d7e4ae48c576d5aaef75754b29a8b87c1f0d6427"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 21 12:13:31 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 21 13:29:06 2012 -0700"
      },
      "message": "Remove unused, obsolete debug code\n\nAll these features have either been abandonned and left un-maintained\nfor years or can be replaced by systrace.\n\nChange-Id: I42e4579a8078744047e5fe08a7a15254970b09bc\n"
    },
    {
      "commit": "7df7d2022d9bebc21a13dcb7ddacaa61f9c2e38e",
      "tree": "ba66ba6c9223f2c53786cc8bcf086af0ba885e56",
      "parents": [
        "661f362a2c531c46fdce5359b176a30ba7d16e1f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 19 18:00:04 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 19 18:00:04 2012 -0700"
      },
      "message": "Fix issue #4499996: LiveWallpaperPreview activity intent filter\n\nChange-Id: I5fc71503d2c59c907da954dbda3587394e6405bf\n"
    },
    {
      "commit": "483f3b06ea84440a082e21b68ec2c2e54046f5a6",
      "tree": "cc0dff8ea3d133a4dc910bc1e90c85380cea2064",
      "parents": [
        "8fca15f1f2273fa429e58f783d0970251d0942e5"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Mar 13 16:08:00 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Mar 22 10:08:24 2012 -0700"
      },
      "message": "Package restrictions per user\n\nPackages can be enabled/disabled per user.\nThis requires maintaining stopped/launched states and\nenabled / disabled components and packages per user.\n\nRefactored pm.Settings and PackageSettingsBase to keep\ntrack of states per user.\n\nMigrated the stopped-packages.xml to users/\u003cu\u003e/package-restrictions.xml\n\nChanged intent resolution to handle individual user restrictions.\nBunch of IPackageManager calls now have a userId argument.\nMake AppWidgetService handle removals of packages.\n\nAdded some tests for pm.Settings and PackageManager.\n\nChange-Id: Ia83b529e1df88dbcb3bd55ebfc952a6e9b20e861\n"
    },
    {
      "commit": "a4972e951bf2bdb7afdafee95b3ab0c15b8bacae",
      "tree": "9800a9dcd62d945a8ad71549ebcef70393ef5442",
      "parents": [
        "89ea4ca9c26f3c7e365525a0b83500e85517a457"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 14 10:38:05 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 14 12:57:14 2012 -0700"
      },
      "message": "Add new \"options\" argument to all startActivity APIs.\n\nThis will be used to allow new features to be requested...  such as,\nsay, a special kind of animation.  Right now there are no options\ndefined.\n\nChange-Id: I4eb6f27275cdd4bf186f6da316ab93a2372ad4b7\n"
    },
    {
      "commit": "92a8b22e7410e74e1cba1b856333116652af8a5c",
      "tree": "fd340b33bdcf7d2b5f84d9f9454a5805efff54b6",
      "parents": [
        "64d10a1da0a702ffeb086ad9c4a632f2712f1dad"
      ],
      "author": {
        "name": "Siva Velusamy",
        "email": "vsiva@google.com",
        "time": "Fri Mar 09 16:24:04 2012 -0800"
      },
      "committer": {
        "name": "Siva Velusamy",
        "email": "vsiva@google.com",
        "time": "Mon Mar 12 12:18:53 2012 -0700"
      },
      "message": "ActivityManager: add option to allow OpenGL trace.\n\nThis patch adds an option to enable tracing of OpenGL functions.\nOpenGL tracing can be enabled by passing \"--opengl-trace\" option\nto am start.  This option requires either a device in debug mode,\nor that the application itself has debug permission set.\n\nChange-Id: I77788bfe97c9108943b1f947ce81afe8293d78a0\n"
    },
    {
      "commit": "3a2ce935b94383141d1c8a7878fa9308ce718fe5",
      "tree": "37bab0cf934a4a01c1f51e57925b6d885e6784d3",
      "parents": [
        "3df2549cb7be6d85cb4579d8fa48f5344c025f62"
      ],
      "author": {
        "name": "Mike J. Chen",
        "email": "mjchen@google.com",
        "time": "Mon Aug 15 13:22:39 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Feb 10 12:03:53 2012 -0800"
      },
      "message": "Add the ability to pass float extras to AM.\n\ncommit 43a2825a283e29c0f70100146394957af0598b0e\nAuthor: John Grossman \u003cjohngro@google.com\u003e\nDate:   Wed Apr 27 09:03:53 2011 -0700\n\n    Add the ability to pass float extras to AM.\n\n    Change-Id: I970ad3f76a65bd781099204019095c73ed8c09db\n\nSigned-off-by: Mike J. Chen \u003cmjchen@google.com\u003e\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nConflicts:\n\n\tcmds/am/src/com/android/commands/am/Am.java\n"
    },
    {
      "commit": "742a67127366c376fdf188ff99ba30b27d3bf90c",
      "tree": "4a801b0b2e9ee10fb322e3b450e2af9eb6e3002f",
      "parents": [
        "8ca8a69d5801ad4b809e7b9dbf53bd728820924b"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed May 04 14:49:28 2011 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Feb 03 12:01:47 2012 -0800"
      },
      "message": "Multi-user - 1st major checkin\n\nSwitching activity stacks\nCache ContentProvider per user\nLong-press power to switch users (on phone)\n\nAdded ServiceMap for separating services by user\nLaunch PendingIntents on the correct user\u0027s uid\nFix task switching from Recents list\nAppWidgetService is mostly working.\n\nCommands added to pm and am to allow creating and switching profiles.\n\nChange-Id: I15810e8cfbe50a04bd3323a7ef5a8ff4230870ed\n"
    },
    {
      "commit": "f5b8671c340f189c50b41c53622f979b6d5e0a57",
      "tree": "fe81dca6cd70d011c62a036b3fc0f940cc71bf23",
      "parents": [
        "003c15d72ccd3856d5abfe6d66a2a40d0eca85bc"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 05 17:42:41 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 05 17:42:41 2011 -0800"
      },
      "message": "Fix issue #5714517: App shortcuts can result in bad task intents\n\nNew API to let you build an Intent whose base configuration is correct,\nbut has an additional \"selector\" to pick out the specific app that you\nwould like launched.\n\nChange-Id: Ide9db6dc60e2844b7696cfe09b28337fe7dd63db\n"
    },
    {
      "commit": "d8c98fee02b5498270344727d1289004d98c0e73",
      "tree": "87512279361711cb33abd2d465be2661076a2a75",
      "parents": [
        "b90a70d1542edd5a95e73b75192e6eb5a66401cc"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 15 11:29:38 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 15 14:15:58 2011 -0800"
      },
      "message": "Improve low memory dropbox reporting.\n\nThe msg is now constructed to try to bin these reports in\ninteresting ways.  We\u0027ll see.  Also change the tag name from\nwatchdog to lowmem, since sharkey is kindly taking care of\nthe back-end to handle this.\n\nImprove how we put processes into low memory states to better\npoke things like home and the previous app.\n\nAlso clean up some debug output, and add a few new am comment\noptions for controlling the current debug app.\n\nChange-Id: I562a931a95244a2727bb7a6e1fd80dec259cdae2\n"
    },
    {
      "commit": "e4d4fbc8c0257a79d9c6091cea2c264415bd2733",
      "tree": "1f25ddfe43638541f1ddddb13018daede1995935",
      "parents": [
        "665e105f145fcb27a54d53c6c9382bebf50a56d7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 08 11:53:28 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 08 15:44:34 2011 -0800"
      },
      "message": "Add drop box reports of low memory.\n\nWe are tagging these as \"watchdog\" to make them visible in the\nreporting tools.\n\nAlso new am command to kill all background processes, mostly to make\nit easier to test this stuff.\n\nChange-Id: Ib9dc4747cd8bd44156fdf11d6a087cd4272203eb\n"
    },
    {
      "commit": "2c84cfc001fb92a71811bf7384b7f865ff31ff9d",
      "tree": "1d43eda4854e37a553b85ce759ea4fffd41c9edb",
      "parents": [
        "dd79b4c85a9dd2c2ad702ea2137fe2a076567fa1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Oct 31 15:39:59 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Oct 31 16:52:34 2011 -0700"
      },
      "message": "Various performance and other work.\n\n- IME service now switches between visible and perceptible depending on\n  whether it is being showm, allowing us to more aggressively free its\n  memory when not shown.\n\n- The activity display time is no longer delayed by the activity\n  transition animation.\n\n- New -R (repeat) option for launching activities with the am command.\n\n- Improved some documentation on Loader to be clear about some methods\n  that apps should not normally call.\n\n- FrameworkPerf test now allows you to select individual tests to run.\n\nChange-Id: Id1f73de66dc93d63212183958a72119ad174318b\n"
    },
    {
      "commit": "0bb1e9139e30aa954f46b0b6fdec2595fac33b80",
      "tree": "c403956eee09fa684d2e92d893ed576fddfdcbee",
      "parents": [
        "0a2f9664737f112e7a15d8b28e053469845a5a80"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 16 12:54:24 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 16 13:24:53 2011 -0700"
      },
      "message": "Small improvements to am command.\n\nThe start command can now take a package name or component name\nfor easier starting.  New -S option allows you to force stop an\napp before starting it.\n\nChange-Id: I5c55b34dd794783f0f5f51851dc811b8c1b39b76\n"
    },
    {
      "commit": "62f20ecf492d2b29881bba307c79ff55e68760e6",
      "tree": "58ea602138a28fb3555368900acbad6219ae2de2",
      "parents": [
        "0f2da17a9523fc40bceb5209cabd044df648e98e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 15 17:40:28 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 15 17:55:57 2011 -0700"
      },
      "message": "Add new am option to profile the launching of an activity.\n\nChange-Id: Ie71a8043eafe41f53a0b3dbb5170276d87acbc9b\n"
    },
    {
      "commit": "7eabe55db6b113f83c2cefcd06812648927de877",
      "tree": "a105d90d8addbce9bb457b4bef974ce2f699fc81",
      "parents": [
        "ac4159549c10dbe428d42980278c0e43ecc8d93f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 21 14:56:34 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 21 14:56:34 2011 -0700"
      },
      "message": "Add looper profiling to adb shell am\n\nTo profile the looper, run the following command:\n\nadb shell am profile looper start \u003cprocess\u003e \u003cfile\u003e\nadb shell am profile looper stop \u003cprocess\u003e\n\nChange-Id: I781f156e473d7bdbb6d13aaffeeaae88bc01a69f\n"
    },
    {
      "commit": "8ffb0c0210857210a51d7a9a0f1afb73afbf8677",
      "tree": "3ce281a62dcb94c3932b6830c7b3e42091c4d532",
      "parents": [
        "4a6d113ba0f33ce5dc14e59463e928ba309e1c2e"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Jul 07 22:45:11 2011 -0700"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Jul 07 22:50:54 2011 -0700"
      },
      "message": "allow Uri as intent extra in am command\n\nWhen composing an intent using am command line, certain extra fields\nneed to be added as a Uri (a Parceable in fact).\n\nThis patch adds a \"--eu\" parameter so that the provided value is\nparsed as a Uri then added into intent\u0027s extra bundle.\n\nChange-Id: I7110829554962d314aa58fd25083dd5041680a73\n"
    },
    {
      "commit": "46d110329e659cc9cb9514e220ce273701eb151d",
      "tree": "17e69181373b20f3ca37857e63a3bbd378e87e7f",
      "parents": [
        "58b868417755805ebdfe4feb65664ad98c00bf35"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 24 13:22:45 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 24 13:22:45 2011 -0700"
      },
      "message": "Small cleanup of am/pm commands.\n\nChange-Id: I5af730bc177635821a82d4dd3ec9130a5dcd525a\n"
    },
    {
      "commit": "351f32270a489577e040bbeccc423b0bac1637dc",
      "tree": "65ada0e6cbf429e7cb094d536d5c84746c56bc87",
      "parents": [
        "8eed7aded77b826738c82cfe3b6a1440ac0786d9"
      ],
      "author": {
        "name": "Xianzhu Wang",
        "email": "wangxianzhu@google.com",
        "time": "Fri May 13 15:46:20 2011 +0800"
      },
      "committer": {
        "name": "Xianzhu Wang",
        "email": "wangxianzhu@google.com",
        "time": "Fri May 27 10:26:04 2011 +0800"
      },
      "message": "Add force-stop subcommand for \u0027am\u0027.\n\nIt\u0027s useful for some testing and debugging, to ensure all processes\nare stopped before testing. \u0027kill\u0027 doesn\u0027t always work because sometimes the\nsystem will restart the process immediately (e.g. if an app is running in\nbackground).\n\nChange-Id: I2c0caa38f74ee65ad6c35172fbf505227be7e7c3\n"
    },
    {
      "commit": "7916ac65dc492e4e1431879875c77d7121fbf82e",
      "tree": "a673e4cc163ea0e1d27d5a38fd2d37003812e37d",
      "parents": [
        "8f3dbe1c377e64584c3ec10edf664fb278648109"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 16 20:45:48 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 16 20:55:41 2011 -0700"
      },
      "message": "Add new command line option to change global screen size.\n\nFor example:\n\nadb shell am display-size 1024x600\n\nChange-Id: I5df462acd3323bdaaaefa3126faea7dd8595b726\n"
    },
    {
      "commit": "0f1de9adde0b52d2a385a76232bd7ac30c3eeea2",
      "tree": "6d30064324ea987411955a88cb0272ddb27d39b2",
      "parents": [
        "f3cdea937b8b659f959d5e77f4a17f749f85c6ae"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 11 17:34:49 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 13:28:45 2011 -0700"
      },
      "message": "New compat mode front end: UI and persistence.\n\nAdds a really crappy UI for toggling compat mode.\n\nPersists compat mode selection across boots.\n\nTurns on compat mode by default for newly installed apps.\n\nChange-Id: Idc83494397bd17c41450bc9e9a05e4386c509399\n"
    },
    {
      "commit": "e2515eebf42c763c0a2d9f873a153711778cfc17",
      "tree": "ee159940f05c439d0524771bfbfe6b551c82c2d4",
      "parents": [
        "158e3582c03ab9e0221718da20fc8854bb9216d0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 27 18:52:56 2011 -0400"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 09 17:03:24 2011 -0700"
      },
      "message": "Better compat mode part one: start scaling windows.\n\nFirst step of improving app screen size compatibility mode.  When\nrunning in compat mode, an application\u0027s windows are scaled up on\nthe screen rather than being small with 1:1 pixels.\n\nCurrently we scale the application to fill the entire screen, so\ndon\u0027t use an even pixel scaling.  Though this may have some\nnegative impact on the appearance (it looks okay to me), it has a\nbig benefit of allowing us to now treat these apps as normal\nfull-screens apps and do the normal transition animations as you\nmove in and out and around in them.\n\nThis introduces fun stuff in the input system to take care of\nmodifying pointer coordinates to account for the app window\nsurface scaling.  The input dispatcher is told about the scale\nthat is being applied to each window and, when there is one,\nadjusts pointer events appropriately as they are being sent\nto the transport.\n\nAlso modified is CompatibilityInfo, which has been greatly\nsimplified to not be so insane and incomprehendible.  It is\nnow simple -- when constructed it determines if the given app\nis compatible with the current screen size and density, and\nthat is that.\n\nThere are new APIs on ActivityManagerService to put applications\nthat we would traditionally consider compatible with larger screens\nin compatibility mode.  This is the start of a facility to have\na UI affordance for a user to switch apps in and out of\ncompatibility.\n\nTo test switching of modes, there is a new variation of the \"am\"\ncommand to do this: am screen-compat [on|off] [package]\n\nThis mode switching has the fundamentals of restarting activities\nwhen it is changed, though the state still needs to be persisted\nand the overall mode switch cleaned up.\n\nFor the few small apps I have tested, things mostly seem to be\nworking well.  I know of one problem with the text selection\nhandles being drawn at the wrong position because at some point\nthe window offset is being scaled incorrectly.  There are\nprobably other similar issues around the interaction between\ntwo windows because the different window coordinate spaces are\ndone in a hacky way instead of being formally integrated into\nthe window manager layout process.\n\nChange-Id: Ie038e3746b448135117bd860859d74e360938557\n"
    },
    {
      "commit": "62f2ada64f7213243eafd7a4a4c3ccd5040ad85a",
      "tree": "89da1077376b3f28e2cc680ef4d0ca54a2431e24",
      "parents": [
        "99291b95b2ee1e1b2371806e6f6c96767a350c88"
      ],
      "author": {
        "name": "David Deephanphongs",
        "email": "dpanpong@google.com",
        "time": "Tue Oct 19 14:54:05 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Oct 19 16:56:02 2010 -0700"
      },
      "message": "Add missing NOTICE entries.\n\nAdd missing NOTICE block for TagSoup in general NOTICE file.\nAdd comment in Android.mk to help reviewers locate the NOTICE for apache-http.\nModify build rule for \u0027am\u0027 command to pull in the NOTICE file.\n\nChange-Id: I43c6c1468395b70d0942b3620f12e4b6f3d9a66b\n"
    },
    {
      "commit": "405e012681aa563b1d7b66c671c90ed2deb26e41",
      "tree": "6687aa617fea8213148702c68e4da9083122eb0c",
      "parents": [
        "3011b6617232d1ef7c1687d1db9e780fce978d30",
        "deaa8ff1b10d38add4f7c276e7be2ffc19359a14"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 24 15:58:25 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 24 15:58:25 2010 -0700"
      },
      "message": "am deaa8ff1: am a7ef18fc: Merge \"Some debugging support.\" into gingerbread\n\nMerge commit \u0027deaa8ff1b10d38add4f7c276e7be2ffc19359a14\u0027\n\n* commit \u0027deaa8ff1b10d38add4f7c276e7be2ffc19359a14\u0027:\n  Some debugging support.\n"
    },
    {
      "commit": "f123e49bf0708719b51a7064ae134c097abe4a54",
      "tree": "73c218afbbede522ca5c7d70b1399cf55609ca5d",
      "parents": [
        "6d8fae722cfb2833dd542b2a5e613582a9096fc6"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 24 11:16:23 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 24 13:11:55 2010 -0700"
      },
      "message": "Some debugging support.\n\n- New feature to \"am monitor\" to have it automatically launch\n  gdbserv for you when a crash/ANR happens, and tell you how to\n  run the client.\n\n- Update dumpstate to match new location of binder debug logs\n\n- Various commented out logs that are being used to track down\n  issues.\n\nChange-Id: Ia5dd0cd2df983a1fc6be697642a4590aa02a26a5\n"
    },
    {
      "commit": "846df9f5171c4ef32f038cca651b6b9c0b6c3083",
      "tree": "e14bba46d6af691a2832907f6b3f64caac3c736c",
      "parents": [
        "fea28c9367c9d1a48ae56c554dd51a428f2d1b03",
        "8952a4488e81205e3013b6b456dec503e05eebd0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 23 19:08:08 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 23 20:33:19 2010 -0700"
      },
      "message": "resolved conflicts for merge of 8952a448 to master\n\nChange-Id: I9c752a5d10ae8d8e5ead1243b6abd4795204fc0b\n"
    },
    {
      "commit": "287952c35e148811c106bc0f5036eabf20f71562",
      "tree": "baf7ae1e8a086c6e14138536caa925b2a793ce69",
      "parents": [
        "f9ec03c0f5fc2c6eba5bbead24c4eb314c0205be"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Sep 22 22:34:31 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 23 15:59:28 2010 -0700"
      },
      "message": "Fix issue #3022508: Crash during media scan\n\nDon\u0027t kill processes for excessive wake lock use, even if they\nare in the background, as long as they have running services.\n\nAlso fix some problems with this, such as not noting the kill\nin battery stats.\n\nAnd add killing of processes for cpu usage as well, along with\nsome optimizations to computing CPU usage.\n\nAnd fix BatteryWaster to be better behaving for testing these\ncases.\n\nAdd new \"monitor\" command to am to watch as the activity manager\ndoes stuff (so we can catch things at the point of ANR).\n\nFinally some miscellaneous debug output for the stuff here, as\nwell as in progress debugging of an ANR.\n\nChange-Id: Ib32f55ca50fb7486b4be4eb5e695f8f60c882cd1\n"
    },
    {
      "commit": "2d1b7a22390a355aa079473810e2b9914af88274",
      "tree": "e17464adec29281be1f881a8f0fa1b800ec8b9a3",
      "parents": [
        "018b0d2918e59b28852d07b90c2d3153533267aa"
      ],
      "author": {
        "name": "Jack Veenstra",
        "email": "veenstra@google.com",
        "time": "Wed Sep 08 11:25:17 2010 -0700"
      },
      "committer": {
        "name": "Jack Veenstra",
        "email": "veenstra@google.com",
        "time": "Wed Sep 08 11:42:33 2010 -0700"
      },
      "message": "Add support for giving arrays of ints and longs to the \"am\" command.\n\nChange-Id: Ibc4ae63fb5f8025a847bec7d37a1fce5abd81b39\n"
    },
    {
      "commit": "f9b5eed81d690ab8f336cb3345b46a36e278f180",
      "tree": "1c970e0a2a7e8caad50986cca97c5455056dae3b",
      "parents": [
        "7dff1a72146ba549d51649ad786a0e1cc8b6897c"
      ],
      "author": {
        "name": "Joe Malin",
        "email": "jmalin@google.com",
        "time": "Mon Aug 30 14:10:05 2010 -0700"
      },
      "committer": {
        "name": "Joe Malin",
        "email": "jmalin@google.com",
        "time": "Mon Aug 30 14:10:05 2010 -0700"
      },
      "message": "Doc Change:ActivityManager usage doc:running test package\n\nChange-Id: I9a0c28e59f87e30c81d18162bee082b851d07a94\n"
    },
    {
      "commit": "6a69b4fbaee9a8251401453cd2d3509d52f5b91c",
      "tree": "08c61f59e1a8bf15148c30235bfef24dff008744",
      "parents": [
        "7a9f6faa3c1a058d27548a329df464f2eaf1f7d1"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Tue Aug 24 18:39:55 2010 -0700"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Tue Aug 24 18:39:55 2010 -0700"
      },
      "message": "Add --el option to am for long extras.\n\nChange-Id: I13b92284fa4e0765620552b7d9b08d7441254389\n"
    },
    {
      "commit": "7b750542d68773c0df12ec747af292d458b59f45",
      "tree": "967a36f83ac61d016a27894dbb5931a1f32b3e1a",
      "parents": [
        "2338f48ddb3d1746c2d46df85fdc4dcd6cfa240b"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@google.com",
        "time": "Fri Aug 13 16:28:30 2010 -0400"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@google.com",
        "time": "Fri Aug 20 09:24:02 2010 -0400"
      },
      "message": "Fix incorrect usage text for am.\n\nChange-Id: I95afb3bd02ce23bb8d0797ec4c33e27a9530988e\n"
    },
    {
      "commit": "824c510752fd6a30cdba5ed7324cb80a5043ce26",
      "tree": "701346031a5b93e71c73f4786f1a276e1f6053db",
      "parents": [
        "2707d6026240bcca6f0e35e2e1138958882e90ce"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Jul 09 16:26:57 2010 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Mon Jul 12 13:35:14 2010 -0700"
      },
      "message": "Allow \"am\" to initiate heap dumps.\n\nThis was mostly cloned from the \"am profile\" implementation.  It\u0027s\nintended to replace the old \"kill -10\" approach used by \"runhat\".\n\nWe could really use a native heap dump, so I pass a \"managed\"\nflag through that indicates whether we want to dump the native or\nmanaged heap.  We don\u0027t currently have a native heap dump-to-file\nfunction, so it currently just logs a warning.\n\n(android.ddm.DdmHandleNativeHeap.getLeakInfo is a good start -- it\ncopies /proc/maps and then calls get_malloc_leak_info to get some\ngoodies.  Needs some formatting to make it human-readable.  I didn\u0027t\nwant to cram all that into this change.)\n\nIt would be useful if \"am\" didn\u0027t exit until the heap dump operation\ncompleted, but I\u0027m not sure how to do that.\n\nBug 2759474.\n\nChange-Id: I46bc98067738d8c72ac0fc10002ca67bb4929271\n"
    },
    {
      "commit": "d6c0bb0f0f3827f1c336db20ac9dc0eb90cd46fa",
      "tree": "8409eea06150b5892a243b80d7ea407e63310133",
      "parents": [
        "aa2fe148496858e17d0ffd2b8d5d29b89d400934",
        "2b9a49a30d2ce1176cbd90741897705bec32d0bd"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed May 19 08:28:32 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed May 19 08:28:32 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: I0598edad283a177a5ddcc30e20d2284503e6038e\n"
    },
    {
      "commit": "746a95ab7145a1c7583d1f2d6004a508cd7a31dc",
      "tree": "067e8da2b4c6ecdd5d4f6327ee0aa36387285490",
      "parents": [
        "1152df7e82f1501e72aee1641d028bd7201f6d0b"
      ],
      "author": {
        "name": "Christian Mehlmauer",
        "email": "FireFart@gmail.com",
        "time": "Mon May 17 21:16:20 2010 +0200"
      },
      "committer": {
        "name": "Christian Mehlmauer",
        "email": "FireFart@gmail.com",
        "time": "Mon May 17 21:16:20 2010 +0200"
      },
      "message": "Removed Calls to deprecated APIs\n\nChange-Id: I3f9b6a8d3c8a050156a6cc7ea0eb9de33b82f79a\n"
    },
    {
      "commit": "69acb6b746c82f88607b3365795ebb3279188eed",
      "tree": "cd36e73daeba0b2f24ba77fde8643e98c866eeca",
      "parents": [
        "d4dd85d532dcd383a2f6b421e747b5ab07246d19"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Apr 16 12:52:47 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Apr 16 12:55:48 2010 -0700"
      },
      "message": "Unify am startservice commands.\n\nThis replaces the implementation with an equivalent one.\n\nChange-Id: I1343ddee9414a67906cd426b8381ddbace873894\n"
    },
    {
      "commit": "d4dd85d532dcd383a2f6b421e747b5ab07246d19",
      "tree": "2bcf1bde78fe3c0f2c470da8779653512539dc7a",
      "parents": [
        "69e398bd14fc909bb5f854c435fd210ae0974748"
      ],
      "author": {
        "name": "Anthony Newnam",
        "email": "anthony.newnam@garmin.com",
        "time": "Wed Apr 14 14:34:41 2010 -0500"
      },
      "committer": {
        "name": "Garmin Android technology group",
        "email": "android@garmin.com",
        "time": "Wed Apr 14 14:35:11 2010 -0500"
      },
      "message": "Allow Am to start services\n\nChange-Id: I31d066ae2c980cc293e55034446a63a0f42088ad\n"
    },
    {
      "commit": "5ef402baafc4818ccdf2aaec5da9cf25dd1c0e12",
      "tree": "6678df993ee5d0af105bcb948472d747fd27059d",
      "parents": [
        "9c3cee9824026764275e4d84ba9b5d9fdc5da690"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Mar 26 17:17:25 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Mar 26 17:17:25 2010 -0700"
      },
      "message": "Fix issue #2538228: Intents targeting browsers constantly nagging\n\nSome applications are setting the MIME type field for an http:\nintent, which is technically wrong because the recipient opening\nthe URI will get the MIME type from the header.  This was hitting\na bug when we compute the intent filter when setting the\npreferred activity, where we have to set both the MIME type and\ndata URI for the intent filter.  (For file: and content: URIs\nonly the MIME type is needed, since these can be opened directly\nthrough ContentResolver so everyone is presumed to be able to\nhandle them.)\n\nChange-Id: Ia7025e6859e9c90997bf56c2c80f225fca7a2007\n"
    }
  ],
  "next": "8f7f35e0ccd91c964b9d3eeef81ff829622dfa74"
}
