Add MATCH_ANY_USER flag when get valid package uid
Now getPackageUid would check if the package is installed on the
given userId. Since we treat calls from a profile as if made by
its parent, using MATCH_ANY_USER to query the uid of the given
package name.
Bug: 186180067
Test: atest -p core/java/android/view/accessibility
Test: atest -p services/accessibility
Change-Id: I0c452d880f30b6bc0167757dc04fb8d2c69a6d15
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java b/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java
index dc2628f..565193a 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java
@@ -444,8 +444,10 @@
private boolean isValidPackageForUid(String packageName, int uid) {
final long token = Binder.clearCallingIdentity();
try {
+ // Since we treat calls from a profile as if made by its parent, using
+ // MATCH_ANY_USER to query the uid of the given package name.
return uid == mPackageManager.getPackageUidAsUser(
- packageName, UserHandle.getUserId(uid));
+ packageName, PackageManager.MATCH_ANY_USER, UserHandle.getUserId(uid));
} catch (PackageManager.NameNotFoundException e) {
return false;
} finally {
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java
index ee00cb2..5e8e3f1 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java
@@ -261,8 +261,8 @@
@Test
public void resolveValidReportedPackage_uidAndPkgNameMatched_returnPkgName()
throws PackageManager.NameNotFoundException {
- when(mMockPackageManager.getPackageUidAsUser(PACKAGE_NAME, TEST_USER_ID))
- .thenReturn(APP_UID);
+ when(mMockPackageManager.getPackageUidAsUser(PACKAGE_NAME,
+ PackageManager.MATCH_ANY_USER, TEST_USER_ID)).thenReturn(APP_UID);
assertEquals(mA11ySecurityPolicy.resolveValidReportedPackageLocked(
PACKAGE_NAME, APP_UID, TEST_USER_ID, APP_PID),