Merge "Add visibility special casing for sdk sandbox" into tm-dev am: f598205c2d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18636029

Change-Id: I0b7e1d7a023b9bef1d4b6c81c88d89a4a8cd14fd
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Patrick Baumann
2022-05-31 15:13:06 +00:00
committed by Automerger Merge Worker
2 changed files with 43 additions and 0 deletions

View File

@@ -321,6 +321,9 @@ public abstract class AppsFilterBase implements AppsFilterSnapshot {
|| targetPkgSetting.getAppId() < Process.FIRST_APPLICATION_UID || targetPkgSetting.getAppId() < Process.FIRST_APPLICATION_UID
|| callingAppId == targetPkgSetting.getAppId()) { || callingAppId == targetPkgSetting.getAppId()) {
return false; return false;
} else if (Process.isSdkSandboxUid(callingAppId)) {
// we only allow sdk sandbox processes access to forcequeryable packages
return !isForceQueryable(targetPkgSetting.getAppId());
} }
if (mCacheReady) { // use cache if (mCacheReady) { // use cache
if (!shouldFilterApplicationUsingCache(callingUid, if (!shouldFilterApplicationUsingCache(callingUid,

View File

@@ -1336,6 +1336,46 @@ public class AppsFilterImplTest {
} }
@Test
public void testSdkSandbox_canSeeForceQueryable() throws Exception {
final AppsFilterImpl appsFilter =
new AppsFilterImpl(mFeatureConfigMock, new String[]{}, false, null,
mMockHandler);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady(mPmInternal);
PackageSetting target = simulateAddPackage(appsFilter,
pkg("com.some.package").setForceQueryable(true), DUMMY_TARGET_APPID,
setting -> setting.setPkgFlags(ApplicationInfo.FLAG_SYSTEM));
int callingUid = 20123;
assertTrue(Process.isSdkSandboxUid(callingUid));
assertFalse(
appsFilter.shouldFilterApplication(mSnapshot, callingUid,
null /* callingSetting */, target, SYSTEM_USER));
}
@Test
public void testSdkSandbox_cannotSeeNonForceQueryable() throws Exception {
final AppsFilterImpl appsFilter =
new AppsFilterImpl(mFeatureConfigMock, new String[]{}, false, null,
mMockHandler);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady(mPmInternal);
PackageSetting target = simulateAddPackage(appsFilter,
pkg("com.some.package"), DUMMY_TARGET_APPID,
setting -> setting.setPkgFlags(ApplicationInfo.FLAG_SYSTEM));
int callingUid = 20123;
assertTrue(Process.isSdkSandboxUid(callingUid));
assertTrue(
appsFilter.shouldFilterApplication(mSnapshot, callingUid,
null /* callingSetting */, target, SYSTEM_USER));
}
private List<Integer> toList(int[] array) { private List<Integer> toList(int[] array) {
ArrayList<Integer> ret = new ArrayList<>(array.length); ArrayList<Integer> ret = new ArrayList<>(array.length);
for (int i = 0; i < array.length; i++) { for (int i = 0; i < array.length; i++) {