Commit Graph

9346 Commits

Author SHA1 Message Date
Winson
985d71551d Parcel queriesProviders in ParsingPackageImpl
This was broken in the original migration, causing this field to be
dropped on reboot.

Bug: 178209505

Test: TODO, separate change will include comprehensive parceling test

Change-Id: I67219fe00c7b92677391fd46305bf0424d74e5f3
(cherry picked from commit 00f69942be)
2021-02-11 16:57:08 +00:00
Alex Kershaw
f764d9e98f DO NOT MERGE Correctly reset cross-profile app-op
Delegate the resetting of the INTERACT_ACROSS_PROFILES app-op to
DevicePolicyManager, which knows whether it should be pre-granted and
knows to apply it equally across all users in the profile group.

Further unit tests for DevicePolicyManagerInternal will be added in
b/175440570 when we have the better infra for that.

The CrossProfileAppsServiceImpl changes look more complex than they are.
They consist of the following:
- Inclusive language changes to 'allowlist'
- Static imports of permissions to improve readability
- Previously, the setInteractAcrossProfilesAppOp method would set the
app-op for every user within the profile group of the 'calling user'.
However, given that we are now exposing this as a server-side internal
API where we need to pass in a user ID (from AppOpsService), we don't
necessarily have the guarantee that the 'calling user' is in the same
profile group. So we split it up: the client-side API and AIDL API still
set the app-op for the calling profile group, whereas the internal API
sets the app-op for every user within the profile group of the provided
user. The changes simply abstract away references to the 'calling user
ID'.

Fixes: 166561076
Bug: 175440570
Test: atest services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java --verbose -c
Test: manual
Change-Id: I2181fe66022aaf6c3e6d784c0569d2f41ab66537
(cherry picked from commit d004f41188)
2020-12-17 13:27:34 +00:00
TreeHugger Robot
e9fd7678bf Merge "Update CPA startActivity javadoc to refer to passing the result back" into rvc-qpr-dev 2020-12-04 13:39:26 +00:00
Kevin Hufnagle
fe2da4e99b Merge "docs: Mention app query filters on Android 11" into rvc-dev am: ace19f5537 am: 6030f5b0cb
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13113598

Change-Id: I14c6ed59a8dbf90170424abe2738a568c7fe672a
2020-12-02 19:00:53 +00:00
Kevin Hufnagle
6030f5b0cb Merge "docs: Mention app query filters on Android 11" into rvc-dev am: ace19f5537
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13113598

Change-Id: I810cb264829917cc07af833dc4a1486ec4943574
2020-12-02 18:31:08 +00:00
Alex Kershaw
fabbba0c8a Update CPA startActivity javadoc to refer to passing the result back
Update both versions of CrossProfileApps#startActivity to refer to
passing the result back to the passed in calling activity.

Bug: 174506563
Fixes: 171957840
Test: atest com.android.cts.devicepolicy.CrossProfileAppsHostSideTest#testStartActivityIntent_crossProfile_returnsResult
Change-Id: I14bf779d9307232b31300b828a1606c7411c7bb3
2020-12-02 10:51:44 +00:00
Kevin Hufnagle
09478539ae docs: Mention app query filters on Android 11
For apps that target Android 11 and higher, the methods in this class
each return a filtered list by default, because of the new package
visibility behavior.

Test: m ds-docs-java

Bug: 173104139

Exempt-From-Owner-Approval: Docs-only change
Change-Id: Idd239a6a9b4e1764b8285f73a341adc024281be2
2020-12-01 19:02:29 -05:00
Evan Severson
eeeab037df Do not allow uninstalling while an app is pinned
If an app is pinned we want to avoid ways to unpin without entering a
set passcode. If the package of the base activity in the pinned activity
stack is uninstalled then the device exits pinning mode so we want to
restrict uninstalling this package.

Bug: 135604684
Test: Pin test app, test app tries to uninstall itself
      Pin test app, `adb uninstall`
      Pin test app, test app launches second test app, assert that
          second test app can be uninstalled but base test app can't

Change-Id: I32ee438e9dd9e245bed6e6a9f4efd0abbb70de1f
Merged-In: I32ee438e9dd9e245bed6e6a9f4efd0abbb70de1f
2020-11-02 11:51:24 -08:00
Patrick Baumann
e530998c9e Merge "Expose grantImplicitAccess in IPackageManager" into rvc-qpr-dev 2020-09-23 17:48:57 +00:00
TreeHugger Robot
7d2354bdc5 Merge "Added UserInfo.convertedFromPreCreated" into rvc-qpr-dev 2020-09-21 18:40:48 +00:00
Felipe Leme
4c0f6907fb Added UserInfo.convertedFromPreCreated
This attribute is useful to identify (on bugreports) whether a
user was created "from scratch" or converted from a pre-created user.

Test: adb shell cmd user list --all -v
Test: adb shell dumpsys user
Test: atest UserControllerTest UserManagerServiceUserInfoTest

Fixes: 165703573

Change-Id: Iee9df636db5677b4d968d49bb5f5b3fbb9a7f02d
Merged-In: Iee9df636db5677b4d968d49bb5f5b3fbb9a7f02d
(cherry picked from commit c5986436a9779bbe9068609062fb231aff37e1d4)
2020-09-17 06:47:26 +00:00
Louis Chang
c22364237a Update language to comply with Android's inclusive language guidance
See https://source.android.com/setup/contribute/respectful-code for
reference.

Bug: 162536543
Test: Treehugger
Change-Id: I6dac60aac172a8fccf4b5671107b41c5c84ccd76
Merged-In: I6dac60aac172a8fccf4b5671107b41c5c84ccd76
2020-09-15 10:23:23 +08:00
Patrick Baumann
7d26c8c526 Expose grantImplicitAccess in IPackageManager
This change exposes the method to grant implicit visibility access via
IPackageManager and as a hidden API in PackageManager. This variant of
the method takes a recipient UID and the authority that it should see
and limits access to only the contacts provider on device.

Bug: 158688602
Test: PackageManagerTests
Change-Id: I0050593e4aa734af1a69a40a60746f7cf0ea72df
2020-09-14 19:49:20 +00:00
Alex Buynytskyy
b1d0a839f1 Fix transfer API.
Transfer API should throw security exception when transfering the
session which is not installing the original installer.
Moving it onto commit stage and still fail the installation.

Fixes: 165775712
Test: atest InstallSessionTransferTest
Test: atest -p frameworks/base/services/core/java/com/android/server/pm
Change-Id: I8511d4357788e70f83bcbd366908b42a691afbcb
Merged-In: I8511d4357788e70f83bcbd366908b42a691afbcb
2020-08-28 05:06:41 +00:00
TreeHugger Robot
786165bae0 Merge "Don't clone the locale redundantly in Configuration.setTo()" into rvc-qpr-dev 2020-08-03 18:42:10 +00:00
Jackal Guo
379eb5c25f Correct protectionToString
The information of protectionLevel companion is missing when dumping
to string.

Bug: 161855740
Test: atest CtsPermission2TestCases:PermissionPolicyTest
Change-Id: Ifa9099541df1c287e5883a801ed14d34dad6287b
Merged-In: Ifa9099541df1c287e5883a801ed14d34dad6287b
2020-07-30 05:22:53 +00:00
Christopher Tate
7652ae9080 Don't clone the locale redundantly in Configuration.setTo()
When updating an existing Configuration instance, don't create a new
clone of the pattern's embedded Locale unless it is materially different
from the existing instance's own.

Bug: 161264248
Test: boot & run
Test: atest AppConfigurationTests
Test: atest ConfigChangeTests
Test: atest LocaleListTest
Change-Id: I5dc0598b89305c488ba50c1774ecdabf939a6ccc
Merged-In: I5dc0598b89305c488ba50c1774ecdabf939a6ccc
2020-07-15 16:35:30 +00:00
Hall Liu
12a3f5cfdc Skip carrier priv check for trusted UIDs
Checking carrier privileges for UIDs with lots of shared apps can incur
a significant performance hit. For UIDs that are fixed and trusted
(system and phone), skip the permission check and always allow.

Also, double the cache size for getPackageInfo in order to reduce the
rate of cache misses.

Bug: 160971853
Test: manual verification -- observed lower rate of cache misses for
getPackageInfo from com.android.phone.

Change-Id: I1399cab579308479d7cf191b8795441cbcd3ff65
2020-07-13 12:45:00 -07:00
Patrick Baumann
a1b6280ec8 Merge "Don't assume host is wildcard if not provided" into rvc-dev 2020-07-09 23:31:56 +00:00
Patrick Baumann
aab67c2b9d Don't assume host is wildcard if not provided
This change ensures that while parsing a package, we require an explicit
wildcard in the queries->intent->data->host field. Prior to this change,
we were defaulting to wildcard when not provided. This resulted in,
e.g. someone trying to get visibility to just browsers actually getting
access to all packages that handle any web intent.

Fixes: 160868841
Test: atest AppEnumerationTests IntentFilterTest
Change-Id: I771845467928b6655fe19efe89bd2ca548dca6e5
2020-07-09 12:28:54 -07:00
Charles Chen
5c25605da0 Merge "Fix NPE when invoking Context#isUiContext" into rvc-dev 2020-07-08 17:46:09 +00:00
Charles Chen
3b8e8d7631 Fix NPE when invoking Context#isUiContext
Add null checks in both ContextWrapper and before obtaining
ContextImpl#getOuterContext.

Test: atest ContextTest#testIsUiContext_ContextWrapper
fixes: 160037462
Change-Id: Ic6a71dd9ac4b195d219d6e5431f2f2b199a400fa
2020-07-08 23:58:58 +08:00
Eugene Susla
aad46b8980 Remove references to undocumented WHITELIST_AUTO_REVOKE_PERMISSIONS from javadoc
Fixes: 160119966
Test: presubmit
Change-Id: If7db38ae7d96441cabab1141e93abf357daf8164
2020-07-06 10:23:25 -07:00
TreeHugger Robot
8411d73710 Merge "Update Java doc for FLAG_ACTIVITY_LAUNCH_ADJACENT" into rvc-dev 2020-06-18 16:40:32 +00:00
Michael Groover
67cb3a610d Merge "Relax minimum signature scheme version for apps on system partition" into rvc-dev 2020-06-18 16:13:30 +00:00
jun.h.cho
c3540cc2f9 Update Java doc for FLAG_ACTIVITY_LAUNCH_ADJACENT
The behavior of the adjacent flag is changed. It can be changed to split-screen mode if supported by the system.

Fixes: 155050369
Test: n/a
Change-Id: Ia19e0228442e7c8847d403ee2def841f1c0b712b
2020-06-18 07:55:15 -07:00
Michael Groover
b71e398935 Relax minimum signature scheme version for apps on system partition
Android 11 requires a minimum V2 APK signature for apps targeting SDK
version 30+; however some apps on a system partition can only be signed
with the V1 signature scheme. This commit relaxes the minimum signature
scheme version to allow for these apps on a system partition.

Bug: 158728035
Test: atest PackageManagerTest
Test: atest PackageManagerTests
Test: atest PkgInstallSignatureVerificationTest
Change-Id: I1a95fd6894cc937e00ad1ac54d1846b51b48e9cd
2020-06-17 11:02:18 -07:00
TreeHugger Robot
f40975ee76 Merge "Add tron metrics to track iorap." into rvc-dev 2020-06-16 02:20:26 +00:00
yawanng
35a0090975 Add tron metrics to track iorap.
Bug: 158007508
Test: Make and manually check the log using
"adb logcat -b events | grep sysui_multi_action".
Change-Id: I8365bbaa0abf65bdffd8da9462a2295a5e37b3c2
2020-06-15 17:01:04 +00:00
Alex Buynytskyy
0403545508 Don't provide read logs for shell-initiated installations.
Only if the application is profileable.

Bug: 158238023
Fixes: 158238023
Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageParserTest
Change-Id: I8575830ec3f29850297fdbfbaa157072d6350a28
Merged-In: I8575830ec3f29850297fdbfbaa157072d6350a28
2020-06-12 13:30:45 -07:00
TreeHugger Robot
0561690cac Merge "Apply theme shape clipping to group convo avatars" into rvc-dev 2020-06-11 18:22:46 +00:00
Steve Elliott
86bc69a491 Apply theme shape clipping to group convo avatars
Fixes: 158493588
Test: manual
Change-Id: I57b5e0712822b345c9dcce74b8a6d6ff33409de6
2020-06-10 15:23:33 -04:00
Winson
6bdadaf0a0 Fix PackagePartitions contains null check
The subfolders can be null depending on the partition.

Bug: 158671002

Test: manual was tested as part of not yet merged
	Ie09ccf4b64a0be26d19c9034a68ca4877ca49b81

Change-Id: Ic3a07867cb50b6b0b0e265e9540c52ee94c68050
2020-06-10 11:07:12 -07:00
TreeHugger Robot
9f15ba2e1a Merge "Fix up discrepancies between v1 and v2 package parsing" into rvc-dev 2020-06-04 18:12:56 +00:00
Eugene Susla
c43f49dfc4 Merge "Deprecate docs for auto revoke manifest and Intent APIs" into rvc-dev 2020-06-04 01:08:10 +00:00
Eugene Susla
c7cae60a64 Deprecate docs for auto revoke manifest and Intent APIs
Test: presubmit
Bug: 153607914
Change-Id: I9c8d0aa1432ca00b729f19749e751cb117374b0a
2020-06-03 13:46:00 -07:00
Winson
10d51880e2 Add PackageInstaller SessionParams restrictions
To mitigate a boot loop with reading a massive
install_sessions.xml file, this restricts the amount of
data that can be written by limiting the size of
unbounded parameters like package name and app label.

This introduces a lowered max session count. 50 for general
applications without the INSTALL_PACKAGES permission, and
the same 1024 for those with the permission.

Also truncates labels read from PackageItemInfo to 1000
characters, which is probably enough.

These changes restrict a malicious third party app to ~0.15 MB
written to disk, and a valid installer to ~3.6 MB, as opposed to
the >1000 MB previously allowed.

These numbers assume no install granted runtime permissions.
Those were not restricted since there's no good way to do so,
but it's assumed that any installer with that permission is
highly privleged and doesn't need to be limited.

Along the same lines, DataLoaderParams are also not restricted.
This will have to be added if that API is ever made public.

However, installer package was restricted, even though the API is
hidden. It was an easy add and may have some effect since the value
is derived from other data and passed through by other system
components.

It's still possible to inflate the file size if a lot of
different apps attempt to install a large number of packages,
but that would require thousands of malicious apps to be installed.

Bug: 157224146

Test: atest android.content.pm.PackageSessionTests

Change-Id: Iec42bee08d19d4ac53b361a92be6bc1401d9efc8
2020-06-02 12:58:53 -07:00
Zimuzo Ezeozue
efbc3f2d5e Merge "Support apps sharing file:// URIs with the camera API" into rvc-dev 2020-06-02 10:45:33 +00:00
Zim
c7496a3a62 Support apps sharing file:// URIs with the camera API
The camera API, MediaStore.ACTION_IMAGE_CAPTURE requires apps to pass
a content:// URI with write permissions to the camera. Unfortunately,
apps haven't been doing this and we only started hitting problems in R
for two reasons:
1. The FileUriExposedException that should crash apps when they try to
share file:// URIs acroos binder is skipped. This is because, the
image_capture intent is passed across binder as a field in a
ChooserActivity Intent and the child intents are not checked for
file URI exposed
2. Prior to R, when camera gets a file:// URI, camera issues a file
open(2) in its process. This open(2) succeeds because the camera had
write_external_storage permission which gave it write access to all
files on external storage

Now, camera targets R and (2) fails because camera does not have write
access to files owned by other apps. To workaround, we do the
following in the apps process when it targets < R:
a. When we detect a file:// URI for the camera in an Intent, we create
the file on disk if it is not already created.
b. Scan the file to insert it in the database and retrieve a
content:// URI
c. Replace the file:// URI with the content URI in the image_capture
intent

This works because, the system will ensure the camera is granted write
access to the content URI.

Test: Manual
Bug: 156336269
Change-Id: I4849ff5e806a8207650ff7534846c36ecdc6d3c0
2020-06-01 20:33:52 +01:00
Winson
69738c7547 Fix up discrepancies between v1 and v2 package parsing
For Activity aliases, it's possible some values are already
set, which means they cannot be assumed to be 0, and can't be
overwritten if a attribute in the alias is undefined. For the
parsing v2 refactor, this was cleaned up to avoid
redundant != 0 checks, but those checks are indeed necessary.
This copies over the old logic and uses it exactly.

In some future cleanup, there should be a more structured way
of doing this, since it's not immediately obvious which values
are overridden or not. For example, description is always
overwritten even if no new value is provided in the alias.

This also fixes up the comparison tests and other bugs that
popped up because of them. The core issue was that when
auto-generating the dumpToString methods, the Alt+Insert
macro default selects all the fields in the current class,
but not all the parent classes, so some shared fields like
name/icon were not considered.

A notable case that was found when running the comparison tests
is that persistableMode is now "fixed" with v2. Previously,
a bug in PackageParser caused this value to be dropped if
the ActivityInfo object ever had to be copied. This is a change
from Q behavior, but there's no good way to reconcile this, and
it's better to be correct and consistent than broken, so this
fix was left in and excluded from the comparison tests.

Bug: 150106908

Test: manual run through steps in bug
Test: atest com.android.server.pm.parsing

Merged-In: I1301e28540314d0e643b73af7146c1a366eca6b5
Change-Id: I1301e28540314d0e643b73af7146c1a366eca6b5
2020-06-01 17:53:18 +00:00
Kwangho Lim
2141f707b7 [wm] Introduce meta-data tag (android.supports_size_changes)
Introduce meta-data tag "android.supports_size_changes" which will indicated that an activity works well with size changes like display changing size.

Test: Manual - Run by adding metadata to the app running with SizeCompatMode.
Bug: 155041354
Change-Id: I0f358f63c9e14c63294275c0bfcd08744bee1108
2020-06-01 08:34:38 -07:00
TreeHugger Robot
e40b321ee6 Merge "Add test for permission APEX." into rvc-dev 2020-05-29 21:40:19 +00:00
Ryan Mitchell
d32418a72a Merge "Install system app in greatest priority partition" into rvc-dev 2020-05-29 18:05:31 +00:00
TreeHugger Robot
d220529254 Merge "Add DPC restriction for INTERACT_ACROSS_PROFILES to javadoc." into rvc-dev 2020-05-29 13:22:27 +00:00
Alex Kershaw
4da9c2097d Add DPC restriction for INTERACT_ACROSS_PROFILES to javadoc.
Fixes: 157229284
Test: Javadoc only
Change-Id: I21f6276ba08e62c1f17a279241838fdbd352c8d8
2020-05-29 12:43:08 +01:00
Hai Zhang
3562068af9 Add test for permission APEX.
Bug: 152055112
Test: atest PermissionApexTests
Change-Id: I4201501d586fe62df7a04d0e2da955d6d873d3df
2020-05-28 16:19:07 -07:00
Ryan Mitchell
d4e7f93df5 Install system app in greatest priority partition
On Pixel 2 devices, /product is a symlink to /system/product. The
product partition has a higher partition precedence than the system
partition so the app should be installed as a system app on the product
partition.

This change also unifies methods for checking whether a file is within
a partition so we will paths will always be canonicalized before the
check.

Bug: 152522330
Test: update system app in system/product/privapp, uninstall updates,
      verify that the app was scanned as privileged
Change-Id: I646a5f293b977a78daa2102b73f1d3122f774a2a
2020-05-28 16:06:30 -07:00
TreeHugger Robot
f37b09335f Merge "Remove InstantAppResolverTests for migration to CTS" into rvc-dev 2020-05-28 00:23:16 +00:00
Mehdi Alizadeh
c95be6995a Merge "Adds cacheFlags parameter to cache/uncacheShortcuts() methods" into rvc-dev 2020-05-27 19:23:39 +00:00
TreeHugger Robot
80a18c0a7b Merge "Camera: Extend FEATURE_CAMERA_CONCURRENT to old API levels" into rvc-dev 2020-05-27 00:45:04 +00:00