Commit Graph

10015 Commits

Author SHA1 Message Date
TreeHugger Robot
fbcb01cde7 Merge "Move theme out of tuner and into display settings" 2017-01-25 19:17:22 +00:00
TreeHugger Robot
b93ecbae57 Merge "MessagingStyle: Add historic messages" 2017-01-25 18:47:20 +00:00
Edman Anjos
452efaac32 Merge changes I50d2903e,Ieb347ce3
* changes:
  Add DPMS delegation scopes.
  Add block uninstall delegation in DPMS.
2017-01-25 18:00:03 +00:00
Jason Monk
524fb4025e Move theme out of tuner and into display settings
Change-Id: Id939a8a34e92c6190c59317155238697861a65e5
Fixes: 34682466
Test: Manual
2017-01-25 12:32:07 -05:00
Adam Lesinski
9aa513bf95 Merge "Add support for Split APK dependcies" 2017-01-25 16:56:51 +00:00
Adrian Roos
437cd56a7f MessagingStyle: Add historic messages
Adds an API to supply additional context to a Notification that uses
MessagingStyle. To be used in the future to enhance the Direct Reply
experience.

Test: runtest cts
Change-Id: I6da0b9067cbffbaae2bd3c5d9606a0b5437f1ed4
2017-01-25 16:55:57 +00:00
Julia Reynolds
717ca4b07d Merge "Allow notifications to be autocanceled at a time." 2017-01-25 16:03:38 +00:00
Edman Anjos
52088e4859 Add DPMS delegation scopes.
Implement the permission grant, package access, enable system app, and
keep uninstalled packages delegation scope APIs in the
DevicePolicyManagerService.

This feature gives a device owner or profile owner the ability to
delegate some of its privileges to another application.

Bug: 33105287, 33105284, 33105719
Test: cts-tradefed run cts-dev --module CtsDevicePolicyManagerTestCases --test com.android.cts.devicepolicy.MixedDeviceOwnerTest#testDelegation
Change-Id: I50d2903eb73ae7844ec1f6fe07e41101ea2760ea
2017-01-25 16:53:50 +01:00
Edman Anjos
a5f2fb1a43 Add block uninstall delegation in DPMS.
Implement the uninstall blocker delegation scope API in
DevicePolicyManagerSercice.

This feature gives a device owner or profile owner the ability to
delegate some of its privileges to another application.

Bug: 33105718
Test: cts-tradefed run cts-dev --module CtsDevicePolicyManagerTestCases --test com.android.cts.devicepolicy.MixedDeviceOwnerTest#testDelegation
Change-Id: Ieb347ce3fb6219fe7f04cafbcd1e6b7359b31a10
2017-01-25 16:31:13 +01:00
Julia Reynolds
2a128746b3 Allow notifications to be autocanceled at a time.
Test: cts
Change-Id: I24ebcab2c0fa2028ec5d2984dc3b7ec19391b590
2017-01-25 09:28:01 -05:00
Edman Anjos
f994677626 Refactor DPMS Cert Installer and App Restrictions delegation.
The DevicePolicyManagerService currently supports delegation of
certificate installation and application restriction management, both
of which are individually handled by DPMS.

Upcoming framework features will add four more delegation types,
namely: block uninstall; app permission management; app access
management; and system app enabler. At this moment it makes sense to
refactor the underlying delegation system in DPMS so that current and
future delegates can be handled in a more generic way.

Bug: 33099995
Test: DPMS unit tests
Change-Id: I9e350143572c6690febdd59d1ed5149af8ee4388
2017-01-25 13:00:40 +01:00
Adam Lesinski
4e8628157a Add support for Split APK dependcies
Apps can now declare in their base APK AndroidManifest.xml
that they want to have their split APKs loaded in isolated
Contexts. This means code and resources from the split
get loaded into their own ClassLoader and AssetManager.

<manifest xmlns:android="..."
          ...
          android:isolatedSplits="true"
          ...

In order to make this more useful, splits can declare dependencies
on other splits, which will all get pulled in to the Context
and run as expected at runtime.

A split declares its dependency on another split by using the
tag <uses-split> in its AndroidManifest.xml:

<manifest xmlns:android="...">
    ...
    <uses-split android:name="feature_split_1" />
    ...

A split can have a single parent on which it depends on. This is
due to the limitation of having a single ClassLoader parent.
All splits depend on the base APK implicitly.

PackageManager verifies that no cycles exist and that each dependency
is present before allowing an installation to succeed.

The runtime will then load splits based on the dependencies.

Given the following APKs:

base <-- split A <-- split C
  ^----- split B

If an Activity defined in split C is launched, then the base,
split A, and split C will be loaded into the ClassLoader defined
for the Activity's Context. The AssetManager will similarly be loaded
with the resources of the splits.

A split can be manually loaded by creating a Context for that split, defined
by its name:

Context.createContextForSplit("my_feature_split_1");

All installed Activities, Services, Receivers, and Providers are accessible
to other apps via Intent resolution. When they are instantiated, they are
given the appropriate Context that satisfies any dependencies the split they
were defined in stipulated.

Test: WIP (CTS tests to come)
Change-Id: I8989712b241b7bc84381f2919d88455fcad62161
2017-01-24 18:34:08 -08:00
TreeHugger Robot
e84ad491c8 Merge "Add color mode to activity/window" 2017-01-25 01:20:28 +00:00
Romain Guy
4832745b84 Add color mode to activity/window
The color mode lets an application request a wide color gamut for
a specific window. This will also be used in the future to request
HDR. The color mode is currently either default (sRGB) or an undefined
wide gamut color space chosen by the platform. These attributes could
later be used to choose a specific color space if we deem this important
or useful.

This change also renames the various "colorimetry" attributes and
constants to "color mode" for consistency. These symbols were
added in O and can be safely renamed.

Test: CtsColorModeTestCases
Bug: 32984164
Change-Id: I4d4691dd12dbe3f3aa6a5cf893cff39aa16c739e
2017-01-24 15:55:09 -08:00
TreeHugger Robot
f070b4ef55 Merge "Snoozing API changes" 2017-01-24 22:52:43 +00:00
Winson Chung
6d2fe9e96d Merge "Remove dependency on resizable activity to enter PiP." 2017-01-24 22:26:47 +00:00
Shreyas Basarge
a393ff7dc7 Merge "API to select backup transport" 2017-01-24 22:02:28 +00:00
Julia Reynolds
cf63ff1532 Snoozing API changes
- No one can snooze for an undetermined amount of time
- Only the assistant can unsnooze
- Listeners can retrieve a list of snoozed notifications

Test: runtest systemui-notification, cts verifier
Change-Id: Idfaee6d8bc15a5d41630f86f7e852468b07dc7d0
2017-01-24 16:18:52 -05:00
Winson Chung
d339538a67 Remove dependency on resizable activity to enter PiP.
- Removing the requirement for activities to have both the
  resizeableActivity and supportsPictureInPicture attribute
  to enter PiP.  The activity may still be resized when
  entering picture-in-picture.

Bug: 34256643
Test: android.server.cts.ActivityManagerPinnedStackTests
Change-Id: If6bd4721c53072e5518f554a8c7598705517c132
2017-01-24 10:56:33 -08:00
Shreyas Basarge
865303fce5 API to select backup transport
This cl adds an API to select a backup
transport by its component name and
receive a callback when BackupManager
is bound to the transport. Calling this API
will make BackupManager bind to the transport
if it isn't already bound to it.

Also fixes the issue where BackupManager would
detect only one transport per package.

Ref: go/backup-transport-switching

Bug: 33616220
Test: Manually tested. GTS tests will be put up shortly.

Change-Id: I8c23bdbb84ceb05eb1fad9b3a8b9c4441cb06c74
2017-01-24 17:28:48 +00:00
Winson Chung
59fda9e217 Adding AppOps setting for entering PiP when hidden.
- In O, apps can request to enter picture-in-picture when the user
  effectively leaves their activity for another task by default. To
  prevent this from being abused, we need to add a setting for the
  user to disable this behavior per-package in the system level.
  When disabled, any activity from that package will only be able
  to enter picture-in-picture when it is visible and resumed.

Bug: 34520451
Test: android.server.cts.ActivityManagerPinnedStackTests
Test: #testAppOpsDenyPipOnPause
Change-Id: Ib3a993e99ffb071706c6b7d3fb1c882b74acc5d7
Signed-off-by: Winson Chung <winsonc@google.com>
2017-01-24 09:15:01 -08:00
Alexander Hills
3c290d43b1 Merge "Changes the default value of Notification.Action.mAllowGeneratedReplies" 2017-01-24 16:31:42 +00:00
Alex Hills
1f27f88f02 Changes the default value of Notification.Action.mAllowGeneratedReplies
Changes the default from false to true

Bug:31934635
Fixes:31934635
Test: CTS tests in ag/1824710
Change-Id: I1c7097627e77eed12bb9cc644c1cbb5c3197a750
2017-01-24 15:38:56 +00:00
Julia Reynolds
c4d3a70b97 Merge "Add updatable fields to Ranking" 2017-01-24 15:15:28 +00:00
Abodunrinwa Toki
1f50fa6df5 Merge "Update TextAssistant interface." 2017-01-24 15:04:29 +00:00
Abodunrinwa Toki
f001fefff3 Update TextAssistant interface.
Rename to TextClassifier
Move to android.view.textclassifier package
Adds getTextClassifierInfo(...)
Changes addLinks(...) to getLinks(...)

This CL also integrates this interface with framework components
and passes a context to TextClassificationManager.

Test: Tests will be added with implementation.
Bug: 34661057
Change-Id: If9e90f034ebb702c1f78e72b6a844f39eebf738f
2017-01-24 15:01:24 +00:00
Julia Reynolds
924eed1ca6 Add updatable fields to Ranking
- NotificationChannel
- Badging

Test: runtest systemuinotification & cts

Change-Id: I7fd1f2dc06148927e9a4bd5b760d436e2c5e8a98
2017-01-24 08:43:38 -05:00
TreeHugger Robot
2cff9319e8 Merge "Merge commit '12562abcd47de4aee3b0469cb04bf771c2072113' into manual_merge_12562abcd47d" 2017-01-24 11:35:18 +00:00
Jeff Sharkey
9727f22fc0 Merge "Introduce RecoverableSecurityException." 2017-01-24 03:19:18 +00:00
Jason Parks
7a190b08fe Merge "Allow the profile owner to enforce auto time." 2017-01-24 02:46:29 +00:00
TreeHugger Robot
24454ca4b8 Merge "Add an 'am crash' shell command" 2017-01-24 01:25:12 +00:00
Jeff Sharkey
56f0368fb7 Introduce RecoverableSecurityException.
This takes advantage of the recently added behavior that offers to
send Parcelable exception types across Binder calls.

Certain SecurityException can be resolved if we involve the end user,
such as when a password has expired, or a user challenge is required
to proceed.  This new subclass of SecurityException provides
user-visible messaging and convenience methods for quickly rendering
that messaging as a notification or dialog.

Test: builds, boots, throws, shows as notification and dialog
Bug: 33749182
Change-Id: Iba66c7466b8fabca9e3f83c60db5a4ab849a256f
2017-01-23 17:23:17 -07:00
Dmitri Plotnikov
d11b9e77e4 Merge "Adding TvExtender channel override" 2017-01-24 00:07:42 +00:00
Dianne Hackborn
5f1a2a34d9 Merge "Optimize bg check flow." 2017-01-24 00:05:38 +00:00
Jason Parks
841cb0a37f Allow the profile owner to enforce auto time.
Test: runtest -c com.android.server.devicepolicy.DevicePolicyManagerTest frameworks-services

Change-Id: I1cb04cce5d232fba668535dd391459a050d62dd7
2017-01-23 17:32:53 -06:00
Adrian Roos
5304e89dfd Merge "KeyguardManager: Fix user resolution of isDeviceSecure/Locked" 2017-01-23 22:21:07 +00:00
Dianne Hackborn
c3af19a87d Optimize bg check flow.
No longer need to look up the application info, target SDK is
explicitly passed in to the check.  For the external method, we
change this to just checked to see if background is completely
disabled, which doesn't need a target SDK check (and is the only
thing any of the current clients care about).

Now allow SystemUI to put targets of notification pending intents
on the temporary whitelist when they fire, so developers can avoid
dealing with background restrictions in this case (if the user
interacts with their notification, they will temporarily be
considered in the foreground).

Remove any thoughts of enforing restrictions on registerReceiver(),
so we don't need to deal with target SDK versions there (which can't
be done all that efficiently).

Also bring back the old "allow starts coming from foreground apps"
only for the MODE_IGNORE app op, since it should provide some
better compatibility.

Test: ran them.

Change-Id: Id4ea7f992d12ce4bd8e54f1dbaeb4a460a3dee59
2017-01-23 14:18:33 -08:00
Nancy Zheng
6111e23d30 Merge commit '12562abcd47de4aee3b0469cb04bf771c2072113' into manual_merge_12562abcd47d
Test: manually tested upstream

Change-Id: I8ca2eebcb468f73bf609ed09dc141a2bf40b8697
2017-01-23 14:06:38 -08:00
Nancy Zheng
12562abcd4 Query for the settings package in KeyguardManager instead of hardcoding it. am: e256a18dcd
am: ed92230c38

Change-Id: I41ef0f14cbd3f7e19e6fde0cdf636619683704a2
2017-01-23 21:34:45 +00:00
Nancy Zheng
ed92230c38 Query for the settings package in KeyguardManager instead of hardcoding it.
am: e256a18dcd

Change-Id: I9e83ca9e1cab882fc0f508ba6c538e08b4fa7499
2017-01-23 21:23:40 +00:00
Adrian Roos
0b1853f997 KeyguardManager: Fix user resolution of isDeviceSecure/Locked
Fixes isDeviceSecure and isDeviceLocked APIs to use
the user id of the app that executes the code rather
than that of any incoming binder call.

Change-Id: Ib7772b60c35a3ebf96830f9b013c539021e1f063
Fixes: 34592592
Test: manual
2017-01-23 12:40:30 -08:00
TreeHugger Robot
1f42d9a6ec Merge "Fix recent checkPermission() bug." 2017-01-23 20:27:32 +00:00
Christopher Tate
8aa8fe1289 Add an 'am crash' shell command
Induce a normal VM crash via adb, because it's quite different from the
effects of 'am kill'.

Test: induced crashes via adb shell using both pid & pkg

Change-Id: I79654afa7c4a70364cfd7d3af3e80a7b0e59b882
2017-01-23 20:18:45 +00:00
TreeHugger Robot
4a65687b85 Merge "Expose fonts.xml via public API with a service" 2017-01-23 19:57:23 +00:00
Jeff Sharkey
d69b083bc3 Fix recent checkPermission() bug.
It should be checking if the UID argument passed in has the requested
permission; not the calling UID.

Test: builds, boots
Bug: 34528367
Change-Id: Ie1828f571d9f143ce9f5bdca2eedcf2fa6ccfd79
2017-01-23 11:37:27 -07:00
Clara Bayarri
04d72abde1 Expose fonts.xml via public API with a service
This change creates a new FontManagerService, in charge of providing
font management data. It exposes a public API to retrieve the
information in fonts.xml without accessing it directly. To do this,
it also refactors FontListParser's internal classes into a new public
FontConfig class holding all the font data.

getSystemFonts() returns all the available information in fonts.xml
as well as file descriptors for all the fonts. This allows us to
share the memory consumed by these files between all clients.

Bug: 34190490
Test: See attached CTS change in topic
Change-Id: I0e922f8bcc9a197a1988d04071eb485328d66fb7
2017-01-23 15:02:23 +00:00
Charles He
dea0c3b654 DPM: Notify DO/PO of security updates.
We add a variant of notifyPendingSystemUpdate method which takes an
additional isSecurityPatch boolean flag. This information, if available,
will be persisted and available to device and profile owners when they
call getPendingSystemUpdate method.

Test: gts-tradefed run gts -m GtsGmscoreHostTestCases -t com.google.android.gts.devicepolicy.DeviceOwnerTest#testPendingSystemUpdate
Test: gts-tradefed run gts -m GtsGmscoreHostTestCases -t com.google.android.gts.devicepolicy.ManagedProfileTest#testPendingSystemUpdate
Bug: 33102479
Bug: 30961046
Change-Id: If3f1b765bb18a359836ac43ac9a0a9f29e9f8428
2017-01-23 09:38:49 +00:00
Svet Ganov
6788212d17 Platform support for static shared libraries
This change adds support for static shared libraries that
emulate static linking allowing apps that statically link
against the same library version to share a common
implementation. A library is hosed by a package in a standard
APK.

Static shared libraries have a name and a version declared
by a dedicated manifest tag. A client uses also a new tag
to refer to the static library it uses by specifying the
lib name, version, and the hash of the signing certificate.
This allows two apps to rely on two different library versions
and prevents impersonation of the shared library by a side-loaded
app with the same package name.

Internally apps providing static libs use synthetic package
name generated from the manifest package name and the library
version. This allows having different "versions" of the same
package installed at the same time.

An application cannot be installed if a static shared lib it
depends on is missing. A used shared library cannot be uninstalled.
Shared libraries can rotate certificates like normal apps. The
versions of these libs should be ordered similarly to the version
codes of the hosting package. Such libs cannot use shared user
id, cannot be ephemeral, cannot declare other libraries, cannot
rename their package, cannot declare child-packages. They must
target O SDK. Also they cannot be suspended or hidden or their
uninstall blocked. Generally, speaking policy regarding code in
static shared libs should be applied to the packages using the
library as it could have just statically linked the code.

We now have APIs to query information about the shared libraries
on the device in general. To clients static shared libraries are
presented as multiple versions of the same package which is how
they are declared and published. Therefore, one can have two
versions of the same package which means we need way to query
for and uninstall a specific version of a package. Also static
shared libs can depend on other static shared libs which are
versioned packages. To ease representation we add the concept
of a versioned package which should be used in the case of
static shared libs.

A client can see only the static shared libs it depends on and
more specifically only the versions it depends would be retrieved
by using the standard package manager APIs. There is a new
dedicated API to get info about all shared libraries which
would provide data about all static shared lib versions. Also
these libraries must use v2 signing scheme.

Test: CTS tests pass

bug:30974070

Change-Id: I4f3d537ee7a81f880950377b996e1d9d4813da5c
2017-01-22 14:05:15 -08:00
TreeHugger Robot
5feefa54c4 Merge "Introduce RescueParty." 2017-01-21 02:22:43 +00:00
Zac Iqbal
655f908aa6 Merge "Added an onDeviceUnlockLockout callback to TrustAgentService." 2017-01-21 01:35:43 +00:00