254 Commits

Author SHA1 Message Date
Jeff Sharkey
38f8688bae Return ApplicationInfo with requested userId.
Return ApplicationInfo with requested userId instead of trying to
infer it from calling UID.

Bug: 7334712
Change-Id: I9ce0061e2d020b0d74c7c9cd22d89c5ff2466a6c
2012-10-11 16:10:23 -07:00
rich cannings
36070b414a Fix verfication bypassed for adb installs
ADB installs appear as UserHandle.USER_ALL, and can only be performed by
UserHandle.USER_OWNER, so use the package verifier for UserHandle.USER_OWNER.
This returns a valid userId to call PackageManagerService.getPackageUid.

Bug: 7293091
Change-Id: I7a5497cfe5fa2e7aa804345cf9f507ec26a0db21
2012-10-09 13:34:51 -07:00
Dianne Hackborn
6309271f7b Fix issue #7295951: Mako asks which Launcher to use at every re-boot
A couple problems:

- We need to clear app preferences later, now that we have encrypted apps.
- The multi-user implementation of this would allow different preferred
  apps from different users to potentially interefere with each other.
  They are not completely separate data structures.

Change-Id: Id4f1ebb6414fdf30ff1049adaa1efe83dabac01a
2012-10-07 14:45:35 -07:00
Amith Yamasani
634cf31345 Fix serial number assignment for new user on a freshly wiped device
Bug: 7280093

User serial number was not being bumped up from 0 on a freshly wiped device
due to the userlist not existing. This was resulting in the first 2 users
getting the same serial number, messing up C2DM message delivery. This issue
doesn't show up if you boot the device before adding a user, so it wasn't
discovered earlier.

Change-Id: I8a5d99b9ad2ccfb66a16cacac9548ba53f0be387
2012-10-04 17:34:21 -07:00
rich cannings
cdf932e050 Fix PackageInstaller displays with multi-user
With this fix, when all users cancel installing an app they were warned about,
then the "Installing..." screen disappears, as desired.

Bug: 7255231
Change-Id: I2475fa790a5d09abbf94411c696682502fb1e8df
2012-10-03 14:32:38 -07:00
Dianne Hackborn
5bc54bf354 Merge "Fix issue #7272775: Auto Start Apps Not Starting" into jb-mr1-dev 2012-10-02 16:25:15 -07:00
rich cannings
3ed62adad1 Merge "Fix package verification with multi-user" into jb-mr1-dev 2012-10-02 16:25:15 -07:00
Dianne Hackborn
4a9f071f3d Fix issue #7272775: Auto Start Apps Not Starting
Bad defaults were causing stopped state to be set at each
boot.

Change-Id: I49b04e9c62f6ac391054201b508fddb6c7985615
2012-10-02 15:29:06 -07:00
rich cannings
d55deb0a71 Fix package verification with multi-user
Fixes the porblem of PackageManagerService always sending Intents to user 0.

Bug: 7272549
Change-Id: I25995d8b2b9a24346f4813e6d8d9a84e5d5d2b6b
2012-10-02 14:53:08 -07:00
Jeff Sharkey
6e2bee75ce Migrate more System and Secure settings to Global.
Includes telephony, WindowManager, PackageManager, and debugging
settings.  Update API to point towards moved values.

Bug: 7231764, 7231252, 7231156
Change-Id: I5828747205708872f19f83a5bc821ed0a801cb79
2012-10-02 13:55:15 -07:00
Amith Yamasani
54289b8b4a Fix cache deletion for secondary users
Bug: 7249419

Change-Id: Idbc0f9994508059ebf5055aea961b87e08b3673a
2012-10-01 11:19:55 -07:00
rich cannings
a2064df6ab Disable package verification in test harness
Bug: 7233608
Change-Id: I521980728f5fb68b42a3906ff4fd25cd59dbbd7a
2012-09-30 14:52:41 -07:00
Dianne Hackborn
3ff8e1a800 Merge "Fix issue #7211769 and #7244492, thrash around on #7226656." into jb-mr1-dev 2012-09-28 15:54:44 -07:00
Dianne Hackborn
d4ac8d7b3d Fix issue #7211769 and #7244492, thrash around on #7226656.
Issue #7211769: Crash dialog from background user has non-working "report"

The report button now launches the issue reporter for the correct user.
Also for crashes on background users, either disable the report button,
or simply don't show the dialog depending on the build config.

Issue #7244492: Bugreport button in Quick Settings doesn't actually do anything

Now they do.

Issue #7226656: second user seeing primary user's apps

I haven't had any success at reproducing this.  I have tried to tighten up
the path where we create the user to ensure nothing could cause the
user's applications to be accessed before the user it fully created and thus
make them installed...  but I can't convince myself that is the actual problem.

Also tightened up the user switch code to use forground broadcasts for all
of the updates about the switch (since this is really a foreground operation),
added a facility to have BOOT_COMPELTED broadcasts not get launched for
secondary users and use that on a few key system receivers, fixed some debug
output.

Change-Id: Iadf8f8e4878a86def2e495e9d0dc40c4fb347021
2012-09-28 15:37:22 -07:00
Ben Gruver
9dbbfcda81 Merge "Pass the originating uid to the package verifier" into jb-mr1-dev 2012-09-28 10:58:19 -07:00
Jeff Sharkey
625239a054 Migrate more Secure settings to Global.
Migrate networking, storage, battery, DropBox, and PackageManager
related Secure settings to Global table.

Bug: 7232014, 7231331, 7231198
Change-Id: I772c2a9586a2f708c9db95622477f235064b8f4d
2012-09-27 16:22:53 -07:00
Ben Gruver
37d83a3caf Pass the originating uid to the package verifier
Bug: 6923241
Change-Id: I85a3e0d53b469543cb0551d3a440d2663b5d0697
2012-09-27 13:02:06 -07:00
Jeff Brown
bf6f6f9de7 Update references to migrated global settings.
Fixed one setting that was migrated but not marked deprecated.

Removed a hidden setting that is no longer used by the new
power manager service.

Bug: 7231172
Change-Id: I332f020f876a18d519a1a20598a172f1c98036f7
2012-09-25 15:27:51 -07:00
Jeff Sharkey
752cd922f7 Always bind to DefaultContainerService as OWNER.
When PackageManagerService deals with external storage, always bind
to DefaultContainerService as USER_OWNER.  This avoids binding to a
stopped user, which would fail.

Bug: 7203111
Change-Id: I8e303c7558e8b5cbe4fea0acc9a472b598df0caa
2012-09-23 16:44:34 -07:00
Jeff Sharkey
5a370882f8 Merge "Check READ_EXTERNAL enforcement outside of lock." into jb-mr1-dev 2012-09-23 13:23:39 -07:00
Dianne Hackborn
8da429e80d Fix issue #7209355, #7214271.
Issue #7209355: Intent on the secondary user results in an intent picker
in the Primary user.
Issue #7214271: Crash in system UI

Also fix a bug where I recently broke the removeTask() operation in the
activity manager where it would remove the wrong task.

Change-Id: I448c73a0e83a78d9d8d96b4629658c169888d275
2012-09-23 12:53:34 -07:00
Jeff Sharkey
c50f31d213 Check READ_EXTERNAL enforcement outside of lock.
Since SettingsProvider can call back into PMS, query the default
enforcement state before acquiring mPackages lock.

Bug: 7182437
Change-Id: Ie218aedfc7a943e5b221814af3e0356c7199b0e4
2012-09-22 17:14:02 -07:00
rich cannings
4e5753f5f6 Add setting to skip verifying ADB installs
Create a setting "verifier_verify_adb_installs" to allow developers to control
package verification on ADB installs only. If package verification is enabled,
the setting will:

0, Do not perform package verification on apps installed through ADB/ADT/USB
and perform package verification on all other installs.

1, Use package verification on all installs. (Default)

Bug: 7183252
Change-Id: I9d3eb8abb5ba5e93f8634d3135794e92ff6273b6
2012-09-21 13:26:15 -07:00
Amith Yamasani
920ace0bbc Query users excluding any being removed
Keep track of user creation and last logged-in time.
adb shell dumpsys users
User switcher shouldn't show users about to be removed.
No need to check for singleton for activities.

Bug: 7194894
Change-Id: Ic9a59ea5bd544920479e191d1a1e8a77f8b6ddcf
2012-09-20 22:33:43 -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
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
Amith Yamasani
e928d7d95d Pass Bitmap instead of ParcelFileDescriptor in UserManager
Add a USER_INFO_CHANGED intent for lockscreen and quicksettings to use
to monitor changes to the user name or icon.

Bug: 7164040
Change-Id: Id6fb8b6d38ce04ccd02bbadcf0c10699783d6c03
2012-09-17 21:46:51 -07:00
Kenny Root
4215017c12 Merge "Use shared app gid for dalvik cache" into jb-mr1-dev 2012-09-17 15:29:38 -07:00
Amith Yamasani
1d31d5ba12 Merge "Start userId from 10, reserving 1-9 for special use in the future." into jb-mr1-dev 2012-09-17 14:56:03 -07:00
Amith Yamasani
07a0ede729 Start userId from 10, reserving 1-9 for special use in the future.
Change-Id: I3d0c1717d8b3add75ba43ed98e53ba02e6682c34
2012-09-17 14:54:26 -07:00
Kenny Root
6a9b2cb7fe Use shared app gid for dalvik cache
For forward-locked apps, we need to be able to read the optimized dex
file from a common place. Make it owned by the shared app GID as well.

Bug: 7178231
Change-Id: Ib36d79e8df69d58e8e1e0f167659df995dc84b84
2012-09-17 14:02:39 -07:00
Amith Yamasani
3b49f07a45 Add UserManager.getUserIcon()
So that we don't abuse the setUserIcon() for reading. So the new method won't try
to create the file, only return it if it exists.

Change-Id: I7a81d3f1b29d14d37e71f531744ce39f21d827ac
2012-09-17 12:42:00 -07:00
rich cannings
36c67c236e Enable package verification
Turn on package verification, if a verifier exists. Play app is a verifier.

Bug: 7064853
Change-Id: Id7d478a216d10b0a612678d6a9b0ee7f2037204a
2012-09-16 16:20:23 -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
rich cannings
13d428e830 Send more information to verifiers
Send package name, version code and the uid of the application requesting the
install to package verifiers.

Bug: 7164155
Change-Id: I2464dc5d4551f60b4f38f7982495a8920c83e1cd
2012-09-14 14:25:52 -07:00
rich cannings
e4bf0eae06 DEFAULT_VERIFY_ENABLE turns verification off
When DEFAULT_VERIFY_ENABLE == false, package verification must be completely
off.

Bug: 7132197
Change-Id: Icc0dbb4a3f4f5f00ddadecda6cc42976618c4332
2012-09-14 13:40:30 -07:00
Kenny Root
0b2fa8ca22 Don't prematurely delete temporary files
When verification and encryption is used, the temporary file was deleted
prematurely.

Also, on next boot-up, scan the directory we use for temporary files to
clean them up if the user rebooted in the middle of installation.

Bug: 7132197
Change-Id: Ic9e8aab9a664ca00d9ac16f72e53fc43d78d21bc
2012-09-14 10:34:21 -07:00
Kenny Root
24271a8c4c Merge "Use shared app gid for forward-locked processes" into jb-mr1-dev 2012-09-13 14:43:20 -07:00
Kenny Root
aefd73d2b9 Merge "Try to avoid possible NPE" into jb-mr1-dev 2012-09-13 08:38:26 -07:00
Kenny Root
0f001d3ee0 Try to avoid possible NPE
For some reason .getParent() appears to be returning null for a data
directory. We don't need to use the parent; we can just use the path.

Bug: 7151733
Change-Id: I5e17cc14fe53669882329d67d8a7b4ec35b81104
2012-09-13 08:36:49 -07:00
Jeff Brown
f69c812f49 Wait for installd to finish starting before booting.
Fixes a race condition where the system server might
try to access /data/user/0 before it was created.  In so
doing, the system server could end up creating a directory
in that location with the wrong permissions and everything
would promptly crash.

Bug: 7151686
Change-Id: I349c12fd2b9685d2e7f6305e74f6bf7d5816b752
2012-09-12 17:00:34 -07:00
rich cannings
4a86019aee Temporarily turn off package verification
Bug: 7152858
Change-Id: Ic3b1900e486224dafcf3cce5db13e5f795650b51
2012-09-12 14:45:58 -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
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
Kenny Root
a36180925b Merge "Remove "unlinklib" command from installd" into jb-mr1-dev 2012-09-11 11:13:53 -07:00
Amith Yamasani
faea76ff8b Enforce a user limit
By default only 1 user is allowed. Some devices permit more than 1.
Set the real user limit in a device overlay for config.xml

Change-Id: I2e0bffa13393b954fcd20e55b92f20de980c58c0
2012-09-11 10:59:48 -07:00
Kenny Root
9bbd70a963 Remove "unlinklib" command from installd
unlinklib is no longer necessary since libraries are now either stored
in an ASEC container or in /data/app-lib

Replace lib directory with a symlink to the /data/app-lib directory even
if it's a dangling link. That way developers don't name something "lib"
in their directory which gets blown away during an update.

Change-Id: I142cf13dba9c13aafbaf0ff8d5e9872cbf1cc910
2012-09-11 10:55:17 -07:00