)]}'
{
  "log": [
    {
      "commit": "90d2db3d21d07c2a4b4cbbc558f5ec59d20098c3",
      "tree": "51f9e1bcb1cfbfe18899bdb926c375164f3939f7",
      "parents": [
        "965e37ec88609c36a3c5461ece459a96abb6f7ca"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 11 22:19:06 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 12 13:19:06 2010 -0800"
      },
      "message": "Add Pointer Location to the window manager.\n\nThe window manager now has pointer location built into it.\nViva la touch!\n"
    },
    {
      "commit": "11f7c7e07754515cd732a9f8cdc2d1352db1a3ab",
      "tree": "2e3f70047d612049edfe516602f5ca76e9311fc7",
      "parents": [
        "93c0a0d90c873d5a9a6ee9df30cc6ad68420839a",
        "136b1f927f9d11cb0a9d3202ca3f77471afda556"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@android.com",
        "time": "Fri Feb 12 10:53:07 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 12 10:53:07 2010 -0800"
      },
      "message": "Merge \"Fix spurious ANRs involving window shuffling and non-fullscreen activities\""
    },
    {
      "commit": "a0430a1860dc3ee56a09c540ebed4ef0af5ab423",
      "tree": "e82459fa55e0083938cbdcb73c786c6d544a3279",
      "parents": [
        "470969346d7958f859d97d1a136b4ecc11e2a464"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@google.com",
        "time": "Thu Feb 11 23:35:49 2010 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@google.com",
        "time": "Fri Feb 12 01:06:22 2010 -0500"
      },
      "message": "Disable distracting status bar ticker text in car mode.\n\nBug: 2420702\n\nChange-Id: I17ade6355b60da5e77d17f3556c86a4aaf40d173\n"
    },
    {
      "commit": "470969346d7958f859d97d1a136b4ecc11e2a464",
      "tree": "c9c1ec33c9b3dd2463ffa4b7704cd87e1a12ca9c",
      "parents": [
        "b509065a586d11e6800373d0a57f5296428f2d89"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 11 15:57:09 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 11 20:02:20 2010 -0800"
      },
      "message": "Add APIs for mapping between new and current package names.\n\nThis will allow Market and others to find out what the \"real\" name\nof a package is, when it is currently running under the old name of\na previously installed version.\n"
    },
    {
      "commit": "136b1f927f9d11cb0a9d3202ca3f77471afda556",
      "tree": "c414b2dd82c19844dae57e475941f66c87c38bbd",
      "parents": [
        "5a4b1d9e63c084998f8be3def945f005f8768937"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Feb 11 17:51:24 2010 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Feb 11 18:07:22 2010 -0800"
      },
      "message": "Fix spurious ANRs involving window shuffling and non-fullscreen activities\n\nForce the event-target bookkeeping to reset when an app explicitly\nacknowledges event receipt.  Furthermore, notify the event dispatcher\nwhenever a new window is created, even if there is nominally an\nexisting event target window.\n\nThese changes in tandem address a subtle race bug in which the event\ndispatcher believes that there is an event recipient that it is still\nwaiting for even when the event in question has been acknowledged;\nthis results in a spurious ANR.  There were checks in the existing code\nthat wound up doing the right thing in the case of windows becoming\nhidden, but the case of non-fullscreen activities floating over them\n[unavailable for input but still visible] exposed the race condition.\n\nBug: 2432828\nChange-Id: I29fb741aace34736b029f9ba43f2c43184366258\n"
    },
    {
      "commit": "315ada7fbb9e967c22e87b4921bec720ceb2c73c",
      "tree": "d40fec8ac540b985027bf2334c9d3e8d5d73d942",
      "parents": [
        "2870552b412cd8186c6605d108b736832b9b82da"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 11 12:14:08 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 11 14:36:30 2010 -0800"
      },
      "message": "Get rid of the limit-unlock policy control.\n\nThis is merged with force-lock.  These both allow effectively the same thing,\nso there is no reason to junk up the user experience with them as separate\nentities.\n"
    },
    {
      "commit": "27b28b3f62bd3b54fa13acd5d035940b9be464f3",
      "tree": "d1f44096f7071bbc53e5bc979117be8e0f4aa55c",
      "parents": [
        "d5663a108760de672b130ffabd4f6632982f75e5"
      ],
      "author": {
        "name": "Tobias Haamel",
        "email": "haamel@google.com",
        "time": "Tue Feb 09 23:09:17 2010 +0100"
      },
      "committer": {
        "name": "Tobias Haamel",
        "email": "haamel@google.com",
        "time": "Thu Feb 11 21:25:58 2010 +0100"
      },
      "message": "Introduce special UI modes for night and car usage.\n\nThe device mode is now called ui mode. Furthermore is the order of\nprecedence for the resources now in such a way that the ui mode needs\nto be specified after the orientation and before the density.\n\nThe ui mode can be set, like it is done for the locale, as follows:\n\nIActivityManager am \u003d ActivityManagerNative.getDefault();\nConfiguration config \u003d am.getConfiguration();\nconfig.uiMode \u003d Configuration.UI_MODE_TYPE_CAR | Configuration.UI_MODE_NIGHT_ANY;\nam.updateConfiguration(config);\n\nTo allow users to disable the car mode and set the night mode the IUiModeManager\ninterface is used.\n\nThe automatic night mode switching will be added in a separate change.\n"
    },
    {
      "commit": "3941411a21b0ccbfb2843dd8c7c7fbe9f8e85abb",
      "tree": "e19dd952cf8c80039bbc8bb5c751d6433ae96222",
      "parents": [
        "777db0c08a1bee45acc2ca3fcc62ef1db6d0e221",
        "1e90ab542d675616e9370ab7e5add99d7af12587"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Feb 11 11:20:40 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 11 11:20:40 2010 -0800"
      },
      "message": "am 1e90ab54: merge from open-source master\n\nMerge commit \u00271e90ab542d675616e9370ab7e5add99d7af12587\u0027\n\n* commit \u00271e90ab542d675616e9370ab7e5add99d7af12587\u0027:\n  Fixs the incorrect message for SecurityException\n  Default RotateDrawable\u0027s pivot set to (50%, 50%)\n"
    },
    {
      "commit": "777db0c08a1bee45acc2ca3fcc62ef1db6d0e221",
      "tree": "bb50d74a72792719b3ae9ecba7ac7bb2b6603539",
      "parents": [
        "6dee18c5cfdd5d63f3a9c299d2b61f819c07e920",
        "d7b92a0ff395fa45d934eaa4242bf2598da88964"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 11 11:16:36 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 11 11:16:36 2010 -0800"
      },
      "message": "Merge \"resolved conflicts for merge of 61bb25f2 to master\""
    },
    {
      "commit": "6dee18c5cfdd5d63f3a9c299d2b61f819c07e920",
      "tree": "d30d5cdc3fd085036d80c858db39e8bfc3653aec",
      "parents": [
        "938606083115275bf9d05bfbd4de771aede00091"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 09 23:59:16 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 11 11:04:49 2010 -0800"
      },
      "message": "New implementation of \u003coriginal-package\u003e tag.\n\nWe now have the new package retain the name of the old package.  This makes\nsure that all existing references to it (shortcuts, widgets, etc) will still\nwork.\n\nThis does mean that your package can run under either the old or new name,\ndepending on whether the user got it with an update.  Buyer beware!\n\nI have tried testing all of the paths of updating, installing another\nupdate in /data, uninstalling the update, updating system with an even\nnewer update, etc.  I think they all work.  No promises though.\n"
    },
    {
      "commit": "c0d71d37233f0aec18433eab3e0d90c48827f1a9",
      "tree": "3fa92e2ab291c759348ea4b0fa4eb69456e6018d",
      "parents": [
        "1ab6d751589c1f16512a64395b67508ac8b8fa94",
        "289e58051dd575cee601c38d6816b9ecd745b505"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu Feb 11 10:47:41 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 11 10:47:41 2010 -0800"
      },
      "message": "Merge \"Truncate SYSTEM_TOMBSTONE events at the end (take the head), but still truncate the other log files at the start (take the tail).\""
    },
    {
      "commit": "289e58051dd575cee601c38d6816b9ecd745b505",
      "tree": "c221129770d0d3015fb581fa6b5cb7dcc043b9ef",
      "parents": [
        "18e939623556928f73fcc7511c85a537929a4a7e"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu Feb 11 10:40:49 2010 -0800"
      },
      "committer": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu Feb 11 10:40:49 2010 -0800"
      },
      "message": "Truncate SYSTEM_TOMBSTONE events at the end (take the head),\nbut still truncate the other log files at the start (take the tail).\n"
    },
    {
      "commit": "d7b92a0ff395fa45d934eaa4242bf2598da88964",
      "tree": "46a4899a3799321bf8472c4818b54e089ced1560",
      "parents": [
        "4e208bd8722ad48c342c0128313ef40971234121",
        "61bb25f2f92af10b685d6bd1452bc5505995c64e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 11 10:36:10 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 11 10:38:28 2010 -0800"
      },
      "message": "resolved conflicts for merge of 61bb25f2 to master\n"
    },
    {
      "commit": "1ab6d751589c1f16512a64395b67508ac8b8fa94",
      "tree": "b12a77e9b556a469cdf2d85dbefe21af70e7f84f",
      "parents": [
        "18e939623556928f73fcc7511c85a537929a4a7e",
        "a181b21305e0bcf171e2112a3ca5c08eb4fd2434"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Feb 11 10:25:59 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 11 10:25:59 2010 -0800"
      },
      "message": "Merge \"MountService: Fix some mountset bugs and tighten up some return values\""
    },
    {
      "commit": "18e939623556928f73fcc7511c85a537929a4a7e",
      "tree": "e1e85e2634f45742a4f358ad640f5a0ed76066c0",
      "parents": [
        "4e208bd8722ad48c342c0128313ef40971234121"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Wed Feb 10 19:27:58 2010 -0800"
      },
      "committer": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu Feb 11 10:22:09 2010 -0800"
      },
      "message": "Eliminate dependencies on Checkin, replacing checkin events with EventLog\nevents (and in one case, a DropBox entry).\n\nAdd a simple intent that triggers master-clear (and toggle EFS), given the\nright permissions.\n\nBug: 2264596\nBug: 2350452\nBug: 2264596\n"
    },
    {
      "commit": "1e90ab542d675616e9370ab7e5add99d7af12587",
      "tree": "ba207d9049c64f2acd4dcf02ba177be38a05a3bb",
      "parents": [
        "61bb25f2f92af10b685d6bd1452bc5505995c64e",
        "27f3de6bac93140452ce131cbbd8c6df33e25a94"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Feb 11 10:03:02 2010 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Feb 11 10:03:02 2010 -0800"
      },
      "message": "merge from open-source master\n"
    },
    {
      "commit": "61bb25f2f92af10b685d6bd1452bc5505995c64e",
      "tree": "e67faae764a32c17d4e4f98050767128755dffd7",
      "parents": [
        "87bdfd6d22ee964339791bb65686a718d207793b",
        "c1eba82ba479006045c1d7a4c8ceba116a9602d1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 11 09:34:59 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 11 09:34:59 2010 -0800"
      },
      "message": "am c1eba82b: Merge \"Fix issue: 2413494: Add TTY support.\" into eclair\n\nMerge commit \u0027c1eba82ba479006045c1d7a4c8ceba116a9602d1\u0027 into eclair-plus-aosp\n\n* commit \u0027c1eba82ba479006045c1d7a4c8ceba116a9602d1\u0027:\n  Fix issue: 2413494: Add TTY support.\n"
    },
    {
      "commit": "a181b21305e0bcf171e2112a3ca5c08eb4fd2434",
      "tree": "2d710c52e471992a454f7115042f3a8ff79be06d",
      "parents": [
        "2980d10c1a77172556acf7875a2781ffc9881c15"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Feb 11 06:50:20 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Feb 11 06:50:31 2010 -0800"
      },
      "message": "MountService: Fix some mountset bugs and tighten up some return values\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "b2983510230f49616b81be363707928e526d30a4",
      "tree": "a4583d3b6692215b78efb605d029f107d064e7bd",
      "parents": [
        "49ffc0ff72a29f000b56deb34b0706cbfc5624bf",
        "5f85780db058d3babb435466b33834c3cc70f5c1"
      ],
      "author": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Thu Feb 11 02:00:24 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 11 02:00:24 2010 -0800"
      },
      "message": "Merge \"Fix NPE in AppWidgetService.addProvidersForPackageLocked()\""
    },
    {
      "commit": "102d05fa9135bef5c6b875f9a6485566b06ebd18",
      "tree": "990ee430142bdc479b532ee524027300aca8a39d",
      "parents": [
        "aa82768b8c6b6e81bb048d2d72b6586eb66b5b5d"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Fri Feb 05 14:47:27 2010 -0800"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Wed Feb 10 15:22:58 2010 -0800"
      },
      "message": "get DHCP IP on each connection\n\nThe IP state was not being refreshed when the supplicant transitions\nfrom COMPLETED to ASSOCIATED to COMPLETED. This can lead to\na connected state with no real connection due to old IP settings.\nThe fix refreshes IP on each connection.\n\nBug: 2329261\nChange-Id: I38cd56369ee2d8ab3e0f06f5c9f5712b9b2f35a0\n"
    },
    {
      "commit": "5f85780db058d3babb435466b33834c3cc70f5c1",
      "tree": "5e3aaeb217085b8eeec5a0b9299ffd784c158a9a",
      "parents": [
        "e4e82f2782e61658256ecb85066e273c22a37951"
      ],
      "author": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Wed Feb 10 23:09:48 2010 +0000"
      },
      "committer": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Wed Feb 10 23:09:48 2010 +0000"
      },
      "message": "Fix NPE in AppWidgetService.addProvidersForPackageLocked()\n\nqueryBroadcastReceivers() can return null, so AppWidgetService\nshould guard against that.\n\nFixes http://b/issue?id\u003d2418982\n\nChange-Id: I1ba83c0c37622e0280f3dba2fef5eca2cc90c975\n"
    },
    {
      "commit": "23085b781e145ed684e7270af1d5ced6800b8eff",
      "tree": "43629e3d545d343314af074dc66e63f628d780ff",
      "parents": [
        "60586f2ec65d16d185767fce4311d3ed0e9112ac"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@android.com",
        "time": "Mon Feb 08 16:06:32 2010 -0800"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@android.com",
        "time": "Wed Feb 10 14:51:31 2010 -0800"
      },
      "message": "Support per-application switch to execute the VM in safe mode.\n\nThe new attribute can be set by adding android:safeMode\u003d\"true\"\nin AndroidManifest.xml with the SDK.\n\nTested with pairing locally compiled SDK with Eclipse and verified that the JIT\n(the only component currently included in the safe mode) is indeed disabled\nwith the new attribute.\n\nBug: 2267583\n"
    },
    {
      "commit": "a7d7f79c4058bdf1508458341bd1c1cd4ff785b9",
      "tree": "db0dfca7ddff76c74e1954530d569fdbec10f854",
      "parents": [
        "2fe23de8e3af6ef9e54c57e981c7d9d0e62e5299"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Tue Feb 09 13:16:02 2010 -0800"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Wed Feb 10 12:16:29 2010 -0800"
      },
      "message": "Adding null check.\n"
    },
    {
      "commit": "7749adfd0184b876ff6f8d1961959ca95ab82244",
      "tree": "16783dbb54fc6bf4fcd0dd7383251ea3606cb175",
      "parents": [
        "859f455645bc49e32330108b1ea9f85ffb80a2cd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 10 11:22:11 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 10 11:23:04 2010 -0800"
      },
      "message": "Fix issue: 2413494: Add TTY support.\n\nThis is a new implementation of TTY support.\nPrevious implementation in commit aead64def1fe58c95c086a0ca00cf0b13fa32ef1 is reverted.\nThe new method does not rely any more on the kernel headset driver to send a UEvent containing\ncurrent TTY mode.\n"
    },
    {
      "commit": "d0efb6bc159b86dfad540aa9dc3e20e1bb56d930",
      "tree": "b699271ba9346af5235100f6a7e6c66e20e61456",
      "parents": [
        "4c48cb72ffc975c2a94473efb529d559aacaff17",
        "4154c07c5cabc74029a2df379075391d782a682c"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Feb 10 11:21:50 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 10 11:21:50 2010 -0800"
      },
      "message": "Merge \"StorageNotification: Move notification / usb storage activity into StatusBarPolicy\""
    },
    {
      "commit": "27f3de6bac93140452ce131cbbd8c6df33e25a94",
      "tree": "c45b812a46c1a674c8b47763fd9e3327ceac3102",
      "parents": [
        "b81b1447d2cfa9dc5bcc02c8a1b7193400a97ab6"
      ],
      "author": {
        "name": "Chander S Pechetty",
        "email": "chanderspechetty@unisaran.com",
        "time": "Wed Feb 10 22:14:00 2010 +0530"
      },
      "committer": {
        "name": "Chander S Pechetty",
        "email": "chanderspechetty@unisaran.com",
        "time": "Wed Feb 10 22:14:00 2010 +0530"
      },
      "message": "Fixs the incorrect message for SecurityException\n\nwhen injecting a Key, Pointer and Trackball events into the UI across\napplications, the corresponding methods throw SecurityException with\nincorrect permission message.\nINJECT EVENT permission should be INJECT_EVENTS\n"
    },
    {
      "commit": "d03ff94fe58045b5bd1dd783fb98026778a4265d",
      "tree": "c35d201ab498f23f075f1c48ce4ce3ce55e9f2e4",
      "parents": [
        "ca35953c9064114cb09181e8bffddb2f7c2d8d53"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Feb 09 08:46:14 2010 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Feb 10 09:41:25 2010 -0500"
      },
      "message": "Clean up interface between LocationManagerService and the location providers:\n\nLocationManagerService now uses new Java interface LocationProviderInterface\nrather than LocationProviderProxy to refer to location providers internally.\n\nLocationProviderProxy and the ILocationProvider binder interface are only\nused for location providers implemented as services (NetworkLocationProvider)\n\nBuilt-in location providers (GpsLocationProvider and mock providers) now just\nimplement LocationProviderInterface rather than using a Binder interface and proxy object.\n\nDelete obsolete and unused TestLocationProvider class.\n\nChange-Id: Id800e7c1864f7c666f8e37125c05896493b9c8c4\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "4154c07c5cabc74029a2df379075391d782a682c",
      "tree": "3d4f10d3e4c065c5c7ec2c3faad072bbf7d1c8b8",
      "parents": [
        "739e1f8cdaee7ad448086f61412d118cb18152c5"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 09 18:37:54 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 09 19:33:58 2010 -0800"
      },
      "message": "StorageNotification: Move notification / usb storage activity into StatusBarPolicy\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "739e1f8cdaee7ad448086f61412d118cb18152c5",
      "tree": "0fa259858bc835d739550151e8f77ced37598563",
      "parents": [
        "46d350233328b703455ae10bf3ef724fa6733662",
        "6cdd9c08565a6871ad72cd388adfdfca23532e5e"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 09 19:30:34 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 09 19:30:34 2010 -0800"
      },
      "message": "Merge \"MountService: Add isSecureContainerMounted() API call\""
    },
    {
      "commit": "6cdd9c08565a6871ad72cd388adfdfca23532e5e",
      "tree": "e8f726d6bf7d7271e1042a00cc0e2746a7c2160b",
      "parents": [
        "a63730d1f103f78589faef461d2af7351fc49f42"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 09 14:45:20 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 09 18:46:05 2010 -0800"
      },
      "message": "MountService: Add isSecureContainerMounted() API call\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "add1376cde9cd027df473f84df75edc993001ebe",
      "tree": "80f3ef3e2d79e3a685fe04169a3fb644e5d69035",
      "parents": [
        "b687581d4cf67fe8f25bac4333b513bcba2f3cb2"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Feb 03 17:34:58 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Feb 09 18:18:55 2010 -0800"
      },
      "message": "Generate /data/system/packages.list in the PackageManager\n\nThis file contains uid + debugFlag + dataPath information for\neach non-system installed package. It is meant to be used later\nfrom native code and thus needs to be considerably simpler to\nparser than packages.xml.\n\nThe file should only be readable by non-system userIds, and its\nformat is essentially line-based with each line like:\n\n  \u003cpkgName\u003e \u003cuid\u003e \u003cdebugFlag\u003e \u003cdataDir\u003e\n\nWith:\n\n  \u003cpkgName\u003e    as the package name\n  \u003cuid\u003e        as the application-specific user id\n  \u003cdebugFlag\u003e  either 0 or 1. 1 if the package is debuggable\n  \u003cdataDir\u003e    path to the package\u0027s data directory\n\nWe need the debug flag to allow \u0027run-as\u0027 to only allow\ncommands to be executed on debuggable packages, even on\nproduction devices.\n"
    },
    {
      "commit": "46d4525abc4a07a7ac04880acd7a727e1348c997",
      "tree": "5d46846ee003d0e650f9addf8f4909cbde6b3240",
      "parents": [
        "ba637f87367878b1cebaf1b23a62f077e9c8006f"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Feb 09 15:48:57 2010 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Feb 09 15:55:03 2010 -0800"
      },
      "message": "Print the snapshot focus rather than the Window Manager\u0027s actual current focus\nwhen dumping key-timeout information around an ANR.\n\nChange-Id: Ia70a71029663fa134078ea9ab40f0a6a7f3945ea\n"
    },
    {
      "commit": "e83cefcef07f9ac025642c1ffec76b4c7ab39cf2",
      "tree": "130696ee2a90150129c3ee98544c5814528c90f9",
      "parents": [
        "72e5a8820a996c547eacea534b11b6b8f6eca83b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 04 17:38:14 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 09 14:20:55 2010 -0800"
      },
      "message": "New external storage APIs.\n\nThis implements the spec for external storage organization, and\nproperly reflects how the media scanner organizes the files it finds.\n\nAlso includes package manager support for removing app private\nfiles from external storage when the application is uninstalled.\n\nFor the new APIs and paths, the main place to look is Environment\nand Context.\n"
    },
    {
      "commit": "53d0c7f4a032dcb2479294dddae31bb3230e10c8",
      "tree": "2c803a35902c5de0d0651e13a237e793cb006ff8",
      "parents": [
        "44d993798f8241b78229718bbc358046f590de7e",
        "8200b20fe6e68e68264efe133f21ac8df079a563"
      ],
      "author": {
        "name": "Ken Shirriff",
        "email": "kens@google.com",
        "time": "Tue Feb 09 14:05:48 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 09 14:05:48 2010 -0800"
      },
      "message": "Merge \"Change key dispatch timeout logging.\""
    },
    {
      "commit": "59443a673a736978361dc341f41ce4e9dae053a0",
      "tree": "2035b24014a356ad0f39cce16a63d977d2e903d1",
      "parents": [
        "cb72cda8ca3669dfcbe71d1ac6c5e6c264ff5faa"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 09 13:28:45 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 09 13:28:45 2010 -0800"
      },
      "message": "MountService: Check for failure to unmount when enabling UMS and fix reversed logic\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "b104340496e3a531e26c8f428c808eca0e039f50",
      "tree": "11247cb68359d43ca4871c0cb0165c9bec339a6f",
      "parents": [
        "3ee1317173260252d475772fec09d492f8fcfd33"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Feb 05 08:26:50 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 09 11:03:16 2010 -0800"
      },
      "message": "Framework: Clean up / Refactor Mount APIs\n\n - Move android.storage.* -\u003e android.os.storage.* and refactor users\n - Refactor generic shares back to explicit ums enable/disable/isEnabled\n - Remove media insert/removed event callbacks (not ready for Froyo)\n - Remove \u0027label\u0027 from volume state change callbacks\n - Add public API functions for enabling/disabling USB mass storage (permissions enforced\n   in MountSevice)\n - Remove some stray un-needed import lines\n - Move android.os.IMountService / android.os.IMountServiceListener -\u003e android.os.storage\n - Improve code comments\n\nUpdated:\n  MountService: Add dup state check and move debugging behind a conditional\n  UsbStorageActivity: Fix review comments + a TODO\n  StorageNotification: Add @Override tags\n  StorageManager: Don\u0027t use a static Listener list\n  MountService: Reduce bloat and fix \u003d\u003d where I meant .equals()\n  PackageManagerTests: Update for new API\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "3ee1317173260252d475772fec09d492f8fcfd33",
      "tree": "6534b6ffce66ddfa834f9860c279bf30364b4275",
      "parents": [
        "64e6a45ed45e0d096a1490408ee1cab2a4626950"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Feb 04 20:54:43 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 09 11:03:15 2010 -0800"
      },
      "message": "NotificationManagerService: Add a listener for storage events\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "76591176479bf0e57e43af826cb4fde6cd67d539",
      "tree": "b39accf7dc693eae96087c08ed94892791a5eefb",
      "parents": [
        "6bdcc06115c290b0941fa6a19d5b1483d5db9c0a",
        "207e538350665cea00e1aa70b8094beca4a34e45"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 09 11:02:44 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 09 11:02:44 2010 -0800"
      },
      "message": "Merge \"MountService: Harden for pre-boot usage users\""
    },
    {
      "commit": "6bdcc06115c290b0941fa6a19d5b1483d5db9c0a",
      "tree": "dfb0cf292b6045c27d43e19f600188f6560d4c61",
      "parents": [
        "52976f3d6a94390dbf7dcc2f534917803d31bbde",
        "f919cd02dfd40ad1939e429c3f5e7e36538d839e"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 09 11:02:32 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 09 11:02:32 2010 -0800"
      },
      "message": "Merge \"MountService: Add WARN checks to ASEC calls to catch bad users\""
    },
    {
      "commit": "18457fd41e7b39534e54200c1f2392da3140ec9f",
      "tree": "90ba56994a5f470c2bc1e367778a9625a92427d0",
      "parents": [
        "c8da710f001f149557121b535da0b71d6da87484",
        "1ff4371ef2e27ff51cedd24d093b12043cb72e56"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 09 08:59:13 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 09 08:59:13 2010 -0800"
      },
      "message": "Merge \"NativeDaemonConnector: Improve error reporting and debug formatting\""
    },
    {
      "commit": "c8da710f001f149557121b535da0b71d6da87484",
      "tree": "55e7624b55fbaf782fd8afbe1fdd7c41ad5c9318",
      "parents": [
        "ace5a3fbfbf1b41905410925f1ea007040a7a675",
        "1bf3f8be7c01aa77afc114e0728cb041e95640b1"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 09 08:58:23 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 09 08:58:23 2010 -0800"
      },
      "message": "Merge changes I1aabef01,I8dbd0f83\n\n* changes:\n  SystemServer: Move MountService startup before NotificationManagerService\n  StorageManager: Check for a null MountService\n"
    },
    {
      "commit": "7040ce78666d3307521c6dc6d55c71ea90534a7e",
      "tree": "51691643bd3d2b8c2b920d06a9cad1ffb0a2f3bf",
      "parents": [
        "a90cee8250f228518e7e458c1a4785d1fab5f37f",
        "37a00a36fb69645695b1a165e2fd90cc3eb3e071"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Mon Feb 08 23:55:56 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Mon Feb 08 23:55:56 2010 -0800"
      },
      "message": "resolved conflicts for merge of 37a00a36 to master\n"
    },
    {
      "commit": "628fd6d9c11ed9806abebf34bc986247c106328f",
      "tree": "402876b69159436587770bc8754f6a66d02326ed",
      "parents": [
        "53bd2522ca7767f46646606123b6e2689b811850"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Jan 25 22:46:13 2010 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Feb 08 23:20:27 2010 -0500"
      },
      "message": "Network Location unbundling:\n\nThe network location and geocode provider services are now started on demand\nand their interfaces are now retrieved via bindService().\n\nRemove obsolete LocationManager installLocationProvider() and installGeocodeProvider() methods.\n\nAdd abstract class android.location.provider.GeocodeProvider to provide a public wrapper to\nthe IGeocodeProvider Binder interface. Replaces the LocationManager.GeocodeProvider interface.\n\nRename LocationProviderImpl to android.location.provider.LocationProvider.\n\nMove LocationManager.reportLocation() to android.location.provider.LocationProvider,\nso all methods related to external location providers are now all in one class.\n\nAvoid calling from the Location Manager Service into providers that are disabled so we\ndo not start the network location service unnecessarily.\n\nChange-Id: If3ed2d5d62b83ba508006711d575cad09f4a0007\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "207e538350665cea00e1aa70b8094beca4a34e45",
      "tree": "4e46f2a94d6233ae26185822e9c1498a4c900fe6",
      "parents": [
        "f919cd02dfd40ad1939e429c3f5e7e36538d839e"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Feb 04 20:46:54 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Mon Feb 08 19:29:58 2010 -0800"
      },
      "message": "MountService: Harden for pre-boot usage users\n\n- Connection to native daemon now happens on creation instead of ON_BOOT\n- Don\u0027t emit share change broadcasts before system is booted\n- Protect against public API usage before we\u0027re ready\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "f919cd02dfd40ad1939e429c3f5e7e36538d839e",
      "tree": "5d011ffeca00b201828e8efcfd205b14217c1f83",
      "parents": [
        "1ff4371ef2e27ff51cedd24d093b12043cb72e56"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Feb 04 15:10:38 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Mon Feb 08 19:29:58 2010 -0800"
      },
      "message": "MountService: Add WARN checks to ASEC calls to catch bad users\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "1ff4371ef2e27ff51cedd24d093b12043cb72e56",
      "tree": "f29f8501194e5b138db5f129b6844573233c0f0a",
      "parents": [
        "1bf3f8be7c01aa77afc114e0728cb041e95640b1"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Feb 04 15:09:02 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Mon Feb 08 19:29:58 2010 -0800"
      },
      "message": "NativeDaemonConnector: Improve error reporting and debug formatting\n\nUpdated:\n  NativeDaemonConnector: Put debugging behind a conditional\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "1bf3f8be7c01aa77afc114e0728cb041e95640b1",
      "tree": "7ab5a3f08ad416cab636063c89a2e30279eee9cb",
      "parents": [
        "17da5a691c72fb3dbab37ce1ae1ed3a376e90c32"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Feb 03 14:43:09 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Mon Feb 08 19:29:58 2010 -0800"
      },
      "message": "SystemServer: Move MountService startup before NotificationManagerService\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "37a00a36fb69645695b1a165e2fd90cc3eb3e071",
      "tree": "ea929685e84c6585988d69d5cc9f75b943e21196",
      "parents": [
        "ad9bcb22d05fbf130ac64254abd51a137e9a3d3f",
        "08be55b8ea917a5273c135a7bdc73e41c8524c05"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Mon Feb 08 17:27:33 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 08 17:27:33 2010 -0800"
      },
      "message": "am 08be55b8: Add null checks when scanning a package. Delete packages whose code and resource paths haven\\\u0027t been set correctly.\n\nMerge commit \u002708be55b8ea917a5273c135a7bdc73e41c8524c05\u0027 into eclair-plus-aosp\n\n* commit \u002708be55b8ea917a5273c135a7bdc73e41c8524c05\u0027:\n  Add null checks when scanning a package.\n"
    },
    {
      "commit": "08be55b8ea917a5273c135a7bdc73e41c8524c05",
      "tree": "1b985d28eab375f5f2d0b8c930c9feb622507625",
      "parents": [
        "31bfdf695ef741f64066ef605bd6a7e23df88714"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Mon Feb 08 16:30:06 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Mon Feb 08 17:10:24 2010 -0800"
      },
      "message": "Add null checks when scanning a package.\nDelete packages whose code and resource paths haven\u0027t been set\ncorrectly.\n"
    },
    {
      "commit": "b49ceb3b8b17656984fd969d548dc912e7d2c7c1",
      "tree": "1c9a8925a19da9a35ab99e05671a65a1e42b6db3",
      "parents": [
        "ec5df83c5b44ad2f2b28a1a4420c4c4056dd6103"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Feb 08 16:22:24 2010 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Feb 08 16:29:22 2010 -0800"
      },
      "message": "Remember which apps have available restore info in the ancestral dataset\n\nWhen we perform a full-system restore, remember the set of applications which\nhave data available in our ancestral dataset.  This is a key filter for not\nhaving to do a round trip to the [remote] storage backend at app-install time\nunless it is likely to be fruitful.\n\nChange-Id: I7c77b490c560c581888d84f02f258b2e2d73bc69\n"
    },
    {
      "commit": "b56ae20b22fd7283df32072a431ab6d4965f3c1b",
      "tree": "c26e5e7bf6433dfbe500917fc7001f77c331c4f2",
      "parents": [
        "836a1f2cb99600c26a1a928a9e3240b9dec3079b"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Thu Feb 04 22:51:07 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Mon Feb 08 14:52:25 2010 -0800"
      },
      "message": "Rename media resource broadcasts\nAdd checks for fwdlocked and updated system apps\nadd more tests\nremove duplicate adds\n"
    },
    {
      "commit": "8200b20fe6e68e68264efe133f21ac8df079a563",
      "tree": "39552854e8ef8fac4d773c844d4b5ee2f837403a",
      "parents": [
        "5a84386ae3a5935a91c628a3e1084a71aa95850a"
      ],
      "author": {
        "name": "Ken Shirriff",
        "email": "kens@google.com",
        "time": "Thu Feb 04 13:34:37 2010 -0800"
      },
      "committer": {
        "name": "Ken Shirriff",
        "email": "kens@google.com",
        "time": "Mon Feb 08 11:09:17 2010 -0800"
      },
      "message": "Change key dispatch timeout logging.\n\nThe mToken logging seems redundant and confusing.\nClarify what sending to \u003cnull\u003e means.\nClarify what dispatch state and current state mean.\n"
    },
    {
      "commit": "cb14ec1305fac1b52e00414237d56fc8117a34ad",
      "tree": "a79716632d592876d4250f7b48709a4569e9f910",
      "parents": [
        "1688d312e5ce05e17aceffa00d1e996c89e6b5b0",
        "c61da3136b1ffce9152f54ff19cab2782cb8450b"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@android.com",
        "time": "Fri Feb 05 12:38:51 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 05 12:38:51 2010 -0800"
      },
      "message": "Merge \"Don\u0027t hold the backup queue lock across a backup operation\""
    },
    {
      "commit": "1688d312e5ce05e17aceffa00d1e996c89e6b5b0",
      "tree": "308f103ae37a31969feaacd7e8fc79be784c3b6d",
      "parents": [
        "97e44947282b3918ee0bed2d16b33b983f882580",
        "b28654167466277fa262606810115164d9d24d67"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Feb 05 12:38:02 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 05 12:38:02 2010 -0800"
      },
      "message": "Merge \"Keep automatic screen brightness monotonically increasing until screen is turned off.\""
    },
    {
      "commit": "97e44947282b3918ee0bed2d16b33b983f882580",
      "tree": "ae30514672b93407b1c9438aa46555363f9f5fc6",
      "parents": [
        "9446c5046872e8ae44120d4057ae724875aba1a4"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu Feb 04 20:27:47 2010 -0800"
      },
      "committer": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Fri Feb 05 12:31:41 2010 -0800"
      },
      "message": "Add an AlarmManager API to set the system time (with the proper permissions).\n"
    },
    {
      "commit": "b28654167466277fa262606810115164d9d24d67",
      "tree": "251751b84bac323df2a4a7734a2ce7a954674b75",
      "parents": [
        "1009e82ef2985a55f0afcbfa7f31bddb73039982"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Feb 02 22:40:33 2010 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Feb 05 14:33:14 2010 -0500"
      },
      "message": "Keep automatic screen brightness monotonically increasing until screen is turned off.\n\nThis is an experimental change to avoid the light sensor screen fluctuation problem.\nWe only do this when undocked to since the lighting should be stable in the docked case\nand since the dock keeps the screen on we need to be able to adjust the lighting.\n\nChange-Id: I70afcc393f51f2679be8228d6cb993ddc07e5986\nBUG: 2387223\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "c61da3136b1ffce9152f54ff19cab2782cb8450b",
      "tree": "c7eb49ebb63b3e028600668c486b42f32c88ba77",
      "parents": [
        "8fca8ab6849d83861b86c6a3af189adf86c51d07"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Feb 05 10:41:27 2010 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Feb 05 10:41:27 2010 -0800"
      },
      "message": "Don\u0027t hold the backup queue lock across a backup operation\n\nThis got lost in the shuffle when the backup process was retooled to run\nsynchronously within a single spun-off HandlerThread.  Formerly it was okay\nto hold the lock around the point in time when the backup service thread was\nbeing spun off, but once that became synchronous it wound up locking out\napps\u0027 calls to dataChanged(), which in turn led to ANRs.\n\nBug: 2421333\nChange-Id: Icf378e5733af5f28a689c564494486cd3555eca7\n"
    },
    {
      "commit": "5c1779b8acbf570f66ed401e5a0daad56533305d",
      "tree": "be429117b89979822b6ec8c74ad8272cc87eaa40",
      "parents": [
        "64226a49b75b44da56740a21b38ce6cc710796d8",
        "8472581aa32eee1368de379c2c079ea0a66baa3c"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@android.com",
        "time": "Thu Feb 04 16:27:42 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 04 16:27:42 2010 -0800"
      },
      "message": "Merge \"Add single-package restore from an app\u0027s most-recent data\""
    },
    {
      "commit": "8472581aa32eee1368de379c2c079ea0a66baa3c",
      "tree": "c7e71e08b7e465fa710c7e0903b8a2a74cce6fc4",
      "parents": [
        "348f7b904851e3edcf09b8362406ff2f4ae57db2"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Feb 04 15:52:40 2010 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Feb 04 16:01:09 2010 -0800"
      },
      "message": "Add single-package restore from an app\u0027s most-recent data\n\nRenamed the RestoreSession performRestore() method to restoreAll(), and\nadded a new restorePackage() method that only restores the single\nspecified app.  In order to restore an app other than itself, the\ncaller must hold the android.permission.BACKUP permission.\n\nThis change also introduces dataset tracking:  the Backup Manager\npersistently remembers both the current backup dataset\u0027s identity\nand that of the \"ancestral\" dataset, i.e. the one most recently used\nfor a whole-device restore such as performed by SetupWizard.  When a\nsingle package is restored via restorePackage(), the selection of\nmost-recent dataset to use is this:\n\n1. The data from the currently-active backup dataset, if such exists.\n   An app that has ever backed up data will therefore get its last-\n   known-good data.\n\n2. The app\u0027s data from the ancestral dataset, if such exists.  This\n   covers the case of a factory reset followed by reinstallation of\n   an app at a later time.  The app had not yet backed anything up\n   post-wipe, but the old data is in the ancestral dataset and should\n   be brought forward when the app reappears.\n\n3. If neither 1. nor 2. exist, there is no data to restore, so just\n   skip it and return failure.\n\nNote that the infrastructure to automatically attempt a restore after\nan application has been installed does not yet exist; that\u0027s coming.\n\nChange-Id: I0ba170df9885128000c46ed28d3dddda3a63a143\n"
    },
    {
      "commit": "64226a49b75b44da56740a21b38ce6cc710796d8",
      "tree": "cbfc7f880fa7b8b98daadbbc0ea2be2095324ebb",
      "parents": [
        "214ea34bcab790f19c4302ab2629b3b9de58e2c1",
        "91e1d0cddaaec5e077ca689744463901f9d5d580"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Thu Feb 04 15:58:18 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 04 15:58:18 2010 -0800"
      },
      "message": "Merge \"Add support in StatusBarManager for disabling ticker text.\""
    },
    {
      "commit": "91e1d0cddaaec5e077ca689744463901f9d5d580",
      "tree": "f759d1bd29d9cb616911015817dcc50b543d0ceb",
      "parents": [
        "1ec608d13abe5b744df97a6394a6324c5540c79d"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@google.com",
        "time": "Thu Feb 04 15:41:20 2010 -0800"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@google.com",
        "time": "Thu Feb 04 15:55:00 2010 -0800"
      },
      "message": "Add support in StatusBarManager for disabling ticker text.\n\nThe new flag, DISABLE_NOTIFICATION_TICKER, will be used by\nthe car dock app (in conjunction with DISABLE_EXPAND) to\nminimize distractions to the driver.\n\nIt may also be used by the secure lockscreen to avoid\nleaking personal information when the screen is on but the\ndevice is locked (e.g. when the desk dock app is running).\n\nChange-Id: Ibc8efde7da7501767163ae0a75f7c369b824e2a2\n"
    },
    {
      "commit": "5c19aeca3d41c6a5820dc05a51c38736d3583378",
      "tree": "842d01879f26ea60425ab99a98c1144b761db712",
      "parents": [
        "46c53129c6f27c9193ab195a69cb50591b8c1fa2"
      ],
      "author": {
        "name": "Ken Shirriff",
        "email": "kens@google.com",
        "time": "Thu Feb 04 13:33:45 2010 -0800"
      },
      "committer": {
        "name": "Ken Shirriff",
        "email": "kens@google.com",
        "time": "Thu Feb 04 14:37:21 2010 -0800"
      },
      "message": "API review: TrafficStats: rename Pkts to Packets\n\nRename getMobileTxPackets(), getMobileRxPackets(), getTotalTxPackets(),\ngetMobileRxPackets()\n\nbug 2420318\n"
    },
    {
      "commit": "8f3ff09556b2d0c45eebdf97bd980f3b9f0c7d8f",
      "tree": "569f5c1fc582aa41207d05a5030b7bde8f553377",
      "parents": [
        "7b4030dbe7c814c78a761d221d18eaaacfe1431e",
        "2cce6267a0cdcdd3f3f369599e99f9a83bbe4be2"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 04 14:26:40 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 04 14:26:40 2010 -0800"
      },
      "message": "Merge \"resolved conflicts for merge of dd24f599 to master\""
    },
    {
      "commit": "2cce6267a0cdcdd3f3f369599e99f9a83bbe4be2",
      "tree": "0a7f0b3570ca619ff916727ac7107bb73b1e9f66",
      "parents": [
        "76bc4a6bb355d402b82bfa146ff29b8b81099076",
        "dd24f599066d693722d53924b16f1cdb53aa7f8b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 04 14:23:39 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 04 14:23:39 2010 -0800"
      },
      "message": "resolved conflicts for merge of dd24f599 to master\n\nChange-Id: I57c349c493d69585d4c85e8c0970649708c6bd33\n"
    },
    {
      "commit": "2a9094d07915a077026a651a7773f94322bf7d23",
      "tree": "71cc1bfa20c87704c6fca5ff32e384f1832a131c",
      "parents": [
        "76bc4a6bb355d402b82bfa146ff29b8b81099076"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Feb 03 19:20:09 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 04 11:54:34 2010 -0800"
      },
      "message": "Framework part of issue #2391576: Add method to start the Jit and call it\n"
    },
    {
      "commit": "dd24f599066d693722d53924b16f1cdb53aa7f8b",
      "tree": "22bf8a53d79fc3c7909e1006f4189c52084a8a63",
      "parents": [
        "b5c01b96a8e1780d8ac0638041b08e06b8c88a83",
        "aead64def1fe58c95c086a0ca00cf0b13fa32ef1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 04 09:34:34 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 04 09:34:34 2010 -0800"
      },
      "message": "am aead64de: Fix issue: 2413494: [Passion-c] Add TTY support.\n\nMerge commit \u0027aead64def1fe58c95c086a0ca00cf0b13fa32ef1\u0027 into eclair-plus-aosp\n\n* commit \u0027aead64def1fe58c95c086a0ca00cf0b13fa32ef1\u0027:\n  Fix issue: 2413494: [Passion-c] Add TTY support.\n"
    },
    {
      "commit": "d0e18ffb82b59d38aeaf0e552f48e734202719ab",
      "tree": "5ad66758cf2629e3590201b37252be56518f2bc6",
      "parents": [
        "3141e0a62abe57e93e5d716895a2a57cc052bb50"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Tue Jan 26 11:40:34 2010 -0800"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Thu Feb 04 09:15:06 2010 -0800"
      },
      "message": "First pass at USB Tethering.\n\nbug:2281900\n"
    },
    {
      "commit": "aead64def1fe58c95c086a0ca00cf0b13fa32ef1",
      "tree": "918402ad7ecad49dfcba8aae87746b9c55c02cb9",
      "parents": [
        "8a6c060719c8870f370b82faa48ae2f437915214"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 02 09:42:33 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 03 23:35:34 2010 -0800"
      },
      "message": "Fix issue: 2413494: [Passion-c] Add TTY support.\n\nHandle TTY mode change events received by HeadsetObserver and send information down to AudioHardware with AudioManager.setParameters()\n\nUse setting \"tty_mode_uses_heaset_events\" in core config.xml to indicate if the product uses this particular\nmethod of indicating the TTY mode change.\n"
    },
    {
      "commit": "f1dd37ac283d09ba5d21349bf99fdc6ba3d7fc4b",
      "tree": "402371b00e3b954057efbbc86500237029e264f7",
      "parents": [
        "fa6bc84e01c061ded1b9ab11a82cbbaac2843f73",
        "68065e0a1980ab6abf8963b48b011efa017fe1c2"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Feb 03 20:25:43 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 03 20:25:43 2010 -0800"
      },
      "message": "Merge \"Fix 1667521 - system process crash after bad notification\""
    },
    {
      "commit": "68065e0a1980ab6abf8963b48b011efa017fe1c2",
      "tree": "3d6d4184f359e3bfea6783a97d0de7c2d99d7ab5",
      "parents": [
        "378a1488bb76d4786025a10e36c2d638cbd2cb6a"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Wed Feb 03 20:21:41 2010 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Wed Feb 03 20:21:41 2010 -0800"
      },
      "message": "Fix 1667521 - system process crash after bad notification\n\nThe steps to reproduce this were kind of interesting.  You needed to have\na notification with a bogus RemoteViews in the first position in the list,\nand then have another notification come in with an earlier timestampe.  In\nthat case, it would get a bad index for the new (not bogus) view that was\nbeing added.\n"
    },
    {
      "commit": "fa6bc84e01c061ded1b9ab11a82cbbaac2843f73",
      "tree": "6f620d25e30c95e115d0811149ad3d1885965bde",
      "parents": [
        "b039fd4c4a15153571095f828d5485cc363924b7",
        "b858dfda5012a1040927ed62c3bb856c3294d882"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Feb 03 18:18:56 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 03 18:18:56 2010 -0800"
      },
      "message": "Merge \"Implement system data migration support.\""
    },
    {
      "commit": "b858dfda5012a1040927ed62c3bb856c3294d882",
      "tree": "d865e8580e15ecda54e4fd4e891c489eb222a8b1",
      "parents": [
        "70d10c0156f5d2d1c639d0ebe62de8ec950d4306"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 02 10:49:14 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Feb 03 15:42:02 2010 -0800"
      },
      "message": "Implement system data migration support.\n\nThis adds three new features:\n\n- \u003coriginal-package android:name\u003d\"com.foo\" /\u003e manifest tag.\n  This allows an .apk to specify another package it originally came from,\n  propagating all state and data from the old to new package.\n\n- \u003cadopt-permissions android:name\u003d\"com.foo\" /\u003e manifest tag.\n  In some more complicated cases, a new .apk may be a combination\n  of multiple older .apks that each declared their own permissions.\n  This allows you to propagate the permissions from these other\n  .apks into the new one.\n\n- A new system/etc/updatecmds directory.\n  You can place files here which describe data files to move from\n  one package to another.  (See below for details.)\n\nAlso in this change: we now clean up the data directories of\n.apks that disappear from the system image, and some improvements\nto logging and reporting error messages.\n\nA typical file in the updatecmds directory looks like this:\n\n-------\ncom.google.android.gsf:com.google.android.providers.talk\n    databases/talk.db\ncom.google.android.gsf:com.google.android.googleapps\n    databases/gls.db\n-------\n\nThis says that for com.google.android.sfs, there are two packages to\nmove files from:\n\nFrom com.google.android.providers.talk, the file databases/talk.db.\nFrom com.google.android.googleapps, the file databases/gls.db\n\nAs part of moving the file, its owner will be changed from the old\npackage to whoever is the owner of the new package\u0027s data directory.\n\nIf those two files had existed, after booting you would now have the\nfiles:\n\n/data/data/com.google.android.gsf/databases/talk.db\n/data/data/com.google.android.gsf/databases/gls.db\n\nNote that all three of these facilities assume that the older .apk\nis completely removed from the newer system.  The WILL NOT work\ncorrectly if the older .apk still remains.\n"
    },
    {
      "commit": "348f7b904851e3edcf09b8362406ff2f4ae57db2",
      "tree": "da6f4fdea5f8ca753d2e4f65e988a981e7a19b90",
      "parents": [
        "8c59ec53dc181e86cf620e53badb7d2e16be2d1f",
        "cce9da5dc3d515f98c260af41a03e61e57b4e7a6"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@android.com",
        "time": "Wed Feb 03 15:35:28 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 03 15:35:28 2010 -0800"
      },
      "message": "Merge \"Add auto-restore setting and Backup Manager awareness thereof\""
    },
    {
      "commit": "cce9da5dc3d515f98c260af41a03e61e57b4e7a6",
      "tree": "a62b89129c5ffa27c1068a489ac8e1932e9027cc",
      "parents": [
        "3c4a1ebc19abba06af565071c243e55ba6eef585"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Feb 03 15:11:15 2010 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Feb 03 15:33:52 2010 -0800"
      },
      "message": "Add auto-restore setting and Backup Manager awareness thereof\n\nThis setting, like BACKUP_ENABLE, should never be set directly in the secure\nsettings database.  Instead, it should be manipulated through the new IBackupManager\nmethod setAutoRestore(boolean).\n\nChange-Id: I5c3226ca85b6148bb756d753d7f9e4ea76e878c4\n"
    },
    {
      "commit": "ec4caa0f549bf9a75d20daa95b8aa8d9fab39681",
      "tree": "7ff6f2e9c277d248924b289c707683c7c4d3353f",
      "parents": [
        "3c4a1ebc19abba06af565071c243e55ba6eef585"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Feb 03 10:48:21 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Feb 03 14:37:43 2010 -0800"
      },
      "message": "NativeDaemonConnector: Improve NativeDaemonException reporting to include the actual error response\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "08675a3376819a82aa5ab344bc3e7b1635c30b05",
      "tree": "9a16e6be377fe367639ef9e02c5421e0ce9b9044",
      "parents": [
        "57405b93f194851eb2187a8ed3362be18a483a17"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Thu Jan 28 09:57:30 2010 -0800"
      },
      "committer": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Tue Feb 02 18:33:29 2010 -0800"
      },
      "message": "Apps on sdcard: Add new broadcasts\n\nAdd new broadcasts ACTION_MEDIA_RESOURCES_AVAILABLE and\nACTION_MEDIA_RESOURCES_UNAVAILABLE that get broadcast by\nPackageManagerService when sdcard gets mounted/unmounted\nby MountService so that packages on sdcard get recognized by\nvarious system services as being installed/available or\nremoved/unavailable by the system.\nThe broadcasts are sent before the actual package cleanup which includes\nmounting/unmounting the packages and we force a gc right after so\nthat any lingering file references to resources on sdcard get\nreleased.\n"
    },
    {
      "commit": "37b22176001d4bd69d2b276d212d7a12eafaaf15",
      "tree": "aab20acbf598c561eaa94ee8987f238e6d7f92fe",
      "parents": [
        "9763f64925cd04a684b014085f0a148bb9cc40fe",
        "c2af5d3bf84fa66570081d30ce0210458e46b1b8"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@android.com",
        "time": "Tue Feb 02 15:27:55 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 02 15:27:55 2010 -0800"
      },
      "message": "Merge \"Get rid of now-superfluous \"backup or restore in progress\" tracking\""
    },
    {
      "commit": "c2af5d3bf84fa66570081d30ce0210458e46b1b8",
      "tree": "18b1986a831c9d1987a939d4f90ab4200d965d99",
      "parents": [
        "1b7a47c911d21dbbcfb782380018703534bd8787"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Feb 02 15:18:58 2010 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Feb 02 15:24:39 2010 -0800"
      },
      "message": "Get rid of now-superfluous \"backup or restore in progress\" tracking\n\nNow that backup/restore/etc operations are queued and serialized, we no longer\nneed to use external state tracking to prevent overlapping operations.\n\nChange-Id: I14f2a5d740cb97ae062aad55a06f49a2be5dd985\n"
    },
    {
      "commit": "be16cb15b39f5140b764854bc78c139bfa9fbe8b",
      "tree": "aa888d482abfcef50e1d61df92c6517ea3a0d95b",
      "parents": [
        "ec7f7e6378f87cdc826a8b5d836fff26f44b0b09"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Jan 29 05:35:35 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 02 11:17:46 2010 -0800"
      },
      "message": "PackageManagerService: Refactor MountService calls (new api)\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "4270e1ea74c57f1c65620e9f5ecaa8c2a5daf0e1",
      "tree": "151ed15644268731334b27a1e179ed556c1cd407",
      "parents": [
        "78071b73479b9bea536dd1d5260ea78dd176640b"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Jan 29 05:32:19 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 02 11:17:46 2010 -0800"
      },
      "message": "MountService: Massive bloat reduction and rewrite\n\n- Most API calls now return an int as a result code (see MountServiceResultCode.java)\n- All notification code has been removed\n- All settings code has been removed\n- Removed UMS centric API calls in favor of more generic \u0027shares\u0027\n- Mount error reporting is no longer done via an event, but is done as part of the\n  actual mount process\n- Rework vold IPC commands to be more sane\n\nUpdated:\n    MountService: Rename MountServiceObserver -\u003e MountServiceListener\n    MountService: Add support for Async callbacks\n\nUpdated:\n    MountService: Add BinderDeath handling\n\nUpdated:\n    MountService: Remove notifys since we dont listen anyways\n\nUpdated:\n    MountService: Fix bad cast\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "78071b73479b9bea536dd1d5260ea78dd176640b",
      "tree": "a7211c69fbe82022f8b0abf0142f9484c573fd8f",
      "parents": [
        "476387613b53defbe39380809d1cbe5e93e4de44",
        "4c27e0e3bed006a9ba45c6c02be5fe49827b3fea"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 02 11:15:55 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 02 11:15:55 2010 -0800"
      },
      "message": "Merge \"NativeDaemonConnector: Cleanup socket code and use a proper exception Signed-off-by: San Mehat \u003csan@google.com\u003e\""
    },
    {
      "commit": "f6133febaead08d597c4454d543ee3cba5158a90",
      "tree": "056721046314768bac765ed326ed0cbe01564a84",
      "parents": [
        "7747210426f0169b7f10f47a66d15a754b36d64c"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Mon Feb 01 18:24:46 2010 -0500"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Mon Feb 01 18:24:46 2010 -0500"
      },
      "message": "Fix bug 2362761 AppWidgetService should use Intent.setPackage()\n\nThanks Bjorn for the tip.\n"
    },
    {
      "commit": "9327f4f671de3cbb795612bf4f314ceff88de865",
      "tree": "f6f1109e4b3c8966eb6747f6f73835ea0623312e",
      "parents": [
        "7912a29cf24cab2f999186d95afa13ecdada0b8e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jan 29 10:38:29 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jan 29 17:16:02 2010 -0800"
      },
      "message": "More device policy work: clarify password modes, monkeying.\n\nClarifies what the password modes mean, renaming them to \"quality\"\nand updating their documentation and the implementation to follow.\n\nAlso adds a facility to find out if a monkey is running, which I\nneed for the api demo to avoid letting it wipe the device.\n"
    },
    {
      "commit": "b0dcaaf108d70040e4e4e4ac65df1a7eae732d1e",
      "tree": "9f724399126713699cd0ea14338c78ae3985aa6a",
      "parents": [
        "239d5b3638ae486f715f44a8c1a71420f486049c"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jan 29 16:27:04 2010 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jan 29 16:27:04 2010 -0800"
      },
      "message": "Don\u0027t crash on transport unregistration if there is no current transport\n\nChange-Id: Icd0962254ba224a7be27d408dffb25b634f67863\n"
    },
    {
      "commit": "4a20061f341ffaa8531993a851a3dfbfcdc8e38d",
      "tree": "168ec3abef77edfff59360e8fff42187fdea7fc2",
      "parents": [
        "e6c73c2018bcd61aa1f9c1ce735a6813d40fe84d",
        "44a2790374bf27116cbd91060d4f096ca5999709"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@android.com",
        "time": "Fri Jan 29 15:02:03 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 29 15:02:03 2010 -0800"
      },
      "message": "Merge \"Make backup/restore asynchronous and enforce timeouts\""
    },
    {
      "commit": "44a2790374bf27116cbd91060d4f096ca5999709",
      "tree": "562efb45caf90c9f04630ab9e70c7fc7e7fb282d",
      "parents": [
        "4d3cef348b4350abd9d50230376ff8b1d2ac4654"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jan 27 17:15:49 2010 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jan 29 14:07:52 2010 -0800"
      },
      "message": "Make backup/restore asynchronous and enforce timeouts\n\nCallouts to app backup agents are now asynchronous, and timeouts are applied if\nthey take too long, hang, etc.  The initial timeouts are set to 15 seconds on\nbackup, 60 seconds on restore.  These operations typically run at background\npriority, so it\u0027s necessary to give them ample time to run.\n\nAs part of setting up this asynchronicity, the Backup Manager\u0027s internal thread\nmanagement has been overhauled.  It now spins off a single HandlerThread at\nstartup, and runs backup/restore/etc operations *synchronously* in that thread,\napplying timeouts as appropriate.  This means we\u0027re no longer spinning up new\nthreads all the time, and furthermore it ensures that we can never have more\nthan one operation in flight at once.  Later CLs will remove the now-redundant\nlogic that previously ensured that operations didn\u0027t stomp on each other.\n\nBug: 2053560\nChange-Id: Ie4315c219c7ff6dd8f51f2ad6c0872595b18cff1\n"
    },
    {
      "commit": "ef73162887943e16587b8e737b19e59348338e8c",
      "tree": "8a769b3abba1289bd2d6c39cc801c656491f60e2",
      "parents": [
        "3b889f52195cbbc12200ca237e312e825003132d"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Jan 27 17:51:34 2010 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jan 29 17:05:04 2010 -0500"
      },
      "message": "Support for triggering the lockscreen while the screen is on:\n\nAdd new ALLOW_LOCK_WHILE_SCREEN_ON window manager flag, which when set\ncauses the window manager to put up the lockscreen after the\nnormal screen timeout has elapsed.\n\nAdd plumbing to pass PowerManager.userActivity() to the window manager policy.\n\nChange-Id: I05adc52bad39c56031a08e8ec3cbcf5c2d9b9827\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "bd2f531a2836d3ad09755856c9c84cf75eb900d7",
      "tree": "2e5e74a0e2bc5c2aa0a906b591d1de9fc8493ae7",
      "parents": [
        "d425a45f8d7c0e94d2db4c0a5c8157e6c846b853",
        "5fd5bfe942a03a2a0f8b55e78138e5ca7d578c6b"
      ],
      "author": {
        "name": "Suchi Amalapurapu",
        "email": "asuchitra@google.com",
        "time": "Fri Jan 29 08:45:39 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 29 08:45:39 2010 -0800"
      },
      "message": "Merge \"Fix StringIndexOutOfBoundsException in PackageManagerService\""
    },
    {
      "commit": "d425a45f8d7c0e94d2db4c0a5c8157e6c846b853",
      "tree": "a2424eebb5622a5542d050a18eed50d27e8a02e2",
      "parents": [
        "b4a162e50a96d2eef5fa3ed686e1418c4fbc8ded"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@google.com",
        "time": "Fri Jan 29 10:06:53 2010 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@google.com",
        "time": "Fri Jan 29 10:09:04 2010 -0500"
      },
      "message": "Fix build.\n\n(Broken in change Ib94f795c.)\n"
    },
    {
      "commit": "4c27e0e3bed006a9ba45c6c02be5fe49827b3fea",
      "tree": "9a15ea9ff54204a2e264516f6bd9994b0ce7d20f",
      "parents": [
        "b4a162e50a96d2eef5fa3ed686e1418c4fbc8ded"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Jan 29 05:22:17 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Jan 29 06:30:23 2010 -0800"
      },
      "message": "NativeDaemonConnector: Cleanup socket code and use a proper exception\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "77c292d83e70793dcb23677ab60a6c707fc613dd",
      "tree": "0c65c432e70e048e0dbfdb2ded1ef55c3bbbe017",
      "parents": [
        "784d53e79bab67e6b08b4bfc9a2dc75cfcba9772",
        "b94f795c257e32a1d7be1115568b5b6f576dec37"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Fri Jan 29 06:22:33 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 29 06:22:33 2010 -0800"
      },
      "message": "Merge \"New full-screen activity for USB mass storage interaction.\""
    },
    {
      "commit": "5fd5bfe942a03a2a0f8b55e78138e5ca7d578c6b",
      "tree": "b2ed5440a50415eb8945387125c631440953b8d2",
      "parents": [
        "784d53e79bab67e6b08b4bfc9a2dc75cfcba9772"
      ],
      "author": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Fri Jan 29 12:11:30 2010 +0000"
      },
      "committer": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Fri Jan 29 12:29:41 2010 +0000"
      },
      "message": "Fix StringIndexOutOfBoundsException in PackageManagerService\n\nThe method packageManagerService.getNextCodePath(String oldCodePath,\nString prefix, String suffix) threw StringIndexOutOfBoundsException if\noldCodePath does not contain prefix, and prefix is longer than\noldCodePath, or if the preix and suffix overlap.\n\nFixes http://b/issue?id\u003d2404232\n\nChange-Id: Ib8abb16f8bfd08f607476d9289f46d170c43a076\n"
    },
    {
      "commit": "784d53e79bab67e6b08b4bfc9a2dc75cfcba9772",
      "tree": "3fe04da1c937d334405ef77d26fd7d823e19b4bd",
      "parents": [
        "a9938c4bf491cdf0df3b6b1fe41e0e3ef5a2dfbb"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Fri Jan 29 16:26:28 2010 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Fri Jan 29 16:26:28 2010 +0800"
      },
      "message": "WifiService: allow EAP variables to be unset using empty strings.\n"
    },
    {
      "commit": "c4a0c2744a19a42bd1f5c39a6f1673310c6f9c3a",
      "tree": "c55900746cc0ef90b0d3146f6924dde6de9f52b8",
      "parents": [
        "5e342fa3260044353705c946d3ae62c89df52ee6",
        "0049a1bf3f8bae3a10cfeff38aefce215bf1298b"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Jan 28 20:46:25 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 28 20:46:25 2010 -0800"
      },
      "message": "Merge \"Blacklist APs instead of disable\""
    },
    {
      "commit": "fbf56dc719a2ee13129fd7049565054370c6ed1d",
      "tree": "1afad344e45b31b4479091086b15738d1a777640",
      "parents": [
        "8cc99938c3e3d1a8cfe29b6826e120dbed15a338",
        "3e229076203cd8cfee0adac44cd3c930dfa0e59c"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Thu Jan 28 14:46:55 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 28 14:46:55 2010 -0800"
      },
      "message": "am 3e229076: am cc4b4016: Fix the reporting of NO_CONNECTIVITY.\n\nMerge commit \u00273e229076203cd8cfee0adac44cd3c930dfa0e59c\u0027\n\n* commit \u00273e229076203cd8cfee0adac44cd3c930dfa0e59c\u0027:\n  Fix the reporting of NO_CONNECTIVITY.\n"
    },
    {
      "commit": "64fe5646c5b2eb5ff58cea4ca4d384b4a5f733dc",
      "tree": "1f03e532dea35a41adf56a089bf35dc6d4ecb667",
      "parents": [
        "e7d9ba249a2b6d155e30c9b76bff8aa1c5ccaecb",
        "6d626d41e9db62a0eadb61ccb2aa4081a8b9f6d0"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Thu Jan 28 13:44:45 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 28 13:44:45 2010 -0800"
      },
      "message": "am 6d626d41: am 5381e4ef: Merge \"Refine fix I53e91db7 to apply only to wifi network\" into eclair\n\nMerge commit \u00276d626d41e9db62a0eadb61ccb2aa4081a8b9f6d0\u0027\n\n* commit \u00276d626d41e9db62a0eadb61ccb2aa4081a8b9f6d0\u0027:\n  Refine fix I53e91db7 to apply only to wifi network\n"
    },
    {
      "commit": "b94f795c257e32a1d7be1115568b5b6f576dec37",
      "tree": "7a97a296b6e6f153c9533486cfed9e7367504766",
      "parents": [
        "5f551ef6a8b6a4f158d8b3ad9591d2f874c89f39"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@google.com",
        "time": "Thu Jan 28 15:12:04 2010 -0500"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@google.com",
        "time": "Thu Jan 28 16:18:22 2010 -0500"
      },
      "message": "New full-screen activity for USB mass storage interaction.\n\nStill TODO: patch into forthcoming callbacks from\nMountService so the USB storage activity always shows the\ncorrect state of the device. (Right now it only refreshes\nits display onResume.)\n\nBug: 2299129\n"
    },
    {
      "commit": "254cb446faa7cb13699d8150eb4cc4f44cb61a2d",
      "tree": "1647a7558348a67989c0892b4e5b0350ba4392c5",
      "parents": [
        "2fd75f35158b8347251d18e8ec48585d6e020777"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 27 19:23:59 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jan 28 13:15:57 2010 -0800"
      },
      "message": "More device admin.\n\n- Clean up device policy manager APIs.\n- Implement lockNow().  For now this just turns the screen off to lock the device.\n"
    },
    {
      "commit": "bdbc925a275b4ba4217ec7ac0ad2ec5f913d4e51",
      "tree": "568aa9c4a713e68a9a9c179326448ea4eb2fc2ea",
      "parents": [
        "5f551ef6a8b6a4f158d8b3ad9591d2f874c89f39",
        "b0903104fd2fe7a69331758fba769c8067e26771"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Jan 28 12:03:49 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Jan 28 12:03:49 2010 -0800"
      },
      "message": "resolved conflicts for merge of b0903104 to master\n\nChange-Id: Iff20980c44d42b41ae411c4201e0927cee19d415\n"
    },
    {
      "commit": "0049a1bf3f8bae3a10cfeff38aefce215bf1298b",
      "tree": "7153232b780840367b5ca29b08f8d66d3633520d",
      "parents": [
        "5f551ef6a8b6a4f158d8b3ad9591d2f874c89f39"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Jan 14 12:37:49 2010 -0800"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Jan 28 11:27:14 2010 -0800"
      },
      "message": "Blacklist APs instead of disable\n\nWe currently disable networks upon too many reconnects. This leads to asking\nthe user input for reconnects. Blacklist it instead.\n\nBug: 2129037\nChange-Id: I23d69daf3964c066ed7f70d32fefb81016f19aa2\n"
    }
  ],
  "next": "f1a0f55f7145bc3c769752395d29b282f1f133f2"
}
