)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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": "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"
    },
    {
      "commit": "d03ff94fe58045b5bd1dd783fb98026778a4265d",
      "tree": "c35d201ab498f23f075f1c48ce4ce3ce55e9f2e4",
      "parents": [
        "ca35953c9064114cb09181e8bffddb2f7c2d8d53"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Feb 09 08:46:14 2010 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Feb 10 09:41:25 2010 -0500"
      },
      "message": "Clean up interface between LocationManagerService and the location providers:\n\nLocationManagerService now uses new Java interface LocationProviderInterface\nrather than LocationProviderProxy to refer to location providers internally.\n\nLocationProviderProxy and the ILocationProvider binder interface are only\nused for location providers implemented as services (NetworkLocationProvider)\n\nBuilt-in location providers (GpsLocationProvider and mock providers) now just\nimplement LocationProviderInterface rather than using a Binder interface and proxy object.\n\nDelete obsolete and unused TestLocationProvider class.\n\nChange-Id: Id800e7c1864f7c666f8e37125c05896493b9c8c4\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "e83cefcef07f9ac025642c1ffec76b4c7ab39cf2",
      "tree": "130696ee2a90150129c3ee98544c5814528c90f9",
      "parents": [
        "72e5a8820a996c547eacea534b11b6b8f6eca83b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 04 17:38:14 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 09 14:20:55 2010 -0800"
      },
      "message": "New external storage APIs.\n\nThis implements the spec for external storage organization, and\nproperly reflects how the media scanner organizes the files it finds.\n\nAlso includes package manager support for removing app private\nfiles from external storage when the application is uninstalled.\n\nFor the new APIs and paths, the main place to look is Environment\nand Context.\n"
    },
    {
      "commit": "53bd2522ca7767f46646606123b6e2689b811850",
      "tree": "40a43c4d19ee0c6af8443878e3e889307f33652a",
      "parents": [
        "9be54d400d68c735013bc8069fbcb66c3f98c3ee"
      ],
      "author": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Fri Feb 05 15:28:12 2010 -0800"
      },
      "committer": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Mon Feb 08 16:54:43 2010 -0800"
      },
      "message": "- change the SyncManager to retry MANUAL syncs that encounter a soft error\n- make the sync dump handle the case where there are no accounts\n- fix a bug that caused the SyncManager to burn up CPU in the system process\n\nThe following was implemented:\n\nscheduler offers:\n - settings to disable sync\n - retries of certain errors\n - backoffs\n\nwant a way to control these when scheduling a sync\n - \"ignore_settings\"\n - \"ignore initial backoff\"\n - \"manual\" : ignore settings, ignore initial backoff\n - \"do not retry\"\n\n- need to change the default behavior of not retrying manual syncs to retry regardless\n"
    },
    {
      "commit": "5d36c46d2d8fb3f1bdc8fd1ff407e14b4433272a",
      "tree": "7c38ac85045aca12f67b4428ff07ec384506cf7d",
      "parents": [
        "7406e53c4c152267bff799b0bb5d7edb6ece404f",
        "ad9bcb22d05fbf130ac64254abd51a137e9a3d3f"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Feb 08 09:17:10 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 08 09:17:10 2010 -0800"
      },
      "message": "am ad9bcb22: merge from open-source master\n\nMerge commit \u0027ad9bcb22d05fbf130ac64254abd51a137e9a3d3f\u0027\n\n* commit \u0027ad9bcb22d05fbf130ac64254abd51a137e9a3d3f\u0027:\n  Fix x coordinate of the ACTION_UP event in TouchUtils.drag() method\n  Fixed Android animation framework, for using interpolators that do not start at 0.0f\n  Fix for GPS engines without separate session and engine status events.\n  Be tolerant of GPS session and engine on status messages arriving out of order.\n  GpsLocationProvider: Do not release wakelock until the GPS engine is fully off\n"
    },
    {
      "commit": "ad9bcb22d05fbf130ac64254abd51a137e9a3d3f",
      "tree": "51ef94ac11b8822b27b06da4669375863ece12b8",
      "parents": [
        "0af0449301e72a52beeed8f26021e5460004d67a",
        "7d039fbe07687c9046b23b9a3735fe8f95906dde"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Feb 05 13:55:16 2010 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Feb 05 13:55:16 2010 -0800"
      },
      "message": "merge from open-source master\n"
    },
    {
      "commit": "8621cfa43fd12b5ad1376eb1a2454729ce9d9c7e",
      "tree": "dcde40e85df9636b32731ebd31410460be535d90",
      "parents": [
        "8ab11f87acf01b830ad0db46ec549406b33c39de"
      ],
      "author": {
        "name": "Marc Capdevielle",
        "email": "marc.capdevielle@gmail.com",
        "time": "Fri Feb 05 19:28:23 2010 +0100"
      },
      "committer": {
        "name": "Marc Capdevielle",
        "email": "marc.capdevielle@gmail.com",
        "time": "Fri Feb 05 19:28:23 2010 +0100"
      },
      "message": "Fix x coordinate of the ACTION_UP event in TouchUtils.drag() method\n\nThe ACTION_UP event was fired at the \"fromX\" position instead of being\nfired at the \"toX\" position which is the current value of local var \"x\".\n\nThis bug had no real impact as the VelocityTracker always ignores the last\nMotionEvent when it received more than 3 events...\n"
    },
    {
      "commit": "539d3c475f44b1499499a8b70375a192545cf113",
      "tree": "3e8b872798f665bd161ad83f23f4cf47e971f088",
      "parents": [
        "239d5b3638ae486f715f44a8c1a71420f486049c"
      ],
      "author": {
        "name": "Oscar Montemayor",
        "email": "oam@google.com",
        "time": "Fri Jan 29 15:27:00 2010 -0800"
      },
      "committer": {
        "name": "Oscar Montemayor",
        "email": "oam@google.com",
        "time": "Fri Jan 29 15:28:42 2010 -0800"
      },
      "message": "Apps on SD card project.\nRefactored recommendAppInstallLocation(..) method in PackageManager by making it an instance method.\nSince PackageManager has only abstarct instance methods, moved implementation to ApplicationContext.ApplicationPackageManager class, in line with the rest of the method\nimplementations. Tah way, chage is consistent with best coding practices.\nAlso MockPackageManager received the additional method.\n"
    },
    {
      "commit": "717f0eb34b67639b33a17b215dbfd81402ba8feb",
      "tree": "9f0d319e74ee3b7826997e091bb465aee2228b35",
      "parents": [
        "f99e2e042dbec5eba997eb0ac5e00d5fa23f7840"
      ],
      "author": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Wed Dec 09 16:00:48 2009 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Dec 10 10:45:22 2009 -0800"
      },
      "message": "am 029074ff: fix build\n\nMerge commit \u0027029074ff0fca198676997c7453cfffa932361081\u0027 into eclair-mr2-plus-aosp\n\n* commit \u0027029074ff0fca198676997c7453cfffa932361081\u0027:\n  fix build\n"
    },
    {
      "commit": "f99e2e042dbec5eba997eb0ac5e00d5fa23f7840",
      "tree": "63f1f5b579f71c9aa3fe949ac0e89a596d21c8d1",
      "parents": [
        "2ec6c5699181316e5a5c2cd293c006ac4a8bb101"
      ],
      "author": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Wed Dec 09 16:00:40 2009 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Dec 10 10:43:58 2009 -0800"
      },
      "message": "am 563bfade: fix a build breakage\n\nMerge commit \u0027563bfade6601f3410681b3cd8b069ed22af5b048\u0027 into eclair-mr2-plus-aosp\n\n* commit \u0027563bfade6601f3410681b3cd8b069ed22af5b048\u0027:\n  fix a build breakage\n"
    },
    {
      "commit": "8ad6ec2eb4a58a6dad34be60d49f32a53f2419f4",
      "tree": "162f049f3b4a8e541a39ec546cd9c94b85d815c1",
      "parents": [
        "cdeed7887323048cc42e9c62f3205340a91b97bc",
        "8280c2b15f6875b2d387c05df23d264864eb9cd5"
      ],
      "author": {
        "name": "Daisuke Miyakawa",
        "email": "dmiyakawa@google.com",
        "time": "Fri Dec 04 00:53:53 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 04 00:53:53 2009 -0800"
      },
      "message": "am 8280c2b1: Implement new MockContentProvider. Also make ContentProvider aware of the class.\n\nMerge commit \u00278280c2b15f6875b2d387c05df23d264864eb9cd5\u0027 into eclair-mr2-plus-aosp\n\n* commit \u00278280c2b15f6875b2d387c05df23d264864eb9cd5\u0027:\n  Implement new MockContentProvider. Also make ContentProvider aware of the class.\n"
    },
    {
      "commit": "8280c2b15f6875b2d387c05df23d264864eb9cd5",
      "tree": "509308daa0d9bd8807182788068c74bf3be8627c",
      "parents": [
        "3077f7df2eaf4127438d4337a9a25766261b02ee"
      ],
      "author": {
        "name": "Daisuke Miyakawa",
        "email": "dmiyakawa@google.com",
        "time": "Thu Oct 22 08:36:42 2009 +0900"
      },
      "committer": {
        "name": "Daisuke Miyakawa",
        "email": "dmiyakawa@google.com",
        "time": "Fri Dec 04 17:48:44 2009 +0900"
      },
      "message": "Implement new MockContentProvider. Also make ContentProvider aware of the class.\n\nRename the old MockContentProvider to MockIContentProvider since it is\nmore appropriate name.\n\nDetail:\nCurrent developers inevitably depend on the backend used by ContentProvider,\nwhich is useful but not ideal nor \"testable\" from the view of them.\n\nCurrent MockContentResolver only accepts exact \"ContentProvider\" class, not\nIContentProvider interface, since we want to hide \"IContentProvider\" while\nthe old MockContentProvider implements IContentProvider and as a result some\nmethods we want to hide may be exposed to the public SDK now and probably\nfor the future.\n\nOn the other hand, ContentProvider is not interface but an exact class\nheavily depends on the internal logic and not suitable for external\ndevelopers to use for tests.\n\nThe new MockContentProvider introduces the mock implementation\nfor ContentProvider.\nIt extends ContentProvider, so \"is\" ContentProvider, but tries to avoid\ndepending on any backend System like IPC in Android, etc.\nThis should be useful from the view of application developers who do not\nwant to be confused with ContentProvider/ContentResolver backend\nimplementation \"at all\" and want to use MockContentResolver without\nany other ContentProvider implementations tightly connected to the\nexternal worlds.\n"
    },
    {
      "commit": "e5fa335b0dffbd06385b6de05ae04b2bd2ea277e",
      "tree": "5a8c806e05118bf1cc5b85c4a7316dd679d8e2f8",
      "parents": [
        "af3e233fe3222990440433d5f90a6a310d0170e3",
        "6e045e0aa1b465e9e989d3058a5d2fa13dcf026b"
      ],
      "author": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Mon Nov 16 15:29:15 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 16 15:29:15 2009 -0800"
      },
      "message": "am 6e045e0a: am e0cadd7c: Merge change Iffbb6e55 into eclair\n\nMerge commit \u00276e045e0aa1b465e9e989d3058a5d2fa13dcf026b\u0027 into eclair-mr2-plus-aosp\n\n* commit \u00276e045e0aa1b465e9e989d3058a5d2fa13dcf026b\u0027:\n  Make perf metrics collection \u0026 output via instrumentation simpler\n"
    },
    {
      "commit": "6e045e0aa1b465e9e989d3058a5d2fa13dcf026b",
      "tree": "555ec16a12b43ea7027cf0f22226221c1fe133e9",
      "parents": [
        "fc36afcba6e65f2e0816b1af08255b9ccafb17a6",
        "e0cadd7cd811a674df62279dec00d17678b2c501"
      ],
      "author": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Mon Nov 16 15:25:06 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 16 15:25:06 2009 -0800"
      },
      "message": "am e0cadd7c: Merge change Iffbb6e55 into eclair\n\nMerge commit \u0027e0cadd7cd811a674df62279dec00d17678b2c501\u0027 into eclair-mr2\n\n* commit \u0027e0cadd7cd811a674df62279dec00d17678b2c501\u0027:\n  Make perf metrics collection \u0026 output via instrumentation simpler\n"
    },
    {
      "commit": "2c13b9d155e3beed801dc472ee44a67cc94edbb2",
      "tree": "d71b0e80dbaa13966717900e58f5cdfdb5c14bfe",
      "parents": [
        "a4008606a2c006c7e1ab1c064d935c45da20c07a",
        "e0cadd7cd811a674df62279dec00d17678b2c501"
      ],
      "author": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Mon Nov 16 15:25:01 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 16 15:25:01 2009 -0800"
      },
      "message": "am e0cadd7c: Merge change Iffbb6e55 into eclair\n\nMerge commit \u0027e0cadd7cd811a674df62279dec00d17678b2c501\u0027 into eclair-plus-aosp\n\n* commit \u0027e0cadd7cd811a674df62279dec00d17678b2c501\u0027:\n  Make perf metrics collection \u0026 output via instrumentation simpler\n"
    },
    {
      "commit": "478de466ce0504b9af639c3338b883893670a8e8",
      "tree": "61aba455baf06a4821a65b82d1115929619b49bd",
      "parents": [
        "2b63ff51d5202eb2b458e937d4b65b326238733e",
        "9db3d07b9620b4269ab33f78604a36327e536ce1"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Nov 15 12:06:20 2009 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Nov 15 12:06:23 2009 -0800"
      },
      "message": "merge from eclair\n"
    },
    {
      "commit": "9db3d07b9620b4269ab33f78604a36327e536ce1",
      "tree": "41e294f34b9695187af098cd42167489fb0c8fb0",
      "parents": [
        "6c63ee4fc4acae4bbbbd2a49e0a68206221f0de0"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Nov 12 18:45:53 2009 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Nov 13 13:53:39 2009 -0800"
      },
      "message": "eclair snapshot\n"
    },
    {
      "commit": "4f414bd7a76fc7ff063db70d1cdd09303c28cbe5",
      "tree": "9c05d4e13d3325b1c85ac5bf54914aace7f0e9ea",
      "parents": [
        "075997f12e2fb2b646172a92926be0f26f739099"
      ],
      "author": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Fri Nov 06 20:53:47 2009 -0800"
      },
      "committer": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Tue Nov 10 19:26:14 2009 -0800"
      },
      "message": "Make perf metrics collection \u0026 output via instrumentation simpler\n\n- Added includeDetailedStats metadata to TimedTest for collecting additional\n  metrics like memory usage and binder transactions\n- Added PerformanceCollectorTestCase interface for hard-typing test class as\n  performance test while still able to inherit from instrumenation test classes\n- Reverted previous changes to PerformanceTestBase, will deprecate\n  PerformanceTestBase/Case in a future CL\n- Removed \u0027performance.\u0027 prefix from keys written to instrumentation output\n"
    },
    {
      "commit": "af93c05c9a25018daf375094c8e697b83795b2d4",
      "tree": "88aa0da26ce8ba7a54ecb398fc772aa68529cc67",
      "parents": [
        "78383abf76e7daf8c1968d2e9a29a1ba354edb2e",
        "227ba2072df1474a0b3abaae7c415f152d32bcc2"
      ],
      "author": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Fri Oct 30 18:41:08 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 30 18:41:08 2009 -0700"
      },
      "message": "am 227ba207: am e8228afb: Merge change I92cdc5ed into eclair\n\nMerge commit \u0027227ba2072df1474a0b3abaae7c415f152d32bcc2\u0027 into eclair-mr2-plus-aosp\n\n* commit \u0027227ba2072df1474a0b3abaae7c415f152d32bcc2\u0027:\n  PerformanceCollector: Collect \u0026 report perf measurements in key/value form\n"
    },
    {
      "commit": "227ba2072df1474a0b3abaae7c415f152d32bcc2",
      "tree": "70312f7e89f69d5ae9d6128c25e2237863ffe512",
      "parents": [
        "cbf583d7229aaff65734b4234e81db8ead864761",
        "e8228afb2bd005ae25ce58719f9d678389b26a16"
      ],
      "author": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Fri Oct 30 17:07:56 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 30 17:07:56 2009 -0700"
      },
      "message": "am e8228afb: Merge change I92cdc5ed into eclair\n\nMerge commit \u0027e8228afb2bd005ae25ce58719f9d678389b26a16\u0027 into eclair-mr2\n\n* commit \u0027e8228afb2bd005ae25ce58719f9d678389b26a16\u0027:\n  PerformanceCollector: Collect \u0026 report perf measurements in key/value form\n"
    },
    {
      "commit": "1d225d67d94049151fef90bc431dcd5def9e948a",
      "tree": "9547eab544673284fa10f27ca1000ace7fa7869a",
      "parents": [
        "0fc2131aa2a164288adcc6f3ec9e0fe88494fd93",
        "e8228afb2bd005ae25ce58719f9d678389b26a16"
      ],
      "author": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Fri Oct 30 17:07:21 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 30 17:07:21 2009 -0700"
      },
      "message": "am e8228afb: Merge change I92cdc5ed into eclair\n\nMerge commit \u0027e8228afb2bd005ae25ce58719f9d678389b26a16\u0027 into eclair-plus-aosp\n\n* commit \u0027e8228afb2bd005ae25ce58719f9d678389b26a16\u0027:\n  PerformanceCollector: Collect \u0026 report perf measurements in key/value form\n"
    },
    {
      "commit": "075997f12e2fb2b646172a92926be0f26f739099",
      "tree": "80752d7d775d710f8be21f405a0f0979b67e110f",
      "parents": [
        "59625fa86ad0e520931361aba120e2d868f01618"
      ],
      "author": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Tue Oct 27 22:01:09 2009 -0700"
      },
      "committer": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Wed Oct 28 14:32:05 2009 -0700"
      },
      "message": "PerformanceCollector: Collect \u0026 report perf measurements in key/value form\n\n- Added new functions to PerformanceCollector and PerformanceResultsWriter\n- Modified unit tests to test new functionality and fix flakiness reported in\n  2218327 and 2118268\n- Added PerformanceCollectorTest to small suite\n"
    },
    {
      "commit": "ae27c576643a821d78ef330a5e1834c42d2cc94a",
      "tree": "e792eaef7bc190563c13e85d8b7e32237d69e341",
      "parents": [
        "917d0aece5c9395892c3a8e7191f04a1e2ca6330",
        "54616f3435e67029006d2f77462c61ed0635a3f6"
      ],
      "author": {
        "name": "Daisuke Miyakawa",
        "email": "dmiyakawa@google.com",
        "time": "Wed Oct 21 16:10:24 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 21 16:10:24 2009 -0700"
      },
      "message": "am 54616f34: Make MockCursor class a part of public SDK.\n\nMerge commit \u002754616f3435e67029006d2f77462c61ed0635a3f6\u0027 into eclair-mr2-plus-aosp\n\n* commit \u002754616f3435e67029006d2f77462c61ed0635a3f6\u0027:\n  Make MockCursor class a part of public SDK.\n"
    },
    {
      "commit": "54616f3435e67029006d2f77462c61ed0635a3f6",
      "tree": "98327501bedd8882c3422050c122d0007d312135",
      "parents": [
        "bfd5b38673212c47f0e386c0a8370d4ff47bd2fe"
      ],
      "author": {
        "name": "Daisuke Miyakawa",
        "email": "dmiyakawa@google.com",
        "time": "Thu Oct 15 14:57:55 2009 -0700"
      },
      "committer": {
        "name": "Daisuke Miyakawa",
        "email": "dmiyakawa@google.com",
        "time": "Thu Oct 22 07:25:02 2009 +0900"
      },
      "message": "Make MockCursor class a part of public SDK.\n\nWith this class, external developers will be able to reduce their\nredundant work related to testing around ContentProvider/ContentResolver.\n\nInternal Issue number: 2181010\n"
    },
    {
      "commit": "a4f6c96f1acb4f0e7aaa233c2a5b884aaac2f573",
      "tree": "d7221d613fb582bf9b5541afcd25aaa1f6e9814e",
      "parents": [
        "935c3eb25b0c98fa18bad36c1f21f10b296f9387",
        "348b92bd513087369ac682e29620d7829fa1381b"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Oct 08 15:10:25 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 08 15:10:25 2009 -0700"
      },
      "message": "am 348b92bd: Merge change Iee227ace into eclair\n\nMerge commit \u0027348b92bd513087369ac682e29620d7829fa1381b\u0027 into eclair-plus-aosp\n\n* commit \u0027348b92bd513087369ac682e29620d7829fa1381b\u0027:\n  GPS: Fix problem with SUPL when SUPL APN is already active.\n"
    },
    {
      "commit": "03d246779ea65fc2bd10d0b4f32620f45211133a",
      "tree": "c0bba5558070d24e11c324af60f716f580229703",
      "parents": [
        "9d5b58991ef90e91b3c942c80ae3502ed62d10aa"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Oct 08 15:45:03 2009 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Oct 08 17:24:21 2009 -0400"
      },
      "message": "GPS: Fix problem with SUPL when SUPL APN is already active.\n\nUse ConnectivityManager.CONNECTIVITY_ACTION broadcast in LocationManagerService\nto notify GPS when SUPL connection is ready instead of TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED,\nwhich is not sent in all cases.\nExpand LocationProvider.updateNetworkState() to include NetworkInfo object.\n\nFixes bug b/2155661\n\nChange-Id: Iee227ace7d536b36cf7973e3e6a8b7a621ce6565\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "6c0af3b2453ae25fb08fda966c4701b37a86960d",
      "tree": "bb138ee700cabf14989f0eb03c3c3b4b12192906",
      "parents": [
        "1d16200eefd1ce9d47fde70625fc3f4812c0d361",
        "5bba632d877c2878384ff21566c8eb6a1a22f37b"
      ],
      "author": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Wed Oct 07 11:55:10 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 07 11:55:10 2009 -0700"
      },
      "message": "am 5bba632d: - hide Entity and all its references - remove updateEntity and insertEntity, since they are not   used - add the RawContacts.Entity class, which is used in lieu of the   android.content.Entity\n\nMerge commit \u00275bba632d877c2878384ff21566c8eb6a1a22f37b\u0027 into eclair-plus-aosp\n\n* commit \u00275bba632d877c2878384ff21566c8eb6a1a22f37b\u0027:\n  - hide Entity and all its references\n"
    },
    {
      "commit": "1eeca9291050ef0acc54e8abdedc065fb6be13fc",
      "tree": "7b1fdf46246cd3b065d91ee56c931ab269753a38",
      "parents": [
        "031e4ac7dd0405e16664d2ec5311d2e96221ce23",
        "f7ae77cd67f1a3993b8e56c1af4720a7adf4e69d"
      ],
      "author": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Wed Oct 07 11:46:24 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 07 11:46:24 2009 -0700"
      },
      "message": "am f7ae77cd: account manager api review changes\n\nMerge commit \u0027f7ae77cd67f1a3993b8e56c1af4720a7adf4e69d\u0027 into eclair-plus-aosp\n\n* commit \u0027f7ae77cd67f1a3993b8e56c1af4720a7adf4e69d\u0027:\n  account manager api review changes\n"
    },
    {
      "commit": "5bba632d877c2878384ff21566c8eb6a1a22f37b",
      "tree": "e8bd6afd4bb1df723420de4a6e7f17ab3a253427",
      "parents": [
        "5163cd6d1cb664977eb4473b98657c7e92ae430e"
      ],
      "author": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Mon Oct 05 14:21:12 2009 -0700"
      },
      "committer": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Tue Oct 06 11:51:19 2009 -0700"
      },
      "message": "- hide Entity and all its references\n- remove updateEntity and insertEntity, since they are not\n  used\n- add the RawContacts.Entity class, which is used in lieu of the\n  android.content.Entity\n"
    },
    {
      "commit": "f7ae77cd67f1a3993b8e56c1af4720a7adf4e69d",
      "tree": "b08af808ac180e30716166a7c41dbf052246b727",
      "parents": [
        "48e6725c828a8d420d43925b0c9a9a915a8c4e2f"
      ],
      "author": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Fri Oct 02 17:19:31 2009 -0700"
      },
      "committer": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Mon Oct 05 11:19:49 2009 -0700"
      },
      "message": "account manager api review changes\n"
    },
    {
      "commit": "264f9b4530d6ecbd9e9d02cf5c61c7b19f4c6376",
      "tree": "b717af1949faca40739282bb18d2df17d8fd0a18",
      "parents": [
        "90183823b00ad5ce04948cf03d827a47c82ca445",
        "3348f14b3d46b172a5b557f81aac526b7e8bf5fb"
      ],
      "author": {
        "name": "Costin Manolache",
        "email": "costin@google.com",
        "time": "Tue Sep 29 22:58:53 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 29 22:58:53 2009 -0700"
      },
      "message": "am 3348f14b: Remove GAIA string\n\nMerge commit \u00273348f14b3d46b172a5b557f81aac526b7e8bf5fb\u0027 into eclair-plus-aosp\n\n* commit \u00273348f14b3d46b172a5b557f81aac526b7e8bf5fb\u0027:\n  Remove GAIA string\n"
    },
    {
      "commit": "3348f14b3d46b172a5b557f81aac526b7e8bf5fb",
      "tree": "af66a1968163d529addff9c15b776102a3ecf91a",
      "parents": [
        "b4ee8349cc7e64a264335ee2dfecc00980eca07a"
      ],
      "author": {
        "name": "Costin Manolache",
        "email": "costin@google.com",
        "time": "Tue Sep 29 18:58:36 2009 -0700"
      },
      "committer": {
        "name": "Costin Manolache",
        "email": "costin@google.com",
        "time": "Tue Sep 29 22:52:05 2009 -0700"
      },
      "message": "Remove GAIA string\n"
    },
    {
      "commit": "bc21ba2410233b40b21a190b26285a791ac5cc58",
      "tree": "6d4977afd686b413e784571495da1bb2da5da773",
      "parents": [
        "c321ab992d526cde098986d512ce4a051c486607",
        "093f581090d8cf98f5877746d924107f7695dd8b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Sep 26 17:06:41 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Sep 26 17:06:41 2009 -0700"
      },
      "message": "am 093f5810: Merge change 27238 into eclair\n\nMerge commit \u0027093f581090d8cf98f5877746d924107f7695dd8b\u0027 into eclair-plus-aosp\n\n* commit \u0027093f581090d8cf98f5877746d924107f7695dd8b\u0027:\n  The touch screen is probably a feature.\n"
    },
    {
      "commit": "039c68e75606e837cf021815a0210836724574ad",
      "tree": "c65d4f12f6401a113421e3d6b59601da3d7ea97d",
      "parents": [
        "075a18d607c3aa8386b4d06aea22f4bfacbe447b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Sep 26 16:39:23 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Sep 26 16:39:23 2009 -0700"
      },
      "message": "The touch screen is probably a feature.\n\nAlso extend the feature APIs a bit.\n\nChange-Id: I99e932d7f4e61edb0e20f75c55e9831e4b59a14d\n"
    },
    {
      "commit": "b7b083090f7312f83453e3f3c2e40a91644a3059",
      "tree": "3b8dbe781aa0ef2aaa5c4b7a718995047abab612",
      "parents": [
        "480a353f589035b62a81e2981cfba325ad1264f2",
        "a382cb81187437aa389dc131687e181ceaefa8ba"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Sep 19 12:29:56 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Sep 19 12:29:56 2009 -0700"
      },
      "message": "am a382cb81: Merge change 25929 into eclair\n\nMerge commit \u0027a382cb81187437aa389dc131687e181ceaefa8ba\u0027 into eclair-plus-aosp\n\n* commit \u0027a382cb81187437aa389dc131687e181ceaefa8ba\u0027:\n  Add API to send an ordered sticky broadcast.\n"
    },
    {
      "commit": "efa199f016985b0a9d0471e42c803ee9f7941f0e",
      "tree": "0320870eeb2ca842a3729eb0f72220037ea89f82",
      "parents": [
        "338c48554f35dbee3faa4e39525a972f20a7c32d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Sep 19 12:03:15 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Sep 19 12:05:25 2009 -0700"
      },
      "message": "Add API to send an ordered sticky broadcast.\n\nChange-Id: Ida7081204e226db0cd07ff618c08e308a909ec0c\n"
    },
    {
      "commit": "1f3914b7f2f3c233da8b643c426c0ffd42f32f87",
      "tree": "85f6c8bc024bb8dd9166d3aed508049529e98160",
      "parents": [
        "fb4ef8fd2e046d022f0e3eb550094be28b048b44",
        "fa82f22f1d8c4c828bdf9b670006be4f4fec772e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 17 18:13:26 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 17 18:13:26 2009 -0700"
      },
      "message": "am fa82f22f: Fix issue #2093608: Calendar widget takes a few seconds to launch\n\nMerge commit \u0027fa82f22f1d8c4c828bdf9b670006be4f4fec772e\u0027 into eclair-plus-aosp\n\n* commit \u0027fa82f22f1d8c4c828bdf9b670006be4f4fec772e\u0027:\n  Fix issue #2093608: Calendar widget takes a few seconds to launch\n"
    },
    {
      "commit": "fa82f22f1d8c4c828bdf9b670006be4f4fec772e",
      "tree": "586dbd1bf9cbefe26cfecd6cf853b78eb6a4fb64",
      "parents": [
        "9b64ef133c1eb24c8d00aa7e46ec86c544af5fe2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 17 15:14:12 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 17 18:01:35 2009 -0700"
      },
      "message": "Fix issue #2093608: Calendar widget takes a few seconds to launch\n\nAvert your eyes!\n\nThe key change here is that RemoteViews can now call a Context API to\nstart its pending intent, which inside of the activity manager we can\nuse to determine to cancel the timeout delay for external entities\nto disrupt the home screen.\n\nChange-Id: If097cf7478cbed7a3c04a304050bd7fd5703d197\n"
    },
    {
      "commit": "e525eef4b8e284ac8eb023bd0df4eeed37916d4b",
      "tree": "565020de633597ec0e49429478918b1c27b47d22",
      "parents": [
        "ea8844811d1b0965f5c2f43006c0a08bcd73f23a",
        "62e73f466e52b98ecc2eef85010618a655b40924"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Sep 16 16:22:13 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Sep 16 16:22:13 2009 -0700"
      },
      "message": "merge from open-source master\n"
    },
    {
      "commit": "2419fa842b5c940de23c9f22a52282554ded1217",
      "tree": "883a4989a2c98a6ab5772c22c7cd7506017fa107",
      "parents": [
        "fc01794f33057862a361a0d0113630c58befc21b",
        "ae5d46fddf39e784427a9c344a782001dd6f195c"
      ],
      "author": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Tue Sep 15 13:14:58 2009 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Tue Sep 15 13:14:58 2009 -0700"
      },
      "message": "Merge change 10326\n\n* changes:\n  Javadoc used startApplication() which doesnt exists, changed to createApplication()\n"
    },
    {
      "commit": "ff1df69dd4835c177c724e1b5f1ba02d1f674047",
      "tree": "6112d867f442b998d4ecca304c015bb17cbe74fe",
      "parents": [
        "38eeac305a188b7ea4f586071c1d467c3f952be6"
      ],
      "author": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Wed Aug 26 17:19:13 2009 -0700"
      },
      "committer": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Fri Sep 11 17:15:15 2009 -0700"
      },
      "message": "Performance measurement framework:\n\n+ For bug 1810508\n  - Added PerformanceCollector class to collect runtime and memory usage data\n    * Moved performance snapshotting from Intrumentation to PerformanceCollector\n  - Added PerformanceResultsWriter interface which defines functions for\n    reporting performance data\n\n+ Framework integration\n  - Added TimedTest annotation to automatically time tests and write results\n    to instrumentation output\n  - Modified PerformanceTestBase to add collection hooks and wrapper methods\n  - Modified WatcherResultPrinter in InstrumentationTestRunner to implement\n    PerformanceResultsWriter for instrumentation output of performance data\n  - Modified InstrumentationTestRunner and AndroidTestRunner to pass writer\n    instance to test\n"
    },
    {
      "commit": "904de61465abff8dba6fcc768d6bf5586f86ed0f",
      "tree": "ea64e3f181c5c8f968c1fdbd3f1de5a7e0ff53fb",
      "parents": [
        "ea6fca8231c94064917e40dea23be8df50930cf9"
      ],
      "author": {
        "name": "Cynthia Wong",
        "email": "cynthiaw@google.com",
        "time": "Thu Sep 03 10:06:55 2009 -0700"
      },
      "committer": {
        "name": "Cynthia Wong",
        "email": "cynthiaw@google.com",
        "time": "Thu Sep 03 10:06:55 2009 -0700"
      },
      "message": "Override getAccounts to return an empty AccountSet in MockAccountManager. This used to throw an NPE instead since IAccountManagerService is set to NULL.\n"
    },
    {
      "commit": "49237345d83e62fdb9eb8d50b13ad086636a04fa",
      "tree": "224ca2d134177a09184c1440f4fceac13a10b627",
      "parents": [
        "5511c66955d96019ee62ac334d73e4d2bcda178b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 27 20:08:01 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 27 21:51:00 2009 -0700"
      },
      "message": "Add platform infrastructure for features.\n\nThis introduces a new mechanism to define features associated with\na platform, query the current device for the available features,\nand enforce that apps requiring features that aren\u0027t available can\u0027t\nbe installed.\n\nAlso now allows uses-library to specify that a library is optional,\nso the lack of such a library will not prevent the app from being\ninstalled (but if it does exist it will be correctly linked into\nthe app).\n\nChange-Id: I5b369b46cfa0b3d37c9e08fd14ef1098a978e67b\n"
    },
    {
      "commit": "7aba54b2edcb94f43c991c555b23fc1de364835e",
      "tree": "236e10de49ded0f19999f0669ebc66d5273c19c7",
      "parents": [
        "617b22dc075bbf704421adf15f39388ec098b4fd"
      ],
      "author": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Thu Aug 20 19:20:54 2009 -0700"
      },
      "committer": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Tue Aug 25 12:44:56 2009 -0700"
      },
      "message": "Fix bug 1546445: Correct spelling errors in API\n- InstrumentationTestCase.injectInsrumentation\n- AndroidTestRunner.setInstrumentaiton\n"
    },
    {
      "commit": "4a51c20ce607c74914f90fd897f04080121ac13b",
      "tree": "067caf43aa752a8952061d7d8e03fb1aeb77c96e",
      "parents": [
        "cf3a08307d1599eaa91d7cc4e7c601e5fa13037f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 21 15:14:02 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 24 17:37:32 2009 -0700"
      },
      "message": "I am getting tired of the java doc warnings, so fix them.\n\nChange-Id: I2205eebae419eaf4a0992c9f5b7cd807eb843fe1\n"
    },
    {
      "commit": "a8db0a4ff6689f9f00dea6af44e65aa32a8546e1",
      "tree": "92e643ab6dd74bd2cd771407d99c2429e09948f3",
      "parents": [
        "0ef135d5c79ff5b443b43f8743250044700a8bb5"
      ],
      "author": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Mon Aug 17 14:19:52 2009 -0700"
      },
      "committer": {
        "name": "Jack Wang",
        "email": "jackwang@google.com",
        "time": "Mon Aug 17 14:19:52 2009 -0700"
      },
      "message": "Fix bug 2056252: android.test.AndroidTestRunnerTest:testRunTestWithNullListener is failing\n- Verify mInstrumentation is not null before calling getContext()\n"
    },
    {
      "commit": "766cbfe44be3c5013a6a22bd6cd8ad1055a37256",
      "tree": "6421896684d28f3483fd60de185ed8dc63d4aa44",
      "parents": [
        "2cd0a5c6aab3089b5b7edeeae808405b077d13cd"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 12 18:33:39 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 12 21:40:05 2009 -0700"
      },
      "message": "Add new API to compare certs of two UIDs.\n"
    },
    {
      "commit": "ac1e59d887651220f5367cc7fa4207b34eab774d",
      "tree": "971ee29f4bceffd00248b4aa17a7413078e4f14d",
      "parents": [
        "5c1207be90fdf296c1b83034b7c68915e1749284"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Aug 11 13:12:34 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Aug 11 13:12:34 2009 -0700"
      },
      "message": "donut snapshot\n"
    },
    {
      "commit": "44a29dd097350e3050e44a2f64aa4c75d26ec695",
      "tree": "ede70810414746e53136a938e7c3395f571f089a",
      "parents": [
        "f6d1a5528ee626487c78f17501d61e61bbe26b10"
      ],
      "author": {
        "name": "Dmitri Plotnikov",
        "email": "dplotnikov@google.com",
        "time": "Mon Aug 03 14:27:20 2009 -0700"
      },
      "committer": {
        "name": "Dmitri Plotnikov",
        "email": "dplotnikov@google.com",
        "time": "Mon Aug 03 14:27:20 2009 -0700"
      },
      "message": "Adding \"test context\" to AndroidTestCase\n"
    },
    {
      "commit": "5c1207be90fdf296c1b83034b7c68915e1749284",
      "tree": "e5679f6183458d8179821d5615dabafcb959704d",
      "parents": [
        "a8675f67e33bc7337d148358783b0fd138b501ff"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 31 17:38:20 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 31 17:38:20 2009 -0700"
      },
      "message": "donut snapshot\n"
    },
    {
      "commit": "bfefdcda94e056f6dee68debefb35ce9e7cd03b7",
      "tree": "bbd7b777cd8b1f62aafed27a00e60bcc2440295f",
      "parents": [
        "3eb434487825b7ced55527dc50dd3957dfe187b6",
        "04cc0e121f0f9fb236150be5e9afa1b8d0105026"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 28 17:42:53 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 28 17:42:53 2009 -0700"
      },
      "message": "Merge change 8886\n\n* changes:\n  Fix broken calendar tests.\n"
    },
    {
      "commit": "04cc0e121f0f9fb236150be5e9afa1b8d0105026",
      "tree": "58774e68ee417c11a73d192afd8e1cd6c57c2d50",
      "parents": [
        "27700ef16b9058a3cfa4010a18d843888ef4b07d"
      ],
      "author": {
        "name": "Ken Shirriff",
        "email": "kens@google.com",
        "time": "Tue Jul 28 16:15:38 2009 -0700"
      },
      "committer": {
        "name": "Ken Shirriff",
        "email": "kens@google.com",
        "time": "Tue Jul 28 16:20:48 2009 -0700"
      },
      "message": "Fix broken calendar tests.\n\nThe tests end up in the widget code, which calls getResources().  This needs to\nbe supported by the mock.\n\nbug\u003d1985641\n"
    },
    {
      "commit": "02f5228c3c224dc8804cbedd40899fa0c42bfd4a",
      "tree": "21267ea74f5159b7aa52751c6e8a3de368c08c39",
      "parents": [
        "b2fe1fd4ae31df7a0366c59c4a1393fb281c4fde",
        "f0d83fd907e0d2a0b2fe563cea9ffa830ecfd33f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 28 15:23:21 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 28 15:23:21 2009 -0700"
      },
      "message": "resolved conflicts for merge of f0d83fd9 to master\n"
    },
    {
      "commit": "7f2054392e9957d3ba8579ef08c29cfb27df564e",
      "tree": "5e07f36bea3038fa5c13e4b81fa6421be79652ac",
      "parents": [
        "ecbbecf6c535e7f3e1d072d43766a95aa18ee464"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 28 00:13:47 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 28 00:13:47 2009 -0700"
      },
      "message": "Updates from API review.\n\n    * AccessibilityService -- document onBind() to not be implemented.\n    * GestureLibrary.getLearner() -- needs to be hidden.\n    * IntentSender -- remove protected constructors, document that it is retrieved from a PendingIntent.\n    * Hide permissions: SHUTDOWN, STOP_APP_SWITCHES.\n    * Context -- hide BACKUP_SERVICE.\n    * ContextWrapper -- hide getSharedPrefs bla h blah\n    * Intent.parseUri() -- fix docs.\n    * ApplicationInfo.FLAG_TEST_ONLY?!?\n    * Hide MockContext.getSharedPrefs blah blah\n"
    },
    {
      "commit": "54a16f059040d8680b71e2e962fb438c993b674b",
      "tree": "4a468827b13e14ca3d9345a0f04dbe80aabee822",
      "parents": [
        "30b06eb8b98b6e6dc685cf65ad4faa25a85008c5"
      ],
      "author": {
        "name": "Andrew Stadler",
        "email": "stadler@android.com",
        "time": "Thu Jul 23 20:00:08 2009 -0700"
      },
      "committer": {
        "name": "Andrew Stadler",
        "email": "stadler@android.com",
        "time": "Fri Jul 24 10:52:21 2009 -0700"
      },
      "message": "Add getCacheDir() to RenamingDelegatingContext.\n\nThis allows providers under ProviderTestCase2 to access getCacheDir().\n"
    },
    {
      "commit": "cf4550c3198d6b3d92cdc52707fe70d7cc0caa9f",
      "tree": "6510f35ad004f1a4640b48264c290926e8596d7a",
      "parents": [
        "4cf03d381b2dff908857fceff0bec445f8d44f36"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Jul 21 11:16:54 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Jul 21 11:16:54 2009 -0700"
      },
      "message": "donut snapshot\n"
    },
    {
      "commit": "70277a21d9e935b4afd30e14efd8a371e8a1aa9a",
      "tree": "12d4882532e141f417611d15d32a2fa740a9028e",
      "parents": [
        "c494ba2544699e576370b35b7e94fe09e29d1226",
        "3b95f5378957c4e985429dfefda3975416c1a039"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 09 15:35:41 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 09 15:35:41 2009 -0700"
      },
      "message": "Merge change 6223\n\n* changes:\n  Changes for new sync.\n"
    },
    {
      "commit": "a2b5dab5b7796d3967c73df95154810ae38efd82",
      "tree": "34578e2bcce048956a6be9168490f08e9336e752",
      "parents": [
        "4fad469b65f8b932b9521808822c3c8f09867080",
        "870e09fcd2dfdc12ac318962efd28b0420c562bb"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Mon Jul 06 17:10:41 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jul 06 17:10:41 2009 -0700"
      },
      "message": "am 870e09fc: Fixes #1963229. Introduces Context#isRestricted().\n\nMerge commit \u0027870e09fcd2dfdc12ac318962efd28b0420c562bb\u0027\n\n* commit \u0027870e09fcd2dfdc12ac318962efd28b0420c562bb\u0027:\n  Fixes #1963229. Introduces Context#isRestricted().\n"
    },
    {
      "commit": "870e09fcd2dfdc12ac318962efd28b0420c562bb",
      "tree": "e96f3395c7176695e7007b21ec054c1e3d5a5e71",
      "parents": [
        "453dd50e707aa3a4d24240935f3ff7ea0a08dc7a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Mon Jul 06 16:35:25 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Mon Jul 06 16:45:17 2009 -0700"
      },
      "message": "Fixes #1963229. Introduces Context#isRestricted().\n\nA restricted Context is a special type of Context that prevents specific features\nfrom being used. For instance, android:onClick, used by View, can be dangerous when\nused from within apps widgets. By using a restricted Context to inflate apps widgets,\nwidgets providers are prevented from using android:onClick.\n"
    },
    {
      "commit": "3b95f5378957c4e985429dfefda3975416c1a039",
      "tree": "5c463b9a6e1eef6f50171e2c23bdd1ab5cbd0f8e",
      "parents": [
        "c2b9d63953c1261b12a99f295366d43ed90bae7f"
      ],
      "author": {
        "name": "Ken Shirriff",
        "email": "kens@google.com",
        "time": "Mon Jul 06 10:45:38 2009 -0700"
      },
      "committer": {
        "name": "Ken Shirriff",
        "email": "kens@google.com",
        "time": "Mon Jul 06 10:45:38 2009 -0700"
      },
      "message": "Changes for new sync.\n\nAdd ContentValues-based RecurrenceSet processing.\nAdd test stub needed by SSL caching.\n"
    },
    {
      "commit": "f888bc4dfe75c990874a8ca793a6217d38ef2757",
      "tree": "ecbb610f851183c290499c584df9c5bfd6f5c9eb",
      "parents": [
        "f907ec4268dc2e0a32fcd38b61d0c658e83e06fc",
        "441cb04efc0048585b3a6e6fa3d564e3d1b26f62"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 01 16:01:30 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jul 01 16:01:30 2009 -0700"
      },
      "message": "am 441cb04e: Merge change 5732 into donut\n\nMerge commit \u0027441cb04efc0048585b3a6e6fa3d564e3d1b26f62\u0027\n\n* commit \u0027441cb04efc0048585b3a6e6fa3d564e3d1b26f62\u0027:\n  Fix assertContentsInOrder (bug 1790350).\n"
    },
    {
      "commit": "97eb32e2cad1871f89f9d7e91681b2977c8a4d19",
      "tree": "e15ba1bd3b402043351a085a1917a184915987f9",
      "parents": [
        "c25dbf88fc21c707b72502c43695c2c31ff22a23"
      ],
      "author": {
        "name": "Karl Rosaen",
        "email": "krosaen@android.com",
        "time": "Mon Jun 29 18:06:40 2009 -0700"
      },
      "committer": {
        "name": "Karl Rosaen",
        "email": "krosaen@android.com",
        "time": "Mon Jun 29 18:06:40 2009 -0700"
      },
      "message": "Fix assertContentsInOrder (bug 1790350).\n\nif we ever get an updated Lists class that includes a\nLists.newArrayList(Iterable\u003c?\u003e\nimplementation, that would work too.\n"
    },
    {
      "commit": "b09296dbd8a5cff3a13308d6fc1ab504a8c63221",
      "tree": "cf64e3441307ddac6ea69c4fa2dc6cf38f45f274",
      "parents": [
        "afed82bca9e173cabe2c2f25314b202e5c1ccbca"
      ],
      "author": {
        "name": "Andrew Stadler",
        "email": "stadler@android.com",
        "time": "Wed Jun 24 22:32:40 2009 -0700"
      },
      "committer": {
        "name": "Andrew Stadler",
        "email": "stadler@android.com",
        "time": "Wed Jun 24 22:32:40 2009 -0700"
      },
      "message": "Add missing filename remap to RenamingDelegatingContext\n\nThis makes ProviderTestCase2 work better by enabling code under test\nto make calls to context.getDatabasePath().  Without this fix the call\nthrows an exception.\n\nIt would be reasonable (and useful) to backport this to donut, but I\u0027m\nnot even building donut these days.\n"
    },
    {
      "commit": "ac9385ef3105fb7464e1f46049c62755a8b7f0e9",
      "tree": "922fb69a8ec88aaa1ade3be16a9f7aa0d46fa25b",
      "parents": [
        "f86a58ff3d14fa6af3fa447809b45895bbb365f6"
      ],
      "author": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Mon Jun 22 18:00:59 2009 -0700"
      },
      "committer": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Tue Jun 23 15:53:16 2009 -0700"
      },
      "message": "- clean up the sync settings names to:\n   (get|set)SyncAutomatically\n   (get|set)MasterSyncAutomatically\n- change SYNC_EXTRAS_FORCE to SYNC_EXTRAS_MANUAL to mace clear that\n  this overrides the .*SyncAutomatically settings\n- make ContentResolver methods that call the sync controls methods\n  in IContentService so that SDK users can use them\n- rename startSync to requestSync to reinforce the fact that a sync\n  is not immediately or always started when this method is called\n- add an Account parameter to all the sync settings and control methods\n- change the sync control methods to take a String authority rather than a Uri uri\n"
    },
    {
      "commit": "c73e9ad55a28f6bec3260e919573e0597fdd23ab",
      "tree": "e669fa2a59927d4136b1d3ad2340ea10cf4d436e",
      "parents": [
        "903ccf479f7c06cd17f581b6633f2575d7dc7a60",
        "bc806f65edc33f6eda0f475ac84e5e037a013a90"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Jun 19 10:38:45 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jun 19 10:38:45 2009 -0700"
      },
      "message": "am bc806f65: Remove deprecated api. Aptly rename freeStorageWithIntent to freeStorage.\n\nMerge commit \u0027bc806f65edc33f6eda0f475ac84e5e037a013a90\u0027\n\n* commit \u0027bc806f65edc33f6eda0f475ac84e5e037a013a90\u0027:\n  Remove deprecated api. Aptly rename freeStorageWithIntent to freeStorage.\n"
    },
    {
      "commit": "bc806f65edc33f6eda0f475ac84e5e037a013a90",
      "tree": "086604fbc605d4b416e85b565227ffb7e489d1d7",
      "parents": [
        "2b1aed1021fb472de83c4c0143f2c4452244a0af"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Jun 17 15:18:19 2009 -0700"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Jun 19 10:25:37 2009 -0700"
      },
      "message": "Remove deprecated api. Aptly rename freeStorageWithIntent to freeStorage.\n"
    },
    {
      "commit": "8dbbe3b52f815c49be986814743a521f802b4785",
      "tree": "78ed9bc346ec5f1edfe702dbb74ea16e7b6b99af",
      "parents": [
        "f923ed6ff76a0fd022bcc83e748e82266ba4ed1b",
        "63e7155c7d1d0c3f0027400aa09e9a45f648a80d"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 18 19:35:32 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 18 19:35:32 2009 -0700"
      },
      "message": "am 63e7155c: Merge change 4696 into donut\n\nMerge commit \u002763e7155c7d1d0c3f0027400aa09e9a45f648a80d\u0027\n\n* commit \u002763e7155c7d1d0c3f0027400aa09e9a45f648a80d\u0027:\n  Fix targetSdkVersion, make resize mode a flag, delayed dexopt, easy ApplicationInfo.\n"
    },
    {
      "commit": "5c1e00b14d2ef10ec76abf3e951fa8003a67f558",
      "tree": "fa723a6f96f5b977dfdfdc08b5b8aab98c20d500",
      "parents": [
        "e748161ca89867e8c57d4e71c780486d4de8039c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 18 17:10:57 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 18 17:10:57 2009 -0700"
      },
      "message": "Fix targetSdkVersion, make resize mode a flag, delayed dexopt, easy ApplicationInfo.\n\n- Fix a bug where targetSdkVersion could not be set if minSdkVersion.  Stupid, stupid.\n  Also make sure to fail if minSdkVersion is for a code name.  Really stupid.\n\n- Change the API for resize compatibility mode to be a bit in the flags field, instead\n  of a separate boolean.\n\n- Implement delayed dexopting, to avoid the looong full dexopt during boot.  This is\n  only enabled for \"eng\" builds.  When in this mode, the activity manager will make\n  sure that a dexopt has been done before loading an .apk into a process, and will\n  try to avoid displaying ANRs if they are due to the dexopt causing some operation\n  to take longer than it normally would (though I make no guarantees about this\n  totally working).\n\n- Add API to Context to get the ApplicationInfo for its package, for easy access to\n  things like targetSdkVersion.\n"
    },
    {
      "commit": "abb01dba70fa52b3576fa9f6a175f3840b959fde",
      "tree": "1c6d7ce021830cc831488c5ee116565defc29bc5",
      "parents": [
        "cc4b106f736ceab3680b19a4cd7e14be2be8f341",
        "c14b9ccdf13163cae5ce5d21bcf377010b37594b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 17 22:45:54 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 17 22:45:54 2009 -0700"
      },
      "message": "am c14b9ccd: Extend Intent/Uri conversion for use by Browser\n\nMerge commit \u0027c14b9ccdf13163cae5ce5d21bcf377010b37594b\u0027\n\n* commit \u0027c14b9ccdf13163cae5ce5d21bcf377010b37594b\u0027:\n  Extend Intent/Uri conversion for use by Browser\n"
    },
    {
      "commit": "c14b9ccdf13163cae5ce5d21bcf377010b37594b",
      "tree": "45c2309b18ff4e56aef65e0c7d66f8800492e33e",
      "parents": [
        "e64bb1dd9ed68281af9968cf2cd23b4e49ead76c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 17 18:02:12 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 17 21:48:14 2009 -0700"
      },
      "message": "Extend Intent/Uri conversion for use by Browser\n\nThis introduces a new Uri form of Intent with an \"intent:\" scheme, and a\ncorresponding update to the parser to handle these, so that the browser\ncan use this generic facility for starting activities based on the links\nthat are clicked and allow for web pages to link to arbitrary intents.\n\nThere is also a new \"package\" field on Intent which allows you to limit\nthe components it finds to a given package.  This replaces the new method\nthat was added to PackageManger for doing this when resolving activities,\nand implements it for all Intent queries against the package manager.\n"
    },
    {
      "commit": "e1fae30e20b1515eeb036a7c103e1e70de130bdd",
      "tree": "7cafbd21f0df7606d64ea19e07c622efe4dbc6b4",
      "parents": [
        "253e8e34b323f05bb7d5fdc8591bdaadbab55dd6",
        "0781df943e5a7a72ac82394874b6200d14ddd02c"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Jun 17 18:24:44 2009 -0700"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Jun 17 18:24:44 2009 -0700"
      },
      "message": "Merge commit \u00270781df94\u0027 into manualmerge\n\nConflicts:\n\tAndroid.mk\n\tapi/current.xml\n"
    },
    {
      "commit": "1ccac75e1f1b97eccb916a8de04fc1012b30f6e5",
      "tree": "181c91a427de2ea609eff1f42c3970a441225b45",
      "parents": [
        "ef29f6afb4746eae8263ab901a5d3677bc04574b"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Jun 12 10:09:58 2009 -0700"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Jun 17 11:31:26 2009 -0700"
      },
      "message": "Remove circular dependency in PackageManager. api freeStorage uses PendingIntent from android.app\nCreate a new public IntentSender class that can be used by PackageManager instead.\nThis new class uses IIntentSender internally and can only be created by PendingIntent for now.\nProvide a new getIntentSender api in PendingIntent to create an instance of this class.\nMove IIntentSender and IIntentReceiver from android.app to android.content\nChange imports of IIntentSender and IIntentReceiver to reflect the new package name\nThe PackageManager api has been named as freeStorageWithIntent and will be renamed as freeStorage\nonce the older api(which has been deprecated) will be removed shortly.\n"
    },
    {
      "commit": "bf85d63cb8858432ff845250fdaffdb556d2ef1b",
      "tree": "bccd2a36cb6534bbb9fc75cdf3ff550fce35e8e7",
      "parents": [
        "32c79898c0020637b2f8e536c8208519801eb9cb",
        "78f0f8cb2efe9410127c39201e240f6d438eb53c"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 12 08:26:05 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jun 12 08:26:05 2009 -0700"
      },
      "message": "am 78f0f8cb: Merge changes 3953,3954 into donut\n\nMerge commit \u002778f0f8cb2efe9410127c39201e240f6d438eb53c\u0027\n\n* commit \u002778f0f8cb2efe9410127c39201e240f6d438eb53c\u0027:\n  Make the file backup helper not crash if a file you requested\n  Fix SharedPrefsBackupHelper so it doesn\u0027t hard code the paths to the files.\n"
    },
    {
      "commit": "23ecae3bbb60c5af940f3a22170d75eb6ac05b69",
      "tree": "1138102ba856743cffd931121409a71c2bae37c3",
      "parents": [
        "0b77453076a22569f24318d194b378b68f11a63e"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Wed Jun 10 17:07:15 2009 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Thu Jun 11 11:29:57 2009 -0700"
      },
      "message": "Fix SharedPrefsBackupHelper so it doesn\u0027t hard code the paths to the files.\n\nThis took quite a bit of refactoring.\n"
    },
    {
      "commit": "ae5d46fddf39e784427a9c344a782001dd6f195c",
      "tree": "c0461d49aebbdaa03be86de8c9d35f58aa3c6615",
      "parents": [
        "734bc9bacba363f7970ea8394bcc38d1fadcede4"
      ],
      "author": {
        "name": "Simon Schoar",
        "email": "schoar@googlemail.com",
        "time": "Wed Jun 10 20:49:56 2009 +0200"
      },
      "committer": {
        "name": "Simon Schoar",
        "email": "schoar@googlemail.com",
        "time": "Wed Jun 10 20:49:56 2009 +0200"
      },
      "message": "Javadoc used startApplication() which doesnt exists, changed to createApplication()\n"
    },
    {
      "commit": "342d59d3197caa1cd1de7a600c6e0ba4a59883f4",
      "tree": "046d7a2f14ff8a76e2f4ac5afbe4016731f77e68",
      "parents": [
        "138197f961b671ff5b48785b0fe61477ebfc7627",
        "9189cabb0b6c6c28232fe6f412b7ba7a37352a6a"
      ],
      "author": {
        "name": "Mitsuru Oshima",
        "email": "oshima@google.com",
        "time": "Wed Jun 03 16:34:47 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 03 16:34:47 2009 -0700"
      },
      "message": "am 9189cabb: * Moved supports-density tag under manifest * Refactored Compatibility code   * Added CompatibilityInfo class   * Removed getApplicationScale from Context   * Added Resources#getCompatibilityInfo so that RootView can get the compatibility info w/o going through Context * Expandable support   * Added expandable tag under manifest   * Old application w/o expandable is given the default screen size  ([320, 480] x density).   * The non-expandable window is centered.\n\nMerge commit \u00279189cabb0b6c6c28232fe6f412b7ba7a37352a6a\u0027\n\n* commit \u00279189cabb0b6c6c28232fe6f412b7ba7a37352a6a\u0027:\n  * Moved supports-density tag under manifest\n"
    }
  ],
  "next": "9189cabb0b6c6c28232fe6f412b7ba7a37352a6a"
}
