Commit Graph

3703 Commits

Author SHA1 Message Date
Dianne Hackborn
0c6cc308cf Merge "Add new target SDK filtering feature to BroadcastOptions." 2015-12-10 20:13:29 +00:00
Dianne Hackborn
e0e413e2b1 Add new target SDK filtering feature to BroadcastOptions.
You can now control the range of target SDKs that receivers
will be need to have in order to receive your broadcast.

Use this for CONNECTIVITY_ACTION to not allow N+ applications
to receive these broadcasts through their manifest.

Also tweak the broadcast debug output code to now include the
disposition of each receiver in the list.  This is becoming
important as skipping receivers is becoming a more common
thing to have happen.

Change-Id: I251daf68575c07cbb447536286ab4e68b7015148
2015-12-10 12:12:00 -08:00
Jeff Sharkey
98cb23dccf Merge "Slight API renaming, better behavior." 2015-12-09 22:51:43 +00:00
Jeff Sharkey
e13529a4ad Slight API renaming, better behavior.
Rename APIs to reflect that they're storage-related.  Also move
credential-storage APIs to be system API.

Return a null Context when device-encrypted storage isn't
supported.  This is the easiest way to keep legacy apps working when
upgrading from M to N.

Reduce strictness of path checking so we don't crash when working
with special packages like "android".

Bug: 22358539, 26104027
Change-Id: I38c24fc003488186210a6ae3b64270f86e1efe56
2015-12-09 15:22:54 -07:00
Dianne Hackborn
27cf982641 Merge "Add a mechanism for broadcasts to control background dispatching." 2015-12-09 21:50:32 +00:00
Dianne Hackborn
6ac42aeed9 Add a mechanism for broadcasts to control background dispatching.
Right now this is just for the BOOT_COMPLETED broadcast to allow
all apps to receive it.

Also clean up the dumpsys of the broadcast queue to not have
every little detail of ResolveInfo+ActivityInfo+ApplicationInfo,
which is just not useful and makes reading the broadcast queue
debug output a lot harder because of so much noise there is.

And rename the package shell query-intent-* commands to a
shorter query-* form.

Change-Id: I0d01565babb87e68b840c9756a2ea730d699efc7
2015-12-09 11:31:51 -08:00
Roozbeh Pournader
1168548de3 Merge "Fix null locale edge cases in Configuration and Resources" 2015-12-09 00:49:39 +00:00
Jeff Sharkey
103d61b9f7 Merge "Shift around encryption public APIs." 2015-12-08 22:29:52 +00:00
Jeff Sharkey
7a30a30ebe Shift around encryption public APIs.
There are far too many Context APIs with special directory paths
to replicate device-encryption versions of them all.  Instead, add
methods to clone a Context that explicitly stores its data in either
credential- or device-encrypted storage.

Methods to test the behavior of a given Context.

Bug: 22358539
Change-Id: I6a6290a9b282605ce9a1f82742fc2c4c50536754
2015-12-08 15:24:29 -07:00
Alan Viverette
d35c13df6e Merge "Attach drawable resource ID and name to getDrawable() exceptions" 2015-12-08 19:49:56 +00:00
Alan Viverette
c078c605ab Attach drawable resource ID and name to getDrawable() exceptions
Wraps the entire getDrawable() method in a try/catch block. Clears the
stack trace from the re-thrown exception, since we only need the trace
from the original exception.

Also clears stack traces from re-thrown RuntimeExceptions in applyTheme
implementations.

Change-Id: I92396abf9e748eef78777174b297a09e118f5e70
2015-12-08 14:49:13 -05:00
Svet Ganov
2acf063da0 Ephemeral cookie API
Add APIs for an ephemeral app to set a cookie which is a small
peice of data cached longer than the app itself. This is useful
for avoiding the user to login every time they use the ephemeral
app. The cookie is stored after an ephemeral app is uninstalled.
Normal apps or ephemeral apps upgraded to full apps can also use
these APIs with the difference that once they are uninstalled
the cookie is deleted.

The cookie size defaults to 16KB and is configurable by a global
settings which can be adjusted via gservices. Also eviction policy
is time based with a default of one month and is configurable by
a global setting which can be adjusted via gservices. If the cert
of the app cahnges (when ephemeral is installed, uninstalled and
installed again) the cooke is wiped to prevent data leaks.

This cahange also adds an API for apps to know whether they run in
an ephemeral mode since it this mode some APIs will not be available.
Another API exposed by this change is private for the system and
exposes all ephemeral apps - installed and uninstalled. Only the
system can call this API. When an ephemeral app is uninstalled the
system stores its name, icon, and permissions. When the app is
reinstalled or a full version is installed the permissions are
propagated.

Change-Id: Id4a73a7750bfbabda0bfcb9bf9018d2062e94367
2015-12-08 19:17:15 +00:00
Lenka Trochtova
c4dd021322 Introduce ephemeral users.
BUG: 24883058

Change-Id: I2e1d6aa184142c2a3dc0415c0cd407573453cf41
2015-12-08 15:47:10 +01:00
Jeff Sharkey
6a6cdafaec APIs to obtain SharedPreferences paths.
Needed for apps that want to migrate SharedPreferences from CE to DE
storage.  Note that a device will only ever enter a CE mode with a
factory reset, so apps should only be using these APIs when they
want to migrate files to a consistent location on non-FBE devices
for simplicity.

Bug: 25503089
Change-Id: Ic846215da1617d116a048e036415ac7ad523b770
2015-12-07 19:25:25 -07:00
Rubin Xu
cc586c5ab1 Merge "Introduce quiet mode state to managed profile users" 2015-12-07 21:52:40 +00:00
Rubin Xu
0a29ecd8a5 Introduce quiet mode state to managed profile users
Quiet mode means the user will be free from visual and audio interruptions
from apps inside the managed profile, including notifications, widgets and
others. This CL adds the underlying state bit to users and exposes various
APIs to control and query the quiet mode state.

Bug: 22541941
Change-Id: If5f8e5a897843050e83b6ec26cb39561098f12b9
2015-12-07 18:17:46 +00:00
Todd Kennedy
c72b3101ee Merge "Add ephemeral installs" 2015-12-07 15:33:05 +00:00
Jeff Sharkey
9d8a1048bb Handle non-encryption-aware accounts and sync.
The system can now boot in a "locked" state where only encryption
aware (EA) components can be safely started.  When in this state,
PackageManager already filters away non-EA components, but system
services like AccountManager and SyncManager need to carefully handle
these temporarily "missing" components.

As a guiding principle, all known Accounts are still present when
the device is locked, but communication with underlying non-EA
authenticators is blocked.

To keep things simple for now, all SyncManager requests are kept
dormant until the user enters the unlocked state.

The core of this logic is that RegisteredServicesCache now works
with all components regardless of EA status, which prevents us from
accidentally thinking a service was removed when the user is locked.

Bug: 25945136
Change-Id: I8714121f6236b00821769023c4df7de1c8a99944
2015-12-04 09:36:39 -07:00
Tony Mak
b3523c45dd Merge "Introduce ONLY_IF_NO_MATCH_FOUND in CrossProfileIntentFilter" 2015-12-04 09:26:35 +00:00
Todd Kennedy
2699f06555 Add ephemeral installs
* Add a new --ephemeral argument to 'adb install'
* Add plumbing to internally track ephemeralness
* Create new app directory for ephemeral installs

Bug: 25119046
Change-Id: I1d379f5ccd42e9444c9051eef2d025a37bd824fe
2015-12-03 14:47:01 -08:00
Jeff Sharkey
8b4fce4bac Merge "Flesh out user locked/unlocked lifecycle." 2015-12-03 21:05:17 +00:00
Jeff Sharkey
bedbaa9ea6 Flesh out user locked/unlocked lifecycle.
When a user is first started, we assume that they're "locked" meaning
that credential-encrypted data is unavailable.  Once credentials have
been supplied, we can transition the user to a fully running state.

To facilitate this lifecycle, UserState now has two separate
RUNNING_LOCKED and RUNNING states.  To ensure consistent events are
sent on all devices, we always step through RUNNING_LOCKED before
arriving at RUNNING.  This consistency means that apps processing
data based on the new ACTION_LOCKED_BOOT_COMPLETED broadcast and
system services using the new onUnlockUser() event will be less
bug-prone over time.

If the user storage is unlocked (which is the case on the majority
of legacy devices), we immediately transition from the RUNNING_LOCKED
into the RUNNING state.

Add logging for all state transitions.

When we "recover" a user in the process of being shut down, return
to the last known state.

Bug: 25943941
Change-Id: I5fec980f10b0d0fb2c272a662d193dc15136f9b9
2015-12-03 13:55:09 -07:00
Jeff Sharkey
23d188873a Merge "Avoid a double decrease of reference counter for unstable provider" am: e8651aed4b am: aae0a49c16
am: a9c2218940

* commit 'a9c22189404b5cb1f4e66ca3ff99ed8e04403f1e':
  Avoid a double decrease of reference counter for unstable provider
2015-12-03 19:22:30 +00:00
Jeff Sharkey
a9c2218940 Merge "Avoid a double decrease of reference counter for unstable provider" am: e8651aed4b
am: aae0a49c16

* commit 'aae0a49c164e9eeb19d46967c84697cd1a3a6783':
  Avoid a double decrease of reference counter for unstable provider
2015-12-03 17:16:30 +00:00
Jeff Sharkey
aae0a49c16 Merge "Avoid a double decrease of reference counter for unstable provider"
am: e8651aed4b

* commit 'e8651aed4b8a2c6703589069e26f5be750b2a947':
  Avoid a double decrease of reference counter for unstable provider
2015-12-03 17:07:50 +00:00
Jeff Sharkey
e8651aed4b Merge "Avoid a double decrease of reference counter for unstable provider" 2015-12-03 16:59:58 +00:00
Roozbeh Pournader
8a412e0bb7 Fix null locale edge cases in Configuration and Resources
Previously, Configuration#setTo() would not copy a null locale, and
Resources#updateConfiguration() could fail if it was updated with a
configuration with a null locale or empty locale list.

Bug: 25874762
Change-Id: I76ef5769a16a5165b91c8e5ec5d926c67ef4f3c5
2015-12-02 18:39:50 -08:00
Todd Kennedy
a6f0aa5785 Merge "Fix SplitTests CTS test" 2015-12-02 22:51:58 +00:00
Todd Kennedy
3398be854a Fix SplitTests CTS test
A recent change tightened the check for whether or not an APK has code.
The check verified against the application and not the individual split.

Bug: 25769800
Change-Id: Ia53bd0e31ce3379bdd8bfe6d0c3da99b6d65fe31
2015-12-02 13:56:04 -08:00
Vladislav Kaznacheev
9bc00f1997 Merge "Add extras to ClipDescription" 2015-12-02 20:52:04 +00:00
Sunny Goyal
ac7579a6e5 Merge "Adding context flag to open database with no localized collators" 2015-12-02 20:17:29 +00:00
Sunny Goyal
a21e6b2fac Adding context flag to open database with no localized collators
Bug: 25956606
Change-Id: I209a8d18a7e83c1af54309fae8607f8b46772196
2015-12-02 11:11:37 -08:00
Vladislav Kaznacheev
ddb4bdecfc Add extras to ClipDescription
This is required to expand metadata capabilities of DragEvent.
Apps receiving ACTION_DRAG_* events have access to
ClipDescription, but not ClipData.

Adding extras to ClipDescription allows for a richer behavior of apps
responding to these events.

Bug: 25788641
Change-Id: I07e374f71d16f8441dc3a0b02c7d833e0139b74b
2015-12-02 11:09:39 -08:00
Svet Ganov
9c165d7601 Add optional permission review for legacy apps - framework
For some markets we have to allow the user to review permissions
for legacy apps at runtime despite them not supporting the new
permission model. This is achieved by showing a review UI before
launching any app component. If an update is installed the user
should see a permission review UI for the newly requested
permissions.

To allow distinguishing which permissions need a review we set
a special flag in the permission flags that a review is required.
This flag is set if a runtime permission is granted to a legacy
app and the system does not launch any app components until this
flag is cleared. Since install permissions are shared across all
users the dangerous permissions for legacy apps in review mode
are represented as always granted runtime permissions since the
reivew requirement is on a per user basis.

Whether the build supports permission review for legacy apps is
determined by a build constant allowing us to compile away the
unnecessary code for markets that do not require a permissions
review.

If an app launches an activity in another app that has some
permissions needing review, we launch the permissions review
UI and pass it a pending intent to launch the activity after
the review is completed.

If an app sends a broadcast to another app that has some permissions
needing review, we do not deliver the broadcast and if the sending
app is in the foreground plus the broadcast is explicit (has a
component) we launch the review UI giving it a pending intent to
send the broadcast after the review is completed.

If an app starts a service in another app that has some permissions
needing review, we do not start the service and if the calling app
is in the foreground we launch the review UI and pass it a pending
intent to start the service after the review is completed.

If an app binds to a service in another app that has some permissions
needing review, we schedule the binding but do not spin the target
service's process and we launch the review UI and pass it a callback
to invoke after the review is completed which spins the service
process and completes the binding.

If an app requests a content provider in another app that has some
permissions needing review we do not return the provider and if
the calling app is in the foreground we show the review UI.

Change-Id: I550f5ff6cadc46a98a1d1a7b8415eca551203acf
2015-12-02 04:23:02 +00:00
Tony Mak
807e01cb47 Introduce ONLY_IF_NO_MATCH_FOUND in CrossProfileIntentFilter
With this flag, activities in other profiles can respond to the intent
only if no intent-filter with non-negative priority in current profile can
respond to it.
It is designed like this because activities with negative priority
intentfilter are always used as a fallback in case no one can respond
to the intent. In this case, we expect there is a "real" activity in
other profiles can handle the intentfilter

Here is the example activity that handle the call related intents when
there is no dialer.

NonPhoneActivity.java in Contacts app is an example.
https://github.com/android/platform_packages_apps_contacts/blob/master/AndroidManifest.xml#L461

Bug: 25760508

Change-Id: Ife2a7c19e91ddf5d2e81ad09bd4cf712cdcdb986
2015-12-01 20:19:03 +00:00
Przemyslaw Szczepaniak
ef3dc06bfb Merge "Move StrictJarFile from libcore to framework" 2015-12-01 10:02:43 +00:00
Jeff Sharkey
8fc29cf105 API to create SharedPreferences from File.
Needed to support storage of SharedPreferences on both credential-
encrypted and device-encrypted storage paths.

Bug: 22358539
Change-Id: I576b696951b2a9de817d5be63d31b06f7e166a19
2015-11-30 18:01:20 -07:00
Jeff Sharkey
8924e8759f Wire up lifecycle, send unlocked broadcast.
When the correct lock pattern is presented, ask the system to also
unlock credential-encrypted storage, if enabled.  The token passed
along is empty for now, but can be wired up to gatekeeper in the
future.

During each system boot, ask vold to lock all users keys to give us
a known starting state.  This also has the effect of chmod'ing away
any CE data when in emulation mode.

Define and send a new foreground broadcast when the CE storage is
unlocked for the first time.  Add stronger last-ditch checking for
encryption-awareness before starting an app.

Bug: 22358539
Change-Id: Id1f1bece96a2b4e6f061214d565d51c7396ab521
2015-11-30 17:07:54 -07:00
Przemyslaw Szczepaniak
8a7c1606d8 Move StrictJarFile from libcore to framework
Bug: 25337946
Change-Id: Ib4fac6fa9f534b8654e5ca158bbaedb2393772ba
(cherrypicked from 43ea2cc2a81926a6b2ca13d41f4eab089640129e)
2015-11-27 15:33:15 +00:00
Sunny Goyal
6cbc2fec91 Using ParceledListSlice to get the list of activities in LauncherApps
Bug: 25430879
Change-Id: I3a93bb1abcbcc54bc467e57c51f592b5946850cf
2015-11-24 11:22:16 -08:00
Sunny Goyal
9549544ab9 Merge "Fetching firstInstallTime on demand" 2015-11-24 19:01:47 +00:00
Sunny Goyal
0736e20125 Fetching firstInstallTime on demand
Change-Id: I96442aaf119553ffb0ea94ff06713752e4490e0b
2015-11-24 10:42:32 -08:00
Alan Viverette
936fdcd897 Merge "Allow activities to handle density configuration changes" 2015-11-24 17:42:54 +00:00
Filip Gruszczynski
811dc3b42b Allow preloading of freefore multi window drawables.
Bug: 25081468
Change-Id: Ic6ec6050882e5362e1ab8734962d163fff04b53d
2015-11-23 18:16:24 -08:00
Fyodor Kupolov
09b108e2bb Merge "Added keep-uninstalled-packages DO policy" 2015-11-20 23:18:29 +00:00
Fyodor Kupolov
cb6fd80721 Added keep-uninstalled-packages DO policy
This policy allows DO to specify a list of apps to cache even without being
installed on any user.

Bug: 23938464
Change-Id: I2eeab7f148409739fc23a5c44e955ad12b63fd04
2015-11-20 14:51:56 -08:00
Alan Viverette
28c4a0bb4c Allow activities to handle density configuration changes
Some activities, like the density preference dialog in Settings, may need
to implement custom handling of display density changes.

This corresponds to the bit specified in ActivityInfo.CONFIG_NATIVE_BITS.

Change-Id: Idd4b9ec11a217b1f9af847d7ed8a6f3639e1f8ee
2015-11-20 17:23:46 -05:00
Przemyslaw Szczepaniak
3f72604be8 Use HexDump instead of java.lang.IntegralToString
java.lang.IntegralToString is being removed, replaced
all its usage by com.android.internal.util.HexDump.

Bug: 24932279
(cherry-picked from 15fc0548a536750110e159e06a39ba943eccdd81)

Change-Id: Id6ab88337af12d93cd73c41775b9d5baa1e61d96
2015-11-20 14:11:02 +00:00
Tomasz Mikolajewski
a8057a9dce Add first-class support for virtual files in SAF.
Bug: 20820363
Change-Id: Ic509a6003a99997126f129a836fdd8c0e843108f
2015-11-20 16:26:18 +09:00
Todd Kennedy
b4fdb933cb Merge "Allow ephemeral provider/installer" 2015-11-19 18:54:57 +00:00