)]}'
{
  "log": [
    {
      "commit": "a06de0f29b58df9246779cc4bfd8f06f7205ddb6",
      "tree": "c8ecd3323c1112dd46a9470600eab5df022ca85c",
      "parents": [
        "2e9f65f978397d112dbfb134d374588515bb644a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 11 16:34:47 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 09 12:47:47 2013 -0800"
      },
      "message": "New \"app ops\" service.\n\nInitial implementation, tracking use of the vibrator, GPS,\nand location reports.\n\nAlso includes an update to battery stats to also keep track of\nvibrator usage (since I had to be in the vibrator code anyway\nto instrument it).\n\nThe service itself is only half-done.  Currently no API to\nretrieve the data (which once there will allow us to show you\nwhich apps are currently causing the GPS to run and who has\nrecently accessed your location), it doesn\u0027t persist its data\nlike it should, and no way to tell it to reject app requests\nfor various operations.\n\nBut hey, it\u0027s a start!\n\nChange-Id: I05b8d76cc4a4f7f37bc758c1701f51f9e0550e15\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": "41e173d4cb19a0eca95fe0d79dd05f501333b786",
      "tree": "0d99b2134eeebd10569e59f78ff900cb277f8225",
      "parents": [
        "f2e005aa240ce888735af1988932004660cbee71"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@google.com",
        "time": "Wed Oct 24 14:34:07 2012 -0700"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@google.com",
        "time": "Wed Oct 24 14:51:21 2012 -0700"
      },
      "message": "Remove erroneous override of package-private method.\n\nChange-Id: I8d473c1eb32f2513d01b3f7f14f0001286a6a9ca\n"
    },
    {
      "commit": "98edc951712823dbf5db2b7e9c203a0e98fc616b",
      "tree": "4f0e85972328438729323ab5c032d4b36ff90904",
      "parents": [
        "b1c4ab5c2afea1f0797ee397df6512366128d980"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Sep 25 14:09:27 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Sep 25 15:45:27 2012 -0700"
      },
      "message": "Load resources for the correct user\n\nFor apps that are only installed on secondary users, the SystemUI is\nunable to see them by default. Added some methods to explicitly pass the\nuserId of the user the resources are requested for by the StatusBarIcon\n\nBug: 7214384\n\nAlso fix binding to remote views\n\nBug: 7192802\n\nChange-Id: I5d6c5f624aa37fb231f3467f9764c8d99077a91d\n"
    },
    {
      "commit": "11820f7386ce86fd89e9e6b49d9231dce6e1ed07",
      "tree": "9437ce9ba5b311f4b95c05121a9df6ec7f062379",
      "parents": [
        "b939e35274334d1f5e71a526efe8d235eb6d7387",
        "6d51571835737c7502a2e111ee9dc2527ebad984"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Sep 23 13:22:26 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Sep 23 13:22:27 2012 -0700"
      },
      "message": "Merge \"Allow acquiring ContentProviders across users.\" into jb-mr1-dev"
    },
    {
      "commit": "6d51571835737c7502a2e111ee9dc2527ebad984",
      "tree": "8298f3a36bdfbdb95a4fdd52681f82e7f396d31b",
      "parents": [
        "08681adda06f4699f85838861170fbb062c9fdfe"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 20 16:06:08 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Sep 21 19:49:43 2012 -0700"
      },
      "message": "Allow acquiring ContentProviders across users.\n\nOtherwise services like SystemUI will always open content://-style\nUris as USER_OWNER.  Surfaces through createPackageContextAsUser()\nwhich points all ContentResolver operations towards a given user.\n\nStart using in RemoteViews, so that Notifications correctly resolve\nimage Uris to the sending user.  Also add user support for \"content\"\nshell tool.\n\nBug: 7202982\nChange-Id: I8cb7fb8a812e825bb0b5833799dba87055ff8699\n"
    },
    {
      "commit": "58d37b55bd228032355360ea3303e46a804e0516",
      "tree": "7a931f0e6054ef5835f2935dd8d2faa52a93ff53",
      "parents": [
        "059aedf808c8b9b3da1457eef52f3d477878d50b"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Sep 18 12:04:19 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Sep 21 16:48:07 2012 -0700"
      },
      "message": "Multi-user support for the accessibility layer.\n\n1. This change converts the accessibility manager service to\n   maintain a state per user. When the user changes the services\n   for the user that is going away are disconnected, the local\n   accessibility managers in the processes for this user are\n   disabled, the state is swapped with the new user\u0027s one, and\n   the new user state is refreshed.\n\n   This change updates all calls into the system to use their\n   user specific versions when applicable. For example, regisetring\n   content observers, package monitors, calls into other system\n   services, etc.\n\n   There are some components that are shared across users such\n   as UI created by the system process and the SystemUI package.\n   Such components are managed as a global state shared across\n   all users and are updated accordingly on a user switch. Since\n   the SystemUI is running in a normal app process this change\n   adds hidden APIs on the local window manager to allow the\n   SystemUI to notify the accessibility layer that it will run\n   accross users.\n\n   Calls to AccessibiltyManager\u0027s isEnabled(), isTouchExplorationEnabled()\n   and sendAccessibilityEvent return false or a are a nop for a\n   background user sice he should not send accessibility events,\n   and should not perform touch exploration.\n\n   Update the internal accessibility tests due to changes in the\n   AccessibilityManager.\n\n   This change also fixes several issues that were encountered\n   such as calling out the accessibility manager service with a\n   lock held.\n\n   Removed some incorrect debugging code from the TouchExplorer\n   that was leading to a system crash.\n\nbug:6967373\n\nChange-Id: I2cf32ffdee1d827a8197ae4ce717dc0ff798b259\n"
    },
    {
      "commit": "151ec4c9f8ca34625733730a4551a23eb97cda23",
      "tree": "9a0ab8bed19904dce51ae3d23f5ff72c0581b7e2",
      "parents": [
        "4aacf93d40b4be82aa35bf164d6fd6536c8b2a50"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Sep 07 19:25:16 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sat Sep 08 19:14:00 2012 -0700"
      },
      "message": "More multi-user methods in PM\n\npm can list installed packages by user now.\n\nBug: 6926465\n\nChange-Id: I822311bfd6e7e2d6fb315fc484739fbf953c9bb6\n"
    },
    {
      "commit": "20e809870d8ac1e5b848f2daf51b2272ef89bdfc",
      "tree": "c863b6c684d1d3b21752880bc9f52bd749545d01",
      "parents": [
        "2701f325a6d4acd920637d2ff6fd6972a9cf836b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 31 19:00:44 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 04 10:39:21 2012 -0700"
      },
      "message": "Add registering for explicit users.\n\nNew API to register as an explicit user, which allows you to\nalso select ALL to see broadcasts for all users.\n\nNew BroadcastReceiver API to find out which user the broadcast\nwas sent to.\n\nUse this in app widget service to handle per-user package broadcasts\nand boot completed broadcasts correctly.\n\nChange-Id: Ibbe28993bd4aa93900c79e412026c27863019eb8\n"
    },
    {
      "commit": "a492c3a7b2c18426fd0cb4d017eacbc368195dc5",
      "tree": "67744a8d91519d997cb761a697600041d74165fa",
      "parents": [
        "00453e7a0182b50cf01e65c97650b526284fe084"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 23 19:48:44 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 31 15:42:45 2012 -0700"
      },
      "message": "Initial draft of high-level multi-display APIs.\n\nThis patch introduces the ability to create a Context that\nis bound to a Display.  The context gets its configuration and\nmetrics from that display and is able to provide a WindowManager\nthat is bound to the display.\n\nTo make it easier to use, we also add a new kind of Dialog\ncalled a Presentation.  Presentation takes care of setting\nup the context as needed and watches for significant changes\nin the display configuration.  If the display is removed,\nthen the presentation simply dismisses itself.\n\nChange-Id: Idc54b4ec84b1ff91505cfb78910cf8cd09696d7d\n"
    },
    {
      "commit": "f203aeef993b0f4ce65c9630d06bbd50a504e89f",
      "tree": "f1624ae664c7f882e9f320dadbab4eea52b6a4ad",
      "parents": [
        "b2dd4e87ae8ac6a0402b7a0ed37201f27bcb1b9c"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Aug 29 18:41:53 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Aug 30 16:08:23 2012 -0700"
      },
      "message": "Enforce permissions for calls with specified userId\n\nFix a couple of places where incorrect userIds were being passed in.\n\nChange-Id: I398c676e0488ff7e584be96e96c8b32652134238\n"
    },
    {
      "commit": "5ac72a29593ab9a20337a2225df52bdf4754be02",
      "tree": "dc5310e556b3662cb5f097b30e700a26d50a4db5",
      "parents": [
        "e217ee4d7a8223289a1af7363627c69956c46d41"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 29 18:32:08 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 30 14:33:22 2012 -0700"
      },
      "message": "Improve multi-user broadcasts.\n\nYou can now use ALL and CURRENT when sending broadcasts, to specify\nwhere the broadcast goes.\n\nSticky broadcasts are now correctly separated per user, and registered\nreceivers are filtered based on the requested target user.\n\nNew Context APIs for more kinds of sending broadcasts as users.\n\nUpdating a bunch of system code that sends broadcasts to explicitly\nspecify which user the broadcast goes to.\n\nMade a single version of the code for interpreting the requested\ntarget user ID that all entries to activity manager (start activity,\nsend broadcast, start service) use.\n\nChange-Id: Ie29f02dd5242ef8c8fa56c54593a315cd2574e1c\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": "d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0c",
      "tree": "9b78fc4eb2e237ee7ad49eb70cc558f871ff9a48",
      "parents": [
        "bb121d569cd6bc7bf4018ef12756247009988863"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Wed Aug 22 14:28:05 2012 -0700"
      },
      "committer": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Thu Aug 23 15:39:02 2012 -0700"
      },
      "message": "Allow verifiers to extend timeout\n\nCreate a new verifier API to extend the timeout for a giving package,\nincluding the resulting action (allow or deny) upon the timeout occuring.\n\nBug: 6901038\nChange-Id: I351f7944327f863aff1d7dd1227be74652fa1511\n"
    },
    {
      "commit": "0c3804950236fe170ebf6cc7a5f1e3e305b8f315",
      "tree": "832ea4ab2c17fe568df894aa3ed7438a01d97533",
      "parents": [
        "a5d5d608ccd885d8328879dde782a8cc93b7cf4f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 20 17:23:30 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 21 10:34:20 2012 -0700"
      },
      "message": "Improve multi-user app management.\n\nIntroduce API to get per-user storage information, keep track\nof services associated with users, and various small cleanup.\n\nChange-Id: I5d4e784e7ff3cccfed627d66a090d2f464202634\n"
    },
    {
      "commit": "706e8ba26bf0de19ad5f736516dae40c4c88c2d7",
      "tree": "2c45b61e1420f9a7442de8517b1eca6802d507c0",
      "parents": [
        "99de2459e200e0c86d55d5eee7ea000fd030990f"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Mon Aug 20 13:20:14 2012 -0700"
      },
      "committer": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Mon Aug 20 13:20:14 2012 -0700"
      },
      "message": "Pass URLs to package verifiers\n\nThis change passes the originating URL and accompanied referrer to\npackage verifiers, when available.\n\nBug: 6544677\nChange-Id: I9ebc71bc13f549bd88267e444816151a99bda000\n"
    },
    {
      "commit": "98365d7663cbd82979a5700faf0050220b01084d",
      "tree": "8a4ff3e0a8afd814ed29609b26aa1c6ade2367f6",
      "parents": [
        "848c2dc93b6795e171f3dd6f64ea0be65e2762ca"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 19 20:30:52 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 19 22:42:08 2012 -0700"
      },
      "message": "Refactor for multi-display support.\n\nSplit WindowManagerImpl into two parts, the WindowManager\ninterface implementation remains where it is but the global\ncommunications with the window manager are now handled by\nthe WindowManagerGlobal class.  This change greatly simplifies\nthe challenge of having separate WindowManager instances\nfor each Context.\n\nRemoved WindowManagerImpl.getDefault().  This represents the\nbulk of this change.  Most of the usages of this method were\neither to perform global functions (now handled by WindowManagerGlobal)\nor to obtain the default display (now handled by DisplayManager).\n\nExplicitly associate each new window with a display and make\nthe Display object available to the View hierarchy.\n\nAdd stubs for some new display manager API features.\n\nStart to split apart the concepts of display id and layer stack.\nsince they operate at different layers of abstraction.\nWhile it\u0027s true that each logical display uniquely corresponds to a\nsurface flinger layer stack, it is not necessarily the case that\nthey must use the same ids.  Added Display.getLayerStack()\nand started using it in places where it was relatively easy to do.\n\nChange-Id: I29ed909114dec86807c4d3a5059c3fa0358bea61\n"
    },
    {
      "commit": "79af1dd54c16cde063152922b42c96d72ae9eca8",
      "tree": "142abf0037d20841712e88d65febcbbd92dd5561",
      "parents": [
        "f1b995f9d049cb5c7225b3b17f09369237a83ca2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 16 16:42:52 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 17 10:36:08 2012 -0700"
      },
      "message": "Switch public APIs to use new UserHandle class for identifying users.\n\nGets rid of \"yet another integer\" confusion.\n\nChange-Id: Id07ea7307aea7c62f0087c6663a1f1c08e2e5dee\n"
    },
    {
      "commit": "756220bd1912535840388a6743830d2e59ad4964",
      "tree": "ee97c666d4bb1f015fd3e89463af09c712ce47e4",
      "parents": [
        "863b19bc8fcfa436011781b67a237fcce3cb703a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 14 16:45:30 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 14 16:51:38 2012 -0700"
      },
      "message": "Add API to create new contexts with custom configurations.\n\nThis allows you to, say, make a Context whose configuration\nis set to a different density than the actual density of the device.\n\nThe main API is Context.createConfigurationContext().  There is\nalso a new API on ContextThemeWrapper that allows you to apply\nan override context before its resources are retrieved, which\naddresses some feature requests from developers to be able to\ncustomize the context their app is running in.\n\nChange-Id: I88364986660088521e24b567e2fda22fb7042819\n"
    },
    {
      "commit": "258848d2ae04f447ff1c18023fa76b139fcc0862",
      "tree": "8736421f4007d81206d0f0ea8b32a2013508976a",
      "parents": [
        "75f0fac91bd7fa67fa76cfdd4e163b9f35be0432"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 10 17:06:33 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sat Aug 11 18:24:07 2012 -0700"
      },
      "message": "User Manager service to manage users and query user details\n\nMoved a bunch of methods from PackageManager to UserManager.\n\nFix launching of activities from recents to correct user.\n\nGuest creation APIs\n\nChange-Id: I0733405e6eb2829675665e225c759d6baa2b708f\n"
    },
    {
      "commit": "a56d9cecee8a34e0554770ac6253dd3a76b9199c",
      "tree": "3e617e7c34c9dafec25b373af7cd392154881b19",
      "parents": [
        "f007bd3cf8cacd75287781c1bb37fe4167c79cba",
        "e1d7c711df3e3a2d2f195457882aa4ddb5626167"
      ],
      "author": {
        "name": "Rich Cannings",
        "email": "richc@google.com",
        "time": "Wed Aug 08 13:50:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 13:50:56 2012 -0700"
      },
      "message": "Merge \"Revert \"Pass URLs to package verifiers\"\" into jb-mr1-dev"
    },
    {
      "commit": "e1d7c711df3e3a2d2f195457882aa4ddb5626167",
      "tree": "d27b6e508c1bdbd29028034471ee46acfe5d6cf8",
      "parents": [
        "24713907fe4632d263aea82f7a35c8fb08918a09"
      ],
      "author": {
        "name": "Rich Cannings",
        "email": "richc@google.com",
        "time": "Wed Aug 08 12:46:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 12:46:06 2012 -0700"
      },
      "message": "Revert \"Pass URLs to package verifiers\"\n\nThis reverts commit 24713907fe4632d263aea82f7a35c8fb08918a09\n\nChange-Id: Ie04ba73475b813635c4a74915c45e83250801b6b\n"
    },
    {
      "commit": "537915828b45693e846a126292e026c5b4f05152",
      "tree": "6c47dca99eda5792f1fc006e0f20088ad4048db1",
      "parents": [
        "ec0feefd4422db1151aee722732d8c9528f6dfa8",
        "7d19e0242faac8017033dabb872cdf1542fa184c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 08 10:22:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 10:22:49 2012 -0700"
      },
      "message": "Merge \"More mult-user API work.\" into jb-mr1-dev"
    },
    {
      "commit": "7d19e0242faac8017033dabb872cdf1542fa184c",
      "tree": "ab12d3c6597bc42bc7c0dca10ded546192c5c249",
      "parents": [
        "03ad783c5078c7bd487e47bb2a2af67dfbe89f1a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 07 19:12:33 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 07 19:19:22 2012 -0700"
      },
      "message": "More mult-user API work.\n\n- You can now use android:singleUser with receivers and providers.\n- New API to send ordered broadcasts as a user.\n- New Process.myUserHandle() API.\n\nFor now I am trying out \"user handle\" as the name for the numbers\nrepresenting users.\n\nChange-Id: I754c713ab172494bb4251bc7a37a17324a2e235e\n"
    },
    {
      "commit": "b53e9b42c302a5c5ccd837aece6bfffdf0cb5bf2",
      "tree": "78387317c5d39b36b1fabce81eacde277adcd109",
      "parents": [
        "4224790ffac80b7777ebeeed7474c3111a7add49",
        "a8583c2934836572632bb82d1fe7607392d4ca72"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Tue Aug 07 14:05:28 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 07 14:05:28 2012 -0700"
      },
      "message": "am a8583c29: am 40eee61e: docs: fix broken links and update sitemap text file\n\n* commit \u0027a8583c2934836572632bb82d1fe7607392d4ca72\u0027:\n  docs: fix broken links and update sitemap text file\n"
    },
    {
      "commit": "40eee61e25fb887f5267686f8a0a7c5bd9f95769",
      "tree": "8ba762d17f536f0914f9fe13311be8838ff44834",
      "parents": [
        "ea8375617e0d9099dc156a12989277d320eab1ca"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Mon Aug 06 17:48:37 2012 -0700"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Mon Aug 06 18:04:23 2012 -0700"
      },
      "message": "docs: fix broken links\nand update sitemap text file\n\nChange-Id: I6982c3f029c46135ae856b8484d906c2882bad3a\n"
    },
    {
      "commit": "329465c6b2407ee086a171cac1a3581f83dbb048",
      "tree": "0d69eee745692b133e3f2c955561c0e09807ffb5",
      "parents": [
        "478923885da8fac0c1e0a8b7d85b98d1988504bc",
        "b4163a6e12ee7100c758c6d3d062ade1f2843fce"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 02 19:14:39 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 02 19:14:39 2012 -0700"
      },
      "message": "Merge \"Add APIs for interacting across users.\" into jb-mr1-dev"
    },
    {
      "commit": "b4163a6e12ee7100c758c6d3d062ade1f2843fce",
      "tree": "2948e83dec184906f2c44ee332431f219b78359d",
      "parents": [
        "b1758cf8cd007bfffb3d8adceca25f3b0c82bd77"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 02 18:31:26 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 02 19:07:57 2012 -0700"
      },
      "message": "Add APIs for interacting across users.\n\n- Expose the existing Context.sendBroadcast() as\n  Context.sendBroadcastAsUser().\n- Add new android:singleUser attribute for services.\n- Add new INTERACT_ACROSS_USERS_FULL permission for full\n  system-level access to cross-user interface (allows\n  sendBroadcastAsUser() to send to any receiver).\n- Add new INTERACT_ACROSS_USERS_FULL permission for\n  more restricted cross-user interaction: this is required\n  for android:singleUser, and allows you to use\n  sendBroadcastAsUser() but only to send to your own\n  receivers.\n\nChange-Id: I0de88f6718e9505f4de72e3f45d29c0f503b76e9\n"
    },
    {
      "commit": "24713907fe4632d263aea82f7a35c8fb08918a09",
      "tree": "fbf80caed2388c579d64b20b86b9b9f2586b1640",
      "parents": [
        "26ea2e5df58edfd14717c86854f6bb99975b6a77"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Thu Jul 26 14:07:53 2012 -0700"
      },
      "committer": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Thu Aug 02 11:26:47 2012 -0700"
      },
      "message": "Pass URLs to package verifiers\n\nThis change passes the originating URL and accompanied referrer to\npackage verifiers, when available.\n\nBug: 6544677\nChange-Id: If9ff6663ad7f3426b7aea2aceb1413b689788138\n"
    },
    {
      "commit": "54da5b5d683e27924eb6573f544616bc217c6c37",
      "tree": "4119fcb5207d036ed1b5e19d7edc7cdf8e289781",
      "parents": [
        "08b7e78597b06b3801d909c9e9ca1538ed9fc355",
        "dd4448ef6807f096cdfdf632857baefd7cbc85ec"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Wed Jul 25 15:05:39 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 25 15:05:39 2012 -0700"
      },
      "message": "am dd4448ef: am 32189e26: Merge \"misc doc bug fixes\" into jb-dev\n\n* commit \u0027dd4448ef6807f096cdfdf632857baefd7cbc85ec\u0027:\n  misc doc bug fixes\n"
    },
    {
      "commit": "ddd88726a247e4100cb62b3dc9d0887ca2ae2ec4",
      "tree": "30361d5e73963eaea11100a01fbc7f6e69daae90",
      "parents": [
        "75bea2e8d35044233ba892bedf102ed08406d653",
        "71930dd77e4dc6f6be5c648019d2ab0da5f0584c"
      ],
      "author": {
        "name": "Jeff Smith",
        "email": "whydoubt@yahoo.com",
        "time": "Wed Jul 25 15:05:23 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 25 15:05:23 2012 -0700"
      },
      "message": "am 71930dd7: am a45746ef: Fix several cases of broken droiddoc syntax external issue 35214\n\n* commit \u002771930dd77e4dc6f6be5c648019d2ab0da5f0584c\u0027:\n  Fix several cases of broken droiddoc syntax external issue 35214\n"
    },
    {
      "commit": "32189e260c8dee27d561bf67c0333c9b9927636b",
      "tree": "74a4554bc31dd755c575aef22bf3328c58f724b7",
      "parents": [
        "c524ca275add1c84ef4e1e5c105058f44cac5efb",
        "fe3b1cb27dd7ded1358bf3c4cc047de97158ed1e"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Wed Jul 25 11:52:51 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 25 11:52:51 2012 -0700"
      },
      "message": "Merge \"misc doc bug fixes\" into jb-dev"
    },
    {
      "commit": "a45746efadd11bb7dfab026fb3c81a25fae74ca4",
      "tree": "9875e997b80cf5a43b7e6ba8bb3615a17bda6c8f",
      "parents": [
        "2f5b61a750e36169e37788a645f422cc8a8f7091"
      ],
      "author": {
        "name": "Jeff Smith",
        "email": "whydoubt@yahoo.com",
        "time": "Thu Jul 19 14:19:24 2012 -0500"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Wed Jul 25 10:49:25 2012 -0700"
      },
      "message": "Fix several cases of broken droiddoc syntax\nexternal issue 35214\n\npatch contributed by Jeff Smith \u003cwhydoubt@yahoo.com\u003e\n\nChange-Id: I70dcee88a140699bf3e1ab369bed6dcd2fdd3d83\n"
    },
    {
      "commit": "fe3b1cb27dd7ded1358bf3c4cc047de97158ed1e",
      "tree": "d9c73abd71705a5b2f57e47593ce1e18b7109164",
      "parents": [
        "4eb6973bc1f8cd51a2466708b227fb51314ad0c1"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Tue Jul 24 18:13:11 2012 -0700"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Tue Jul 24 18:13:11 2012 -0700"
      },
      "message": "misc doc bug fixes\n\nChange-Id: I68963d79422e5cedb1726e91e9639860b13a2471\n"
    },
    {
      "commit": "adba6ffbb949e3644f0effdaffee349b0b49688a",
      "tree": "ee6332da1ea3b485161d1572fce290476bfd0976",
      "parents": [
        "a72d0dd4446c14ea7803244f99454cad841084ba",
        "101a120c27f68fb7d44e6221244cb9441dfc4285"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Jun 22 13:35:52 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 22 13:35:52 2012 -0700"
      },
      "message": "am 101a120c: am 9be0105f: docs: fix several links\n\n* commit \u0027101a120c27f68fb7d44e6221244cb9441dfc4285\u0027:\n  docs: fix several links\n"
    },
    {
      "commit": "9be0105fbc56eb1b1813bb7c5fe258a144867a43",
      "tree": "964727f4694bb224eacdaaa68320292aab85ffd3",
      "parents": [
        "3cd4624448dcaddecc75461ef645da72e7e5c098"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Jun 22 12:35:08 2012 -0700"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Jun 22 12:35:08 2012 -0700"
      },
      "message": "docs: fix several links\n\nChange-Id: I89d9fd64dc22c90680bb05415cc966c255165af9\n"
    },
    {
      "commit": "b8151ecd6ef4faa5c16d0a4c3abb45ec84d1f97a",
      "tree": "18d849f66b9abbe1519eeb2f4901ada5c5a80cbc",
      "parents": [
        "1c1ca050e19b98c21d5b964930c4fc6f0d9ae567"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Apr 18 18:02:48 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Jun 12 18:18:29 2012 -0700"
      },
      "message": "Add an icon to the user information.\n\nStore the icon in the user folder under /data/system,\nsimilar to how the wallpaper is stored.\n\nChange-Id: Id8ccb55b9e2ba7b4c557505a7f69f04eca1518cf\n"
    },
    {
      "commit": "ce783749b191a58e4fed9a397066376915c1db65",
      "tree": "fe7bbae9d9db880b5e69d82d96cdffa5d4040ed9",
      "parents": [
        "b042f2d9908e20852e4077878e50a0c07b8eee79",
        "f3b4c93e0da9af2db9e16864faa734cf70fecfe3"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 29 15:57:52 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 29 15:57:52 2012 -0700"
      },
      "message": "am f3b4c93e: am ae5811c7: Merge \"Fix (mostly) issue #5109947: Race condition between retrieving a...\" into jb-dev\n\n* commit \u0027f3b4c93e0da9af2db9e16864faa734cf70fecfe3\u0027:\n  Fix (mostly) issue #5109947: Race condition between retrieving a...\n"
    },
    {
      "commit": "6ae8d1821822296df0606c9cd1c46708cc21cb58",
      "tree": "eb4b17b255b1f0e78078923474afcaad67755f12",
      "parents": [
        "3dac02265e42bf176e26b83da430ce15d6fd06df"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 23 13:12:42 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 29 13:33:09 2012 -0700"
      },
      "message": "Fix (mostly) issue #5109947: Race condition between retrieving a...\n\n...content provider and updating its oom adj\n\nThis introduces the concept of an \"unstable\" reference on a content\nprovider.  When holding such a reference (and no normal stable ref),\nthe content provider dying will not cause the client process to be\nkilled.\n\nThis is used in ContentResolver.query(), .openAssetFileDescriptor(),\nand .openTypedAssetFileDescriptor() to first access the provider\nwith an unstable reference, and if at the point of calling into the\nprovider we find it is dead then acquiring a new stable reference\nand doing the operation again.  Thus if the provider process dies\nat any point until we get the result back, our own process will not\nbe killed and we can safely retry the operation.\n\nArguably there is still the potential for a race -- if somehow the\nprovider is killed way late by the OOM killer after the query or\nopen has returned -- but this should now be *extremely* unlikely.\nWe also continue to have the issue with the other calls, but these\nare much less critical, and the same model can\u0027t be used there (we\nwouldn\u0027t want to execute two insert operations for example).\n\nThe implementation of this required some significant changes to the\nunderlying plumbing of content providers, now keeping track of the\ntwo different reference counts, and managing them appropriately.  To\nfacilitate this, the activity manager now has a formal connection\nobject for a client reference on a content provider, which hands to\nthe application when opening the provider.\n\nThese changes have allowed a lot of the code to be cleaned up and\nsubtle issues closed.  For example, when a process is crashing, we\nnow have a much better idea of the state of content provider clients\n(olding a stable ref, unstable ref, or waiting for it to launch), so\nthat we can correctly handle each of these.\n\nThe client side code is also a fair amount cleaner, though in the\nfuture there is more than should be done.  In particular, the two\nProviderClientRecord and ProviderRefCount classes should be combined\ninto one, part of which is exposed to the ContentResolver internal\nAPI as a reference on a content provider with methods for updating\nreference counts and such.  Some day we\u0027ll do that.\n\nChange-Id: I87b10d1b67573ab899e09ca428f1b556fd669c8c\n"
    },
    {
      "commit": "1b953b8fbfb510a968259ad78d86399bde8bc292",
      "tree": "f933e98e804af3f72bf6525e9029512555271e32",
      "parents": [
        "be2dca02c4bcb4a86df8ab279724e63213b4e034",
        "a0b2786304a83f6083423b1996f675dc08e48a56"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Fri May 11 11:14:42 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 11 11:14:42 2012 -0700"
      },
      "message": "Merge \"Delete duplicate copies of junit source.\""
    },
    {
      "commit": "652b6d1e591f6684cda4b93d4712920f287991b4",
      "tree": "5ffe183aa2cbe66c8b8b89e8f3a809e4e7f4c603",
      "parents": [
        "a53de0629f3b94472c0f160f5bbe1090b020feab"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 09 18:18:40 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 09 18:18:40 2012 -0700"
      },
      "message": "Add infrastructure for accessing \"unstable\" content providers.\n\nWe have an API and some stuff that purports to this, but no real\nimplementation yet.\n\nChange-Id: I93555440014a50fdf79fa3f65318d90fb82265b4\n"
    },
    {
      "commit": "a0b2786304a83f6083423b1996f675dc08e48a56",
      "tree": "83bf908483a73dfe174c4ecafb1e4f4060607afb",
      "parents": [
        "aaee2e77256882874806d4d1cd46b0a649e7c40f"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Wed May 09 18:08:31 2012 -0700"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Wed May 09 18:08:31 2012 -0700"
      },
      "message": "Delete duplicate copies of junit source.\n\nBug 5826326\n\nChange-Id: Ie361b3778076686c5a59d8392aadb8c86a9ae981\n"
    },
    {
      "commit": "947f1c8db00bd3805838ff49a5f4d220df507b47",
      "tree": "706e6101ae3e5bfb31b505d11e429256e33580cd",
      "parents": [
        "6d6d186cd1a5df5fff73c8a731a81a9da3fea13b",
        "a7771df3696954f0e279407e8894a916a7cb26cc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 08 10:51:12 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 08 10:51:12 2012 -0700"
      },
      "message": "Merge \"Move CancellationSignal to android.os package.\" into jb-dev"
    },
    {
      "commit": "a7771df3696954f0e279407e8894a916a7cb26cc",
      "tree": "3615be79c515fad41808d2b84ac0221ba5a7e299",
      "parents": [
        "507f5586fb48f59f7b4f2fa0ca5387e4d4f2bd8d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 07 20:06:46 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 07 20:06:46 2012 -0700"
      },
      "message": "Move CancellationSignal to android.os package.\n\nBug: 6427830\nChange-Id: I39451bb1e1d4a8d976ed1c671234f0c8c61658dd\n"
    },
    {
      "commit": "ceb1b0bfaea56251796b08c07b963de7403d84eb",
      "tree": "fea73b05f6b4d47da174eca362693958cf5d785a",
      "parents": [
        "476b03b0c0d5cae4d1b114c6f80858d59ba36cad"
      ],
      "author": {
        "name": "Anonymous Coward",
        "email": "nobody@android.com",
        "time": "Tue Apr 24 10:35:16 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon May 07 16:34:49 2012 -0700"
      },
      "message": "Add encryption parameters to package installation\n\nChange-Id: Ic9f8ab9f8110f08bb3c00725cfce5b8ee7b766f3\n"
    },
    {
      "commit": "f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03f",
      "tree": "5a3201faabf8ba048dcf5fb371900c15b4077f22",
      "parents": [
        "9766937ba57ca80977a68c681fdd4e46b6e1fd81"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Mon Jan 30 11:29:54 2012 -0800"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Wed Apr 11 19:01:30 2012 -0700"
      },
      "message": "Upgrade junit.runner classes to their JUnit4.10 implementation.\n\nBug 5826326\n\nChange-Id: If7e4c48a4369c1056dee5a2049c891bb6ab7d8d0\n"
    },
    {
      "commit": "87571b75e6560d33b8de7ca04801612a20a04d98",
      "tree": "34168684a354f369557dc324f440269aa220f1b9",
      "parents": [
        "5eeee5e0bbf5aba0097a510b3e9dbb286b2b30cd"
      ],
      "author": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Tue Apr 03 11:46:56 2012 -0700"
      },
      "committer": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Tue Apr 03 11:46:56 2012 -0700"
      },
      "message": "Try Alternate Constructor for Single Method Tests\n\nSome tests do not have a no argument constructor. If they don\u0027t\nhave one, then try a constructor with a String argument. A lot\nof CTS tests from open source projects have different practices\nand may not have a no arg constructor.\n\nChange-Id: I87c490c22347a2f4b03c3125308be0d2259f9208\n"
    },
    {
      "commit": "135936072b24b090fb63940aea41b408d855a4f3",
      "tree": "c10e6a7642df4246937bb6fbd7277b642daf3eee",
      "parents": [
        "0c44525a4888de321c9497204d59c8515f828499"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Mar 22 16:16:17 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Mar 27 11:23:01 2012 -0700"
      },
      "message": "User management and switching\n\nBroadcast intents that get sent out when users are added/removed/switched.\n\nMore work on generating user-specific information in package manager queries.\nAPIs to update user name and query a user by id.\nRemoved Package.mSetStopped and mSetEnabled, since they\u0027re not user specific.\n\nUser removal:\n- Cleanup ActivityManager, PackageManager, WallpaperManager, AppWidgetService\n  and AccountManager.\n- Shutdown processes belonging to the user.\n\nDon\u0027t show vibrate option in long-press power if there\u0027s no vibrator.\n\nLock the screen when switching users, to force unlocking.\n\nChange-Id: Ib23a721cb75285eef5fd6ba8c7272462764038fa\n"
    },
    {
      "commit": "b2e822fc2ac87703ac12d062add62408574cbf7c",
      "tree": "97331fe0183386e7081355a5879c44ed5697d025",
      "parents": [
        "60c116e2a6dcc4cbdf5f5f168c57e2dea0839779"
      ],
      "author": {
        "name": "David Hu",
        "email": "hud@google.com",
        "time": "Mon Mar 19 21:03:35 2012 -0700"
      },
      "committer": {
        "name": "David Hu",
        "email": "hud@google.com",
        "time": "Mon Mar 19 21:03:35 2012 -0700"
      },
      "message": "Remove unused BandwidthTestRunner\n\nChange-Id: I5d77682cf662cc88e3d182501c78bb77805e74d1\n"
    },
    {
      "commit": "ca4aab9cd724708af30abb4bfcb2f9b45087f449",
      "tree": "b39154026ba138251e979556f83810965e0f17c9",
      "parents": [
        "bf02b984738f6be5cc2e2d66b12aff7af99eb79e"
      ],
      "author": {
        "name": "David Hu",
        "email": "hud@google.com",
        "time": "Wed Mar 14 15:43:46 2012 -0700"
      },
      "committer": {
        "name": "David Hu",
        "email": "hud@google.com",
        "time": "Mon Mar 19 18:33:58 2012 -0700"
      },
      "message": "BandwidthTestCase\n\nA test case that measures bandwidth metrics when annotated with\nandroid.test.BandwidthTest and adds the metrics to the status bundle\n\nChange-Id: I085110c66c7fcf651aefeeac3d4cdf5bd438ff67\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": "e639da7baa23121e35aa06d6e182558e0e755696",
      "tree": "7d956fc301eb1988a8646ff3a62786639a843da0",
      "parents": [
        "b8678d76c3e09d0d65255f3971b6112a48e19099"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 21 15:11:13 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 23 16:39:15 2012 -0800"
      },
      "message": "New development permissions.\n\nThese are permissions that an application can request, but won\u0027t\nnormally be granted.  To have the permission granted, the user\nmust explicitly do so through a new \"adb shell pm grant\" command.\n\nI put these permissions in the \"development tools\" permission\ngroup.  Looking at the stuff there, I think all of the permissions\nwe already had in that group should be turned to development\npermissions; I don\u0027t think any of them are protecting public APIs,\nand they are really not things normal applications should use.\n\nThe support this, the protectionLevel of a permission has been\nmodified to consist of a base protection type with additional\nflags.  The signatureOrSystem permission has thus been converted\nto a signature base type with a new \"system\" flag; you can use\n\"system\" and/or \"dangerous\" flags with signature permissions as\ndesired.\n\nThe permissions UI has been updated to understand these new types\nof permissions and know when to display them.  Along with doing\nthat, it also now shows you which permissions are new when updating\nan existing application.\n\nThis also starts laying the ground-work for \"optional\" permissions\n(which development permissions are a certain specialized form of).\nCompleting that work requires some more features in the package\nmanager to understand generic optional permissions (having a\nfacility to not apply them when installing), along with the\nappropriate UI for the app and user to manage those permissions.\n\nChange-Id: I6571785c6bb5f6b291862b7a9be584885f88f3a5\n"
    },
    {
      "commit": "67cf7d314b5b94db1a9f1c57140b6615b0ea8291",
      "tree": "2de67be8b686a2909a93f2aca89ec7e2328597bc",
      "parents": [
        "8181201c6e55765fd58d2ff07921a143b879edd9"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Feb 16 14:31:23 2012 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Feb 16 15:03:42 2012 -0800"
      },
      "message": "Fix Power Control widget\n\nSome changes in AppWidgetService were interfering with widget permissions.\n\nAdded some hidden methods in Context to communicate the requesting user\ninformation instead of using the calling uid.\n\nBug: 6019296\nChange-Id: I5e519fd3fbbfa5b3fcc5c297b729c671dac8e7c7\n"
    },
    {
      "commit": "37ce3a8af6faab675319d0803b288ab1dddc76be",
      "tree": "4619ebc854dc7c5ebe641bc915599ab6715deed9",
      "parents": [
        "11ca31729c05a5c82aa298fb52ddebbe08a26627"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Feb 06 12:04:42 2012 -0800"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Feb 10 14:34:07 2012 -0800"
      },
      "message": "Multi-user - wallpaper service\n\n- Allow each user to have their own wallpaper (live or static).\n- Migrate old wallpaper on upgrade.\n- Update SystemBackupAgent to backup/restore from primary user\u0027s\n  new wallpaper directory.\n\nReduce dependency on Binder.getOrigCallingUser() by passing the\nuserId for bindService.\n\nChange-Id: I19c8c3296d3d2efa7f28f951d4b84407489e2166\n"
    },
    {
      "commit": "4c1241df8f8b7fd5ec3dff6c7e0f66271248e76e",
      "tree": "36df1bce8fe7295d0ab778ca519232a291a3294f",
      "parents": [
        "8ca8a69d5801ad4b809e7b9dbf53bd728820924b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 02 17:05:00 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 02 18:02:16 2012 -0800"
      },
      "message": "Rename CancellationSignal using preferred spelling.\n\nBug: 5943637\nChange-Id: I12a339f285f4db58e79acb5fd8ec2fc1acda5265\n"
    },
    {
      "commit": "75ea64fc54f328d37b115cfb1ded1e45c30380ed",
      "tree": "4254a5d2d0662de8b606b38fea6987da17c130e3",
      "parents": [
        "ebc016c01ea9d5707287cfc19ccc59b21a486c00"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 25 19:37:13 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 27 17:33:21 2012 -0800"
      },
      "message": "Implement a cancelation mechanism for queries.\n\nAdded new API to enable cancelation of SQLite and content provider\nqueries by means of a CancelationSignal object.  The application\ncreates a CancelationSignal object and passes it as an argument\nto the query.  The cancelation signal can then be used to cancel\nthe query while it is executing.\n\nIf the cancelation signal is raised before the query is executed,\nthen it is immediately terminated.\n\nChange-Id: If2c76e9a7e56ea5e98768b6d4f225f0a1ca61c61\n"
    },
    {
      "commit": "0df0ed5814a83c4cf0dd3d6d6e177f5ed9003863",
      "tree": "6bae98f9f7102bfa2866db8a10f0c28e826a5db9",
      "parents": [
        "4b4d00e7149f11c84614d8cc98ae7bff21dbd960",
        "8cc9a8e132ebbf852e055ed17ab91f35b02fd974"
      ],
      "author": {
        "name": "David Hu",
        "email": "hud@google.com",
        "time": "Thu Jan 05 14:39:45 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 05 14:39:45 2012 -0800"
      },
      "message": "Merge \"BandwidthTestRunner\""
    },
    {
      "commit": "3aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45",
      "tree": "7600f58de48f6764d476cc9d6a92ed0a5dddf278",
      "parents": [
        "8f04ae361cd34fdaea41fbedefb85cff2c684e36"
      ],
      "author": {
        "name": "Joe Fernandez",
        "email": "joefernandez@google.com",
        "time": "Tue Dec 20 10:38:34 2011 -0800"
      },
      "committer": {
        "name": "Joe Fernandez",
        "email": "joefernandez@google.com",
        "time": "Thu Dec 22 15:08:23 2011 -0800"
      },
      "message": "docs: Add developer guide cross-references, Project ACRE, round 4\n\nChange-Id: I1b43414aaec8ea217b39a0d780c80a25409d0991\n"
    },
    {
      "commit": "8cc9a8e132ebbf852e055ed17ab91f35b02fd974",
      "tree": "2f696bc3ca9dd9bd7b2e1317306ed57aa6bba0ee",
      "parents": [
        "b2bf2471b1f0b4a76660e63f91a8de84cc643da8"
      ],
      "author": {
        "name": "David Hu",
        "email": "hud@google.com",
        "time": "Tue Dec 13 15:57:42 2011 -0800"
      },
      "committer": {
        "name": "David Hu",
        "email": "hud@google.com",
        "time": "Wed Dec 14 22:43:58 2011 -0800"
      },
      "message": "BandwidthTestRunner\n\nAdded BandwidthTest annotation and BandwidthTestRunner to start\nand stop the network traffic profiler\n\nChange-Id: Id29ac21ab99ff36bd864121276db59b61eb6e154\n"
    },
    {
      "commit": "d2183654e03d589b120467f4e98da1b178ceeadb",
      "tree": "c52368d929521fd0d7182dc3cf53f8e4b37ed25f",
      "parents": [
        "1d8e7d640ad5ed6fe82bca017293dd89169f1c2e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Oct 09 12:39:53 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Oct 09 22:10:36 2011 -0700"
      },
      "message": "Fix ownership of CursorWindows across processes.\nBug: 5332296\n\nEnsure that there is always an owner for each CursorWindow\nand that references to each window are acquired/released\nappropriately at all times.\n\nAdded synchronization to CursorToBulkCursorAdaptor to\nprevent the underlying Cursor and CursorWindow from being\nremotely accessed in ways that might violate invariants,\nresulting in leaks or other problems.\n\nEnsured that CursorToBulkCursorAdaptor promptly releases\nits references to the Cursor and CursorWindow when closed\nso they don\u0027t stick around longer than they should, even\nif the remote end hangs onto the IBulkCursor for some reason.\n\nCursorWindow respects Parcelable.FLAG_WRITE_RETURN_VALUE\nas an indication that one reference to the CursorWindow is\nbeing released.  Correspondingly, CursorToBulkCursorAdaptor\nacquires a reference to the CursorWindow before returning\nit to the caller.  This change also prevents races from\nresulting in the transfer of an invalid CursorWindow over\nthe wire.\n\nEnsured that BulkCursorToCursorAdaptor promptly releases\nits reference to the IBulkCursor when closed and throws\non attempts to access the cursor while closed.\n\nModified ContentProviderNative to handle both parts of\nthe wrapping and unwrapping of Cursors into IBulkCursors.\nThis makes it a lot easier to ensure that the right\nthings happen on both ends.  Also, it turns out that\nthe only caller of IContentProvider.bulkQuery was\nContentProviderNative itself so there was no need\nto support bulkQuery on ContentProviderProxy and it was\njust getting in the way.\n\nImplement CloseGuard on CursorWindow.\n\nChange-Id: Ib3c8305d3cc62322f38a06698d404a2989bb6ef9\n"
    },
    {
      "commit": "05ca4c90644921df9193d92b2abdc81ef77e4a62",
      "tree": "94c9e61b0c3d364f68a194c0a65199451410fc35",
      "parents": [
        "15bbaeb0753f5336a5e8ee07e6f796657ecefb73"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Sep 15 10:36:25 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Sep 23 16:03:03 2011 -0700"
      },
      "message": "Allow non-required package verifiers\n\n* Verifiers can be specified in the AndroidManifest.xml\n\n* Those verifiers can respond to the new Intent action\n\n* PackageManager API for those verifiers: verifyPendingInstall\n\nChange-Id: I4892bce2e6984871e6e93c60a1ca0dae145f5df5\n"
    },
    {
      "commit": "0d3647dc00849872ec5e18cce8ffe0e6ae02dd47",
      "tree": "96f042c5efd1667b326065c0b348215ca43e633f",
      "parents": [
        "67ceaf3e83d29ca69708a3ae94f5e7797bef4ca6",
        "9c711282ad234e104c34eb4408d85fc1bb149ded"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 21 18:56:52 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 21 18:56:52 2011 -0700"
      },
      "message": "am 9c711282: Merge \"Unhide new PackageManager APIs for API 14\" into ics-factoryrom\n\n* commit \u00279c711282ad234e104c34eb4408d85fc1bb149ded\u0027:\n  Unhide new PackageManager APIs for API 14\n"
    },
    {
      "commit": "3a9b5fbb97e65019abec97f172b4cbf2100d1225",
      "tree": "7cc787f92fc2071fd8e1050df13c351c616757be",
      "parents": [
        "ee0835b95de225fdc34d45b777b4595d01727a40"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 20 14:15:38 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 20 14:35:10 2011 -0700"
      },
      "message": "Unhide new PackageManager APIs for API 14\n\nChange-Id: I83110285ccee39a4cd872a1c2af8357f541833d4\n"
    },
    {
      "commit": "97567340a4194070ffefe6249e3ae5ba4e458e70",
      "tree": "49cf3cce462fbb5be25ba124cee15ac79b0341b7",
      "parents": [
        "e0d558ac92cd9e550b3d08bf09d9bb12c2a506c6",
        "cbc584d7ebe332f78bf8012d21265ccb482c7cfc"
      ],
      "author": {
        "name": "David Hu",
        "email": "hud@google.com",
        "time": "Mon Sep 19 12:11:11 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 19 12:11:11 2011 -0700"
      },
      "message": "Merge \"Return the bundle object\""
    },
    {
      "commit": "cbc584d7ebe332f78bf8012d21265ccb482c7cfc",
      "tree": "532d575f3d2347e087fce4d7b0ce5cf6679374bd",
      "parents": [
        "2f2eea704ef82878c7aa909a1f7dbdf19851b0fb"
      ],
      "author": {
        "name": "David Hu",
        "email": "hud@google.com",
        "time": "Fri Sep 16 18:08:35 2011 -0700"
      },
      "committer": {
        "name": "David Hu",
        "email": "hud@google.com",
        "time": "Mon Sep 19 11:33:45 2011 -0700"
      },
      "message": "Return the bundle object\n\nAdded the ability for the test runner to return the bundle object\nso the tests can get access to input arguments\n\nChange-Id: I73a704bb2279238bd91a376aacecbe5f607af649\n"
    },
    {
      "commit": "0aaa0d931716e9f57a1d84d795fab2df75092756",
      "tree": "0ada5a585584199d757e73e891ef77960d3a5280",
      "parents": [
        "2f2eea704ef82878c7aa909a1f7dbdf19851b0fb"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Sep 12 16:42:55 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 13 16:02:43 2011 -0700"
      },
      "message": "Add verifier device identity\n\nThis adds a special device identifier that is usable only for device\nvalidation. The user will be presented with this number encoded in\neasily-transcribable Base32 in the Developer options of Settings.\n\nChange-Id: I4843f55ee90d689a51d0269b22454ca04c1be7ec\n"
    },
    {
      "commit": "c69efa5efce6d9a820f8902ca62305cddea163e6",
      "tree": "bc78a9cc5fb6fa960145892e8b92bc52300126bd",
      "parents": [
        "ccccb505abb1fb16d349e80d03edfde3c6775202"
      ],
      "author": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Wed Sep 07 14:51:40 2011 -0400"
      },
      "committer": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Wed Sep 07 14:52:12 2011 -0400"
      },
      "message": "Remove frameworks\u0027 reference to an obsolete Bouncycastle keystore file.\n\nWithout this, some SSL code fails with an exception:\njava.io.FileNotFoundException: /system/etc/security/cacerts.bks: open failed: ENOENT (No such file or directory)\nat libcore.io.IoBridge.open(IoBridge.java:410)\nat java.io.FileInputStream.\u003cinit\u003e(FileInputStream.java:78)\nat java.io.FileInputStream.\u003cinit\u003e(FileInputStream.java:105)\nat org.apache.harmony.xnet.provider.jsse.DefaultSSLContextImpl.getTrustManagers(DefaultSSLContextImpl.java:115)\nat org.apache.harmony.xnet.provider.jsse.SSLContextImpl.\u003cinit\u003e(SSLContextImpl.java:71)\nat org.apache.harmony.xnet.provider.jsse.OpenSSLContextImpl.\u003cinit\u003e(OpenSSLContextImpl.java:34)\nat org.apache.harmony.xnet.provider.jsse.DefaultSSLContextImpl.\u003cinit\u003e(DefaultSSLContextImpl.java:59)\nat java.lang.Class.newInstanceImpl(Native Method)\nat java.lang.Class.newInstance(Class.java:1319)\nat java.security.Provider.newInstance(Provider.java:989)\n... 15 more\nCaused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)\nat libcore.io.Posix.open(Native Method)\nat libcore.io.BlockGuardOs.open(BlockGuardOs.java:98)\nat libcore.io.IoBridge.open(IoBridge.java:393)\n... 24 more\n\nChange-Id: I91de30746c1355ff9e0c2a9479392a50fe45aa23\n"
    },
    {
      "commit": "5ab2157bf1f105b02d3e2913cd3a33f9765b74ca",
      "tree": "5c2241ddca3526545b73472ed0006eaba0439da1",
      "parents": [
        "dd7bc9f457204e60feeea53b0b12ba706d6964df"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 27 11:11:19 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Aug 15 17:26:31 2011 -0700"
      },
      "message": "Infrastructure to support package verifier\n\nAllow a package verifier to approve or disapprove of a package being\ninstalled.\n\nChange-Id: Ibfea0f2b1aaa4ab1589a4e59f96144702b9bf94b\n"
    },
    {
      "commit": "3fe3f7328fb4a6f5e067eedc76086dd7b44ffc25",
      "tree": "789a9f5a6ef0aff93a9477dcaf09732c39af62c2",
      "parents": [
        "f382dc2d97e22f6bcce7aa8250d797edc616719e"
      ],
      "author": {
        "name": "Rodrigo Damazio Bovendorp",
        "email": "rdamazio@google.com",
        "time": "Mon Aug 01 17:10:58 2011 -0300"
      },
      "committer": {
        "name": "Rodrigo Damazio Bovendorp",
        "email": "rdamazio@google.com",
        "time": "Mon Aug 01 17:10:58 2011 -0300"
      },
      "message": "Fixing initialization cleanup in activity instrumentation test case\n\nChange-Id: I798fed657ccdc27430edc07d1e911b34c45426b5\n"
    },
    {
      "commit": "877d428e39200fc5f289bfc88d67069cf7b9662a",
      "tree": "222cfa3b427254bf8cd0159c0669fb85a89b8afe",
      "parents": [
        "287bd83f9ea257594e0d483d3851236139e5744e"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Wed Jun 01 18:38:44 2011 -0700"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Wed Jun 01 20:03:39 2011 -0700"
      },
      "message": "Test runner cleanup: delete unused old classes.\n\nChange-Id: Iaaabd47d4074f936a811fc1b6575088d70842564\n"
    },
    {
      "commit": "44bc17c6b517aef35a390c81b5aa79c4f284f744",
      "tree": "b4dabc94a8974f81cf7ea855a93e307205c5b8d7",
      "parents": [
        "52c03d2cb9a782366e804d1910a7c8f072b05353"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 20 18:18:51 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 21 15:17:52 2011 -0700"
      },
      "message": "Rework display size access.\n\nApplications now get the display size from the window manager.  No\nbehavior should be changed yet, this is just prep for some real\nchanges.\n\nChange-Id: I2958a6660895c1cba2b670509600014e55ee9273\n"
    },
    {
      "commit": "beb182a4945b9b762fac77edd1183897bcac5b32",
      "tree": "5cdfa5875008f47169652eaef2fee0aedb15225c",
      "parents": [
        "37e344cbe277e8f4da944c19cffaf34f38f6396e",
        "4b2e934928a2eb65927bd39197198c28c49efb94"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Apr 11 12:14:17 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 11 12:14:17 2011 -0700"
      },
      "message": "Merge \"Package manager changes to store and update user information.\""
    },
    {
      "commit": "4b2e934928a2eb65927bd39197198c28c49efb94",
      "tree": "52dedcaa4ef165954e6c7ec9dcd98c5b13442842",
      "parents": [
        "d07f6a7934d229e91d7ca23e83c664101f472312"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Mar 31 12:38:53 2011 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Apr 11 12:12:58 2011 -0700"
      },
      "message": "Package manager changes to store and update user information.\n\nSome API stubs for managing users and storing their details.\nList of users is stored in an xml file.\nEach user\u0027s properties are stored in a separate xml file.\n\nSome unit tests for modifying the XML files.\n\nChange-Id: If2ce2420723111bd426f6762def3c2afc19a0ae5\n"
    },
    {
      "commit": "43a17654cf4bfe7f1ec22bd8b7b32daccdf27c09",
      "tree": "a5aac88ebb367a0f046a5724edc8e35cbe192cb9",
      "parents": [
        "ea4af8914a3b6ea68558f20ce502966032ca1ab1"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Apr 06 19:22:23 2011 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Thu Apr 07 19:23:05 2011 -0700"
      },
      "message": "Remove the deprecated things from Config.java. These haven\u0027t been working since before 1.0.\n\nChange-Id: Ic2e8fa68797ea9d486f4117f3d82c98233cdab1e\n"
    },
    {
      "commit": "08065b9f09ead8895d97b2971622af8c179e1768",
      "tree": "6bd821f0c111e72ea84f3e7f736e082800721a12",
      "parents": [
        "827107f4ec7d9a53d7bb6e4071858252f263fa8c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Apr 01 15:49:41 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Apr 01 16:00:23 2011 -0700"
      },
      "message": "Tracking merge of dalvik-dev to master\n\ngit cherry-pick --no-commit  a80febd83c8bf0b6717da2a7136179bdc906a5b7\n\ngit cherry-pick --no-commit  5e642b41cf44c5da7afdd95ab3d5e2bdbf7b31dd\n\ngit cherry-pick --no-commit  4886db14c9eee4b6fee69bd54c57c5af04709c4c\n\ngit cherry-pick --no-commit  560c685e448769904047507b9484ce8111967d7e\n\ngit cherry-pick --no-commit  63dde7a2fcfa53dc531558635b64cea613d3cdb4\n\ngit cherry-pick --no-commit  74e5cb91060a379d98dd3a333b5f231bfb4f502e\n\ngit cherry-pick --no-commit  1cc8c9708b555e2e338b7798d38887a2fefcfea6\n\ngit cherry-pick --no-commit  09625a21f5abe0c0db15757f58585d552d62c3d7\n\ngit cherry-pick --no-commit  fcb02dfe0f5a2bb7c07e6d6fc69f756a484b5458\n\ngit cherry-pick --no-commit  a68cb7fa3ab42854768b8145ff85231663770292\n\ngit cherry-pick --no-commit  716beb1c131dd2c6b805d4f681debaa20075010c\n\ngit cherry-pick --no-commit  8c29b1097a7afe3a77e27546a56e396f3620a4ec\n\ngit cherry-pick --no-commit  9c6a1a55d1c8086c1cc57464eea43725694ff70c\n\ngit cherry-pick --no-commit  b14f5ea5c57acdd009ba5b51f1bbe430f3d353b8\n\nChange-Id: I8cc94175441b009e23549762d6baee1dbace4881\n"
    },
    {
      "commit": "71431bb5ca0d8d566d4ebd9d0bc7eb20950290dc",
      "tree": "ee723ebdccdc82fe04fc99a96f136934e7793530",
      "parents": [
        "b732b7b5e8192501360edc15fb8c6399d11fb97d",
        "79b66725b7755e403e10a9d073121789f09b1a9e"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Feb 28 11:05:55 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 28 11:05:55 2011 -0800"
      },
      "message": "am 79b66725: am 25be2c72: am e0537f18: Merge \"Fix of tearDown() in SingleLaunchActivityTestCase.\"\n\n* commit \u002779b66725b7755e403e10a9d073121789f09b1a9e\u0027:\n  Fix of tearDown() in SingleLaunchActivityTestCase.\n"
    },
    {
      "commit": "25be2c725eba1c94c7fc700e37b194fdcd83a1fb",
      "tree": "352ae9de626d92b0299616fc0f854919879a9777",
      "parents": [
        "6504490cde3ec5d48321d539e654d1f2072b33f9",
        "e0537f1859664ba9c9cf87eb9d6dc3c16986dbb8"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Feb 28 10:15:46 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 28 10:15:46 2011 -0800"
      },
      "message": "am e0537f18: Merge \"Fix of tearDown() in SingleLaunchActivityTestCase.\"\n\n* commit \u0027e0537f1859664ba9c9cf87eb9d6dc3c16986dbb8\u0027:\n  Fix of tearDown() in SingleLaunchActivityTestCase.\n"
    },
    {
      "commit": "7aee61f5a96e94e158bf5ad3d8e192c4d4f7eff6",
      "tree": "153bab6076f6f309e4d3aa0ccf831d8c8ff492c7",
      "parents": [
        "7d9d8efebab9bda05cdb7733374723e1e3787d7c"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Tue Feb 08 11:25:01 2011 -0800"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Tue Feb 08 11:37:44 2011 -0800"
      },
      "message": "docs: fix links to revised fundamentals documents\n\nChange-Id: Ie2a660cce1d00f924c9fde5c6a00776307e5e1c7\n"
    },
    {
      "commit": "e8a534d8f0008e27f24016c5978ca0a5f0ecbce2",
      "tree": "47976c63dec66f7b25e9f55d8a6151bc2478bfa0",
      "parents": [
        "73fddbae964ee41895c8218454d0ed7fd71d6913"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jan 17 13:12:23 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jan 17 13:13:37 2011 -0800"
      },
      "message": "Remove API that snuck into MockPackageManager\n\nWe didn\u0027t release the get/setPackageObbPath API, but it snuck into\nMockPackageManager. However, it is not usable as a developer anyway.\nRemoving it so it doesn\u0027t stay in the API forever.\n\nCherry-pick from gingerbread\n\nChange-Id: I2083a8f398d983d53661c33270854442e34f9bc9\n"
    },
    {
      "commit": "849dc24fa6a2bb6e1e5496c4710ee60c32abdb7f",
      "tree": "5c565286b72233f286c94ea9404e0f5401643013",
      "parents": [
        "e26aa3f78a33af5720e141e98a1ab0c77ef0456d",
        "524133cc793b5e372cc97c62653281605f57b5b3"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jan 17 13:05:24 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 17 13:05:24 2011 -0800"
      },
      "message": "am 524133cc: Remove API that snuck into MockPackageManager\n\n* commit \u0027524133cc793b5e372cc97c62653281605f57b5b3\u0027:\n  Remove API that snuck into MockPackageManager\n"
    },
    {
      "commit": "a1cbb94dbc9a82d4eb3a47242fe161af21803858",
      "tree": "31e227475f199e3a1bdc34193f5e63b5645e47f1",
      "parents": [
        "db7f38673c33ba55801019007ff18fa4c57f75e0"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jan 17 12:46:23 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jan 17 13:00:47 2011 -0800"
      },
      "message": "Revert \"Add the {get,set}PackageObbPaths calls to API\"\n\nThis reverts commit 5d40fe9c6846ba765072e50ed1254293cb9195e4.\n\nChange-Id: Ie41010c92fb860b19a12bcf63f6fe95ffa68da81\n"
    },
    {
      "commit": "524133cc793b5e372cc97c62653281605f57b5b3",
      "tree": "7d2ff33bb31ad9daa4a17ed5d79abe12626f36c2",
      "parents": [
        "34d2b41e48281d1df2c844e004740f008e699093"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jan 17 12:40:57 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jan 17 12:40:57 2011 -0800"
      },
      "message": "Remove API that snuck into MockPackageManager\n\nWe didn\u0027t release the get/setPackageObbPath API, but it snuck into\nMockPackageManager. However, it is not usable as a developer anyway.\nRemoving it so it doesn\u0027t stay in the API forever.\n\nChange-Id: Ia569754691dc3a9f2672c1f25e4e08d780db6028\n"
    },
    {
      "commit": "e26aa3f78a33af5720e141e98a1ab0c77ef0456d",
      "tree": "064acf99973b68c4db14bfcfa863d8ddee8763b2",
      "parents": [
        "3392b8e23e7eb0275071af621802ed04c829c911",
        "34d2b41e48281d1df2c844e004740f008e699093"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jan 17 12:23:43 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 17 12:23:43 2011 -0800"
      },
      "message": "am 34d2b41e: Revert \"Add the {get,set}PackageObbPaths calls to API\"\n\n* commit \u002734d2b41e48281d1df2c844e004740f008e699093\u0027:\n  Revert \"Add the {get,set}PackageObbPaths calls to API\"\n"
    },
    {
      "commit": "34d2b41e48281d1df2c844e004740f008e699093",
      "tree": "15bb723f523d330dd8eedb0d1ebd022637d2e1b6",
      "parents": [
        "4a2e478a5bf6b4650181d1dfa643eadcc387fcec"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Sun Jan 16 17:25:18 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jan 17 11:49:22 2011 -0800"
      },
      "message": "Revert \"Add the {get,set}PackageObbPaths calls to API\"\n\nThis reverts commit 6c4d904851772313930f800ac7c323cf90c709bb.\n\nGoing with a different tactic that doesn\u0027t dump stuff on\nPackageManagerService.\n\nBug: 3214719\nChange-Id: I0bbeccf3c21d264deda4256eb53713d2c98284f4\n"
    },
    {
      "commit": "805fd7ee0e5dc2939e85c84f78d9890a51982bc0",
      "tree": "e2487cd3d7917fa6a126463e2cc5771295544627",
      "parents": [
        "cf18c4788af740773c9b2720a1c4ed5f45454b8e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Jan 16 18:30:29 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Jan 16 18:43:04 2011 -0800"
      },
      "message": "Add API to get path to OBBs.\n\nAlso hide the bitmap thumbnail stuff, we can\u0027t support it in its\ncurrent form.\n\nAnd fix some bugs with propagating paths to native code.  Yikes!\n\nChange-Id: I13ab37ddbdba5c073489cba5eab035117d3c1574\n"
    },
    {
      "commit": "5d40fe9c6846ba765072e50ed1254293cb9195e4",
      "tree": "3fd67e01ffba461a5700262e32d155febba317d5",
      "parents": [
        "c69d5f3b536a56da9120ace34e05b9878ed164c6"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Jan 14 10:54:46 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Jan 14 12:18:48 2011 -0800"
      },
      "message": "Add the {get,set}PackageObbPaths calls to API\n\nAdd getPackageObbPaths() and setPackageObbPaths() to the public API.\n\nBug: 3214719\nChange-Id: I8627b5f674a795d5780eb5c08911419110670a41\n"
    },
    {
      "commit": "470750793b6e930a323ee63cbed05c43dc435ba1",
      "tree": "3ff696f1e9022f62934bdc0e256ca123c2028bfb",
      "parents": [
        "471de1f5b3cc629739d8315ff195d6af928e7ae4",
        "e8c04db71e347396e9537ead7113ba9f46706e44"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jan 12 15:06:51 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 12 15:06:51 2011 -0800"
      },
      "message": "am e8c04db7: Merge \"Add the {get,set}PackageObbPaths calls to API\" into gingerbread\n\n* commit \u0027e8c04db71e347396e9537ead7113ba9f46706e44\u0027:\n  Add the {get,set}PackageObbPaths calls to API\n"
    },
    {
      "commit": "c6bf4075c96d8738ee375835a5b92b1332e4d929",
      "tree": "71e532d6232669f7028d370982b192aabb95f3a6",
      "parents": [
        "cb8427538dfdc5eae941e377b11bfd11a95fc5a5"
      ],
      "author": {
        "name": "Mikael Andreen",
        "email": "mikael.andreen@sonyericsson.com",
        "time": "Wed Dec 01 12:49:08 2010 +0100"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonyericsson.com",
        "time": "Tue Jan 11 15:27:23 2011 +0100"
      },
      "message": "Fix of tearDown() in SingleLaunchActivityTestCase.\n\nBefore a suite of SingleLaunchActivityTestCase tests are run,\nan activity is started. The activity is supposed to close\nwhen all the tests in the suite have run. The activity is\nhowever finished one test too early. This causes problems\nfor the last test.\n\nChange-Id: Ie9fb2df350a70f827495a0dc30952e30fbe491e0\n"
    },
    {
      "commit": "6c4d904851772313930f800ac7c323cf90c709bb",
      "tree": "2f84951fb1aafb2b141419003cef9a64534e5c9a",
      "parents": [
        "9b447d122a2f0a4798f03749e9d93b9a58834fe3"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Nov 19 12:48:05 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Sun Jan 09 13:20:28 2011 -0800"
      },
      "message": "Add the {get,set}PackageObbPaths calls to API\n\nAdd getPackageObbPaths() and setPackageObbPaths() to the public API.\n\nBug: 3214719\nChange-Id: Icb9f2f92f8c59bb3d31317f609854e81abbd1449\n"
    },
    {
      "commit": "ac77f4629c1bbdf2e440d0fcc9fd665e5dd1ae6e",
      "tree": "5cd5a0217063445064876c39bc6fcfba5a8f8d65",
      "parents": [
        "cd3676e7b835653b04d4f66251a63749e7603f5b"
      ],
      "author": {
        "name": "Dmitri Plotnikov",
        "email": "dplotnikov@google.com",
        "time": "Fri Jan 07 12:06:47 2011 -0800"
      },
      "committer": {
        "name": "Dmitri Plotnikov",
        "email": "dplotnikov@google.com",
        "time": "Fri Jan 07 12:06:47 2011 -0800"
      },
      "message": "Prevent ActivityTestCase from erasing constants.\n\nIf you test case is declaring a non-primitive constant,\nthis method would clear out the constant between\nindividual tests.\n\nChange-Id: I570f2bbbbbb0a170bf63b7473b4aaf84869e93e0\n"
    },
    {
      "commit": "f48e94005b6f7d648ebe659960bed32998779439",
      "tree": "54be9683c7ed474303ed57478544e8c10eeda7b5",
      "parents": [
        "63acafec59d7af24e8579e6f895747b528864a23"
      ],
      "author": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Tue Dec 21 12:58:40 2010 -0800"
      },
      "committer": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Tue Dec 21 12:58:40 2010 -0800"
      },
      "message": "Remove an obsolete import for performance tests.\n\nChange-Id: Ifc76ef821f71ea7469b4044b15071f5d2a7418fd\n"
    },
    {
      "commit": "bd1c5da28dab9c3fb7e19bdadb22d7ad960fa3c3",
      "tree": "a929e584ab215ff780f695710a004cb393ef3a93",
      "parents": [
        "41e7e6f9339cd9181df26ca96f0ac133371bc524"
      ],
      "author": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Tue Dec 21 08:21:48 2010 -0800"
      },
      "committer": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Tue Dec 21 10:23:28 2010 -0800"
      },
      "message": "Remove unused performance tests.\n\nChange-Id: I5a252e314831716f99ce5fbb32d983c7473ee787\n"
    },
    {
      "commit": "c91893511dc1b9e634648406c9ae61b15476e65d",
      "tree": "3ad578a43734d2ed63403a8b9076c2c5c6d07dbe",
      "parents": [
        "60e41fa4456ce6bc37a33b1e4b81a56e9411199b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Dec 15 14:57:25 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Dec 16 20:09:13 2010 -0800"
      },
      "message": "Fix issue #3272082: Contacts: when going back from edit view,\nlist UI is not ready yet\n\nThis involves some reworking of Loaders.\n\nLoaders, in particular CursorLoader, are now expected to retain\ntheir current data after being stopped.  This allows applications\nto keep that data across onStop() -\u003e onStart(), so when the user\nreturns to the app it doesn\u0027t have to wait for the data to reload\nand thus cause flicker.\n\nThis includes various API changes to better reflect the new\nsemantics, plus a new LoaderCallbacks method to tell the application\nwhen it is actually time to stop their use of a loader\u0027s data.\n\nNote this is somewhat half-done, to help checking in the extensive\napplication changes that are required without causing build breakage.\n\nChange-Id: Ib4b3bf8185a6da46e7f06ca125521d65e2e380a1\n"
    },
    {
      "commit": "4f3867e3ce92101224ad79b8f2ff446bb4f99108",
      "tree": "34fe1bf3f235ce5ae2ec4d66046ab7a0bbb439a7",
      "parents": [
        "6866d6912b6b5cbaaf482857d279037135aeb45f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 14 22:09:51 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 14 22:19:03 2010 -0800"
      },
      "message": "Time to remove some old APIs!\n\nChange-Id: I73ca23b0d5c7971a00dfa05357f9b630d9b6ebc8\n"
    },
    {
      "commit": "621e17de87f18003aba2dedb719a2941020a7902",
      "tree": "978b402ced5bd03d3b4f6eaa9fbaaf186427823c",
      "parents": [
        "703c5f39c58168829e8d8f7ed7b5aea3f4fb600b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Nov 22 15:59:56 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Nov 22 18:35:55 2010 -0800"
      },
      "message": "Implement issue #3221502: New APIs to support new back stack / task navigation\n\nWhat this adds:\n\n- A new Intent activity flag to completely replace an existing task.\n- A new Intent activity flag to bring the current home task up behind\n  a new task being started/brought to the foreground.\n- New versions of startActivity() that take an array of Intents to be\n  started, allowing applications to start a task in a specific state.\n- A public moveTaskToFront() method on ActivityManager, with a new flag\n  that allows the caller to have the task moved to the front with the\n  current home task immediately behind it.\n\nChange-Id: Ie8028d09acffb5349d98043c67676daba09f75c8\n"
    },
    {
      "commit": "be4e1c8f6f2731e61d1c9302662892007a4579b9",
      "tree": "c222ab7e6b71ac93680578b77998b070c0f56893",
      "parents": [
        "dbc7f092f63172602596c8cdc213159ea5ff0003",
        "7b76ed693e42caea0c5f1bcbe7059c580e9cb314"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Nov 19 16:56:42 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 19 16:56:42 2010 -0800"
      },
      "message": "am 7b76ed69: am e3bef7c4: Merge \"Added noop unregisterReceiver to complement existing noop registerReceiver.\"\n\n* commit \u00277b76ed693e42caea0c5f1bcbe7059c580e9cb314\u0027:\n  Added noop unregisterReceiver to complement existing noop registerReceiver.\n"
    },
    {
      "commit": "7b76ed693e42caea0c5f1bcbe7059c580e9cb314",
      "tree": "979062841c9a23a97fdee0ef9265349d12d83530",
      "parents": [
        "00f502a38cc4d6e2278f962b04308e6590dba36b",
        "e3bef7c48d7ec13cb8c7c81dba8d775377e69bed"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Nov 19 15:43:28 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 19 15:43:28 2010 -0800"
      },
      "message": "am e3bef7c4: Merge \"Added noop unregisterReceiver to complement existing noop registerReceiver.\"\n\n* commit \u0027e3bef7c48d7ec13cb8c7c81dba8d775377e69bed\u0027:\n  Added noop unregisterReceiver to complement existing noop registerReceiver.\n"
    },
    {
      "commit": "880119bf43d738ca632b5d3861eb52d655c1c0fc",
      "tree": "684a13f821e570aee075c77bde7f5fc28191015f",
      "parents": [
        "7ffd0871e6b8d7ab9443bef6e8b2a31674d1f623"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Nov 18 22:26:40 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Nov 19 13:21:08 2010 -0800"
      },
      "message": "Implement issue #2367442: Please add API for manipulating installer\npackage names\n\nChange-Id: I0563e896a47ae1a6e77aebc2d624fb1bde52ffbc\n"
    }
  ],
  "next": "48983959a34f67024bd0411c8353c196e6a87717"
}
