Commit Graph

3748 Commits

Author SHA1 Message Date
Jeff Sharkey
a73b8fd1f4 Add some TestApis to fix build.
Change-Id: Icf0d8d63f3a41d99e46ebe96003863bae637bd9d
2016-01-06 17:37:32 -07:00
Jeff Sharkey
51f3908c6a Merge "Consistent naming for PackageManager methods." 2016-01-06 22:26:16 +00:00
Jeff Sharkey
e06b4d1d9f Consistent naming for PackageManager methods.
When hidden PackageManager methods take a userId argument, they
should be named explicitly with the "AsUser" suffix.  This fixes
several lagging examples so that we can pave the way to safely
start passing flags to new methods without scary overloading.

Also fix spacing issues in various logging statements.

Change-Id: I1e42f7f66427410275df713bea04f6e0445fba28
2016-01-06 15:21:06 -07:00
Jeff Sharkey
81cf69a3b4 Merge "Update logic for resolving verifiers." 2016-01-06 21:50:06 +00:00
Jeff Sharkey
2a90f673f5 Update logic for resolving verifiers.
Verifiers or installers may not be encryption-aware, or the user may
have disabled them, so we probe pretty deeply during system boot to
resolve them.  Use the new MATCH_SYSTEM_ONLY flag to limit results to
packages on the system image.

When there are multiple matches, pick the one with highest priority
instead of crashing the system.

Switch to updated MATCH_ constants in more places.

Bug: 26250295
Change-Id: Ia7a3b1fb74da6c3b9d2c2edbf1deaa9fb52fc40a
2016-01-06 13:49:55 -07:00
Alan Viverette
946502f50a Merge "Cache XML blocks against file name rather than resource ID" 2016-01-06 20:36:05 +00:00
Alan Viverette
b7e3363359 Merge "Clean up asset manager package-private methods" 2016-01-06 20:29:49 +00:00
Alan Viverette
ec76b2a1d8 Merge "Skip the cache when loading drawables from a foreign density" 2016-01-06 20:29:19 +00:00
Alan Viverette
1097961389 Cache XML blocks against file name rather than resource ID
Caching against resource ID leads to incorrect cache hits, since multiple
files (ex. within drawable-mdpi, drawable-ldpi) may map to the same ID.

Also adds nullability annotations.

Bug: 26400880
Change-Id: I4d83caf3c44dc9b546511753e9e72171e8850eb2
2016-01-06 15:27:35 -05:00
Jeff Sharkey
11dce73277 Merge "Add Ethernet feature." 2016-01-06 18:04:57 +00:00
Jeff Sharkey
4efb8b4030 Add Ethernet feature.
Change-Id: I1f1badff5a8c9237d9489497e36e2578266e34b4
2016-01-06 11:02:52 -07:00
Jeff Sharkey
62728e3107 Merge "Discourage use of "_data" column." 2016-01-06 17:26:25 +00:00
Jeff Sharkey
60cfad80bd Discourage use of "_data" column.
Moving forward, all client file access really needs to be going
through explicit APIs like openFileDescriptor(), since that allows
the provider to better protect its underlying files.

This change also changes several classes to use the AutoClosable
pattern, which enables try-with-resources usage.  Older release()
methods are deprecated in favor of close().

Uniformly apply CloseGuard across several classes, using
AtomicBoolean to avoid double-freeing, and fix several resource
leaks and bugs related to MediaScanner allocation.  Switch
MediaScanner and friends to use public API instead of raw AIDL calls.

Bug: 22958127
Change-Id: Id722379f72c9e4b80d8b72550d7ce90e5e2bc786
2016-01-06 10:19:35 -07:00
Clara Bayarri
8819c61bcf Merge "Work Challenge: Handle Recents launches" 2016-01-06 16:57:55 +00:00
Clara Bayarri
ea9b10e644 Work Challenge: Handle Recents launches
Intercept calls to start activities from the recents
stack and show the Work Challenge if needed. This requires
passing the taskId to ConfirmDeviceCredential so it can
launch the recents task itself when the credentials are
confirmed.

Change-Id: I013b134f3f31a35b551ad683c68cc89b8af44499
2016-01-06 16:17:08 +00:00
Alan Viverette
7941a7fd8e Skip the cache when loading drawables from a foreign density
Bug: 26400880
Change-Id: I87c06b30afc61495fe62aa6a9dfe77990200cde7
2016-01-06 11:11:53 -05:00
Roozbeh Pournader
fb9236cb0c For locale negotiation, assume English is always supported
In practice, a lot of apps provide English resources as their default
resources, so assume that English is always supported.

With this change, users can safely set secondary locales after
English in their preferred locale lists. Such settings would help
the apps (and parts of the system that are aware of multiple locales)
consider the user's familiarity with the secondary locale or the
user's preference for glyphs forms in the secondary locale.  This
change makes sure that no app unintentionally switches to such
secondary locales.

Note that this doesn't break from the tradition of previous releases.
Traditionally, if the user had set the system locale to English, they
would get the default resources when the app didn't explicitly
provide English resources. This will continue to be the case where
the user's locale list has English in it before another supported
language. (English will be the first locale in most cases.)

Bug: 26192817
Change-Id: I2c1a003760299157786c1b3f9fb116ce18db3b8c
2016-01-05 14:52:38 -08:00
Alex Klyubin
4f6d400b0f Merge "No need to pass digest of AndroidManifest.xml around." 2016-01-05 21:19:41 +00:00
Roozbeh Pournader
4fac768030 Merge "Avoid matching system locales in locale negotiation" 2016-01-05 18:45:29 +00:00
Alan Viverette
e273b93651 Clean up asset manager package-private methods
Refactors duplicate code, flattens methods by inverting if blocks, updates
nullability annotations, fills out missing javadoc, uses consistent
variable names. No functional changes.

Change-Id: I4c3a139197697a9d6f6afc9c428a193c02fc777c
2016-01-05 10:25:54 -05:00
Wale Ogunwale
6cae765b67 Added support for android.R.attr#alwaysFocusable
Allows an activity to always be focusable regardless of if it is in a
stack whose activities are normally not focusable. For example, activities
in pinned stack aren't focusable. This flag allows them to be focusable.

Also, changed ActivityInfo.#{resizeable, supportsPip} to use flags.

Bug: 26273032
Bug: 26034613
Change-Id: I8c63e6d3256757e2e6931e08b8a65269f5169d35
2016-01-04 22:23:56 +00:00
Roozbeh Pournader
1c686f2ce6 Avoid matching system locales in locale negotiation
Also:
1. Add AssetManager method for finding non-system locales: This is
used in per-app locale negotiation. (Normally,
AssetManager#getLocales() returns both system and non-system
locales.)

2. Match pseudolocales correctly in locale negotiation.

Bug: 25800576
Bug: 26236938
Change-Id: I116caf3a91c290deb4ad68b291c65b7035b18dd4
2016-01-04 13:53:54 -08:00
Alex Klyubin
31ffb44241 No need to pass digest of AndroidManifest.xml around.
When an APK is being installed, the full path to the file is
occasionally passed between processes. To detect changes to the file
during these handovers, the digest of the AndroidManifest.xml entry
could be passed around as well.

This security feature is no longer used and is no longer needed. APKs
should be installed using the modern Package Installer API
(android.content.pm.PackageInstaller).

Bug: 24542768
Change-Id: I2762634c85448e7adcd47ffc9a5294c021e127bd
2016-01-04 12:31:29 -08:00
Jeff Sharkey
2f3e35376a More work towards triaging missing app behavior.
Many places across the platform query package details without
gracefully handling packages or components that go missing for
various reasons.  This can cause annoying user data loss, such as
resetting back to built-in apps or dropping of accounts, etc.

This change verifies that system callers have thought about these
edge cases by logging if they use default matching behaviors without
explicitly marking themselves as being "triaged."  (The logging is
currently disabled by default.)

Also creates explicit definitions of supported flags for various
incoming PackageManager calls, and defines a clear distinction
between flag types:

-- GET-style flags are used to request additional data that may have
been elided to save wire space.

-- MATCH-style flags are used to include components or packages that
would have otherwise been omitted from a result set by current system
state.

There are a handful of existing GET flags that better fit under the
MATCH definition, so this change clones them to new constants and
marks the old ones as deprecated.

Fixes bug in JobSchedulerService to consider jobs from apps on
external storage.  Revert some dialer behavior back to being
untriaged.

Change-Id: I9b6ab0968241e3479bddbd78de0c51e3b9917318
2016-01-04 13:19:02 -07:00
Jeff Sharkey
5217cacbd9 Make JobSchedulerService encryption aware.
When a user is started, but a persisted job component doesn't appear
in the normal resolution list, we avoid enqueuing the job.  Later
when the user is unlocked, we take another pass over the pending
jobs to see if they became available.

Load keyboard layouts from XML metadata regardless of crypto status,
since we don't need to spin up any remote code.

Add MATCH_SYSTEM_ONLY to make system logic easier to write when
looking for trusted components.

Sprinkle more annotations on ArrayUtils methods.

Bug: 26279465
Change-Id: Iec28e0bb46862b07d740b12a79f6360de68dab0f
2015-12-20 15:36:29 -07:00
Jeff Sharkey
2a9e3f8e68 Better named encryption flags, start triaging.
Create distinct flags for encryption aware, unaware, and both, and
name them like the other MATCH_ flags.

Start adding logic to help triage all system internal callers to
verify that they've done their homework and thought about how to
handle apps while locked.  Call sites in the system should either
ask for explicit matching behavior, or explicitly use the DEFAULT
match flag to indicate that they've been triaged to use the
default state-based matching.

Bug: 26250295
Change-Id: I86214e5c4f71a6dc72f06930800388713aecd107
2015-12-19 15:00:09 -07:00
Ruben Brunk
55bed95778 Merge "Add a framework service tracking VR mode state." 2015-12-18 19:50:24 +00:00
Todd Kennedy
36a832dd12 Merge "revert quick install" 2015-12-17 18:49:08 +00:00
Todd Kennedy
373f0b4313 revert quick install
bug: 25118622
Change-Id: I61c3a1ea9015599dc45bd9e656f99f6bf8c4ec02
2015-12-17 10:32:49 -08:00
Ruben Brunk
dd18a0b695 Add a framework service tracking VR mode state.
- Implement a "VR mode" that may be enabled by a focused Activity.
- Add a system service that tracks the current VR mode state and notifies
  other core framework services of mode changes.
- Extend NotificationListenerService to allow the bind/unbind lifecycle
  of specified listeners to be triggered by system events.

Bug: 22855417
Bug: 25479708

Change-Id: I1ac8692bbb5521bb6c7cfb9d2b56b98b720f8568
2015-12-17 10:09:17 -08:00
Alan Viverette
ad217b68f8 Merge "Don't call public non-final getResources() from getAssets()" 2015-12-17 16:38:42 +00:00
Vladislav Kaznacheev
9149d2b117 Rename and simplify DropPermissionHolder
Rename DropPermissionHolder to DropPermissions and move
all server-side implementation details into a separate class.
Rename DragEvent.getDropPermissionHolder to
requestDropPermissions and make it take the permissions
implicitly.

Change-Id: Ia83f7cb8af07ce13ba9536d24b0f9d63331d8736
2015-12-16 17:10:36 -08:00
Fyodor Kupolov
6142f90b9f Merge "Introduced PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER" 2015-12-16 23:07:20 +00:00
Alan Viverette
713a5cdb53 Don't call public non-final getResources() from getAssets()
Refactors to getResourcesInternal() and calls that from both methods.
Adds documentation on Context.getResources() and getAssets() that the
instances returned should be consistent with each other.

Bug: 26228895
Change-Id: I41b09f1e9a3a0315bcdf1c08a7b431a9a697bb6f
2015-12-16 15:46:32 -05:00
Andrei Stingaceanu
1e2839188f Wire call to suspend a package
Adds APIs in DevicePolicyManager and PackageManager for allowing
a device admin to suspend a package. PackageManagerService sets
or unsets a new PackageUserState 'suspended' setting. Terminal
command to suspend/unsuspend has been added via
PackageManagerShellCommand (as root).

Next steps:
* use the new 'suspended' setting for denying access to start app
(probably in ActivityStackSupervisor)
* broadcast a PACKAGE_(UN)SUSPENDED intent for launchers to pick up
* remove app from recents (go further and kill it if it is running)
* erase existing notifications for this app

Bug: 22776576
Change-Id: I718b3498f6a53cc0c6fdfb6d15031e53ddca4353
2015-12-16 18:14:14 +00:00
Filip Gruszczynski
d5f94468ba Merge "API for launching activities to the side in side-by-side mode." 2015-12-16 00:52:06 +00:00
Roozbeh Pournader
f11eca8551 Merge "Negotiate locales during Resources contruction and updates" 2015-12-16 00:44:01 +00:00
Filip Gruszczynski
80e29f1cca API for launching activities to the side in side-by-side mode.
This API is intended for side-by-side mode, so that when a new activity
is launched, it will show up on the other side instead of covering the
launching activity.

Bug: 26141281

Change-Id: I97d7f2f48d42a31cfb1a86821474582b9c5d9e45
2015-12-15 16:08:44 -08:00
Wale Ogunwale
fbe12c4e0f Added PackageManager#FEATURE_PICTURE_IN_PICTURE
Indicating that a device supports picture-in-picture
multi-window mode.

Also allow activities to be in Pip mode if force resizeable
is enabled.

Bug: 25580820
Bug: 26187878
Change-Id: If80edfee39ece5a51d21040e4d3a8a9135aa1783
2015-12-15 14:55:27 -08:00
Fyodor Kupolov
bdbc9692c7 Introduced PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER
When set, signals that the application is required for the system user and
should not be uninstalled.

Bug: 25616324
Change-Id: Idbbd1618e09c40bdb83fa26c0a3d9662dd73bea4
2015-12-15 14:49:42 -08:00
Todd Kennedy
4f7b035e34 Merge "Fix ephemeral post-install launching" 2015-12-15 22:12:33 +00:00
Todd Kennedy
7440f177c3 Fix ephemeral post-install launching
Provide the ephemeral installer with some additional pieces of information:
1) instead of de-referencing the URL a second time, give the installer the
   exact package name
2) instead of relying on ephemeral apps to define verified links, give the
   installer a pending intent to launch when the ephemeral is installed
3) give the installer a pending intent to launch if the installer fails,
   for whatever reason, to install the ephemeral app

Bug: 25119046
Change-Id: I45f50481caee09d5d09451e4b2492e64b0faae82
2015-12-15 14:04:56 -08:00
Fyodor Kupolov
f99104dadd Assigned a unique value for PRIVATE_FLAG_EPHEMERAL
Previously the value was conflicting with a private flag
PARTIALLY_ENCRYPTION_AWARE, which has been added before.

Change-Id: I661d8b5f59a39b18288eae47b7522f87b120c57b
2015-12-15 18:38:51 +00:00
Roozbeh Pournader
dad100699a Negotiate locales during Resources contruction and updates
This also adds a new API to Resources, to get the resolved locale
from the Resources.

Bug: 25800576
Change-Id: I431f1c1b4b6775fcbc097936d0d607400db47f7d
2015-12-14 17:20:47 -08:00
Andreas Gampe
e6748ce31f Frameworks/base: Use Arrays.toString
Fix a couple of cases where Arrays.toString should be used.

Bug: 19797138
Change-Id: I905fc79e63face9b26975320a92086c732bf6316
2015-12-14 12:04:26 -08:00
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