)]}'
{
  "log": [
    {
      "commit": "18dd5f0d25f1004e123dc265dc498a8bf8897af9",
      "tree": "89e57901a4e7e67871d529fdb9b2febef201c456",
      "parents": [
        "f8e3ba5bfad14f3037d72eb6243258c13169cbd8"
      ],
      "author": {
        "name": "Patrick Scott",
        "email": "phanna@android.com",
        "time": "Thu Jul 02 11:31:12 2009 -0400"
      },
      "committer": {
        "name": "Patrick Scott",
        "email": "phanna@android.com",
        "time": "Mon Jul 06 08:31:33 2009 -0400"
      },
      "message": "Improve the Vibrator service by keeping track of multiple vibration requests.\n\nThere are 2 types of vibrations: simple and repeated. Simple vibrations run for\na given length of time while repeated patterns run until canceled or the calling\nprocess dies.\n\nIf a vibration is currently running and another request is issued, the newer\nrequest always takes precedence unless the current vibration is a simple one and\nthe time left is longer than the new request.\n\nIf a repeating vibration is running and a new request overrides that vibration,\nthe current vibration is pushed onto a stack. Once the new vibration completes,\nthe previous vibration resumes. IBinder tokens are used to identify Vibration\nrequests which means that multiple calls to Vibrator.vibrate with the same\nVibrator object will override previous vibrations on that object.\n"
    },
    {
      "commit": "5d16cd046298ec9e009cfdd2056c64c1a9ac5ba3",
      "tree": "40ec504b10b6deb12ba2cd459641ded41a1fd904",
      "parents": [
        "575d1af980f4b4866325bfc487455f54606cf49e",
        "d7cd29da91ccc0aba1f1097e19366f9ca36c7ce1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 03 08:58:10 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jul 03 08:58:10 2009 -0700"
      },
      "message": "am d7cd29da: Add facility to run setup wizard after an update.\n\nMerge commit \u0027d7cd29da91ccc0aba1f1097e19366f9ca36c7ce1\u0027\n\n* commit \u0027d7cd29da91ccc0aba1f1097e19366f9ca36c7ce1\u0027:\n  Add facility to run setup wizard after an update.\n"
    },
    {
      "commit": "575d1af980f4b4866325bfc487455f54606cf49e",
      "tree": "0e342963e3e06a2193f07519d440a840d0e2df3e",
      "parents": [
        "7a91dc11ac3edd101fc06ebbc89cca76314fc538",
        "cf098294da7a820d5c30d8ed2006ed5446ee1da9"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jul 03 08:55:59 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jul 03 08:55:59 2009 -0700"
      },
      "message": "resolved conflicts for merge of cf098294 to master\n"
    },
    {
      "commit": "7a91dc11ac3edd101fc06ebbc89cca76314fc538",
      "tree": "f39366f9f1ddd7d225dc8767b5575a0756927913",
      "parents": [
        "28dda652a2c776100f3ec94a3352564ac49149de",
        "2bbb80e183c6492689f8b10b2d0f5dfe9872a6ac"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 03 08:18:22 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jul 03 08:18:22 2009 -0700"
      },
      "message": "am 2bbb80e1: Merge change 5994 into donut\n\nMerge commit \u00272bbb80e183c6492689f8b10b2d0f5dfe9872a6ac\u0027\n\n* commit \u00272bbb80e183c6492689f8b10b2d0f5dfe9872a6ac\u0027:\n  Less logging in some places.  More in others.\n"
    },
    {
      "commit": "28dda652a2c776100f3ec94a3352564ac49149de",
      "tree": "7f55c158f17bf9a213b64e59d05a574d85a4c603",
      "parents": [
        "10063c10899976c70c64c4dd15f171728e9b3036",
        "a54755962ca7725d1e2b6cacbbaece6f1cbf5af4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jul 03 08:18:17 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jul 03 08:18:17 2009 -0700"
      },
      "message": "am a5475596: Cleanup a bunch of warnings in app widgets code.\n\nMerge commit \u0027a54755962ca7725d1e2b6cacbbaece6f1cbf5af4\u0027\n\n* commit \u0027a54755962ca7725d1e2b6cacbbaece6f1cbf5af4\u0027:\n  Cleanup a bunch of warnings in app widgets code.\n"
    },
    {
      "commit": "fc2459b80aa4c9c5be81e33366fdfec94c5eedbf",
      "tree": "462894456071051ba0cc87bb7f4d6c7b0c647812",
      "parents": [
        "0d0012ef1617170701b9cd7492ef04ac47bfb5ca",
        "d18dc8c641cb4c89ffb205fb510e59a40ddf43fe"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 02 15:24:01 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 02 15:24:01 2009 -0700"
      },
      "message": "am d18dc8c6: Merge change 5906 into donut\n\nMerge commit \u0027d18dc8c641cb4c89ffb205fb510e59a40ddf43fe\u0027\n\n* commit \u0027d18dc8c641cb4c89ffb205fb510e59a40ddf43fe\u0027:\n  resolve complex value in application context instead of system context.\n"
    },
    {
      "commit": "0d0012ef1617170701b9cd7492ef04ac47bfb5ca",
      "tree": "01b85c97f37b1356b723187578157e4f443de4c8",
      "parents": [
        "1c502a4624859289c1000af6be8bea1aacee41bd",
        "54af78a3f7064e04d7ebd64c985d4149f9f7b05c"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 02 15:23:56 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 02 15:23:56 2009 -0700"
      },
      "message": "am 54af78a3: Merge change 5950 into donut\n\nMerge commit \u002754af78a3f7064e04d7ebd64c985d4149f9f7b05c\u0027\n\n* commit \u002754af78a3f7064e04d7ebd64c985d4149f9f7b05c\u0027:\n  Fix memory leaks in system_server\n"
    },
    {
      "commit": "1c502a4624859289c1000af6be8bea1aacee41bd",
      "tree": "8dadbf2a8fe36f860cf6f8eb1929789a96614206",
      "parents": [
        "b0b659a8aa8d7a973641e4866c8f29078d857731",
        "49401ddb9ac11ad5caead4e4cefcaa81d2418ed2"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 02 15:23:49 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 02 15:23:49 2009 -0700"
      },
      "message": "am 49401ddb: Revamp backup scheduling policy\n\nMerge commit \u002749401ddb9ac11ad5caead4e4cefcaa81d2418ed2\u0027\n\n* commit \u002749401ddb9ac11ad5caead4e4cefcaa81d2418ed2\u0027:\n  Revamp backup scheduling policy\n"
    },
    {
      "commit": "b0b659a8aa8d7a973641e4866c8f29078d857731",
      "tree": "2049295d2b48e19d085f1caae0c902de008b8961",
      "parents": [
        "9b7df7e628de5c44d2b04317da01b34f7d5e0edb",
        "ce0bf069fe8c5c93f91cb70b0cd9365245d144c1"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 02 15:23:45 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 02 15:23:45 2009 -0700"
      },
      "message": "am ce0bf069: Use secure settings for backup enable / transport selection\n\nMerge commit \u0027ce0bf069fe8c5c93f91cb70b0cd9365245d144c1\u0027\n\n* commit \u0027ce0bf069fe8c5c93f91cb70b0cd9365245d144c1\u0027:\n  Use secure settings for backup enable / transport selection\n"
    },
    {
      "commit": "f73a65c2d7c06e5c1b30b84e3931d2a53145417b",
      "tree": "59dbbfd835bb96b14bcd680b8c38865016b773fa",
      "parents": [
        "c885577145f9e7b72466e8e7497e8b0f9da9477b",
        "65363830c1e5ca8c59b6e12b4b43a3f03688ca2e"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 01 22:44:37 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jul 01 22:44:37 2009 -0700"
      },
      "message": "am 65363830: Merge change 5854 into donut\n\nMerge commit \u002765363830c1e5ca8c59b6e12b4b43a3f03688ca2e\u0027\n\n* commit \u002765363830c1e5ca8c59b6e12b4b43a3f03688ca2e\u0027:\n  Run backups at background priority\n"
    },
    {
      "commit": "d96e0b0cf14f159d96502a4caf8aa2a33c334a99",
      "tree": "c444ad326a6e2ae5b48508f78cdac7d12c2f7fd1",
      "parents": [
        "74ab31598bb65b17f84411d11d09269f1291d78a",
        "6e1647a212317f4ee8bcc23948b6621a59172954"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 01 22:43:58 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jul 01 22:43:58 2009 -0700"
      },
      "message": "am 6e1647a2: Merge change 5829 into donut\n\nMerge commit \u00276e1647a212317f4ee8bcc23948b6621a59172954\u0027\n\n* commit \u00276e1647a212317f4ee8bcc23948b6621a59172954\u0027:\n  Fix issue #1673793: Theme styles don\u0027t apply.\n"
    },
    {
      "commit": "8ec5b83fc8f8aa68805c4d5987f8f75bb28250ca",
      "tree": "8a6b5057325b6cd51ad94903fefc97eda1718c21",
      "parents": [
        "fbc7c1a784b3e9b003feaa9bd39d4283b316308e",
        "1dac277f93a80c53a870b8924508dd2af81293de"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 01 21:19:35 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 01 21:19:35 2009 -0700"
      },
      "message": "Merge commit \u00271dac277f\u0027 into manualmerge\n\nRequired rewriting the okay battery broadcast stuff.\n\nConflicts:\n\tservices/java/com/android/server/status/StatusBarPolicy.java\n"
    },
    {
      "commit": "d7cd29da91ccc0aba1f1097e19366f9ca36c7ce1",
      "tree": "03869e5efe3791758b0e9da9d029373ec1653cb2",
      "parents": [
        "cf098294da7a820d5c30d8ed2006ed5446ee1da9"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 01 11:22:45 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 01 20:20:47 2009 -0700"
      },
      "message": "Add facility to run setup wizard after an update.\n\nThe system now keeps a tag of the last version (just an arbitrary string)\nthat the setup wizard was run for.  If this is different than the current\none in the setup wizard, then setup is launched at boot.\n\nThis introduces a new intent action for the part of the setup wizard that\ngets run for an ungrade, which the system uses to find its current version\ntag for comparing against what was last stored.  It is up to the launched\nsetup activity update the stored setting to reflect its current value,\nonce it is happy.\n"
    },
    {
      "commit": "cf098294da7a820d5c30d8ed2006ed5446ee1da9",
      "tree": "d53913b8c355c15da25d2ab8708eeee94e6cf7ab",
      "parents": [
        "2bbb80e183c6492689f8b10b2d0f5dfe9872a6ac"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 01 19:55:20 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 01 20:12:36 2009 -0700"
      },
      "message": "Move backup state to settings, change permission checks to use symbol.\n\nThis changes the backup service to use the settings provider instead\nof system properties, correspondingly making it off by default and\nallowing specific devices to define the transport.  Also tweaks\nthe permission checks to use the permission symbol instead of raw\nstrings.\n\nThis requires some corresponding changes in the vendor projects.\n"
    },
    {
      "commit": "2bbb80e183c6492689f8b10b2d0f5dfe9872a6ac",
      "tree": "0c15e43130dfbef66bcfa2475aa5cec404ac7e65",
      "parents": [
        "a54755962ca7725d1e2b6cacbbaece6f1cbf5af4",
        "9a5e3e115fc69181e143bdb9ec455e0f94fbc11f"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 01 18:04:40 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 01 18:04:40 2009 -0700"
      },
      "message": "Merge change 5994 into donut\n\n* changes:\n  Less logging in some places.  More in others.\n"
    },
    {
      "commit": "9a5e3e115fc69181e143bdb9ec455e0f94fbc11f",
      "tree": "09365452a081b8a586b7c58e320b0872fccc9e41",
      "parents": [
        "d18dc8c641cb4c89ffb205fb510e59a40ddf43fe"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Wed Jul 01 21:04:03 2009 -0400"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Wed Jul 01 21:04:03 2009 -0400"
      },
      "message": "Less logging in some places.  More in others.\n"
    },
    {
      "commit": "a54755962ca7725d1e2b6cacbbaece6f1cbf5af4",
      "tree": "055ff8aa0729e942105686135b0197f3bca3ae35",
      "parents": [
        "392282f1e01518491c6536d931500c4bfac7f24f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Jul 01 17:20:08 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed Jul 01 17:21:12 2009 -0700"
      },
      "message": "Cleanup a bunch of warnings in app widgets code.\n"
    },
    {
      "commit": "3b0b1a11d6491385bea6cfe9b3adfe8da1aca88c",
      "tree": "50ec73ae1f4d0aea51bb18744ff65fe65a44ccfd",
      "parents": [
        "0901c82336c79ca3e3d67b1df8a5cb7ee45ec13e",
        "72d19aa51e90d45c7895629db78e548da2f6d469"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jul 01 16:01:48 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jul 01 16:01:48 2009 -0700"
      },
      "message": "am 72d19aa5: Tighten up the metadata backup logic\n\nMerge commit \u002772d19aa51e90d45c7895629db78e548da2f6d469\u0027\n\n* commit \u002772d19aa51e90d45c7895629db78e548da2f6d469\u0027:\n  Tighten up the metadata backup logic\n"
    },
    {
      "commit": "d18dc8c641cb4c89ffb205fb510e59a40ddf43fe",
      "tree": "cb0a8d954f69f79c9fb57d959d74ce182301ea8f",
      "parents": [
        "54af78a3f7064e04d7ebd64c985d4149f9f7b05c",
        "8f25c426b118c35f558cbf27bd413e1eb6d59823"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 01 12:53:04 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 01 12:53:04 2009 -0700"
      },
      "message": "Merge change 5906 into donut\n\n* changes:\n  resolve complex value in application context instead of system context.\n"
    },
    {
      "commit": "54af78a3f7064e04d7ebd64c985d4149f9f7b05c",
      "tree": "319681ef2905159095a4aa89f1165058b22bbca8",
      "parents": [
        "49401ddb9ac11ad5caead4e4cefcaa81d2418ed2",
        "fff2fda0199dedbf1079454dca98a81190dce765"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 01 12:52:39 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 01 12:52:39 2009 -0700"
      },
      "message": "Merge change 5950 into donut\n\n* changes:\n  Fix memory leaks in system_server unlink DeathRecipients in a whole bunch of places to avoid memory leaks\n"
    },
    {
      "commit": "fff2fda0199dedbf1079454dca98a81190dce765",
      "tree": "c45c5960e5c3469b36b5d728378a1aa901d1ec4e",
      "parents": [
        "c56096fe1fe3486102079f06ca5de3e2bef12e47"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Tue Jun 30 21:36:16 2009 -0700"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Jul 01 12:55:30 2009 -0700"
      },
      "message": "Fix memory leaks in system_server\nunlink DeathRecipients in a whole bunch of places to avoid memory leaks\n"
    },
    {
      "commit": "49401ddb9ac11ad5caead4e4cefcaa81d2418ed2",
      "tree": "147cca0a95c8da6b1bc547756da6bda6c0341929",
      "parents": [
        "ce0bf069fe8c5c93f91cb70b0cd9365245d144c1"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jul 01 12:34:29 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jul 01 12:38:06 2009 -0700"
      },
      "message": "Revamp backup scheduling policy\n\nWe now schedule a periodic check of pending backups; if any apps have requested\na backup since the last check, we perform all of the pending backups.  The\nperiodic backup scheduling matches the enable/disable state of the backup\nmanager; while backups are disabled entirely there are no periodic wakeups.\n\nThe period is set here to one hour.  If an external caller (transport, the\n\u0027bmgr\u0027 command line tool, etc) requests an immediate backup pass, that is\nperformed and then the periodic backup check is rescheduled using that pass as\nthe starting point of a new interval.\n"
    },
    {
      "commit": "ce0bf069fe8c5c93f91cb70b0cd9365245d144c1",
      "tree": "6149eaf7f689d98470f6f5c99c647c3f1f087774",
      "parents": [
        "1b1a6e406c4233b309baee85e14f5a563ca63c48"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jul 01 11:43:53 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jul 01 11:45:57 2009 -0700"
      },
      "message": "Use secure settings for backup enable / transport selection\n"
    },
    {
      "commit": "a2b2223817a536c22ff314886c90ed85eaef07ed",
      "tree": "c64f99f2387c22aa69eaf3ec87504b4d40bc5491",
      "parents": [
        "a9fa179999b45c0199669f663bc12ddfec146948",
        "6f317426e49e73ef3e50d8839877504039cd2fca"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jul 01 11:19:15 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jul 01 11:19:15 2009 -0700"
      },
      "message": "am 6f317426: Don\\\u0027t issue a deletion for the global metadata backup\n\nMerge commit \u00276f317426e49e73ef3e50d8839877504039cd2fca\u0027\n\n* commit \u00276f317426e49e73ef3e50d8839877504039cd2fca\u0027:\n  Don\u0027t issue a deletion for the global metadata backup\n"
    },
    {
      "commit": "8f25c426b118c35f558cbf27bd413e1eb6d59823",
      "tree": "1dc53d22e856c9f15afabfdef4c3a957652a129b",
      "parents": [
        "083928fefde7060eb69f7f45cd8e2180efa9bfe1"
      ],
      "author": {
        "name": "Mitsuru Oshima",
        "email": "oshima@google.com",
        "time": "Wed Jul 01 00:10:43 2009 -0700"
      },
      "committer": {
        "name": "Mitsuru Oshima",
        "email": "oshima@google.com",
        "time": "Wed Jul 01 00:10:43 2009 -0700"
      },
      "message": "resolve complex value in application context instead of system context.\n"
    },
    {
      "commit": "01ecd7bcd1f0d2a64e2c354ff0dc5a0fb2b8c907",
      "tree": "2c8835b408677583ad57870e7a42ae3be9ee7e3a",
      "parents": [
        "2658254d929de57f1d08f0056589113dfdda100c",
        "ab4748c62d106d9cbc27c88ccd3d2bbda8e451bd"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 01 00:07:35 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jul 01 00:07:35 2009 -0700"
      },
      "message": "am ab4748c6: Merge change 5694 into donut\n\nMerge commit \u0027ab4748c62d106d9cbc27c88ccd3d2bbda8e451bd\u0027\n\n* commit \u0027ab4748c62d106d9cbc27c88ccd3d2bbda8e451bd\u0027:\n  Implement persistent enable/disable of the backup manager\n"
    },
    {
      "commit": "6463ff24684a2b74cd25533ae6e028f4cd9933fe",
      "tree": "f87eb27aebd71a3ec453867b169690e8ca5f3e1b",
      "parents": [
        "5ad2f1c05ed69176849f535e4a8ab02e50e8e048",
        "66c2942a112b65eec93c25263684a8c79cb21318"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 30 16:52:32 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 30 16:52:32 2009 -0700"
      },
      "message": "resolved conflicts for merge of 66c2942a to master\n"
    },
    {
      "commit": "7958834e0e8adb42ca5183541c4bbcd8aaa7d3aa",
      "tree": "1a58583e4d162ab1bbb1ee49b0a03ce036ea0a83",
      "parents": [
        "f3ab3c3437f18834ce63542062c2ed7a87a05fca"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 30 16:11:49 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 30 16:11:49 2009 -0700"
      },
      "message": "Run backups at background priority\n"
    },
    {
      "commit": "6e1647a212317f4ee8bcc23948b6621a59172954",
      "tree": "50a0ac10196a017f438dbd3c4911b02ec040cf9d",
      "parents": [
        "d8de2ba42679a10db2adc11995d6596a0045ab3a",
        "de7faf658cd40d34c08a98b39477055da8e19172"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 30 14:04:55 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 30 14:04:55 2009 -0700"
      },
      "message": "Merge change 5829 into donut\n\n* changes:\n  Fix issue #1673793: Theme styles don\u0027t apply.\n"
    },
    {
      "commit": "1dac277f93a80c53a870b8924508dd2af81293de",
      "tree": "ec4687e36a6703c0ffe9434748a5fe66975b42e7",
      "parents": [
        "9848f11fd8788b985330183aeb83cc589b8b14ae"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 26 18:16:48 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 30 13:40:51 2009 -0700"
      },
      "message": "Implement issue #1943927 (need notification in status bar when adb is active)\n\nThis is a little hacky -- we just assume that if adb is enabled and power\nis connected through usb, then it is active.\n\nThe icons and text are temporary until final design is provided.\n"
    },
    {
      "commit": "de7faf658cd40d34c08a98b39477055da8e19172",
      "tree": "8450b4d75fbe22a3fed25867c1d53a059c10d664",
      "parents": [
        "bd9aa793b19f7aa529ca4123492f8940b96486b8"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 30 13:27:30 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 30 13:27:30 2009 -0700"
      },
      "message": "Fix issue #1673793: Theme styles don\u0027t apply.\n\nIt turns out this was not a problem in the resource code at all.  Rather,\nthe system process has a cache of pre-loaded attributes it uses to avoid\ncontinually reloading things as it needs them.  Well it turns out this\ncache wasn\u0027t flushed after a package was uninstalled or a configuration\nchanged, so you could re-install an app where you change its style resources\nso its theme now points to one that is inconsistent in the cache.\n\nThis is mostly a problem for developers, where they continually install\nnew versions of an app where resources have changed.  This could possibly\nshow up when updating an app on a normal phone, although the problem would\neventually correct itself since this cache uses weak references.\n\nAnyway, the cache is now reworked to be flushed appropriately.\n\nThis change also includes an update to aapt to be able to dump the\ncontents of bags in resources.\n"
    },
    {
      "commit": "72d19aa51e90d45c7895629db78e548da2f6d469",
      "tree": "f65c8bcf06246252d75f387bf647386a255466a3",
      "parents": [
        "91c91b74df12e40c31a50ecb807ac60bed2ccb58"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 30 12:47:33 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 30 12:52:54 2009 -0700"
      },
      "message": "Tighten up the metadata backup logic\n\nWe now store the app version codes and and global OS incremental version name in\nthe PM backup state and the actual backup record.  We then use that information\nto trigger a re-backup of the metadata if the OS revision changes in any way, or\nto back up single apps\u0027 metadata if we notice that they\u0027ve been upgraded.\n"
    },
    {
      "commit": "5e79e323570cc0e110bfe4fe50f9e9a1d884004b",
      "tree": "3d45aa63b719b24d47d4227b13e02696d2ffe1a1",
      "parents": [
        "da6edf4d8a1716b193c4c779167e02bca883dda6",
        "9171749700853305f3e6abbcdbd9e02f3a71d459"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 29 20:20:20 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 29 20:20:20 2009 -0700"
      },
      "message": "am 91717497: Use system properties to track the current transport\n\nMerge commit \u00279171749700853305f3e6abbcdbd9e02f3a71d459\u0027\n\n* commit \u00279171749700853305f3e6abbcdbd9e02f3a71d459\u0027:\n  Use system properties to track the current transport\n"
    },
    {
      "commit": "f9435d7521a7085e487974faefbc7934bf90753c",
      "tree": "5226e80d44ecab0c424a245ece17c66afc5bab57",
      "parents": [
        "ff35c1d787e0f466065b4d148071a47aa972b3a7",
        "f7c886b4fe27cd9ab4a9991958ff931054556a24"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 29 20:17:47 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 29 20:17:47 2009 -0700"
      },
      "message": "am f7c886b4: Respect android:allowClearUserData\u003dfalse during restore\n\nMerge commit \u0027f7c886b4fe27cd9ab4a9991958ff931054556a24\u0027\n\n* commit \u0027f7c886b4fe27cd9ab4a9991958ff931054556a24\u0027:\n  Respect android:allowClearUserData\u003dfalse during restore\n"
    },
    {
      "commit": "ff35c1d787e0f466065b4d148071a47aa972b3a7",
      "tree": "95fb44f4a326a11f375f70ac97ebda7f71f8e1fa",
      "parents": [
        "0e04f18ec7bd187417cf2cfc1be1498cb4812ba7",
        "bd1e8aa502a6d9231e2a1399cee18debcf70b3d6"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 29 20:17:42 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 29 20:17:42 2009 -0700"
      },
      "message": "am bd1e8aa5: Merge change 5569 into donut\n\nMerge commit \u0027bd1e8aa502a6d9231e2a1399cee18debcf70b3d6\u0027\n\n* commit \u0027bd1e8aa502a6d9231e2a1399cee18debcf70b3d6\u0027:\n  Trim some superfluous imports.\n"
    },
    {
      "commit": "6f317426e49e73ef3e50d8839877504039cd2fca",
      "tree": "d80ff010d9887a32166d661e9397a9535d62a3c0",
      "parents": [
        "bbd63cb28595bd6b1fa62d331d9373b5c798c267"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 29 18:52:55 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 29 18:52:55 2009 -0700"
      },
      "message": "Don\u0027t issue a deletion for the global metadata backup\n\nWe were accidentally submitting a deletion for the global metadata key in the\nPM backup handling (it was falling into the usual \"here\u0027s a package that we said\nwe\u0027d backed up last time, but now it\u0027s no longer on device\" code).  Don\u0027t do\nthat any more, i.e. actually keep the global metadata key in the backup set.\nOops.\n"
    },
    {
      "commit": "f6ff591decdea6299aab1a5b6f95917800571de4",
      "tree": "dee211f3383b10360a61cb4194a1bcc2cc26bdd4",
      "parents": [
        "8c3fc63576c81139a8d16b608550568ad52237c6",
        "72eb0acad5cffc57ce5006f6deab29ee259e461e"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 29 16:37:17 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 29 16:37:17 2009 -0700"
      },
      "message": "am 72eb0aca: Merge change 5483 into donut\n\nMerge commit \u002772eb0acad5cffc57ce5006f6deab29ee259e461e\u0027\n\n* commit \u002772eb0acad5cffc57ce5006f6deab29ee259e461e\u0027:\n  Expand support for different screen sizes.\n"
    },
    {
      "commit": "8c3fc63576c81139a8d16b608550568ad52237c6",
      "tree": "8dadaf72d9a70b0bd5458467d34975551b7b2d0d",
      "parents": [
        "5ceae67f8a053ec4f47accf6e0ddad2d29af022c",
        "156411df4627336b246db78cddca8248ed615b67"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Mon Jun 29 16:37:02 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 29 16:37:02 2009 -0700"
      },
      "message": "am 156411df: Use a long for restore token\n\nMerge commit \u0027156411df4627336b246db78cddca8248ed615b67\u0027\n\n* commit \u0027156411df4627336b246db78cddca8248ed615b67\u0027:\n  Use a long for restore token\n"
    },
    {
      "commit": "f35b2f382c1ebb9c79d2216e151a61f1a27ce80f",
      "tree": "a66f40602cf5219de9980a34f7db653fc42bf4dd",
      "parents": [
        "c16dee2aaa1f101ec91fb379a55b900391a13d20",
        "8a27f923eb9dbbe3c2d0184e82d9f1a98f1e4cdc"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 29 16:36:52 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 29 16:36:52 2009 -0700"
      },
      "message": "am 8a27f923: Don\\\u0027t crash in various ways when using backup services too early\n\nMerge commit \u00278a27f923eb9dbbe3c2d0184e82d9f1a98f1e4cdc\u0027\n\n* commit \u00278a27f923eb9dbbe3c2d0184e82d9f1a98f1e4cdc\u0027:\n  Don\u0027t crash in various ways when using backup services too early\n"
    },
    {
      "commit": "6ef58a1509b9d3348a33ca5686917796c2759aa5",
      "tree": "0cdfef7bf8e2085dc2888c4222aba7481683ee2f",
      "parents": [
        "3a608f829b54a7653c9cc2b3bdbda0641cca37bb"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 29 14:56:28 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 29 15:33:27 2009 -0700"
      },
      "message": "Implement persistent enable/disable of the backup manager\n\nBackup \u0026 restore is still enabled by default, but with the expectation that it\nwill be enabled during the course of the Setup Wizard or some other privileged\nentity that has notified the user about the ramifications.  While disabled,\ndata-changed notices will still be collected, but no backup pass will be\nscheduled.  When the backup manager is later enabled, any pending data-changed\nnotices will then be processed and the apps invoked for backup.\n"
    },
    {
      "commit": "66c2942a112b65eec93c25263684a8c79cb21318",
      "tree": "56f88bc173e2017d6c840b19a1aa5050742c22ad",
      "parents": [
        "dbcd9c34f378a93c1e7e8c91e035782daf66e5f4",
        "2bd33d74aed2abc6eb1ef7a9783cd87045598235"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 29 11:57:33 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 29 11:57:33 2009 -0700"
      },
      "message": "Merge change 5605 into donut\n\n* changes:\n  Fix issue #1943706 (Applying the monkey to GoogleVoice causes SecurityException)\n"
    },
    {
      "commit": "9171749700853305f3e6abbcdbd9e02f3a71d459",
      "tree": "7aaa1fada6783a588d1662165730e8d3f4ef591c",
      "parents": [
        "4cb1276e143e175590c69ceefa58eb721aa52846"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 26 21:07:13 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 26 21:14:41 2009 -0700"
      },
      "message": "Use system properties to track the current transport\n\nThis change retools the transport selection mechanism a fair bit.  Transports\nare now specified by name rather than by numeric ID, and the name of the\ncurrently selected transport is stored in a persistent system property under the\nname \"persist.service.bkup.trans\".\n\nThe name -\u003e IBackupTransport translation is now handled by maintaining a map\nfrom the names to the live IBackupTransport objects that correspond.  The Google\ntransport service observer now registers and unregisters the transport as the\nservice goes up and down.\n\nThe bmgr command has been expanded to include real transport interrogation and\nselection by name, and some documentation has been written for it.\n"
    },
    {
      "commit": "2bd33d74aed2abc6eb1ef7a9783cd87045598235",
      "tree": "7c4ba448c6d750e7ab784ef4aa4330ac02ea346a",
      "parents": [
        "72eb0acad5cffc57ce5006f6deab29ee259e461e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 26 18:59:01 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 26 18:59:01 2009 -0700"
      },
      "message": "Fix issue #1943706 (Applying the monkey to GoogleVoice causes SecurityException)\n\nFiddle around with event dispatching to remove calling permissions when we\nenter event injection, and prevent callers from going to the PhoneWindowManager\u0027s\nevent processing code unless they are allowed at that point.\n"
    },
    {
      "commit": "f7c886b4fe27cd9ab4a9991958ff931054556a24",
      "tree": "49a8019cd3de211045e4db23d2c6efa449773da5",
      "parents": [
        "bd1e8aa502a6d9231e2a1399cee18debcf70b3d6"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 26 15:34:09 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 26 15:34:09 2009 -0700"
      },
      "message": "Respect android:allowClearUserData\u003dfalse during restore\n\nOrdinarily we wipe the data of apps we are restoring.  This is problematic for\npackages that expect that their data can never be wiped back to nothing,\nespecially system packages, so we now respect the android:allowClearUserData\nmanifest attribute.\n"
    },
    {
      "commit": "466ef345d17104076e03674cc49c368e6bd46df2",
      "tree": "ce693b311e02be8207cca19c8de4b5d5a448b395",
      "parents": [
        "d09f86ce175fad6ddbd446363f327dfa0575a1d2"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 26 14:41:15 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 26 14:41:57 2009 -0700"
      },
      "message": "Trim some superfluous imports.\n"
    },
    {
      "commit": "72eb0acad5cffc57ce5006f6deab29ee259e461e",
      "tree": "fe7a0e33cb310eb4abf5415583d2b2ea9345d724",
      "parents": [
        "156411df4627336b246db78cddca8248ed615b67",
        "723738cfaec3dd7b0fe152c872c41bebf94074c4"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 26 13:46:07 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 26 13:46:07 2009 -0700"
      },
      "message": "Merge change 5483 into donut\n\n* changes:\n  Expand support for different screen sizes.\n"
    },
    {
      "commit": "723738cfaec3dd7b0fe152c872c41bebf94074c4",
      "tree": "421ddeed166d0a4586c9460c4de581307bf08d44",
      "parents": [
        "77cb40a0b088b02357fbc7d5fad24886d607f0da"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 25 19:48:04 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 26 13:37:05 2009 -0700"
      },
      "message": "Expand support for different screen sizes.\n\nApplications can now declare that they support small, normal, or\nlarge screens.  Resource selection can also be done based on these\nsizes.  By default, pre-Donut apps are false for small and large,\nand Donut or later apps are assumed to support all sizes.  In either\ncase they can use \u003csupports-screens\u003e in their manifest to declare\nwhat they actually support.\n"
    },
    {
      "commit": "156411df4627336b246db78cddca8248ed615b67",
      "tree": "e0aab41ac43c870e5c464b297418034a50e47d93",
      "parents": [
        "040441fa992bcfc11070d559bfceeb039667b382"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Fri Jun 26 13:20:02 2009 -0700"
      },
      "committer": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Fri Jun 26 13:25:27 2009 -0700"
      },
      "message": "Use a long for restore token\n"
    },
    {
      "commit": "8a27f923eb9dbbe3c2d0184e82d9f1a98f1e4cdc",
      "tree": "785242d6c32e7b9bd30c353444c7de452209304c",
      "parents": [
        "c73a218c2663e6ae3ec8a9ab8b9524f95702ade9"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 26 11:49:18 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 26 12:20:10 2009 -0700"
      },
      "message": "Don\u0027t crash in various ways when using backup services too early\n\nBackupManager now no longer tries to use a null service binder if it\u0027s used\nearly during the boot process.  ActivityManagerService no longer tries to\ndereference null pointers if bind/unbind semantics get out of step due to things\nbeing run too early.\n"
    },
    {
      "commit": "0d8dc1425681d99c5e757354956f41e2e9a1374e",
      "tree": "c03bfec1f80861ed71bf511862e0fdd8468e1c91",
      "parents": [
        "2df7c15aa0e8f5afc804fd20250316f9e50fdb59",
        "7d562ec393d54dd9ef387c49d1283243bfdbd2b1"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jun 25 18:13:19 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 25 18:13:19 2009 -0700"
      },
      "message": "am 7d562ec3: Add a new IRestoreObserver callback class to the restore process\n\nMerge commit \u00277d562ec393d54dd9ef387c49d1283243bfdbd2b1\u0027\n\n* commit \u00277d562ec393d54dd9ef387c49d1283243bfdbd2b1\u0027:\n  Add a new IRestoreObserver callback class to the restore process\n"
    },
    {
      "commit": "7d562ec393d54dd9ef387c49d1283243bfdbd2b1",
      "tree": "ac2590ef8df168167789764153a1869c80363748",
      "parents": [
        "b505ae4195d9b8a93c71b1f9da6d7d8c3aaa3c08"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jun 25 18:03:43 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jun 25 18:09:28 2009 -0700"
      },
      "message": "Add a new IRestoreObserver callback class to the restore process\n\nThe observer is told when restore begins how many packages are being restored.\nIt then gets an onUpdate() call telling it that the Nth package is now\nundergoing restore.  Ultimately, its restoreFinished() callback is invoked,\npassing a simple success/fail error code, to let it know that the restore\noperation has concluded.\n"
    },
    {
      "commit": "7f94b60c6d22a0dad41cdbc4fadfc0bc70a8ebac",
      "tree": "1c0ccdb9a64ad083923f908acfd8f928be137a3c",
      "parents": [
        "8bf2f6806da430c6a8fd0d35d7942af37510cb8f",
        "5cb400bd72726c22f641f334951b35ce2ddcfeef"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jun 25 16:15:54 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 25 16:15:54 2009 -0700"
      },
      "message": "am 5cb400bd: Keep track of backup state independently for each transport\n\nMerge commit \u00275cb400bd72726c22f641f334951b35ce2ddcfeef\u0027\n\n* commit \u00275cb400bd72726c22f641f334951b35ce2ddcfeef\u0027:\n  Keep track of backup state independently for each transport\n"
    },
    {
      "commit": "5cb400bd72726c22f641f334951b35ce2ddcfeef",
      "tree": "efb4514d204568a5031c6aa4f847b3a227391273",
      "parents": [
        "2f437b4c56db1750cc6cb3d1ad549a79049b6370"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jun 25 16:03:14 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jun 25 16:09:03 2009 -0700"
      },
      "message": "Keep track of backup state independently for each transport\n\nBackup transports now provide the Backup Manager with a suggested name with\nwhich it can disambiguate any transport-specific bookkeeping that it needs to\nmaintain.  The Manager keeps separate application backup \u0027state blobs\u0027 for each\ntransport now, preventing things from getting out of step if the device is\nswitched among multiple transports.\n\nAlso, the metadata backup agent is always invoked now on each backup pass.  This\nis cheap when there is nothing to do, but also strongly ensures that we never\nwind up in a situation where a given transport destination has not been given\nall of the metadata necessary for the backup set.\n"
    },
    {
      "commit": "1af846b97928d8355029f675f781635600f143a8",
      "tree": "8c920e9c7346f734553671478b622e1537a67dd4",
      "parents": [
        "94e942107bf10fcf459b886b9e492f09c7c0a9c1",
        "1a645058a85182371b581916deba501feaa7bb86"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 25 13:07:38 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 25 13:07:38 2009 -0700"
      },
      "message": "Merge change 5376\n\n* changes:\n  WifiService: Update all scan result values in our scan result cache.\n"
    },
    {
      "commit": "e0ef37b8e558f26fd4df7dff7ca87f95120526c2",
      "tree": "40ff83a265c852efc053b3da7e80139d2e01fd0c",
      "parents": [
        "68000508765174c6129b65e72cf28cb1e8d871c0",
        "6f21128d1fc949828b1a4c2a0023f07bfd280e2e"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu Jun 25 12:12:30 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 25 12:12:30 2009 -0700"
      },
      "message": "am 6f21128d: Switch the default transport to GOOGLE.\n\nMerge commit \u00276f21128d1fc949828b1a4c2a0023f07bfd280e2e\u0027\n\n* commit \u00276f21128d1fc949828b1a4c2a0023f07bfd280e2e\u0027:\n  Switch the default transport to GOOGLE.\n"
    },
    {
      "commit": "6f21128d1fc949828b1a4c2a0023f07bfd280e2e",
      "tree": "ca275b667d1dadb19b971fc9b22b730dc8deea28",
      "parents": [
        "0bcfc537e81b959a7d674deea4a5aee7f5c6eb2d"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu Jun 25 09:28:29 2009 -0700"
      },
      "committer": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu Jun 25 12:07:58 2009 -0700"
      },
      "message": "Switch the default transport to GOOGLE.\n"
    },
    {
      "commit": "1a645058a85182371b581916deba501feaa7bb86",
      "tree": "7e1c76937fe7c344a732725806655b573a889346",
      "parents": [
        "2383415ab982ff156a85929f58029c0b863750c5"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jun 25 13:01:12 2009 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jun 25 13:01:12 2009 -0400"
      },
      "message": "WifiService: Update all scan result values in our scan result cache.\n\nPreviously only the level was being updated, resulting in out of date values\nbeing left in the cache.\nPatch was provided by Motorola.\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "2383415ab982ff156a85929f58029c0b863750c5",
      "tree": "4fe9a9b3c6a167941bc7beba4f4e3503a7428f31",
      "parents": [
        "e92b1e7633188e9e72a237f84266d390bb4b87ed",
        "f881762f97c74253bbc7f629380bb65739457041"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 25 00:47:51 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 25 00:47:51 2009 -0700"
      },
      "message": "am f881762f: Merge change 5351 into donut\n\nMerge commit \u0027f881762f97c74253bbc7f629380bb65739457041\u0027\n\n* commit \u0027f881762f97c74253bbc7f629380bb65739457041\u0027:\n  Add a method to Process to get uid for a pid.\n"
    },
    {
      "commit": "819f928f6a9dc3fdf408236f33e17f03a7dfed2c",
      "tree": "e830a39404ad66b8a2bfc40ef7e96f0c2a85c014",
      "parents": [
        "c6a482e778e7b5fc5790edf22e554c93f53b1112"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Jun 24 23:18:15 2009 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Jun 24 23:26:29 2009 -0700"
      },
      "message": "Add a method to Process to get uid for a pid.\n\nUse the uids to track native processes. Cache the uids to avoid\nchecking /proc every time.\n"
    },
    {
      "commit": "cc79800a741e4ee55ecfa7ec236b0087d83e41e4",
      "tree": "a81d0d8a8c79a76302788185fb1fbdf34adcc784",
      "parents": [
        "ecf2b68d834d334de218dc427615b4ca05c0293a",
        "5416d7c905e723a978ac29ccaf22a91b76e9d5c2"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 18:48:39 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 24 18:48:39 2009 -0700"
      },
      "message": "am 5416d7c9: Merge change 5317 into donut\n\nMerge commit \u00275416d7c905e723a978ac29ccaf22a91b76e9d5c2\u0027\n\n* commit \u00275416d7c905e723a978ac29ccaf22a91b76e9d5c2\u0027:\n  Start backing up wallpaper\n"
    },
    {
      "commit": "5416d7c905e723a978ac29ccaf22a91b76e9d5c2",
      "tree": "5e8734e0f37338c4321b9b414e121f616592a942",
      "parents": [
        "7941e903c973af66075bbd4fa4bcadf021a61ccc",
        "111bd4acdb378266221b430a284f88a3990a3958"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 18:46:59 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 18:46:59 2009 -0700"
      },
      "message": "Merge change 5317 into donut\n\n* changes:\n  Start backing up wallpaper\n"
    },
    {
      "commit": "111bd4acdb378266221b430a284f88a3990a3958",
      "tree": "1ca7da34b22ffc0ab846151633916e203544ecae",
      "parents": [
        "69e1f472c33e241f729c470285a5680866ede75c"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jun 24 17:29:38 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jun 24 18:45:56 2009 -0700"
      },
      "message": "Start backing up wallpaper\n\nThis CL does the following:\n   + adds an AbsoluteFileBackupHelper class for managing backup of files\n     known by absolute path, not based off of the app\u0027s getFilesDir() root\n   + bumps up the collection interval from its testing-only default of 1 second\n     to 3 minutes\n   + adds a SystemBackupAgent class to the main system package and names it as\n     the android:backupAgent for the main OS package.  Right now this agent\n     only backs up \u0026 restores the wallpaper file.\n   + amend the Wallpaper Service to inform the Backup Manager when the wallpaper\n     changes.\n\nOn the subject of the 3-minute collection interval before the backup actually\noccurs:  this can be short-circuited from an adb shell.  Running the command\n\u0027bmgr run\u0027 will cause the Backup Manager to kick off any pending backup\noperations immediately.\n"
    },
    {
      "commit": "ecf2b68d834d334de218dc427615b4ca05c0293a",
      "tree": "1fb611d557c89898300564ab336845146f8a571f",
      "parents": [
        "d2341b38923a5aab0ad3f0f782de426891aee18f",
        "7941e903c973af66075bbd4fa4bcadf021a61ccc"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 17:56:05 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 24 17:56:05 2009 -0700"
      },
      "message": "am 7941e903: Merge change 5091 into donut\n\nMerge commit \u00277941e903c973af66075bbd4fa4bcadf021a61ccc\u0027\n\n* commit \u00277941e903c973af66075bbd4fa4bcadf021a61ccc\u0027:\n  * new screen resolution support impl.\n"
    },
    {
      "commit": "7941e903c973af66075bbd4fa4bcadf021a61ccc",
      "tree": "43344dacf7cf25bd47a1d20bdf68dd57e82ab188",
      "parents": [
        "69e1f472c33e241f729c470285a5680866ede75c",
        "64f59342d41849bd365cb43fad7505d5e3daa417"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 17:53:57 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 17:53:57 2009 -0700"
      },
      "message": "Merge change 5091 into donut\n\n* changes:\n  * new screen resolution support impl.   * use full window for activities, and shift \u0026 clip the content   * refactored the compatibility code, and introdcued Translator class to handle cooridnate translations.   * removed a workaround to handle an activity with configChagne\u003drotation in old implementation.   * I\u0027ll fix background issue on rotation in next CL.\n"
    },
    {
      "commit": "e23ad63adf02e0079c75cba1cac912c08cae5c49",
      "tree": "c8c95d7006ba5d8c4290ef27d4a0f9e19150c59a",
      "parents": [
        "69866cea4dff6dfc6ccf36878593ce949faab9ea",
        "67669c9c1753b062fe2a71f89b589d01b32ba0f7"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 17:39:15 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 24 17:39:15 2009 -0700"
      },
      "message": "am 67669c9c: Merge change 5196 into donut\n\nMerge commit \u002767669c9c1753b062fe2a71f89b589d01b32ba0f7\u0027\n\n* commit \u002767669c9c1753b062fe2a71f89b589d01b32ba0f7\u0027:\n  Modify the IBackupTransport API to support bulk restore operations.\n"
    },
    {
      "commit": "67669c9c1753b062fe2a71f89b589d01b32ba0f7",
      "tree": "729bb3c925638802fdb42e67c508f08f85a3ff55",
      "parents": [
        "5158cc55088fec902320cafc02c746e3bf087a10",
        "efe52647f6b41993be43a5f47d1178bb0468cec8"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 16:52:16 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 16:52:16 2009 -0700"
      },
      "message": "Merge change 5196 into donut\n\n* changes:\n  Modify the IBackupTransport API to support bulk restore operations. Change the BackupManagerService and LocalTransport to support the new API.\n"
    },
    {
      "commit": "efe52647f6b41993be43a5f47d1178bb0468cec8",
      "tree": "d0fc1dba5187836d7e8d318c65af780b400bfc0a",
      "parents": [
        "0bc7b8490b1575bb8266a3b0c6652d4f460fcda1"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Wed Jun 24 00:16:33 2009 -0700"
      },
      "committer": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Wed Jun 24 16:49:44 2009 -0700"
      },
      "message": "Modify the IBackupTransport API to support bulk restore operations.\nChange the BackupManagerService and LocalTransport to support the new API.\n"
    },
    {
      "commit": "afed82bca9e173cabe2c2f25314b202e5c1ccbca",
      "tree": "1179ebc7b545a1f51de557dc78fc2d141c8f1e74",
      "parents": [
        "465913c7ef4aac6124a281449c857106db3dd0a5",
        "9c8dd55a9d829c29a3feee9469d8c2f27a9f5516"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 24 16:25:26 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 24 16:25:26 2009 -0700"
      },
      "message": "am 9c8dd55a: Fix bug 1829561 (\"am profile\" with bad filename kills process).\n\nMerge commit \u00279c8dd55a9d829c29a3feee9469d8c2f27a9f5516\u0027\n\n* commit \u00279c8dd55a9d829c29a3feee9469d8c2f27a9f5516\u0027:\n  Fix bug 1829561 (\"am profile\" with bad filename kills process).\n"
    },
    {
      "commit": "9c8dd55a9d829c29a3feee9469d8c2f27a9f5516",
      "tree": "deb1f95fbdc6972bf1d50fffb79ef2c74731314b",
      "parents": [
        "0bc7b8490b1575bb8266a3b0c6652d4f460fcda1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 23 19:22:52 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 24 16:23:14 2009 -0700"
      },
      "message": "Fix bug 1829561 (\"am profile\" with bad filename kills process).\n\nThe am command is now the one that takes care of opening the target file,\nhandling the opened file descriptor to the process that will be profiled.\nThis allows you to send profile data to anywhere the shell can access, and\navoids any problems coming up from the target process trying to open the\nfile.\n"
    },
    {
      "commit": "4c74637833c6dc41f5c51897cd78a037e0cc18ee",
      "tree": "472ccebf67ff0c9347d1b1c073655e28064d5c05",
      "parents": [
        "372cecd692a39bc72a3d508755b5fb7a0d29618e",
        "3e376a74b3edd8c311e8d69ca5baf986c9da4a06"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 15:45:49 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 24 15:45:49 2009 -0700"
      },
      "message": "am 3e376a74: Merge change 5171 into donut\n\nMerge commit \u00273e376a74b3edd8c311e8d69ca5baf986c9da4a06\u0027\n\n* commit \u00273e376a74b3edd8c311e8d69ca5baf986c9da4a06\u0027:\n  Track native processes and airplane mode.\n"
    },
    {
      "commit": "32dbefda71c50bf848da21fb5d1255273439f90d",
      "tree": "b73db68d5802a75471a85fb93fa7109054e05a30",
      "parents": [
        "4133751d51a04172aa65e24658b4207ef764de91"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Jun 19 09:21:17 2009 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Jun 24 11:17:36 2009 -0700"
      },
      "message": "Track native processes and airplane mode.\n\nTurn signal strengths on/off when toggling airplane mode.\n"
    },
    {
      "commit": "5a12373277f6ce14101f08580bc4f08f9a3d7c50",
      "tree": "c25822c436308b2496b08b88dc1916b672802ba7",
      "parents": [
        "6b3ade68e0a2541600dc8bcc803c7b3d061b2153"
      ],
      "author": {
        "name": "Jacek Surazski",
        "email": "jaceks@google.com",
        "time": "Tue Jun 23 14:57:08 2009 +0200"
      },
      "committer": {
        "name": "Jacek Surazski",
        "email": "jaceks@google.com",
        "time": "Wed Jun 24 16:12:42 2009 +0200"
      },
      "message": "Add exception line number to ApplicationErrorReport\n"
    },
    {
      "commit": "64f59342d41849bd365cb43fad7505d5e3daa417",
      "tree": "b0cef479b2674ee78a8bff6e833224850a36f2ab",
      "parents": [
        "5a42b08389f3fe9195930ce5d2998e68bb09b748"
      ],
      "author": {
        "name": "Mitsuru Oshima",
        "email": "oshima@google.com",
        "time": "Sun Jun 21 00:03:11 2009 -0700"
      },
      "committer": {
        "name": "Mitsuru Oshima",
        "email": "oshima@google.com",
        "time": "Tue Jun 23 23:11:55 2009 -0700"
      },
      "message": "* new screen resolution support impl.\n  * use full window for activities, and shift \u0026 clip the content\n  * refactored the compatibility code, and introdcued Translator class to handle cooridnate translations.\n  * removed a workaround to handle an activity with configChagne\u003drotation in old implementation.\n  * I\u0027ll fix background issue on rotation in next CL.\n\n  * removed unnecessary scaling code in SurfaceView, which I forgot to remove when I changed SurfaceView\n    not to scale the content.\n"
    },
    {
      "commit": "4c279770347b387890bb9eb90d9c96ad07e6f9e9",
      "tree": "dc05c75c0687a0ecf2ca89d2bf8dfcaec7e651e8",
      "parents": [
        "ffa5a5a3dbef79dc6958c629080b1a6438a7b637",
        "722baf5ec47b57020ac39ec3e2b6cd1a02c3c4db"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 22:04:53 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 22 22:04:53 2009 -0700"
      },
      "message": "am 722baf5e: Merge change 5014 into donut\n\nMerge commit \u0027722baf5ec47b57020ac39ec3e2b6cd1a02c3c4db\u0027\n\n* commit \u0027722baf5ec47b57020ac39ec3e2b6cd1a02c3c4db\u0027:\n  Fix issue #1933587.  Perform dexopt of instrumentation .apks.\n"
    },
    {
      "commit": "3edc89fc5777e1c34f9a7fa072a562af6968ef88",
      "tree": "bd4726a46050da5bbb5e5b4b03c09c8704a261c6",
      "parents": [
        "cbf2f599ec066c6a4f33b3015d54fe2294404d6b",
        "54f156c7c47bd5b5f2c9675f56bddaaa43ad162e"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 19:47:24 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 22 19:47:24 2009 -0700"
      },
      "message": "am 54f156c7: Merge change 5006 into donut\n\nMerge commit \u002754f156c7c47bd5b5f2c9675f56bddaaa43ad162e\u0027\n\n* commit \u002754f156c7c47bd5b5f2c9675f56bddaaa43ad162e\u0027:\n  Pass the originating app\u0027s versionCode along with a restore set\n"
    },
    {
      "commit": "722baf5ec47b57020ac39ec3e2b6cd1a02c3c4db",
      "tree": "6d24dec955f30f03b1b6e268df7320b22f410f97",
      "parents": [
        "5277103db9033226814edc8fcba6f4ba4e846678",
        "d7f6daa5d182f21b41782057e8a9b72f7a1eb54a"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 18:30:05 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 18:30:05 2009 -0700"
      },
      "message": "Merge change 5014 into donut\n\n* changes:\n  Fix issue #1933587.  Perform dexopt of instrumentation .apks.\n"
    },
    {
      "commit": "d7f6daa5d182f21b41782057e8a9b72f7a1eb54a",
      "tree": "e373d3d928df396f8362e64974f4268edb0d4839",
      "parents": [
        "ecfb9f91afa49df7b9b62526dcaca431b5ff1e01"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 22 17:06:35 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 22 17:06:35 2009 -0700"
      },
      "message": "Fix issue #1933587.  Perform dexopt of instrumentation .apks.\n"
    },
    {
      "commit": "5cbbf5652a78902ac3382dc4a3583bc5b0351027",
      "tree": "58a0d7260ed8c441b638f6197b885d3b16656465",
      "parents": [
        "3a31a93b8a195ae2d0180e6dfbf292da2e581f50"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 22 16:44:51 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 22 16:44:51 2009 -0700"
      },
      "message": "Pass the originating app\u0027s versionCode along with a restore set\n\nThis change amends the doRestore() / onRestore() interface to backup agents to\nprovide the integer android:versionCode of the app that stored the backup set.\nThis should help agents figure out how to handle whatever historical data set\nthey\u0027re handed at restore time.\n"
    },
    {
      "commit": "5196d12a12dfcfb8b7deb74d74d69496f8e12b02",
      "tree": "c1d6bfaf49754951615c9d5996bdc3fbd7fddde2",
      "parents": [
        "cb85ef6a8b58f9fe04a1b0f397119353c82f3146",
        "3a31a93b8a195ae2d0180e6dfbf292da2e581f50"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 22 15:19:51 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 22 15:19:51 2009 -0700"
      },
      "message": "am 3a31a93b: Add some global metadata to the restore set\n\nMerge commit \u00273a31a93b8a195ae2d0180e6dfbf292da2e581f50\u0027\n\n* commit \u00273a31a93b8a195ae2d0180e6dfbf292da2e581f50\u0027:\n  Add some global metadata to the restore set\n"
    },
    {
      "commit": "3a31a93b8a195ae2d0180e6dfbf292da2e581f50",
      "tree": "a834618fe7ecf9cbb25f799c2fd558075dfc5eda",
      "parents": [
        "e146d824785078fed578f88b11ff47a7390d27c5"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 22 15:10:30 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jun 22 15:14:04 2009 -0700"
      },
      "message": "Add some global metadata to the restore set\n\nIn addition to the signatures of each participating application, we now also\nstore the versionCode of each backed-up package, plus the OS version running on\nthe device that contributed the backup set.  We also refuse to process a backup\nfrom a later OS revision to an earlier one, or from a later app version to an\nearlier.\n\nLocalTransport has been modified as well to be more resilient to changes in the\nsystem\u0027s use of metadata pseudopackages.\n"
    },
    {
      "commit": "4527acb0c39258792ae55604cb4d71006bf8d938",
      "tree": "f1e2b09db0abc31c15d56ec7e718a09aabd00861",
      "parents": [
        "ffe4ddfe95e8b31e0cb579ab537a1373f6208bcc",
        "856dd8a60a70a5b7dca2bf2114872ce063e2ad60"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 13:20:31 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 22 13:20:31 2009 -0700"
      },
      "message": "am 856dd8a6: Merge change 4952 into donut\n\nMerge commit \u0027856dd8a60a70a5b7dca2bf2114872ce063e2ad60\u0027\n\n* commit \u0027856dd8a60a70a5b7dca2bf2114872ce063e2ad60\u0027:\n  Helper API cleanup.  Allows multiple helpers to function,\n"
    },
    {
      "commit": "856dd8a60a70a5b7dca2bf2114872ce063e2ad60",
      "tree": "1ca8a159484890b5db5dcce3ca92e921e80f03e5",
      "parents": [
        "eb717b9c4337e5b88664802b0804f4cb48758120",
        "06290a4bb9b280fa14a2bbeb2d3ceb09396a78c3"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 13:18:09 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 13:18:09 2009 -0700"
      },
      "message": "Merge change 4952 into donut\n\n* changes:\n  Helper API cleanup.  Allows multiple helpers to function, because they\u0027ll always go in the same order, and this lets us not have to write headers to keep them paired.\n"
    },
    {
      "commit": "06290a4bb9b280fa14a2bbeb2d3ceb09396a78c3",
      "tree": "15fccf5ce4e9c42bba3fc7581ac2ddc0d8363dc9",
      "parents": [
        "eed76b2a8ddc41af01cd3ae87c4722f3784c975c"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Thu Jun 18 20:10:37 2009 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Mon Jun 22 13:02:24 2009 -0700"
      },
      "message": "Helper API cleanup.  Allows multiple helpers to function,\nbecause they\u0027ll always go in the same order, and this lets\nus not have to write headers to keep them paired.\n"
    },
    {
      "commit": "92eef877ca93b40b43efedb03324e230cbe2ab4c",
      "tree": "ddbd6b8815807e8f26bd69a55246819b7c867390",
      "parents": [
        "90c8f83538cc9dd79e68d167263095b98870fed4",
        "07a5f126df2cf0dbeb7096535ae634ea8eaeb306"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 10:56:47 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 22 10:56:47 2009 -0700"
      },
      "message": "am 07a5f126: Merge change 4754 into donut\n\nMerge commit \u002707a5f126df2cf0dbeb7096535ae634ea8eaeb306\u0027\n\n* commit \u002707a5f126df2cf0dbeb7096535ae634ea8eaeb306\u0027:\n  At boot time, add additional per-device information to the\n"
    },
    {
      "commit": "07a5f126df2cf0dbeb7096535ae634ea8eaeb306",
      "tree": "8d24267d7acce913adf101c5c1b2f1df45dc39c6",
      "parents": [
        "d6dd686bc7adba448af1bc36a022cddba9f9561f",
        "b8cba95ffd4d9be0edace7a9eb42286e668ef3e3"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 10:55:25 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 10:55:25 2009 -0700"
      },
      "message": "Merge change 4754 into donut\n\n* changes:\n  At boot time, add additional per-device information to the kernel randomness pool.  This helps increase the quality / uniqueness of the random numbers, and is especially important during the device\u0027s first boot, when insufficient randomness is available.\n"
    },
    {
      "commit": "72875cc599815387b9e0e774333129d0ee73f0a0",
      "tree": "04cccb4b65384c494f4ddd2e1c72960efe099cd1",
      "parents": [
        "82bc988eb3e9d4f2e0b7352b1cc9bff9f2bc4aa7",
        "6bf1208c58ab2c39f95c733a22df882c7a59f4fc"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 10:41:07 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 22 10:41:07 2009 -0700"
      },
      "message": "am 6bf1208c: Merge change 4827 into donut\n\nMerge commit \u00276bf1208c58ab2c39f95c733a22df882c7a59f4fc\u0027\n\n* commit \u00276bf1208c58ab2c39f95c733a22df882c7a59f4fc\u0027:\n  Fix issue with shared user permissions.\n"
    },
    {
      "commit": "6bf1208c58ab2c39f95c733a22df882c7a59f4fc",
      "tree": "9ed92d8ec7b89cd5cfcb017203ce33a752e27e95",
      "parents": [
        "be7f0f78afde931ce6ea2d4ba61c340fac5722f6",
        "b97b8f88063e64449da6d27a48b711ac60ccc6c8"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 10:39:15 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 10:39:15 2009 -0700"
      },
      "message": "Merge change 4827 into donut\n\n* changes:\n  Fix issue with shared user permissions. just look in the requested permissions of packages within shared user setting rather than the granted permissions\n"
    },
    {
      "commit": "b8cba95ffd4d9be0edace7a9eb42286e668ef3e3",
      "tree": "cf7c94031e0f4a59333127af74469bb07d10c6e7",
      "parents": [
        "649f99e8347984c1e031dae302830f4c9ebd3df4"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jun 19 09:45:35 2009 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jun 22 10:37:50 2009 -0700"
      },
      "message": "At boot time, add additional per-device information to the\nkernel randomness pool.  This helps increase the\nquality / uniqueness of the random numbers, and is especially\nimportant during the device\u0027s first boot, when insufficient\nrandomness is available.\n"
    },
    {
      "commit": "8afc1e97e0cb8e5aae42f12f6decd895bf3aba7a",
      "tree": "e105a1bf09837307b58c453891f57ba22be37473",
      "parents": [
        "fc68623c03439db95401a18a435dbc491cd7f6fd",
        "b92c45a4bc4331378a31bb4bc84de02fa631a247"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 19 16:44:10 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jun 19 16:44:10 2009 -0700"
      },
      "message": "am b92c45a4: Merge change 4831 into donut\n\nMerge commit \u0027b92c45a4bc4331378a31bb4bc84de02fa631a247\u0027\n\n* commit \u0027b92c45a4bc4331378a31bb4bc84de02fa631a247\u0027:\n  Add app version to the backup metadata\n"
    },
    {
      "commit": "b97b8f88063e64449da6d27a48b711ac60ccc6c8",
      "tree": "fbbea4d73d785964031fe8d54c0dcab03aafdab6",
      "parents": [
        "6afe81339ed973f1ef4a6c30110d5ce3b001ea4c"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Jun 19 15:09:18 2009 -0700"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Jun 19 16:02:27 2009 -0700"
      },
      "message": "Fix issue with shared user permissions.\njust look in the requested permissions of packages within shared user setting rather than the granted permissions\n"
    },
    {
      "commit": "6aa41f4c575479672661f7eb4c704ef59d26a629",
      "tree": "5af2115ba57391f6ec3e057487e6b539886034de",
      "parents": [
        "3af8e9389e008c0076b86cc6b3c6f005e7473d10"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 19 14:14:22 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jun 19 15:24:51 2009 -0700"
      },
      "message": "Add app version to the backup metadata\n\nWe now record the version number of the app (drawn from its manifest versionCode\nattribute) along with its signatures.  At restore time, we compare the version\nassociated with the restore set with the version present on the device.  If the\nrestore set is from a newer version of the app than is present on device, we do\nnot perform the restore operation.\n\nAlso fix the pending-backup iteration in \u0027dumpsys backup\u0027.\n"
    },
    {
      "commit": "cd83fd74ad77f494893d01b308c227e46ec59596",
      "tree": "dea144616097d124f7fcca01fad121427c0b0827",
      "parents": [
        "451c7fc49d65b93242e3dbbaae5c0625afca6598",
        "82a73dfb27e9766ffffa4ece032a06471c646575"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 19 13:59:48 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 19 13:59:48 2009 -0700"
      },
      "message": "Merge change 4815\n\n* changes:\n  GoogleFeedback handles errors in core apps.\n"
    },
    {
      "commit": "82a73dfb27e9766ffffa4ece032a06471c646575",
      "tree": "3da7c2b51cb2a47861ed6702eec78f099f7f6287",
      "parents": [
        "bd9ae1c2548a2aeafa0076e798e9499eeb3c7d32"
      ],
      "author": {
        "name": "Jacek Surazski",
        "email": "jaceks@google.com",
        "time": "Wed Jun 17 14:33:18 2009 +0200"
      },
      "committer": {
        "name": "Jacek Surazski",
        "email": "jaceks@google.com",
        "time": "Fri Jun 19 22:05:02 2009 +0200"
      },
      "message": "GoogleFeedback handles errors in core apps.\n\nAdds support for system properties:\n  ro.error.receiver.system.apps - default error report receiver for system apps\n  ro.error.receiver.default - fallback error report receiver\n"
    },
    {
      "commit": "c13713519dd92f0008415bef8499d85bd7e3edb4",
      "tree": "c66d19b944b1ce328fc8cd3fd50c14dd918bb70e",
      "parents": [
        "36adccf74fcc58aa0cc8b2a79abefec7c22a867d",
        "3d74bb4ab27ae9601f5c9c3706fad287845fb672"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 19 11:49:27 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jun 19 11:49:27 2009 -0700"
      },
      "message": "am 3d74bb4a: Add \"why?\" button to low battery dialog.\n\nMerge commit \u00273d74bb4ab27ae9601f5c9c3706fad287845fb672\u0027\n\n* commit \u00273d74bb4ab27ae9601f5c9c3706fad287845fb672\u0027:\n  Add \"why?\" button to low battery dialog.\n"
    },
    {
      "commit": "3d74bb4ab27ae9601f5c9c3706fad287845fb672",
      "tree": "535a85ff083f52453637c2ece5d643e79276c142",
      "parents": [
        "03255de32d127d17504b6d475e6e79190dd637f8"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 19 10:35:21 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 19 11:46:58 2009 -0700"
      },
      "message": "Add \"why?\" button to low battery dialog.\n\nThis takes the user to the power usage activity.\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": "061c3b505814053513741eb2c13e75a322ce9b20",
      "tree": "37b07275f0af77bd5eef8854f5aad53c135ba1e0",
      "parents": [
        "ba165caf441f25e180922f83ce02f91d6e0012f2",
        "fd5f087536dcb04ac9c46f2b19f87a37455390b0"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 18 20:51:09 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 18 20:51:09 2009 -0700"
      },
      "message": "am fd5f0875: Merge change 4721 into donut\n\nMerge commit \u0027fd5f087536dcb04ac9c46f2b19f87a37455390b0\u0027\n\n* commit \u0027fd5f087536dcb04ac9c46f2b19f87a37455390b0\u0027:\n  Make signature checks on restore work with unsigned apps\n"
    },
    {
      "commit": "20efdf6b56e54b0520d8629cd706045dc8d280d3",
      "tree": "8f1a5cd2f092c418c93e234c61ad6bcefc72e9fd",
      "parents": [
        "63e7155c7d1d0c3f0027400aa09e9a45f648a80d"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jun 18 19:41:36 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jun 18 19:42:24 2009 -0700"
      },
      "message": "Make signature checks on restore work with unsigned apps\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"
    }
  ],
  "next": "63e7155c7d1d0c3f0027400aa09e9a45f648a80d"
}
