945 Commits

Author SHA1 Message Date
Kenny Root
24271a8c4c Merge "Use shared app gid for forward-locked processes" into jb-mr1-dev 2012-09-13 14:43:20 -07:00
Amith Yamasani
4076bc5046 Fix service binding for singleUser services
Bug: 7137147

No need to try to retrieve the service again as user 0.

Change-Id: I910aca3fae91dc709ef2265ed0fce09f46f5b769
2012-09-12 18:19:40 -07:00
Kenny Root
e091f22e22 Use shared app gid for forward-locked processes
Use a shared app gid for each app across different users which allows
forward-locked applications to share the same APK file.

Change-Id: Ifecf51ee7865547117746f83e9733083d3dd5111
2012-09-11 15:01:26 -07:00
Dianne Hackborn
9d9ece3c1e Animations for user switching.
The window manager now has a facility to provide a full-screen
animation, which the activity manager uses every time a user
switch happens.

The current animation is just a simple dumb slide until we get
a design from UX.

Also some cleanup: moved the portrait task animations to the
default config so we always have an animation for them, and finally
got the java symbol stuff out of public.xml.

Change-Id: I726f77422b2ef5f2d98f961f8da003e045f0ebe8
2012-09-10 19:58:21 -07:00
Dianne Hackborn
1676c856d6 Flesh out multi-user in am commands.
Now we default to the current user instead of user 0 for most commands
(except where we can do the command for all users).

Many more commands take a user argument: force-stop, kill, profile,
dumpheap.

Improved help text.

Change-Id: I719a13b4d31b668f57ca21e51d7043ac3e0d4e1b
2012-09-10 14:52:30 -07:00
Dianne Hackborn
2d1b378191 Various fixes.
Bug #7132226: Can't start instrumentation due to ActivityManagerService crash
Bug #6912004: tap on gmail notification sends me to home screen

Change-Id: I824128b01f368de95dee288f8e49039b84479a7e
2012-09-09 18:14:32 -07:00
Dianne Hackborn
74ee8652e0 Add Binder.getCallingUserHandle().
Change-Id: I2a7eedfdc7baeeb4c2cd2ca0153aa95e0cf0bf45
2012-09-07 18:33:18 -07:00
Dianne Hackborn
d888399ad4 Explicitly specify current user everywhere home is started.
Change-Id: I58d86136de7f9cef1eaf72793d0e200b852d7355
2012-09-07 17:48:06 -07:00
Dianne Hackborn
cd42ce5d61 Merge "Fix crash when setting wallpaper from non-primary user." into jb-mr1-dev 2012-09-07 15:52:37 -07:00
Dianne Hackborn
11941fd651 Fix crash when setting wallpaper from non-primary user.
When accessing a content provider, there is a check for whether
the provider can run in the caller's process; if so, even if the
provider is currently published, we return to the caller that it
can run locally.

This check was broken -- it had an old condition that allowed
content providers owned by the system UID to run in any other UID's
process.  This is wrong, since by definition the other
UIDs would not be able to access the data under the original UID.

We ran into this because the activity picker is part of the
android platform manifest, so runs as the system process.  However
it needs to run as the user who invoked it, so when coming from the
non-primary user we spin up a "system" process running as a uid of
that user.  Now when that process tries to access the settings
provider, the broken check would think that a new instance of the
settings provider should be created in the caller's process.

Change-Id: I7bf495ed8370cb271bdaec073d5b7dda9e38c546
2012-09-07 15:50:26 -07:00
Amith Yamasani
5fc626639a Merge "Resolve the correct home intent for secondary users" into jb-mr1-dev 2012-09-07 15:28:09 -07:00
Amith Yamasani
259d5e56a8 Resolve the correct home intent for secondary users
Fix some searches through the Activity stack.

This allows SetupWizard to be launched for the second user.

Change-Id: Icd306319f511c902557bd9985d80dda228e32d96
2012-09-07 15:04:36 -07:00
Dianne Hackborn
5e03e2ca7d 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
  user.
- 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
2012-09-07 13:55:23 -07:00
Jean-Baptiste Queru
ec098efcb1 am 342c6bc8: am 54099555: am 380a8e3d: Merge "Am: Clean mLaunchingProviders of all providers started by the client"
* commit '342c6bc8e5edb5a0cfa2ad65162d559b7f2ad993':
  Am: Clean mLaunchingProviders of all providers started by the client
2012-09-05 12:36:04 -07:00
Jean-Baptiste Queru
380a8e3d12 Merge "Am: Clean mLaunchingProviders of all providers started by the client" 2012-09-05 11:40:30 -07:00
Fabrice Di Meglio
035ce2ca92 Merge "Add support for "-rtl" in resources" into jb-mr1-dev 2012-09-04 15:01:03 -07:00
Dianne Hackborn
b8839dd357 Fix issue #7097984 java.lang.SecurityException: Permission Denial:
broadcast asks to run as user -1 but is calling from user 0; this requires

Also improve part of issue #7087789: Local denial of service via
low-permissioned apps

No longer allow closeSystemDialogs() from background processes.

Change-Id: I752d5a1d51be0b69fde6999d6659835e5bde3efe
2012-09-04 12:11:21 -07:00
Dianne Hackborn
20e809870d 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
2012-09-04 10:39:21 -07:00
Vairavan Srinivasan
4ee364982e Am: Clean mLaunchingProviders of all providers started by the client
Launching providers is removed from mLaunchingProviders when the client
process dies and works as long as the client process had requested just
one provider and not otherwise. Fix is to make sure mLaunchingProviders
is updated to remove all providers launched by the client process.

Change-Id: Ib4b8b44b6a102762a6558f65fb2e6dbf11d725ea
2012-09-03 17:09:58 -07:00
Dianne Hackborn
4120375d46 Remove Binder.getOrigCallingUid().
Replaced all remaining places that used it with explicit user
specification.

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
2012-08-31 15:11:13 -07:00
Amith Yamasani
f203aeef99 Enforce permissions for calls with specified userId
Fix a couple of places where incorrect userIds were being passed in.

Change-Id: I398c676e0488ff7e584be96e96c8b32652134238
2012-08-30 16:08:23 -07:00
Dianne Hackborn
b2dd4e87ae am 1a907db0: am 862c3835: am 4b60a8d1: Merge "Added check of ActivityInfo launch mode when starting activity."
* commit '1a907db07ea105ea65e146713f436ed072d7084b':
  Added check of ActivityInfo launch mode when starting activity.
2012-08-30 16:04:19 -07:00
Dianne Hackborn
4b60a8d1b8 Merge "Added check of ActivityInfo launch mode when starting activity." 2012-08-30 15:19:03 -07:00
Dianne Hackborn
5ac72a2959 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
2012-08-30 14:33:22 -07:00
Jeff Sharkey
e217ee4d7a Access to all users' external storage.
System services holding this permission have external storage bound
one level higher, giving them access to all users' files.

Bug: 7003520
Change-Id: Ib2bcb8455740c713ebd01f71c9a2b89b4e642832
2012-08-30 10:37:51 -07:00
Jeff Sharkey
a99e4caa94 Merge "Bind to screenshot service for current user." into jb-mr1-dev 2012-08-29 22:29:43 -07:00
Dianne Hackborn
12631ec35e Merge "Start implementing concept of "running" users." into jb-mr1-dev 2012-08-29 18:15:07 -07:00
Jeff Sharkey
35744c19f6 Bind to screenshot service for current user.
Let apps bindService() across user boundaries if they hold the
INTERACT_ACROSS_USERS_FULL permission.

Bug: 7012034
Change-Id: I2047d8318e1de47bfae7470d1dbc6fe5cfe44fdc
2012-08-28 16:49:10 -07:00
Dianne Hackborn
80a4af2bbc Start implementing concept of "running" users.
The activity manager now keeps track of which users are running.

Initially, only user 0 is running.

When you switch to another user, that user is started so it is
running.  It is only at this point that BOOT_COMPLETED is sent
for that user and it is allowed to execute anything.

You can stop any user except user 0, which brings it back to the
same state as when you first boot the device.  This is also used
to be able to more cleaning delete a user, by first stopping it
before removing its data.

There is a new broadcast ACTION_USER_STOPPED sent when a user is
stopped; system services need to handle this like they currently
handle ACTION_PACKAGE_RESTARTED when individual packages are
restarted.

Change-Id: I89adbd7cbaf4a0bb72ea201385f93477f40a4119
2012-08-28 16:30:55 -07:00
Amith Yamasani
4ea6069323 Fix PendingIntent caching for multiuser
Store the userId in the PendingIntentRecord.Key, so that it doesn't match
an identical pending intent from another user.

Change-Id: Icfc39e0f717c902dc3a60bdf5283a3402bbd2eaa
2012-08-28 14:34:53 -07:00
Amith Yamasani
8bf06edac2 Relax permission requirement for sending broadcasts to other users
Also handle USER_CURRENT for broadcasts

Change-Id: I2df5616ac22b7c670a7d007b8d505d4d4d99a24e
2012-08-27 19:30:30 -07:00
Dianne Hackborn
0e17e5bc43 Merge "Fix installing applications from non-primary users." into jb-mr1-dev 2012-08-27 15:59:56 -07:00
Dianne Hackborn
786b44046a Fix installing applications from non-primary users.
We also now send the correct broadcasts to each user.

You no longer need to be running the shell as root
to be able to create/remove users.

Also added some more man page material to the pm command, and
got rid of a bunch of showUsage() calls that now make error
messages completely buried because of how large the usage info
has become.

And the package manager now shows the user each historical broadcast
was sent to.

Change-Id: Iab42498e1352a0c023069139c80fc04d2d69ab4b
2012-08-27 15:16:33 -07:00
Amith Yamasani
2b91465233 Fix adb install
Was not properly handling creating DefContainerService when the installation was
for USER_ALL. Not a problem for Market installs.

Bug: 7061571
Change-Id: I4528b4c56e38effa137da56460e78c55b242ba45
2012-08-27 12:04:40 -07:00
Dianne Hackborn
7767eac323 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
installed.

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
GET_UNINSTALLED_PACKAGES flag.

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
2012-08-24 13:53:13 -07:00
Fabrice Di Meglio
5f79799939 Add support for "-rtl" in resources
- fix bug #7035019 Need to have "-rtl" support for Resource

Change-Id: Ic82145c2ac672729d8a6c695a5f343276a1a0a2c
2012-08-23 14:55:33 -07:00
Jeff Sharkey
3451dc9064 Merge "Iteration on multi-user external storage." into jb-mr1-dev 2012-08-22 18:17:30 -07:00
Jeff Sharkey
2bca868361 Iteration on multi-user external storage.
Remove single-user bind mounts, since they need to remain as raw
mounts to correctly propagate when remounted.  This means we're back
to using sdcard_r GID to enforce READ_EXTERNAL_STORAGE.

Bug: 6925012
Change-Id: I41b5d7ddc985a5df2e288632a0a80d4724089e00
2012-08-22 13:59:58 -07:00
Jean-Baptiste Queru
2bd65b61ba am 29c6f24b: am 6ffe2594: Merge "restorecon /data/anr directory."
* commit '29c6f24b254b4ea1a7d8448980e736355e4badf6':
  restorecon /data/anr directory.
2012-08-22 07:49:03 -07:00
Jean-Baptiste Queru
6ffe259467 Merge "restorecon /data/anr directory." 2012-08-22 07:18:39 -07:00
Amith Yamasani
23e282554e Merge "Multiprocess activity should be allowed to run on current user" into jb-mr1-dev 2012-08-21 14:19:51 -07:00
Dianne Hackborn
0c38049502 Improve multi-user app management.
Introduce API to get per-user storage information, keep track
of services associated with users, and various small cleanup.

Change-Id: I5d4e784e7ff3cccfed627d66a090d2f464202634
2012-08-21 10:34:20 -07:00
Amith Yamasani
a10d1aa6c7 Multiprocess activity should be allowed to run on current user
Multiprocess flag should override singleton checks.

This allows ChooserActivity to run in the process/user that launched it.
Wallpaper chooser from Launcher now works for secondary users.

Change-Id: I17a99278ed2a6d2491c3016a549134a85bc2af00
2012-08-21 09:51:13 -07:00
Amith Yamasani
2d78fa2d25 am ff7735b0: am a3db5297: Merge "ProviderMap: remove hashmap when entire user specific entries are removed"
* commit 'ff7735b0ee8c3347d0f3cb1866e454be0e9534e2':
  ProviderMap: remove hashmap when entire user specific entries are removed
2012-08-20 10:47:41 -07:00
rpcraig
ec7ed14c18 restorecon /data/anr directory.
Restore the security contexts of anr directory
when initially created.

Change-Id: Ia731414ccbcdc7369d24be6db0003c53abcf6ef4
Signed-off-by: rpcraig <rpcraig@tycho.ncsc.mil>
2012-08-20 06:08:01 -04:00
Amith Yamasani
7300dbeba0 Fix launching activity from a pending intent
The creator of the pending intent is the user on which the activity
should be launched.

Change-Id: I733326ed8a5784985ac93a84ce91de4dda17c730
2012-08-17 14:19:57 -07:00
Amith Yamasani
81c304b99d Merge "Send USER_SWITCHED with the correct permission" into jb-mr1-dev 2012-08-17 13:58:17 -07:00
Amith Yamasani
1ab36c1d83 Send USER_SWITCHED with the correct permission
Forgot to change this from MANAGE_ACCOUNTS to MANAGE_USERS.

Change-Id: Ib07d2ac84c19cef278a0e564676b6200e0f97dd1
2012-08-17 13:55:02 -07:00
Michael Jurka
d2ae85d41e Merge "Adding a thumbnail scale down animation" into jb-mr1-dev 2012-08-17 13:03:15 -07:00
Amith Yamasani
2a00329c6d UserHandle to UserSerialNo mapping
Use AtomicFile for usermanager files.

Added a MANAGE_USERS permission that apps (signature permission) can use
to create/query/modify/remove users.

Change-Id: I5cf232232d0539e7508df8ec9b216e29c2351cd9
2012-08-17 09:06:10 -07:00