Commit Graph

6612 Commits

Author SHA1 Message Date
Jeff Sharkey
ddb15c471c Merge "Protect usage data with OP_GET_USAGE_STATS." into pi-dev 2018-04-20 02:38:01 +00:00
Jeff Sharkey
0ad6283da7 Protect usage data with OP_GET_USAGE_STATS.
APIs that return package usage data (such as the new ArtManager)
must ensure that callers hold both the PACKAGE_USAGE_STATS permission
and the OP_GET_USAGE_STATS app-op.

Bug: 77662908
Test: atest vendor/xts/gts-tests/hostsidetests/dexapis/host/
Change-Id: I7a85d959f1682d2bd5cf3684415e368fece88101
2018-04-19 15:46:59 -06:00
Makoto Onuki
d329ae8010 Merge "SyncManager: Dump per-source last sync time too." into pi-dev 2018-04-19 17:37:45 +00:00
Makoto Onuki
dbdf5df96e Merge "Split provider / service dumpsys into platform and non-platform" into pi-dev 2018-04-19 17:21:48 +00:00
TreeHugger Robot
4d5d3a0254 Merge "Added more documentation for dialogMessage" into pi-dev 2018-04-19 00:13:13 +00:00
Suprabh Shukla
3e03ab9312 Added more documentation for dialogMessage
Added explanation that callers can use a format string which takes a
single argument which is the name of the suspended app that the user
tried to launch.

Test: make docs

Bug: 77507744
Change-Id: I0a5259048332030385265ceab9c7d76766abac7d
2018-04-18 16:01:29 -07:00
Dan Cashman
303c4bbb40 Add AccountManager key rotation awareness.
Replace checkSignatures() calls in AccountManager with a new,
rotation-aware call to PackageManagerInternal.  Also add a new
AUTH cert capability to reflect the distinction between these
permissions and others.

Bug: 77651077
Test: Builds. CtsAccountManagerTestCases
Change-Id: Idd412cd984acf7d37555deb5879f2d6a0a10c2b6
2018-04-17 14:29:34 -07:00
Makoto Onuki
0b575a3cdf Split provider / service dumpsys into platform and non-platform
Also extend the timeout to 60 seconds.
- Because each provider / service dump may time out, the total time should relatively be large.

Bug: 78017892
Fix: 78017892

Test: Manual test with the following dumpsys commands:
dumpsys activity provider all
dumpsys activity provider all-platform
dumpsys activity provider all-non-platform
dumpsys activity provider com.android.providers.contacts/com.android.providers.contacts.VoicemailContentProvider
dumpsys activity provider com.android.providers.contacts/.VoicemailContentProvider
dumpsys activity provider contacts
dumpsys activity provider voicemail
dumpsys activity provider 4d45a78

dumpsys activity service all
dumpsys activity service all-platform
dumpsys activity service all-non-platform
dumpsys activity service bluetooth

Test: atest /android/pi-dev/frameworks/base/core/tests/coretests/src/com/android/internal/util/DumpTest.java
Test: atest /android/pi-dev/frameworks/base/core/tests/coretests/src/com/android/internal/util/ParseUtilsTest.java

Test: Manual test with "adb bugreport" with adding sleep(10s) to ProviderMap.dumpProvider()

Change-Id: I00bce0090b8dbb947d7f8b1e5d01bb8a70d84bd8
2018-04-17 10:41:40 -07:00
Patrick Baumann
eb59580abd Checks that secondary instrumentation ABI matches
This adds checks that the secondary ABI for an instrumentation package
matchs that of its target before using it when forced and warns of
mismatches.

Change-Id: I394427721c83cbd1c3c6af6cee24a93b18d8c65f
Fixes: 77152863
Test: gts-tradefed > run gts -m GtsBackupHostTestCases -a armeabi-v7a do not all fail with NPE
2018-04-17 09:55:47 -07:00
Makoto Onuki
f74cf940fe SyncManager: Dump per-source last sync time too.
Example:

Per Adapter History
     :
  mak...@gmail.com/com.google u0 [com.google.android.gms.people]
    Per source last syncs:
         OTHER  Success: 2018-04-16 17:03:38  Failure: 2018-04-16 17:04:27
         LOCAL  Success: N/A  Failure: N/A
          POLL  Success: N/A  Failure: N/A
          USER  Success: N/A  Failure: N/A
      PERIODIC  Success: N/A  Failure: N/A
          FEED  Success: N/A  Failure: N/A
    Last syncs:
      2018-04-16 17:04:27 io-error Source=OTHER Elapsed=0s Reason=AutoSync Extras=[]
      2018-04-16 17:03:38 success Source=OTHER Elapsed=5s Reason=AutoSync Extras=[]
      2018-04-16 17:03:20 success Source=OTHER Elapsed=3s Reason=AutoSync Extras=[]

Bug: 76035392
Change-Id: Id73cb10636897c4fe45caad5df13dca8b75381bd
Fixes: 76035392
Test: Manual test with dumpsys content with triggering various syncs
2018-04-16 17:20:19 -07:00
Makoto Onuki
d7732b4c8a Merge "Add 1-day sync stats in syncmanager dumpsys." into pi-dev 2018-04-17 00:11:25 +00:00
Dan Cashman
e942b914a4 Replace PackageInfo#signingCertificateHistory field doc reference.
During API review, PackageInfo#signingCertificateHistory was changed
to PackageInfo#signingInfo.  This was not reflected everywhere in
the documentation.  Update it.

Bug: 74831530
Test: Doc change only, builds.
Change-Id: I497cdd732dffacf376ac05f7ccd181004c947210
2018-04-16 14:44:13 -07:00
Makoto Onuki
9498621f41 Add 1-day sync stats in syncmanager dumpsys.
The stats currently shown in sync manager dumpsys is the total *since wipe* so
they're usually pretty much useless.

So let's add "today" and "yesterday" stats too.

- Also add "# failures" and "# cancels".
- Also split up SERVER to OTHER and FEED (i.e. subscribedfeeds).

Bug: 76035392
Test: Boot, run some sync, then do "cmd content reset-today-stats"
- Also tested with actually setting the clock to 23:59 and wait
- Check the result with "dumpsys content".

Sample output:
=======================================================================
Authority                                           Syncable  Enabled  Stats  Loc  Poll  Per  Feed  User  Othr  Tot  Fail  Can  Time  Last Sync            Backoff
------------------------------------------------------------------------------------------------------------------------------------------------------------------
com.android.calendar                                1         true     Total  0    0     0    1     0     7     8    0     2    8s    FEED SUCCESS
                                                                       Today                  1           5     6               7s    2018-04-12 15:21:24
                                                                       Yestr                                                    0s
com.android.chrome                                  0         false    Total  0    0     0    0     0     0     0    0     0    0s
                                                                       Today                                                    0s

Change-Id: Id0ea42435a9f759e47d4b9490292759270f8e9a5
2018-04-16 12:23:26 -07:00
Ricky Wai
ed2a3cadc1 Merge "Update PackageManager.getInstalledPackages() docs" into pi-dev 2018-04-16 18:19:00 +00:00
Ricky Wai
9964f70f6a Update PackageManager.getInstalledPackages() docs
Update the docs about getInstalledPackages() returns installed apps
on current user not on the device.

Test: NULL
Bug:77955905
Change-Id: I3d9c48be54f6355dc1701d2c359785a575fbc1db
2018-04-13 13:50:00 +00:00
Benjamin Franz
df88614db2 Merge "Silently ignore force stop API for protected packages" into pi-dev 2018-04-13 07:37:25 +00:00
TreeHugger Robot
aab3304a22 Merge "Fix broken target SDK checks." into pi-dev 2018-04-12 04:40:06 +00:00
Daniel Cashman
960a0c6c57 Merge "Add SigningInfo class to expose package signing details." into pi-dev 2018-04-11 19:21:07 +00:00
Benjamin Franz
f81bf7fa75 Silently ignore force stop API for protected packages
Bug: 75997475
Test: manual
Change-Id: I804aafe2404eeaac732fed51cf6d3d2e45a3b5bb
2018-04-11 17:21:16 +01:00
TreeHugger Robot
61aebf6d39 Merge "Revert "Check permissions only against packagesettings"" into pi-dev 2018-04-11 16:05:39 +00:00
Patrick Baumann
97b9b5304c Revert "Check permissions only against packagesettings"
This reverts commit b00eb64591.

Reason for revert: Boot issues after OTA
Bug: 76228188
Fixes: 77888575
Change-Id: I5ca2605cb6befea46ce50198bc72bdd4b6e84f1a
2018-04-11 14:52:31 +00:00
Suprabh Shukla
96212bca06 Review of suspend/unsuspend APIs
Clarified the package extras bundle returned from
getSuspendedPackageAppExtras.
Moved the bundle arg to the last in LauncherApps.onPackagesSuspended and
clarified the contents of the Bundle.
isPackageSuspended(String) now throws a NameNotFoundException if the
package is not found.
Also, removed a permission check from isPackageSuspendedForUser.

Test: builds, boots, existing tests:
atest com.android.server.pm.SuspendPackagesTest

Bug: 77518983, 77517955, 77507744, 77801528
Change-Id: I06b5f69f8f8a079c206863cb6122e90be58366cd
2018-04-10 17:34:12 -07:00
Dan Cashman
5c9f527e33 Add SigningInfo class to expose package signing details.
Attempt to simplify the exposure of package signing information via
PackageInfo by creating a new class and corresponding methods for
querying a package's signing information.

Bug: 74831530
Test: PkgInstallSignatureVerificationTest
Change-Id: Idbc008b41a921f89cefb224b26f910da4d238dea
2018-04-10 22:19:20 +00:00
Jeff Sharkey
aa1a911d9a Fix broken target SDK checks.
Consider an app targeting the final API 28, but running on an older
build where "P" is still API 10000.  Those apps need to be treated as
legacy apps.

In general, the logical pattern that should be used when enforcing
target SDK behaviors is below.

For applying behavior to legacy apps:
    // BROKEN
    if (targetSdkVersion <= Build.VERSION_CODES.N_MR1) {
    // CORRECT
    if (targetSdkVersion < Build.VERSION_CODES.O) {

For applying behavior to new apps:
    // BROKEN
    if (targetSdkVersion > Build.VERSION_CODES.N_MR1) {
    // CORRECT
    if (targetSdkVersion >= Build.VERSION_CODES.O) {

Bug: 77865751
Test: builds, boots
Change-Id: Ia83bd446a940751d51a6542c7a5b9cca174c5296
2018-04-10 15:18:15 -06:00
TreeHugger Robot
e901d69ea6 Merge "setPackagesSuspended now overwrites all the state" into pi-dev 2018-04-10 20:15:24 +00:00
TreeHugger Robot
64c8e13b2a Merge "Fix javadoc xrefs." into pi-dev 2018-04-10 15:56:28 +00:00
Mathew Inwood
1ab3025cc7 Different hidden API enforcement policy for P & pre-P.
Also make these configurable so we have the flexibility to change it if
necessary.

Setting the policy inside ActivityManagerService is not ideal, as that
means that AMS is the only place where the policy in ApplicationInfo is
correct. It should really be set inside PackageManagerService. However,
if it's set there, it would get out of date when the settings change, and
we'd have to update inside AMS anyway. So putting it only here seems ok
for now.

Test: $ adb shell settings put global hidden_api_policy_pre_p_apps 2
Test: $ adb shell settings put global hidden_api_policy_p_apps 2
Bug: 64382372
Change-Id: Ic4cbbb1e6464623e90c17ae08c0b6cbbe0dfa125
2018-04-10 10:13:07 +01:00
TreeHugger Robot
3f345a99f7 Merge "Check permissions only against packagesettings" into pi-dev 2018-04-10 01:38:48 +00:00
Suprabh Shukla
45b9e40a4f setPackagesSuspended now overwrites all the state
Earlier setPackagesSuspended ignored the rest of the paramters when
suspend state did not change. This was a problem because then there was
no good way to update the other parameters without unsuspending the app,
which is not desirable.
Removed setSuspendedPackageAppExtras as now they can be update with this
api.
Also sending broadcasts when packages get unsuspended due to suspending
package removed.

Test: Existing tests pass:
atest com.android.server.pm.PackageUserStateTest
atest com.android.server.pm.SuspendPackagesTest
atest com.android.server.pm.PackageManagerSettingsTests

Bug: 77522553
Change-Id: I72a3c228d3d65c430e242da97b2bc6997ec6a135
2018-04-09 17:49:54 -07:00
TreeHugger Robot
a5bdeabf15 Merge "Clarify PackageManager.hasSigningCertificate docs." into pi-dev 2018-04-09 22:56:23 +00:00
Patrick Baumann
b00eb64591 Check permissions only against packagesettings
Prior to this change there was a chance that an updating app would not
exist in mPackages and cause a permission check for that app to fail.
This change moves all permission checks to use mSettings and the cached
package it contains to do the checks.

Change-Id: I0717bddbb08b1d0dbab3ea79fa0d2067aa858753
Fixes: 76228188
Test: Manual - system starts, permission checks work before / after update
2018-04-09 13:31:39 -07:00
Jeff Sharkey
b35baa53f7 Merge "ContentResolver should handle dead system_server." into pi-dev 2018-04-09 19:07:43 +00:00
Daniel Cashman
bd8ce384dc Clarify PackageManager.hasSigningCertificate docs.
Address API review by describing relationship between the
PackageManager.hasSigningCertificate() methods and the PackageInfo
GET_SIGNING_CERTIFICATES method, as well as differentiating the
UID documentation from the package-name based one.

Bug: 74831566
Test: None, doc change.
Change-Id: I11c556325f9b2efbc2e5e1cf896b9c58db092ae8
2018-04-09 18:23:45 +00:00
TreeHugger Robot
d565f04957 Merge "Expose TestAPIs needed by GtsOsTestCases" into pi-dev 2018-04-09 15:57:42 +00:00
Jeff Sharkey
c907d2137b ContentResolver should handle dead system_server.
Use the common rethrowFromSystemServer() pattern.  Carefully only
throws for calls going to system_server; leaves existing behavior
intact when calling a ContentProvider.

Bug: 77671218
Test: builds, boots
Change-Id: Ie5e0763fb5e62b832f2b6a03c8f9d72dab3bf89a
2018-04-09 09:56:45 -06:00
Philip P. Moltmann
f80809ffd7 Expose TestAPIs needed by GtsOsTestCases
Test: atest GtsOsTestCases on pi-dev:taimen and oc-mr1:sailfish
Bug: 77497338
Change-Id: I5de976991a857bfbed2faa943822af542601fa8b
2018-04-06 14:59:07 -07:00
Patrick Baumann
229141f082 Adds a start flag to set FLAG_ACTIVITY_MATCH_EXTERNAL
Test: manual - launch installed instant app from command line
Change-Id: I0e8532a683e3a68d2c81df222aab673d09c286ed
Fixes: 75967669
2018-04-06 14:16:16 -07:00
Mathew Inwood
5e986dccfd Fix typo in comments.
Keep the nitpickers happy.

Test: m
Bug: 77517571
Change-Id: I70374c05df3e366b5a0ce3bbb103dce28f48d4b8
2018-04-06 13:55:44 +01:00
Mathew Inwood
1f8757d35f Merge "Replace ALL_LISTS policy with JUST_WARN." into pi-dev 2018-04-06 12:32:42 +00:00
TreeHugger Robot
822ce4f3aa Merge "Activity interceptor dialog for suspended apps" into pi-dev 2018-04-05 21:15:19 +00:00
TreeHugger Robot
cb331c32db Merge "Fixes non-web AIA internal launch" into pi-dev 2018-04-05 17:07:14 +00:00
TreeHugger Robot
a4d6570b2f Merge "Copy ApplicationInfo#versionCode field" into pi-dev 2018-04-05 16:20:25 +00:00
Mathew Inwood
a6d02fb104 Replace ALL_LISTS policy with JUST_WARN.
It seems pretty unlikely that we'd ever want to disallow access to the
light greylist in P, since doing do would break do many apps. We don't need
this policy here as an opt-in for apps now, since the StrictMode work will
achieve the same thing.

Instead, make a "just warn" policy which allows access to all APIs, but
leaves the detection and logging logic in place. This gives us the option
of disabling enforcement, but still gathering logs to find out which apps
use which APIs.

Bug: 77517571

Test: Boot device
Test: Hardcode policy of HIDDEN_API_ENFORCEMENT_JUST_WARN and verify log

Change-Id: I588f347716a79ac5887b74763c8afc16b3be699b
2018-04-05 16:27:50 +01:00
Mathew Inwood
0e650c1c55 Merge "Exempt platform-cert signed apps from hidden API checks." into pi-dev 2018-04-05 10:43:12 +00:00
Rubin Xu
73961397e5 Merge "Device ID attestation: Add feature flag." into pi-dev 2018-04-05 09:38:28 +00:00
Suprabh Shukla
3c3af1406e Activity interceptor dialog for suspended apps
Added an AlertActivity to intercept the start for an activity belonging
to a suspended app. More details will be shown if the suspending app
also defines an activity to handle the API action
SHOW_SUSPENDED_APP_DETAILS.

Test: Added tests to existing classes. Can be run via:
atest com.android.server.pm.SuspendPackagesTest
atest com.android.server.pm.PackageManagerSettingsTests
atest com.android.server.pm.PackageUserStateTest

Bug: 75332201
Change-Id: I85dc4e9efd15eedba306ed5b856f651e3abd3e99
2018-04-04 18:40:19 -07:00
TreeHugger Robot
fe99686d8a Merge "Hiding windows for suspended packages" into pi-dev 2018-04-04 22:42:37 +00:00
Patrick Baumann
7838027fb0 Fixes non-web AIA internal launch
This change plumbs the original uid of a startActivity call through to
PackageManagerService#queryIntentActivitiesInternal so that we properly
filter.

Test: manual - launch previously failing instant app
Change-Id: I0a62195f67c2e08315ce2d87f1d8c516c2327ba6
Fixes: 77489209
2018-04-04 14:32:26 -07:00
Patrick Baumann
c2def58ec0 Copy ApplicationInfo#versionCode field
This compatibility change ensures that apps built for pre-P that rely
on reflection to access ApplicationInfo#versionCode don't crash. The
move to long version code introduces a new field and all modifications
of the field are wrapped in a method that ensures both the new and old
fields are set appropriately.

Test: manual - impacted app runs
Change-Id: I5fb37c65b0fb04042dda12479d1e1a76590daa3d
Fixes: 74393568
2018-04-04 12:18:16 -07:00
Mathew Inwood
9d89543d48 Exempt platform-cert signed apps from hidden API checks.
This means that APKs signed with the platform cert are allowed to use
hidden APIs, even if they are not on the package whitelist, and if they are
not in the system image. It will also allow a number of packages to be
removed from the package whitelist.

Also remove all platform cert signed apps from the package whitelist, as
there is no longer any need for them to be in there.

Bug: 64382372
Test: device boots
Change-Id: Id805419918de51f946c1f592581bab36ae79de83
2018-04-04 17:49:48 +01:00