)]}'
{
  "log": [
    {
      "commit": "28a1b67a1ce87909a7afce6015753a8801c97bc6",
      "tree": "bc9f2f0130bd5593c0151ebfb63e9595c16f188d",
      "parents": [
        "c00099ef62fc496429d0a06e580b600f61304f9c"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@google.com",
        "time": "Thu Oct 01 11:00:24 2009 -0400"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@google.com",
        "time": "Thu Oct 01 11:00:24 2009 -0400"
      },
      "message": "Remove unneeded icon.\n\n(Obviated by commit a408791148e816215f65ad81a187051c5fb47c68.)\n\nChange-Id: I6e01fa52f2bbeb28c969e6a033ab0b1032cbc848\n"
    },
    {
      "commit": "c8217638be7e39161fa31bfe240a64a563690dbf",
      "tree": "a6f5e9f6b160d751bc28dfc79156ff1a0f11fd36",
      "parents": [
        "c868acf442a69429056a574c67a5e0187e2b9536"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Sep 30 16:57:51 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Oct 01 15:18:28 2009 +0800"
      },
      "message": "Fix stopping all vpn daemons before connect and more.\n\n* move DaemonHelper out from VpnService to VpnDaemons for better\n  managing native daemons.\n* check connectivity and dns less frequently to save battery.\n"
    },
    {
      "commit": "13f4a64ddd0d81ffa04cb2ff4fd4c6500d6d21ed",
      "tree": "56eeecca25641672f16693070ca98c799151a40f",
      "parents": [
        "6988dd59680ba4ec67c0e6ad14444e4763af8d01"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Wed Sep 30 20:06:45 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Wed Sep 30 20:06:45 2009 -0700"
      },
      "message": "Turn off the last of the STOPSHIP verbose debugging\n\nChange-Id: Id93f4c9e9fb8468a554ae1e5c5c767f72903662c\n"
    },
    {
      "commit": "436344ae12c819f58306ceb94241a266141e1218",
      "tree": "32688c8fbc1d40fe88ef86d034052f9608176d14",
      "parents": [
        "7e1af37c3148112d9c801272bfa6359a005baf6d"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Wed Sep 30 16:17:37 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Wed Sep 30 17:07:37 2009 -0700"
      },
      "message": "Turn off most of the backup-related debug logging\n\nThe core logging in BackupManagerService and in the Google backup transport are\nstill enabled at this point.\n\nChange-Id: I10abfa565bbd1097dd3631051b6aca163e4af33a\n"
    },
    {
      "commit": "170d9df0f3e3d7ad5652ccfe0d0bd53d74685d1d",
      "tree": "dca67fced05c92a5ef60d9c276e06c4d1723df69",
      "parents": [
        "85d86af982026145aa69a4ca280d394b9ea90372",
        "2d4deb11e14ce8afae92625747bedeb668621f17"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 30 14:17:23 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 30 14:17:23 2009 -0400"
      },
      "message": "Merge change I2d4deb11 into eclair\n\n* changes:\n  Placeholder mdpi assets\n"
    },
    {
      "commit": "2d4deb11e14ce8afae92625747bedeb668621f17",
      "tree": "800bdc2a51eec30c19428621f0c61f035ce66be4",
      "parents": [
        "a408791148e816215f65ad81a187051c5fb47c68"
      ],
      "author": {
        "name": "Mike Cleron",
        "email": "mcleron@google.com",
        "time": "Wed Sep 30 10:58:37 2009 -0700"
      },
      "committer": {
        "name": "Mike Cleron",
        "email": "mcleron@google.com",
        "time": "Wed Sep 30 10:58:37 2009 -0700"
      },
      "message": "Placeholder mdpi assets\n"
    },
    {
      "commit": "4ca8c837d3aca781e0ba641ed4353827bfd05805",
      "tree": "301e967a995e9c584295754a985211a23c3d7c8e",
      "parents": [
        "3ba351267a3815a3c9a08e2ac7f62a39f83d7776",
        "a408791148e816215f65ad81a187051c5fb47c68"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 30 04:26:06 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 30 04:26:06 2009 -0400"
      },
      "message": "Merge change Ia4087911 into eclair\n\n* changes:\n  Newer icons\n"
    },
    {
      "commit": "a408791148e816215f65ad81a187051c5fb47c68",
      "tree": "bfc8c63c5dc0b4e4acfe82aeb98c4249679bc914",
      "parents": [
        "b4ee8349cc7e64a264335ee2dfecc00980eca07a"
      ],
      "author": {
        "name": "Mike Cleron",
        "email": "mcleron@google.com",
        "time": "Wed Sep 30 01:04:36 2009 -0700"
      },
      "committer": {
        "name": "Mike Cleron",
        "email": "mcleron@google.com",
        "time": "Wed Sep 30 01:04:36 2009 -0700"
      },
      "message": "Newer icons\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": "ee9b30d3947f0abc5c84f2a55dd5e2d200a7c7cd",
      "tree": "0feb5a7120f77aee3f4210485378a6d76d4df029",
      "parents": [
        "8f76734d1e9a21618ad9762c0716ee93f60902ec"
      ],
      "author": {
        "name": "Mike Cleron",
        "email": "mcleron@google.com",
        "time": "Tue Sep 29 13:01:09 2009 -0700"
      },
      "committer": {
        "name": "Mike Cleron",
        "email": "mcleron@google.com",
        "time": "Tue Sep 29 13:01:09 2009 -0700"
      },
      "message": "New icons\n"
    },
    {
      "commit": "141e4f1d69186104c3e169ee7365b62bc425859a",
      "tree": "23a22e772a65809616636f550a026d3cf13edcf9",
      "parents": [
        "8e55eaccffeda078d7389b7fb66b0c6df347bf31",
        "362aca60453ec7f27abb4d83fc29dd82095dc882"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Sep 27 13:20:44 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Sep 27 13:20:44 2009 -0400"
      },
      "message": "Merge change 27177 into eclair\n\n* changes:\n  Add auto-brightness mode to the list of backed-up settings\n"
    },
    {
      "commit": "075a18d607c3aa8386b4d06aea22f4bfacbe447b",
      "tree": "c8721f05ef9260fa41019387b789c447857fa9d5",
      "parents": [
        "5648dbb1dabc0231fe953ad45916c067c79986c8"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Sep 26 12:43:19 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Sep 26 12:43:19 2009 -0700"
      },
      "message": "Turn on haptic feedback by default.\n\nChange-Id: I85efeca1a0aca91992e28236077c668e0d14cbbb\n"
    },
    {
      "commit": "362aca60453ec7f27abb4d83fc29dd82095dc882",
      "tree": "969cb80290828cc7da7393a0b320740207c5b79d",
      "parents": [
        "3546825421cab5330583633ed854134c35d1c08d"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Fri Sep 25 15:58:03 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Fri Sep 25 17:14:57 2009 -0700"
      },
      "message": "Add auto-brightness mode to the list of backed-up settings\n\nChange-Id: I4302b79691ed717d810748b239311cba198f6381\n"
    },
    {
      "commit": "796e0f0ed531b7ff9922cd632d70d8f1da8f5829",
      "tree": "a6f38b667d7a37970bca3812d8f73a4de7dd9269",
      "parents": [
        "63147705bc2893d6ad43270e04beb9ee01e2ad53"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Tue Sep 22 11:57:58 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Tue Sep 22 15:04:25 2009 -0700"
      },
      "message": "Don\u0027t restore any setting that we don\u0027t think should be backed up\n\nThe ad-hoc blacklist has been replaced by a check that whitelists each restored\ndatum against the set of keys that we actually back up.  Keys read from the\nrestore data which are not found in the whitelist are not applied.\n\nAlso adds in some more debugging output, marked to be disabled for ship.\n"
    },
    {
      "commit": "5b4aa6db428263aa0a48ab3efb896df66a852bce",
      "tree": "ad3188045edea2fa89842e61d75e46c27b8c035e",
      "parents": [
        "585c67f70f18b8879ced854c5865141d6c650cd8",
        "6ee4e59c1d10a80d0b873a1e93108b85c283323a"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 22 12:02:39 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 22 12:02:39 2009 -0400"
      },
      "message": "Merge change 26315 into eclair\n\n* changes:\n  VpnService: use Credentials instead of CertTool.\n"
    },
    {
      "commit": "6ee4e59c1d10a80d0b873a1e93108b85c283323a",
      "tree": "69004145b21ebcf976418f2a43010c4991dfa9bc",
      "parents": [
        "613fcc850686dfe71cec9809c3694be9cf02cdc7"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 22 10:13:01 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 22 10:13:01 2009 +0800"
      },
      "message": "VpnService: use Credentials instead of CertTool.\n"
    },
    {
      "commit": "bfe319e06aa56c081d0d94d64a8181291d7f7388",
      "tree": "d0015a99d27fd84554b4b8757304f4b017f75d50",
      "parents": [
        "a7719af31290bea50d822b535b6a886ba7a88097"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Sep 21 00:34:05 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Sep 21 17:26:41 2009 -0700"
      },
      "message": "Turn animations on by default.\n\nAdd API to skip the animation for a particular start activity, so that\na latter better one can be used.\n\nFix Theme.NoDisplay to actually work.\n\nFiddle with various animations: don\u0027t do a different animation for task\nswitching, try a scale animation for switching in/out of the wallpaper.\n\nAdjust the animation duration so that at normal speed we have something\nmore like the slower animation option (so slow is now the default).\n\nChange-Id: Ieba9f3db0bd9a762a19b327a3ecccbc7b547893d\n"
    },
    {
      "commit": "a286f419084d56217f05a64f1d24c9e07917212e",
      "tree": "d6c4d63e55f7176e837c57467bdc25f3919aa774",
      "parents": [
        "90d8a6a449dc12fea2b56b557c243e33746d914a"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Fri Sep 18 15:51:15 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Fri Sep 18 15:56:14 2009 -0700"
      },
      "message": "Don\u0027t back up / restore certain sync-related settings\n\nIn particular, this no longer attempts to back up the on/off state of specific\nbackend syncing [gmail/contacts/calendar], nor the \"background data\" toggle.\nThe former was causing a great deal of spurious trips through backup as the\nnotification was being tickled during general sync operation, and the latter\nmakes little sense at restore time.\n\nFixes these issues:\n\nb/2097613 - frequent \"backup_data_changed\" messages in event log\nb/2131662 - should not backup background data, master sync settings\n"
    },
    {
      "commit": "4175b5f34a66057d564d955de91d0428f40928be",
      "tree": "b529022f58e79c9d93230641cce5c76774f09b92",
      "parents": [
        "d55de40481c6ec7d8fbd1a38c80a6c66bf462a71"
      ],
      "author": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Thu Sep 17 14:28:06 2009 -0700"
      },
      "committer": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Thu Sep 17 14:28:06 2009 -0700"
      },
      "message": "Import revised translations.  DO NOT MERGE\n"
    },
    {
      "commit": "237a29923a05663a2195bf93b392768dbaf31ebf",
      "tree": "37a21b8413a9c6be00843a56fd0bb63b1cd05e85",
      "parents": [
        "f02c0740d3039977149773604a229c9f76c8121d"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Sep 15 14:42:16 2009 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Sep 15 15:47:09 2009 -0400"
      },
      "message": "Move backlight brightness from HardwareService to PowerManager\n\nto prevent apps from changing the hardware behind its back.\nFixes b/2041941 Lock screen flashes the screen very bright before dimming\n\nChange-Id: Ice757f7ae87902bdfb3634471cf44f020ebfaae4\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "951764b97010dfa073126f52b43ea1bdf1b35998",
      "tree": "a4385faacb89cb30250d2a8ce0da611d1eefddc2",
      "parents": [
        "151921a62485f2141ad1316076c196ef00e1b421"
      ],
      "author": {
        "name": "Dan Murphy",
        "email": "D.Murphy@motorola.com",
        "time": "Thu Aug 27 14:59:03 2009 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Sep 15 02:29:15 2009 -0400"
      },
      "message": "Add automatic lighting control framework\n\nAdd changes to have the ability to turn on and off the\nautomatic light sensing for the device.  This is fully configurable\nand is by default not  present.  Vendors should override the ALS setting\nto enable the automatic lighting controls.\n\nThese changes will add a check box to the Brightness settings menu to give control\nto the user to allow the device\u0027s display lighting to be controlled via the slide bar\nor the auto lighting system.\n\nIf the user selects auto then the slide bar will become invisible.  Manual mode\nwill present the slide bar to the user.\n\nChange-Id: I146a6d75b99b08c9b839218ce6b85adf21f9fd73\nSigned-off-by: Dan Murphy \u003cD.Murphy@motorola.com\u003e\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "0738e8893540e8f7fac7c193be5fe24b67f04672",
      "tree": "7df84f31b4b81566887d7745d8ea723a76d3376d",
      "parents": [
        "b14a14194c64094cdffadeca1480b08c943215a9"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Fri Sep 11 16:35:39 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Fri Sep 11 16:35:39 2009 -0700"
      },
      "message": "Don\u0027t backup/restore telephony material from secure settings\n\n* Remove several nonportable telephony settings from the set to be included in\n  the backed-up dataset\n\n* Explicitly ignore those settings if they\u0027re encountered during a restore\n  operation, so that we don\u0027t inadvertently do things like configure a GSM\n  phone to use CDMA logic.\n"
    },
    {
      "commit": "2cfab8445851c59f7da07d81645ece8d70e8ce28",
      "tree": "2fc0d35a26485ba5dade4a232e2e88fd79ed05c5",
      "parents": [
        "e1a9de7a2e52e534b3f6cb613a9b35bcc16ac84d"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Sep 09 18:27:31 2009 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Sep 11 11:21:19 2009 -0700"
      },
      "message": "Save and restore partial supplicant data, not the whole file.\n\nThis makes it compatible between different device types with different\nwifi chipsets.\n"
    },
    {
      "commit": "f186055a53758fd4112ab3c470cda6337a18fa33",
      "tree": "8389f2025039b684c2bc9d3ece4af453b520b7e3",
      "parents": [
        "f416264a3b13c5965bfe1c75e9fb2a480d556f87"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Wed Sep 09 17:46:35 2009 -0700"
      },
      "committer": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Wed Sep 09 19:10:57 2009 -0700"
      },
      "message": "Fix for bug # 2023074: settings db updater broken at version 34.\n"
    },
    {
      "commit": "5cacfb9df2eadc439052ea26c9d67a89376d2b31",
      "tree": "8fd98f026b548e7b39d7cebb7b115dd50693ac3d",
      "parents": [
        "b80f698362e84b83e1c44c92fb76b0fdf1a5ef6d"
      ],
      "author": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Tue Sep 08 16:23:44 2009 -0700"
      },
      "committer": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Tue Sep 08 16:54:05 2009 -0700"
      },
      "message": "Import revised translations.  DO NOT MERGE\n"
    },
    {
      "commit": "5e1ab335e6e8fbfa19c64d53880a22f472010953",
      "tree": "4da429b3833ff29256d23f9e2e7f1b3a41715b65",
      "parents": [
        "c937b5ce4ff2f39fd9c60f718f98550a932b62f0"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Tue Sep 01 20:32:49 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Tue Sep 01 20:59:36 2009 -0700"
      },
      "message": "Expand apps\u0027 control over the settings restore process\n\nApplications can now specify two more aspects of the restore process:  whether\nthey need to run with their own custom Application subclass rather than being\nlaunched in the usual restricted mode during restore, and whether it\u0027s okay for\nthe backup manager to kill the app process once restore has completed.  The new\nmanifest attributes for these are, respectively, android:restoreNeedsApplication\nand android:killAfterRestore.\n\nIf unspecified in the manifest, restoreNeedsApplication is false, and\nkillAfterRestore is true.\n\nIn order to support kill-after-restore cleanly, this change also adds a new\nsystem-process-only interface to the Activity Manager, which will schedule a\n\"commit suicide\" event on the target app\u0027s main thread looper.\n\nThe framework backup agents have been given the appropriate new backup\nattributes as well.\n"
    },
    {
      "commit": "3218471bcdfc87b2267f68d18522bdaf1d351120",
      "tree": "9cdede81e943996d6a91823722de8948d3ef75a9",
      "parents": [
        "a01726a7fdd872cd8e1e8a9dfa52fb9cdbf01019"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Sep 01 10:22:51 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Sep 01 13:46:43 2009 -0700"
      },
      "message": "Modify the gain after filtering to prevent TTS clipping in en-US.\n"
    },
    {
      "commit": "b00941804890858ddc3b680c7a8e171c7dfdfb5f",
      "tree": "98b547fdd063434b86aba7293c34cd5aeaa0145e",
      "parents": [
        "550d48f3342f01ccf6c310845e8c0b986ab7b506"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Aug 31 14:46:18 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Aug 31 14:46:18 2009 -0700"
      },
      "message": "Clean TTS logs: use a common TAG in the TTS service, don\u0027t show\nan error when loading the native synth lib.\n"
    },
    {
      "commit": "550d48f3342f01ccf6c310845e8c0b986ab7b506",
      "tree": "bb7810410c8d11aec4e8f444ca12f136bb559dd8",
      "parents": [
        "9399a3de6acb6e598fdceae2684ff9bb9d8c1050",
        "09f8db7ad3963f5fa15f2b99880b2f70e89c30ae"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 31 14:12:53 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 31 14:12:53 2009 -0700"
      },
      "message": "Merge change 23300 into eclair\n\n* changes:\n  Add a synchronous stop method to TTS synth engine so that upon its destruction, if it was synthesing to a file, the latter can be deleted without still being written to. Clear the hashmap of SpeechItem to be stopped (mKillList) when the speech queue is empty.\n"
    },
    {
      "commit": "09984e8eb77666e978ed7450de67e2118d874b55",
      "tree": "6f00fdfd63974b5a913504f6b11794b534602f22",
      "parents": [
        "de5cd3d8646f312987062f46616466ae191aa984"
      ],
      "author": {
        "name": "Ye Wen",
        "email": "ywen@google.com",
        "time": "Mon Aug 31 12:57:50 2009 -0700"
      },
      "committer": {
        "name": "Ye Wen",
        "email": "ywen@google.com",
        "time": "Mon Aug 31 12:57:50 2009 -0700"
      },
      "message": "Set result code in REMOTE_INTENT receiver for subscribed feeds.\n"
    },
    {
      "commit": "09f8db7ad3963f5fa15f2b99880b2f70e89c30ae",
      "tree": "e83c6d439d9f345cd0b2415ecf3658d3041f2cdc",
      "parents": [
        "1615ccc8a45ea2521339ae6f5b5d543a131915cf"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Aug 31 10:41:55 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Aug 31 11:39:20 2009 -0700"
      },
      "message": "Add a synchronous stop method to TTS synth engine so that upon its destruction,\nif it was synthesing to a file, the latter can be deleted without\nstill being written to.\nClear the hashmap of SpeechItem to be stopped (mKillList) when the speech\nqueue is empty.\n"
    },
    {
      "commit": "62e592a61b3262602845f0eac1f1ad3e4d1f4c50",
      "tree": "1e970797a71f55c42dd3b5b306921e45475ac63d",
      "parents": [
        "0d430593ee07b78894eff8b78f559d2591a94287",
        "cfce0aa58bd5b8ccdd29a6d78b04786eed75c374"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 28 10:48:29 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 28 10:48:29 2009 -0700"
      },
      "message": "Merge change 23023 into eclair\n\n* changes:\n  Armor string format tokens with translation placeholders.\n"
    },
    {
      "commit": "0d430593ee07b78894eff8b78f559d2591a94287",
      "tree": "6b1778100093f979457b9118dd56c03995adbdc7",
      "parents": [
        "6d45accc7166c84f94fdb5ca35602463ec4a32a4",
        "ab6ed2c2b9cebd97cb501da58d386f59e4a99103"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 28 10:43:54 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 28 10:43:54 2009 -0700"
      },
      "message": "Merge change 23108 into eclair\n\n* changes:\n  Launch synthesis thread at max priority to prevent hicups in playback. Return and log an error when an operation cannot be completed because the speech queue is locked longer than the timeout period. Log cleanup.\n"
    },
    {
      "commit": "cfce0aa58bd5b8ccdd29a6d78b04786eed75c374",
      "tree": "098baffbb1cf89e935cd43730ae68ca044c201b0",
      "parents": [
        "b2795f46bf4c2354493e05ef00a16e350af11ae8"
      ],
      "author": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Thu Aug 27 17:22:26 2009 -0700"
      },
      "committer": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Fri Aug 28 10:40:03 2009 -0700"
      },
      "message": "Armor string format tokens with translation placeholders.\n\nChange-Id: I2f1b1f0e9b028a9f66c4543afe5c7bdce486db15\n"
    },
    {
      "commit": "ab6ed2c2b9cebd97cb501da58d386f59e4a99103",
      "tree": "127e4b1ebe0c709d89755fc3f3022605df7027b6",
      "parents": [
        "1005569fbb459007ff9d9fddbfa6e49947166166"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Aug 28 09:25:11 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Aug 28 09:25:11 2009 -0700"
      },
      "message": "Launch synthesis thread at max priority to prevent hicups in playback.\nReturn and log an error when an operation cannot be completed because\nthe speech queue is locked longer than the timeout period.\nLog cleanup.\n"
    },
    {
      "commit": "cef28e74afea535c038910d129a1dbe15969c49e",
      "tree": "4a44caa3364639138433f6a497cba19f351e3d64",
      "parents": [
        "3cff76aaa893049d02467a231d477e86a0f80daa"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Aug 27 18:45:21 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Aug 28 09:59:39 2009 +0800"
      },
      "message": "Simplifies err code propagation.\n\n* Other changes\n  + Re-assign err codes in VpnManager.\n  + Add new err codes: REMOTE_PPP_HUNG_UP, PPP_NEGOTIATION_FAILED.\n  + Delete the state file only if it exists (to prevent logging an\n    unable-to-unlink error).\n  + Extend timeout to 40 seconds.\n"
    },
    {
      "commit": "4813b51ec7f9f485a9f98583d4a90ca3d1bed6f7",
      "tree": "9799b8b10698a75de05e6ea30fd6b776e015f1b4",
      "parents": [
        "1339614e67ff81b22d961e10d39f36118c536752",
        "a3046b6f7f81cc16afeba9aee880c2ed643ccfbf"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 26 17:18:47 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 26 17:18:47 2009 -0700"
      },
      "message": "Merge change 22838 into eclair\n\n* changes:\n  Implement clean killing of the TTS service. If files were being synthesized to while the service was being killed, it would have left partially written files (with no header). This CL checks if the service is rendering to a file at the time the service is destroyed: if it is, it will stop the rendering and deletes the file.\n"
    },
    {
      "commit": "a3046b6f7f81cc16afeba9aee880c2ed643ccfbf",
      "tree": "7501928d77ba8aafdb8c6ffcd885e4c39ded2690",
      "parents": [
        "b321625b859f2db4407810929ca6fa6074f65403"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Aug 26 16:36:24 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Aug 26 17:06:52 2009 -0700"
      },
      "message": "Implement clean killing of the TTS service.\nIf files were being synthesized to while the service was being killed,\nit would have left partially written files (with no header). This CL\nchecks if the service is rendering to a file at the time the service\nis destroyed: if it is, it will stop the rendering and deletes the file.\n"
    },
    {
      "commit": "c848b7023bcb19d7a392eb9f4669e56906e5382c",
      "tree": "a45c5f82309d22d535083bfd6cbbebb6123c898e",
      "parents": [
        "ba176d6c8ad581e65b46bd6835c0737e74ef453d"
      ],
      "author": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Tue Aug 25 20:18:46 2009 -0700"
      },
      "committer": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Tue Aug 25 20:31:05 2009 -0700"
      },
      "message": "clean up the too many deletes dialog\n"
    },
    {
      "commit": "0de065e68cc2141513c5b45643123ecb2947858c",
      "tree": "cc5d74b08cc0232cd9c7ee811882b04dba8fd1e0",
      "parents": [
        "9acc030be474db2bc2371440a12cbdc478238689",
        "02901eb7f21751b8a9486ffa9f50531bd59133a2"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 25 16:00:54 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 25 16:00:54 2009 -0700"
      },
      "message": "Merge change 22661 into eclair\n\n* changes:\n  SettingsProvider: Fix botched merge from donut to eclair.\n"
    },
    {
      "commit": "02901eb7f21751b8a9486ffa9f50531bd59133a2",
      "tree": "9eb1d95cc614a3863b748ba09d4d80e205020c0b",
      "parents": [
        "678771b8118c3289aff6814775cbb30fa8aada29"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 25 15:11:17 2009 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 25 15:56:50 2009 -0700"
      },
      "message": "SettingsProvider: Fix botched merge from donut to eclair.\n\ndonut and eclair had different ideas of what it means to upgrade from verion 34 to 35.\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "c30d4aff04d46f8a48bb947875cfce5de6fc262a",
      "tree": "10cf8071c42b51a5e76e617778dd6d3c718575c6",
      "parents": [
        "dbade9d6a075b1d5b8ebe10ee8961a5de296c93b"
      ],
      "author": {
        "name": "Cynthia Wong",
        "email": "cynthiaw@google.com",
        "time": "Tue Aug 25 11:46:00 2009 -0700"
      },
      "committer": {
        "name": "Cynthia Wong",
        "email": "cynthiaw@google.com",
        "time": "Tue Aug 25 11:46:00 2009 -0700"
      },
      "message": "Only try to sync to subscribedfeeds for google acounts.\n"
    },
    {
      "commit": "cb7d38380cb2ca57e98cd39a96b32a1e804bf00b",
      "tree": "97d023f9926709c8bbe23292f0c6d02ffe2dc770",
      "parents": [
        "7bc08e9d51d3142717a94098f897a776f7b7bd71"
      ],
      "author": {
        "name": "Cynthia Wong",
        "email": "cynthiaw@google.com",
        "time": "Mon Aug 24 14:26:46 2009 -0700"
      },
      "committer": {
        "name": "Cynthia Wong",
        "email": "cynthiaw@google.com",
        "time": "Mon Aug 24 14:31:28 2009 -0700"
      },
      "message": "Subscribe to subscribedfeeds whenever the accounts change, this is basically a giant hack to let the gsync server know about the subscriptions for accounts.\n"
    },
    {
      "commit": "0deb41abc68ff05b6c2e06175982f9d22a5abd92",
      "tree": "fdeadc307fbb7eee422838a6a813fd66432412c6",
      "parents": [
        "969c2eaa3ac2501931b0ce67d831262e6f3d6cf6",
        "0950c5de864d1ad83ed96efc5c2d1569b4d36188"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Aug 18 08:44:51 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 18 08:44:51 2009 -0700"
      },
      "message": "am 0950c5de: Merge change 21226 into donut\n\nMerge commit \u00270950c5de864d1ad83ed96efc5c2d1569b4d36188\u0027 into eclair\n\n* commit \u00270950c5de864d1ad83ed96efc5c2d1569b4d36188\u0027:\n  Fix bug 2046705 where the output of the speech synthesizer is too low.\n"
    },
    {
      "commit": "bd022f423a33f0794bb53e5b0720da2d67e4631c",
      "tree": "4def583f15b783ada3d49866a8cd29bcdb1bbe00",
      "parents": [
        "82e7408be29c6c8c6ed80887ea97f48f38b3223d"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Fri Aug 14 18:33:38 2009 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Tue Aug 18 08:24:22 2009 -0700"
      },
      "message": "Bluetooth: API change.\n\nSplit BluetoothDevice into BluetoothDevice and BluetoothAdapter.\n\nBluetoothAdapter: Represents the local BT adapter. Operations on the local\n                  adapter (start a scan, etc).\nBluetoothDevice: Represents a remote BT device. Operations on remote devices\n                 (pair, connect, etc).\n\nIBluetoothDevice.aidl -\u003e Bluetooth.aidl\nBluetoothDeviceService.java -\u003e BluetoothDeviceService.java\n\nTODO:\nJavadoc\n"
    },
    {
      "commit": "ffd0cb04f97e62d286d185c520580d81a9c328b1",
      "tree": "d864589d0cfa54abc971091b172d1497cb79adcb",
      "parents": [
        "fa2944d93f4c5050fb4a99d90006791c2995b31c"
      ],
      "author": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Sat Aug 15 21:45:26 2009 -0700"
      },
      "committer": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Sat Aug 15 22:40:25 2009 -0700"
      },
      "message": "do not merge: cherrypicked 3710f390968e683a0ad3adf0b517dfcade3564ce from master branch\n"
    },
    {
      "commit": "4fb7d882b27a71cc1d15ccaf130a0ccd201ae2e0",
      "tree": "e5af26a429ca3ff7e65eef94d8b011604a906f75",
      "parents": [
        "b8546001701405a76dad7e6235046e592296fac2"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Aug 13 19:05:45 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Aug 14 10:05:19 2009 -0700"
      },
      "message": "Fix bug 2046705 where the output of the speech synthesizer is too low.\nThe language files for the SVOX Pico engine result in the output of\nthe synthesizer to be too soft, and barely audible on a phone speaker.\nThe change implements a low shelf filter on the output of the synthesis\nand a drastic amplification. This works as intended because the\nsynthesized data contains too much energy in the lower frequencies that\nis wasted on a phone speaker. Once filtered out, they leave room for\namplication to address the volume issue.\n"
    },
    {
      "commit": "0749dcd19301fe4093f9cf8677c722d17bceabfb",
      "tree": "47d8c3c6a33915475b99ce1d233d398365a38f72",
      "parents": [
        "763101efcdcf306142af891f98eaaa971e6edaf0"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Thu Aug 13 15:13:03 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Thu Aug 13 15:15:55 2009 -0700"
      },
      "message": "Backup participants must now hold the BACKUP_DATA permission\n\nPackages that do not use android.permission.BACKUP_DATA will neither be backed\nup nor restored.  That permission is currently signature-only.  In the future if\naccess to the backup/restore infrastructure is made available to arbitrary 3rd\nparty applications, the permission checks (and indeed, the permission itself)\ncan simply be removed.\n"
    },
    {
      "commit": "337cf910b3d8c02c6cc108bdf3d79a3920f39b1a",
      "tree": "17284d32738d813b478c313eb2e5bd5ec05fea91",
      "parents": [
        "74e29664218ebf36a5d170794cf8daab794a611e",
        "eccd6fdd0d86b8610b738fc15c707eedc00ec9dc"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Aug 12 12:04:40 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 12 12:04:40 2009 -0700"
      },
      "message": "am eccd6fdd: Merge change 20673 into donut\n\nMerge commit \u0027eccd6fdd0d86b8610b738fc15c707eedc00ec9dc\u0027\n\n* commit \u0027eccd6fdd0d86b8610b738fc15c707eedc00ec9dc\u0027:\n  Fix bug 2043140.\n"
    },
    {
      "commit": "77208f852c232033c5ae617ab93cf05a8af46b51",
      "tree": "075adf5361bec3b2a0d527fdc1f6ff4e002f1deb",
      "parents": [
        "cff53466bb60bb346ab45be91c3fa578ce91f9d4",
        "7b98b666ec465259c676c90cb12f3d1b4e1c7cf7"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Aug 11 18:12:11 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 11 18:12:11 2009 -0700"
      },
      "message": "am 7b98b666: Merge change 20738 into donut\n\nMerge commit \u00277b98b666ec465259c676c90cb12f3d1b4e1c7cf7\u0027\n\n* commit \u00277b98b666ec465259c676c90cb12f3d1b4e1c7cf7\u0027:\n  Fix a bug in getSocketError() in VpnService.\n"
    },
    {
      "commit": "cff53466bb60bb346ab45be91c3fa578ce91f9d4",
      "tree": "6c92f90a58f79726d1feecd84ffcc4eaa36980db",
      "parents": [
        "2ac8c279881a6a12f979f54954cab69c98ba9d98",
        "c22e0c8012828474e8aa2e29b441ef02728b0842"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Aug 11 18:12:07 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 11 18:12:07 2009 -0700"
      },
      "message": "am c22e0c80: Merge change 20719 into donut\n\nMerge commit \u0027c22e0c8012828474e8aa2e29b441ef02728b0842\u0027\n\n* commit \u0027c22e0c8012828474e8aa2e29b441ef02728b0842\u0027:\n  Fix order of setting/saving state in VpnService.\n"
    },
    {
      "commit": "eccd6fdd0d86b8610b738fc15c707eedc00ec9dc",
      "tree": "2fa4ac2c762638cd7df61a1900b77623dea14e39",
      "parents": [
        "3b5f4a841e9e87442eeacd7773bd2a6ca8710019",
        "69e67a3e2e863fa8828151ef3a488bfcaa504f7a"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 11 15:18:29 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 11 15:18:29 2009 -0700"
      },
      "message": "Merge change 20673 into donut\n\n* changes:\n  Fix bug 2043140. A race condition is encountered when an application invokes shutdown() on its TextToSpeech object while is has speak() requests still running. Since the TTS service destructor releases the synthesizer resources and sets the corresponding synth reference to null, an NPE was observed. The fix consists in catching NPEs whenever the sNativeSynth object is accessed, and return the matching error for the call. This change is a \"low risk\" version of the fix for bug 2025765i (same issue) which was reverted because it was higher risk than this CL: it affected the logic of each call to sNativeSynth. This CL only sets an error code when an NPE is fired because sNativeSynth is null.\n"
    },
    {
      "commit": "69e67a3e2e863fa8828151ef3a488bfcaa504f7a",
      "tree": "fb2a4bdd477897d11f49eab36a0251481759ee72",
      "parents": [
        "021fa3fa6fe88c33ad11a3139ebcd3a5be8eb953"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Aug 10 16:13:18 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Aug 11 15:09:45 2009 -0700"
      },
      "message": "Fix bug 2043140.\nA race condition is encountered when an application invokes shutdown()\non its TextToSpeech object while is has speak() requests still running.\nSince the TTS service destructor releases the synthesizer resources and\nsets the corresponding synth reference to null, an NPE was observed.\nThe fix consists in catching NPEs whenever the sNativeSynth object is\naccessed, and return the matching error for the call.\nThis change is a \"low risk\" version of the fix for bug 2025765i (same\nissue) which was reverted because it was higher risk than this CL:\nit affected the logic of each call to sNativeSynth. This CL only sets\nan error code when an NPE is fired because sNativeSynth is null.\n"
    },
    {
      "commit": "0daf9d061201c24088a4722e1f79952e59552933",
      "tree": "4d5c8487c7a765d90296110ce554a3c153cdfd6e",
      "parents": [
        "a2a29b0c8ed3874753ea2bc6a69545f39a469aa9"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Aug 12 00:53:36 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Aug 12 00:53:36 2009 +0800"
      },
      "message": "Fix a bug in getSocketError() in VpnService.\n"
    },
    {
      "commit": "a2a29b0c8ed3874753ea2bc6a69545f39a469aa9",
      "tree": "5d01cc3e794d1a79597c1cec0a8874c5193ddece",
      "parents": [
        "e6034f6cd8fc32641f31e5a3cf068b6d56309872"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Aug 11 18:09:57 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Aug 11 23:28:59 2009 +0800"
      },
      "message": "Fix order of setting/saving state in VpnService.\n\nand also refactor code making sure a thread won\u0027t grab two locks (which\nmay cause deadlocks in some corner cases).\n"
    },
    {
      "commit": "92c1752175f0880a0e0a05fdca37b54a8fb2b52d",
      "tree": "e2dec72a5a52a8805d5ed7998c1bed725cfd2e94",
      "parents": [
        "76b8c2cbb177d1abf54e690491efd26cbb569eea"
      ],
      "author": {
        "name": "Christian Sonntag",
        "email": "cxs@android.com",
        "time": "Fri Aug 07 15:16:17 2009 -0700"
      },
      "committer": {
        "name": "Christian Sonntag",
        "email": "cxs@android.com",
        "time": "Fri Aug 07 15:16:17 2009 -0700"
      },
      "message": "Change WIFI key\n"
    },
    {
      "commit": "c5b5b0fb94d078148b5fe5f6b8bb4ee361949f3e",
      "tree": "2a503f5b925c2cc2c4a42b5e81793ce252ced6a0",
      "parents": [
        "69682b4c3722152add97165161dd013740eebe77"
      ],
      "author": {
        "name": "Christian Sonntag",
        "email": "cxs@android.com",
        "time": "Fri Aug 07 10:00:21 2009 -0700"
      },
      "committer": {
        "name": "Christian Sonntag",
        "email": "cxs@android.com",
        "time": "Fri Aug 07 10:00:21 2009 -0700"
      },
      "message": "Retain state of wifi connection after restore\n"
    },
    {
      "commit": "4880575bacd9f49d864e8b61efca8cdeb231895c",
      "tree": "853a908315aa520c8b9a2f1cab51bcc9bae58caf",
      "parents": [
        "1c2a8963d6ebac2df312ddd7e43ed4bcd9e087e0"
      ],
      "author": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Tue Aug 04 18:59:20 2009 -0700"
      },
      "committer": {
        "name": "Jim Miller",
        "email": "jaggies@google.com",
        "time": "Tue Aug 04 18:59:20 2009 -0700"
      },
      "message": "Fix error in settings.db upgrader.  See bug 1999477 for details.\n"
    },
    {
      "commit": "ff14d457c41a8b608ea743e6a04642912436d21e",
      "tree": "37a3e81cc47dab260d695bfa1d3a73b248992564",
      "parents": [
        "4f40b76503f3de2bbbda9e2a8b36c4e6775afc83",
        "fbe89ec6404978da7899b944d989dd9f50a468b5"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Aug 04 10:54:07 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 04 10:54:07 2009 -0700"
      },
      "message": "am fbe89ec6: Revert \"Fix bug 2025765.\"\n\nMerge commit \u0027fbe89ec6404978da7899b944d989dd9f50a468b5\u0027\n\n* commit \u0027fbe89ec6404978da7899b944d989dd9f50a468b5\u0027:\n  Revert \"Fix bug 2025765.\"\n"
    },
    {
      "commit": "fbe89ec6404978da7899b944d989dd9f50a468b5",
      "tree": "b9f86a0108f9a12b93b83294c1c3ec9483f10404",
      "parents": [
        "0781f7ace13c68cd328710a268ab3dce1d201562"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Aug 04 09:23:18 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Aug 04 09:23:18 2009 -0700"
      },
      "message": "Revert \"Fix bug 2025765.\"\n\nThis reverts commit 9ebb59b8aa75cab1e5bb53983893b579abb63edd.\n"
    },
    {
      "commit": "b282b0084e6a191947b423b38382fd2a280db6ab",
      "tree": "a937a40b163fc81e8c8822ada09eb2ff8f20feed",
      "parents": [
        "393c6dff569f24689003a594141e08f1aa45e11b"
      ],
      "author": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Mon Aug 03 16:06:54 2009 -0700"
      },
      "committer": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Mon Aug 03 16:17:31 2009 -0700"
      },
      "message": "Import revised translations.  DO NOT MERGE\n"
    },
    {
      "commit": "7a17cf3418eb0cbd23804f51921b7dd66713ad03",
      "tree": "aa30072c5a8ea071cc9bdfa6acd048b9fa869cc6",
      "parents": [
        "20b153bffc57711534c0f581258e06fa86afd67a",
        "377b21e9f531e3fec1a5849453f886b5462e4144"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 03 11:54:24 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 03 11:54:24 2009 -0700"
      },
      "message": "am 377b21e9: Merge change 9502 into donut\n\nMerge commit \u0027377b21e9f531e3fec1a5849453f886b5462e4144\u0027\n\n* commit \u0027377b21e9f531e3fec1a5849453f886b5462e4144\u0027:\n  Fix bug 2025765.\n"
    },
    {
      "commit": "377b21e9f531e3fec1a5849453f886b5462e4144",
      "tree": "650fb205758131a2c86d900f025ef1ec8d840389",
      "parents": [
        "5fd26775bdd14b15058521c82e34b562e0c1e327",
        "9ebb59b8aa75cab1e5bb53983893b579abb63edd"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 03 11:52:25 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 03 11:52:25 2009 -0700"
      },
      "message": "Merge change 9502 into donut\n\n* changes:\n  Fix bug 2025765. Talkback produced a null pointer exception when being enabled and disabled repeatedly due to a race condition between the onDestroy() of the service, and the use of the service itself. The error occurs when one Talkback thread initiates the destruction of the service (call to onDestroy()) when it invokes shutdown() on its TextToSpeech instance (the client of the service). At the same time, Talkback tries to say that \"Accessibility\" is unchecked from another thread. During onDestroy(), the reference to the TTS engine (sNativeSynth) is reset to null, which is used in the service in speakInternalOnly(), and setLanguage(). The fix consists in the addition of a static variable that signals that the service has entered onDestroy(). Once this flag is set, all method invocations on sNativeSynth will be dismissed. Note that access to the native resources used by sNativeSynth are synchronized at the native layer, therefore preventing sNativeSynth.shutdown() to interfere with a sNativeSynth.speak() call already underway.\n"
    },
    {
      "commit": "9ebb59b8aa75cab1e5bb53983893b579abb63edd",
      "tree": "2e1397154b6779735bf0d5b963a726f505cad374",
      "parents": [
        "c134c281ca83a28deb96c7b338c48c0b0327f26f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Aug 03 10:50:51 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Aug 03 11:07:46 2009 -0700"
      },
      "message": "Fix bug 2025765.\nTalkback produced a null pointer exception when being enabled and disabled\nrepeatedly due to a race condition between the onDestroy() of the service,\nand the use of the service itself. The error occurs when one Talkback\nthread initiates the destruction of the service (call to onDestroy()) when\nit invokes shutdown() on its TextToSpeech instance (the client of the\nservice). At the same time, Talkback tries to say that \"Accessibility\" is\nunchecked from another thread. During onDestroy(), the reference to the\nTTS engine (sNativeSynth) is reset to null, which is used in the service\nin speakInternalOnly(), and setLanguage().\nThe fix consists in the addition of a static variable that signals that\nthe service has entered onDestroy(). Once this flag is set, all method\ninvocations on sNativeSynth will be dismissed. Note that access to the\nnative resources used by sNativeSynth are synchronized at the native\nlayer, therefore preventing sNativeSynth.shutdown() to interfere with\na sNativeSynth.speak() call already underway.\n"
    },
    {
      "commit": "cc0fba056d903465e025e5885f66486df9d5c1cd",
      "tree": "d15a0157bdda1931c436c8084776efeafc6b7498",
      "parents": [
        "6a10330eb678b5c168d123093c668649fb0ec7fa",
        "935406709edb9aaf6538e23e88ecfdf77cccd8ba"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Aug 03 01:38:00 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 03 01:38:00 2009 -0700"
      },
      "message": "am 93540670: Issue an error when VPN connection is lost.\n\nMerge commit \u0027935406709edb9aaf6538e23e88ecfdf77cccd8ba\u0027\n\n* commit \u0027935406709edb9aaf6538e23e88ecfdf77cccd8ba\u0027:\n  Issue an error when VPN connection is lost.\n"
    },
    {
      "commit": "935406709edb9aaf6538e23e88ecfdf77cccd8ba",
      "tree": "14dd901184665435a1529013b0581fdc2b0c4ddd",
      "parents": [
        "dc1d5704a725d207b98de1b117847297958d9148"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Aug 03 16:22:24 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Aug 03 16:22:24 2009 +0800"
      },
      "message": "Issue an error when VPN connection is lost.\n\n+ Add new error code CONNECTION_LOST to VpnManager.\n+ Make VpnService call onError() instead of onDisconnect() when\nconnection is lost.\n+ Make VpnService broadcast CONNECTION_LOST when that happens.\n"
    },
    {
      "commit": "6a10330eb678b5c168d123093c668649fb0ec7fa",
      "tree": "dcffdc4cd17129f74cff15483dfb0f99c168c0d6",
      "parents": [
        "98aed46992679cf1ddc99bdb735c9d18b92ce940",
        "dc1d5704a725d207b98de1b117847297958d9148"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Mon Aug 03 00:16:23 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 03 00:16:23 2009 -0700"
      },
      "message": "am dc1d5704: Fix the auto notification cleanup when vpn is disconnected.\n\nMerge commit \u0027dc1d5704a725d207b98de1b117847297958d9148\u0027\n\n* commit \u0027dc1d5704a725d207b98de1b117847297958d9148\u0027:\n  Fix the auto notification cleanup when vpn is disconnected.\n"
    },
    {
      "commit": "dc1d5704a725d207b98de1b117847297958d9148",
      "tree": "dd2e823cd931992d8bbafd054dcfedf567bf7055",
      "parents": [
        "b86bad9493a331a09dd765bc6e725c0aec969ff6"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Mon Aug 03 15:01:58 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Mon Aug 03 15:11:36 2009 +0800"
      },
      "message": "Fix the auto notification cleanup when vpn is disconnected.\n\n+ add the log print if the browser give the incorrect data in addCertificate().\n"
    },
    {
      "commit": "455266e1737ab0c4935543bd086c926da8ff5771",
      "tree": "3674bb5db0b971d5a7043409ab1ab9e8d4ce6338",
      "parents": [
        "9225dfa70c19e695d75599f8f8dcb9605ea6e039",
        "b203a57d1f00fe509e0d065cd928099bb7d19d87"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 16:05:45 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 30 16:05:45 2009 -0700"
      },
      "message": "am b203a57d: Merge change 9114 into donut\n\nMerge commit \u0027b203a57d1f00fe509e0d065cd928099bb7d19d87\u0027\n\n* commit \u0027b203a57d1f00fe509e0d065cd928099bb7d19d87\u0027:\n  Add state saving mechanism to support proc restart\n"
    },
    {
      "commit": "ba272be7253ce2002d85bb03c32848413f7bcf8d",
      "tree": "bd1c33b034e32a679899e58113b13ca1c5bf68f5",
      "parents": [
        "c17ae711e9e265ab6dc85f18a7c35de957a43524",
        "bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79f"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 08:35:03 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 08:35:03 2009 -0700"
      },
      "message": "Merge change 9097\n\n* changes:\n  Wifi: Add support for enabling Wifi while in airplane mode.\n"
    },
    {
      "commit": "cdc0d941e8d34e63ef2f4b2eda6e040a7d902792",
      "tree": "1a65a7000810c7e096452c5b9e2cafdacd5be65f",
      "parents": [
        "98ad09880b148d69f4202ad40872d1cdfc1e491e",
        "2bad713f31d642d5350949b90b3abe00fbd9ca55"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 06:56:37 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 30 06:56:37 2009 -0700"
      },
      "message": "am 2bad713f: Merge change 8860 into donut\n\nMerge commit \u00272bad713f31d642d5350949b90b3abe00fbd9ca55\u0027\n\n* commit \u00272bad713f31d642d5350949b90b3abe00fbd9ca55\u0027:\n  Fix bug 2017664\n"
    },
    {
      "commit": "fe8e48cdd5e621905b8c07325dbe77bffffdb4bb",
      "tree": "0b627a159a56a490ff1f655aea85d214da423b2a",
      "parents": [
        "b91e2b0292f9f4f76175a18e6e3cf392f3967ae8"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jul 30 14:02:48 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jul 30 19:14:50 2009 +0800"
      },
      "message": "Add state saving mechanism to support proc restart\n\nAlso...\n+ stop daemons before getting server IP;\n+ remove setForeground();\n+ add the DBG flag for Log.d calls.\n\nPatchSet 3:\n+ add CHALLENGE_ERROR and REMOTE_HUNG_UP to VpnManager\n+ broadcast new error codes in VpnService\n+ check local IP change instead of dns change\n+ move removeStates() to VpnService.onFinalCleanUp()\n\nPatchSet 7:\n+ add encryption flag to PptpProfile\n+ PptpService and MtpdHelper are revised accordingly\n"
    },
    {
      "commit": "bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79f",
      "tree": "d1e74b94e3b322c137e52f7514072e6d2309000f",
      "parents": [
        "2ec556ddc840ae71cd1e618e593a6ce8555f5590"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Jul 29 21:37:14 2009 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Jul 29 21:37:14 2009 -0700"
      },
      "message": "Wifi: Add support for enabling Wifi while in airplane mode.\n\nIf the new system settings value for AIRPLANE_MODE_TOGGLEABLE_RADIOS\ncontains RADIO_WIFI, then the user will be allowed to enable Wifi\nwhile in airplane mode.\nTurning on airplane mode will still disable Wifi, but the user will\nbe free to reenable it in the Settings app.\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "ed06578eddde07abe325fa4c92910bb7246cd49f",
      "tree": "fbef6293b4f1e924602b54e02c37415960604c84",
      "parents": [
        "0869f7ef1efa9fe2e26b20e525952ad611d379aa"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 28 14:31:48 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jul 29 11:26:10 2009 -0700"
      },
      "message": "Fix bug 2017664\nRemoved the TTS_ prefix in the TextToSpeech class to follow the standard naming convention.\nMoved the TTS-related intents from the Intent class to TextToSpeech and TextToSpeech.Engine.\nRenamed the TextToSpeech.Engine constants that are used as extras for the\n  ACTION_TTS_CHECK_TTS_DATA intent to prefix them with EXTRA_.\nCleaned up the other TextToSpeech.Engine constant to remove superfluous mentions of\n  \"TTS\" in the name.\n"
    },
    {
      "commit": "e406906e16bf31bdd0064b8d47df5b177e8e8550",
      "tree": "1a03ad7da83809a156aed0a74936332015ad7819",
      "parents": [
        "a0d128c8c601750dcbcf97342ffca7865b8a6f9e",
        "69f593ccb7414ee98991b1da1a4bfbd9951e3570"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 28 16:26:40 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 28 16:26:40 2009 -0700"
      },
      "message": "Merge change 8878\n\n* changes:\n  Support for selection of silent ringtone from the ringtone picker. This doesn\u0027t actually enable that, but adds the necessary code to make it work when enabled, and cleans up some ringtone related code.\n"
    },
    {
      "commit": "69f593ccb7414ee98991b1da1a4bfbd9951e3570",
      "tree": "792a5ba3b2499cc8f25cd4dba55428d729d54919",
      "parents": [
        "e8c027756cfff74fd39b76c2ef373c3edb952eb5"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jul 28 09:55:04 2009 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jul 28 16:06:38 2009 -0700"
      },
      "message": "Support for selection of silent ringtone from the ringtone picker.\nThis doesn\u0027t actually enable that, but adds the necessary code to make it work when enabled, and cleans up some ringtone related code.\n"
    },
    {
      "commit": "f7573bd2b7bb63d78fa8f0003ba49be10b128753",
      "tree": "fe041ae80b91b29ca45bf6f13926ceb69eb87855",
      "parents": [
        "b3c82efb4725e959a50dca3f7ff50d1d99a059b4",
        "cdb9e971d9d62d399756dcb688ac6c3a6c31383f"
      ],
      "author": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Tue Jul 28 11:27:07 2009 -0700"
      },
      "committer": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Tue Jul 28 11:27:07 2009 -0700"
      },
      "message": "resolved conflicts for merge of cdb9e971 to master\n"
    },
    {
      "commit": "cdb9e971d9d62d399756dcb688ac6c3a6c31383f",
      "tree": "d5956c17e6caa699d1494e120ecdb73af3b84efd",
      "parents": [
        "1dd6936a862be97efca02e4b7582a9fca1fcc269",
        "2bfe11af6f715656b60fc9ac4566e74da9b98390"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 28 10:27:56 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 28 10:27:56 2009 -0700"
      },
      "message": "Merge change 8806 into donut\n\n* changes:\n  Mark the the airplane mode internal strings as not translatable.\n"
    },
    {
      "commit": "2bfe11af6f715656b60fc9ac4566e74da9b98390",
      "tree": "3fee963bddf0ef0af31a88cbd14e33957f426136",
      "parents": [
        "ef9fd18d90829ecbd37769cc05a8d5288aff821c"
      ],
      "author": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Tue Jul 28 10:17:25 2009 -0700"
      },
      "committer": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Tue Jul 28 10:17:25 2009 -0700"
      },
      "message": "Mark the the airplane mode internal strings as not translatable.\n\nBug 2017552\n"
    },
    {
      "commit": "0326beef199db3a5a833090b39e30deb5a3f346d",
      "tree": "7ef16603af4cc86a92c4201cf6cab7747eac240b",
      "parents": [
        "b7c64f15850ff5d1a8a2895bfb40b430344fa9ed",
        "79858fe2f5b088ad93e461ea94e544bfce3c2e09"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 27 15:09:59 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 27 15:09:59 2009 -0700"
      },
      "message": "am 79858fe2: Merge change 8678 into donut\n\nMerge commit \u002779858fe2f5b088ad93e461ea94e544bfce3c2e09\u0027\n\n* commit \u002779858fe2f5b088ad93e461ea94e544bfce3c2e09\u0027:\n  Fixing bug #2008185 - problem with the TTS dropping\n"
    },
    {
      "commit": "0dbc6a44bb76631911552bc5b356391dac6f38a4",
      "tree": "1222df30c4c405dd54f0549e125e54b50110fb77",
      "parents": [
        "5b11a0f3e1d8e2681cfd3326b6808b894bb9c2c3"
      ],
      "author": {
        "name": "Charles Chen",
        "email": "clchen@google.com",
        "time": "Mon Jul 27 13:43:08 2009 -0700"
      },
      "committer": {
        "name": "Charles Chen",
        "email": "clchen@google.com",
        "time": "Mon Jul 27 14:09:58 2009 -0700"
      },
      "message": "Fixing bug #2008185 - problem with the TTS dropping\nutterances under heavy load was caused by the speech\nqueue being locked. Switched to using a timeout with\ntryLock so that the TTS service does not give up\nimmediately.\n"
    },
    {
      "commit": "c0ecdf152d796419b8e3eb4f8ea7fc3aa3619ec5",
      "tree": "3fbf67cab2bb1e9054840941cb29b1d16b59a280",
      "parents": [
        "d5ec6ebee26e530d96299d9821950f7cce4b3636",
        "21bd4af88a24d0df020f68683f7c60698ebcc76a"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Sun Jul 26 21:47:40 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jul 26 21:47:40 2009 -0700"
      },
      "message": "am 21bd4af8: Simplify the VPN service implementation.\n\nMerge commit \u002721bd4af88a24d0df020f68683f7c60698ebcc76a\u0027\n\n* commit \u002721bd4af88a24d0df020f68683f7c60698ebcc76a\u0027:\n  Simplify the VPN service implementation.\n"
    },
    {
      "commit": "21bd4af88a24d0df020f68683f7c60698ebcc76a",
      "tree": "8337b08a6931d3666ad96218c99242e0051c3b91",
      "parents": [
        "11b6a29dfe380c97fa3df67a6b97ff3383592b58"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jul 23 07:37:27 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Jul 27 06:13:11 2009 +0800"
      },
      "message": "Simplify the VPN service implementation.\n\n+ Remove NormalProcessProxy and ProcessProxy as they are not used\n  anymore.\n+ Rename AndroidServiceProxy to DaemonProxy and simplify its\n  implementation as it does not extend to ProcessProxy anymore.\n+ Execute connect() in VpnService in one thread, which simplifies socket\n  and error handling.\n+ Modify service subclasses accordingly.\n+ Execute connect() and disconnect() in VpnServiceBinder so that the\n  operations do not block the UI thread. Mark service as foreground only upon\n  connecting.\n"
    },
    {
      "commit": "a553c25b33c99b345cf1c8688f8df0ed8df14e5a",
      "tree": "025c461b13e66ad0ceac8d0f8d9b13fd88ae168a",
      "parents": [
        "ebd7bc54028949619bbf3fa5ed6c1188f588c230"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 17 12:17:14 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 23 06:03:39 2009 -0700"
      },
      "message": "Fix issue 1795088       Improve audio routing code\n\nInitial commit for review.\nIntegrated comments after patch set 1 review.\nFixed lockup in AudioFlinger::ThreadBase::exit()\nFixed lockup when playing tone with AudioPlocyService startTone()\n"
    },
    {
      "commit": "c098048892dd4417618999c9a91fa4724109e281",
      "tree": "a71ad1d318fbbad3091593704b660191a75004b1",
      "parents": [
        "d5d967fbd9753396e908899d8ad2a169d6095d02",
        "7c94ceaeac65f4604fa49df6dce9a8d584f52da2"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 21 18:18:43 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 21 18:18:43 2009 -0700"
      },
      "message": "am 7c94ceae: Merge change 8130 into donut\n\nMerge commit \u00277c94ceaeac65f4604fa49df6dce9a8d584f52da2\u0027\n\n* commit \u00277c94ceaeac65f4604fa49df6dce9a8d584f52da2\u0027:\n  Increase the volume of the AudioTrack instance used for the speech synthesis.\n"
    },
    {
      "commit": "d702c357fc67b80695d09f93be1b581e8f08199a",
      "tree": "06a5374492cb45d655d3d4ab64e2c13f9ca39795",
      "parents": [
        "841ed8596a745d90822467bc2c0e13880bb59cc9"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 21 18:10:04 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 21 18:10:04 2009 -0700"
      },
      "message": "Increase the volume of the AudioTrack instance used for the speech synthesis.\n"
    },
    {
      "commit": "538ed77af41c932192c3205b3fea45996112d76f",
      "tree": "aabbddfc5719ab46b480187555ac7652060f6673",
      "parents": [
        "447865eec75d406ca14dc30cb2f17652694cb71f",
        "841ed8596a745d90822467bc2c0e13880bb59cc9"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 21 14:46:20 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 21 14:46:20 2009 -0700"
      },
      "message": "am 841ed859: Merge change 8073 into donut\n\nMerge commit \u0027841ed8596a745d90822467bc2c0e13880bb59cc9\u0027\n\n* commit \u0027841ed8596a745d90822467bc2c0e13880bb59cc9\u0027:\n  Reset the speech synth singleton to null when the service is destroyed\n"
    },
    {
      "commit": "841ed8596a745d90822467bc2c0e13880bb59cc9",
      "tree": "d1b1ea16bf2a7fa5db938e91b413aaa40f26ec52",
      "parents": [
        "22726cf8174fe00a097c89b8da397b10626cdd00",
        "cee3bd4d68bf40d36fee3f0f5ce03f9edae87b51"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 21 14:44:18 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 21 14:44:18 2009 -0700"
      },
      "message": "Merge change 8073 into donut\n\n* changes:\n  Reset the speech synth singleton to null when the service is destroyed so it can be recreated when the service is initialized. In the interface with the native synthesizer library, close the lib in the finalizer, delete the global ref to the SynthProxy java object.\n"
    },
    {
      "commit": "75c0928c59346e989ecb45ecade5681d8253ff46",
      "tree": "b9fd691a0da869dfc1bbe55b66618b12cb53b566",
      "parents": [
        "4eb5479bdf06d9484a4d68959f96cc0cea41a2d5",
        "8ece3445e8c95d02a47737ea2ac2d52a696143cd"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 21 14:39:01 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 21 14:39:01 2009 -0700"
      },
      "message": "am 8ece3445: Merge change 8061 into donut\n\nMerge commit \u00278ece3445e8c95d02a47737ea2ac2d52a696143cd\u0027\n\n* commit \u00278ece3445e8c95d02a47737ea2ac2d52a696143cd\u0027:\n  Throw a connecting exception when timed out.\n"
    },
    {
      "commit": "cee3bd4d68bf40d36fee3f0f5ce03f9edae87b51",
      "tree": "f60abaf471d16280fbb5b23231c9d9ec3df46c1b",
      "parents": [
        "db7db69a2162439bf722d0f1f65429ca3ca19dcd"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 21 14:12:47 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 21 14:22:25 2009 -0700"
      },
      "message": "Reset the speech synth singleton to null when the service is destroyed\nso it can be recreated when the service is initialized.\nIn the interface with the native synthesizer library, close the lib\nin the finalizer, delete the global ref to the SynthProxy java object.\n"
    },
    {
      "commit": "8ece3445e8c95d02a47737ea2ac2d52a696143cd",
      "tree": "c415fb4d99a7e353a2dc1747861892144b282668",
      "parents": [
        "db7db69a2162439bf722d0f1f65429ca3ca19dcd",
        "bb22192421673c1cd2881c6fd80858c39a01273d"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 21 14:16:55 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 21 14:16:55 2009 -0700"
      },
      "message": "Merge change 8061 into donut\n\n* changes:\n  Throw a connecting exception when timed out.\n"
    },
    {
      "commit": "bb22192421673c1cd2881c6fd80858c39a01273d",
      "tree": "670c3d09431b64300a8cb69a20a897b010b6e973",
      "parents": [
        "2a1aa6acbba5a3a9142d3e8bd6fe6e19d5fae6be"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Jul 22 04:37:39 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Jul 22 04:37:39 2009 +0800"
      },
      "message": "Throw a connecting exception when timed out.\n"
    },
    {
      "commit": "305d9ba85d06316097bea0d150aa1b83db8bc593",
      "tree": "66361f546155ef9af56e76111a4332589da79e38",
      "parents": [
        "f24239355f4f50e1385ff46e598466757a3f02ec",
        "69a841a1649390d68b32b3bcf0c429a60c400cfa"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 21 10:23:06 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 21 10:23:06 2009 -0700"
      },
      "message": "am 69a841a1: Merge change 8026 into donut\n\nMerge commit \u002769a841a1649390d68b32b3bcf0c429a60c400cfa\u0027\n\n* commit \u002769a841a1649390d68b32b3bcf0c429a60c400cfa\u0027:\n  Make sure the speech synthesizer proxy is a singleton in the TTS service.\n"
    },
    {
      "commit": "a73d5cd05550310c3e6cedf0759210c255f4a6aa",
      "tree": "31da97775408caba8f65c0aec11fefb9eb7712c5",
      "parents": [
        "eb1eab1214dbe0b25355e7bde4279fca804af9f7"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 21 10:13:41 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 21 10:13:41 2009 -0700"
      },
      "message": "Make sure the speech synthesizer proxy is a singleton in the TTS service.\n"
    },
    {
      "commit": "2f140bdb8a22a6328023a5cd7d19ecd57e6662d9",
      "tree": "2334ccd442feb464c8a711fb14b0aba49e5fef6b",
      "parents": [
        "ca9b59650510b6f2b521371c69e0d1b9baca6b27",
        "592f1a65815598f705260df9dbe5488e3990b45d"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 20 16:21:46 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 20 16:21:46 2009 -0700"
      },
      "message": "am 592f1a65: Merge change 7933 into donut\n\nMerge commit \u0027592f1a65815598f705260df9dbe5488e3990b45d\u0027\n\n* commit \u0027592f1a65815598f705260df9dbe5488e3990b45d\u0027:\n  Prevent the setLanguage() method in TextToSpeech to change the language\n"
    },
    {
      "commit": "5e11a6ad00b062d604b30578e0fb412ae4586989",
      "tree": "4762a0c6d6ebb7dec291f02a5438ec292564d746",
      "parents": [
        "5f6133a100d4477dfcea919e81ff301f9352cd32"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jul 20 14:05:33 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jul 20 16:07:57 2009 -0700"
      },
      "message": "Prevent the setLanguage() method in TextToSpeech to change the language\nfor all current TextToSpeech instances by only caching the language\nvalue so it is used with each subsequent utterance for this instance.\nSynchronize calls to the engine around a global mutex since the engine\nisn\u0027t thread-safe, except for the stop() call which is meant to interrupt\nthe synthesis loop.\n"
    },
    {
      "commit": "115d23a86feacbb044a294e60d62e28a3efefed2",
      "tree": "f220dd05611009f037be7a7dcec35f2cc961b6f1",
      "parents": [
        "b965d09294992562cf5b02c41ec7e48affa9a80a",
        "5f6133a100d4477dfcea919e81ff301f9352cd32"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 20 09:53:48 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 20 09:53:48 2009 -0700"
      },
      "message": "am 5f6133a1: Merge change 7833 into donut\n\nMerge commit \u00275f6133a100d4477dfcea919e81ff301f9352cd32\u0027\n\n* commit \u00275f6133a100d4477dfcea919e81ff301f9352cd32\u0027:\n  Fixing the random audio mangling problem (TTS becomes incomprehensibly fast)\n"
    },
    {
      "commit": "5f6133a100d4477dfcea919e81ff301f9352cd32",
      "tree": "306f0cf68441a2286a8b2592ca5f0fdf76bbb308",
      "parents": [
        "8b9baf2dfb4dd1bd6379d923a3aa61a082783368",
        "342c329203ef1cb856bd4e0a6591b2d8080c0a64"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 20 09:51:21 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 20 09:51:21 2009 -0700"
      },
      "message": "Merge change 7833 into donut\n\n* changes:\n  Fixing the random audio mangling problem (TTS becomes incomprehensibly fast)\n"
    },
    {
      "commit": "79b7c68d5a1979a67d1d5ec6b9229aaab79cad3e",
      "tree": "13ea113b6eb2a20628c94f07d728ab21c315b5b0",
      "parents": [
        "b8b117e1e7fffdeb245afd673068924b038d08d6",
        "2c53de69045557a51290b50dfda2ddb6c7d01912"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Sun Jul 19 21:14:44 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jul 19 21:14:44 2009 -0700"
      },
      "message": "am 2c53de69: Stop a daemon before starting it\n\nMerge commit \u00272c53de69045557a51290b50dfda2ddb6c7d01912\u0027\n\n* commit \u00272c53de69045557a51290b50dfda2ddb6c7d01912\u0027:\n  Stop a daemon before starting it\n"
    },
    {
      "commit": "def06bcec0ebd24bea9fb21a22d8f671b6a8f16c",
      "tree": "679c0698a4c7f9cfc037b40944005f0d19186023",
      "parents": [
        "a1663400f9dede2e6dd181d677652f671719afaf",
        "4b897aa99bf71f933f5b202c1531858382122d6f"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jul 19 21:14:36 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jul 19 21:14:36 2009 -0700"
      },
      "message": "am 4b897aa9: Merge change 7829 into donut\n\nMerge commit \u00274b897aa99bf71f933f5b202c1531858382122d6f\u0027\n\n* commit \u00274b897aa99bf71f933f5b202c1531858382122d6f\u0027:\n  Making sure that there are no calls made to the native TTS\n"
    }
  ],
  "next": "a1663400f9dede2e6dd181d677652f671719afaf"
}
