)]}'
{
  "log": [
    {
      "commit": "2784ff0af88128f66ae690b73d48fb7e4a211e68",
      "tree": "2e43aaa6e2a67a0924449af42d969b91de2f995d",
      "parents": [
        "a53b828635fce8b6b2d3e3377d74d72070056623"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Jul 18 17:13:29 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Jul 18 17:13:29 2009 -0700"
      },
      "message": "Fix issue where scaled bitmap sizes could be wrong.\n\nThe Bitmap functions to get the scaled width/height couldn\u0027t actually\ndo the right thing because they didn\u0027t know the destination they would\nbe drawing to.  Now there are two forms of them, taking an explicit\nparameter specifying the destination.\n"
    },
    {
      "commit": "a53b828635fce8b6b2d3e3377d74d72070056623",
      "tree": "42f4ba9bbf7d8656a4761d6fe5dcd4976cf19369",
      "parents": [
        "09a903ab5b8d940605783ae4ee591c0f090a31d1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 17 11:13:48 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 17 16:59:08 2009 -0700"
      },
      "message": "Add \"nodpi\" density, and expose a bunch of density-related APIs.\n\nAlso update the DpiTest app to use nodpi images, and try to have a mode\nwhere it turns off compatibility though it\u0027s not quite working.\n"
    },
    {
      "commit": "49a60157d1c4b49450410fc30b8fcd8ab0e3480b",
      "tree": "75cda4e2eb6e8ad9914a62f17c0f57d336f9390e",
      "parents": [
        "82b283a9bf8e3508e1b5c6d4b6b8cae04597b83c"
      ],
      "author": {
        "name": "Charles Chen",
        "email": "clchen@google.com",
        "time": "Wed Jul 15 19:12:07 2009 -0700"
      },
      "committer": {
        "name": "Charles Chen",
        "email": "clchen@google.com",
        "time": "Thu Jul 16 18:32:07 2009 -0700"
      },
      "message": "Adding public intents for TTS to enable checking for TTS data,\ninstalling TTS data, and finding out when the TTS queue has\nfinished processing.\n"
    },
    {
      "commit": "904dfa588431ff7c99c337d7797f5bef9ac12ce3",
      "tree": "848fdf1f4709aa8790cc7310bdcf9f0570276c47",
      "parents": [
        "83fa3565896ed19846f6498c00de3cc9a29b1a57"
      ],
      "author": {
        "name": "Charles Chen",
        "email": "clchen@google.com",
        "time": "Wed Jul 15 10:44:41 2009 -0700"
      },
      "committer": {
        "name": "Charles Chen",
        "email": "clchen@google.com",
        "time": "Wed Jul 15 10:46:33 2009 -0700"
      },
      "message": "Adding missing addEarcon method. Not having this was a bug as\nthis method is needed to add earcons; otherwise, there is\nnothing for playEarcon to play.\n"
    },
    {
      "commit": "62253a319d6359ce71c547d0b0aa36ba17789ab4",
      "tree": "b1864547fc15a12b9c49da199b38081890846d38",
      "parents": [
        "f77035193152a0edba5abeb33d9c1a5f446c7dd8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 14 13:55:19 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 14 17:37:07 2009 -0700"
      },
      "message": "Unhide required definitions in TextToSpeech.Engine that cover return codes and\nextras for android.intent.action.CHECK_TTS_DATA intent, and the key values\nfor the parameter hashmap that can be passed by an application in speak(),\nsynthesizeToFile(), playSilence() and playEarcon().\n"
    },
    {
      "commit": "374aaaed32daa8482d98ec16988b2b51547f035d",
      "tree": "d558c71fd5caffea5d8828154b8b91810495766b",
      "parents": [
        "4caac2bb4c8616edf8224408931ffc0e532537de"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jul 14 15:11:59 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jul 14 15:38:23 2009 -0700"
      },
      "message": "Restore PopupWindow\u0027s original behavior and add an API to control the soft input\nmode.\n"
    },
    {
      "commit": "8cd1084ed1138b9c8b7ff5370ab404c8bb559dd2",
      "tree": "c6a7043ece0ffbbd1d206a5251522669929f27c0",
      "parents": [
        "c1d82e68eb4aae1b575e82b08e71a87670cc1532"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Jul 13 07:41:56 2009 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jul 14 14:41:22 2009 -0400"
      },
      "message": "location: Add sub-locality, sub-thoroughfare and premises fields to Address class\n\nThis is required for fully describing locations in Japan.\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "78c9d0d2c5eb4d5687ae7cbe41155159329ad68f",
      "tree": "02dd86c23eda28b6dc1da1598ac79fc1c8b586e3",
      "parents": [
        "334b861e3339bc7189372f790d0c0e2043d160a3"
      ],
      "author": {
        "name": "Charles Chen",
        "email": "clchen@google.com",
        "time": "Mon Jul 13 16:22:41 2009 -0700"
      },
      "committer": {
        "name": "Charles Chen",
        "email": "clchen@google.com",
        "time": "Mon Jul 13 17:46:19 2009 -0700"
      },
      "message": "Adding Utterance ID to the TtsService.\n"
    },
    {
      "commit": "0e01ea41b215941128a4ea8dee454e6b35a4e798",
      "tree": "75832b18372b76e50b07ba461edcc4b07eabd8db",
      "parents": [
        "4d2dbebf3d08209f751585d8cc367369e2f6e32f"
      ],
      "author": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Wed Jul 08 22:01:29 2009 +0100"
      },
      "committer": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Fri Jul 10 07:16:47 2009 +0100"
      },
      "message": "Deprecate DialogInterface methods in SearchManager\n\nandroid.app.SearchManager implements\nDialogInterface.OnDismissListener and DialogInterface.OnCancelListener\nand thus exposes the methods onCancel(DialogInterface dialog) and\nonDismiss(DialogInterface dialog). This was used by the SearchManager\nto register itself as a listener on the search dialog, but is no\nlonger used.\n\nThis was an implementation detail that leaked into the public\nAPI. Removing them would change the API, so they are deprecated instead.\n\nFixes http://b/issue?id\u003d1962203\n"
    },
    {
      "commit": "423d679a4734a82dba1c6f62acbd9a87c53d1d28",
      "tree": "3c627dcf402093803418a6cee8fbf1e9550ee66d",
      "parents": [
        "313ea433d18e7fd5438b94c0606c496fcc7a2f88"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Thu Jul 09 11:46:39 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Thu Jul 09 11:46:39 2009 -0700"
      },
      "message": "Unhide android.gestures.\n"
    },
    {
      "commit": "2af632f87d487deaa5b2eb71341cfc4f0c0d1173",
      "tree": "cc59b86316dbf64abb3f7d183ee031fdadd3fe42",
      "parents": [
        "4af0a709ee08e8ae43f49d8fc5c9cae142aaf2c4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 08 14:56:37 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 08 18:08:13 2009 -0700"
      },
      "message": "Add new \u003cpath-permission tag for use by global search.\n\nThis adds a new \u003cpath-permission\u003e tag you can use inside of a \u003cprovide\u003e\nto define additional path-based permissions that broaden the global\nread and write permissions.  The initial use for this will be global\nsearch, so that a content provider that is protected by permissions\ncan make a part of itself available to global search under another\npermission.  This addresses the issue with global search not being able\nto request permissions it would need of providers it doesn\u0027t know\nabout at build time.\n"
    },
    {
      "commit": "d21572cd446e56efe94689324107927ac2bffd2a",
      "tree": "ef2156194d9a728a292f522fff80350acef16d67",
      "parents": [
        "d6fe243c1c6d5e994cacede8110eef736767bd7f"
      ],
      "author": {
        "name": "Satish Sampath",
        "email": "satish@android.com",
        "time": "Wed Jul 08 14:54:11 2009 +0100"
      },
      "committer": {
        "name": "Satish Sampath",
        "email": "satish@android.com",
        "time": "Wed Jul 08 15:09:08 2009 +0100"
      },
      "message": "NEW_API: Expose autoUrlDetect searchable attribute.\n\nIf provided and true, URLs entered in the search dialog while searching within this activity would be detected and treated as URLs (show a \u0027go\u0027 button in the keyboard and invoke the browser directly when user launches the URL instead of passing the URL to the activity). If set to false any URLs entered are treated as normal query text.\nThe default value is false. This is an optional attribute.\n"
    },
    {
      "commit": "771afdddc971d193792e2393fc50a142e2af434c",
      "tree": "8a4c472ad3934e2ea476aec5c71a78e972ff845a",
      "parents": [
        "86ea435a40c5ffa9a03dc0ac9536378a33c9e5b4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jul 07 17:35:34 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jul 07 17:35:34 2009 -0700"
      },
      "message": "Add new textColorPrimaryInverseDisableOnly color to resources.\n"
    },
    {
      "commit": "870e09fcd2dfdc12ac318962efd28b0420c562bb",
      "tree": "e96f3395c7176695e7007b21ec054c1e3d5a5e71",
      "parents": [
        "453dd50e707aa3a4d24240935f3ff7ea0a08dc7a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Mon Jul 06 16:35:25 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Mon Jul 06 16:45:17 2009 -0700"
      },
      "message": "Fixes #1963229. Introduces Context#isRestricted().\n\nA restricted Context is a special type of Context that prevents specific features\nfrom being used. For instance, android:onClick, used by View, can be dangerous when\nused from within apps widgets. By using a restricted Context to inflate apps widgets,\nwidgets providers are prevented from using android:onClick.\n"
    },
    {
      "commit": "4296fc4d326447875c26a925f12b3935632f13bb",
      "tree": "b2963d32112fb2d3d961ebd48dc8a4b67b8c4d64",
      "parents": [
        "816cf52abd8f45770f0ac922bbb819184ed4b90f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Mon Jul 06 11:48:52 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Mon Jul 06 11:48:52 2009 -0700"
      },
      "message": "Fixes #1444844. Set a maximum fling velocity in scrollable views.\n"
    },
    {
      "commit": "816cf52abd8f45770f0ac922bbb819184ed4b90f",
      "tree": "8b604bed1520b662b20598540e4dad8d6b40bc1e",
      "parents": [
        "46841db4f2c7360d3b861a816e51f76acca0d677"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jul 06 09:19:10 2009 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jul 06 09:58:06 2009 -0700"
      },
      "message": "Fix the DEFAULT_SORT_ORDER value for media files. Changing this\nis OK, because existing app will have the old value compiled in\nas a literal, and so will continue to (not) work in the same\nway as before. Add code to media key generator to give a leading\nascii \\001 the special meaning of \"sort first\".\n"
    },
    {
      "commit": "62788e9b48f884a35b89c88911b581daa6a14e08",
      "tree": "ae687ac953c90021882bdbec348edfe58b79ae07",
      "parents": [
        "d23d7f2d12c20314e1e8ff206fafc8f21745ca2d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jul 02 16:29:30 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jul 02 16:29:30 2009 -0700"
      },
      "message": "Unhide android.speech.tts.TextToSpeech\n"
    },
    {
      "commit": "f763e8f42df8e99b84420c80eaff24b3573ff0bc",
      "tree": "6171508b99ea7e11e217ee02a8e378445e6d59e3",
      "parents": [
        "f9eca3d43aed870774633a176aa691d3e530a12b"
      ],
      "author": {
        "name": "Mike LeBeau",
        "email": "mlebeau@android.com",
        "time": "Tue Jun 30 18:26:21 2009 -0700"
      },
      "committer": {
        "name": "Mike LeBeau",
        "email": "mlebeau@android.com",
        "time": "Tue Jun 30 18:26:21 2009 -0700"
      },
      "message": "Add new attribute \u0027searchSettingsDescription\u0027 for use within an app\u0027s\nsearchable.xml. This attribute defines the string to be shown as the\ndescription a searchable in the \u0027searchable items\u0027 section of system\nsearch settings.\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": "b5537c452271634b6ff3981b0624fa65384abd5b",
      "tree": "66159c3caed7ad21c6afb61974b77278d32097aa",
      "parents": [
        "2f8d58b7ae2b9dc60eed83e5dddc8c28223e1ede"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jun 30 12:39:18 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jun 30 12:39:18 2009 -0700"
      },
      "message": " Replace indeterminate progress animated asset with new ones\n"
    },
    {
      "commit": "fbd8f69a84163ef1cf52b07966320caf448c2bc9",
      "tree": "463069b756b53fb2a1bb221f158f071d4e2d990a",
      "parents": [
        "a1590586e4c02e50d14cc99018be2c419f5a07b9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jun 26 14:51:58 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jun 26 16:56:32 2009 -0700"
      },
      "message": "Fixes #1946141. Introduce new caching API to control scaling.\n\nThis change fixes issues with existing applications that access the drawing cache\ndirectly. The API now lets application choose whether they want to get a scaled\ndrawing cache or not. The framework relies on the scaled cache for quality\npurposes.\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": "2bacbdfb519b2bfe8d4baca88da64e0f3b686e19",
      "tree": "bc18543975a76085521b9bde66f3a5d6e3075330",
      "parents": [
        "0bc7b8490b1575bb8266a3b0c6652d4f460fcda1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 24 19:03:15 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 24 19:03:15 2009 -0700"
      },
      "message": "Add new APIs to LauncherActivity to be used elsewhere.\n"
    },
    {
      "commit": "5f80605a0b866f34c74955e190909bd6ab5d992e",
      "tree": "364419845ec37b2218a9014851533d7d91f509cc",
      "parents": [
        "82a32714f07d25259b91163d383ccdb74a166d2d"
      ],
      "author": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Wed Jun 24 12:02:26 2009 +0100"
      },
      "committer": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Wed Jun 24 12:54:28 2009 +0100"
      },
      "message": "Include user query in search intents\n\nThis change adds a new intent extra field USER_QUERY set in intents\nlaunched by the search dialog. It contains the query as typed by\nthe user, unaffected by query jamming or search suggestions.\n\nFixes http://b/issue?id\u003d1939592\n"
    },
    {
      "commit": "e29f064383cbc745c8605c707000ab4e16ee0aac",
      "tree": "8b02881ef0030c21d57f16d71a2e3cba6a1a53f2",
      "parents": [
        "4133751d51a04172aa65e24658b4207ef764de91"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jun 23 21:27:02 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jun 23 21:27:02 2009 -0700"
      },
      "message": "Fixes #1905761. Updates the height of ACTV\u0027s drop down whenever the IME changes.\n"
    },
    {
      "commit": "b6d90ca1292ffab015d5068f9e184b1dc84b7233",
      "tree": "4713ca5d25092a8c630af7af79598ee5bb335208",
      "parents": [
        "b0ae27f4e10a9e5fe56b9ca549718051fe342bba"
      ],
      "author": {
        "name": "David Krause",
        "email": "david.krause@motorola.com",
        "time": "Wed Jun 17 15:46:13 2009 -0500"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Tue Jun 23 12:32:12 2009 -0700"
      },
      "message": "Fill in CDMA gaps and clean up ToneGenerator code\n"
    },
    {
      "commit": "9ce4c6c5cfc111a73e0cfc3c94daa50346c56867",
      "tree": "3d082b3a3738ada70aca232119c0054b04c1cc68",
      "parents": [
        "7306d248feb2e52593e51944bcaf98c11974e988"
      ],
      "author": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Fri Jun 19 14:13:08 2009 -0400"
      },
      "committer": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Mon Jun 22 09:14:02 2009 -0400"
      },
      "message": "Make browser bookmarks permissions part of the public API.\n"
    },
    {
      "commit": "8cdcb12752b716d0407733fecefcf1d9e926310a",
      "tree": "dd250fe1a38b1e6df4397a87a586a9dffb394bcb",
      "parents": [
        "3e3324bae45ff21615c07507e6918ad21681a6a2"
      ],
      "author": {
        "name": "Wei-Ta Chen",
        "email": "weita@google.com",
        "time": "Thu Jun 18 19:14:38 2009 +0800"
      },
      "committer": {
        "name": "Wei-Ta Chen",
        "email": "weita@google.com",
        "time": "Mon Jun 22 18:01:47 2009 +0800"
      },
      "message": "Add prepareToDraw() to Bitmap for fixing http://b/issue?id\u003d1907995.\n\nThe function is used to rebuild any caches associated with the bitmap.\nIn the case of purgeable bitmaps, this call ensures that the pixels\nare decoded for drawing, and therefore prefetching techniques\nimplemented by callers can be leveraged.\n"
    },
    {
      "commit": "a6fcc9541161de5d1c39e62d2646076706d87b96",
      "tree": "3c897c0e8f1d8f87786295018843669762ff66be",
      "parents": [
        "4d1b5bd148d0830d2acc03bafbe58dfd17e5b3f8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jun 19 14:06:01 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jun 19 14:18:41 2009 -0700"
      },
      "message": "Added in Settings.Secure default country and variant for the default TTS language.\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": "649f99e8347984c1e031dae302830f4c9ebd3df4",
      "tree": "77fbf21a988d3ad99b7b492ecd04386e347183c2",
      "parents": [
        "fd5f087536dcb04ac9c46f2b19f87a37455390b0"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Jun 17 14:29:57 2009 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Jun 19 18:48:37 2009 +0800"
      },
      "message": "Add Intent.ACTION_SEND_MULTIPLE\n\nActivities can use this intent to send multiple data.\n"
    },
    {
      "commit": "5c1e00b14d2ef10ec76abf3e951fa8003a67f558",
      "tree": "fa723a6f96f5b977dfdfdc08b5b8aab98c20d500",
      "parents": [
        "e748161ca89867e8c57d4e71c780486d4de8039c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 18 17:10:57 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 18 17:10:57 2009 -0700"
      },
      "message": "Fix targetSdkVersion, make resize mode a flag, delayed dexopt, easy ApplicationInfo.\n\n- Fix a bug where targetSdkVersion could not be set if minSdkVersion.  Stupid, stupid.\n  Also make sure to fail if minSdkVersion is for a code name.  Really stupid.\n\n- Change the API for resize compatibility mode to be a bit in the flags field, instead\n  of a separate boolean.\n\n- Implement delayed dexopting, to avoid the looong full dexopt during boot.  This is\n  only enabled for \"eng\" builds.  When in this mode, the activity manager will make\n  sure that a dexopt has been done before loading an .apk into a process, and will\n  try to avoid displaying ANRs if they are due to the dexopt causing some operation\n  to take longer than it normally would (though I make no guarantees about this\n  totally working).\n\n- Add API to Context to get the ApplicationInfo for its package, for easy access to\n  things like targetSdkVersion.\n"
    },
    {
      "commit": "c14b9ccdf13163cae5ce5d21bcf377010b37594b",
      "tree": "45c2309b18ff4e56aef65e0c7d66f8800492e33e",
      "parents": [
        "e64bb1dd9ed68281af9968cf2cd23b4e49ead76c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 17 18:02:12 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 17 21:48:14 2009 -0700"
      },
      "message": "Extend Intent/Uri conversion for use by Browser\n\nThis introduces a new Uri form of Intent with an \"intent:\" scheme, and a\ncorresponding update to the parser to handle these, so that the browser\ncan use this generic facility for starting activities based on the links\nthat are clicked and allow for web pages to link to arbitrary intents.\n\nThere is also a new \"package\" field on Intent which allows you to limit\nthe components it finds to a given package.  This replaces the new method\nthat was added to PackageManger for doing this when resolving activities,\nand implements it for all Intent queries against the package manager.\n"
    },
    {
      "commit": "1ccac75e1f1b97eccb916a8de04fc1012b30f6e5",
      "tree": "181c91a427de2ea609eff1f42c3970a441225b45",
      "parents": [
        "ef29f6afb4746eae8263ab901a5d3677bc04574b"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Jun 12 10:09:58 2009 -0700"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Wed Jun 17 11:31:26 2009 -0700"
      },
      "message": "Remove circular dependency in PackageManager. api freeStorage uses PendingIntent from android.app\nCreate a new public IntentSender class that can be used by PackageManager instead.\nThis new class uses IIntentSender internally and can only be created by PendingIntent for now.\nProvide a new getIntentSender api in PendingIntent to create an instance of this class.\nMove IIntentSender and IIntentReceiver from android.app to android.content\nChange imports of IIntentSender and IIntentReceiver to reflect the new package name\nThe PackageManager api has been named as freeStorageWithIntent and will be renamed as freeStorage\nonce the older api(which has been deprecated) will be removed shortly.\n"
    },
    {
      "commit": "4ebd855bb7362d45833dc811f2622fcc788dec17",
      "tree": "cf6f0f30fe317efe2b24cda09fb3e6f3d5704cc7",
      "parents": [
        "e65fdfb8affd92b3bb2d41f0bd149f704ec48f26"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 15 17:44:07 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 15 17:44:07 2009 -0700"
      },
      "message": "Fix build.\n"
    },
    {
      "commit": "2d4b6ad9d4c7e3e2dbb6a127f37271686253d71f",
      "tree": "b66b8c97936d53c970775aaf134b4f0eeab1a9ca",
      "parents": [
        "5570f2f24a74a1f16c781722731ba39f2907cbb3"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Mon Jun 15 14:46:00 2009 -0700"
      },
      "committer": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Mon Jun 15 16:29:20 2009 -0700"
      },
      "message": "Remove obsolete FOTA_UPDATE permission (which should never have been\nmade public, and wouldn\u0027t be used by any third party applications,\nand no longer does anything regardless).\n\nAlso remove the WRITE_GSERVICES permission from the SettingsProvider\npackage\u0027s manifest (the declaration there was redundant with the one\nin the core manifest, where all the other settings-related permissions\nlive -- no other core package includes its own permission definitions).\n"
    },
    {
      "commit": "29148f90cd9fb34ff64f76936347547885906eb9",
      "tree": "829545e831a6c558b31a4b35d49cbd0e6eb566b4",
      "parents": [
        "3adf7678cdf8fa955627e096bb5c27b94adc3079"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 15 15:25:31 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 15 15:25:31 2009 -0700"
      },
      "message": "Remove ADD_SYSTEM_SERVICE and SET_PROCESS_FOREGROUND permissions.\n\nThese are no longer used.\n"
    },
    {
      "commit": "763a5723882ec7924114ba585b49e69b3e828b4a",
      "tree": "4ef2f1f5e38b7e23278500edf0d05d6583f34eb1",
      "parents": [
        "e8939bb8f1453b44788d4475a8263082d858e533"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jun 12 10:28:28 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Jun 12 10:28:28 2009 -0700"
      },
      "message": "Hide gestures API.\n"
    },
    {
      "commit": "23ecae3bbb60c5af940f3a22170d75eb6ac05b69",
      "tree": "1138102ba856743cffd931121409a71c2bae37c3",
      "parents": [
        "0b77453076a22569f24318d194b378b68f11a63e"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Wed Jun 10 17:07:15 2009 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Thu Jun 11 11:29:57 2009 -0700"
      },
      "message": "Fix SharedPrefsBackupHelper so it doesn\u0027t hard code the paths to the files.\n\nThis took quite a bit of refactoring.\n"
    },
    {
      "commit": "d82108993f4550bf7a751ab27593ef8e15120db3",
      "tree": "ba92d52fb970c8099dd4faf7d63c4c4f7b4aa6dd",
      "parents": [
        "35379abd46b68a4efa20035c6c8b9d1faceb4dcc"
      ],
      "author": {
        "name": "Satish Sampath",
        "email": "satish@android.com",
        "time": "Thu Jun 11 16:33:05 2009 +0100"
      },
      "committer": {
        "name": "Satish Sampath",
        "email": "satish@android.com",
        "time": "Thu Jun 11 17:11:50 2009 +0100"
      },
      "message": "NEW_API: Expose queryAfterZeroResults searchable attribute.\n\nIf this attribute is provided and true, the searchable activity will be invoked for all queries in a particular session.\nIf set to false and the activity returned zero results for a query, it will not be invoked again in that session for supersets of that zero-results query. For example, if the activity returned zero results for \"bo\", it would not be queried again for \"bob\" as an optimization.\n\nThe default value is false.\n"
    },
    {
      "commit": "53175148c9b962c0ffe9cea0f3dc68bc0196e044",
      "tree": "169762ef55c30a9e5ccfa929c45c087c3cf51871",
      "parents": [
        "a32b5f3252a58416f328399680395aa5fa936640"
      ],
      "author": {
        "name": "Jack Veenstra",
        "email": "veenstra@android.com",
        "time": "Mon Jun 01 21:27:01 2009 -0700"
      },
      "committer": {
        "name": "Jack Veenstra",
        "email": "veenstra@android.com",
        "time": "Wed Jun 10 11:38:02 2009 -0700"
      },
      "message": "Add support for custom tab views in TabHost and TabWidget.\n\nThis change adds the ability to specify an arbitrary view for a tab\nindicator.  It also adds support for specifying a drawable to use as\nthe divider between tab views.\n"
    },
    {
      "commit": "0e1ca5749a96778869ef62f939542a61c034209b",
      "tree": "0eb7fef5f9151e679088aa13db8c428a7ce7198e",
      "parents": [
        "faf410443f0c2ab2d30a1c8ce90f83157b5e593b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jun 09 12:56:34 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jun 09 22:58:46 2009 -0700"
      },
      "message": "Add support for gestures in Home.\n\nAdds a new animation style for the gestures pad, and de-normalize\nthe scores in the recognition engine.\n"
    },
    {
      "commit": "f478267d6a60220fb8078c13971b5d4d3f868d67",
      "tree": "e8a7dc296de632db730f18bca1b3c4a86c3e7661",
      "parents": [
        "4ab3c00993bd7932e5262d325e6d9943074844ed"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jun 09 16:22:48 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jun 09 16:22:48 2009 -0700"
      },
      "message": "Adding default text-to-speech language in Settings.Secure.\n"
    },
    {
      "commit": "03f0b21b5a317aa6c0f0cd4d7ac91cabdf379d3e",
      "tree": "6aca14f7b6afad8cf8fdb7d9f97e6c74b4a13660",
      "parents": [
        "2d2b23119f1b4daa3064f065ebeb6397963c1780"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jun 09 04:15:22 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jun 09 04:15:22 2009 -0700"
      },
      "message": "Fix several issues in the gestures libraries.\n\nThis mostly fixes how gestures libraries are saved and loaded.\nSaving a library twice in a row was erasing the entire library,\nwhich was preventing the sketch test app from working propertly.\n"
    },
    {
      "commit": "7fe416e9436a7b2a00e27e73ceb725de4e763f30",
      "tree": "eceab5d6e27817f91e0bca14d4cc2742410e1a7e",
      "parents": [
        "f642aa2a44e63aa105bbc6aec59f9bee261986ef"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jun 09 01:42:15 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jun 09 01:42:15 2009 -0700"
      },
      "message": "Fix bug in saving gestures stores. The outputstream was wrapping itself, thus causing huge problems.\n"
    },
    {
      "commit": "d299b8194dde8c4875e5f032918ab35ebad8b1f1",
      "tree": "27fb20be4db7b7bdb4da2832df0a8146ee1f4cd3",
      "parents": [
        "b1c2874790908d1bbb9b99242fc7cc96c7b45a8a"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Jun 05 10:26:19 2009 -0700"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Jun 05 13:49:09 2009 -0700"
      },
      "message": "Add a new attribute to android manifest for defining the GLES version number.\nThis attribute is parsed by the PackageParser into ConfigurationInfo. The major\nand minor version numbers are defined as the higher and lower order bits.\n"
    },
    {
      "commit": "f62ba452bb07407f577cabecde14bfad101d7f43",
      "tree": "e9823536424790f37d8c816b5c6bfeeda74ce7df",
      "parents": [
        "716b56817aee1c0b584266a686b18a1c02ea0116"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jun 04 14:55:24 2009 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jun 05 11:29:16 2009 -0700"
      },
      "message": "Adding new Settings.Secure properties for the Text-To-Speech functionality.\nThose properties are secure to prevent applications from altering the user\u0027s settings without his knowledge.\n"
    },
    {
      "commit": "48603e7fed957f318b12aa24089e0b13c3e78529",
      "tree": "e95ba9ed29a3713aa660c27c0db0d54676bf9bf8",
      "parents": [
        "54de90635e1d0628c396d65e6c948bf4a1529229"
      ],
      "author": {
        "name": "Mike LeBeau",
        "email": "mlebeau@android.com",
        "time": "Fri Jun 05 00:27:00 2009 +0100"
      },
      "committer": {
        "name": "Mike LeBeau",
        "email": "mlebeau@android.com",
        "time": "Fri Jun 05 01:07:20 2009 +0100"
      },
      "message": "Add new SHOW_WEB_SUGGESTIONS system setting, referenced by the search settings\n(in a follow-on change). This setting, to be respected by global search, and which\nI will also file a bug to the browser to respect, determines whether live web\nsuggestions will be shown to the user as they type. For privacy reasons, this\ncould be considered undesirable, as partial queries can then be sent to the user\u0027s\nchosen search engine, so a setting was required.\n"
    },
    {
      "commit": "683f3bed89d15c673b9fd391dc258c088e9316ae",
      "tree": "2722c54001768a5275120852bd39339412c54559",
      "parents": [
        "a41962065a93b63e7161cffd662b564e01a9e189"
      ],
      "author": {
        "name": "Wei-Ta Chen",
        "email": "weita@google.com",
        "time": "Thu Jun 04 11:42:14 2009 -0700"
      },
      "committer": {
        "name": "Wei-Ta Chen",
        "email": "weita@google.com",
        "time": "Thu Jun 04 11:42:14 2009 -0700"
      },
      "message": "Unhide inInputShareable in BitmapFactory.Options.\n\nThe variable works together with inPurgeable, which has been unhidden in\nhttps://android-git.corp.google.com/g/Gerrit#change,2870.\n"
    },
    {
      "commit": "9189cabb0b6c6c28232fe6f412b7ba7a37352a6a",
      "tree": "6ddc6a8eb0158cba32cc6139b04c6b6eb9f0ba5f",
      "parents": [
        "eaeb663bcd7a82b654954b42663232cbd7bef7e7"
      ],
      "author": {
        "name": "Mitsuru Oshima",
        "email": "oshima@google.com",
        "time": "Wed Jun 03 11:19:12 2009 -0700"
      },
      "committer": {
        "name": "Mitsuru Oshima",
        "email": "oshima@google.com",
        "time": "Wed Jun 03 16:28:10 2009 -0700"
      },
      "message": "* Moved supports-density tag under manifest\n* Refactored Compatibility code\n  * Added CompatibilityInfo class\n  * Removed getApplicationScale from Context\n  * Added Resources#getCompatibilityInfo so that RootView can get the compatibility info w/o going through Context\n* Expandable support\n  * Added expandable tag under manifest\n  * Old application w/o expandable is given the default screen size  ([320, 480] x density).\n  * The non-expandable window is centered.\n"
    },
    {
      "commit": "9af0b4f7be14f2b3ed0ecc843c57ea47ec288e55",
      "tree": "b3adeb84b7b5a8ab420cf178db107f19edb2ad78",
      "parents": [
        "97c2fdfc2e1cb4f51c624dd8e30e6bdb63ea21be"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jun 02 21:56:27 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue Jun 02 21:59:42 2009 -0700"
      },
      "message": "Add new listener to GestureOverlayView. This listener fires whenever the overlay thinks the user is starting a new gesture. This allows Home to snap the workspace back to its original position during a gesture operation.\n"
    },
    {
      "commit": "eb949674fd3b83b706f795fc6b16ab1c66250c93",
      "tree": "4c58350eef523e46bcd26423a15aaa109779988f",
      "parents": [
        "30b70cec05190c8fcfa5aeb175a37bf81ed3966d"
      ],
      "author": {
        "name": "Wei-Ta Chen",
        "email": "weita@google.com",
        "time": "Mon Jun 01 15:49:32 2009 -0700"
      },
      "committer": {
        "name": "Wei-Ta Chen",
        "email": "weita@google.com",
        "time": "Tue Jun 02 11:01:43 2009 -0700"
      },
      "message": "Unhide inPurgeable in BitmapFactory.Options.\n\nThe correctness and effectiveness of the usage of the parameter are evaluated in:\nhttps://android-git.corp.google.com/g/Gerrit#change,2768\n"
    },
    {
      "commit": "5a3a77dabd744d5be79d7745c2a977c108a9ad98",
      "tree": "2c5ad40a1c6c967839c60f91542eb99ca599502e",
      "parents": [
        "181fafaf48208978b8ba2022683ffa78aaeddde1"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Mon Jun 01 09:25:28 2009 -0700"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Mon Jun 01 09:25:28 2009 -0700"
      },
      "message": "base: Rename WRITE_SDCARD -\u003e WRITE_EXTERNAL_STORAGE\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "181fafaf48208978b8ba2022683ffa78aaeddde1",
      "tree": "7c062847d418415e28813e70aac53c8c47e4ff69",
      "parents": [
        "c01159bb00f7273f9b051dfbbe6bc10d54d3a846"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu May 14 11:12:14 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Sun May 31 13:10:03 2009 -0700"
      },
      "message": "Retool the backup process to use a new \u0027BackupAgent\u0027 class\n\nBackups will be handled by launching the application in a special\nmode under which no activities or services will be started, only\nthe BackupAgent subclass named in the app\u0027s android:backupAgent\nmanifest property.  This takes the place of the BackupService class\nused earlier during development.\n\nIn the cases of *full* backup or restore, an application that does\nnot supply its own BackupAgent will be launched in a restricted\nmanner; in particular, it will be using the default Application\nclass rather than any manifest-declared one.  This ensures that the\napp is not running any code that may try to manipulate its data\nwhile the backup system reads/writes its data set.\n"
    },
    {
      "commit": "8d78756c160bda736cccef9ca1a6e2d6a159ac42",
      "tree": "b4c2f9469cfa7d78b8495594ef62fce5eb284b27",
      "parents": [
        "a5f50b8f49cc9b34b1de462e11498d92c692b978"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri May 29 15:02:55 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri May 29 15:02:55 2009 -0700"
      },
      "message": "Fix the build.\n"
    },
    {
      "commit": "9fc2e9c965c68d56a0caf812f7f6d38d15317063",
      "tree": "ad925b8780f3112c60206b15a17ec874f142b3a0",
      "parents": [
        "607384d45fae5c9c2b21c96e4278665c8d7d3006"
      ],
      "author": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Thu May 28 14:48:32 2009 +0100"
      },
      "committer": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Fri May 29 09:06:44 2009 +0100"
      },
      "message": "MemoryFile constructor and native methods throw IOExceptions.\n\nThese native methods in android.os.MemoryFile throw IOException but their\nJava declarations did not include \"throws IOException\":\nnative_open(),native_mmap(),native_read(),native_write(),native_pin()\n\nThe MemoryFile(String,int) constructor calls native_open and\nnative_mmap, but does not declare that it throws IOException. The other\nJava methods that call the native methods do actually declare that they\nthrow IOException.\n\nThis means that any code that created memory files could throw\nan IOException, without knowing about it.\n\nThis changes adds \"throws IOException\" to the native methods and to\nthe constructor. The constructor change changes the public API, but\nmaintains binary compatibility. There is some precedent for making\nsource incompatible source API changes for this sort of thing\n(see https://mondrian.corp.google.com/changelist/124214-p9).\n\nThe change also makes the native methods static, which\nthey seem to have been intended to be, as indicated by the\nsecond parameter to the native implementations being named\n\"clazz\".\n\nThis requires changes to the Compatibility Test Suite to catch the exceptions.\nThis is done in https://android-git.corp.google.com/g/2617\nUnfortunately that change must be submitted together with this one in order\nnot to break the build.\n\nFixes http://b/issue?id\u003d1881829\n"
    },
    {
      "commit": "fc1b15cfbfc5f69235ec1f367abd7a909381cd05",
      "tree": "eeca713d5c9078989763d3777aafd41007a2846f",
      "parents": [
        "1cb62b83241c5d1cac9e9cda60d0d5d9218b44fb"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Fri May 22 15:09:51 2009 -0700"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Thu May 28 13:37:06 2009 -0700"
      },
      "message": "Fix wifi multicast API for public use.\n\nApplying API review comments and taking it public.\n"
    },
    {
      "commit": "4bc035a65cac177be9294e69f110497e3b6e34e6",
      "tree": "634b5bde8fc4cae5a7b77ee3cde01f04bc9ae7fc",
      "parents": [
        "a5f158bdde77f8d173d1f1c95d0f92405c519b0f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 22 09:18:15 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 26 07:44:28 2009 -0700"
      },
      "message": "Fix issue 1846343 - part 1\n\nThis change is the first part of a fix for issue 1846343, :\n- Added new enum values for input sources in AudioRecord and MediaRecorder for voice uplink, downlink and uplink+downlink sources.\n- renamed streamType to inputSource in all native functions handling audio record.\n\nA second change is required in opencore author driver and android audio input to completely fix the issue.\n"
    },
    {
      "commit": "e7c36dda7ada30e02f3aa9d75f282a53402aeae7",
      "tree": "82b6ab8e66680e3a1d58ed0d9d646546b84f1c7e",
      "parents": [
        "ec25df9fbc685be384f8dd764fa224a4d923e9d8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Mon May 25 13:51:00 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Mon May 25 13:51:00 2009 -0700"
      },
      "message": "Add new orientation attribute to GestureOverlayView. This can be used to prevent the overlay from interfering with vertically/horizontally scrolling views underneath the overlay.\n"
    },
    {
      "commit": "ec25df9fbc685be384f8dd764fa224a4d923e9d8",
      "tree": "3d8c42a50b2286c7dc032f111da52971ff31cb99",
      "parents": [
        "ff686ce11e952a9001b1384d8e7d82127b0529a2"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Mon May 25 04:39:37 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Mon May 25 04:39:37 2009 -0700"
      },
      "message": "Fix drawing bug: opaque invalidations should not be taken into account when the invalidated view is animating. Also add the ability to disable the auto-fade on the GestureOverlayView.\n"
    },
    {
      "commit": "82f3495b146b267f3786997752cef25310176349",
      "tree": "1821c5b8731028212250ec07fe209a0804a0e53f",
      "parents": [
        "d9a874a4cb8e82ae64c1698bd71ced8d87bbc5cd"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Sun May 24 18:40:45 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Sun May 24 23:45:03 2009 -0700"
      },
      "message": "Cleanup Gestures API and make it easier to use in 3rd party apps. Also fix the events processing in the gestures overlay mechanism. Give better control of the various properties of the overlay through XML attributes.\n"
    },
    {
      "commit": "b181118b6e58c0014da4e9d52bf38548adc73a8a",
      "tree": "4f62cb71cacc03d25935e5430d8aa431dbeef854",
      "parents": [
        "5b6a5cee4c48fd2ffc35f07ebe9f24eb53086b9a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 21 15:45:42 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 22 18:45:25 2009 -0700"
      },
      "message": "Define TARGET_CPU_ABI for finding native code in .apks\n"
    },
    {
      "commit": "c0292b04407d93a11ee1412ed52cc5b04642a6f1",
      "tree": "336b9c167824d97c81019998d42824c28dff5e90",
      "parents": [
        "f41c640d8424fbd90cb1751173ede1c9f5e848b4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri May 22 02:39:24 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri May 22 02:39:24 2009 -0700"
      },
      "message": "Fix the build\n"
    },
    {
      "commit": "d6a463a9f23b3901bf729f2f27a6bb8f78b95248",
      "tree": "1371cafd6a1c0fe8d3cd4580e7878a9adb86b183",
      "parents": [
        "cfcc0df2658d0ce7dc753511bb44ab8ae7a636f7"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Thu May 21 23:10:10 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri May 22 01:59:59 2009 -0700"
      },
      "message": "Add a new API to ListView: setGestures(int). This allows developers to enable gestures to jump inside the list or filter it. This change also introduces a new XML attribute to control this API. It also adds the ability to theme the GestureOverlayView from the gestures library. Finally, this adds a new VERSION header to the binary format used to store the letters for the recognizer.\n"
    },
    {
      "commit": "db567c390bd56c05614eaa83c02dbb99f97ad9cc",
      "tree": "86399406ca7a53c3d902b3863bf7a944cb7c5c3f",
      "parents": [
        "384bfa270cdcb5dc3bc9ec396b783e25eb2d9b4d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Thu May 21 16:23:21 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Thu May 21 18:12:56 2009 -0700"
      },
      "message": "Move the Gestures API to the framework in android.gesture.\n"
    },
    {
      "commit": "fd6e5f0dda50e113db4ccc55338b6c4f09da37a4",
      "tree": "faf8e2c6510d2a0c4439cdcdfe74d97100dc9020",
      "parents": [
        "bb7b7b316a6a15f4df6af3c62a293920c68c7b00"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu May 21 11:28:20 2009 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu May 21 11:28:20 2009 -0400"
      },
      "message": "location: Replace ILocationCollector interface with new ILocationProvider method\n\nThis change replaces ILocationCollector with a more general mechanism that\npasses locations received from a provider to all other providers.\nThe network location provider now uses this to implement the location collector.\nIn the future, this could be used to inject network locations to the GPS\nas aiding data.\n\nThis change also removes the now obsolete permission INSTALL_LOCATION_COLLECTOR.\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "f479aa0900e9a85afdc78b1048684e37579ebf23",
      "tree": "1337f0f101bfe38ec5b182201b0d1b6dbb4cafb0",
      "parents": [
        "b204d4f12773ec67c7f0ded41cb111018f154476"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 20 16:01:06 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 20 16:30:59 2009 -0700"
      },
      "message": "Add padding to public.xml to avoid breaking from auto-merges.\n"
    },
    {
      "commit": "d62ad4f120e92fd597f44caf125ac853ac0ea11c",
      "tree": "a9a6b62f7b1f806e1793128ad142155ab26e06bb",
      "parents": [
        "4174e2682f4eb6ea35c84e35810312967ea7e233"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 19 19:06:25 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 20 13:21:59 2009 -0700"
      },
      "message": "Fix issue #1859814: Add android.os.Build.MANUFACTURER\n"
    },
    {
      "commit": "b2d415693482f58e104a99376cc4f65bf3799edf",
      "tree": "b46209f1d47350428b65724d05fb62823a258fd4",
      "parents": [
        "95fc68f24a2a93e5664e2234abcfe479d385cc05"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 19 19:25:04 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 19 19:25:04 2009 -0700"
      },
      "message": "Fix build.\n"
    },
    {
      "commit": "936257eabde562ada9c481f285a24bbf4ffa4bc9",
      "tree": "bc3d7f27fced77ed06963cd9248a03471592bde2",
      "parents": [
        "ce2372de58ad018623748f63e61ffc70c9eb8895"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Mon May 18 11:04:45 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Mon May 18 11:04:45 2009 -0700"
      },
      "message": "Fixes external #2686. Make @android:anim/linear_interpolator public since the default intperpolator for all animations is accelerate_decelerate.\n"
    },
    {
      "commit": "5b3189e03c71bcd276e0b39d0ec5e2f699a1697f",
      "tree": "8120d29193d999d8768813f8e4ca6f579b983b51",
      "parents": [
        "a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 15 18:33:31 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 15 18:33:31 2009 -0700"
      },
      "message": "Fix the build. :(\n"
    },
    {
      "commit": "a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3d",
      "tree": "75e0804e6628f9bb818c5f6f918315640c721d4b",
      "parents": [
        "ba2a3a1b32e242eea4e97c927d886e8987fde3d4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 13 15:06:13 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 15 18:02:47 2009 -0700"
      },
      "message": "Implement compatibility support for WRITE_SDCARD permission.\n\nNow old applications will automatically be granted it.  Also renamed it from\nSDCARD_WRITE to WRITE_SDCARD to be consistent with our other permissions,\nand re-arranged how we do targetSdkVersion to actually be usuable for this\nkind of stuff.\n\nNote that right now this results in basically all apps being given the\nWRITE_SDCARD permission, because their targetSdkVersion is not set.  I will\nbe dealing with that in a future change.\n"
    },
    {
      "commit": "eae850cefe7e149f396c9e8ca1f34ec02b20a3f0",
      "tree": "a4e19d75aeef5529a0a8084d513638890afac2cd",
      "parents": [
        "75986cf9bc57ef11ad70f36fb77fbbf5d63af6ec"
      ],
      "author": {
        "name": "Mihai Preda",
        "email": "preda@google.com",
        "time": "Wed May 13 10:13:48 2009 +0200"
      },
      "committer": {
        "name": "Mihai Preda",
        "email": "preda@google.com",
        "time": "Fri May 15 12:32:07 2009 +0200"
      },
      "message": "Allow intent resolution to be constrained by package name.\n"
    },
    {
      "commit": "75986cf9bc57ef11ad70f36fb77fbbf5d63af6ec",
      "tree": "84e1843368037d24f83749d152f818d537267bfa",
      "parents": [
        "669ec3a6e47248fee0a3a0f4877b46875eb42140"
      ],
      "author": {
        "name": "svetoslavganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu May 14 22:28:01 2009 -0700"
      },
      "committer": {
        "name": "svetoslavganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu May 14 23:47:05 2009 -0700"
      },
      "message": "Accessibility feature - framework changes (replacing 698, 699, 700, 701 and merging with the latest Donut)\n"
    },
    {
      "commit": "a35198117ed8ba356e814863066777ee9f37f8e1",
      "tree": "1184392fb7a379ab4e33a5d90fec13808106c63f",
      "parents": [
        "d1f7b3a5720a4d6d92c4eea5a1fe812a790a7442"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Thu May 14 16:29:18 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Thu May 14 16:29:18 2009 -0700"
      },
      "message": "Fix the build, again.\n"
    },
    {
      "commit": "290bb011c5c1a9ba1f2116810b06cf52a9c36b3e",
      "tree": "cfb9ce077d79021e86c1b8d7951f3655520f368d",
      "parents": [
        "ec2d74d40f9b7a8bf96feeb45a5d054d8b0ce0dd"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Wed May 13 18:57:29 2009 -0400"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Thu May 14 09:39:32 2009 -0400"
      },
      "message": "Get the backup calling through to the file backup helper.\n\nThis includes some cleanup to make the parameters match\nbetween BackupService.onBackup and FileBackupHelper.performBackup.\n"
    },
    {
      "commit": "d39afbdc92e95e597c311e78ac32edaad27fcf0d",
      "tree": "72b8b6bee6df8f80d72cd782873c78dbc7f38b5c",
      "parents": [
        "c5b0e6e4eb09a4dd8fc1cfcfca959262705d84d0"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Tue May 12 14:42:58 2009 -0400"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Tue May 12 23:40:45 2009 -0400"
      },
      "message": "Make android.content.ComponentName implement java.lang.Comparable.\n"
    },
    {
      "commit": "ade3ecad94d1f4431576f53bae26c35efbf7a2c9",
      "tree": "066fc83ddeb6c52011e13744152b594911895094",
      "parents": [
        "807f23b2d8c7148cf6fc95bb88cfc2f78e4be66a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 11 18:54:45 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 12 16:09:43 2009 -0700"
      },
      "message": "Implement issue #1783881 (manifest option for adb-install-only apps)\n\nYou can now use android:testOnly\u003d\"true\" to not allow your .apk to be installed\nas a normal app.  The only way to do so is with the pm command and giving the\n-t option, which sets a new INSTALL_ALLOW_TEST flag when installing.\n\nI also used this to clean up the install API...  actually, mostly to hide\nit, since it is not accessible to apps so shouldn\u0027t be in the SDK.  We\nwill be doing some more work on it, so this will prevent adding yet\nanother backwards-compatibility-for-no-reason version.\n"
    },
    {
      "commit": "c64322c35212e919906ffd66118c7d5d3ad36636",
      "tree": "846d1a95480c87f18975245ceea201535e23c553",
      "parents": [
        "3e3439d5ba0cf5eda060c4991219c32af917fc5b"
      ],
      "author": {
        "name": "Jacek Surazski",
        "email": "jaceks@google.com",
        "time": "Tue Apr 28 15:26:38 2009 +0200"
      },
      "committer": {
        "name": "Jacek Surazski",
        "email": "jaceks@google.com",
        "time": "Tue May 12 23:16:20 2009 +0200"
      },
      "message": "PackageManager keeps track of who installed what.\n\nStores the package name of the installer app in packages.xml\n"
    },
    {
      "commit": "a87a132ebf1c2dd733cf52feff6e44525257c961",
      "tree": "683a3803f2b3704db73a56a769fcd0f19f912b52",
      "parents": [
        "da33d0d139531ff184a1a339b734de00f1cc0743"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue May 12 13:22:18 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Tue May 12 13:22:18 2009 -0700"
      },
      "message": "Fixes #1847219. Add a new API to load fonts from arbitrary files: Typeface.createFromFile(String/File).\n"
    },
    {
      "commit": "2accb31239cf7a3cad77b51baed4b23934636e5b",
      "tree": "7bd1a069c5cc8b7e941e157ca6e9cd7b0c0c13fc",
      "parents": [
        "778fb15a010bdac0a3721193ff125fcec8e7312c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 08 17:07:35 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 08 17:07:35 2009 -0700"
      },
      "message": "this should fix the build\n"
    },
    {
      "commit": "851a54143c15a1c33361efae2db3f7f45059b472",
      "tree": "c9e6ced5424530ff9a40f5471afb969e15cac35e",
      "parents": [
        "ed3b804f2cc61029cf2969cbfa499ea230c22bb0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 08 12:06:44 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 08 15:15:36 2009 -0700"
      },
      "message": "Implement targetSdkVersion and maxSdkVersion, plus version code names.\n\nThis adds new attributes for specifying a targetSdkVersion and maxSdkVersion.\nThere is a new ApplicationInfo flag that is set if the application has set\nits targetSdkVersion to the current platform or later.  Also you can now\nuse a string for minSdkVersion and targetSdkVerion, to indicate you are\nbuilding against a development tree instead of an official platform.\n"
    },
    {
      "commit": "55280a91884b9256e8db6af6a09f28b3feeaa9d8",
      "tree": "ac29de79b8ecec41f2fde6014a1834418a82d2fd",
      "parents": [
        "672f1e2b07d985526bfd5606e6a888005fdcb70c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 07 15:53:46 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 08 12:59:21 2009 -0700"
      },
      "message": "Improve shutdown process to send broadcast for applications.\n\nThis introduces a new class in the base platform for performing a clean\nshutdown (which was copied from the classes in the policies).  It\nincludes new features to send a shutdown broadcast for applications\nto do cleanup, and ot have the activity manager pause the current\nactivity before proceeding with the shutdown.  These facilities are\nalso use to write at the most recent stat files for sync, battery\nand user activity.\n"
    },
    {
      "commit": "f04da95400e409dbb4ba33653f075bc76e091ef1",
      "tree": "ae334fcecef0425e2de208812a8a3251097de92d",
      "parents": [
        "c825d3ebd6ca66e65e63fdc76f032e08aa2a8e22"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed May 06 15:46:00 2009 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri May 08 10:34:39 2009 -0700"
      },
      "message": "Fix keyboard redraw bug on long-press of CapsLock.\n\nExpose invalidateKey and invalidateAllKeys for subclasses to call when needed.\n"
    },
    {
      "commit": "b8908892674c188c8877fc97a2bd91c552f97cf2",
      "tree": "fca0a24cf5c0e5d72ae71c93afb3830ff78bffd0",
      "parents": [
        "b2a5011578d4a64df2f39bdeeedfe9f37e7aecc4"
      ],
      "author": {
        "name": "Jeff Hamilton",
        "email": "jham@android.com",
        "time": "Thu May 07 18:52:53 2009 -0700"
      },
      "committer": {
        "name": "Jeff Hamilton",
        "email": "jham@android.com",
        "time": "Thu May 07 18:52:53 2009 -0700"
      },
      "message": "Fix the build.\n\nThere was an issue with current.xml from a previous backup related change. Joe blames the stage.\n"
    },
    {
      "commit": "b1a7ffef3a0007b6991b8338460f6aac8cbb11e8",
      "tree": "cd7745a25c1ab0d4c7c136672a8a87634d5fee4c",
      "parents": [
        "fedf566b9e00f18588fc104caafd047af069844a"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Wed May 06 18:06:21 2009 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Thu May 07 15:32:48 2009 -0700"
      },
      "message": "More backup tests\n"
    },
    {
      "commit": "d90a33111b3f1d0b2fff7ba9bafabc63fdb67d3a",
      "tree": "6233ef66b9e5a7663b9db51f6d2a7052efb3bb74",
      "parents": [
        "413cf5f4536b9c029d07f99b1c769c026313cd12"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed May 06 14:54:28 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Wed May 06 16:49:56 2009 -0700"
      },
      "message": "Add new setTag(int, Object) API to allow applications to specify several tags.\n"
    },
    {
      "commit": "f3af740bdfc261b1cb25c0799af780d3753d4518",
      "tree": "f33c3453caf03db8c4b7a358ddc8a8d3945076ae",
      "parents": [
        "b9c9d260f21b321527c4622a123af9767630d94d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 05 00:49:01 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 06 11:35:46 2009 -0700"
      },
      "message": "Fixed issue 1709450: Requirements for CDMA Tone Generator\n\nAdded new tone types for CDMA IS-95 specific tones.\nAutomatic selection between IS-95, CEPT and JAPAN version base on operator\ncountry code for call supervisory tones.\nAlso improved tone generator capabilities:\n- Each tone segment can now generate its own set of frequencies\n- A tone does not have to be a succession of alternating ON/OFF segments\n- The sequence repetition does not have to start from first segment\n"
    },
    {
      "commit": "b9c9d260f21b321527c4622a123af9767630d94d",
      "tree": "581cf182a724dcc4a7ba9078229d57f8e3e9ff4f",
      "parents": [
        "c770ed8a6bb7614ed4a85a672e4e6830bed19a95"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 06 08:13:20 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 06 10:52:19 2009 -0700"
      },
      "message": "fix issue 1713090: After a Bluetooth call, MusicPlayer starts playing on speaker rather than wired external audio.\n\nTemporary fix until audio routing is refactored in Eclair release:\n- centralized and synchronized all audio routing control in AudioService.setRouting()\n- deprecated AudioManager.setRouting() and AudioManager.getRouting() methods\n"
    },
    {
      "commit": "231cc608d06ffc31c24bf8aa8c8275bdd2636581",
      "tree": "9b435c670f0f16751a21ae4678bfbed7d8e159b4",
      "parents": [
        "06d96020c35dac2bf1651cb8bd4cfced911f1142"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Apr 27 17:10:36 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 05 15:40:53 2009 -0700"
      },
      "message": "Rewrite SyncStorageEngine to use flat files and in-memory data structures.\n\nThe previous implementation used a database for storing all of its state, which could cause\na significant amount of IO activity as its tables were updated through the stages of a sync.\nThis new implementation replaces that in-memory data structures, with hand-written code\nfor writing them to persistent storage.\n\nThere are now 4 files associated with this class, holding various pieces of its state that\nshould be consistent.  These are everything from a main XML file of account information that\nmust always be retained, to a binary file of per-day statistics that can be thrown away at\nany time.  Writes of these files as scheduled at various times based on their importance of\nthe frequency at which they change.\n\nBecause the database no longer exists, there needs to be a new explicit interface for\ninteracting with the sync manager database.  This is provided by new APIs on IContentService,\nwith a hidden method on ContentResolver to retrieve the IContentService so that various\nsystem entities can use it.  Other changes in other projects are required to update to the\nnew API.\n\nThe goal here is to have as little an impact on the code and functionality outside of\nSyncStorageEngine, though due to the necessary change in API it is still somewhat extensive.\n"
    },
    {
      "commit": "52fa7c2afd040ec0acc6c90c7bec655840632f4f",
      "tree": "e71edb8d683d14d8db3e6cfc6e34cc72b281889e",
      "parents": [
        "a833cbbed087bf6869905a43166757a6436ad34f"
      ],
      "author": {
        "name": "Dave Bort",
        "email": "dbort@android.com",
        "time": "Wed Apr 22 17:33:50 2009 -0700"
      },
      "committer": {
        "name": "Dave Bort",
        "email": "dbort@android.com",
        "time": "Fri May 01 17:47:13 2009 -0700"
      },
      "message": "Config: Deprecate most fields, and hook into ConfigBuildFlags\n\nCopy 3.xml to 4.xml, and patch 4.xml to deal with the fact that\nConfig.DEBUG\u0027s value is no longer actually fixed.  We don\u0027t want\nto modify 3.xml directly, because it\u0027s the official cupcake API.\n\nUpdate current.xml to reflect the differences between 3.xml and 4.xml\nand to reflect the new deprecation states.\n\nThe deprecated fields should be @hidden if possible before the\nnext API release, but it can\u0027t be done yet because there are\nSDK-linked platform apps that use some of the deprecated fields.\n\nSigned-off-by: Dave Bort \u003cdbort@android.com\u003e\n"
    },
    {
      "commit": "275555c8eb3fb5df6e7320873b88b77cdde85a9e",
      "tree": "96c3bfe004179e2c08e87bf8784ad278dfdfe53d",
      "parents": [
        "767db0a1ec760042b145e7c19a672c7180ad10f3"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri May 01 11:30:34 2009 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri May 01 15:06:31 2009 -0400"
      },
      "message": "location: Add support for location providers outside of the system process.\n\nAlso added new permissions android.permission.INSTALL_LOCATION_PROVIDER\nand android.permission.INSTALL_LOCATION_COLLECTOR to the public API.\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "9a81736176f507489f262344b6e3d55bbe53be7c",
      "tree": "1b12569fc3d58eabac132452f06011dd46d3d530",
      "parents": [
        "15d98b23ca83e7cd25ee14945e55c2701e75994f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri May 01 10:57:14 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri May 01 10:57:14 2009 -0700"
      },
      "message": "    Add the ability to specify the onClick handler with XML. The new android:onClick attribute defines the name of the method in the Activity to invoke when the button is clicked. The method has to be public and get one View parameter.\n"
    },
    {
      "commit": "a56b318cf2d4c3700899f9de394c5635761dda66",
      "tree": "f41ebc7a29e529a4681b493682b8a19945e0231c",
      "parents": [
        "232cd50f152b919f0918ee3f9fbdaf6ee1ae9f63"
      ],
      "author": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Thu Apr 30 12:46:11 2009 +0100"
      },
      "committer": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Fri May 01 09:43:49 2009 +0100"
      },
      "message": "NEW_API: Expose includeInGlobalSearch searchable attribute\n\nIf this attribute is provided and true, the searchable activity will be\nincluded in any global lists of search targets.\n\nThis is needed to support third-party suggestion providers in\nglobal search. See http://b/issue?id\u003d1819651\n"
    },
    {
      "commit": "232cd50f152b919f0918ee3f9fbdaf6ee1ae9f63",
      "tree": "2e80d3349421c17f33d757359605b14339923d89",
      "parents": [
        "83b395ceace724e55490aa6f2c0117c8b31e3723"
      ],
      "author": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Thu Apr 30 12:36:25 2009 +0100"
      },
      "committer": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Fri May 01 09:43:48 2009 +0100"
      },
      "message": "NEW_API: Expose searchSuggestThreshold searchable attribute\n\nThis lets the searchable activity specify the number of\ncharacters needed to trigger suggestions. Before, this was\nhard-coded at 0. This caused unnecessary querying of the\nsuggestion provider in cases where the provider does not\nreturn suggestions for empty or short queries.\n"
    },
    {
      "commit": "c114eb55b442981e2ea0a8989aa6ed458fc418e4",
      "tree": "ce9f75917a625b284ce44a991b846c6cbd788fa1",
      "parents": [
        "021dce4198afbf602109ba5807a193c437b05361"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Apr 30 12:40:19 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Apr 30 12:40:19 2009 -0700"
      },
      "message": "Hide the backup stuff for now\n\nAlso adjust based on comments:\n+ changed service intent string to conform to usage guidelines\n+ only publish the IBackupService binder when invoked with the right\n  intent action\n+ docs tweaks\n"
    },
    {
      "commit": "a8bf815c6153290b173f34b071dddb0a0034a115",
      "tree": "0fa451a3a1035092ce916e3d6a25b8e8553f03bd",
      "parents": [
        "487529a70cd1479ae8d6bbfb356be7e72542c185"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Apr 30 11:36:21 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Apr 30 11:36:21 2009 -0700"
      },
      "message": "Add android.backup.BackupManager\n\nAlso tweak the dataChanged() api to have the client supply a package name.  We\ndon\u0027t necessarily TRUST this, but we use it to narrow the set of packages requesting\na backup pass, no longer blithely scheduling a pass for all packages associated\nwith the caller\u0027s uid.\n"
    },
    {
      "commit": "487529a70cd1479ae8d6bbfb356be7e72542c185",
      "tree": "ca19a948a28e9d4eb7b4c9890b006e43b89d7a6d",
      "parents": [
        "dc67739af90aa31a0b546c14bf1e68e6acbb8375"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Apr 29 14:03:25 2009 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Apr 29 14:49:30 2009 -0700"
      },
      "message": "First baby steps towards settings backup\n\nThis change adds a sketched outline of the backup system architecture, with\nall of the major pieces represented other than client-side helpers for\nspecific types of data.  IBackupManager and BackupService are public so that\nwe can write test apps against SDK-domain symbols from the outset.\n\nWhat code exists in this change hasn\u0027t been tested and may crash.  It\u0027s the\nbeginnings of the real implementation but of course is barely begun.\n"
    },
    {
      "commit": "2a4bf5cee37cafb4c73a3b0ed7a4c86d1c7ce741",
      "tree": "832ec49adf9d9d014e05d6ff908e9b393abef1d8",
      "parents": [
        "8b5e7c046d4ab2fff7c4e1c67488058ff736b9ea"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Apr 29 13:50:54 2009 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Apr 29 13:50:54 2009 -0700"
      },
      "message": "Fix the build.\n"
    },
    {
      "commit": "257eef353dfc9519b63e3fe2616505c5534b460a",
      "tree": "21862a3ca74b4c5accf64b00f85f4a179831f429",
      "parents": [
        "3eab744d018924189b1b8f5530accd52e91213de",
        "8d112675879a2b83197d3b4ae4fb623abd1a1ec3"
      ],
      "author": {
        "name": "Mitsuru Oshima",
        "email": "",
        "time": "Mon Apr 27 12:02:51 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Apr 27 12:02:51 2009 -0700"
      },
      "message": "Merge branch \u0027readonly-p4-donut\u0027 into donut\n"
    }
  ],
  "next": "8d112675879a2b83197d3b4ae4fb623abd1a1ec3"
}
