)]}'
{
  "log": [
    {
      "commit": "6ad0452e6301c0650f58f3991f7c523f6f279ddb",
      "tree": "0f116a6253e62bd96a4deb02c137461516cf6266",
      "parents": [
        "d12a7645a3bf3ffa83b8041bf343f1dc12a2381f"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Apr 15 18:53:24 2013 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 16 22:15:21 2013 +0000"
      },
      "message": "Disable tracing from Zygote\n\nThis change disables all atrace tracing in Zygote immediately after it is\ninitialized.  This is necessary because Zygote has no way to receive\nnotifications that the enabled trace tags have been changed.  Tracing is\nre-enabled when other processes fork from Zygote.\n\nChange-Id: If2983858fb0c4890ba9ab041849b1c4d98f66c13\n"
    },
    {
      "commit": "a9574e3361e168671d627071e26280f69d0d081b",
      "tree": "56e635986299e79064435bea52be6c102e08ae5d",
      "parents": [
        "678a1252b4f3cdc18d20b411c05a4320d1d9b719"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 09 20:13:12 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 10 03:01:37 2013 -0700"
      },
      "message": "Add touchnavigation to input debugging command.\n\nBug: 8583760\nChange-Id: I9b150133e3d9ca9fe970550f5c0d7c18e6c7b558\n"
    },
    {
      "commit": "d685894212e6dbeac1fda4996903c1da115d49a6",
      "tree": "c52d05c78811e79a869afbcdbe55a906e38f2fa1",
      "parents": [
        "9fa49cc3308f6af593d780581121afc3c1d7e046"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:54:12 2013 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:54:12 2013 -0700"
      },
      "message": "Add liblog\n\nBug: 8580410\nChange-Id: I746aa8258866508c3a725d0773faf4518096548f\n"
    },
    {
      "commit": "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": "7ba6470f4a734f4dc7255d484566ca84b269b0ae",
      "tree": "5ad4c520ade7f91bf164cb7b9fd25c51d7b6a0de",
      "parents": [
        "a6470d45148beaed765b88068bc76ad652ef33de",
        "4224a4ca85a4e7ba3f4e543ee52c643405464164"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Mar 27 17:45:21 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 27 17:45:21 2013 -0700"
      },
      "message": "am 4224a4ca: am 3864aa39: Merge \"Add interrupter library to simulate EINTR\"\n\n* commit \u00274224a4ca85a4e7ba3f4e543ee52c643405464164\u0027:\n  Add interrupter library to simulate EINTR\n"
    },
    {
      "commit": "3864aa3944254184ddcd61002cb9f1d7cb1d4c67",
      "tree": "4b4c75950c78881a2b3b82208207e21ab5a83d93",
      "parents": [
        "6b96e2f0006b5c33973b3500d3bb72a8c7a3bd38",
        "0054cbd4dbb9315419cc3c3b2aa1754a02fff1f4"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 28 00:16:30 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 28 00:16:31 2013 +0000"
      },
      "message": "Merge \"Add interrupter library to simulate EINTR\""
    },
    {
      "commit": "3fa3c28a356108a6558b6b54a0b10e1a5cc4f1b6",
      "tree": "61426df0943f36d09ce0916e8c5f7647b2808db5",
      "parents": [
        "b404ecc91a5dd3dd027554490b2ca18c1048bdba"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 26 16:15:41 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 27 12:01:52 2013 -0700"
      },
      "message": "Keep track of who has disabled applications.\n\nChange-Id: I2640d3dc2200b589e2beb42a43cc93efd090f06e\n"
    },
    {
      "commit": "672cf45de7aa5ad6fd1f75512ee5a451a16c0b39",
      "tree": "1a684fbeadc913b4544c65c12b334e0dc6f93181",
      "parents": [
        "7c566bf3e4a10d74588b3e92ea3f6af310930f37"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 26 15:24:24 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 26 15:24:24 2013 -0700"
      },
      "message": "Change wm commands to return size and density info.\n\nChange-Id: Id25722fe5f0cd9470d04d657f067e5ad29927c98\n"
    },
    {
      "commit": "1e0c8e69891c89a86b2d9879e3c1985563a56f49",
      "tree": "f3d2c545746860a3d38c0156a62626e24deb5f64",
      "parents": [
        "d3f8d0333cf4d9d2e47b5b082a6f70460adcf5ff"
      ],
      "author": {
        "name": "rpcraig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Wed Nov 28 08:37:06 2012 -0500"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 25 14:35:00 2013 +0000"
      },
      "message": "Proper security labeling of multi-user data directories.\n\nThis patch covers 2 cases. When an app is installed\nand the resulting data directory is created for all\nexisting users. And when a new user is created and\nall existing app data directories are created for\nthe new user.\n\nChange-Id: Iacaba6d9d18d5337e65713960d14efe32006b330\nSigned-off-by: rpcraig \u003crpcraig@tycho.ncsc.mil\u003e\n"
    },
    {
      "commit": "d3f8d0333cf4d9d2e47b5b082a6f70460adcf5ff",
      "tree": "201827c55fca7032cab81aa6322460d834089e20",
      "parents": [
        "f6c4dba2d30ddba41ccfd6d9d2be2729ea496902"
      ],
      "author": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Mon Mar 25 06:33:03 2013 -0400"
      },
      "committer": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Mon Mar 25 06:33:03 2013 -0400"
      },
      "message": "Add seinfo parsing to PackageManagerService.\n\nThis patch set allows the PMS to parse the\nmac_permissions.xml file which contains the\nseinfo values. Each package that is installed\non the device will be assigned an seinfo value\nbased on policy. This seinfo value will help label\nthe app process and data directory.  Modifications\ninclude adjustments to ApplicationInfo.java\nto store the seinfo tag per package as well as\nadjustments to installd to communicate the seinfo\ntag to libselinux.\n\nChange-Id: I61ad1ea12fb6a9a6d0b108ec163bc4bf4c954b58\nSigned-off-by: rpcraig \u003crpcraig@tycho.ncsc.mil\u003e\n"
    },
    {
      "commit": "a79fd4ca31cca590d81b8663b3649127477bd24a",
      "tree": "513f9dfa4a3e1dfe67cec2e6ab7abd2dfbe7236f",
      "parents": [
        "9eac52698b18d089e73c7ec2bf73a64a39504733"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 21 21:44:49 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 21 21:44:49 2013 -0700"
      },
      "message": "use the bitmap stride when encoding a screenshot as PNG\n\nBug: 8444808\nChange-Id: I47b74c22c940b40bd02634e9cd9dbff39b29a99f\n"
    },
    {
      "commit": "0137fb8937e69ed41cff3bf8cb0c1fea43daa3b5",
      "tree": "f891875e2b13707ea34b925414a75c25f34a0e79",
      "parents": [
        "3be79f328a9b8817859679d6c39a509e897db845"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 20 15:38:07 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 20 15:40:45 2013 -0700"
      },
      "message": "make sure screencap\u0027s data stream matches what adb expects\n\nadb assumes the stride is always equal to the width, so\nwe make sure it\u0027s actually the case (screenshot don\u0027t\nalways have this guarantee).\n\nChange-Id: I643b909f6542b7493a611afc6e3c86955b984352\n"
    },
    {
      "commit": "0678a8c250832a5549703f533f6afea9d8729e43",
      "tree": "12edfb543f95d2a8109d69661dfbd97e711642fa",
      "parents": [
        "0a4962ad11fadf7798c360efaee31b8d9d75bc9e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 19 20:56:00 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 19 20:56:00 2013 -0700"
      },
      "message": "make sure to start the binder thread pool\n\nChange-Id: I5c125a001936797489ebdcd0d4ccbde23adba282\n"
    },
    {
      "commit": "62aad7f66fcd673831029eb96dd49c95f76b17bd",
      "tree": "da743e86cd8cfe6f1c8a61fbce544f271c7e63b9",
      "parents": [
        "e4c9ac2df26f640fa9aeab5928e82bcc59a33da2"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Mar 14 01:11:53 2013 -0700"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Mon Mar 18 18:22:30 2013 -0700"
      },
      "message": "add reboot and shutdown to `svc power` command\n\na runtime shutdown will be performed first, then device will\nreboot with the provided reason or power off.\n\nChange-Id: I44cfbae19626c46147fad3bc8e91434970daa5d5\n"
    },
    {
      "commit": "fdc62ee6098b4fa0b7fae9731e200abd9a886218",
      "tree": "97f8f559078fe85368e3453b0c865054391ba4ca",
      "parents": [
        "e8918c57bde0152a109ac05386b21c8127523018",
        "57eed5b416bd72d4111a0aead2f5c71f24fde07b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 15 14:39:08 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 15 14:39:08 2013 -0700"
      },
      "message": "am 57eed5b4: am 38bfb5a7: Merge \"app_process: don\\\u0027t pollute the environment\"\n\n* commit \u002757eed5b416bd72d4111a0aead2f5c71f24fde07b\u0027:\n  app_process: don\u0027t pollute the environment\n"
    },
    {
      "commit": "9a9350550a7ca51feb97218101ef90c2cb90be71",
      "tree": "ef9b1a88b56ca830da9309928ca59e389f086c0a",
      "parents": [
        "f7ec4e61ebde9ff6d4934bd398e9ef8a39e4c28b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 15 13:12:28 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 15 13:14:52 2013 -0700"
      },
      "message": "app_process: don\u0027t pollute the environment\n\nGive a hoot — don\u0027t pollute!\n\nChange-Id: I30d6c05cecab483f0e9d8063907f7bc0ef2bb104\n"
    },
    {
      "commit": "fe57f62cd854957cd64007ee23b0f70e6fcaea5b",
      "tree": "2d43d216ea5b93d69af104e9b09c7818ae8a5284",
      "parents": [
        "868adf7369ed9f0dcd02cee5dd36a50b892bf936",
        "9c322c756276a9b22b05fd9c8bd67f2edfb50324"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 15 12:19:00 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 15 12:19:00 2013 -0700"
      },
      "message": "am 9c322c75: am f7ec4e61: Merge \"Never call app_main more than once\"\n\n* commit \u00279c322c756276a9b22b05fd9c8bd67f2edfb50324\u0027:\n  Never call app_main more than once\n"
    },
    {
      "commit": "1fe21bd1b6ca8b94c78fbf3666a1e8e0472355de",
      "tree": "d3fe55e4014a23cc1d6991ce3110b26a2d97de83",
      "parents": [
        "1ae6ae2094fd0ab8c82ad1a347e7a8bd67d995e5"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 15 11:38:29 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 15 11:59:03 2013 -0700"
      },
      "message": "Never call app_main more than once\n\nDifferent kernels seem to handle ADDR_COMPAT_LAYOUT differently,\nsometimes passing it to its children, sometimes not. If it\u0027s not\npassed to its child successfully, we can end up in a restart loop.\n\nInstead of testing for the presence of ADDR_COMPAT_LAYOUT, use an\nenvironment variable instead, which is handled more predictably.\n\nBug: 8392487\nChange-Id: Ia531dd2abb4e1cd46f3430d844e644f53581f530\n"
    },
    {
      "commit": "fd31ee4996b67be51f5f4c94d8ee2d55695a01bc",
      "tree": "11a2cb8a77544b7fba5734074fab60def291fb3c",
      "parents": [
        "41c9c8e5847b0d252673e9cceda0c4bc8c843fa1",
        "6098579a205848339cf6886f5c6d476ccf40e6fe"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Mar 14 17:21:38 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 14 17:21:38 2013 -0700"
      },
      "message": "am 6098579a: am 1ae6ae20: Merge \"Don\\\u0027t use ADDR_COMPAT_LAYOUT on the emulator\"\n\n* commit \u00276098579a205848339cf6886f5c6d476ccf40e6fe\u0027:\n  Don\u0027t use ADDR_COMPAT_LAYOUT on the emulator\n"
    },
    {
      "commit": "5fa1ee779e2170fd2e3e96b1e0887f15b04b1f76",
      "tree": "bb51821e615f0a1b70dc962cbac893106ce9f024",
      "parents": [
        "f732108e86fcc9825d5ecaa0b65ee91469c4a24c"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Mar 14 16:31:34 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Mar 14 16:31:34 2013 -0700"
      },
      "message": "Don\u0027t use ADDR_COMPAT_LAYOUT on the emulator\n\nFor the emulator, we want people to see memory as it\nactually is, not how we\u0027re hacking around buggy apps. Don\u0027t\nset ADDR_COMPAT_LAYOUT on the emulator.\n\nFor reasons that I don\u0027t understand, personality(ADDR_COMPAT_LAYOUT)\ndoes not persist across an exec on the emulator. app_main gets\ninto a tight loop restarting itself because of this. This change\nalso works around that bug.\n\nChange-Id: Ia73a7d2d623c25cf39d248145d97307945d554da\n"
    },
    {
      "commit": "8a0a929422682ba3eb6a205dc6c0638e68b909de",
      "tree": "2d97cde26c7050f159c9f20a3267ed1243783250",
      "parents": [
        "733329a2745ce703029b40afaa5dd78c7a5b620c"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Mar 14 13:23:52 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Mar 14 15:21:12 2013 -0700"
      },
      "message": "Respawn app_main if ADDR_COMPAT_LAYOUT is not set\n\nBug: 8358800\nChange-Id: Id81aa26d74dfd16a49f0ee5926ea2cdb3c2106d8\n"
    },
    {
      "commit": "c6ec5401539751017cf82f709a39f91cda9e8ad8",
      "tree": "3c1636dde947db0f9b47d32c3d58a6e297693757",
      "parents": [
        "a1cebc1f8ae2c4361078e3208ac7fa8c438fcf9c",
        "db95ad6dd417889b2d3a16f0392d9bb973978a1c"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Mar 14 21:45:40 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 14 21:45:40 2013 +0000"
      },
      "message": "Merge \"Respawn app_main if ADDR_COMPAT_LAYOUT is not set\" into jb-mr2-dev"
    },
    {
      "commit": "db95ad6dd417889b2d3a16f0392d9bb973978a1c",
      "tree": "56fce468988ac980a3a2450b4d56aff481b4d2ff",
      "parents": [
        "7534707b34ad7f2c8d3954d0fe8d2e6e7fcb2fc6"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Mar 14 13:23:52 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Mar 14 13:23:52 2013 -0700"
      },
      "message": "Respawn app_main if ADDR_COMPAT_LAYOUT is not set\n\nBug: 8358800\nChange-Id: Id81aa26d74dfd16a49f0ee5926ea2cdb3c2106d8\n"
    },
    {
      "commit": "02ffba940ca96988ed3e7774c606b43c58373b5e",
      "tree": "9d829654e361a899b1de8f0621716774e75857ec",
      "parents": [
        "998b692d888765d10827264c953b227439fbf365"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Mar 08 16:13:15 2013 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Mar 13 16:42:38 2013 -0700"
      },
      "message": "Handle finished bugreports, share from private.\n\nShow notification when a bugreport is finished, letting the user\nlaunch a SEND_MULTIPLE intent to share them.  Add dialog that warns\nuser about contents before sharing.  Since bugreports are now stored\nin private app data of the Shell app, use FileProvider to build Uris\nthat we can grant others access to.\n\nDefine BUGREPORT_FINISHED as being a protected broadcast.  Delete\nolder bugreports automatically to reclaim disk space.  Migrate any\nIntent extras to ClipData when building PendingIntents.\n\nAdd --receiver-permission support to am shell command.\n\nBug: 7005318\nChange-Id: If6c607dbcf137362d5887eac482ff7391563890f\n"
    },
    {
      "commit": "294b512ecaa98a6a8ef12285ad14e7a4091b5d57",
      "tree": "d89983eed02f4cc3fc48fb50cd0d779ff345752b",
      "parents": [
        "2042cc403a6eba2de1c5220e8402b045bdf24192"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Feb 19 14:08:59 2013 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Mar 08 15:08:10 2013 -0800"
      },
      "message": "DO NOT MERGE - Full backup/restore now handles OBBs sensibly\n\nOBB backup/ restore is no longer handled within the target app\nprocess.  This is done to avoid having to require that OBB-using\napps have full read/write permission for external storage.\n\nThe new OBB backup service is a new component running in the\nsame app as the already-existing shared storage backup agent.\nThe backup infrastructure delegates backup/restore of apps\u0027\nOBB contents to this component (because the system process\nmay not itself read/write external storage).\n\nFrom the command line, OBB backup is enabled by using new\n-obb / -noobb flags with adb backup.  The default is noobb.\n\nFinally, a couple of nit fixes:\n\n- buffer-size mismatch between the writer and reader of chunked\n  file data has been corrected; now the reading side won\u0027t be\n  issuing an extra pipe read per chunk.\n\n- bu now explicitly closes the transport socket fd after\n  adopting it. This was benign but triggered a logged\n  warning about leaked fds.\n\n(Cherrypicked)\n\nChange-Id: I471f6348abcccb7bf1e1710b7beda9f23de53e14\n"
    },
    {
      "commit": "a83cab0001ca4d90abe622c22a7af1b0da54f739",
      "tree": "51bec7849647a103e8d24179201e7f7e95e46b01",
      "parents": [
        "09ed05ceaecc5fca46e25fe9bd9e8c0ee61fd31d"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 07 17:50:11 2013 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 07 17:50:11 2013 -0800"
      },
      "message": "Do not hang in pm clear on an invalid package name\n\nThe Activity Manager was not properly informing the observer that\nthe operation had concluded (unsuccessfully).\n\nBug 8222595\n\nChange-Id: I8234e32d8edf4112c8c7a5e20e341d0b41e23014\n"
    },
    {
      "commit": "67df64b3a48a8157d08a98fa90135d0ac0ee621c",
      "tree": "d390d5c537c976a14688e24c1f9a8a213840ff29",
      "parents": [
        "0ffc81c1ada65b4ef4febaacf044e9fa62309b87"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Dec 14 12:09:36 2012 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Mar 06 09:49:44 2013 -0800"
      },
      "message": "Shared accounts and sharing of apps\n\nAPI and preliminary implementation for sharing primary user accounts with a secondary user.\nAbstractAccountAuthenticator has new methods to retrieve and apply a bundle of credentials\nto clone an account from the primary to a restricted secondary user. The AccountManagerService\ninitiates the account clone when it starts up the user and detects that the user has\na shared account registered that hasn\u0027t been converted to a real account.\n\nAccountManager also has new hidden APIs to add/remove/get shared accounts. There might be\nfurther improvements to this API to make shared accounts hidden/visible to select apps.\n\nAccountManagerService has a new table to store the shared account information.\n\nAdded ability in PackageManager to install and uninstall packages for a secondary user. This\nis required when the primary user selects a few apps to share with a restricted user.\n\nRemove shared accounts from secondary users when primary user removes the account.\n\nChange-Id: I9378ed0d8c1cc66baf150a4bec0ede56f6f8b06b\n"
    },
    {
      "commit": "848b4c9a9779e0deac6872f6f1b776acb6b89300",
      "tree": "213b4c2795463b6e6b54cef5bf37d71ffc595625",
      "parents": [
        "7b69e401769fb7a864990f3d732c6a7e8d7ec2f8"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Feb 28 16:43:23 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Feb 28 16:43:23 2013 -0800"
      },
      "message": "installd: use correct header file.\n\nChange-Id: I035524b857a04f8400e96468310d88abf247e582\n"
    },
    {
      "commit": "c2235472dacd31aa30ffc13de2c29488c3b6c338",
      "tree": "e2f8be37960234ee5c5afb6823d66999e9a10712",
      "parents": [
        "9fbdda42a2acff8179c251f6455fd3e2c9971545",
        "f7497c9e551dd3bcbb7438211f5022cc6341c527"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@android.com",
        "time": "Tue Feb 26 18:04:33 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 26 18:04:33 2013 +0000"
      },
      "message": "am f7497c9e: am 755205ad: Merge \"Fix spelling error s/SORT_OREDER/SORT_ORDER/ in \"content --help\"\"\n\n* commit \u0027f7497c9e551dd3bcbb7438211f5022cc6341c527\u0027:\n  Fix spelling error s/SORT_OREDER/SORT_ORDER/ in \"content --help\"\n"
    },
    {
      "commit": "64d0b3f9186bfb41cd14203d11f34c6fe0121945",
      "tree": "78f214cd7c8aa66270205161057b75e388948255",
      "parents": [
        "08a92a335fd84ca427b55c6c2d39f72970d82b76"
      ],
      "author": {
        "name": "Martin Olsson",
        "email": "martin@minimum.se",
        "time": "Tue Feb 26 17:54:39 2013 +0100"
      },
      "committer": {
        "name": "Martin Olsson",
        "email": "martin@minimum.se",
        "time": "Tue Feb 26 17:54:39 2013 +0100"
      },
      "message": "Fix spelling error s/SORT_OREDER/SORT_ORDER/ in \"content --help\"\n\nChange-Id: I8f869c9d2243ae8ff414399b7d6835c7ca74d500\nSigned-off-by: Martin Olsson \u003cmartin@minimum.se\u003e\n"
    },
    {
      "commit": "33c29b0e16a98753aecad894cbc344a87a6307a5",
      "tree": "1ea25e19fe365591e86513617833f56a6519d3c4",
      "parents": [
        "f9b9ead5d4f7bee34ec8a6b083065b624a7f6809"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Feb 19 16:42:16 2013 -0800"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Feb 19 16:42:16 2013 -0800"
      },
      "message": "Use BUILD_PREBUILT to install the shell script\n\nNOTICE files will be picked up automatically.\n\nChange-Id: Ia4938aff013f1c010cbbfceacf5685722c86c39a\n"
    },
    {
      "commit": "c652de8141f5b8e3c6bcf8916842b6e106413b1a",
      "tree": "d3be73e9b665365bdacd01cfc66faa24054f5a9c",
      "parents": [
        "736ef1e9dedbdd0c24e27f170034f2f869fd083f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 15 16:32:56 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 19 12:08:58 2013 -0800"
      },
      "message": "Implement display overscan support.\n\nThe window manager now keeps track of the overscan of\neach display, with an API to set it.  The overscan impacts\nhow it positions windows in the display.  There is a new set\nof APIs for windows to say they would like to go into the\noverscan region.  There is a call into the window manager to\nset the overscan region for a display, and it now has a\nconcept of display settings that it stores presistently.\n\nAlso added a new \"wm\" command, moving the window manager\nspecific commands from the \"am\" command to there and adding\na new now to set the overscan region.\n\nChange-Id: Id2c8092db64fd0a982274fedac7658d82f30f9ff\n"
    },
    {
      "commit": "50707cc8206f0d257ba83de2f1f99c3eaa13a4bd",
      "tree": "cdb9121fe11da7ac68b8786cd1b54aff78b63024",
      "parents": [
        "cd3b804e114c06b111fb0ad049c8845475a11a9b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 08 15:32:05 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 08 17:18:03 2013 -0800"
      },
      "message": "Fix issue #8133857: Tracking ANR in Gallery\n\nReworking the locking in resources so that we never hold the\nstate lock while calling in to potential long running operations.\nThis means the mTmpValue can no longer be final (since we need\nto use it while the lock isn\u0027t held), so a new field needs to\nbe added as the lock and everything that touches mTmpValue must\ndeal with it being null, restoring the value in there when\npossible, etc.\n\nChange-Id: Ie5ffd0f66e5f2d0e869a62d72e7a55b1c74fe872\n"
    },
    {
      "commit": "f51f61269aacdfcf737b2c32b6b216c48ab61e65",
      "tree": "33839b315b97323df81f9638c8bb085241f017cc",
      "parents": [
        "b86147910877f1aae0733f05a9a93b91101e67e2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Feb 04 18:23:34 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 05 11:56:12 2013 -0800"
      },
      "message": "App ops: new operations for SMS.\n\nImplementation required a new framework feature\nto associate an app op with a broadcast.\n\nChange-Id: I4ff41a52f7ad4ee8fd80cbf7b394f04d6c4315b3\n"
    },
    {
      "commit": "f265ea9d8307282ff1da3915978625a94fc2859e",
      "tree": "4e92b5de30239c1808a395cb49c9b17fe28ccffb",
      "parents": [
        "7a4ecc957d437ad4914988edc7593570f1e43f79"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jan 31 15:00:51 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 01 15:14:29 2013 -0800"
      },
      "message": "App ops: vibration, neighboring cells, dialing, etc.\n\nImprove handling of vibration op, so that apps are\nbetter blamed (there is now a hidden vibrator API that\nsupplies the app to blame, and the system now uses this\nwhen vibrating on behalf of an app).\n\nAdd operation for retrieving neighboring cell information.\n\nAdd a new op for calling a phone number.  This required\nplumbing information about the launching package name through\nthe activity manager, which required changing the internal\nstartActivity class, which required hitting a ton of code that\nuses those internal APIs.\n\nChange-Id: I3f8015634fdb296558f07fe654fb8d53e5c94d07\n"
    },
    {
      "commit": "6fc736971a66eb4b461931a5e972d51b65bfa68f",
      "tree": "91c61b24a636c4d11b4ae23d915f31492472dc2a",
      "parents": [
        "8c47e856b067057b5fcbb6eccfc79d1da4cff8f1",
        "d2c0c1021e7da8b2a4d9a6e61d52766381fca23f"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Jan 29 20:52:43 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 29 20:52:44 2013 +0000"
      },
      "message": "Merge \"Implement support for method calls in the `content` tool.\""
    },
    {
      "commit": "d2c0c1021e7da8b2a4d9a6e61d52766381fca23f",
      "tree": "c3d3672fcc0ab1a8e6da6abf39edc00e9c7270ba",
      "parents": [
        "572ec703d5b647cb7de4f30f2db4dc35a5e1a17e"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Jan 29 13:47:04 2013 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Jan 29 14:27:21 2013 -0500"
      },
      "message": "Implement support for method calls in the `content` tool.\n\n  $ content call\n    --uri content://com.example\n    --method methodname\n    [--arg optional_string_arg]\n    [--extra name:s:foo --extra value:i:0]\n\nThe URI is just used to resolve the provider. --extra has\nthe same syntax as --bind.\n\nChange-Id: I98cb89f0174a00e7c29ca0d8c8d809d453de3623\n"
    },
    {
      "commit": "d0fd54648ca6249f56cf469c57181b5a7bbb71d0",
      "tree": "4c710f5a98e913d87290a312b89a46370847ed60",
      "parents": [
        "5924dc4d7a42d04011d2e67aa3f9e28b7d940681",
        "80943d8daa6ab31ab5c486d57aea406aa0730d58"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 29 03:16:40 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 29 03:16:40 2013 +0000"
      },
      "message": "Merge \"Adding UI test automation APIs.\""
    },
    {
      "commit": "80943d8daa6ab31ab5c486d57aea406aa0730d58",
      "tree": "cb7738eff465941484aac3eb6ba15ba365aea576",
      "parents": [
        "64cae1a608c196c2bd1d9e7cfd2a1632fd0e5b83"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jan 02 10:25:37 2013 -0800"
      },
      "committer": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 22 17:56:53 2013 -0800"
      },
      "message": "Adding UI test automation APIs.\n\nThis change adds APIs support for implementing UI tests. Such tests do\nnot rely on internal application structure and can span across application\nboundaries. UI automation APIs are encapsulated in the UiAutomation object\nthat is provided by an Instrumentation object. It is initialized by the\nsystem and can be used for both introspecting the screen and performing\ninteractions simulating a user. UI test are normal instrumentation tests\nand are executed on the device.\n\nUiAutomation uses the accessibility APIs to introspect the screen and\na special delegate object to perform privileged operations such as\ninjecting input events. Since instrumentation tests are invoked by a shell\ncommand, the shell program launching the tests creates a delegate object and\npasses it as an argument to started instrumentation. This delegate\nallows the APK that runs the tests to access some privileged operations\nprotected by a signature level permissions which are explicitly granted\nto the shell user.\n\nThe UiAutomation object also supports running tests in the legacy way\nwhere the tests are run as a Java shell program. This enables existing\nUiAutomator tests to keep working while the new ones should be implemented\nusing the new APIs. The UiAutomation object exposes lower level APIs which\nallow simulation of arbitrary user interactions and writing complete UI test\ncases. Clients, such as UiAutomator, are encouraged to implement higher-\nlevel APIs which minimize development effort and can be used as a helper\nlibrary by the test developer.\n\nThe benefit of this change is decoupling UiAutomator from the system\nsince the former was calling hidden APIs which required that it is\nbundled in the system image. This prevented UiAutomator from being\nevolved separately from the system. Also UiAutomator was creating\nadditional API surface in the system image. Another benefit of the new\ndesign is that now test cases have access to a context and can use\npublic platform APIs in addition to the UiAutomator ones. Further,\nthird-parties can develop their own higher level test APIs on top\nof the lower level ones exposes by UiAutomation.\n\nbug:8028258\n\nAlso this change adds the fully qualified resource name of the view\u0027s\nid in the emitted AccessibilityNodeInfo if a special flag is set while\nconfiguring the accessibility service. Also added is API for looking\nup node infos by this id. The id resource name is relatively more stable\ncompared to the generaed id number which may change from one build to\nanother. This API facilitate reuing the already defined ids for UI\nautomation.\n\nbug:7678973\n\nChange-Id: I589ad14790320dec8a33095953926c2a2dd0228b\n"
    },
    {
      "commit": "fd7adedebf88427162a3ce27fcc9cfd3893c869d",
      "tree": "d9dfb04e5d0972a6ae7bf92431b0d48925e97b48",
      "parents": [
        "cc7433470f00fac3bbe7835de3ded4b9bf121244"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 22 17:10:23 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 22 17:10:23 2013 -0800"
      },
      "message": "Add new disabled state for \"optional\" built-in apps.\n\nThe disabled state allows you to make an app disabled\nexcept for whatever parts of the system still want to\nprovide access to them and automatically enable them\nif the user want to use it.\n\nCurrently the input method manager service is the only\npart of the system that supports this, so you can put\nan IME in this state and it will generally look disabled\nbut still be available in the IME list and once selected\nswitched to the enabled state.\n\nChange-Id: I77f01c70610d82ce9070d4aabbadec8ae2cff2a3\n"
    },
    {
      "commit": "d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaac",
      "tree": "5f6d8b2c0e66c99289ae085cb6a6a3be168eb000",
      "parents": [
        "f25febf01453733e8bdd1ac241ecd9d3bcbef475"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jan 17 17:47:37 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jan 18 13:02:26 2013 -0800"
      },
      "message": "Rework ParceledListSlice to be much easier to use.\n\nTake advantage of this to return better information about\npackages filtered by permissions -- include the permissions\nthey have in the requested array.\n\nAlso fix issue #8026793 (Contact picture shows default pic\nwhile searching for a contact in qsb) by using the base\npackage name of the Context when reporting the app name\nof an operation.  Otherwise you could make a resource-only\ncontext for another application and do calls through that\nand get reported as the wrong app.\n\nChange-Id: I5e0488bf773acea5a3d22f245641828e1a106fb8\n"
    },
    {
      "commit": "35654b61e8fe7bc85afcb076ddbb590d51c5865f",
      "tree": "0f42a90b4deaa0156d84df5d79b78cd6f2ac8807",
      "parents": [
        "8a8b047f2d28f6b2d728731a7e71eeaf16f89700"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jan 14 17:38:02 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 16 12:11:01 2013 -0800"
      },
      "message": "More work on App Ops service.\n\nImplemented reading and writing state to retain information\nacross boots, API to retrieve state from it, improved location\nmanager interaction to monitor both coarse and fine access\nand only note operations when location data is being delivered\nback to app (not when it is just registering to get the data at\nsome time in the future).\n\nAlso implement tracking of read/write ops on contacts and the\ncall log.  This involved tweaking the content provider protocol\nto pass over the name of the calling package, and some\ninfrastructure in the ContentProvider transport to note incoming\ncalls with the app ops service.  The contacts provider and call\nlog provider turn this on for themselves.\n\nThis also implements some of the mechanics of being able to ignore\nincoming provider calls...  all that is left are some new APIs for\nthe real content provider implementation to be involved with\nproviding the correct behavior for query() (return an empty\ncursor with the right columns) and insert() (need to figure out\nwhat URI to return).\n\nChange-Id: I36ebbcd63dee58264a480f3d3786891ca7cbdb4c\n"
    },
    {
      "commit": "6b77645aa9ac51ce33ea67adba226aaf1a6e8846",
      "tree": "0eb1ff1cf5bbe1e508596462396c03d878fd9c26",
      "parents": [
        "87ed0a10f5cb563c0a06d22a40472b4e88348e9b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Nov 02 15:40:32 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 14 08:45:52 2012 -0800"
      },
      "message": "Switch keystore to binder\n\nChange-Id: I9fa1fc05068bee1eed3f618fb32f70cf3d4c05d4\n"
    },
    {
      "commit": "2e59369dca975092751b163b803fd27d48d9aca6",
      "tree": "91d994aae4ca4ab50e5339eea6035325214a62ff",
      "parents": [
        "4299f63e54dceeaaa44a057ba03f0881834491ec"
      ],
      "author": {
        "name": "rpcraig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Wed Nov 14 10:04:38 2012 -0500"
      },
      "committer": {
        "name": "rpcraig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Wed Nov 14 10:16:03 2012 -0500"
      },
      "message": "Bug fix on installd with SELinux enabled kernel.\n\nsetfilecon is not required on libsymlinks when target\ndoesn\u0027t exist. A bootloop is caused without this\nchange.\n\nChange-Id: I96dbd4b1f47a752bfcaf6016c81fd43083c4a6e1\nSigned-off-by: rpcraig \u003crpcraig@tycho.ncsc.mil\u003e\n"
    },
    {
      "commit": "7b172a49a90ea6784dbfe0002474f9d4fd4ace1a",
      "tree": "05db15b0b2b922fa644199d48d8769624bacbe34",
      "parents": [
        "e4d08f11c49ff4c554df80c12fa2b5b04831e2f5",
        "58ed5d748c0b9b64845975ef5844ad313de7c3f6"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 13:08:25 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 07 13:08:25 2012 -0800"
      },
      "message": "am 58ed5d74: am 768d9e1a: Merge \"Correct executable bit for source files\"\n\n* commit \u002758ed5d748c0b9b64845975ef5844ad313de7c3f6\u0027:\n  Correct executable bit for source files\n"
    },
    {
      "commit": "58ed5d748c0b9b64845975ef5844ad313de7c3f6",
      "tree": "507af3879bc894eb854712a1fe6c0953805a895c",
      "parents": [
        "9197d170b770f2b87abd0cd0e13dcf71e5a181c2",
        "768d9e1a72ceee7d4a5f608776b87b62d6ce4a04"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 11:52:12 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 07 11:52:12 2012 -0800"
      },
      "message": "am 768d9e1a: Merge \"Correct executable bit for source files\"\n\n* commit \u0027768d9e1a72ceee7d4a5f608776b87b62d6ce4a04\u0027:\n  Correct executable bit for source files\n"
    },
    {
      "commit": "3a084af2e90849aaa8beb3a610189e3399c63ea0",
      "tree": "ba4b87d227674fd68f9ea395649fde32778620f0",
      "parents": [
        "9d547d6934f64189e368c0b190fb4cf49c95a557"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 10:19:47 2012 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 10:27:31 2012 -0800"
      },
      "message": "Correct executable bit for source files\n\nMany media files and source code files were marked as executable in Git.\nRemove those.\n\nAlso a shell script and python script were not marked as executable.\n\nChange-Id: Ieb51bafb46c895a21d2e83696f5a901ba752b2c5\n"
    },
    {
      "commit": "a4256d1d7b17b86a4446448f54ab9b443c3094f7",
      "tree": "53c33ca3a8c43af94d068901645240c5e4a672d8",
      "parents": [
        "d2955cb121924e6031c75c7d60ee9837075d6bae"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Nov 01 13:55:28 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Nov 01 13:55:28 2012 -0700"
      },
      "message": "Fix typo\n\nChange-Id: I8c3797fb2d343ec6f25765fba49ac097e816d1cf\n"
    },
    {
      "commit": "c59b2f9a774c024fe8c893d956cd2749a6bd2673",
      "tree": "b039afcd6164ad08a273665b6320d98aa5b5aea5",
      "parents": [
        "e0e9e9462c8035c1883a0bd16ee62d861c77e550"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Oct 24 12:31:10 2012 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Oct 24 12:31:10 2012 -0700"
      },
      "message": "More changes to fix PDK build:\n\nmove screencap back to frameworks/base\nmove libdiskusage to frameworks/native\n\nChange-Id: I8abe425c4bbf305bbe8650094c40c16df8c6d5e4\n"
    },
    {
      "commit": "e0e9e9462c8035c1883a0bd16ee62d861c77e550",
      "tree": "14e4d765ef53bd36e80d6a75a8a6991533ca2ded",
      "parents": [
        "6931061de6471e598d36e6c101ce9bb95036a80c"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Oct 24 11:52:57 2012 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Oct 24 11:52:57 2012 -0700"
      },
      "message": "Move app_process and system_server back to frameworks/base\n\ndue to dependency on libandroid_runtime\n\nChange-Id: I96c0ba72ea406c9e7e63b9a160498187b6ec9b21\nSigned-off-by: Mike Lockwood \u003clockwood@google.com\u003e\n"
    },
    {
      "commit": "6931061de6471e598d36e6c101ce9bb95036a80c",
      "tree": "9c0a2d44af0e4c6299768aa84cc8b15372c3c87c",
      "parents": [
        "e31e0f8c7c03b56a044ca9cfa155ea2745918136"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Oct 24 10:43:42 2012 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Oct 24 10:43:42 2012 -0700"
      },
      "message": "Move non-Java commands to frameworks/native\n\nChange-Id: Id77c2cecb27cec500dfe066e4430f9e67802a433\nSigned-off-by: Mike Lockwood \u003clockwood@google.com\u003e\n"
    },
    {
      "commit": "aea7b6903b66b07f35369c8b16b7a7df503022c7",
      "tree": "7c6a97c977ecaf3b7cc8e0015a5edc390eb9e2fa",
      "parents": [
        "850fc75f1c2cc7d41e822386c0fd25fb62a3de49",
        "da2f2e51c71b5ebc50fe76c3cd5a920c81a5ee92"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Tue Oct 23 23:19:01 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 23 23:19:01 2012 -0700"
      },
      "message": "am da2f2e51: am 799916e6: Merge \"Revert \"Check non-primary user dirs during package scan\"\" into jb-mr1-dev\n\n* commit \u0027da2f2e51c71b5ebc50fe76c3cd5a920c81a5ee92\u0027:\n  Revert \"Check non-primary user dirs during package scan\"\n"
    },
    {
      "commit": "da2f2e51c71b5ebc50fe76c3cd5a920c81a5ee92",
      "tree": "4a7ecf49e9cda12965c44b9c418bac23854143f9",
      "parents": [
        "9e76f415e62325673c07ecbe3ce3fa377b293d04",
        "799916e6ac706921e43a3382e5d9e06e13f87525"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Tue Oct 23 23:17:23 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 23 23:17:23 2012 -0700"
      },
      "message": "am 799916e6: Merge \"Revert \"Check non-primary user dirs during package scan\"\" into jb-mr1-dev\n\n* commit \u0027799916e6ac706921e43a3382e5d9e06e13f87525\u0027:\n  Revert \"Check non-primary user dirs during package scan\"\n"
    },
    {
      "commit": "799916e6ac706921e43a3382e5d9e06e13f87525",
      "tree": "d5c2a1fe01b349a506d7766a68d11caeb7ba025e",
      "parents": [
        "f52cbb6b1800fc2b338e8c0883170567fcd0447a",
        "383fa18b511c195cc51a96c5504442bfec998e9f"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Tue Oct 23 23:14:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 23 23:14:15 2012 -0700"
      },
      "message": "Merge \"Revert \"Check non-primary user dirs during package scan\"\" into jb-mr1-dev"
    },
    {
      "commit": "383fa18b511c195cc51a96c5504442bfec998e9f",
      "tree": "d8b158e6fc1205970a0f2c43557acba84a4fbfd5",
      "parents": [
        "4525f5b69cb44a9a0c92f9c525fc47541f456621"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Tue Oct 23 23:12:19 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 23 23:12:19 2012 -0700"
      },
      "message": "Revert \"Check non-primary user dirs during package scan\"\n\nThis reverts commit 4525f5b69cb44a9a0c92f9c525fc47541f456621\n\nChange-Id: I31b7a0860972532478ab3420556b806bfa78739a\n"
    },
    {
      "commit": "5e24b92f0407e413cc9d2aafeef4905e1b139dc0",
      "tree": "d49768d9a489a94a21f67f7590568447d83361ec",
      "parents": [
        "a170dcb7b6908d0ea4dd7c2717d2d2b1da59262c",
        "f461d3f69f4533045167b4dc1f7445ad6ae47af3"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Oct 23 17:10:24 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 23 17:10:24 2012 -0700"
      },
      "message": "am f461d3f6: am da2509c4: Merge \"Check non-primary user dirs during package scan\" into jb-mr1-dev\n\n* commit \u0027f461d3f69f4533045167b4dc1f7445ad6ae47af3\u0027:\n  Check non-primary user dirs during package scan\n"
    },
    {
      "commit": "f461d3f69f4533045167b4dc1f7445ad6ae47af3",
      "tree": "6ee0f34eb0600c8741d20d7ce454aa42509652c1",
      "parents": [
        "9e96c69e3e9ebdb820acd347b4691c32a5d76be4",
        "da2509c434ebb2a5a0da1bc270cae7f007cbb0f9"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Oct 23 17:06:24 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 23 17:06:24 2012 -0700"
      },
      "message": "am da2509c4: Merge \"Check non-primary user dirs during package scan\" into jb-mr1-dev\n\n* commit \u0027da2509c434ebb2a5a0da1bc270cae7f007cbb0f9\u0027:\n  Check non-primary user dirs during package scan\n"
    },
    {
      "commit": "da2509c434ebb2a5a0da1bc270cae7f007cbb0f9",
      "tree": "8517da587126105df96096234de09a19fc2fdb38",
      "parents": [
        "6757572b39d3802c4d7b69467b5ebf69a96c208b",
        "4525f5b69cb44a9a0c92f9c525fc47541f456621"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Oct 23 17:03:08 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 23 17:03:09 2012 -0700"
      },
      "message": "Merge \"Check non-primary user dirs during package scan\" into jb-mr1-dev"
    },
    {
      "commit": "4525f5b69cb44a9a0c92f9c525fc47541f456621",
      "tree": "69472f1e1603516577ef1485f39dfc8fc0d40354",
      "parents": [
        "2278898126c1cea4bd345bb96313d381b4ad3993"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Oct 22 14:24:23 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Oct 22 18:48:24 2012 -0700"
      },
      "message": "Check non-primary user dirs during package scan\n\nDuring package scan, only the primary user data directories were\nchecked. If the secondary user didn\u0027t have an application directory, it\nwould happily ignore it. The app would then crash upon startup.\n\nBug: 7391882\nChange-Id: I1fa92aa27386104d4ac6bc5dc92bfbf2e7dfac9f\n"
    },
    {
      "commit": "465fd635d505d2d5af9dfd409cb016fc9cac71d5",
      "tree": "1f11a3cc306ee7cea49626e4dac4ab43004a5452",
      "parents": [
        "103dbdc5a6d61d4a47c6308cf0345e90ddbced23",
        "3ce8eb4eb24f90b8d850e3dc7c18569dd1fd361a"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Oct 22 16:19:52 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 22 16:19:52 2012 -0700"
      },
      "message": "am 3ce8eb4e: am 55708a9d: am e03c0244: Merge \"Clear data deletes too much\" into jb-mr1-dev\n\n* commit \u00273ce8eb4eb24f90b8d850e3dc7c18569dd1fd361a\u0027:\n  Clear data deletes too much\n"
    },
    {
      "commit": "3ce8eb4eb24f90b8d850e3dc7c18569dd1fd361a",
      "tree": "608f70bf808eeefc94cc2aa69376002625d4e4c3",
      "parents": [
        "fdf263971b3bbc93d743195e840967063ccf5fcb",
        "55708a9dce5be627f68e388d4ad355595ad5fef5"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Oct 22 16:17:17 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 22 16:17:17 2012 -0700"
      },
      "message": "am 55708a9d: am e03c0244: Merge \"Clear data deletes too much\" into jb-mr1-dev\n\n* commit \u002755708a9dce5be627f68e388d4ad355595ad5fef5\u0027:\n  Clear data deletes too much\n"
    },
    {
      "commit": "55708a9dce5be627f68e388d4ad355595ad5fef5",
      "tree": "f6ececb0f045f05f926f8f7af274cf6de4627d2b",
      "parents": [
        "9defd0663e2b6a486f5bc72621bbbd4dfab666fb",
        "e03c0244717093e0fbc9b05073d3ae3dbd8fcea5"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Oct 22 16:14:14 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 22 16:14:14 2012 -0700"
      },
      "message": "am e03c0244: Merge \"Clear data deletes too much\" into jb-mr1-dev\n\n* commit \u0027e03c0244717093e0fbc9b05073d3ae3dbd8fcea5\u0027:\n  Clear data deletes too much\n"
    },
    {
      "commit": "9157d3f3b70f5225e06b0a478f2d3c5ce3d923b2",
      "tree": "c02e39a9b7d640187137671a1dcef234369f95c7",
      "parents": [
        "2278898126c1cea4bd345bb96313d381b4ad3993"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Oct 22 15:19:16 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Oct 22 15:20:52 2012 -0700"
      },
      "message": "Clear data deletes too much\n\nBug: 7389445\nChange-Id: Ic12d7a8e37747dc1a9b71ec5f881b5e440e0a75e\n"
    },
    {
      "commit": "a7fb9d907c7f3b44d92e401ca4cea096c5c53de0",
      "tree": "9a8a5e01845a9b01441feb17f0409d9c49105d58",
      "parents": [
        "ea064e1b1f4b5b85f3e6b29aa05f64ebcc630d0d",
        "9396f183c2db5d6167f39a8d5667fb4abcc96e5e"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 19 17:20:03 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 19 17:20:03 2012 -0700"
      },
      "message": "am 9396f183: resolved conflicts for merge of a5d29b2c to jb-mr1-dev-plus-aosp\n\n* commit \u00279396f183c2db5d6167f39a8d5667fb4abcc96e5e\u0027:\n  Try to free cache before giving up on install\n  Robustly add symlink and add for non-primary users\n"
    },
    {
      "commit": "9396f183c2db5d6167f39a8d5667fb4abcc96e5e",
      "tree": "3f7b1ce7830b96160af9c554e923eb7eeb8c02d7",
      "parents": [
        "4aed962612413d506f4682c1de8c9f3cfc453d60",
        "a5d29b2c14c2cbe7eeb1f3c41aeeffa1dd29f264"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 19 17:16:41 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 19 17:16:41 2012 -0700"
      },
      "message": "resolved conflicts for merge of a5d29b2c to jb-mr1-dev-plus-aosp\n\nChange-Id: I21512d61b5c08cee5fed69b34c3275ba5c3fc0d8\n"
    },
    {
      "commit": "a5d29b2c14c2cbe7eeb1f3c41aeeffa1dd29f264",
      "tree": "a28d69dbd9acacbe5b631f8b97f8214ff201687f",
      "parents": [
        "a09dd3a6081b498476beddbbc2506f6d2be25a6b",
        "9bef3294d3660a85442829a25c9777e25d3c3cc8"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 19 16:40:07 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 19 16:40:07 2012 -0700"
      },
      "message": "am 9bef3294: Merge changes Ie3c8ca8d,Ia175b36d into jb-mr1-dev\n\n* commit \u00279bef3294d3660a85442829a25c9777e25d3c3cc8\u0027:\n  Try to free cache before giving up on install\n  Robustly add symlink and add for non-primary users\n"
    },
    {
      "commit": "a3e90798b7ad3ed62e5b31842c699b2f98bd457b",
      "tree": "01e322a27dfafaf0eb4938a095f3f7f32ed03d3e",
      "parents": [
        "341aa8e0e8753ddb5eca22311e7d671e0518f326"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Oct 18 10:58:36 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Oct 18 15:12:09 2012 -0700"
      },
      "message": "Robustly add symlink and add for non-primary users\n\nAmazingly, some apps still don\u0027t use the nativeLibraryPath. So add a lib\nsymlink for non-primary users to fix that.\n\nAlso, there was an error when the symlink existed that it would give up.\nThis shouldn\u0027t really happen, but in that case, just remove it and\ncreate a new one to be safe.\n\nAlso, move the downgrade code to the appropriate place. This downgrade\ncase triggered the above symlink existing bug.\n\nBug: 7318366\nBug: 7371571\nChange-Id: Ia175b36d98f00bdc2f2433b909aafd524eb34d15\n"
    },
    {
      "commit": "ebf5569880043ffc55e3ecf65442fa50d8b72c81",
      "tree": "4c63486f0ab54bb70d93714a044404443a2f4f66",
      "parents": [
        "61d5c431fdcc52feedb365bef840b9fb6654cc1d",
        "63a183c41f26e4eb475dfbcc4386b37372eb5fba"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 17 10:53:51 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 17 10:53:51 2012 -0700"
      },
      "message": "am 63a183c4: Merge \"resolved conflicts for merge of 40f2f751 to jb-mr1-dev-plus-aosp\" into jb-mr1-dev-plus-aosp\n\n* commit \u002763a183c41f26e4eb475dfbcc4386b37372eb5fba\u0027:\n  Fix mistaken removal of setfilecon\n"
    },
    {
      "commit": "367400491a22cefd4e366e2278caf63d574820b0",
      "tree": "683fd4f160028134b2d92b93df6da5485bb98954",
      "parents": [
        "ae232842c86f108da5a73c047eff5a09e9c9c222",
        "40f2f751ac7cebc455b44da23b9589cca5ae2e25"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 17 10:50:14 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 17 10:50:14 2012 -0700"
      },
      "message": "resolved conflicts for merge of 40f2f751 to jb-mr1-dev-plus-aosp\n\nChange-Id: I6075e2bf98b0f8310c93fac649c34cbbbd89707f\n"
    },
    {
      "commit": "115198ba1a7b95029616143986d77b751a947a4d",
      "tree": "99ade7ae1eac82856ed2117083913e786434e65a",
      "parents": [
        "21dc0aa5a4e54d00bfe7adcc0517871931abd1e6",
        "ed3ce513a64b9f26358dc77187d6d04fe91abae9"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 17 10:10:27 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 17 10:10:27 2012 -0700"
      },
      "message": "am ed3ce513: Fix bad merge\n\n* commit \u0027ed3ce513a64b9f26358dc77187d6d04fe91abae9\u0027:\n  Fix bad merge\n"
    },
    {
      "commit": "ed3ce513a64b9f26358dc77187d6d04fe91abae9",
      "tree": "64b2ae7ec46052473888beaa764fb4b275cd89e5",
      "parents": [
        "ad0090e7b8c70cf44609aafbfea8c3946e2802a9"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 17 10:05:10 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 17 10:06:17 2012 -0700"
      },
      "message": "Fix bad merge\n\nChange-Id: I9f05f96e3607b994368a8d4e1e454af8fe84424d\n"
    },
    {
      "commit": "21dc0aa5a4e54d00bfe7adcc0517871931abd1e6",
      "tree": "fd645afc0ce241d95d2faa17a2f348b206ff83f9",
      "parents": [
        "babf588cb5402bae5ea6ff6ff4caa1fbb7d38aed",
        "ad0090e7b8c70cf44609aafbfea8c3946e2802a9"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 17 10:05:58 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 17 10:05:58 2012 -0700"
      },
      "message": "am ad0090e7: resolved conflicts for merge of 85f9ba9e to jb-mr1-dev-plus-aosp\n\n* commit \u0027ad0090e7b8c70cf44609aafbfea8c3946e2802a9\u0027:\n  Remove HAVE_SELINUX guards\n"
    },
    {
      "commit": "ad0090e7b8c70cf44609aafbfea8c3946e2802a9",
      "tree": "e00685d10039cdcd83a33a7e848724d724b9b787",
      "parents": [
        "9cb417b76fa72b3a53c6ce6d4017b389f553a2b8",
        "85f9ba9e7fdf9c3bf063f2e4c44a670861b4f199"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 17 10:02:22 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 17 10:02:22 2012 -0700"
      },
      "message": "resolved conflicts for merge of 85f9ba9e to jb-mr1-dev-plus-aosp\n\nChange-Id: I9ae49075935f0e9ec432ce9d828ee26a4fcdb44c\n"
    },
    {
      "commit": "57c63d8f9b1a2839f47a68feb1da51ab558e5d8a",
      "tree": "72d5760e474993dea9867ac08a10b07151e0c10c",
      "parents": [
        "85f9ba9e7fdf9c3bf063f2e4c44a670861b4f199"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 17 09:50:35 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 17 09:50:37 2012 -0700"
      },
      "message": "Fix mistaken removal of setfilecon\n\nPrevious commit attempted to move setfilecon above chown, but mistakenly\nsquashed libdir and pkgdir setfilcon into one incorrect setfilecon.\n\nChange-Id: I1ad00eae8a0e69ae88ce47cd5571558ce1ad2145\n"
    },
    {
      "commit": "c9a1aabc49d31370e3bf41f85b805499640230b1",
      "tree": "f92e4d72caf27ece69a5a811f90b7b4f3a442be5",
      "parents": [
        "826343138dfd8666d2263dd82bfdbf657fc1881e"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Oct 16 23:28:21 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Oct 16 23:32:31 2012 -0700"
      },
      "message": "Remove HAVE_SELINUX guards\n\nChange-Id: I6c2161471f657aa1645695ffd56ff434b0c2b426\n"
    },
    {
      "commit": "0fa6bf683c9d48142340ec049d806f757e1cbb86",
      "tree": "625bbe62bedc80c75c4adde81a8d9658969f8c4d",
      "parents": [
        "f95dfbbcfe2dda56876ede4d3a6d88ee506a1bea",
        "a1fda2e388603152d45ea5ef43b1c9b6d6935b6b"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Oct 15 20:22:37 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 15 20:22:37 2012 -0700"
      },
      "message": "am a1fda2e3: am 77ce60a5: am 7789c9bb: Merge \"Support pm clear as --user.\" into jb-mr1-dev\n\n* commit \u0027a1fda2e388603152d45ea5ef43b1c9b6d6935b6b\u0027:\n  Support pm clear as --user.\n"
    },
    {
      "commit": "a1fda2e388603152d45ea5ef43b1c9b6d6935b6b",
      "tree": "d31c5923f7db1702ac6cd9b507b040842e7dbcde",
      "parents": [
        "244f5125abd62e60f6bf91675f3be6d540b818d2",
        "77ce60a59330d6059011d737142bd210db845d85"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Oct 15 20:19:04 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 15 20:19:04 2012 -0700"
      },
      "message": "am 77ce60a5: am 7789c9bb: Merge \"Support pm clear as --user.\" into jb-mr1-dev\n\n* commit \u002777ce60a59330d6059011d737142bd210db845d85\u0027:\n  Support pm clear as --user.\n"
    },
    {
      "commit": "77ce60a59330d6059011d737142bd210db845d85",
      "tree": "5c68e2b5170c8c6f0aa4dbaf81a8e78b280d4e24",
      "parents": [
        "b9e224ccb5604032ee6a11789b4e03c747a15838",
        "7789c9bbfca079655e9285173d6175b94bc774b0"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Oct 15 18:29:51 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 15 18:29:51 2012 -0700"
      },
      "message": "am 7789c9bb: Merge \"Support pm clear as --user.\" into jb-mr1-dev\n\n* commit \u00277789c9bbfca079655e9285173d6175b94bc774b0\u0027:\n  Support pm clear as --user.\n"
    },
    {
      "commit": "a3e9ff7debde50f6b58ebc3033cbbad650c10ac7",
      "tree": "b94d2caf1fa4029650b6ca3fd57a9d3d1b54f684",
      "parents": [
        "52801aae89196b7ad16ef21b07d2d621e7d0bb61"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Oct 15 16:16:39 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Oct 15 16:16:39 2012 -0700"
      },
      "message": "Support pm clear as --user.\n\nBug: 7352703\nChange-Id: I0e9cc4f2313e5424d234c3cb051004c0321d9dac\n"
    },
    {
      "commit": "0054cbd4dbb9315419cc3c3b2aa1754a02fff1f4",
      "tree": "cd1283e9c71e1489ee3bf82b2da3f0744c7e6f9b",
      "parents": [
        "cee1124052202c7f2a1956a54e5aa538d82197a7"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 12 14:58:28 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Oct 15 08:53:46 2012 -0700"
      },
      "message": "Add interrupter library to simulate EINTR\n\nTo check for robustness against EINTR from syscalls, add an\ninterrupter library that can be preloaded with LD_PRELOAD.\n\nChange-Id: I0a6cd8702ec5bc6b2927a5e223ee3cdc033860a2\n"
    },
    {
      "commit": "3b5259fcbe044397bd38cedea31ebd6ed2ba9e74",
      "tree": "c2d3ceeb4e7bca6d71a5b64027170a267720d848",
      "parents": [
        "35c492884cce2df5cf22d9aaca9a6df6a9ebec44",
        "1e8f7262febf77580e830374af2f5c5236081a0f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Oct 12 12:21:46 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 12 12:21:46 2012 -0700"
      },
      "message": "am 1e8f7262: am a00ffa53: am 1016b288: Merge \"Pm command to get maximum users.\" into jb-mr1-dev\n\n* commit \u00271e8f7262febf77580e830374af2f5c5236081a0f\u0027:\n  Pm command to get maximum users.\n"
    },
    {
      "commit": "1e8f7262febf77580e830374af2f5c5236081a0f",
      "tree": "70d6b5b5746d6525f2b60f7e861ad381f4a685c9",
      "parents": [
        "d828e328bc6cfbcd30679b95f615e217ab56983d",
        "a00ffa53fbe7ced0147451242232f47d117d5e2d"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Oct 12 12:19:34 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 12 12:19:34 2012 -0700"
      },
      "message": "am a00ffa53: am 1016b288: Merge \"Pm command to get maximum users.\" into jb-mr1-dev\n\n* commit \u0027a00ffa53fbe7ced0147451242232f47d117d5e2d\u0027:\n  Pm command to get maximum users.\n"
    },
    {
      "commit": "a00ffa53fbe7ced0147451242232f47d117d5e2d",
      "tree": "d3c5e8e513bc7169a2c0433da8c5dd6888e04490",
      "parents": [
        "a1d72e15f6fd5e6e330a70d550327ab8c8fcdbcf",
        "1016b2881d2b5f5d5e142afa287bd876b6360c2b"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Oct 12 12:17:17 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 12 12:17:17 2012 -0700"
      },
      "message": "am 1016b288: Merge \"Pm command to get maximum users.\" into jb-mr1-dev\n\n* commit \u00271016b2881d2b5f5d5e142afa287bd876b6360c2b\u0027:\n  Pm command to get maximum users.\n"
    },
    {
      "commit": "4c76ea6b88fad2b0147c050c02c6fd3d886d6743",
      "tree": "044338379cdef31e7c0316da597da35a81b258c0",
      "parents": [
        "e6d3ccc99270aaf62808adc7475a25d96664f0fb"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Oct 12 10:44:47 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Oct 12 10:46:01 2012 -0700"
      },
      "message": "Pm command to get maximum users.\n\nUsed to drive CTS tests.  Also print success message when removing\na user.\n\nBug: 7334718\nChange-Id: Ia3886ddf860cd000ce567b0fed2ef0a4e2a2295c\n"
    },
    {
      "commit": "d3ab7fc537fa742bbbdc33230b87d8544b09a3ea",
      "tree": "b94c2d2bfd3e7b775d53d0f21eeaffb9c668020d",
      "parents": [
        "102dc1cb21ddcde56c299437e8f14de0b629f7fd",
        "2425164835e9bbf4c501c69c078b2c1a48f3414e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Oct 11 17:55:15 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 11 17:55:15 2012 -0700"
      },
      "message": "am 24251648: am 9ad36ded: am 9dfca201: Merge \"Print newly generated userId.\" into jb-mr1-dev\n\n* commit \u00272425164835e9bbf4c501c69c078b2c1a48f3414e\u0027:\n  Print newly generated userId.\n"
    },
    {
      "commit": "2425164835e9bbf4c501c69c078b2c1a48f3414e",
      "tree": "31b4418ce080f24fcbe4396ccc38e30bd433ce5d",
      "parents": [
        "250a90cacf25fb277a5b778039965a330a0376d0",
        "9ad36dedd668c3bfa906397baa3d0aa76cfe1216"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Oct 11 17:29:02 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 11 17:29:02 2012 -0700"
      },
      "message": "am 9ad36ded: am 9dfca201: Merge \"Print newly generated userId.\" into jb-mr1-dev\n\n* commit \u00279ad36dedd668c3bfa906397baa3d0aa76cfe1216\u0027:\n  Print newly generated userId.\n"
    },
    {
      "commit": "9ad36dedd668c3bfa906397baa3d0aa76cfe1216",
      "tree": "00bd4503e505dbc28041d7a7a0e1a438ddb3495a",
      "parents": [
        "49db71e962b8ae17a3698534c800ea7511060dac",
        "9dfca20105aa998f5767b1b330bf9307ec479906"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Oct 11 17:25:53 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 11 17:25:53 2012 -0700"
      },
      "message": "am 9dfca201: Merge \"Print newly generated userId.\" into jb-mr1-dev\n\n* commit \u00279dfca20105aa998f5767b1b330bf9307ec479906\u0027:\n  Print newly generated userId.\n"
    },
    {
      "commit": "e6d3ccc99270aaf62808adc7475a25d96664f0fb",
      "tree": "4ee82dce7ec5418b95688b9a7d3fd474d92b3f55",
      "parents": [
        "38f8688baeb0f610a47c17bb7810349502d62ab6"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Oct 11 16:43:20 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Oct 11 16:44:18 2012 -0700"
      },
      "message": "Print newly generated userId.\n\nBug: 7334718\nChange-Id: Id4dc456b079bebbe9f2d7ea2a8343d2215f296dc\n"
    },
    {
      "commit": "3c30494d448c4af8c002450294090546b64bbc61",
      "tree": "97a5e02363a69b0d879606461518c7ae5abfbb55",
      "parents": [
        "c8c053897aa9809d3df3743aa0f62bb034bd02a1",
        "572286b4152245a73ac00ebc69b4bd8fc4bc586d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Oct 09 19:17:09 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 09 19:17:09 2012 -0700"
      },
      "message": "am 572286b4: am 31af905a: am 36db9d08: Merge \"Further work on issue #7307399: Framework needs a new pre-user-shutdown...\" into jb-mr1-dev\n\n* commit \u0027572286b4152245a73ac00ebc69b4bd8fc4bc586d\u0027:\n  Further work on issue #7307399: Framework needs a new pre-user-shutdown...\n"
    },
    {
      "commit": "572286b4152245a73ac00ebc69b4bd8fc4bc586d",
      "tree": "62ec9d6f0f2d9c62ffea03376c9a057c136aedb9",
      "parents": [
        "b096f6f5d0ed31bc0d510696d133fc8a3ee772b8",
        "31af905ac5388339fd0ffd87e6f25bd2a293dc0e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Oct 09 19:14:24 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 09 19:14:24 2012 -0700"
      },
      "message": "am 31af905a: am 36db9d08: Merge \"Further work on issue #7307399: Framework needs a new pre-user-shutdown...\" into jb-mr1-dev\n\n* commit \u002731af905ac5388339fd0ffd87e6f25bd2a293dc0e\u0027:\n  Further work on issue #7307399: Framework needs a new pre-user-shutdown...\n"
    },
    {
      "commit": "31af905ac5388339fd0ffd87e6f25bd2a293dc0e",
      "tree": "5df9383c80d52c8ae7bb5b04039b6fb67d7f93b0",
      "parents": [
        "24169a6beb6726d34c83521f8c0467b4dbafb0de",
        "36db9d0879640a1cb9a8723d6649068a1c4c08de"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Oct 09 19:13:13 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 09 19:13:13 2012 -0700"
      },
      "message": "am 36db9d08: Merge \"Further work on issue #7307399: Framework needs a new pre-user-shutdown...\" into jb-mr1-dev\n\n* commit \u002736db9d0879640a1cb9a8723d6649068a1c4c08de\u0027:\n  Further work on issue #7307399: Framework needs a new pre-user-shutdown...\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": "a7f45d31f6b9d00a000d2327e64fe918e984c9ed",
      "tree": "d4c674384db19d73ecc1084886b4f2a4d076aa3a",
      "parents": [
        "4cabdf20aafeb8ecb275207d70748eb09ca07db6",
        "6e41d59665261ff015d73ee5180fa85b009dd41e"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Oct 09 11:51:17 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 09 11:51:17 2012 -0700"
      },
      "message": "am 6e41d596: am b17fdf7b: am af3cd21b: Merge \"New command line tool: \"settings\"\" into jb-mr1-dev\n\n* commit \u00276e41d59665261ff015d73ee5180fa85b009dd41e\u0027:\n  New command line tool: \"settings\"\n"
    },
    {
      "commit": "6e41d59665261ff015d73ee5180fa85b009dd41e",
      "tree": "8afa220de1cd416e773de0e77b92b736c51d49b3",
      "parents": [
        "fb9d598d9e95a9d3e0be8e1dee81ebb0986aee8e",
        "b17fdf7b512530647037a7805c175c36db1549d8"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Oct 09 11:48:55 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 09 11:48:55 2012 -0700"
      },
      "message": "am b17fdf7b: am af3cd21b: Merge \"New command line tool: \"settings\"\" into jb-mr1-dev\n\n* commit \u0027b17fdf7b512530647037a7805c175c36db1549d8\u0027:\n  New command line tool: \"settings\"\n"
    },
    {
      "commit": "b17fdf7b512530647037a7805c175c36db1549d8",
      "tree": "6f39365d99652d743df43995626ff39053961bd8",
      "parents": [
        "261ba6207398e7c91ab669f45083499fdc3d6434",
        "af3cd21b08dd22d6ffd747c6314fd49fed3170a0"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Oct 09 11:46:28 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 09 11:46:28 2012 -0700"
      },
      "message": "am af3cd21b: Merge \"New command line tool: \"settings\"\" into jb-mr1-dev\n\n* commit \u0027af3cd21b08dd22d6ffd747c6314fd49fed3170a0\u0027:\n  New command line tool: \"settings\"\n"
    },
    {
      "commit": "af75948cddd40a0fde5af051b700306744eae64c",
      "tree": "947f62cf61241b528b0dfa2d7e7ac9dda00fd3f2",
      "parents": [
        "bd03f5abb7bbd5552d49dfec4e78f3d9454238af"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Oct 08 14:56:52 2012 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Oct 08 18:39:27 2012 -0700"
      },
      "message": "New command line tool: \"settings\"\n\nBecause the usual content provider interface doesn\u0027t allow specification of\nthe target user under which to perform settings reads/writes, this CL introduces\na new command line app specifically for that.\n\nUsage:\n\n   settings [--user num] get namespace key\n   settings [--user num] put namespace key value\n\nIf a --user argument is not given, the owner user is targetted.\n\nBug 7299066\n\nChange-Id: I73108bb76b04fad133cc4e0f218d64490de549f1\n"
    },
    {
      "commit": "4ec7ea72d2a9de6b79b11f7e0d12def5b58ef878",
      "tree": "c699d35f371e343be3471b1e3f8109dd7070856c",
      "parents": [
        "369a7f493e10af296138e50b922414afaa127313"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Oct 02 19:27:40 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Oct 02 19:30:03 2012 -0700"
      },
      "message": "Change adb-shell-input utility to use duration for swipe\n\nChange-Id: Id48fade60a07220c0672697f5771b75f984ee5bd\n"
    },
    {
      "commit": "4476018159d2c02a852ff248b8cb4950e2881da3",
      "tree": "91ff655f620a41f56ace33d1ace501735fe1d4df",
      "parents": [
        "27ce12231133be6c9bd627e8d618806236f2f076",
        "2293f9247b1b9329b58114bd67f3871e5387b91b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Oct 02 12:08:54 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 02 12:08:54 2012 -0700"
      },
      "message": "am 2293f924: am bad71217: am 77728b01: Merge \"Change installd tests to native test target\"\n\n* commit \u00272293f9247b1b9329b58114bd67f3871e5387b91b\u0027:\n  Change installd tests to native test target\n"
    },
    {
      "commit": "2293f9247b1b9329b58114bd67f3871e5387b91b",
      "tree": "dadfe51e15199b1cc3c368cec49964346a25c789",
      "parents": [
        "0114639dea6d0ca23fdbc8e90c52289c468de802",
        "bad71217b75df49245092bc0f32e4ddaeb2b3732"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Oct 02 12:06:05 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 02 12:06:05 2012 -0700"
      },
      "message": "am bad71217: am 77728b01: Merge \"Change installd tests to native test target\"\n\n* commit \u0027bad71217b75df49245092bc0f32e4ddaeb2b3732\u0027:\n  Change installd tests to native test target\n"
    },
    {
      "commit": "bad71217b75df49245092bc0f32e4ddaeb2b3732",
      "tree": "9c8ab92dce9d6aa9c1f8258f8fb00d5fc1e87869",
      "parents": [
        "253f76357dc9acdb329f321190eca4f0b049b4af",
        "77728b010e34069a904c9e8a40e03b8829cfb8ae"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Oct 02 12:03:34 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 02 12:03:34 2012 -0700"
      },
      "message": "am 77728b01: Merge \"Change installd tests to native test target\"\n\n* commit \u002777728b010e34069a904c9e8a40e03b8829cfb8ae\u0027:\n  Change installd tests to native test target\n"
    }
  ],
  "next": "fbc3044190192fa2aaaf9eddc48c44eed8f52613"
}
