88 Commits

Author SHA1 Message Date
Kenny Root
51a573c767 Wait for ASECs to be scanned before proceeding
Move MountService up the list, then pause waiting for MountService to
finish scanning ASECs before the services that require those packages to
be ready.

Additionally, don't automatically mark all ASEC apps as FLAG_EXTERNAL on
reboot. This prevents AppWidgets and other things from being used with
ASECs which are on internal storage.

Bug: 6445613
Change-Id: I3e0b3e244fec966814d7a5ea93de5d337aea79bd
2012-05-17 16:06:54 -07:00
Kenny Root
11e123f768 Merge "Check system app before removal" into jb-dev 2012-05-16 18:59:04 -07:00
Kenny Root
87b5d7b26e Check system app before removal
Mae sure we check to see whether an app is really deleted or just
skipped.

Bug: 6494869
Change-Id: I918f16e4ccda87f7f6f67855c7a7aef435c64e20
2012-05-16 15:40:00 -07:00
Kenny Root
a69b7eb1fc Change thread priority for disk measurement to bg
Change the thread priority for all disk measurement and statfs calls to
background priority.

Also move the measurement fully into the measurement task since it makes
more sense.

Bug: 6332097
Change-Id: Iafc2151313ad9b14117daf67e933dccd32f68d54
2012-05-14 15:02:19 -07:00
Jeff Brown
5877023221 Merge "Move power HAL interactions to PowerManagerService." into jb-dev 2012-05-11 19:32:56 -07:00
Jeff Brown
7304c34382 Move power HAL interactions to PowerManagerService.
This refactoring sets the stage for a follow-on change that
will make use additional functions of the power HAL.

Moved functionality from android.os.Power into PowerManagerService.
None of these functions make sense being called outside of the
system server.  Moving them to the PowerManagerService makes it
easier to ensure that the power HAL is initialized exactly once.

Similarly, moved ShutdownThread out of the policy package and into
the services package where it can tie into the PowerManagerService
as needed.

Bug: 6435382
Change-Id: I958241bb124fb4410d96f5d5eb00ed68d60b29e5
2012-05-11 18:42:42 -07:00
Jeff Sharkey
f53857716a Enforce READ_EXTERNAL through Settings.Secure.
Always defers to user-defined setting, when present.

Bug: 6389556
Change-Id: I079d2a41b772facfdac74eefc4c8072fc9284f97
2012-05-11 15:31:39 -07:00
Kenny Root
88670d816b Use the right flag types when creating InstallArgs
Need to use PackageManager.INSTALL_{EXTERNAL,FORWARD_LOCKED} for
createInstallArgs instead of ApplicationInfo.FLAG_etc for the install
args to be created correctly. If certain flags conflict, there will be a
failure to delete the package.

Change-Id: Ibd8705943371596b2f2d6c24bd071b737ca74ef4
2012-05-09 16:02:09 -07:00
Kenny Root
208d341bbd Handle addition of system apps during OTA
If there were apps already installed that were added in a later system
OTA, bad things would happen.

If the previously installed application is an older version, simply
delete the installed application. If the system app is older than the
previously installed one, mark it as a disabled system app and use the
previoulsy installed application.

Additionally, the application will now have the correct granted
permissions.

Bug: 6251602
Change-Id: Iea444b6acac460fca1e08d4e2cbf68a258214ca6
2012-05-08 15:57:44 -07:00
Kenny Root
c52d6fd043 Prune hidden system apps when removed via OTA
System applications which had an update applied to them at some point
were in a semi-broken state when removed via an OTA. The
"updated-package" setting would stay around forever and permissions
wouldn't be revoked.

Change-Id: I908e813b5de59c0f777d9b051253b28255a1c694
2012-05-07 23:07:49 -07:00
Anonymous Coward
ceb1b0bfae Add encryption parameters to package installation
Change-Id: Ic9f8ab9f8110f08bb3c00725cfce5b8ee7b766f3
2012-05-07 16:34:49 -07:00
Kenny Root
bf023589b3 Fix some problems with ASECs
On devices that had external storage, permissions weren't set correctly
on non-forward-locked applications. Also, moving forward locked
applications didn't work since DefaultContainerService wasn't able to
read it.

Fixed some faulty unit tests as well.

Bug: 6427212
Change-Id: I5c1f0bf5278549069c78939f0708c4c43a7d4006
2012-05-02 17:09:57 -07:00
Kenny Root
6dceb88f1c Allow forward locked apps to be in ASECs
We couldn't put forward-locked apps in ASEC containers before since we
didn't have any permissioned filesystems. This adds the ability for
forward-locked applications to be in ASEC containers.

This means that forward locked applications will be able to be on the SD
card now.

This change also removes the old type of forward-locking that placed
parts of apps in /data/app-private.  Now all forward-locked applications
will be in ASEC containers.

Change-Id: I17ae0b0d65a4a965ef33c0ac2c47e990e55707ad
2012-04-25 14:17:02 -07:00
Dianne Hackborn
5c6d80c934 am 27e1680b: am 5a3370e5: am 50b53700: Merge "Fix for too many binder calls in packagemanager"
* commit '27e1680b5cd3694029ddac4128050b17f59f235e':
  Fix for too many binder calls in packagemanager
2012-04-24 14:51:19 -07:00
Amith Yamasani
9392ad25a8 Merge "Fix dumpsys package." 2012-04-20 17:37:43 -07:00
Amith Yamasani
7ea3e7df1f Fix dumpsys package.
Was bailing out due to insufficient permissions to query users.

Bug: 6374050
Change-Id: Ic4a4ab32e2efb4d1fc1f1607fd304f99d5382743
2012-04-20 15:19:35 -07:00
Kenny Root
2782a478d0 Move forward lock utilities to PackageHelper
The forward lock utilities will need to be called from
DefaultContainerService for ASEC packages in the future. Move them to
PackageHelper to aid in the transition.

Also move the public resource copying to the FileInstallArgs step which
makes a little bit more sense.

Change-Id: I3a62ac817719db3ee1c89c106a551dcbe9c44744
2012-04-20 14:40:03 -07:00
Henrik Engström
9771a3144c Fix for too many binder calls in packagemanager
The packagemanager uses a ParceledListSlice to send back its lists
of installed packages and apps. The list slice has a method append
which, in addition to adding the item to the list, also returns true
if the list has passed a size limit (about 1/4 of the total possible
IPC parcel size) to let the caller know that he should send the
slice. However, when used by the pm, it has an extra ! that makes it
send whenever it ISN'T over this limit instead (and conversely, not
send if it is under). This causes a lot more calls than needed since
it sends tiny one item slices instead of larger ones. This patch
removes the extra ! making it behave correctly.

Change-Id: I8db46d380a25406b55f3214aee1505e81949acc5
2012-04-20 12:49:13 +02:00
Kenny Root
313a93ddf9 Merge "Close streams for forward-locked apps" 2012-04-14 18:43:53 -07:00
Kenny Root
3f99afc0d5 Close streams for forward-locked apps
Forward-locked apps aren't very prevalent, but it needed to be
restructured to make sure both streams and ZipFile objects are closed.

Change-Id: I41f863224fecd24069e525e9ce3738de8237bd5e
2012-04-14 12:23:13 -07:00
Kenny Root
011d778c9f Merge "Add warning log for mismatched signatures" 2012-04-14 12:16:58 -07:00
Kenny Root
8c11f1d6ab Add warning log for mismatched signatures
It's difficult to see in bugreports when this situation arises. Add a
small log so we can easily determine installation failure reason.

Change-Id: Ie59c205cf731cad7b3d04ceb995e58a093c62455
2012-04-14 12:11:40 -07:00
Jeff Sharkey
854b2b1670 Surface list of apps with given network policy.
Bug: 6007276
Change-Id: I0f0e939ee6481496480c4afaa108c99eb158547c
2012-04-13 19:46:33 -07:00
Jeff Sharkey
5d32e772b3 Enforce READ_EXTERNAL on non-user builds.
Enable default enforcement of READ_EXTERNAL_STORAGE on non-user
builds. Users can still explicitly enable enforcement in Settings.

Bug: 6131916
Change-Id: I7dc66b624ad252ed2a2ad3647f3ea85dda7f8e82
2012-04-12 23:29:14 -07:00
Jeff Sharkey
1c27576aff Include enforcement state in dumpsys.
Bug: 6323087
Change-Id: I6d779798538c114ea9816d3bdbbff5552c285df6
2012-04-11 19:07:08 -07:00
Amith Yamasani
135936072b User management and switching
Broadcast intents that get sent out when users are added/removed/switched.

More work on generating user-specific information in package manager queries.
APIs to update user name and query a user by id.
Removed Package.mSetStopped and mSetEnabled, since they're not user specific.

User removal:
- Cleanup ActivityManager, PackageManager, WallpaperManager, AppWidgetService
  and AccountManager.
- Shutdown processes belonging to the user.

Don't show vibrate option in long-press power if there's no vibrator.

Lock the screen when switching users, to force unlocking.

Change-Id: Ib23a721cb75285eef5fd6ba8c7272462764038fa
2012-03-27 11:23:01 -07:00
Jeff Sharkey
69f819b397 Merge "Include GIDs for unenforced permissions." 2012-03-23 15:21:00 -07:00
Jeff Sharkey
b9a070189c Include GIDs for unenforced permissions.
When READ_EXTERNAL_STORAGE isn't enforced, grant its GID to all
launched processes.  When changing enforcement, kill all processes
below foreground adjustment, causing them to be relaunched with
update GIDs.

Bug: 6131916
Change-Id: I6d83efc937919f13a1a7d9caac902e572869406a
2012-03-23 10:22:54 -07:00
Amith Yamasani
483f3b06ea Package restrictions per user
Packages can be enabled/disabled per user.
This requires maintaining stopped/launched states and
enabled / disabled components and packages per user.

Refactored pm.Settings and PackageSettingsBase to keep
track of states per user.

Migrated the stopped-packages.xml to users/<u>/package-restrictions.xml

Changed intent resolution to handle individual user restrictions.
Bunch of IPackageManager calls now have a userId argument.
Make AppWidgetService handle removals of packages.

Added some tests for pm.Settings and PackageManager.

Change-Id: Ia83b529e1df88dbcb3bd55ebfc952a6e9b20e861
2012-03-22 10:08:24 -07:00
Jeff Sharkey
edc84ee839 Selective enforcement of READ_EXTERNAL_STORAGE.
Store enforcement state of specific permissions, allowing them to be
selectively enforced. Currently supports READ_EXTERNAL_STORAGE, which
by default isn't enforced, but enforcement can be enabled at runtime.

Bug: 6131916
Change-Id: I4bcc215a2eb5e6507d6257b577311cbd13c77acf
2012-03-19 19:01:45 -07:00
Dianne Hackborn
6569625bee Fix issues #6103378 and #5959515.
Change-Id: I762d86dd7119c9ac02f4b8803c4a250c6b7637c7
6103378: APR: IOOBE at android.content.pm.PackageParser.generatePackageInfo(
    PackageParser.java:355)
5959515: PackageManager doesn't validate className in setComponentEnabledSetting
2012-03-05 18:49:21 -08:00
Dianne Hackborn
0450510f59 Fix issue where pm would clear preferred apps when updating an app.
The code for this was fairly conservative since the components of the
apps could change, leaving junk in the preferred app list.  Now we
don't pro-actively clear them, but try to catch missing components
later.

Change-Id: I793063449dcc577fd3d56bb56495b308f0c95ea8
2012-02-29 12:34:04 -08:00
Dianne Hackborn
e639da7baa New development permissions.
These are permissions that an application can request, but won't
normally be granted.  To have the permission granted, the user
must explicitly do so through a new "adb shell pm grant" command.

I put these permissions in the "development tools" permission
group.  Looking at the stuff there, I think all of the permissions
we already had in that group should be turned to development
permissions; I don't think any of them are protecting public APIs,
and they are really not things normal applications should use.

The support this, the protectionLevel of a permission has been
modified to consist of a base protection type with additional
flags.  The signatureOrSystem permission has thus been converted
to a signature base type with a new "system" flag; you can use
"system" and/or "dangerous" flags with signature permissions as
desired.

The permissions UI has been updated to understand these new types
of permissions and know when to display them.  Along with doing
that, it also now shows you which permissions are new when updating
an existing application.

This also starts laying the ground-work for "optional" permissions
(which development permissions are a certain specialized form of).
Completing that work requires some more features in the package
manager to understand generic optional permissions (having a
facility to not apply them when installing), along with the
appropriate UI for the app and user to manage those permissions.

Change-Id: I6571785c6bb5f6b291862b7a9be584885f88f3a5
2012-02-23 16:39:15 -08:00
Joe Onorato
20963df86f Show the flags in package manager debugging. 2012-02-10 14:44:07 -08:00
Dianne Hackborn
21fbd1f7da Some cruft removal.
Change-Id: If4a94bfd4a033748eb13e8f3ff25e24382746778
2012-02-10 10:54:15 -08:00
Amith Yamasani
742a671273 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
2012-02-03 12:01:47 -08:00
Andy McFadden
2f36229db8 Use Map.Entry, not HashMap.Entry
Map.Entry is the defined return value from entrySet().  HashMap.Entry
shouldn't be used directly.

Change-Id: Ia21598c6a73fe7eb22179ce114095f779c903084
2012-01-20 14:43:38 -08:00
Nick Kralevich
70522addd0 Don't allow reading of packagelist files.
Ensure that all requests to read the list of installed packages
go through the PackageManager directly. Don't allow non-system
program to directly read the raw package list files.

Change-Id: Id083e6b3de4dd9173abfdc741ebf3f60997a1052
2012-01-06 13:58:01 -08:00
Dianne Hackborn
bfd89b35ba Don't forget to close files.
Change-Id: Ibfe465e1d7a947bbe40da17e8e8a2713856f95b5
2011-12-15 18:22:54 -08:00
Dianne Hackborn
f5b8671c34 Fix issue #5714517: App shortcuts can result in bad task intents
New API to let you build an Intent whose base configuration is correct,
but has an additional "selector" to pick out the specific app that you
would like launched.

Change-Id: Ide9db6dc60e2844b7696cfe09b28337fe7dd63db
2011-12-05 17:42:41 -08:00
Dianne Hackborn
ee9aef0b42 Maybe fix issue #5627399: java.lang.RuntimeException - While sign in...
...through setup wizard after wipe data

Deal with finish() being called when there are no running activities
on the stack.

Also some improved debugging output.

Change-Id: Ia1d3f3f7e7b79c06ca95c738081322fc80282e0d
2011-11-16 13:21:46 -08:00
Kenny Root
62539e9efa Close file on exception as well
Bug: 5458045
Change-Id: I4c79b9c273ff69dda292e5cc7b2b60f8db2edbd9
2011-11-10 09:40:53 -08:00
Dianne Hackborn
58f42a59bd Fix issue #5405788: Device continuously opening and closing...
...the "Complete action using" dialog

When an application goes idle, it sends back to the activity manager
the configuration it last used, to make sure the two don't get out
of sync.  Fix a bunch of edge cases here in dealing with that, and
be sure to also send the current configuration when launching an
activity so the client is always up-to-date when launching.

Also a small fix to not show the upgrading dialog during first boot.

Change-Id: I14ed366a87cd689d1c78787369e052422290ac6f
2011-10-10 14:53:08 -07:00
Kenny Root
a503a0f5d4 Add explicit mimetype for verifier calls
Change-Id: I29ffb216680aa24fd9ca3fb4d190038f6d724cb9
2011-10-03 14:46:10 -07:00
Kenny Root
05ca4c9064 Allow non-required package verifiers
* Verifiers can be specified in the AndroidManifest.xml

* Those verifiers can respond to the new Intent action

* PackageManager API for those verifiers: verifyPendingInstall

Change-Id: I4892bce2e6984871e6e93c60a1ca0dae145f5df5
2011-09-23 16:03:03 -07:00
Dianne Hackborn
67c5b12511 Merge "Fix issue #5321282: Force Stop Button in Battery Screen Not disabled correctly" 2011-09-23 12:56:42 -07:00
Kenny Root
fec5e75c96 Less verbose message when dexopt non-APK
The message when something is not an APK that is submitted for dexopt is
not extremely helpful. Make it more precise and remove the useless
traceback.

Change-Id: Ibb34b2b2c10ee28ea98662c3f6fd070529cf8c4f
2011-09-23 10:13:06 -07:00
Dianne Hackborn
80a7ac1063 Fix issue #5321282: Force Stop Button in Battery Screen Not disabled correctly
If the app had activities still finishing, when we checked whether it was
now stopped we would get told no.  Also some other improvements:

- Schedule an idle as part of the force stop, to get any finishing
  activities out of the stack soon rather than waiting for some activity
  to idle.
- Don't filter out stopped system apps.  This is dangerous because
  system apps may have no way for the user to explicitly launch them,
  so they could get put into a stopped state for which there is no way
  to get them out.  Also if the user really wants a system app to not
  run, the new disabling mechanism is more appropriate.

Change-Id: I34003f21dac29e2ca0f66a23b88c710de41bab99
2011-09-22 18:32:52 -07:00
Kenny Root
3a9b5fbb97 Unhide new PackageManager APIs for API 14
Change-Id: I83110285ccee39a4cd872a1c2af8357f541833d4
2011-09-20 14:35:10 -07:00
Kenny Root
0aaa0d9317 Add verifier device identity
This adds a special device identifier that is usable only for device
validation. The user will be presented with this number encoded in
easily-transcribable Base32 in the Developer options of Settings.

Change-Id: I4843f55ee90d689a51d0269b22454ca04c1be7ec
2011-09-13 16:02:43 -07:00