On role revocation, don't revoke appops/perms for other held roles
Bug: 110557011
Test: atest android.app.role.cts.RoleManagerTest#revokeSingleRoleThenEnsureOtherRolesAppopsIntact
Change-Id: I4ff110ae950b2a6b6acbef1195d69877d2f34c72
diff --git a/services/core/java/com/android/server/role/RoleUserState.java b/services/core/java/com/android/server/role/RoleUserState.java
index d55e261..630a39c 100644
--- a/services/core/java/com/android/server/role/RoleUserState.java
+++ b/services/core/java/com/android/server/role/RoleUserState.java
@@ -47,6 +47,7 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -315,6 +316,21 @@
}
/**
+ * @see android.app.role.RoleManager#getHeldRolesFromController
+ */
+ @NonNull
+ public List<String> getHeldRoles(@NonNull String packageName) {
+ ArrayList<String> result = new ArrayList<>();
+ int size = mRoles.size();
+ for (int i = 0; i < size; i++) {
+ if (mRoles.valueAt(i).contains(packageName)) {
+ result.add(mRoles.keyAt(i));
+ }
+ }
+ return result;
+ }
+
+ /**
* Schedule writing the state to file.
*/
@GuardedBy("mLock")