tree 1b2f54bf077b47a04ea7e1b099536faac1243ce8
parent ae723818b80e22b44a90c5e093d4556a38966d57
parent f75e52a850f07936229ef43fb793dbb44303d170
author The Android Open Source Project <initial-contribution@android.com> 1277847752 -0700
committer Android Git Automerger <android-git-automerger@android.com> 1277847752 -0700

am 799a5a61: am 2533a6ad: set up fast-forward from froyo-release to gingerbread

Merge commit '799a5a61d5813be83c4d0814b04c374adfe3a989'

* commit '799a5a61d5813be83c4d0814b04c374adfe3a989': (22 commits)
  Properly note the current active restore set's token
  Do not log AT command traffic by default.
  Work on issue # 2778549: Idle FRF72 is awake 18 mins more than ERE27 in 13hr test
  TimedEventQueue is apparently important for glitch-free media playback, and so
  As Donut (API=4) devices and earlier do not have a Bluetooth API, .apk files
  When filling the cache, we always time out waiting for a condition that won't occur.
  Respond to changes in throttle policy.
  Fix Tethering of multiple downstream ifaces.
  Update Framework to support multiple dhpc ranges
  Dumb late-night typo.
  Use ViewRoot.addConfigCallback instead of a BroadcastReceiver.
  Clean up changing AP configuration
  Grant permissions to apps on sd when enabling/disabling packages.
  Fix issue #2512507: Shortcuts and Widgets lost on upgrading from Eclair to FRE70D
  Switch default install location to unspecified.
  Fix problem with calling onConfigurationChanged() too much.
  Preserve widgets on upgrade.
  Need to keep new package's cert when using original-package.
  Pick up default install location
  Fix 2463886: Allow delayed fetching of DevicePolicyManager in LockPatternUtils.
  ...
