)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "48983959a34f67024bd0411c8353c196e6a87717",
      "tree": "02e306ba2f70971265902810f70a35cb6e30d5d3",
      "parents": [
        "81c4cea9ec4b08f8c06fdef86d51069adb739eb7"
      ],
      "author": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Wed Nov 17 12:28:51 2010 -0800"
      },
      "committer": {
        "name": "Brian Muramatsu",
        "email": "btmura@google.com",
        "time": "Wed Nov 17 12:28:51 2010 -0800"
      },
      "message": "Fix NPE in InstrumentationTestRunner\n\nThis fixes a problem where the test runner would die when a\ntest case has tests that are not methods of the test class.\n\nChange-Id: I5adc464bb4a0c8d282428895e422a47dcb6bfe1f\n"
    },
    {
      "commit": "3fc03e619fb01678549b80e7a89af2c8e3f19968",
      "tree": "8219675f058c1939b7662dfd08fc284ee60e32c5",
      "parents": [
        "62f2ada64f7213243eafd7a4a4c3ccd5040ad85a"
      ],
      "author": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Tue Oct 19 15:13:07 2010 -0700"
      },
      "committer": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Tue Oct 19 18:23:18 2010 -0700"
      },
      "message": "Added RepetitiveTest annotation and test runner support\n\nChange-Id: I7bf0871ede6dd69512c6b6ea3484693ba5b78e89\n"
    },
    {
      "commit": "d672475753af1feff1c0f81bba72637ec0b536cd",
      "tree": "cac22eda9f7813d2497a13b515752549aed44f38",
      "parents": [
        "7d9c73fb6f6f79f7f92b77482a0edbd7b89f2564"
      ],
      "author": {
        "name": "Jonas Schwertfeger",
        "email": "jschwertfeger@gmail.com",
        "time": "Thu Sep 30 14:04:09 2010 +0200"
      },
      "committer": {
        "name": "Jonas Schwertfeger",
        "email": "jschwertfeger@gmail.com",
        "time": "Thu Sep 30 14:04:09 2010 +0200"
      },
      "message": "Added noop unregisterReceiver to complement existing noop registerReceiver.\n\nWithout this addition, code that is being tested using an isolated context\ncan cause an exception if it unregisters a previously registered broadcast\nreceiver.  This is because the isolated context never actually registered\nthe receiver in the first place.  The fix is to make sure the isolated\ncontext is consistent in ignoring both recevier registration and\nunregistration calls.\n\nChange-Id: Ie0ba6f4bb10f5248704327a0ffc8e37ee8b71ae2\n"
    },
    {
      "commit": "cca1f0e3476edd09cdd81b075a6b7780a2959b46",
      "tree": "d403a9351ccb722771dea382852bde6df8f23a68",
      "parents": [
        "c63806d852a550d82bbe6cadff8a2139d78ed559"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Sep 26 18:34:53 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Sep 27 18:05:44 2010 -0700"
      },
      "message": "Allow all apps to call ContentResolver.getType().\n\nI can\u0027t find the bug number for this, but it is needed for some things\nwe are doing where the app building an intent may not have access to the\nURI in the data field.  This is for HC, but doing in GB to avoid introducing\nintegration issues.\n\nChange-Id: I0cac971854198b18775d2a73deb80f23431bfbe2\n"
    },
    {
      "commit": "8313fc7e94e46e5cc09f457a15a771a325b9f74f",
      "tree": "d68bf554b0d92a64cde72e58178e60d4d30b521d",
      "parents": [
        "08c09b0f84b23627b4cd02e1b9a642952fbd2e7f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Sep 26 18:34:53 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Sep 26 21:31:47 2010 -0700"
      },
      "message": "Allow all apps to call ContentResolver.getType().\n\nI can\u0027t find the bug number for this, but it is needed for some things\nwe are doing where the app building an intent may not have access to the\nURI in the data field.  This is for HC, but doing in GB to avoid introducing\nintegration issues.\n\nChange-Id: I0cac971854198b18775d2a73deb80f23431bfbe2\n"
    },
    {
      "commit": "8e34203c41f2f38f9d58547881bb4febd7c07bc7",
      "tree": "af4aeda8ef3a609a30cc79e10498c65e5b35e959",
      "parents": [
        "ed4fbd98d05a368ea17d6759f262b3547406c8c5"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Tue Sep 07 14:27:25 2010 -0700"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Tue Sep 07 14:27:25 2010 -0700"
      },
      "message": "Add getApplicationContext to the mock implementation.\n\nSo that it\u0027ll be compatible with Loaders, which uses this method.\n(Otherwise MockContext.getApplicationContext(), which just throws\nan exception, will be used.)\n\nChange-Id: I529b60466cf086b514fcddbef4583d1c5b750b9c\n"
    },
    {
      "commit": "2394c164a76f6d3f8ad9f1c1517f58f72adab9d7",
      "tree": "f0cee0035a0983071d2cdd713d77eacc156dab36",
      "parents": [
        "633524731b2a7a0871aabfabc60459ac27f0e5ab",
        "ec438e1448ebc578ee5a4c4beb1e26292cdedd6e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 31 19:06:25 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 31 19:06:25 2010 -0700"
      },
      "message": "am ec438e14: am 361199b5: Add PackageManager API to get information about a provider component.\n\nMerge commit \u0027ec438e1448ebc578ee5a4c4beb1e26292cdedd6e\u0027\n\n* commit \u0027ec438e1448ebc578ee5a4c4beb1e26292cdedd6e\u0027:\n  Add PackageManager API to get information about a provider component.\n"
    },
    {
      "commit": "361199b5e742c6635d4d7a03de6cf37b31cf442c",
      "tree": "170d0ba61242ba04a3491a98f894f3a2e416bbe7",
      "parents": [
        "22cd420bfa431b4ad55e699afadf109dcc54f201"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 30 17:42:07 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 31 18:59:04 2010 -0700"
      },
      "message": "Add PackageManager API to get information about a provider component.\n\nKind-of useful when all you have is a ComponentName.\n\nChange-Id: I9a99f12daabb29e97e882e09c43ca0df70c00651\n"
    },
    {
      "commit": "23fdaf6fb62a9b5154b2508916a21c678462c5d0",
      "tree": "14b794a1f76f738576bbaa8295141914f5b2b123",
      "parents": [
        "163935113919a184122b8b3bd672ef08c8df65dc"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 06 12:16:55 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Aug 08 18:49:31 2010 -0700"
      },
      "message": "Add new ContentProvider for doing conversions to data streams.\n\nThis introduces basic infrastructure that should allow content\nproviders holding complex data to perform on-demand conversion\nof their data to streams of various types.  It is achieved through\ntwo new content provider APIs, one to interrogate the possible\nstream MIME types the provider can return, and the other to\nrequest a stream of data in a particular MIME type.\n\nBecause implementations of this will often need to do on-demand\ndata conversion, there is also a utility intoduced in ContentProvider\nfor subclasses to easily run a function to write data into a\npipe that is read by the client.\n\nThis feature is mostly intended for cut and paste and drag and\ndrop, as the complex data interchange allowing the source and\ndestination to negotiate data types and copy (possible large)\ndata between them.  However because it is fundamental facility\nof ContentProvider, it can be used in other places, such as for\nmore advanced GET_CONTENT data exchanges.\n\nAn example implementation of this would be in ContactsProvider,\nwhich can now provider a data stream when a client opens certain\npieces of it data, to return data as flat text, a vcard, or other\nformat.\n\nChange-Id: I58627ea4ed359aa7cf2c66274adb18306c209cb2\n"
    },
    {
      "commit": "3c7c351a6217ac48b741740167c201a679a0ca65",
      "tree": "f539d70e0a46249f01dd6fb45563f1ebc4bed706",
      "parents": [
        "cde66df44240cfe5a7bec12ac52464c3bf26c14f"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 04 15:44:39 2010 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 04 23:47:38 2010 -0700"
      },
      "message": "Tracking merge of dalvik-dev to gingerbread\n\ngit cherry-pick --no-commit f77cf7f0\ngit cherry-pick --no-commit c8f503b5285e30c1a881d0ba860ba9021f57d113\ngit cherry-pick --no-commit 570bb561\ngit cherry-pick --no-commit e2417541\ngit cherry-pick --no-commit e4d81f25bd4dc1a5c909b56ab56a56406290da30\ngit cherry-pick --no-commit 5e8a587d\n\nChange-Id: I101a385d43f3e0f4ce5352217f92ef67a3908c88\n"
    },
    {
      "commit": "b6d1437f32d92369da208f6201df7bcdb5d17763",
      "tree": "fdb90588a0e8a61a00b1934967ec44178d91a269",
      "parents": [
        "8e552630e72a17d7340f1bebccbc6fd6faef82fb"
      ],
      "author": {
        "name": "Vasu Nori",
        "email": "vnori@google.com",
        "time": "Wed Aug 04 18:05:00 2010 -0700"
      },
      "committer": {
        "name": "Vasu Nori",
        "email": "vnori@google.com",
        "time": "Wed Aug 04 18:05:00 2010 -0700"
      },
      "message": "fix build breakage\n\neclipse doesn\u0027t complain but our build does..\n\nChange-Id: If0289b68e91e7eb2ae7a9b7bd90d5cb6b728e944\n"
    },
    {
      "commit": "0c9e14aa4aa1370e01872dc05238f822f2dd552c",
      "tree": "881d1ab617e7b83a3b3d011755a1cb61bd3d414d",
      "parents": [
        "0d523e09bdc6373cba3c3c45ae84ffacfcfcf3b1"
      ],
      "author": {
        "name": "Vasu Nori",
        "email": "vnori@google.com",
        "time": "Wed Aug 04 13:31:48 2010 -0700"
      },
      "committer": {
        "name": "Vasu Nori",
        "email": "vnori@google.com",
        "time": "Wed Aug 04 13:34:34 2010 -0700"
      },
      "message": "add shutdown() to ContentProvider \u0026 call in ProviderTestCase*.tearDown\n\nChange-Id: I3dd69b6907d68b7c1184139f22297ab92337f043\n"
    },
    {
      "commit": "ebd19e0f48b0cb246c246274a256a9bb494b7e7a",
      "tree": "a503f7f06b89a6259253f088b67a7c2d419697e6",
      "parents": [
        "a2a1b911a31dd94ee75e94845f762b91f1db1368"
      ],
      "author": {
        "name": "Jeff Hamilton",
        "email": "jham@android.com",
        "time": "Wed Jul 21 16:33:10 2010 -0500"
      },
      "committer": {
        "name": "Jeff Hamilton",
        "email": "jham@android.com",
        "time": "Tue Jul 27 14:03:00 2010 -0500"
      },
      "message": "Add LoaderTestCase that makes it easier to test Loaders.\n\nChange-Id: I4e91d6767cfd5cc61d7893e9cd71e963e42601a4\n"
    },
    {
      "commit": "d93f4e5b70f37feae0cbdf1f456c167a1ea37433",
      "tree": "4ebf3b8930f32f2a754b22361175d4fef111346f",
      "parents": [
        "e339464f1c8efe7e53b761cf44ff5be6e537ecad",
        "87e98cda1c864cb2069d387a64346702a05574c4"
      ],
      "author": {
        "name": "Joe Malin",
        "email": "jmalin@google.com",
        "time": "Tue Jul 13 09:46:38 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 13 09:46:38 2010 -0700"
      },
      "message": "Merge \"DO NOT MERGE Doc Change: Javadoc for test case classes\" into gingerbread"
    },
    {
      "commit": "bbfe0b2264703c243e2e74631abd26fdf4459e36",
      "tree": "e47eac80284822babe166ef4b099d9830010bbcc",
      "parents": [
        "d8a6271bb1da4ee2a8ae126b532f1b5f302decb8",
        "243f7f85ea9e57716590b9cf355e55d1f0236fce"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Thu Jul 08 19:10:29 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 08 19:10:29 2010 -0700"
      },
      "message": "am 243f7f85: am f6120cf4: Merge \"Improve InstrumentationTestRunner exception handling.\" into gingerbread\n\nMerge commit \u0027243f7f85ea9e57716590b9cf355e55d1f0236fce\u0027\n\n* commit \u0027243f7f85ea9e57716590b9cf355e55d1f0236fce\u0027:\n  Improve InstrumentationTestRunner exception handling.\n"
    },
    {
      "commit": "511d9ec363c5bb460e4695de56edc1b7785dc7bf",
      "tree": "0989c0d452b037d9621f701c0adacb96d6b4710b",
      "parents": [
        "28e230352b24b190d6750aa38a79b69e2fada067",
        "0a21801f5fae22cd5e1b3e9f1c1405c744e24c9b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Jul 08 19:09:06 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 08 19:09:06 2010 -0700"
      },
      "message": "am 0a21801f: am a5402dab: Merge \"OBB API for PackageManager\" into gingerbread\n\nMerge commit \u00270a21801f5fae22cd5e1b3e9f1c1405c744e24c9b\u0027\n\n* commit \u00270a21801f5fae22cd5e1b3e9f1c1405c744e24c9b\u0027:\n  OBB API for PackageManager\n"
    },
    {
      "commit": "f6120cf431804e072f34699a5d8a3fae62492cee",
      "tree": "dfc0e00fb75fe4d40949772df0dd5ffff275ce80",
      "parents": [
        "74bf59b450daf9e7e6bf234f01db164099edbfd5",
        "31e7ce762ccbbb747fabb4581e42a0a2fe56e780"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Thu Jul 08 14:09:21 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 08 14:09:21 2010 -0700"
      },
      "message": "Merge \"Improve InstrumentationTestRunner exception handling.\" into gingerbread"
    },
    {
      "commit": "31e7ce762ccbbb747fabb4581e42a0a2fe56e780",
      "tree": "f9d5ff503a6ce35c29aa2da2f9bdc6359f6640dc",
      "parents": [
        "dacabf97c609a040ada857a7da6c560097448ae3"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Wed Jul 07 17:19:08 2010 -0700"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Wed Jul 07 17:33:22 2010 -0700"
      },
      "message": "Improve InstrumentationTestRunner exception handling.\n\nThis commit fixes two somewhat related problems:\n  - Attempting to run a method which does not exist caused a runtime\nexception which stopped the test run. Change this so the runner reports\nan individual test failure instead\n  - A runtime exception during the test run would cause it to stop\ncompletely, with no information dumped to the logcat or stdout. Now\nexceptions are trapped and reported to stdout.\n\nAlso added associated unit tests to test these two conditions.\n\nRelated bug 2812262.\n\nChange-Id: I383f9b9bad99f14cb51071800fa9bdbf6a6a1119\n"
    },
    {
      "commit": "93565c4b3265c16aee4a82d7556f811776c17db8",
      "tree": "1b6802fea6d067d97410d67d6665721ea23fb327",
      "parents": [
        "7cee34a051eb0087322c8b965e498f88b1aa52d3"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Jun 18 15:46:06 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 07 09:57:51 2010 -0700"
      },
      "message": "OBB API for PackageManager\n\nSimple API for tracking .obb files associated with packages. Stores the\npath in the PackageSettings. No verification of file content is done\nnow since the PackageManagerService can\u0027t read the SD card where these\nfiles will likely live.\n\nChange-Id: Ibeaf26ba0526b6d60f401137e58f46ee9faff39e\n"
    },
    {
      "commit": "87e98cda1c864cb2069d387a64346702a05574c4",
      "tree": "71ce565d76f51c7a532436f102d32c17ab5edfb2",
      "parents": [
        "8ecfb60a8e74dfcd51bbf3f236d5f414a4d5ac7d"
      ],
      "author": {
        "name": "Joe Malin",
        "email": "jmalin@google.com",
        "time": "Mon May 31 14:37:28 2010 -0700"
      },
      "committer": {
        "name": "Joe Malin",
        "email": "jmalin@google.com",
        "time": "Fri Jul 02 17:52:37 2010 -0700"
      },
      "message": "DO NOT MERGE Doc Change: Javadoc for test case classes\n\nChange-Id: I21b78a84ee1345a98631dcaab937a10b4fa4344d\n\nOriginal change was SHA1 7d433aabb731a790fc8d06d260c826751215113f\n"
    },
    {
      "commit": "7d433aabb731a790fc8d06d260c826751215113f",
      "tree": "5e9d79ba13c3cecb80443d329b9814636b46a873",
      "parents": [
        "7ade1be822ed05a143b059319dccd5e9f623b56d"
      ],
      "author": {
        "name": "Joe Malin",
        "email": "jmalin@google.com",
        "time": "Mon May 31 14:37:28 2010 -0700"
      },
      "committer": {
        "name": "Joe Malin",
        "email": "jmalin@google.com",
        "time": "Tue Jun 29 15:03:58 2010 -0700"
      },
      "message": "Javadoc for test case classes\n\nChange-Id: Ibfa035cfe9091a81fca8bd0a6c141ec26c2de139\n"
    },
    {
      "commit": "25f3ab4ee7d14ac9453396e2100d27f3f52c7077",
      "tree": "d2e0dfb4860338027a2613e2e4be2806ae9c2a8f",
      "parents": [
        "a2650db770e93a9424d6d6948fd31f943f6dac49"
      ],
      "author": {
        "name": "Evan Millar",
        "email": "emillar@google.com",
        "time": "Fri Jun 18 16:19:26 2010 -0700"
      },
      "committer": {
        "name": "Evan Millar",
        "email": "emillar@google.com",
        "time": "Fri Jun 18 16:19:26 2010 -0700"
      },
      "message": "Manual merge of change 53051 from master (DO NOT MERGE)\n\nChange-Id: Ia4697a15cb874f25849655994e10aa88ae60b328\n"
    },
    {
      "commit": "f6b979a04f38659177e06ff81cf7bc1b87389fe9",
      "tree": "35438c24a45d92ebc9b81ecf4a0ef5af9510808b",
      "parents": [
        "8fd2913a7d893f7b0c07217df246876318739db5"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Fri Jun 04 16:12:15 2010 -0700"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Fri Jun 04 16:14:42 2010 -0700"
      },
      "message": "Fix UnsupportedOperationException from MockContext.\n\nAdded the new variant of openOrCreateDatabase to RenamingDelegatingContext too.\n\nBug 2739822\n\nChange-Id: I65868d0975e0a0a87ade6b5a0d625b96676af0ba\n"
    },
    {
      "commit": "74f170f9468d3cf6d7d0ef453320141a3e63571b",
      "tree": "7fb4f06b43b5e0ef8d2fdebccb62172217e0b174",
      "parents": [
        "26ae7875ad41c79d595a137c2f4a55c8d8e16f4c"
      ],
      "author": {
        "name": "Vasu Nori",
        "email": "vnori@google.com",
        "time": "Tue Jun 01 18:06:18 2010 -0700"
      },
      "committer": {
        "name": "Vasu Nori",
        "email": "vnori@google.com",
        "time": "Thu Jun 03 12:38:11 2010 -0700"
      },
      "message": "new API in Context. on openDatabase, new param DatabaseErrorHandler\n\nadd new method openOrCreateDatabase in Context.java to allow\ncallers specify a DatabaseErrorHandler object to be used when\ndatabase corruption occurs.\nadd new constructor in SQLiteOpenHelper to accept DatabaseErrorHandler\nas an additional param to be used when SQLiteDatabase instance is\ncreated.\n\nChange-Id: I912a0202a74510f9ca0206dd8101c4abab9102ae\n"
    },
    {
      "commit": "8b0dd7da360d70920a37802eb455ba41500d3b45",
      "tree": "d31a63e67bbfad53c2dfe4002795b73286b7c361",
      "parents": [
        "3e7432f823b9f0457e935614787cff4eb71a8f2b"
      ],
      "author": {
        "name": "Vasu Nori",
        "email": "vnori@google.com",
        "time": "Tue May 18 11:54:31 2010 -0700"
      },
      "committer": {
        "name": "Vasu Nori",
        "email": "vnori@google.com",
        "time": "Wed Jun 02 17:40:41 2010 -0700"
      },
      "message": "add API to Cursor to get column value type\n\nChange-Id: I3ef1bcdb2eb1c45f68e829ccb6e3ecde28076591\n"
    },
    {
      "commit": "71be4b5ed994030171fb3bd3f08fbc8c43c47567",
      "tree": "bd8e9a421ab626adc21f61db0bcc4175cae65f67",
      "parents": [
        "0e42b29eb0b279ad64c55890efd3fb533493224e"
      ],
      "author": {
        "name": "Evan Millar",
        "email": "emillar@google.com",
        "time": "Tue Jun 01 13:55:50 2010 -0700"
      },
      "committer": {
        "name": "Evan Millar",
        "email": "emillar@google.com",
        "time": "Tue Jun 01 13:55:50 2010 -0700"
      },
      "message": "Bring ServiceTestCase in line with current Service APIs and remove unnecessary asserts.\n\n-Updated onStart() call to onStartCommand()\n-Removed asserts that disallowed starting an already bound service and vice versa, since\n that is a valid Service usage pattern.\n\nChange-Id: I79804aef5319a590c74fca54fc990954f7c3fdaa\n"
    },
    {
      "commit": "e26867793b6a0c226e02f7da880b06efbcb8707e",
      "tree": "30685e5c8ee5cd4e20895d99d5a923643cae6ea9",
      "parents": [
        "7cd51efcbd2d083bf577696591ef1769034f7e2f"
      ],
      "author": {
        "name": "Jeff Hamilton",
        "email": "jham@android.com",
        "time": "Thu May 13 02:34:10 2010 -0500"
      },
      "committer": {
        "name": "Jeff Hamilton",
        "email": "jham@android.com",
        "time": "Thu May 13 23:44:10 2010 -0500"
      },
      "message": "Remove the unused modification APIs from MockCursor. They shouldn\u0027t have been public in the first place.\n\nChange-Id: I2932e5287f838f72acdc4c0c1fd5601ffa8c3f84\n"
    },
    {
      "commit": "c8f503b5285e30c1a881d0ba860ba9021f57d113",
      "tree": "48afc9f347ebe6b348254b1c88c35deafab10054",
      "parents": [
        "5d8636dbada23bd40c80dbf43702d538b2997ac4"
      ],
      "author": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Tue May 04 16:34:55 2010 -0700"
      },
      "committer": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Wed May 12 22:05:07 2010 -0700"
      },
      "message": "Moving junit out of core.jar and into core-junit.jar.\n\nChange-Id: I38b585044aaa0f0ef5a243a33d942ab0e490f8f1\n"
    },
    {
      "commit": "631447c6049c2ee18e6cd1553905dd8f15b3bcbd",
      "tree": "2f195e4ddef0358ae8472614dc36e5a916aeca46",
      "parents": [
        "88b299b123c7add985c78deb085880733c0dc7ea",
        "bb469fe3da7e6d17e851a95026a9eea905c52daa"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Mon Apr 26 10:30:56 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 26 10:30:56 2010 -0700"
      },
      "message": "Merge \"Add test runner log when test case class is not loaded.\""
    },
    {
      "commit": "bb469fe3da7e6d17e851a95026a9eea905c52daa",
      "tree": "fea7c329f41977fabc3dc75c9122ce680a1aecb9",
      "parents": [
        "a2c980d30f41e6d5aff948e7b249d7c3360db89d"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Fri Apr 23 16:22:09 2010 -0700"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Fri Apr 23 16:29:00 2010 -0700"
      },
      "message": "Add test runner log when test case class is not loaded.\n\nThe test runner will only load TestCase classes that have a public\nconstructor with either no params or a single String parameter.\n\nThis is fairly subtle behavior and can be difficult to catch. This change\nadds a log message when a TestCase class is not loaded, and adds some\nassociated unit tests.\n\nChange-Id: I6fc63e4179c949620f5773e0ae134f99905a6fb2\n"
    },
    {
      "commit": "81cd2e90ccdda498234384c8207afe2213714e60",
      "tree": "b521124675b8e4de73b45b24e3ecb9543ff946ea",
      "parents": [
        "1bdbb07237de7854797ac1574088eef4623eddbb"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Wed Apr 21 16:35:18 2010 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Fri Apr 23 15:49:07 2010 -0700"
      },
      "message": "Logo attribute for manifest and PackageManager methods to fetch it\n\nChange-Id: I2c5ac44a4e2af982a616b2012901d7395013b19f\n"
    },
    {
      "commit": "d7c096845dee7616095eda0fe9e7aa08f0ba9c20",
      "tree": "d20190ae42b25ce05960e16a89b8eb803d837602",
      "parents": [
        "22375e4a736c0d646c3cf0905c15126f7f4107c2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 30 10:42:20 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 30 13:34:43 2010 -0700"
      },
      "message": "Package manager optimizations.\n\nAddresses:\nIssue #2550648: PackageManagerService setComponentEnabledSetting unconditionally\nwrites Settings xml\nIssue #2549084: Make PackageManager.addPermission have async version\n\nAlso make the writing of settings when changing the preferred activities to use\nthe same async mechanism, and fiddle with thread priorities in the background\nthread to go up to foreground priority when holding the lock to write settings\nand a few other places.  (At some point we should really clean this up to never\nacquire the main lock while in the background.)\n\nChange-Id: Ib2b7632543f6fb3f92a225518579f3b2d15e1413\n"
    },
    {
      "commit": "89c0ef4aba57172bbc9288f2d22c943f220a3dd1",
      "tree": "54366fa0f8ca63ff9f0db8c7356e84e6b7f50d81",
      "parents": [
        "ed531b37e5315dab8987b6bfb4adcbb49df9cf88"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Thu Mar 18 20:03:31 2010 -0700"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Fri Mar 19 11:40:50 2010 -0700"
      },
      "message": "Add -e package description to InstrumentationTestRunner javadoc.\n\nBug 2528316\n\nChange-Id: Ic707115e40a18521e0d57ee12f43df96be7033f2\n"
    },
    {
      "commit": "10362ab9d67d87c0c3217e804e64d3e7038211df",
      "tree": "3b564cde6d8a9d6fd219116051befad97e635df7",
      "parents": [
        "d3d9b85ef4e2991480201df91455c2ad7b8e0b78"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Mar 12 11:13:50 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Mar 12 11:14:55 2010 -0800"
      },
      "message": "Add missing license notices on test classes\n\nChange number and file origin info\n\n34691-p9 frameworks/base/test-runner/src/android/test/ProviderTestCase2.java\n48099-p9 frameworks/base/test-runner/src/android/test/RenamingDelegatingContext.java\n40550-p9 frameworks/base/test-runner/src/android/test/BundlePrinter.java\n87783-p9 frameworks/base/test-runner/src/android/test/IsolatedContext.java\n34691-p9 frameworks/base/test-runner/src/android/test/ProviderTestCase.java\n\nChange-Id: I1fea36db24e73f91ffdf43b84ff73be55478b53a\n"
    },
    {
      "commit": "1877d0158b529663b8315482e7346a7bcaa96166",
      "tree": "5194b59937b70c2f48366f27a4458d4043957d16",
      "parents": [
        "cd47f11dfad012be1b176ea06904a00da157ed7b"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Thu Mar 04 17:48:13 2010 -0800"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Fri Mar 05 12:08:39 2010 -0800"
      },
      "message": "Add \"call\" method on ContentProvider.\n\nThis permits implementing interfaces which are faster than using\nremote Cursors.  It then uses it for Settings \u0026 SettingProvider, which\ntogether account for ~50% of total ContentProvider event loop stalls\nacross Froyo dogfooders.\n\nFor fetching Settings this looks like it should reduce average\nSettings lookup from 10 ms to 0.4 ms on Sholes, once the\nSettingsProvider serves most gets from in-memory cache.  Currently it\nbrings the Sholes average down from 10ms to 2.5 ms while still using\nSQLite queries on each get.\n"
    },
    {
      "commit": "69120a73d0f7a1862d51e0a95ebd5e507fee8cd2",
      "tree": "32d52fcfaf9b039c80ee29a689101f5337dfc2a6",
      "parents": [
        "59dc9ecec6e4f53a1a2934b08c7f779d2b0a0d9a"
      ],
      "author": {
        "name": "Paul Westbrook",
        "email": "pwestbro@google.com",
        "time": "Fri Feb 26 18:21:15 2010 -0800"
      },
      "committer": {
        "name": "Paul Westbrook",
        "email": "pwestbro@google.com",
        "time": "Fri Feb 26 18:24:29 2010 -0800"
      },
      "message": "Bug 2306842\n\nSince MockAccountManager was passing null to the AccountManager\nconstructor, unit tests where the AccountManager attempts to call\nthe AccountManagerService were crashing.\n\nNow the getAccountsByTypeAndFeatures and blockingGetAuthToken\n(which are the calls that the Gmail unit tests call) call a small\nstub\n\nAt some point, all of the other AccountManager calls should be stubbed\nout\n"
    },
    {
      "commit": "0375fa12c7f94bfc9c840721dcc5215b6c7575d6",
      "tree": "d2723b227d3f01956d2f51279fff63374536c722",
      "parents": [
        "925b4da0975ad98ece8a631040afa55b07cebb36"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Feb 23 12:36:06 2010 -0800"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Feb 23 12:36:06 2010 -0800"
      },
      "message": "fix error in javadoc\n\nThe \"@link LargeTest\" is broken since it doesn\u0027t know where that class is.\n\nChange-Id: Ie15e40bac8a1965427e351926b2208775e79cb13\n"
    },
    {
      "commit": "88e03a97366d08fc69d852cf2219f9d0b1916af4",
      "tree": "99e50be3bfd8a264b6d84133e4e05ea59e2c50ef",
      "parents": [
        "b09cc2cde25d02f668b8bc2115a9479425f48703"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Fri Feb 19 09:57:11 2010 -0800"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Mon Feb 22 18:08:35 2010 -0800"
      },
      "message": "Add ability to run tests restricted to given annotation.\n\nAnd ability to exclude tests with given annotation.\n\nAlso fix class cast compile warning in emma output method.\n\nBug 2239240\n\nChange-Id: I56273a51a8c58a690680bdb612615fab69e6e13f\n"
    },
    {
      "commit": "08d13c3cbb0b250b84ca861edb462060556aead9",
      "tree": "9704cbf808666df16479b4b3a86e7e5c1dfd10e2",
      "parents": [
        "e70f61b1160e953e5e4d18d30a463fa9ba821779"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Thu Feb 18 15:42:13 2010 -0800"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Sat Feb 20 18:38:30 2010 -0800"
      },
      "message": "Fix code coverage output message when running tests in non-raw mode.\n\nBug 2082804\n"
    },
    {
      "commit": "e70f61b1160e953e5e4d18d30a463fa9ba821779",
      "tree": "763d50921749fb256c7e2b656db045ee21277b06",
      "parents": [
        "fda25347b8aaa860e0fdbc972c0f4411c85f8fa3"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Fri Feb 19 10:49:27 2010 -0800"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Sat Feb 20 17:29:05 2010 -0800"
      },
      "message": "Retry test-runner tests move.\n\nThis time change the frameworks makefile so it only includes test-runner/src\nin the public API.\n"
    },
    {
      "commit": "8946dd3355fc1dcbad872c0546e356474d4cc5de",
      "tree": "8b614c938152df8ad809fd9bf03c6876c8a7a58e",
      "parents": [
        "eac461cf7c246df737d2b0e7bd30be176a34c36e"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Feb 19 09:19:34 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Feb 19 14:20:54 2010 -0800"
      },
      "message": "Move package from internal to external and vice versa.\n"
    },
    {
      "commit": "642b7c0f1964389ed0b049df275c7b4daaf35b7a",
      "tree": "0aedd2679bb469a8d491d7c59931dbbef1e741d9",
      "parents": [
        "241379081e046803b7f4cf4f07091b9de49abf31",
        "5b993ce7bc29e43a3215a50ce6ce5d6550d4e5e2"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Tue Feb 16 09:23:51 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 16 09:23:51 2010 -0800"
      },
      "message": "Merge \"Include install location preference when installing packages. Changes include Add new remote call in default container service to determine install location. Rename INSTALL_ON_SDCARD Remove recommentAppInstall method Add some additional flags used in remote stubs. Move check for protected apps prior to copy. Unit tests\""
    },
    {
      "commit": "5b993ce7bc29e43a3215a50ce6ce5d6550d4e5e2",
      "tree": "fc25f9f6adee005c287454a74837f6cbc1a072a0",
      "parents": [
        "70251b1704b9bb81443e7533d365400645dd5eaa"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Feb 12 09:43:29 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Feb 12 18:50:47 2010 -0800"
      },
      "message": "Include install location preference when installing packages.\nChanges include\nAdd new remote call in default container service to determine\ninstall location.\nRename INSTALL_ON_SDCARD\nRemove recommentAppInstall method\nAdd some additional flags used in remote stubs.\nMove check for protected apps prior to copy.\nUnit tests\n\nDefaultContainerService first parses the file uri(if content uri is specified\nit returns a default install internal only value) and returns\na recommended location. Based on which the temporary id is determined\neither a file name or a container id and the file is copied there.\nThis is then later renamed during install.\nTodo\u0027s light weight parsing of package when determining location since we\njust need the install location attribute only when finding out\nrecomended location. This will also enable to move the check for\nupdated system apps(cannot be on sdcard) prior to copying.\n"
    },
    {
      "commit": "90762d35a99e32ed22cdfb1f81252544ee22e30b",
      "tree": "eadc40dab7605e4ccce6493bafc211b1becfb98b",
      "parents": [
        "30e694aea1b7fac450ff3c668094dcfe921e9421"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Thu Feb 11 20:07:17 2010 -0800"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Fri Feb 12 11:09:26 2010 -0800"
      },
      "message": "Modify ActivityInstrumentationTestCase2 to not require hardcoded package name.\n\nDeprecate old constructor.\n\nBug 2440167\n"
    },
    {
      "commit": "470969346d7958f859d97d1a136b4ecc11e2a464",
      "tree": "c9c1ec33c9b3dd2463ffa4b7704cd87e1a12ca9c",
      "parents": [
        "b509065a586d11e6800373d0a57f5296428f2d89"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 11 15:57:09 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 11 20:02:20 2010 -0800"
      },
      "message": "Add APIs for mapping between new and current package names.\n\nThis will allow Market and others to find out what the \"real\" name\nof a package is, when it is currently running under the old name of\na previously installed version.\n"
    },
    {
      "commit": "1048108f1f57c96f746241b36b5181ff6cd0a8ee",
      "tree": "ae207a22753243e8e12cd725d64b4e11ca810653",
      "parents": [
        "575c6710a38f608aca2c25e7784674a47d18a871"
      ],
      "author": {
        "name": "Paul Westbrook",
        "email": "pwestbro@google.com",
        "time": "Thu Feb 11 10:33:12 2010 -0800"
      },
      "committer": {
        "name": "Paul Westbrook",
        "email": "pwestbro@google.com",
        "time": "Thu Feb 11 14:09:10 2010 -0800"
      },
      "message": "Fix some Gmail tests\n\nThe SSLSessionCache attempts to create a directory through the context\nIn MockContext, this throws an UnsupportedOperationExcetion\n\nThis CL changes MockContext2 in ProviderTestCase2 to allow getDir\nto be called, but the directory is named so it will be seperated from\na directory created by a regular context\n"
    },
    {
      "commit": "117818e4f171b1fd9daa05349c48f61388f04567",
      "tree": "2bb350a719caf06727a410ce662c46a28c45fb72",
      "parents": [
        "596ce7fbfe5a81a4270949448c08dcb3a684cc3a"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Tue Feb 09 03:45:40 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Feb 10 08:59:08 2010 -0800"
      },
      "message": "Add new manifest option for install location\nChange recommendAppInstallLocation api\nadd code to parse new attribute.\nDefine flags in PackageInfo\nAdd new settings attributes for enabling setting and value for install location\nSome tests\nThe policy for install location: if explicitly set in manifest as internal only we try to install the app only on internal storage. if set to preferExternal, we try to install it on sdcard if possible. If not we fall back to internal.\nIf the user enables setting SET_INSTALL_LOCATION(which will always\nbe set to false in final release builds) and sets a prefered location, we try\nto honour it.\n"
    }
  ],
  "next": "d03ff94fe58045b5bd1dd783fb98026778a4265d"
}
