Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d2e02178 authored by Patrick Baumann's avatar Patrick Baumann Committed by Automerger Merge Worker
Browse files

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

Merge "Add visibility special casing for sdk sandbox" into tm-dev am: f598205c am: e5f23205 am: d708eb81

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



Change-Id: I6f073d04d2d2fb6cff7569ef3dc1616e58f13713
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 556ebbf9 d708eb81
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -321,6 +321,9 @@ public abstract class AppsFilterBase implements AppsFilterSnapshot {
                    || targetPkgSetting.getAppId() < Process.FIRST_APPLICATION_UID
                    || callingAppId == targetPkgSetting.getAppId()) {
                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 (!shouldFilterApplicationUsingCache(callingUid,
+40 −0
Original line number Diff line number Diff line
@@ -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) {
        ArrayList<Integer> ret = new ArrayList<>(array.length);
        for (int i = 0; i < array.length; i++) {