Commit Graph

2561 Commits

Author SHA1 Message Date
Jeff Sharkey
11820f7386 Merge "Allow acquiring ContentProviders across users." into jb-mr1-dev 2012-09-23 13:22:27 -07:00
Jeff Sharkey
6d51571835 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
2012-09-21 19:49:43 -07:00
Svetoslav Ganov
0a5c5567f2 Merge "Multi-user support for the accessibility layer." into jb-mr1-dev 2012-09-21 17:21:45 -07:00
Svetoslav Ganov
58d37b55bd Multi-user support for the accessibility layer.
1. This change converts the accessibility manager service to
   maintain a state per user. When the user changes the services
   for the user that is going away are disconnected, the local
   accessibility managers in the processes for this user are
   disabled, the state is swapped with the new user's one, and
   the new user state is refreshed.

   This change updates all calls into the system to use their
   user specific versions when applicable. For example, regisetring
   content observers, package monitors, calls into other system
   services, etc.

   There are some components that are shared across users such
   as UI created by the system process and the SystemUI package.
   Such components are managed as a global state shared across
   all users and are updated accordingly on a user switch. Since
   the SystemUI is running in a normal app process this change
   adds hidden APIs on the local window manager to allow the
   SystemUI to notify the accessibility layer that it will run
   accross users.

   Calls to AccessibiltyManager's isEnabled(), isTouchExplorationEnabled()
   and sendAccessibilityEvent return false or a are a nop for a
   background user sice he should not send accessibility events,
   and should not perform touch exploration.

   Update the internal accessibility tests due to changes in the
   AccessibilityManager.

   This change also fixes several issues that were encountered
   such as calling out the accessibility manager service with a
   lock held.

   Removed some incorrect debugging code from the TouchExplorer
   that was leading to a system crash.

bug:6967373

Change-Id: I2cf32ffdee1d827a8197ae4ce717dc0ff798b259
2012-09-21 16:48:07 -07:00
Jim Miller
1ed9fa10de Merge "Make DPM API for disabling keyguard widgets more generic" into jb-mr1-dev 2012-09-21 15:21:33 -07:00
Daniel Sandler
0887711d0f Merge "Add Notification.Builder.setShowWhen(boolean)." into jb-mr1-dev 2012-09-21 07:30:43 -07:00
Jeff Brown
a95a3b494f Fix javadoc.
Bug: 7172727
Change-Id: I55ee0099ea2e61f5f0a9de7b434fb8fb858ad5f9
2012-09-20 17:49:47 -07:00
Dianne Hackborn
6de76d21ff Merge "Implement multi-user PackageMonitor." into jb-mr1-dev 2012-09-20 14:54:10 -07:00
Dianne Hackborn
c72fc674a3 Implement multi-user PackageMonitor.
New APIs let you indicate what user(s) to monitor, and tell you
what user is changing when receiving a callback.

Fix package manager to only deliver package brpadcasts to the
running users.  (This isn't really a change in behavior, since
the activity manager would not deliver to stopped users anyway).
Make sure all broadcasts that package monitor receives also include
user information for it to use.

Update wallpaper service to (hopefully) now Really Correctly
monitor package changes per user.

Change-Id: Idd952dd274abcaeab452277d9160d1ae62919aa0
2012-09-20 14:53:18 -07:00
Dianne Hackborn
e6f6380027 Merge "Fix issue #7196015: system_server deadlock during setup wizard" into jb-mr1-dev 2012-09-20 14:33:50 -07:00
Geremy Condra
d053554f80 Merge "Push dropbox logging into libcore." into jb-mr1-dev 2012-09-20 11:24:14 -07:00
Chris Wren
683ab00a2e fix underfull content bug in inbox and big text templates.
Bug: 7172721
Change-Id: I22019009eec31ca18b54eec5f6ed5b626cee1540
2012-09-20 10:54:40 -04:00
Jim Miller
48b9b0d068 Make DPM API for disabling keyguard widgets more generic
This change renames the widget-specific API to be more generic
to allow further disabling of keyguard-specific customizations
in the future.  Currently only allows disabling widgets and the
secure camera but can now easily be extended to disable other
features we add.

Fixes bug: 7021368

Change-Id: I3934cc2e7c64e0c6d511efb86980fc38a849708d
2012-09-19 23:44:45 -07:00
Geremy Condra
b7faaf4c40 Push dropbox logging into libcore.
Change-Id: I74c0644c6938d28c20c42d88d995ffb56a71d703
2012-09-19 21:39:55 -07:00
Dianne Hackborn
73c14161ec Fix issue #7196015: system_server deadlock during setup wizard
Can't aquire the providers lock while holding the main activity thead
lock, because we call into the activity manager with that lock held.

Change-Id: If27326a2caa46480d0f1b98608be9e8a862febe0
2012-09-19 16:46:54 -07:00
Dianne Hackborn
09ad0832e0 Merge "Switch to showing top-most thumbnail of recent apps." into jb-mr1-dev 2012-09-19 11:40:18 -07:00
Dianne Hackborn
15491c6a72 Switch to showing top-most thumbnail of recent apps.
The way it should have been, and with the new recents enter animation
the way it must be.

Added a new method to retrieve this thumbnail, since it would be less
efficient to use the existing API (which always returns the "base"
thumbnail).  Probably at some point that existing API should be tweaked
to always return the top thumbnail instead, but that is for a later time.

Also removed code that would clear the thumbnail associated with an
activity when it is resumed.  I don't think there should ever be a
reason to clear a thumbnail -- it's much better to have *something*
for the task, even if it is a little out of date.

Change-Id: I83e6ca6403eb2df5e4de3009dfe8c210e8cf8d5b
2012-09-19 11:25:40 -07:00
Amith Yamasani
4adb9d3416 Merge "DevicePolicyManager per user" into jb-mr1-dev 2012-09-18 20:00:44 -07:00
Amith Yamasani
599dd7ce9a DevicePolicyManager per user
Bug: 7136483

Store device policy information for each user and apply them when user switches.

Global proxy can only be controlled by owner.
Camera restriction applies to all users, if any one has an admin that disables it.
Storage encryption can only be controlled by owner, although other users can query the state.
Wipe data will only remove the user if non-zero, wipe the device, if zero.

Change-Id: I359be46c1bc3828fd13d4be3228f11495081c8f2
2012-09-18 14:28:33 -07:00
Jeff Sharkey
27bd34d9d9 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
2012-09-18 13:26:26 -07:00
Dianne Hackborn
c33f94e2a5 Merge "Fix API review bugs." into jb-mr1-dev 2012-09-17 18:22:38 -07:00
Dianne Hackborn
8832c18d8b Fix API review bugs.
7173152 API REVIEW: android.content.pm.PackageUserState
7172969 API REVIEW: android.app.PendingIntent
7172730 API REVIEW: android.content.Context
7172726 API REVIEW: android.manifest.permission

Change-Id: Iad470256d3b5ca5596487f6a699ec1871457c3b5
2012-09-17 17:27:15 -07:00
Adam Powell
49a22f2969 Merge "TaskStackBuilder correctness fixes" into jb-mr1-dev 2012-09-17 17:15:09 -07:00
Dianne Hackborn
4246f695f4 Merge "Try again to fix issue #6912004:tap on gmail notification sends me to home screen" into jb-mr1-dev 2012-09-17 16:19:14 -07:00
Adam Powell
75e0af8982 TaskStackBuilder correctness fixes
* Don't mutate original intents when adding default flags.

* Add the relevant flags to the array returned by getIntents() such
  that it can be used directly in a call to startActivities or
  similar.

* Deep copy the component intents when building an intent array for
  getIntents()

* Clean up some internal code duplication

Change-Id: I71d3b7f30d4f7d8f1cce778d406ea0e513d382c5
2012-09-17 16:16:55 -07:00
Dianne Hackborn
ad9b32115b Try again to fix issue #6912004:tap on gmail notification sends me to home screen
Add a new call to the activity manager to tell it when the activity
is resumed, so it can mark its state as dirty then instead of when
it first tries to create it.

Also tweak things to update the LRU list for the upcoming activity
at the point we start pausing the current activity, to avoid an
inefficiency where we may decide to kill the process of the upcoming
activity if it is at the end of the LRU list.

Change-Id: Ia6dc8c34dc6d4b085a1efbe3a5d5f47721d55078
2012-09-17 16:03:22 -07:00
Adam Powell
6b6c90523e TaskStackBuilder - use the correct package for looking up parents
Fix bug 7179104

Change-Id: Ia5d2d285cf22e97c452e0c385ef38c8bce330491
2012-09-17 13:32:33 -07:00
Adam Powell
5a4010c054 Create main activity intents as needed for TaskStackBuilder/Up nav
If a generated parent intent targets an Activity that itself has no
parent specified, generate the intent using Intent.makeMainActivity
to gather the correct flags for the root intent of a task.

Bug 6457058

Change-Id: I8d4a3823eda752306da18c2c38fa7e57f0a33bf3
2012-09-16 15:15:46 -07:00
Dianne Hackborn
d65afc65ea Merge "More multi-user stuff." into jb-mr1-dev 2012-09-16 00:05:46 -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
ce24985ad6 Remove AndroidKeyStore from API
Change-Id: Ibe09d78e5a5b86604f01144f344525bff94c2dde
2012-09-14 16:23:37 -07:00
Daniel Sandler
0c89049ebf Add Notification.Builder.setShowWhen(boolean).
No more setting when to 0 to hide the timestamp! *cheering*

Bug: 6915046
Change-Id: I1560a1c2dd366d416d1d059704ca7c63149334eb
2012-09-13 13:17:54 -07:00
Geremy Condra
69689a7356 DO NOT MERGE Push event logging down into libcore.EventLogger
This changes the default behavior of the EventLogger from logging
to the normal logs to logging to the event logs.

Change-Id: I4338a1605928b82246a369adb3514bd31cd552e8

Conflicts:

	core/java/android/app/ActivityThread.java
2012-09-12 17:54:10 -07:00
Jeff Sharkey
b049e212ab Include user identifier in external storage paths.
When building external storage paths, always include user in path
to enable cross-user paths and aid debugging.

Each Zygote process continues to only have access to the appropriate
user-specific emulated storage through bind mounts. A second set of
mounts continue supporting legacy /sdcard-style paths. For example,
a process running as owner has these mount points:

/storage/emulated_legacy
/storage/emulated_legacy/Android/obb
/storage/emulated/0
/storage/emulated/obb

Since Environment is created before Zygote forks, we need to update
its internal paths after each process launches.

Bug: 7131382
Change-Id: I6f8c6971f2a8edfb415c14cb4ed05ff97e587a21
2012-09-11 23:11:14 -07:00
Christopher Tate
4dc7a68dbe 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
2012-09-11 14:51:33 -07:00
Siva Velusamy
bc91c5f8b1 Merge "Report the user id of every app to ddms." into jb-mr1-dev 2012-09-10 15:59:36 -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
Siva Velusamy
d693dfa75b Report the user id of every app to ddms.
This CL extends the HELO and APNM packets to include the user id
of the application. This allows ddms users to differentiate between
the same app running for multiple users.

Bug 7110696.

Change-Id: I490d0e3781b8fb9db65cf81188677a0955650511
2012-09-10 14:44:38 -07:00
Dianne Hackborn
1b8ecc5031 A little cleanup.
Change-Id: Ie33fd1b02011606e67ce08df3cce887c07680c60
2012-09-09 14:41:34 -07:00
Jeff Brown
a3909a9395 Work around crash when display is removed.
After a display is removed, there may be a brief time
when a Context still exists that is bound to it.
We need to provide metrics in this case.

Bug: 7131637
Change-Id: I11b264a000653adbf0f3da399eaab66c4b40fb2a
2012-09-09 01:05:38 -07:00
Amith Yamasani
151ec4c9f8 More multi-user methods in PM
pm can list installed packages by user now.

Bug: 6926465

Change-Id: I822311bfd6e7e2d6fb315fc484739fbf953c9bb6
2012-09-08 19:14:00 -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
Dianne Hackborn
62bea2f171 Nested fragments.
Change-Id: I79acc19b391352c16b06afee2ca543223c38e364
2012-09-06 11:05:53 -07:00
Jim Miller
b8ec470617 Update DevicePolicyManager with ability to disable keyguard widgets
Change-Id: I5876e9e180b2a995aaa355fbbb2b67cebb86104d
2012-09-04 13:52:36 -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
Dianne Hackborn
2701f325a6 Merge "Remove Binder.getOrigCallingUid()." into jb-mr1-dev 2012-08-31 16:23:47 -07:00
Amith Yamasani
430e5b23cf Merge "Centralize the creation of the user system directory" into jb-mr1-dev 2012-08-31 16:22:52 -07:00
Jeff Brown
a492c3a7b2 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
2012-08-31 15:42:45 -07:00
Amith Yamasani
61f57379ca Centralize the creation of the user system directory
Environment.getUserSystemDirectory(int userId)

Use it all relevant places that was hardcoding it.
Also, wipe out the user's system directory when user is removed, otherwise old state
might be transferred to a new user.

Change-Id: I788ce9c4cf9624229e65efa7047bc0c019ccef0a
2012-08-31 15:33:21 -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