History log of /frameworks/base/core/java/android/app/ContextImpl.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
cd75706117432e33d11639e675bcff50479a6bb9 20-Oct-2012 Amith Yamasani <yamasani@google.com> System server should always send broadcasts to a specific or all users

Bug: 7368245

Log a warning if the system process calls unqualified sendBroadcast()
and other calls.

As a result of the logging above, found a few more method calls such as
bindService() that would benefit from being more explicit to avoid
future confusion and reduce the log warnings.

Change-Id: I17f15c8be9adf7becd456d6abbab606f19befdbf
c0bd747b0605af251ff136277f14220a5a4c9818 09-Oct-2012 Dianne Hackborn <hackbod@google.com> Further work on issue #7307399: Framework needs a new pre-user-shutdown...

...phase & callback API

I realized there were a few things wrong with what was there. The new
ACTION_USER_STARTING was not being sent for the first user at boot, and
there was an existing problem where ACTION_USER_STARTED was sent every
time there was a user switch.

Also improved some debug output of broadcasts to make it easier to see
what is going on in this stuff, and better reporting of why a service
couldn't be started.

Change-Id: Id8a536defbbad1f73d94a37d13762436b822fbe3
9c2a38ed10592a54d9bb753ef882632f7a8cd446 08-Oct-2012 Amith Yamasani <yamasani@google.com> Merge "Fix resource reading for secondary users" into jb-mr1-dev
64442c11555d828a41af0b8a58ab933357889061 07-Oct-2012 Amith Yamasani <yamasani@google.com> Fix resource reading for secondary users

Bug: 7086881

Load resources for the correct user.

Also clean up package monitoring and locking.
Added dump method to SearchManagerService.

Sneaking in a change to make crash dialogs visible to current user.

Change-Id: Id56dd15428d66084de995e28be242db27c15fda3
6f2a3d298205522f2e799800dace0e6c345dd4d3 06-Oct-2012 Adam Powell <adamp@google.com> Quick settings user display and switching

Load user information for the current user and display in quick
settings tile. Name is pulled from the contacts DB from the "Me"
profile, which will override the raw name on the system user if

Open the user switcher on the lock screen if this tile is clicked and
there is more than one user registered on the system. If there is only
one user, show the "Me" quick contact card.

Darken the background protection behind the user's name on the QS tile
layout so that it's readable against very light profile pic

Bug 7175023
Bug 7257997

Change-Id: Ia1e7dd7af72dbd49113a827f9228e0a32e20a0dc
fc3f24b4b60c10e0d3f41f70df37e11ea311cc2c 02-Oct-2012 Jeff Sharkey <jsharkey@android.com> Make USB services multi-user aware.

USB settings are now isolated per-user, since they revolve around
installed packages. User-specific settings are returned based on
calling user, or referenced by UserHandle passed to SystemUI. Each
settings Context is wrapped as a specific user, so all broadcasts are
sent correctly. Upgrades any existing USB settings to OWNER.

Physical events, like new devices, are routed to the currently active
user. Switch to using AtomicFile when persisting settings.

Bug: 7244888
Change-Id: I8a723ad3d55ac1bff99276c5f3a3f5e8f013432f
ded653b168b19f6061889907d4f562d764c5559b 28-Sep-2012 Jeff Sharkey <jsharkey@android.com> Fix "system" resources; more context user work.

Special-case "system" resources, since it doesn't have an
ApplicationInfo. Also switch Context and PackageManager to using
the wrapped UserHandle for outgoing calls.

Bug: 7242361
Change-Id: I1ecd2a4752399a6dce2de97c59bd5545996c9a99
98edc951712823dbf5db2b7e9c203a0e98fc616b 25-Sep-2012 Amith Yamasani <yamasani@google.com> Load resources for the correct user

For apps that are only installed on secondary users, the SystemUI is
unable to see them by default. Added some methods to explicitly pass the
userId of the user the resources are requested for by the StatusBarIcon

Bug: 7214384

Also fix binding to remote views

Bug: 7192802

Change-Id: I5d6c5f624aa37fb231f3467f9764c8d99077a91d
ea7e91514ee1968d15713e82a5cca745e2c46a05 25-Sep-2012 Amith Yamasani <yamasani@google.com> AppInfo from Notifications for secondary users

Required wiring up startActivitiesAsUser()

Bug: 7224950

Also fix a bug in navigateUp in secondary user

Change-Id: I114ae2de0457362d62e899fdb94b12239a3eb778
6d51571835737c7502a2e111ee9dc2527ebad984 21-Sep-2012 Jeff Sharkey <jsharkey@android.com> Allow acquiring ContentProviders across users.

Otherwise services like SystemUI will always open content://-style
Uris as USER_OWNER. Surfaces through createPackageContextAsUser()
which points all ContentResolver operations towards a given user.

Start using in RemoteViews, so that Notifications correctly resolve
image Uris to the sending user. Also add user support for "content"
shell tool.

Bug: 7202982
Change-Id: I8cb7fb8a812e825bb0b5833799dba87055ff8699
27bd34d9d9fe99f11b80aa0bbdb402fb47ef4158 16-Sep-2012 Jeff Sharkey <jsharkey@android.com> Multi-user MTP.

The current MTP kernel driver at /dev/mtp_usb is exclusive, meaning
only one process can have it open. In addition, each MTP session
with a desktop requires unique object IDs, which doesn't hold true
across users on the device.

To solve these two issues, when switching users we cycle the USB host
stack to disconnect both local and remote MTP connections, giving the
new user's media process a chance to claim /dev/mtp_usb, and causing
the desktop to initiate a new MTP session.

This change also allows BroadcastReceivers to registerReceiver()
allow retrieval of a current sticky broadcast. Adds a system property
to override maximum users. Removes MOUNTED broadcasts for secondary
users. Allows INTERACT_ACROSS_USERS to getCurrentUser().

Bug: 6925114
Change-Id: I02b4a1b535af95fb2142655887b6d15a8068d18a
4dc7a68dbeaa0edd8815b2105915753310d58343 11-Sep-2012 Christopher Tate <ctate@google.com> Set up default (random) Android IDs for all users

Also correct some now-misleading terminology in a permission-check
log message, and fix a bug in which a system component trying to
write to a secondary user's settings would wind up writing the
owner's settings instead.

Bug 7132405

Change-Id: I5b8fafc35720390a01652e386ab5b7c0ad751abe
5e03e2ca7d25b899b129baad2dd5eca6bf99d88a 06-Sep-2012 Dianne Hackborn <hackbod@google.com> More multi-user stuff:

- New (hidden) isUserRunning() API.
- Maintain LRU list of visited users.
- New FLAG_IS_DATA_ONLY for ApplicationInfo.
- Clean up pending intent records when force-stopping a user (or package).
(Also fixes bug #6880627: PendingIntent.getService() returns stale
intent of force stopped app)
- Fix force-stopping when installing an app to do the force-stop across
all users for that app.
- When selecting which processes to kill during a force stop, do this
based on the actual packages loaded in the process, not just process
name matching.
- You can now use --user option in am when starting activities, services,
and instrumentation.
- The am --user option accepts "current" and "all" as arguments.
- The pm uninstall command now uninstalls for all users, so it matches
the semantics of the install command.
- PhoneWindowManager now explicitly says to start home in the current
- Activity manager call to retrieve the MIME type from a content provider
now takes a user argument, so it will direct this to the proper user.
- The package manager uninstall paths are now implemented around
PackageSetting, not PackageParser.Package. This allows them to work
even if the application's apk has been removed (in which case it only
exists as a PackageSetting, not the PackageParser.Package parsed from
the apk).

Change-Id: I3522f6fcf32603090bd6e01cc90ce70b6c5aae40
20e809870d8ac1e5b848f2daf51b2272ef89bdfc 01-Sep-2012 Dianne Hackborn <hackbod@google.com> Add registering for explicit users.

New API to register as an explicit user, which allows you to
also select ALL to see broadcasts for all users.

New BroadcastReceiver API to find out which user the broadcast
was sent to.

Use this in app widget service to handle per-user package broadcasts
and boot completed broadcasts correctly.

Change-Id: Ibbe28993bd4aa93900c79e412026c27863019eb8
2701f325a6d4acd920637d2ff6fd6972a9cf836b 01-Sep-2012 Dianne Hackborn <hackbod@google.com> Merge "Remove Binder.getOrigCallingUid()." into jb-mr1-dev
a492c3a7b2c18426fd0cb4d017eacbc368195dc5 24-Aug-2012 Jeff Brown <jeffbrown@google.com> Initial draft of high-level multi-display APIs.

This patch introduces the ability to create a Context that
is bound to a Display. The context gets its configuration and
metrics from that display and is able to provide a WindowManager
that is bound to the display.

To make it easier to use, we also add a new kind of Dialog
called a Presentation. Presentation takes care of setting
up the context as needed and watches for significant changes
in the display configuration. If the display is removed,
then the presentation simply dismisses itself.

Change-Id: Idc54b4ec84b1ff91505cfb78910cf8cd09696d7d
4120375d46091df8527bb701882e056fbb0e6b06 31-Aug-2012 Dianne Hackborn <hackbod@google.com> Remove Binder.getOrigCallingUid().

Replaced all remaining places that used it with explicit user

While doing this, I ran into stuff that was creating PendingIntent
objects (that now need to specify the explicit user they are for),
which are also posting notifications... but have no way to specify
the user for the notification.

So the notification manager in the system process now also gets a
formal concept of a user associated with the notification, which
is passed in to all the necessary aidl calls. I also removed the
old deprecated aidl interface for posting/cancelling notifications,
since we now always need a user supplied.

There is more work that needs to be done here, though. For example
I think we need to be able to specify USER_ALL for a notification that
should be shown to all users (such as low storage or low battery).
Along with that, the PendingIntent creation needs to be tweaked to
be able to handle USER_CURRENT by evaluating the user at the point the
pending intent is sent.

That's for another change, however.

Change-Id: I468e14dce8def0e13e0870571e7c31ed32b6310c
5ac72a29593ab9a20337a2225df52bdf4754be02 30-Aug-2012 Dianne Hackborn <hackbod@google.com> Improve multi-user broadcasts.

You can now use ALL and CURRENT when sending broadcasts, to specify
where the broadcast goes.

Sticky broadcasts are now correctly separated per user, and registered
receivers are filtered based on the requested target user.

New Context APIs for more kinds of sending broadcasts as users.

Updating a bunch of system code that sends broadcasts to explicitly
specify which user the broadcast goes to.

Made a single version of the code for interpreting the requested
target user ID that all entries to activity manager (start activity,
send broadcast, start service) use.

Change-Id: Ie29f02dd5242ef8c8fa56c54593a315cd2574e1c
bd6e1500aedc5461e832f69e76341bff0e55fa2b 28-Aug-2012 Jeff Brown <jeffbrown@google.com> Add initial multi-display support.

Split the DisplayManager into two parts. One part is bound
to a Context and takes care of Display compatibility and
caching Display objects on behalf of the Context. The other
part is global and takes care of communicating with the
DisplayManagerService, handling callbacks, and caching
DisplayInfo objects on behalf of the process.

Implemented support for enumerating Displays and getting
callbacks when displays are added, removed or changed.

Elaborated the roles of DisplayManagerService, DisplayAdapter,
and DisplayDevice. We now support having multiple display
adapters registered, each of which can register multiple display
devices and configure them dynamically.

Added an OverlayDisplayAdapter which is used to simulate
secondary displays by means of overlay windows. Different
configurations of overlays can be selected using a new
setting in the Developer Settings panel. The overlays can
be repositioned and resized by the user for convenience.

At the moment, all displays are mirrors of display 0 and
no display transformations are applied. This will be improved
in future patches.

Refactored the way that the window manager creates its threads.
The OverlayDisplayAdapter needs to be able to use hardware
acceleration so it must share the same UI thread as the Keyguard
and window manager policy. We now handle this explicitly as
part of starting up the system server. This puts us in a
better position to consider how we might want to share (or not
share) Loopers among components.

Overlay displays are disabled when in safe mode or in only-core
mode to reduce the number of dependencies started in these modes.

Change-Id: Ic2a661d5448dde01b095ab150697cb6791d69bb5
7767eac3232ba2fb9828766813cdb481d6a97584 24-Aug-2012 Dianne Hackborn <hackbod@google.com> Keep track of whether an app is installed for each user.

This add a new per-user state for an app, indicating whether
it is installed for that user.

All system apps are always installed for all users (we still
use disable to "uninstall" them).

Now when you call into the package manager to install an app,
it will only install the app for that user unless you supply
a flag saying to install for all users. Only being installed
for the user is just the normal install state, but all other
users have marked in their state for that app that it is not

When you call the package manager APIs for information about
apps, uninstalled apps are treated as really being not visible
(somewhat more-so than disabled apps), unless you use the

If another user calls to install an app that is already installed,
just not for them, then the normal install process takes place
but in addition that user's installed state is toggled on.

The package manager will not send PACKAGE_ADDED, PACKAGE_REMOVED,
PACKAGE_REPLACED etc broadcasts to users who don't have a package
installed or not being involved in a change in the install state.
There are a few things that are not quite right with this -- for
example if you go through a full install (with a new apk) of an
app for one user who doesn't have it already installed, you will
still get the PACKAGED_REPLACED messages even though this is
technically the first install for your user. I'm not sure how
much of an issue this is.

When you call the existing API to uninstall an app, this toggles
the installed state of the app for that user to be off. Only if
that is the last user user that has the app uinstalled will it
actually be removed from the device. Again there is a new flag
you can pass in to force the app to be uninstalled for all users.

Also fixed issues with cleaning external storage of apps, which
was not dealing with multiple users. We now keep track of cleaning
each user for each package.

Change-Id: I00e66452b149defc08c5e0183fa673f532465ed5
5d1122a3f84e1df80c63aca56310f2cf29bea7dc 23-Aug-2012 Dianne Hackborn <hackbod@google.com> Merge "Fix issue #7016987: Unable to attach a picture in gmail/emaill composer action." into jb-mr1-dev
f1c26e2fd03e9765fde519e238fc23d4e3d06df2 23-Aug-2012 Dianne Hackborn <hackbod@google.com> Fix issue #7016987: Unable to attach a picture in gmail/emaill composer action.

Change-Id: I0c9336bb072b4622a5eab6d3ec104c4cc38e367a
92d570529c72c00ab456521a5b0237f62a6abdf5 23-Aug-2012 Amith Yamasani <yamasani@google.com> Handle null cache directory

data/android directory doesn't exist sometimes, and hence cache
directory creation fails. Don't crash the process due to that.

Change-Id: I22d7ed5df9c70f021a87029e89a13a11b4b0303b
98365d7663cbd82979a5700faf0050220b01084d 20-Aug-2012 Jeff Brown <jeffbrown@google.com> Refactor for multi-display support.

Split WindowManagerImpl into two parts, the WindowManager
interface implementation remains where it is but the global
communications with the window manager are now handled by
the WindowManagerGlobal class. This change greatly simplifies
the challenge of having separate WindowManager instances
for each Context.

Removed WindowManagerImpl.getDefault(). This represents the
bulk of this change. Most of the usages of this method were
either to perform global functions (now handled by WindowManagerGlobal)
or to obtain the default display (now handled by DisplayManager).

Explicitly associate each new window with a display and make
the Display object available to the View hierarchy.

Add stubs for some new display manager API features.

Start to split apart the concepts of display id and layer stack.
since they operate at different layers of abstraction.
While it's true that each logical display uniquely corresponds to a
surface flinger layer stack, it is not necessarily the case that
they must use the same ids. Added Display.getLayerStack()
and started using it in places where it was relatively easy to do.

Change-Id: I29ed909114dec86807c4d3a5059c3fa0358bea61
79af1dd54c16cde063152922b42c96d72ae9eca8 17-Aug-2012 Dianne Hackborn <hackbod@google.com> Switch public APIs to use new UserHandle class for identifying users.

Gets rid of "yet another integer" confusion.

Change-Id: Id07ea7307aea7c62f0087c6663a1f1c08e2e5dee
f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8 16-Aug-2012 Dianne Hackborn <hackbod@google.com> Rename UserId to UserHandle.

This is the start of turning this into a formal public API.

Change-Id: I5786d2c320f1de41a06ed5d0f65adb68967287a0
9630704ed3b265f008a8f64ec60a33cf9dcd3345 28-Jul-2012 Jeff Brown <jeffbrown@google.com> Power manager rewrite.

The major goal of this rewrite is to make it easier to implement
power management policies correctly. According, the new
implementation primarily uses state-based rather than event-based
triggers for applying changes to the current power state.

For example, when an application requests that the proximity
sensor be used to manage the screen state (by way of a wake lock),
the power manager makes note of the fact that the set of
wake locks changed. Then it executes a common update function
that recalculates the entire state, first looking at wake locks,
then considering user activity, and eventually determining whether
the screen should be turned on or off. At this point it may
make a request to a component called the DisplayPowerController
to asynchronously update the display's powe state. Likewise,
DisplayPowerController makes note of the updated power request
and schedules its own update function to figure out what needs
to be changed.

The big benefit of this approach is that it's easy to mutate
multiple properties of the power state simultaneously then
apply their joint effects together all at once. Transitions
between states are detected and resolved by the update in
a consistent manner.

The new power manager service has is implemented as a set of
loosely coupled components. For the most part, information
only flows one way through these components (by issuing a
request to that component) although some components support
sending a message back to indicate when the work has been
completed. For example, the DisplayPowerController posts
a callback runnable asynchronously to tell the PowerManagerService
when the display is ready. An important feature of this
approach is that each component neatly encapsulates its
state and maintains its own invariants. Moreover, we do
not need to worry about deadlocks or awkward mutual exclusion
semantics because most of the requests are asynchronous.

The benefits of this design are especially apparent in
the implementation of the screen on / off and brightness
control animations which are able to take advantage of
framework features like properties, ObjectAnimator
and Choreographer.

The screen on / off animation is now the responsibility
of the power manager (instead of surface flinger). This change
makes it much easier to ensure that the animation is properly
coordinated with other power state changes and eliminates
the cause of race conditions in the older implementation.

The because of the userActivity() function has been changed
so that it never wakes the device from sleep. This change
removes ambiguity around forcing or disabling user activity
for various purposes. To wake the device, use wakeUp().
To put it to sleep, use goToSleep(). Simple.

The power manager service interface and API has been significantly
simplified and consolidated. Also fixed some inconsistencies
related to how the minimum and maximum screen brightness setting
was presented in brightness control widgets and enforced behind
the scenes.

At present the following features are implemented:

- Wake locks.
- User activity.
- Wake up / go to sleep.
- Power state broadcasts.
- Battery stats and event log notifications.
- Dreams.
- Proximity screen off.
- Animated screen on / off transitions.
- Auto-dimming.
- Auto-brightness control for the screen backlight with
different timeouts for ramping up versus ramping down.
- Auto-on when plugged or unplugged.
- Stay on when plugged.
- Device administration maximum user activity timeout.
- Application controlled brightness via window manager.

The following features are not yet implemented:

- Reduced user activity timeout for the key guard.
- Reduced user activity timeout for the phone application.
- Coordinating screen on barriers with the window manager.
- Preventing auto-rotation during power state changes.
- Auto-brightness adjustment setting (feature was disabled
in previous version of the power manager service pending
an improved UI design so leaving it out for now).
- Interpolated brightness control (a proposed new scheme
for more compactly specifying auto-brightness levels
in config.xml).
- Button / keyboard backlight control.
- Change window manager to associated WorkSource with
KEEP_SCREEN_ON_FLAG wake lock instead of talking
directly to the battery stats service.
- Optionally support animating screen brightness when
turning on/off instead of playing electron beam animation

Change-Id: I1d7a52e98f0449f76d70bf421f6a7f245957d1d7
756220bd1912535840388a6743830d2e59ad4964 15-Aug-2012 Dianne Hackborn <hackbod@google.com> Add API to create new contexts with custom configurations.

This allows you to, say, make a Context whose configuration
is set to a different density than the actual density of the device.

The main API is Context.createConfigurationContext(). There is
also a new API on ContextThemeWrapper that allows you to apply
an override context before its resources are retrieved, which
addresses some feature requests from developers to be able to
customize the context their app is running in.

Change-Id: I88364986660088521e24b567e2fda22fb7042819
258848d2ae04f447ff1c18023fa76b139fcc0862 11-Aug-2012 Amith Yamasani <yamasani@google.com> User Manager service to manage users and query user details

Moved a bunch of methods from PackageManager to UserManager.

Fix launching of activities from recents to correct user.

Guest creation APIs

Change-Id: I0733405e6eb2829675665e225c759d6baa2b708f
8264408f5995534f8e3147b001664ea0df52aaa5 03-Aug-2012 Amith Yamasani <yamasani@google.com> Start the correct settings from the status bar.

Added a new method to Context: startActivityAsUser() requiring the

Show the correct Recents list, based on current user.
Added a getRecentTasksForUser() in ActivityManager. Hidden and requires

Change-Id: If5b56465efdd3ead36601a3b51ed4af157bbf35c
7d19e0242faac8017033dabb872cdf1542fa184c 08-Aug-2012 Dianne Hackborn <hackbod@google.com> More mult-user API work.

- You can now use android:singleUser with receivers and providers.
- New API to send ordered broadcasts as a user.
- New Process.myUserHandle() API.

For now I am trying out "user handle" as the name for the numbers
representing users.

Change-Id: I754c713ab172494bb4251bc7a37a17324a2e235e
b4163a6e12ee7100c758c6d3d062ade1f2843fce 03-Aug-2012 Dianne Hackborn <hackbod@google.com> Add APIs for interacting across users.

- Expose the existing Context.sendBroadcast() as
- Add new android:singleUser attribute for services.
- Add new INTERACT_ACROSS_USERS_FULL permission for full
system-level access to cross-user interface (allows
sendBroadcastAsUser() to send to any receiver).
- Add new INTERACT_ACROSS_USERS_FULL permission for
more restricted cross-user interaction: this is required
for android:singleUser, and allows you to use
sendBroadcastAsUser() but only to send to your own

Change-Id: I0de88f6718e9505f4de72e3f45d29c0f503b76e9
fa25bf5382467b1018bd9af7f1cb30a23d7d59f7 24-Jul-2012 Jeff Brown <jeffbrown@google.com> Add display manager skeleton.

The purpose of this change is to remove direct reliance on
SurfaceFlinger for describing the size and characteristics of

This patch also starts to make a distinction between logical displays
and physical display devices. Currently, the window manager owns
the concept of a logical display whereas the new display
manager owns the concept of a physical display device.

Change-Id: I7e0761f83f033be6c06fd1041280c21500bcabc0
cba4d388201958449ca96d49a8a277ca0f47cf8d 25-Jul-2012 Irfan Sheriff <isheriff@google.com> Merge "Update WifiManager API"
88759bbd31e05a4163e1f8e72804ca83000afd53 03-Jul-2012 Irfan Sheriff <isheriff@google.com> Update WifiManager API

Use feedback based on NSD to update WifiManager API

Change-Id: I0c1dc74f7e2fa7cd697a995b7194e3e0366d7981
d32460c5b7bea7b06e345397fdbaca58d9732dcf 21-Jul-2012 Jeff Brown <jeffbrown@google.com> Refactor local window manager implementation.

The objective of this refactoring is to remove the reliance on
WindowManager wrapper objects for compatibility mode and for
managing sub-windows.

Removed the WindowManager.isHardwareAccelerated() method since
it is never used.

Change-Id: I4840a6353121859a5e0c07d5cc307a437c595d63
3a6794cad739c2b6fcc9b3fc6c4461f88728af8a 17-Jul-2012 Matthew Xie <mattx@google.com> Merge "Changes to Bluetooth Service structure."
e0fd693c6098f59004f9e96ad75c058e26c337b0 11-Jul-2012 Nick Pelly <npelly@google.com> Improve geofencing: throttle location updates with distance to fence.

Previously any geofence (proximity alert) would turn the GPS on at full rate.
Now, we modify the GPS interval with the distance to the nearest geofence.
A speed of 100m/s is assumed to calculate the next GPS update.

o Major refactor of geofencing code, to make it easier to continue to improve.
o Discard proximity alerts when an app is removed.
o Misc cleanup of nearby code. There are other upcoming changes
that make this a good time for some house-keeping.

The new geofencing heuristics are much better than before, but still
relatively naive. The next steps could be:
- Improve boundary detection
- Improve update thottling for large geofences
- Consider velocity when throttling

Change-Id: Ie6e23d2cb2b931eba5d2a2fc759543bb96e2f7d0
1abb1cb3a8fe17f7866150604c2fd73751da787e 26-Jan-2012 Jaikumar Ganesh <jaikumar@google.com> Changes to Bluetooth Service structure.

Changes to make Bluetooth Service part of the system_service.
These changes may be temporary.

Changes to update to the new disable API.

Change-Id: If89dba17e6e6c6daa53c37684221763a2da076e9


f8fd7ef97895524a0ce5735e19654549cb295cda 19-Jun-2012 Christopher Tate <ctate@google.com> Merge "Fail immediately if bindService() is passed a null ServiceConnection"
79b3317b775810bac088b0998c48eb6506e2578c 18-Jun-2012 Christopher Tate <ctate@google.com> Fail immediately if bindService() is passed a null ServiceConnection

Or if unbindService() is passed one, naturally.

Change-Id: Ib7f1f0b5e12c04e3affbcc9008612801081819d5
b58b8f832d06b0ffa8886eba5a4916578a3b8743 12-Jun-2012 Dianne Hackborn <hackbod@google.com> Rework media router to be per-context with global process state.

Change-Id: Ic1cb6f13e691d22783bcdafae85b7c75aec0a66f
6ae8d1821822296df0606c9cd1c46708cc21cb58 23-May-2012 Dianne Hackborn <hackbod@google.com> Fix (mostly) issue #5109947: Race condition between retrieving a...

...content provider and updating its oom adj

This introduces the concept of an "unstable" reference on a content
provider. When holding such a reference (and no normal stable ref),
the content provider dying will not cause the client process to be

This is used in ContentResolver.query(), .openAssetFileDescriptor(),
and .openTypedAssetFileDescriptor() to first access the provider
with an unstable reference, and if at the point of calling into the
provider we find it is dead then acquiring a new stable reference
and doing the operation again. Thus if the provider process dies
at any point until we get the result back, our own process will not
be killed and we can safely retry the operation.

Arguably there is still the potential for a race -- if somehow the
provider is killed way late by the OOM killer after the query or
open has returned -- but this should now be *extremely* unlikely.
We also continue to have the issue with the other calls, but these
are much less critical, and the same model can't be used there (we
wouldn't want to execute two insert operations for example).

The implementation of this required some significant changes to the
underlying plumbing of content providers, now keeping track of the
two different reference counts, and managing them appropriately. To
facilitate this, the activity manager now has a formal connection
object for a client reference on a content provider, which hands to
the application when opening the provider.

These changes have allowed a lot of the code to be cleaned up and
subtle issues closed. For example, when a process is crashing, we
now have a much better idea of the state of content provider clients
(olding a stable ref, unstable ref, or waiting for it to launch), so
that we can correctly handle each of these.

The client side code is also a fair amount cleaner, though in the
future there is more than should be done. In particular, the two
ProviderClientRecord and ProviderRefCount classes should be combined
into one, part of which is exposed to the ContentResolver internal
API as a reference on a content provider with methods for updating
reference counts and such. Some day we'll do that.

Change-Id: I87b10d1b67573ab899e09ca428f1b556fd669c8c
652b6d1e591f6684cda4b93d4712920f287991b4 10-May-2012 Dianne Hackborn <hackbod@google.com> Add infrastructure for accessing "unstable" content providers.

We have an API and some stuff that purports to this, but no real
implementation yet.

Change-Id: I93555440014a50fdf79fa3f65318d90fb82265b4
22af38c5261d2c03796b496e6edb125327cace16 04-May-2012 Irfan Sheriff <isheriff@google.com> API review fixes

- Remove the notion of channel from an application perspective
- Remove the use of DnsSd as part of API and add a protocol type to allow
future extensions
- Use the listener object as a handler for stop and unregister operations. Also,
we now allow multiple active discovery operations.
- Remove init/deinit operations in favour of setting up construction

Change-Id: Id15521d571aac9c4053d81184ad66dfc54f636de
816e4f758302aaf3b115b5914d48732ed78af946 23-Apr-2012 Jeff Sharkey <jsharkey@android.com> System context should inherit base package name.

Otherwise registerReceiver() from views inflated with the returned
context will throw (like DateTimeView).

Bug: 6376149
Change-Id: I038a680e49fba81bbebfc8c0c94f15e7cd072f33
25157e458d6e10b027d1ba6b78b0487156c9f57a 16-Apr-2012 Jeff Brown <jeffbrown@google.com> Refactor SensorManager to move non-API bits into a subclass.

Changed the SensorManager class so that it only contains API-related
bits including what's needed to support legacy sensors. Mostly just
moved stuff around. Making the class abstract is safe because
it does not have a visible constructor in the API.

One minor change is that the cache of sensor type to sensor lists
is now per instance of SensorManager instead of being static.
We can fix this if desired.

Another small change is that we bail out early from registerListener
if the listener has already been registered for the particular
sensor. This happened for both legacy and standard listeners.
The problem is that the ListenerDelegate maintains two lists of
sensors, one is a Map and the other is a List. Adding a sensor
twice causes one entry to be added to the Map and two entries to be
added to the List, but when the sensor is removed the next time, only
one entry is removed from the List, leaving it in an inconsistent

Removed Sensor.getLegacyType() since the value it provides is only
needed in LegacyListener and we don't really save any significant
computation by caching it. Removing the field makes support for
legacy sensors a little more self-contained.

Bug: 6339552
Change-Id: I50d41ac97cf535924f2bfa2026d28547a4d00286
c2346134bb519a54d50655cbef940fc3fdec60a9 13-Apr-2012 Jeff Brown <jeffbrown@google.com> Extract Vibrator implementation from interface.

Moved the core logic of Vibrator into SystemVibrator, potentially
allowing for the creation of other Vibrator subclasses.

Fixed several places where we were creating new Vibrator
instances unnecessarily instead of getting it from the Context.

It is safe to make Vibrator abstract because its constructor
was hidden from the SDK so it was not possible to subclass it.

Bug: 6334179
Change-Id: I18ece6544c26a7efb2d5099f8346a10aef8a5e18
9f25b7fdf216c9ef0bd2322cd223eeaf0d60f77f 10-Apr-2012 Jeff Brown <jeffbrown@google.com> Request key maps from input manager service.

Instead of each application loading the KeyCharacterMap from
the file system, get them from the input manager service as
part of the InputDevice object.

Refactored InputManager to be a proper singleton instead of
having a bunch of static methods.

InputManager now maintains a cache of all InputDevice objects
that it has loaded. Currently we never invalidate the cache
which can cause InputDevice to return stale motion ranges if
the device is reconfigured. This will be fixed in a future change.

Added a fake InputDevice with ID -1 to represent the virtual keyboard.

Change-Id: If7a695839ad0972317a5aab89e9d1e42ace28eb7
ac14351e16e1258f1cb54e2bf772b8be004eb2b8 06-Apr-2012 Jeff Brown <jeffbrown@google.com> Move some APIs from window manager to input manager.

Simplified input injection API down to just one call.

Removed all input state reading API. It was only used by the
window manager policy and required a permission that applications
could not obtain. READ_INPUT_STATE is now unused and deprecated.

Change-Id: I41278141586ddee9468cae0fb59ff0dced6cbc00
23b871d7147de910b53646cdb987e28dac0df927 06-Apr-2012 Jeff Brown <jeffbrown@google.com> Merge "Initial commit of InputManager and keyboard layout API."
9df6e7a926ce480baf70e97ee1b9ea387193f6ad 05-Apr-2012 Jeff Brown <jeffbrown@google.com> Initial commit of InputManager and keyboard layout API.

Added a new InputManager service for interacting with input
devices and configuring them. This will be the focus of
an upcoming refactoring.

Added an API for registering keyboard layouts with the system
based on the use of a broadcast receiver. Applications can
register their own keyboard layouts simply by declaring a
broadcast receiver in their manifests.

Added the skeleton of a package that will ultimately contain
the keyboard layouts and other input device related resources
that are part of the base system.

Bug: 6110399
Change-Id: Ie01b0ef4adbd5198f6f012e73964bdef3c51805c
7d024d372431effc87168afdc7cbe387680c4935 23-Mar-2012 Irfan Sheriff <isheriff@google.com> Add initial framework for DNS service discovery

Change-Id: I53c0b7ebfd75e520ebb7553612f1aa8413b6b79b
47847f3f4dcf2a0dbea0bc0e4f02528e21d37a88 23-Mar-2012 Jeff Brown <jeffbrown@google.com> Support enabling WAL using a flag when DB is opened.

Using enableWriteAheadLogging() to enable WAL is inefficient because
we previously disabled WAL mode when the database was opened.
Switching from WAL to PERSIST then back to WAL is inefficient
and could slow down application launch time. It would be better
to leave the database in WAL mode when we open it to begin with.

To do that, we need to know ahead of time whether we will want to
have WAL enabled for the newly opened database.

Using this flag also reduces the chance that we will encounter
an error enabling WAL mode due to there being other open connections
to the database.

Bug: 6124556
Change-Id: I38ec7a528baeda9f1ef77e25e88b3ca4b6296200
a4972e951bf2bdb7afdafee95b3ab0c15b8bacae 14-Mar-2012 Dianne Hackborn <hackbod@google.com> Add new "options" argument to all startActivity APIs.

This will be used to allow new features to be requested... such as,
say, a special kind of animation. Right now there are no options

Change-Id: I4eb6f27275cdd4bf186f6da316ab93a2372ad4b7
79087e4b967d8af26c488c41b8c1a087a12da84d 02-Mar-2012 Jeff Brown <jeffbrown@google.com> Add an API for deleting databases.

Add SQLiteDatabase.deleteDatabase to delete a database and all
of its auxiliary files.

This method is also used by Context.deleteDatabase and resolves issues
where auxiliary files would get left behind.

Bug: 5972489
Change-Id: I3633b9b4978972a1d240ac0a9861420ecf989149
67cf7d314b5b94db1a9f1c57140b6615b0ea8291 16-Feb-2012 Amith Yamasani <yamasani@google.com> Fix Power Control widget

Some changes in AppWidgetService were interfering with widget permissions.

Added some hidden methods in Context to communicate the requesting user
information instead of using the calling uid.

Bug: 6019296
Change-Id: I5e519fd3fbbfa5b3fcc5c297b729c671dac8e7c7
37ce3a8af6faab675319d0803b288ab1dddc76be 06-Feb-2012 Amith Yamasani <yamasani@google.com> Multi-user - wallpaper service

- Allow each user to have their own wallpaper (live or static).
- Migrate old wallpaper on upgrade.
- Update SystemBackupAgent to backup/restore from primary user's
new wallpaper directory.

Reduce dependency on Binder.getOrigCallingUser() by passing the
userId for bindService.

Change-Id: I19c8c3296d3d2efa7f28f951d4b84407489e2166
b01e8bf57b7492b77e3445db51471edcbadda75e 30-Aug-2011 Mike Lockwood <lockwood@android.com> New Serial Manager API:

SerialManager: provides access to serial ports
SerialPort: for reading and writing data to and from serial ports

IO with both array based and direct ByteBuffers is supported.

Accessing serial ports requires android.permission.SERIAL_PORT permission

Each platform must configure list of supported serial ports in the
config_serialPorts resource overlay
(this is needed to prevent apps from accidentally accessing the bluetooth
or other system UARTs).

In addition, the platform uevent.rc file must set the owner to the
/dev/tty* files to "system" so the framework can access the port.

Signed-off-by: Mike Lockwood <lockwood@android.com>
742a67127366c376fdf188ff99ba30b27d3bf90c 04-May-2011 Amith Yamasani <yamasani@google.com> Multi-user - 1st major checkin

Switching activity stacks
Cache ContentProvider per user
Long-press power to switch users (on phone)

Added ServiceMap for separating services by user
Launch PendingIntents on the correct user's uid
Fix task switching from Recents list
AppWidgetService is mostly working.

Commands added to pm and am to allow creating and switching profiles.

Change-Id: I15810e8cfbe50a04bd3323a7ef5a8ff4230870ed
9ecebbfbf768fd63e9a6c9a09c86d81c7737ee2d 29-Sep-2011 Dianne Hackborn <hackbod@google.com> Add mechanism for Parcel to not allow FDs to be written to it.

This is to help implement issue #5224703.

Change-Id: I026a5890495537d15b57fe61227a640aac806d46
6e90a362bc66cc67b1beae27b21d3f0148403b08 15-Aug-2011 Adam Powell <adamp@google.com> Fix bug 5159736 - Make DeviceDefault the default

Have the framework refer to the DeviceDefault themes for ICS apps that
don't explicitly request another theme.

Change-Id: I27dd0bbaa60f71df4f36e47d260f556d923ba075
c68c913d357e2955d4bd7ca52829071e531c7825 29-Jul-2011 Dianne Hackborn <hackbod@google.com> Various work on out of memory managment.

- Improve how we handle processes that have shown UI, to take care
of more cases where we want to push them into the background LRU
- New trim memory level for when an application that has done UI
is no longer visible to the user.
- Add APIs to get new trim memory callback.
- Add a host of new bind flags to tweak how the system will adjust
the OOM level of the target process.

Change-Id: I23ba354112f411a9f8773a67426b4dff85fa2439
55bc5f3e0408bcb5a39a6732de0b2d1aa99a55be 24-Jun-2011 repo sync <isheriff@google.com> Updated: Wi-Fi p2p framework

First stage. Get the bones in right now even though
we are not ready on the native side.

Once, we have things underneath working - we will further update the

Change-Id: I4a7dab5cd4267373dc5f8989ae4122f91c384ed5
988323c57bd25a58f05dfa492d9b9c8ab62c5153 22-Jun-2011 satok <satok@google.com> Create TextServiceManager and SpellCheckerService

Bug: 4176026

This CL inherits https://android-git.corp.google.com/g/112600

Spec of TextServiceManager
- Chooses the most applicable TextService(e.g. SpellCheckerService, WordBreakIteratorService..)
for each locale

Spec of SpellCheckerService
- Returns whether the given string is a correct word or not
- Returns Suggestions for the given string

Change-Id: Iaa425c7915fe70767ad0b17bf6c6fbcd2a1200b2
10e89712863f5b91a2982dc1783fbdfe39c1485d 09-Jul-2011 Jeff Brown <jeffbrown@google.com> Eliminate single-process mode.
Bug: 5010576

Change-Id: Id450dc83efed4897d1e4ff451530fed14457aace
6c418d585e0a91054b168fde3130188afd006c98 29-Jun-2011 Dianne Hackborn <hackbod@google.com> Fix issue #4902856: Don't let apps register non-explicit PendingIntents

Location manager now checks for such intents, and logs a warning when
they are given to it. Nothing thrown yet, it needs to check the
targetSdkVersion of the caller somehow.

When sending the pending intent, we require that the recipient hold the
appropriate permission. This should pretty much close the security hole.

Includes a bunch of infrastructure in the activity manager needed to
support all this.

Change-Id: I4dba7a98a7b8bbb9e347666451aa9cb1efad1848
8969d9924c662ab4cdacc342bbdc33756db730be 22-Jun-2011 satok <satok@google.com> Revert "Create TextServiceManager and SpellCheckerService"

This reverts commit eaddb894865a804279659b4aad6364a34ab50beb.
eaddb894865a804279659b4aad6364a34ab50beb 01-Jun-2011 satok <satok@google.com> Create TextServiceManager and SpellCheckerService

Bug: 4176026

Spec of TextServiceManager
- Chooses the most applicable TextService(e.g. SpellCheckerService, WordBreakIteratorService..)
for each locale

Spec of SpellCheckerService
- Returns whether the given string is a correct word or not
- Returns Suggestions for the given string

Change-Id: Ia25e7b4f308778891929e31b8cbd741f6848cce4
1a303953589fdddf21d88b8fa660136f5b060d0d 16-Jun-2011 Jeff Sharkey <jsharkey@android.com> DownloadManager flags for network policy.

Handful of DownloadManager flags to record when a download was paused
because of NetworkPolicyManager rules.

Change-Id: I99fc47f529cb6c8a42dbeca049e0cd0f1556eac4
5fd2169eabd77e6bfafaf456e58051a3bafb2bca 07-Jun-2011 Dianne Hackborn <hackbod@google.com> Work on issue #4518815: Compatibility mode introduces compatibility regression...

...for Market App iRunner

There were a lot of serious issues with how we updated (or often didn't update)
the display and resource state when switching compatibility mode in conjunction
with restarting and updating application components. This addresses everything
I could find.

Unfortunately it does *not* fix this particular app. I am starting to think this
is just an issue in the app. This change does fix a number of other problems
I could repro, such as switching the compatibility mode of an IME.

Also a few changes here and there to get rid of $#*&^!! debug logs.

Change-Id: Ib15572eac9ec93b4b9966ddcbbc830ce9dec1317
81e56d535c853d73ff537357da5b935f51cb779d 26-May-2011 Dianne Hackborn <hackbod@google.com> Rework how we decide whether to use system or status bar.

The PhoneWindowManager is now responsible for determing this,
since it needs to do this before we can generate the configuration
since we need to take into account the system bar size we will use.

Also the Display should now report the screen height without
including the system bar.

Change-Id: I82dfcc5e327e4d13d82c373c6c870f557a99b757
5be8de3420ba4c9d816b98e29bdec11715f6b626 25-May-2011 Dianne Hackborn <hackbod@google.com> More compatibility mode improvements.

We now correctly adjust display metrics, fixing for example issues
seen in Barcode Scanner. In addition the decision about when to use
compatibility mode has a bug fixed where certain apps would not go
out of compatibility mode even though they should be able to.

Change-Id: I5971206323df0f11ce653d1c790c700f457f0582
e2515eebf42c763c0a2d9f873a153711778cfc17 28-Apr-2011 Dianne Hackborn <hackbod@google.com> Better compat mode part one: start scaling windows.

First step of improving app screen size compatibility mode. When
running in compat mode, an application's windows are scaled up on
the screen rather than being small with 1:1 pixels.

Currently we scale the application to fill the entire screen, so
don't use an even pixel scaling. Though this may have some
negative impact on the appearance (it looks okay to me), it has a
big benefit of allowing us to now treat these apps as normal
full-screens apps and do the normal transition animations as you
move in and out and around in them.

This introduces fun stuff in the input system to take care of
modifying pointer coordinates to account for the app window
surface scaling. The input dispatcher is told about the scale
that is being applied to each window and, when there is one,
adjusts pointer events appropriately as they are being sent
to the transport.

Also modified is CompatibilityInfo, which has been greatly
simplified to not be so insane and incomprehendible. It is
now simple -- when constructed it determines if the given app
is compatible with the current screen size and density, and
that is that.

There are new APIs on ActivityManagerService to put applications
that we would traditionally consider compatible with larger screens
in compatibility mode. This is the start of a facility to have
a UI affordance for a user to switch apps in and out of

To test switching of modes, there is a new variation of the "am"
command to do this: am screen-compat [on|off] [package]

This mode switching has the fundamentals of restarting activities
when it is changed, though the state still needs to be persisted
and the overall mode switch cleaned up.

For the few small apps I have tested, things mostly seem to be
working well. I know of one problem with the text selection
handles being drawn at the wrong position because at some point
the window offset is being scaled incorrectly. There are
probably other similar issues around the interaction between
two windows because the different window coordinate spaces are
done in a hacky way instead of being formally integrated into
the window manager layout process.

Change-Id: Ie038e3746b448135117bd860859d74e360938557
3a68b8338b431eb15d28e92f06452efbbda9493e 08-Mar-2011 Mike Lockwood <lockwood@android.com> USB: Add API and dialog for apps to request permissions for USB devices and accessories

New APIs:

UsbManager.hasPermission returns true if the caller has permission
for the given device or accessory

UsbManager.requestPermission poses a dialog to allow the user to give the caller
permission for the device or accessory.
Result is returned via a PendingIntent.
No dialog is displayed if the caller already has permission.

Also moved UsbResolverActivity to SystemUI package

BUG: 4069037

Change-Id: I93be769501a8776b49ac26e468af19f8fa2114c9
c4308f01c965571dc2354107c3574df113e397ee 01-Mar-2011 Mike Lockwood <lockwood@android.com> Move USB framework support from android.hardware to android.hardware.usb package

Change-Id: I00fd4f0caaa4aebe48f71c576bb211b5f38bf88d
Signed-off-by: Mike Lockwood <lockwood@android.com>
e7d511e148bc901ef41ac44d7b3593e5d803f72f 30-Dec-2010 Mike Lockwood <lockwood@android.com> New APIs for USB host support:

- is now a service retrievable via Context.getSystemService(Context.USB_SERVICE).
- provides support for returning a list all connected USB devices
are added and removed from the USB host bus

- represents an attached USB device.

- represents an interface on a USB device
- devices may have multiple interfaces if they provide multiple
sets of functionality (for example, android phones typically have interfaces
for both USB mass storage and adb)

- represents an endpoint on a USB interface
- endpoints are used for sending or receiving data
(only in one or the other direction)

- encapsulates a send or receive request to be sent over an endpoint

Change-Id: Ieef3e434c62760770ea839070cf5eba1a705967a
Signed-off-by: Mike Lockwood <lockwood@android.com>
805fd7ee0e5dc2939e85c84f78d9890a51982bc0 17-Jan-2011 Dianne Hackborn <hackbod@google.com> Add API to get path to OBBs.

Also hide the bitmap thumbnail stuff, we can't support it in its
current form.

And fix some bugs with propagating paths to native code. Yikes!

Change-Id: I13ab37ddbdba5c073489cba5eab035117d3c1574
d922ae01ca99a2b6d39a9393f86776a1d10ebd14 14-Jan-2011 Dianne Hackborn <hackbod@google.com> Add Holo theme for IMEs.

Also clean up theme selection code to get rid of duplication.

Change-Id: Idf7b21db70ee83fce24756ead877169bd08b77a9
247fe74c934cb3fba85aae7e051a8044f460fb11 09-Jan-2011 Dianne Hackborn <hackbod@google.com> Implement issue # 3255887 could CursorLoader offer...

...to throttle contentobserver-based requeries

Why yes, I guess it could.

This also reworks AsyncTaskLoader to not generate multiple
concurrent tasks if it is getting change notifications before
the last background task is complete.

And removes some of the old APIs that had been deprecated but
need to be gone for final release.

And fixes a few little problems with applying the wrong theme
in system code.

Change-Id: Ic7a665b666d0fb9d348e5f23595532191065884f
4e920f70f38d52d3a74c6a3133388a2e2cb6c175 14-Dec-2010 Brad Fitzpatrick <bradfitz@android.com> Add MODE_MULTI_PROCESS flag to Context.getSharedPreferences()

Also, changes to make this testable with CTS:

-- special PENALTY_DEATH StrictMode fast path that doesn't use
the Looper idling to "time" the violation. Only used when
death is the only violation,

-- make PENALTY_DEATH throw a RuntimeException instead of
killing its process with a signal. this means we can catch
it in CTS tests, but it's also more consistent with

-- make FileUtils.getFileStatus() invoke StrictMode, which isn't
(yet?) aware of I/O in native code. so help it out.

CTS test for MODE_MULTI_PROCESS is in I6154edab

Change-Id: Icf93f9dfb0ece06b16781e4803dd2c17df3cf1b3
d250746716305717d7cde64032d2d25cda14e6c9 13-Dec-2010 Nick Pelly <npelly@google.com> resolved conflicts for merge of 1d0d1188 to master

Change-Id: I80413d5a54a0284ab6f685c4c6197a2c009ea717
1d0d1188d71ed086b3910cfe1d244fdeee47f182 11-Dec-2010 Nick Pelly <npelly@google.com> am ae56a851: Merge "Make getSystemService(NFC_SERVICE) the NFC entry point." into gingerbread

* commit 'ae56a851624c2b2e78da8a2c339d2caa64c4f981':
Make getSystemService(NFC_SERVICE) the NFC entry point.
50b4d8f643f31b37e9872f562fb869059cf79c8a 08-Dec-2010 Nick Pelly <npelly@google.com> Make getSystemService(NFC_SERVICE) the NFC entry point.

This gives NFC service a handle to the application context.

Deprecate NfcAdapter.getDefaultAdapter(), it does not provide a context.
Using this method will print a warning, and will later throw an exception
if a method that requires a context is called. No 2.3 API's will fail, but
new API's that do require a context might fail.

Also add helper NfcAdapter.getDefaultAdapter(Context).

Change-Id: I9a6378de4ef4b61ad922f8d53e64e2a1a1d5d60c
4cd50b8d76e08d75df1a2e9d4902bcdc880bd1c1 02-Dec-2010 Brad Fitzpatrick <bradfitz@android.com> Make getSharedPreference() async, blocking on first access.

Bug: 3177046
Change-Id: Ibc36a1e196afd39c4f9da513a2bf4ba9e2c72177
7e5cd7968356ea111988a372095e352d76476994 01-Dec-2010 Brad Fitzpatrick <bradfitz@android.com> am 981a72a1: Merge "[don\'t auto-merge] Don\'t re-read SharedPreferences unnecessarily." into gingerbread

* commit '981a72a1506f7e6e42747b9aa0be2001795c6619':
[don't auto-merge] Don't re-read SharedPreferences unnecessarily.
d2bbaaf2948c362e82aa9f1c8e02a6092235c021 30-Nov-2010 Brad Fitzpatrick <bradfitz@android.com> [don't auto-merge] Don't re-read SharedPreferences unnecessarily.

Bug: 3211034
Bug: 3216290
Change-Id: Idd5cc25965d400f20122372ca1cf47d4703dd87c
621e17de87f18003aba2dedb719a2941020a7902 23-Nov-2010 Dianne Hackborn <hackbod@google.com> Implement issue #3221502: New APIs to support new back stack / task navigation

What this adds:

- A new Intent activity flag to completely replace an existing task.
- A new Intent activity flag to bring the current home task up behind
a new task being started/brought to the foreground.
- New versions of startActivity() that take an array of Intents to be
started, allowing applications to start a task in a specific state.
- A public moveTaskToFront() method on ActivityManager, with a new flag
that allows the caller to have the task moved to the front with the
current home task immediately behind it.

Change-Id: Ie8028d09acffb5349d98043c67676daba09f75c8
5913630ec9686f4640a90b6872318e11fb5d9120 20-Nov-2010 Brad Fitzpatrick <bradfitz@android.com> Don't re-read SharedPreferences unnecessarily.

Previously reads were only cached once a write occurred because
loading didn't set the stat metadata, thus the
sp.hasFileChangedUnexpectedly() check always fired on reading.

Now the initial read populates the stat info, so getSharedPreference()
repeatedly bypasses reading from disk, even wtihout writes.

This was probably a regression from apply() being added in

Bug: 3211034
Change-Id: Ifa0bbb27c53a4099544950a4f822fab1fc23a47d
224ba0cd065075718947844b117c9fe50a2d9993 12-Nov-2010 Brad Fitzpatrick <bradfitz@android.com> Clean up, de-dup, and speed up ContextImpl getSystemService()

Bug: 3191436
Change-Id: I343adc016e02d0414b2d48a14e5e62a5cccb7899
390dae1a8b8c2da6a24f3246c8c277645bcc75dc 10-Nov-2010 Brad Fitzpatrick <bradfitz@android.com> Move ApplicationPackageManager out of ContextImpl.java

Change-Id: I706bce3fc4a5c7e6ee351d677899a01ac222960c
d3da44032084b6dd280487280553dcdbd7933e3e 10-Nov-2010 Brad Fitzpatrick <bradfitz@android.com> Move SharedPreferencesImpl out of ContextImpl.java

Change-Id: I3a58ec4c9501e906c133e841b5c5ec6bced04a02
ec062f63a2f5fb49f825544da348e594dbf5bf3c 03-Nov-2010 Brad Fitzpatrick <bradfitz@android.com> StrictMode: now in more system server threads.

Who knew there were so many Loopers in the system server?

This adds dropbox logging for the activity manager thread, policy
thread, and window manager thread.

The goal's to catch more stuttering.

Change-Id: I999a6ff4a955f0ef549b12a38796b843ade5fe66
170e548ac839b268beee208e95fc497b34fde1ba 29-Oct-2010 Joe Onorato <joeo@google.com> use the holo theme in more places for >= honeycomb apps

Change-Id: Iad2bd65eaf203df458ea689144538b7a51beb4b3
875ecaa511ce36c8044ccdf48ee2a3e69dd633fe 18-Oct-2010 Dianne Hackborn <hackbod@google.com> am 13e46665: am 736f5ec4: Merge "Work on issue #3101415: Crespo apps seem to have their UID changed over time." into gingerbread

Merge commit '13e46665ff69c1a37880762d7d611aacdf02dac7'

* commit '13e46665ff69c1a37880762d7d611aacdf02dac7':
Work on issue #3101415: Crespo apps seem to have their UID changed over time.
13e46665ff69c1a37880762d7d611aacdf02dac7 16-Oct-2010 Dianne Hackborn <hackbod@google.com> am 736f5ec4: Merge "Work on issue #3101415: Crespo apps seem to have their UID changed over time." into gingerbread

Merge commit '736f5ec476526f3431d81dec5fb695bdee27e21a' into gingerbread-plus-aosp

* commit '736f5ec476526f3431d81dec5fb695bdee27e21a':
Work on issue #3101415: Crespo apps seem to have their UID changed over time.
8bdf5935c0db4a66ab33a10b43398d2523cfa15d 15-Oct-2010 Dianne Hackborn <hackbod@google.com> Work on issue #3101415: Crespo apps seem to have their UID changed over time.


Change-Id: Ie6c5397202579935ac69bf61d3e7b3081ecf269c
f36c6db108364dea89b1e3c27c0b15103e560d87 15-Oct-2010 Nick Pelly <npelly@google.com> NFC API revision round 2.

- Add the second half of the new NFC API: NfcAdapter, Tag, NdefTag,
RawTagConnection, NdefTagConnection.
- Add implementations for all of the new NFC API.

Change-Id: I8da9fd1d2971ed2c8b76f2a93f207fa9e305b0f6
Signed-off-by: Nick Pelly <npelly@google.com>


6066da89a464d2bd5f002f5e687d40876ed5ce21 13-Oct-2010 Nick Pelly <npelly@google.com> am 590b73bc: NFC API revision round 2.

Merge commit '590b73bc5b8e5f7b59bff1d9264a52388a5162e6' into gingerbread-plus-aosp

* commit '590b73bc5b8e5f7b59bff1d9264a52388a5162e6':
NFC API revision round 2.
590b73bc5b8e5f7b59bff1d9264a52388a5162e6 12-Oct-2010 Nick Pelly <npelly@google.com> NFC API revision round 2.

- Add the second half of the new NFC API: NfcAdapter, Tag, NdefTag,
RawTagConnection, NdefTagConnection.
- Add implementations for all of the new NFC API.

Change-Id: I8da9fd1d2971ed2c8b76f2a93f207fa9e305b0f6
Signed-off-by: Nick Pelly <npelly@google.com>
764437aa9e9af4990969ea5124115f3df7fb1ec1 11-Oct-2010 Brad Fitzpatrick <bradfitz@android.com> am 4216c3c3: am a4682ed7: Merge "Minor SharedPreference clean-up." into gingerbread

Merge commit '4216c3c3f75c6bd7ffa9a9279961f9ea6aa57635'

* commit '4216c3c3f75c6bd7ffa9a9279961f9ea6aa57635':
Minor SharedPreference clean-up.
38051bc01878286afd6d163079dca20600c24d01 10-Oct-2010 Brad Fitzpatrick <bradfitz@android.com> am 6a15f0d7: am 6275dbbe: Merge "Quiet unnecessary debug logging." into gingerbread

Merge commit '6a15f0d7c7ed74e086f4d3a7014ed724a2b18023'

* commit '6a15f0d7c7ed74e086f4d3a7014ed724a2b18023':
Quiet unnecessary debug logging.
4216c3c3f75c6bd7ffa9a9279961f9ea6aa57635 09-Oct-2010 Brad Fitzpatrick <bradfitz@android.com> am a4682ed7: Merge "Minor SharedPreference clean-up." into gingerbread

Merge commit 'a4682ed7547e895605d102ab17fc5c134b4ab38f' into gingerbread-plus-aosp

* commit 'a4682ed7547e895605d102ab17fc5c134b4ab38f':
Minor SharedPreference clean-up.
9acdeb99c5102f89a9a73eb4d62e38e7ac86e01c 09-Oct-2010 Brad Fitzpatrick <bradfitz@android.com> Minor SharedPreference clean-up.

Make a member final, line up some comments, and also cache the
expected stat size, not just the mtime.

Change-Id: Ifcc37bd3ab99787280e506deb682200a16da512e
6a15f0d7c7ed74e086f4d3a7014ed724a2b18023 07-Oct-2010 Brad Fitzpatrick <bradfitz@android.com> am 6275dbbe: Merge "Quiet unnecessary debug logging." into gingerbread

Merge commit '6275dbbea8ad7bde984a362516654004e111dc67' into gingerbread-plus-aosp

* commit '6275dbbea8ad7bde984a362516654004e111dc67':
Quiet unnecessary debug logging.
90bc5ee02bd91c138f88180879c6ef748a578f47 07-Oct-2010 Brad Fitzpatrick <bradfitz@android.com> Quiet unnecessary debug logging.

Change-Id: I46d8aff5790db371d60b2066acbbdd55cfad8074
4715bd91f5949a1919156a5a5cb50f0cccda645e 29-Sep-2010 Nick Pelly <npelly@google.com> resolved conflicts for merge of f4c3b7e9 to master

Change-Id: Idcdc521144f3072058b2bb6cb383e42c852e64f4
f4c3b7e916b417fabb468ec0a565dc79cd7ba2b3 29-Sep-2010 Nick Pelly <npelly@google.com> am 038cabe0: NFC integration

Merge commit '038cabe0247ee46df62f9363f1a303bc5b9c1028' into gingerbread-plus-aosp

* commit '038cabe0247ee46df62f9363f1a303bc5b9c1028':
NFC integration
038cabe0247ee46df62f9363f1a303bc5b9c1028 24-Sep-2010 Nick Pelly <npelly@google.com> NFC integration

Source: Trusted_NFC_Device_Host_AA03.01e02_google.zip code drop (23-Sep-2010)



Change-Id: I62c92f4c79f5ee65126c97602f6bc1c15794e573
Signed-off-by: Nick Pelly <npelly@google.com>
d58429f9acdb33f05bdb233b7bba495de80cb336 28-Sep-2010 Steve Howard <showard@google.com> Manual merge: Move DownloadManager to android.app

Changing package at hackbod's request.

Change-Id: I867017b6a9f4684d30c6c5bd1b07f9cabecddb9f
9d9719c44ad05834b48542ea0fc4edbb4f59c311 28-Sep-2010 Steve Howard <showard@google.com> am 5bdb89d7: Merge "Move DownloadManager to android.app (DO NOT MERGE)" into gingerbread

Merge commit '5bdb89d7ac20d4d3e71660d7fe78002a63900399' into gingerbread-plus-aosp

* commit '5bdb89d7ac20d4d3e71660d7fe78002a63900399':
Move DownloadManager to android.app (DO NOT MERGE)
cca1f0e3476edd09cdd81b075a6b7780a2959b46 27-Sep-2010 Dianne Hackborn <hackbod@google.com> Allow all apps to call ContentResolver.getType().

I can't find the bug number for this, but it is needed for some things
we are doing where the app building an intent may not have access to the
URI in the data field. This is for HC, but doing in GB to avoid introducing
integration issues.

Change-Id: I0cac971854198b18775d2a73deb80f23431bfbe2
31fd85f39b554e09b2e6c1c2ccf5c186859880fa 28-Sep-2010 Steve Howard <showard@google.com> Move DownloadManager to android.app (DO NOT MERGE)

Changing package at hackbod's request. I'll merge this manually, as
there's some additional master-only code that will be to be
simultaneously changed.

Change-Id: Ibb629ec1c31807fbee31e0193c6a941d04be0117
c63806d852a550d82bbe6cadff8a2139d78ed559 24-Sep-2010 Adam Powell <adamp@google.com> Holo themes and assets in progress

Change-Id: Ic10480dc1c771d0ccd10f1d4014c945480fd6c0d
a8bce7c8acb3904eb69bf21276c0ca2635c76a20 27-Sep-2010 Dianne Hackborn <hackbod@google.com> am d8691d73: Merge "Allow all apps to call ContentResolver.getType()." into gingerbread

Merge commit 'd8691d73d158acd9ffc63748126e822afd656707' into gingerbread-plus-aosp

* commit 'd8691d73d158acd9ffc63748126e822afd656707':
Allow all apps to call ContentResolver.getType().
8313fc7e94e46e5cc09f457a15a771a325b9f74f 27-Sep-2010 Dianne Hackborn <hackbod@google.com> Allow all apps to call ContentResolver.getType().

I can't find the bug number for this, but it is needed for some things
we are doing where the app building an intent may not have access to the
URI in the data field. This is for HC, but doing in GB to avoid introducing
integration issues.

Change-Id: I0cac971854198b18775d2a73deb80f23431bfbe2
0486f78ef32dfddb51c82f12be533712a35376d8 08-Sep-2010 Brad Fitzpatrick <bradfitz@android.com> am b1657b2b: resolved conflicts for merge of 64591009 to gingerbread-plus-aosp

Merge commit 'b1657b2bd6aea0c22b48e2cdd25dcc57581a3f3d'

* commit 'b1657b2bd6aea0c22b48e2cdd25dcc57581a3f3d':
Fix a race between requesting/loading/writing SharedPreferences.
b1657b2bd6aea0c22b48e2cdd25dcc57581a3f3d 08-Sep-2010 Brad Fitzpatrick <bradfitz@android.com> resolved conflicts for merge of 64591009 to gingerbread-plus-aosp

Change-Id: Id9ebca9993f97a79cb2a6c41a7566d473ccc5b7e
6194c53754e1bae2c09267ad474d4e2f376e34c0 08-Sep-2010 Brad Fitzpatrick <bradfitz@android.com> Fix a race between requesting/loading/writing SharedPreferences.

Part of the race existed before, but it was made much worse with

Corresponding CTS test is Icc6e638a6a

Change-Id: Ic5cfa467fb7f1859cb7b44d417412219c0621965
a14c8e0c67223fdc9a0746b370ae594a92530e78 04-Sep-2010 Romain Guy <romainguy@google.com> Bring back instances counts to dumpsys meminfo.

Change-Id: Idd846e137e8e87cb93551ba13751df60a8046eed
2394c164a76f6d3f8ad9f1c1517f58f72adab9d7 01-Sep-2010 Dianne Hackborn <hackbod@google.com> am ec438e14: am 361199b5: Add PackageManager API to get information about a provider component.

Merge commit 'ec438e1448ebc578ee5a4c4beb1e26292cdedd6e'

* commit 'ec438e1448ebc578ee5a4c4beb1e26292cdedd6e':
Add PackageManager API to get information about a provider component.
ec438e1448ebc578ee5a4c4beb1e26292cdedd6e 01-Sep-2010 Dianne Hackborn <hackbod@google.com> am 361199b5: Add PackageManager API to get information about a provider component.

Merge commit '361199b5e742c6635d4d7a03de6cf37b31cf442c' into gingerbread-plus-aosp

* commit '361199b5e742c6635d4d7a03de6cf37b31cf442c':
Add PackageManager API to get information about a provider component.
361199b5e742c6635d4d7a03de6cf37b31cf442c 31-Aug-2010 Dianne Hackborn <hackbod@google.com> Add PackageManager API to get information about a provider component.

Kind-of useful when all you have is a ComponentName.

Change-Id: I9a99f12daabb29e97e882e09c43ca0df70c00651
02f4f0eb4919453e8dbf40549d4ae9c05f05b8dd 31-Aug-2010 Brad Fitzpatrick <bradfitz@android.com> am 734d2707: am bb660d7e: Merge "Renaming SharedPreferences.startCommit to apply" into gingerbread

Merge commit '734d270769c609c7d3a1f2ec46e1d329d9682ab4'

* commit '734d270769c609c7d3a1f2ec46e1d329d9682ab4':
Renaming SharedPreferences$Editor.startCommit to apply
734d270769c609c7d3a1f2ec46e1d329d9682ab4 31-Aug-2010 Brad Fitzpatrick <bradfitz@android.com> am bb660d7e: Merge "Renaming SharedPreferences.startCommit to apply" into gingerbread

Merge commit 'bb660d7e1bed3a07a1804bd9641d9634bfaa4972' into gingerbread-plus-aosp

* commit 'bb660d7e1bed3a07a1804bd9641d9634bfaa4972':
Renaming SharedPreferences$Editor.startCommit to apply
66fce5068a8a3aeb28aaf713843891b286a75280 31-Aug-2010 Brad Fitzpatrick <bradfitz@android.com> Renaming SharedPreferences$Editor.startCommit to apply

Also removes the artifical restriction that only one apply() can be in
flight at once. That was old from when I thought it'd end up being
required, but wasn't.

Change-Id: I3540ea8be6e0760d6a51d218186f71655c2f3f55
7f7ce40f90cf00dc046fb9520d77d29e96b474d6 28-Aug-2010 Brad Fitzpatrick <bradfitz@android.com> resolved conflicts for merge of 28130bae to master

Change-Id: I13df8dc12092c3d2536e12216df9130d5914380a
28130baefb4fa6d1e0ff9c92337295ba74461cf7 27-Aug-2010 Brad Fitzpatrick <bradfitz@android.com> resolved conflicts for merge of 6b50986a to gingerbread-plus-aosp

Change-Id: I7c5ec7ae717e75ad242e2c1ad4537052e4eea718
333b8cba996c8ebb8ca55ebfc5cc536bdd64af94 26-Aug-2010 Brad Fitzpatrick <bradfitz@android.com> SharedPreferences$Editor.startCommit()

Adds a fire-and-forget save method (startCommit) to the
SharedPreferences.Editor, which is the way most people use it anyway.

This commit adds the implementation. The previous commit added the
interface and docs:

previous change: Idf9934b445da1fb72b79f0192218b47c0a7f5a34
git commit: edf32d01316bd3432c023f17747461b08ae36375

In addition, this change:

-- adds a generic "runPendingWorkFinishers" mechanism to
ActivityThread to wait on async operations that are still
in flight and use it for this.

-- ties runPendingWorkFinishers into Activity.onPause,
BroadcastReceiver, and Service.

-- makes sSharedPreferences keyed on name, not File, to avoid
unnnecessary allocations

-- documents and guarantees what thread
OnSharedPreferenceChangeListener callbacks run on

-- makes a few things in frameworks/base use startCommit(), notably
Preference.java (which was ignoring the return value anyway)

Change-Id: I1c8db60ad45643226fe6d246d3e513eeb7bd0ebd
4cbc4f1067503b5de62a5338478d3cad8c25bd3d 26-Aug-2010 Brad Fitzpatrick <bradfitz@android.com> am 49209cbc: am d0e6598b: Merge "Start of SharedPreferences.startCommit()" into gingerbread

Merge commit '49209cbcef37c4b20c9d0649ba284a51144b3930'

* commit '49209cbcef37c4b20c9d0649ba284a51144b3930':
Start of SharedPreferences$Editor.startCommit()
49209cbcef37c4b20c9d0649ba284a51144b3930 26-Aug-2010 Brad Fitzpatrick <bradfitz@android.com> am d0e6598b: Merge "Start of SharedPreferences.startCommit()" into gingerbread

Merge commit 'd0e6598b4a32f3000247341414449a3aa4d9f7f4' into gingerbread-plus-aosp

* commit 'd0e6598b4a32f3000247341414449a3aa4d9f7f4':
Start of SharedPreferences$Editor.startCommit()
edf32d01316bd3432c023f17747461b08ae36375 25-Aug-2010 Brad Fitzpatrick <bradfitz@android.com> Start of SharedPreferences$Editor.startCommit()

No implementation yet, just the interface.

Change-Id: Idf9934b445da1fb72b79f0192218b47c0a7f5a34
a3f641f22a1eeb64cc4daa8af635eb704e22660d 20-Aug-2010 Brad Fitzpatrick <bradfitz@android.com> am cf2c68c9: am 11709ab0: Merge "Avoid unnecessary SharedPrefences disk writes." into gingerbread

Merge commit 'cf2c68c9c21b8af62e95374312355d22ed55e586'

* commit 'cf2c68c9c21b8af62e95374312355d22ed55e586':
Avoid unnecessary SharedPrefences disk writes.
cf2c68c9c21b8af62e95374312355d22ed55e586 18-Aug-2010 Brad Fitzpatrick <bradfitz@android.com> am 11709ab0: Merge "Avoid unnecessary SharedPrefences disk writes." into gingerbread

Merge commit '11709ab07ca2eb97dfa3fc7bb3e0996e65908ade' into gingerbread-plus-aosp

* commit '11709ab07ca2eb97dfa3fc7bb3e0996e65908ade':
Avoid unnecessary SharedPrefences disk writes.
67fed01522ad26c850b20d2c960e4d392dc401d1 17-Aug-2010 Brad Fitzpatrick <bradfitz@android.com> Avoid unnecessary SharedPrefences disk writes.

Apps commonly edit + commit redundant changes to their
SharedPreferences, not checking the existing values. Rather than
force all apps to double-check that their settings writes aren't
redundant, we should just make .commit() faster (avoiding the disk
write) when the file already exists on disk and no effective changes
were made.

Change-Id: I7edbd0d3ace5b69b7af6d12c39797c8b7f86230b
9f53119b72e6da865bcd53173d3dacd1eba01aee 05-Aug-2010 Dianne Hackborn <hackbod@google.com> First pass at a new clipboard API.

ClipboardManager was in android.text(!!) so it needed to be moved
up to android.content to have access to the richer data types we
now need.

ClippedData is the data representation. Still needs a lot of
fleshing out to allow holding more than one data type at a time
and perhaps conversions between them. (MIME-oriented interrogation
and conversion will be done through ContentProvider, which needs
to grow an ability to report multiple MIME types and accept a
desired MIME type when a stream is being opened.)

Change-Id: Ifa51bedcd084a677813b255d171804e8496b0cb5
a58a8751b4c2ce457f0082a0baaee61312d56195 13-Jul-2010 Bai Tao <michaelbai@google.com> Add new system service CountryDetector

a. The CountryDetector detects the country the user is in
in order of mobile network, location, sim card or locale.
It will be used by contact and contact provider.

b. All added APIs are hidden at this stage.

Change-Id: I4ba278571ffb6ab6ded0996d4f440a18534f8ed4
a265083890cf67b35e432506e81fb90e7cf2bff8 22-Jul-2010 Steve Howard <showard@google.com> am 5e43c5a6: am b8e07a51: DL manager support for broadcasts + connectivity control

Merge commit '5e43c5a6e8f94134850c7e3bc4c7f657e1579746'

* commit '5e43c5a6e8f94134850c7e3bc4c7f657e1579746':
DL manager support for broadcasts + connectivity control
5e43c5a6e8f94134850c7e3bc4c7f657e1579746 22-Jul-2010 Steve Howard <showard@google.com> am b8e07a51: DL manager support for broadcasts + connectivity control

Merge commit 'b8e07a51c1849d6894c5773a3daacedd01294218' into gingerbread-plus-aosp

* commit 'b8e07a51c1849d6894c5773a3daacedd01294218':
DL manager support for broadcasts + connectivity control
b8e07a51c1849d6894c5773a3daacedd01294218 21-Jul-2010 Steve Howard <showard@google.com> DL manager support for broadcasts + connectivity control

* Additions to DownloadManager to support control of broadcast intents, allowed network types, and roaming control. This includes new constants and added implementation.
* New DB columns to hold connectivity flags and one to indicate whether the download was initiated through the public API; this is used to change behavior related to broadcast intents and connectivity controls.

Change-Id: I2e8e4ce92cde7889a0f24dc43b86c596c73c0eaa
a51eb0bb2fd9505a943a62f5f6b501fcb23b72bd 15-Jul-2010 The Android Open Source Project <initial-contribution@android.com> am 50576fa8: merge from open-source master

Merge commit '50576fa8152557a25e1a231c66d694fffbab34d6'

* commit '50576fa8152557a25e1a231c66d694fffbab34d6':
Start app with several activities with intent filter [Main, Launcher] was broken
50576fa8152557a25e1a231c66d694fffbab34d6 15-Jul-2010 The Android Open Source Project <initial-contribution@android.com> merge from open-source master

Change-Id: I20cf00dba6908eeee12645e6878db7becdc2a5f9
df4cfa3664e06132c2e2cc26cade06a881f5e529 31-Mar-2010 Johan Erlandsson <johan.erlandsson@sonyericsson.com> Start app with several activities with intent filter [Main, Launcher] was broken

When an application have more than one activities with intent filter
[Main, Launcher], then the intent with ResolverActivity wasn't created correct.

Change-Id: I2617122e07c35284862d2e0643888966ec0f7221
4c14a0f13fb9f5d796b505991e0178b60efbaccf 13-Jul-2010 Steve Howard <showard@google.com> am 47b46648: am b8d890eb: Merge "Initial implementation of the download manager public API." into gingerbread

Merge commit '47b46648b5a9b8c518b96db37618fc49c5e5f2d1'

* commit '47b46648b5a9b8c518b96db37618fc49c5e5f2d1':
Initial implementation of the download manager public API.
47b46648b5a9b8c518b96db37618fc49c5e5f2d1 13-Jul-2010 Steve Howard <showard@google.com> am b8d890eb: Merge "Initial implementation of the download manager public API." into gingerbread

Merge commit 'b8d890ebc1923d98d19d24f396442c91eb766b16' into gingerbread-plus-aosp

* commit 'b8d890ebc1923d98d19d24f396442c91eb766b16':
Initial implementation of the download manager public API.
a2709360665f77ed8bebccb2df86f08e8c83a701 03-Jul-2010 Steve Howard <showard@google.com> Initial implementation of the download manager public API.

The implementation is in android.net.DownloadManager, which is
obtained through Context.getSystemService(). Right now this class
acts as a simple wrapper on top of the existing DownloadProvider,
exposing a simple interface to a subset of DownloadProvider's
functionality. There are several TODOs for features that require
changes to the underlying download manager implementation.

Change-Id: I2f26e51b60b6e82af8478ac7ccd895667df095b6
b92cd4fc63597a4d90ba88a5e45d3783532d6734 10-Jul-2010 The Android Open Source Project <initial-contribution@android.com> am 0260887c: merge from open-source master

Merge commit '0260887ca78330b8dd7009d91859925df94a69d6'

* commit '0260887ca78330b8dd7009d91859925df94a69d6':
Improved logging when there's an error creating the directories in getFilesDir()
0260887ca78330b8dd7009d91859925df94a69d6 10-Jul-2010 The Android Open Source Project <initial-contribution@android.com> merge from open-source master

Change-Id: Ia0dff818a574c8bc79aa79d65fd21bab9f9f6c30
511d9ec363c5bb460e4695de56edc1b7785dc7bf 09-Jul-2010 Kenny Root <kroot@google.com> am 0a21801f: am a5402dab: Merge "OBB API for PackageManager" into gingerbread

Merge commit '0a21801f5fae22cd5e1b3e9f1c1405c744e24c9b'

* commit '0a21801f5fae22cd5e1b3e9f1c1405c744e24c9b':
OBB API for PackageManager
93565c4b3265c16aee4a82d7556f811776c17db8 19-Jun-2010 Kenny Root <kroot@google.com> OBB API for PackageManager

Simple API for tracking .obb files associated with packages. Stores the
path in the PackageSettings. No verification of file content is done
now since the PackageManagerService can't read the SD card where these
files will likely live.

Change-Id: Ibeaf26ba0526b6d60f401137e58f46ee9faff39e
5f5acca334bbff89b3801d2970d64b06e36614ba 25-Jun-2010 Christian Mehlmauer <FireFart@gmail.com> Improved logging when there's an error creating the directories in getFilesDir()

Improved logging when there's an error creating the
directories in getFilesDir();

Due to mkdirs() only returns false on errors,
it's better to output the directory path so the dev
knows the path that can not be created
See also Issue 8886

Change-Id: I44d6adc8508ef9ca57f000b5d7bceeb0cfa3ed13
36e5f667bc889a7b1bc17f9a5bd44f33b2d47020 25-Jun-2010 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of 2eb12a47 to master

Change-Id: I79eb9d9f083e51ec1b99145d81632683669e7a99
01e4cfc47d0a2c7e7ab383d2fb23224ec52c0301 25-Jun-2010 Dianne Hackborn <hackbod@google.com> Some ActivityThread/ActivityManager cleanup.

- Move PackageInfo out of ActivityThread, renaming to LoadedApk.
- Rename some of the other PacakgeInfo inner classes to better
represent what they are.
- Rename HistoryRecord to ActivityRecord.
- Introduce AppGlobals, to eventually let ActivityThread become
package scoped.

Change-Id: Ib714c54ceb3cdbb525dce3db9505f31042e88cf0
b60c941811cc15ab34fcc2f038aba56f862659b8 11-Jun-2010 Brad Fitzpatrick <bradfitz@android.com> resolved conflicts for merge of f37cbe6b to master

Change-Id: I529b17e55b9668f900f685f92e9831e14a82db05
438d0595121a7a2cdf19741e76e3c0e21a5c173d 10-Jun-2010 Brad Fitzpatrick <bradfitz@android.com> Introduce "StrictMode"

This is a new public API for developers to opt-in to strict rules
about what they're allowed to do on certain threads. (this is the
public face of the @hide dalvik.system.BlockGuard, added recently...)

In practice this will be used for developers to opt-in to declaring
that they don't want to be allowed to do various operations (such as
disk I/O or network operations) on their main UI threads. (these
operations are often accidental, or even when they are fast come with
a good chance of being slow or very slow in some cases....)

Implementation wise, this is just a thread-local integer that has a
bitmask of the things that aren't allowed, and more bits for saying
what the violation penalty is. The penalties, of which multiple can
be chosen, include:

* logging
* dropbox uploading for analysis/reporting
* annoying dialog
* full-on crashing

These are all only very roughly implemented at this point, but all
parts now minimally work end-to-end now, so this is a good checkpoint
commit before this gets too large.

Future CLs will polish all the above 4 penalties, including
checksumming of stacktraces and minimizing penalties for duplicate

Change-Id: Icbe61a2e950119519e7364030b10c3c28d243abe
74f170f9468d3cf6d7d0ef453320141a3e63571b 02-Jun-2010 Vasu Nori <vnori@google.com> new API in Context. on openDatabase, new param DatabaseErrorHandler

add new method openOrCreateDatabase in Context.java to allow
callers specify a DatabaseErrorHandler object to be used when
database corruption occurs.
add new constructor in SQLiteOpenHelper to accept DatabaseErrorHandler
as an additional param to be used when SQLiteDatabase instance is

Change-Id: I912a0202a74510f9ca0206dd8101c4abab9102ae
6e8304e57ec533e257a2496183125f257be1ff60 14-May-2010 Dianne Hackborn <hackbod@google.com> More fragment stuff:

- New startActivityForResult() API.
- Fragments now should have the correct lifecycle while hanging around
in the back stack (not being destroyed and re-created).
- Rework of state save/restore to make it simpler and better. In theory
now any fragment (including layout and others in the hierarchy) can
now be retained across config changes, though this hasn't been tested.

Change-Id: I2a7fe560e14e567f5675a2f172a23fca67b3e97f
67eb751e526539a7252a6d97173ed2c376fe3888 05-May-2010 Dianne Hackborn <hackbod@google.com> am 9bbc5683: am d9d009d7: am 3445dae3: am 65b2561c: Merge "Fix issue #2643754: Launcher is caching widget layouts for too long" into froyo
d9d009d7212220aa9350bda153a2f9d8e4375f2b 05-May-2010 Dianne Hackborn <hackbod@google.com> am 3445dae3: am 65b2561c: Merge "Fix issue #2643754: Launcher is caching widget layouts for too long" into froyo

Merge commit '3445dae3f52fa8421e3b93496ac93c5753a43bd2' into kraken

* commit '3445dae3f52fa8421e3b93496ac93c5753a43bd2':
Fix issue #2643754: Launcher is caching widget layouts for too long
4416c3d6e4becd9ed39b89a03db0239c8225a135 05-May-2010 Dianne Hackborn <hackbod@google.com> Fix issue #2643754: Launcher is caching widget layouts for too long

With the .apk file names now changing during an update, we need
to make sure to flush all caches related to a package when the
package is removed. Otherwise we can continue to use the old
package, since its old file may still exist if we try to load it
too soon.

Change-Id: I15f08dffca3feac999dbca4f24bef12a30ca0a66
b9eab6c793959cae13399620965d44bd3a6871c3 24-Apr-2010 Adam Powell <adamp@google.com> resolved conflicts for merge of 81cd2e90 to master

Fixed public.xml value padding for kraken/master

Merge commit '81cd2e90' into manualmerge


Change-Id: I09d2c5c7e6acbf4086c0bb8756a5aaf41a646d71
81cd2e90ccdda498234384c8207afe2213714e60 22-Apr-2010 Adam Powell <adamp@google.com> Logo attribute for manifest and PackageManager methods to fetch it

Change-Id: I2c5ac44a4e2af982a616b2012901d7395013b19f
212db7d3f8ce5297f4a556234a9c0675c697f1cf 09-Apr-2010 Adam Powell <adamp@google.com> Added MultiSelectListPreference

Added set support to XmlUtils; added Set<String> functions to SharedPreferences.

MultiSelectListPreference allows multiple selection and persistence of
string preferences. Addresses bug 2575634.

Change-Id: Icd56022d444b0ce43cccf819cd7d600fdb00e88a
399cccb85749e02f6d3e12d1d2846310e7cbfdf1 14-Apr-2010 Dianne Hackborn <hackbod@google.com> Fix issue #593153: Broadcast time out when sending...


Turns out this was because the broadcast receiver for ContextImpl was
not correctly being created, so when it received an ordered broadcast
it would not tell the activity manager when it was done.

This is now fixed, along with a ton of superficial changes to debug
output to help track this down and a little cleanup of dealing with
error cases in dispatching broadcasts. Also a fix for a NPE when
dumping the broadcast state.

Finally, a little fiddling with package manager to get rid of a lot
of the noise when removing and re-adding packages on the SD card.

Change-Id: I961c14836dc613d3ea8122b6e910ef866e7fcb25
c9b6851af68bdc20c4903b16c344e9f116647219 08-Apr-2010 Irfan Sheriff <isheriff@google.com> Throttling framework addins

Add ThrottleManager in getSystemService
Add API for URL fetch

Bug: 2576057
Change-Id: Icd25c8b91ea4beea15c74e8ad7292ab48c962253
559a78753165f20d5973b958791056154baecc43 08-Apr-2010 Dianne Hackborn <hackbod@google.com> Fix issue #2549955: Moving the application fails -Activity Manager Crash on launching the app

mResources will be null if we failed loading them because the app
is on external storage that has been unmounted.

Change-Id: If0dbbdc0c3441fa10d0ab074568361524db1c8db
07330791116513710d879c45b2f095cd314cbfd0 31-Mar-2010 Jeff Brown <jeffbrown@google.com> Show SD unavailable icon for apps on SD when ejected.

This change include a minor refactoring of PackageItemInfo and related
classes to eliminate code duplication and to avoid redundant work
searching for an ApplicationInfo instance we already have.

Bug: b/2537578
Change-Id: Id0794c3f055ea58b943028f7a84abc7dec9d0aac
d7c096845dee7616095eda0fe9e7aa08f0ba9c20 30-Mar-2010 Dianne Hackborn <hackbod@google.com> Package manager optimizations.

Issue #2550648: PackageManagerService setComponentEnabledSetting unconditionally
writes Settings xml
Issue #2549084: Make PackageManager.addPermission have async version

Also make the writing of settings when changing the preferred activities to use
the same async mechanism, and fiddle with thread priorities in the background
thread to go up to foreground priority when holding the lock to write settings
and a few other places. (At some point we should really clean this up to never
acquire the main lock while in the background.)

Change-Id: Ib2b7632543f6fb3f92a225518579f3b2d15e1413
eb9e9ec06167b0caa459f2fb3f3fae094bb8d8f7 24-Mar-2010 Christopher Tate <ctate@google.com> Return the right thing from Context.getApplicationContext()

Previously, this would always return the app context for the first application
ever instantiated in the process. Usually this is fine, since usually there
will be one process per application, but in the case of shared-process apps,
it causes activities/views to try to access the wrong set of resources, be
unable to access their proper derived-class Application objects, etc.

Fixes bug #2513901

Change-Id: Ie19f2a86583c5d927db4d84a4262077450e37539
1afd1c90ebe789b8d3a137004127a50d2db7e3b5 19-Mar-2010 Dianne Hackborn <hackbod@google.com> Maybe fix issue #2457218: Corrupt batterystats.bin file preventing phone boot - LIBtt68127

No steps to repro, but makes the code more robust by using the standard
JournaledFile class and doing sanity checks on the input it reads.

This required moving the JournaledFile class in to the framework (and
we really should get rid of either it or AtomicFile, but they have
different recovery semantics so that is tough). Also went through and
cleaned up the file management in various places.

Change-Id: Ieb7268d8435e77dff66b6e67bb63b62e5dea572e
87bba1ee14279bb14a28d42e27c4ef66d9967bf8 27-Feb-2010 Dianne Hackborn <hackbod@google.com> Move DeviceAdmin APIs to android.app.admin.

Also add ability for admins to hide themselves when not in use,
a facility for admins to not allow other admins to reset
their password, and debug dumping.
82fe564267f276151063b2aa0d26075c3210d75f 24-Feb-2010 Carl Shapiro <cshapiro@google.com> Comment out the finalize() methods defined on the Activity,
ContextImpl, View and ViewRoot classes. This allows instances of
subclasses to be collected without the additional latency of
2269d1572e5fcfb725ea55f5764d8c3280d69f6d 25-Feb-2010 Dianne Hackborn <hackbod@google.com> Re-arrange android-common so framework no longer links with it.

This is the framework part, moving classes around so the framework
no longer needs to link to android-common. Makes some APIs public,
others that didn't need to be public are private in the framework,
some small things are copied.
69fb574e294ed07404d515a66fccd046e974d32f 22-Feb-2010 Tobias Haamel <haamel@google.com> Fix missing UI_MODE_SERVICE rename.
53332883543868fb83e111a07306368b7772b340 19-Feb-2010 Tobias Haamel <haamel@google.com> Manager for controlling the UI modes.

The ui modes can be controlled with the UiModeManager class, which
is can be retrieved as a system service via getSytemService(Context.UIMODE_SERVICE).

The class is necessary so that CarHome can be unbundled and other apps can
disable the car mode. Its currently a hidden class, since I'm not sure if this
is the best way to provide this functionality to the user.
21f1bd17b2dfe361acbb28453b3f3b1a110932fa 20-Feb-2010 Dianne Hackborn <hackbod@google.com> Fix issue #2438980: Implement package watcher for voice recognizer service setting

I am getting tired of writing package monitor code, realized this is missing in
a number of places, and at this point it has gotten complicated enough that I
don't think anyone actually does it 100% right so:

Introducing PackageMonitor.

Yes there are no Java docs. I am still playing around with just what this
thing is to figure out what makes sense and how people will use it. It is
being used to fix this bug for monitoring voice recognizers (integrating the
code from the settings provider for setting an initial value), to replace
the existing code for monitoring input methods (and fix the bug where we
wouldn't remove an input method from the enabled list when it got
uninstalled), to now monitor live wallpaper package changes (now allowing
us to avoid reverting back to the default live wallpaper when the current
one is updated!), and to monitor device admin changes.

Also includes a fix so you can't uninstall an .apk that is currently enabled
as a device admin.

Also includes a fix where the default time zone was not initialized early
enough which should fix issue #2455507 (Observed Google services frame work crash).

In addition, this finally introduces a mechanism to determine if the
"force stop" button should be enabled, with convenience in PackageMonitor
for system services to handle it. All services have been updated to support
this. There is also new infrastructure for reporting battery usage as an
applicatin error report.
8946dd3355fc1dcbad872c0546e356474d4cc5de 19-Feb-2010 Suchi Amalapurapu <asuchitra@google.com> Move package from internal to external and vice versa.
5b993ce7bc29e43a3215a50ce6ce5d6550d4e5e2 12-Feb-2010 Suchi Amalapurapu <asuchitra@google.com> Include install location preference when installing packages.
Changes include
Add new remote call in default container service to determine
install location.
Remove recommentAppInstall method
Add some additional flags used in remote stubs.
Move check for protected apps prior to copy.
Unit tests

DefaultContainerService first parses the file uri(if content uri is specified
it returns a default install internal only value) and returns
a recommended location. Based on which the temporary id is determined
either a file name or a container id and the file is copied there.
This is then later renamed during install.
Todo's light weight parsing of package when determining location since we
just need the install location attribute only when finding out
recomended location. This will also enable to move the check for
updated system apps(cannot be on sdcard) prior to copying.
470969346d7958f859d97d1a136b4ecc11e2a464 12-Feb-2010 Dianne Hackborn <hackbod@google.com> Add APIs for mapping between new and current package names.

This will allow Market and others to find out what the "real" name
of a package is, when it is currently running under the old name of
a previously installed version.
117818e4f171b1fd9daa05349c48f61388f04567 09-Feb-2010 Suchi Amalapurapu <asuchitra@google.com> Add new manifest option for install location
Change recommendAppInstallLocation api
add code to parse new attribute.
Define flags in PackageInfo
Add new settings attributes for enabling setting and value for install location
Some tests
The policy for install location: if explicitly set in manifest as internal only we try to install the app only on internal storage. if set to preferExternal, we try to install it on sdcard if possible. If not we fall back to internal.
If the user enables setting SET_INSTALL_LOCATION(which will always
be set to false in final release builds) and sets a prefered location, we try
to honour it.
e83cefcef07f9ac025642c1ffec76b4c7ab39cf2 05-Feb-2010 Dianne Hackborn <hackbod@google.com> New external storage APIs.

This implements the spec for external storage organization, and
properly reflects how the media scanner organizes the files it finds.

Also includes package manager support for removing app private
files from external storage when the application is uninstalled.

For the new APIs and paths, the main place to look is Environment
and Context.
b104340496e3a531e26c8f428c808eca0e039f50 05-Feb-2010 San Mehat <san@google.com> Framework: Clean up / Refactor Mount APIs

- Move android.storage.* -> android.os.storage.* and refactor users
- Refactor generic shares back to explicit ums enable/disable/isEnabled
- Remove media insert/removed event callbacks (not ready for Froyo)
- Remove 'label' from volume state change callbacks
- Add public API functions for enabling/disabling USB mass storage (permissions enforced
in MountSevice)
- Remove some stray un-needed import lines
- Move android.os.IMountService / android.os.IMountServiceListener -> android.os.storage
- Improve code comments

MountService: Add dup state check and move debugging behind a conditional
UsbStorageActivity: Fix review comments + a TODO
StorageNotification: Add @Override tags
StorageManager: Don't use a static Listener list
MountService: Reduce bloat and fix == where I meant .equals()
PackageManagerTests: Update for new API

Signed-off-by: San Mehat <san@google.com>
b56ae20b22fd7283df32072a431ab6d4965f3c1b 05-Feb-2010 Suchi Amalapurapu <asuchitra@google.com> Rename media resource broadcasts
Add checks for fwdlocked and updated system apps
add more tests
remove duplicate adds
2155637d0028e87ebaaf71b9a77f3c43853e8f2f 05-Feb-2010 Dianne Hackborn <hackbod@google.com> Rename ApplicationContext to ContextImpl.

I've been wanting to do this for a long long time.