Commit Graph

767 Commits

Author SHA1 Message Date
Dianne Hackborn
9905a8d4bb am 68128325: am 443e4748: Merge "Fix issue #7175553: GRANT_URI_PERMISSION doesn\'t apper to work on secondary user" into jb-mr1-dev
* commit '681283257d6ff4f77a5ca66a0e7ad51c90320db6':
  Fix issue #7175553: GRANT_URI_PERMISSION doesn't apper to work on secondary user
2012-09-17 14:45:54 -07:00
Dianne Hackborn
397c1d8467 am 0fd909ba: am d65afc65: Merge "More multi-user stuff." into jb-mr1-dev
* commit '0fd909bad1151cc39061abb52ae5b8be090e05dd':
  More multi-user stuff.
2012-09-17 14:44:10 -07:00
Dianne Hackborn
11f0cb7d07 Fix issue #7175553: GRANT_URI_PERMISSION doesn't apper to work on secondary user
Change-Id: I0ab372978f8599d0fe8d5da8aeb73965ab85797f
2012-09-16 17:12:34 -07:00
Dianne Hackborn
5dc5a00e7e More multi-user stuff.
- New public APIs to find out when a user goes to the foreground,
  background, and is first initializing.
- New activity manager callback to be involved in the user switch
  process, allowing other services to let it know when it is safe
  to stop freezing the screen.
- Wallpaper service now implements this to handle its user switch,
  telling the activity manager when it is done.  (Currently this is
  only handling the old wallpaper going away, we need a little more
  work to correctly wait for the new wallpaper to get added.)
- Lock screen now implements the callback to do its user switch.  It
  also now locks itself when this happens, instead of relying on
  some other entity making sure it is locked.
- Pre-boot broadcasts now go to all users.
- WallpaperManager now has an API to find out if a named wallpaper is
  in use by any users.

Change-Id: I27877aef1d82126c0a1428c3d1861619ee5f8653
2012-09-15 23:58:55 -07:00
Kenny Root
df1a9dab51 am 871e27ea: am 24271a8c: Merge "Use shared app gid for forward-locked processes" into jb-mr1-dev
* commit '871e27eabc626dd50191df6c3bb3350214612c9b':
  Use shared app gid for forward-locked processes
2012-09-13 14:48:25 -07:00
Dianne Hackborn
f41d25a2f5 resolved conflicts for merge of 8bb779bd to master
Change-Id: I72ddc0a67cf55d45958a622ffe535f32c1721052
2012-09-12 10:55:03 -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
3dd94ced96 am 206aa76c: am 4573e29f: Merge "Flesh out multi-user in am commands." into jb-mr1-dev
* commit '206aa76cdce6bc9697833f4657e7fc5de4d8f065':
  Flesh out multi-user in am commands.
2012-09-10 17:16:20 -07:00
Dianne Hackborn
8ff4baf8e4 am aaf7fdbf: am 01a7c79d: Merge "Various fixes." into jb-mr1-dev
* commit 'aaf7fdbf89da3064a0ef95263a71b0a754b7e136':
  Various fixes.
2012-09-10 17:12:48 -07:00
Dianne Hackborn
234f00b9e8 am 789203ec: am 5d75052b: Merge "Add Binder.getCallingUserHandle()." into jb-mr1-dev
* commit '789203ec530e61f7678c9883a67135bf8cd3c679':
  Add Binder.getCallingUserHandle().
2012-09-10 17:09:33 -07:00
Dianne Hackborn
452b1ce2d4 am 3374ada6: am 824b959d: Merge "Explicitly specify current user everywhere home is started." into jb-mr1-dev
* commit '3374ada6ef0d8368b5fba38ee12c6ff9d5de8800':
  Explicitly specify current user everywhere home is started.
2012-09-10 17:09:15 -07:00
Amith Yamasani
f0d067ba44 am 4cf05484: am 5fc62663: Merge "Resolve the correct home intent for secondary users" into jb-mr1-dev
* commit '4cf0548452493cabbb7f7c09ab3ecb2ebe77ff8e':
  Resolve the correct home intent for secondary users
2012-09-10 17:07:59 -07:00
Dianne Hackborn
3f6f96b526 am 00b7d2a0: am 649d0d71: Merge "More multi-user stuff:" into jb-mr1-dev
* commit '00b7d2a0de5d235f7eab721d4369bf93af512351':
  More multi-user stuff:
2012-09-10 17:06:32 -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
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
80c235a803 am ee2175c7: am ec098efc: am 342c6bc8: am 54099555: am 380a8e3d: Merge "Am: Clean mLaunchingProviders of all providers started by the client"
* commit 'ee2175c75b18a68325db2b277b7271d4a76e60a9':
  Am: Clean mLaunchingProviders of all providers started by the client
2012-09-05 12:39:04 -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
949c875a05 am 81c66d65: am 035ce2ca: Merge "Add support for "-rtl" in resources" into jb-mr1-dev
* commit '81c66d6592718e9a1c57c39c1675ea13e8e769bb':
  Add support for "-rtl" in resources
2012-09-04 15:06:20 -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
6d2e850819 am bc5b003a: am d2a8df95: Merge "Fix issue #7097984 java.lang.SecurityException: Permission Denial:" into jb-mr1-dev
* commit 'bc5b003a45a900263d565ba7bb48908e80638b7d':
  Fix issue #7097984 java.lang.SecurityException: Permission Denial:
2012-09-04 13:16:07 -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
750c950820 am e7713557: am 7d69e8bd: Merge "Add registering for explicit users." into jb-mr1-dev
* commit 'e7713557927412a5a80d41d6ee5a68bddeda948c':
  Add registering for explicit users.
2012-09-04 10:44:45 -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
37f5ec2a21 am 9b52f007: am 2701f325: Merge "Remove Binder.getOrigCallingUid()." into jb-mr1-dev
* commit '9b52f0071780160355376484a3992d2710160a3f':
  Remove Binder.getOrigCallingUid().
2012-08-31 16:28:41 -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
7ced19d5ce am b33ef6a2: am f203aeef: Enforce permissions for calls with specified userId
* commit 'b33ef6a212c520d27fde88600c8f8c936b568446':
  Enforce permissions for calls with specified userId
2012-08-30 17:31:43 -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
7cd1bfa801 am f59dfc81: am 73365695: Merge "Improve multi-user broadcasts." into jb-mr1-dev
* commit 'f59dfc81f4d1e91aa436ed70d7f8372bce3d91e0':
  Improve multi-user broadcasts.
2012-08-30 15:01:28 -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
4ce07726a8 am 3faed633: am e217ee4d: Access to all users\' external storage.
* commit '3faed6337f260ff734115d8d404dc132f6e6755a':
  Access to all users' external storage.
2012-08-30 11:50:39 -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
Zoran Marceta
f958b321fa ActivityStack handler now use ActivityManager looper instead of ServerThread looper
Bug: 6957716
Change-Id: I36feb45ef7a85885ab812092c7b28e91886a4821
2012-08-30 10:31:05 -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
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
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