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

Commit e5837a11 authored by Patrick Baumann's avatar Patrick Baumann Committed by Android (Google) Code Review
Browse files

Merge "Accounts for PackageSetting.pkg == null"

parents dc6ad439 702cf7e5
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -321,14 +321,21 @@ class AppsFilter {
    private boolean shouldFilterApplicationInternal(
            PackageSetting callingPkgSetting, PackageSetting targetPkgSetting, int userId) {
        final String callingName = callingPkgSetting.pkg.packageName;
        final String targetName = targetPkgSetting.pkg.packageName;
        final PackageParser.Package targetPkg = targetPkgSetting.pkg;

        // This package isn't technically installed and won't be written to settings, so we can
        // treat it as filtered until it's available again.
        if (targetPkg == null) {
            return true;
        }
        final String targetName = targetPkg.packageName;
        if (callingPkgSetting.pkg.applicationInfo.targetSdkVersion < Build.VERSION_CODES.R) {
            return false;
        }
        if (isImplicitlyQueryableSystemApp(targetPkgSetting)) {
            return false;
        }
        if (targetPkgSetting.pkg.mForceQueryable) {
        if (targetPkg.mForceQueryable) {
            return false;
        }
        if (mForceQueryable.contains(targetName)) {
+18 −0
Original line number Diff line number Diff line
@@ -323,6 +323,24 @@ public class AppsFilterTest {
        assertTrue(appsFilter.shouldFilterApplication(DUMMY_CALLING_UID, null, target, 0));
    }

    @Test
    public void testNoTargetPackage_filters() {
        final AppsFilter appsFilter =
                new AppsFilter(mConfigProviderMock, mPermissionManagerMock, mAppOpsManager,
                        new String[]{}, false);

        PackageSetting target = new PackageSettingBuilder()
                .setName("com.some.package")
                .setCodePath("/")
                .setResourcePath("/")
                .setPVersionCode(1L)
                .build();
        PackageSetting calling = simulateAddPackage(appsFilter,
                pkg("com.some.other.package", new Intent("TEST_ACTION"))).build();

        assertTrue(appsFilter.shouldFilterApplication(DUMMY_CALLING_UID, calling, target, 0));
    }

    private PackageSettingBuilder simulateAddPackage(AppsFilter filter,
            PackageBuilder newPkgBuilder) {
        PackageParser.Package newPkg = newPkgBuilder.build();