Loading services/core/java/com/android/server/pm/AppsFilter.java +9 −2 Original line number Diff line number Diff line Loading @@ -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)) { Loading services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java +18 −0 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading
services/core/java/com/android/server/pm/AppsFilter.java +9 −2 Original line number Diff line number Diff line Loading @@ -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)) { Loading
services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java +18 −0 Original line number Diff line number Diff line Loading @@ -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(); Loading