467 Commits

Author SHA1 Message Date
Christopher Tate
86b391cd03 Prune shared users that the system declares but does not use
Bug 10184643

Change-Id: I72c5177c621c24fac34bf8744eb6c5108b6d3464
2013-09-13 16:58:36 -07:00
Christopher Tate
a2a0850de8 Add hidden API for querying available 'home' activities
To support improved home-app selection UX in Settings.

Bug 9958444

Change-Id: I106090784618bf7bea6fce28f4f9b9fb8480d310
2013-09-13 12:16:00 -07:00
Jeff Sharkey
cc8f710a50 Include system packages in packages.list.
This provides group membership to the FUSE daemon, since system
packages like NFC and Bluetooth hold sdcard_rw.

Bug: 10610659
Change-Id: I7428e999cfa4087ffe220b9d8bd80827191ab997
2013-09-10 16:57:24 -07:00
Amith Yamasani
d304af6989 Remove unused APIs and rename others based on API review
Restrictions challenge is only to be used by device admins.

Bug: 10461761
Change-Id: I3db1249e2ce99f386602de59ed930302bb0a97fb
2013-09-05 09:30:23 -07:00
Jeff Sharkey
5dea7d554a Skip packages with missing metadata.
Otherwise this would result in NPE, and packages.list would never
be updated.

Bug: 10577538
Change-Id: I35a4407dbc283ab20a4c45a2ea1a14b04044c98c
2013-09-03 12:01:20 -07:00
Amith Yamasani
79a45c6f18 Merge "Improve Intent disambig dialog behavior" into klp-dev 2013-08-29 21:45:04 +00:00
Geoffrey Borggaard
15b8b2c068 UserManagerService upgrades users on first restart.
This causes all restriction pins to be reset.

Bug: 10535070
Change-Id: Ia2abf904505514d7e555b420c2b032a0094e0643
2013-08-29 13:07:49 -04:00
Amith Yamasani
e9ecc8b499 Improve Intent disambig dialog behavior
Keep track of last chosen activity for a particular intent, similar
to how it is tracked for "Always" choices.
Pre-select the last chosen activity if previously the user picked
"Just once".
Downgrade "Always" to "Last chosen" if there's a new kid on the block,
instead of removing it entirely.
Add methods to set and get last chosen entry.

UI - switch from Grid to List.

Bug: 9958096

Change-Id: Ied57147739a3ade1d36c3a7ec1e8ce77e5c5bb16
2013-08-27 18:05:00 -07:00
Jose Lima
bb9682e120 Allow replacing ResolverActivity via config value
Changed PackageManager to read a config value that indicates if
the default ResolverActivity should be replaced by a custom version.
This config value can be replaced via an overlay.

Bug: 10081151
Change-Id: I6f1c59d053b89fabf52bcda620eb5d4026406701
2013-08-20 10:46:14 -07:00
Jeff Sharkey
02e4d16ed9 Add GIDs to packages.list, update SD card perms.
Write supplementary GIDs to packages.list for lower-level system
components to parse.

WRITE_EXTERNAL_STORAGE also implies sdcard_r GID. Switch to always
enforce READ_EXTERNAL_STORAGE permission. Update permission docs to
mention new behavior.

Change-Id: I316ba4b21beebb387ac05c80980ae9b38235b37d
2013-08-12 20:31:36 -07:00
Jeff Sharkey
6e14b22cfe Merge "APIs for multiple external storage devices." into klp-dev 2013-08-12 00:13:35 +00:00
Jeff Sharkey
1abdb71230 APIs for multiple external storage devices.
Provide developer APIs to discover application-specific paths on
secondary external storage devices.  Covers files, cache, and OBB
directories.  Apps will not have write access outside their package-
specific directories on secondary devices, so only primary storage is
exposed through Environment.

Creation of .nomedia files will be handled by FUSE daemon in future
change.

Change-Id: Ifcce6201a686d80269d7285adb597c008cf8fa7c
2013-08-11 17:07:44 -07:00
Jeff Sharkey
184a0100ab Allow packages.list access with new GID.
The FUSE daemon is using packages.list to map from package name to
appId after it drops permissions, so create a new "package_info" GID
to grant read access.

Also switches FileUtils to use Libcore.os.

Change-Id: I9451ca4e90e8a985526805c6df0888a244a1db36
2013-08-08 17:38:13 -07:00
Ben Gruver
e64ff1b31a Merge "Improve the logic for determining whether the caller is a system app" 2013-08-08 00:09:23 +00:00
Ben Gruver
dd72c9ed55 Improve the logic for determining whether the caller is a system app
Bug: 10024554
Change-Id: I742e918840a98dd83d713bdf7a43a919674e65fe
2013-08-07 13:59:17 -07:00
Amith Yamasani
5e486f59c7 Try again to cleanup all blocked apps
Since the Restrictions feature was removed, some cleanup code was
added to unblock apps. But the cleanup is causing some runtime exceptions
due to happening too early in the boot up sequence. Moved the cleanup
to after boot_completed broadcast is received.

Bug: 10212758
Change-Id: Id42eff16b54c24ea48cf8b3a81f77ea801264edd
2013-08-07 11:06:44 -07:00
Amith Yamasani
aac3954414 Merge "Remove restrictions PIN for all users" 2013-08-06 18:20:55 +00:00
Amith Yamasani
350962ca82 Remove restrictions PIN for all users
Bug: 10200097
Change-Id: I4d95cd49a21e8f4f6b2c141d1205f81622c395b5
2013-08-06 11:18:53 -07:00
Brian Carlstrom
f4bdcaba5d Remove member "m" prefix from now local variables
Change-Id: I7808cafc1f74c47fcd9d9a4b6a90fb50951457b1
2013-08-02 19:49:15 -07:00
Brian Carlstrom
b33278f876 Teach PackageManager to skip core-libart.jar
A little grossness for now to support dual booting Dalvik and Art.

While I was here, removed isDexOptNeeded calls for boot class path which already return false.

Change-Id: Iaaaf21b7733c1791e7bd8ae27e84c47463f9e9c9
2013-08-01 13:55:07 -07:00
Christopher Tate
072252cd48 Fix permission privilege w.r.t. updated system apps
Note that it is *intentional* that even a privileged app cannot
add new privileged permissions via unbundled update.  The set of
privileged permissions granted is strictly limited to those used
by the apk file installed as privileged.

Bug 10027033

Change-Id: I974bae0671c1962e4526d51dd9a0c53bcd27323e
2013-07-29 17:13:35 -07:00
Dianne Hackborn
5cf6663c80 Merge "Add new facility for apps to declared their preferred intents." 2013-07-23 18:30:18 +00:00
Amith Yamasani
0343ec3abb User restriction API to disable single-user restrictions feature.
Change-Id: I80e08b38b5e32f3cb1af51398907510508ec199f
2013-07-23 09:17:21 -07:00
Dianne Hackborn
b09491f271 Add new facility for apps to declared their preferred intents.
This is an extension from the existing data/etc/perferred-apps
facility.  Now applications pre-installed on the system image
can declare which intents they would like to be considered the
preferred app for.  When the system firsts initializes, or the
application settings are reset, these are used to configured
the current preferred app settings appropriately.

You use this with a new <preferred> tag under your activity,
which indicates which intents you would like to be the preferred
handler for.  The syntax for this is written much like an
intent filter, however semantically it is not really an intent
filter and so has some important differences:

- You can not use globbing patterns (for SSPs or paths).
- You can use only one action (if you use more than one it
  will only use the first one, so be careful).

Semantically what this is actually used for is a template
from which to generate a set of Intent objects, which are used
to probe the current environment in order to see if there are
multiple activities that can handle the Intent and, if so,
generate a new preferred setting for that pointing to your app.

As an example, here is how the preferred tag might be written
for the Maps application:

            <preferred>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="http" />
                <data android:scheme="https" />
                <data android:host="maps.google.com" />
                <data android:path="/" />
                <data android:pathPrefix="/maps" />
            </preferred>
            <preferred>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="geo" />
            </preferred>

From this, we generate the following set of potential Intents
to be matched, all with ACTION_VIEW, CATEGORY_DEFAULT+CATEGORY_BROWSABLE:

Change-Id: I7fd42aec8b6109c7dd20012529662362f1b7437a
http://maps.google.com/
http://maps.google.com/maps
https://maps.google.com/
https://maps.google.com/maps
geo:
2013-07-22 15:30:11 -07:00
Amith Yamasani
1a7472e722 Have UserManagerService clear the restrictions and unblock apps
Since this is an operation that could take a few seconds to run and needs to be
completed even if Settings dies, best to do it in the user manager.

Refactored PIN challenge/setup UI with a field to verify existing pin
when changing to a new one.

Change-Id: I0b7df5b2ccb7f343aa9282a9245d3bc2b577a794
2013-07-18 16:12:27 -07:00
Christopher Tate
409bb36a13 Out-of-band apk pushes to the privileged install dir
The new apk will now correctly allow system permissions to an app
placed in the privileged install dir via 'adb push' on the fly.

Change-Id: Ie4284d12628e08d9562d18eee6a7e8f74ae6295e
2013-07-12 12:33:09 -07:00
Kenny Root
3b4d69508a Merge "KeySetManager: convert comments to Javadoc" 2013-07-10 19:35:49 +00:00
Amith Yamasani
235e817c80 Merge "Clean up any restrictions files that shouldn't be there." 2013-07-09 18:32:41 +00:00
Amith Yamasani
b82add27d0 Clean up any restrictions files that shouldn't be there.
Partially fixes the mess that was caused by #9681399

Change-Id: Iaabe15c87d1b002f0b2210b34adcc31b8fb4329c
2013-07-09 11:24:44 -07:00
Kenny Root
2042e9df48 KeySetManager: convert comments to Javadoc
To help with development, change comments to Javadoc and adding some
links.

Change-Id: Id97febd978f14bace8242d8e0610b1166a13265b
2013-07-08 16:28:35 -07:00
Kenny Root
ee302758d6 Merge "KeySetManager: change KEYSET_NOT_FOUND to public" 2013-07-08 20:25:27 +00:00
Ying Wang
fb236b56d2 Fix build.
Change-Id: I2348e75e95581b1e5acf1c52b83948e46547a19e
2013-07-08 10:53:58 -07:00
Kenny Root
9a995f57a3 KeySetManager: change KEYSET_NOT_FOUND to public
Make the constant KEYSET_NOT_FOUND so that other source code components
can use that as the sentinel value directly instead of -1

Change-Id: If89de5fb312d55e360b96aadbc6effcd480043b2
2013-07-08 09:37:24 -07:00
Kenny Root
df0e6abd9f KeySetManager: add keyset aliases to dump
Add the list of aliases defined to the dumpsys output.

Change-Id: I8bba20fba8dd123f749372cab7b8f038aa47331f
2013-07-03 13:40:16 -07:00
Kenny Root
92179bc261 KeySetManager: iterate over correct list
Change-Id: I43e18e824e62b3ec54964ace1485a45616b962f2
2013-07-02 11:55:45 -07:00
Amith Yamasani
5fa9f2b127 Merge "Single-user restrictions" 2013-06-26 23:04:32 +00:00
Christopher Tate
46eadae12f Make sure to propagate privileged status when upgrading an app
Bug 9470309

Change-Id: Ibc0c8b2fa01da1bd5f5b6ed5530a6bd9a1384846
2013-06-26 14:22:21 -07:00
Amith Yamasani
655d0e2029 Single-user restrictions
Introduces a new "blocked" state for each package. This is used to temporarily
disable an app via Settings->Restrictions.

PIN creation and challenge activities for use by Settings and other apps. PIN
is stored by the User Manager and it manages the interval for retry attempts
across reboots.

Change-Id: I4915329d1f72399bbcaf93a9ca9c0d2e69d098dd
2013-06-25 16:03:55 -07:00
Christopher Tate
a5df9aa497 am 3c0cd0b5: am 34718238: am 3e7d0344: Merge "Avoid adding FORWARD_LOCK flag to an updated system app"
* commit '3c0cd0b54064f81a6a74d895707453fb0132719c':
  Avoid adding FORWARD_LOCK flag to an updated system app
2013-06-25 16:02:13 -07:00
Dianne Hackborn
8c84109b9f Use FastPrintWriter... everywhere.
One problem this turned up is, because FastPrintWriter does
its own buffering, a lot of code that used to use PrintWriter
would fail -- if it pointed to a StringWriter, there was no
buffering, so it could just immediately get the result.  Now
you need to first flush the FastPrintWriter.

Also added some new constructors to specify the size of buffer
that FastPrintWriter should use.

Change-Id: If48cd28d7be0b6b3278bbb69a8357e6ce88cf54a
2013-06-24 18:16:48 -07:00
Christopher Tate
347182386c am 3e7d0344: Merge "Avoid adding FORWARD_LOCK flag to an updated system app"
* commit '3e7d0344399ac2f607fddde32c1a5e54228a38f9':
  Avoid adding FORWARD_LOCK flag to an updated system app
2013-06-24 16:05:49 -07:00
Christopher Tate
3e7d034439 Merge "Avoid adding FORWARD_LOCK flag to an updated system app" 2013-06-24 23:02:00 +00:00
Geremy Condra
a2d8eae289 Remove logging of KeySet parse errors.
Bug: 9532748
Change-Id: I3cce41de74783a121d2cd4f7b0ea6dfa03e3d7c5
2013-06-21 16:59:42 -07:00
Geremy Condra
e201f581f6 Merge "Stop spewing errors into the logs." 2013-06-18 18:02:14 +00:00
Geremy Condra
bf7b1f4744 Stop spewing errors into the logs.
These are for debugging. Marking them that way.

Bug: 9479475
Change-Id: Ia0c27829583ecbab58a60a8c8350e9c099b812c2
2013-06-18 10:52:45 -07:00
Christopher Tate
ccbf84f44c Some system apps are more system than others
"signatureOrSystem" permissions are no longer available to all apps
residing en the /system partition.  Instead, there is a new /system/priv-app
directory, and only apps whose APKs are in that directory are allowed
to use signatureOrSystem permissions without sharing the platform cert.
This will reduce the surface area for possible exploits of system-
bundled applications to try to gain access to permission-guarded
operations.

The ApplicationInfo.FLAG_SYSTEM flag continues to mean what it is
says in the documentation: it indicates that the application apk was
bundled on the /system partition.  A new hidden flag FLAG_PRIVILEGED
has been introduced that reflects the actual right to access these
permissions.

At some point the "system" permission category will be
renamed to "privileged".

Bug 8765951

Change-Id: I6f0fd9cdb9170e076dfc66d83ecea76f8dd7335d
2013-06-17 12:47:35 -07:00
Dianne Hackborn
df1c0bf774 Add scheme specific part to IntentFilter.
Change-Id: I063d086cdc742800b8e31ddf2942f2e9230e2785
2013-06-12 18:08:17 -07:00
Dianne Hackborn
cbfd23ee6f Add new API to retrieve a dumpsys of a single package.
Adds a platform API, and pm command.  Fixes some issues with
dumping per-package data in package manager, makes battery
stats able to dump per-package state.

Change-Id: I76ee6d059f0ba17f7a7061886792b1b716d46d2d
2013-06-11 14:26:53 -07:00
Dianne Hackborn
21d9b56692 Add more details about why a force stop is happening.
Change-Id: Ia938cf6fc37ad22fc7447dc538968c7bd234be7d
2013-05-28 17:46:59 -07:00
Dianne Hackborn
f4bf0ae2a7 New ArrayMap class.
This is a new kind of key/value mapping that stores its data
as an array, so it doesn't need to create an extra Entry object
for every mapping placed in to it.  It is also optimized to reduce
memory overhead in other ways, by keeping the base object small,
being fairly aggressive about keeping the array data structures
small, etc.

There are some unit and performance tests dropped in to some
random places; they will need to be put somewhere else once I
decided what we are going to do with this for the next release
(for example if we make it public the unit tests should go in
to CTS).

Switch IntentResolver to using ArrayMap instead of HashMap.

Also get rid of a bunch of duplicate implementations of binarySearch,
and add an optimization to the various sparse arrays where you can
supply an explicit 0 capacity to prevent it from doing an initial
array allocation; use this new optimization in a few places where it
makes sense.

Change-Id: I01ef2764680f8ae49938e2a2ed40dc01606a056b
2013-05-24 16:36:14 -07:00