summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nikolas Havrikov <havrikov@google.com> 2022-11-17 16:33:37 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-11-17 16:33:37 +0000
commit5e515d64ec82e6875b9f08e49c8266caca577b26 (patch)
tree436fd8c31bb54657ed28d54d4ef8e2ebaf7614bf
parenta5ca8d2495a2de2f12d0cb6d7947d1210e0ecaac (diff)
parent3fa28af449d2dab6abcff9049ef4c29d30367db3 (diff)
Merge "Replace HashMap with ArrayMap in AppsFilterImpl"
-rw-r--r--services/core/java/com/android/server/pm/AppsFilterImpl.java25
1 files changed, 14 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/pm/AppsFilterImpl.java b/services/core/java/com/android/server/pm/AppsFilterImpl.java
index c97711b3aa80..5b837f1daa6f 100644
--- a/services/core/java/com/android/server/pm/AppsFilterImpl.java
+++ b/services/core/java/com/android/server/pm/AppsFilterImpl.java
@@ -81,11 +81,8 @@ import com.android.server.utils.Watcher;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Objects;
-import java.util.Set;
/**
* Implementation of the methods that update the internal structures of AppsFilter. Because of the
@@ -113,7 +110,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable,
*/
@GuardedBy("mQueryableViaUsesPermissionLock")
@NonNull
- private HashMap<String, Set<Integer>> mPermissionToUids;
+ private final ArrayMap<String, ArraySet<Integer>> mPermissionToUids;
/**
* A cache that maps parsed {@link android.R.styleable#AndroidManifestUsesPermission
@@ -123,7 +120,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable,
*/
@GuardedBy("mQueryableViaUsesPermissionLock")
@NonNull
- private HashMap<String, Set<Integer>> mUsesPermissionToUids;
+ private final ArrayMap<String, ArraySet<Integer>> mUsesPermissionToUids;
/**
* Ensures an observer is in the list, exactly once. The observer cannot be null. The
@@ -225,8 +222,8 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable,
mProtectedBroadcasts = new WatchedArraySet<>();
mProtectedBroadcastsSnapshot = new SnapshotCache.Auto<>(
mProtectedBroadcasts, mProtectedBroadcasts, "AppsFilter.mProtectedBroadcasts");
- mPermissionToUids = new HashMap<>();
- mUsesPermissionToUids = new HashMap<>();
+ mPermissionToUids = new ArrayMap<>();
+ mUsesPermissionToUids = new ArrayMap<>();
mSnapshot = new SnapshotCache<AppsFilterSnapshot>(this, this) {
@Override
@@ -609,7 +606,10 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable,
// Lookup in the mPermissionToUids cache if installed packages have
// defined this permission.
if (mPermissionToUids.containsKey(usesPermissionName)) {
- for (int targetAppId : mPermissionToUids.get(usesPermissionName)) {
+ final ArraySet<Integer> permissionDefiners =
+ mPermissionToUids.get(usesPermissionName);
+ for (int j = 0; j < permissionDefiners.size(); j++) {
+ final int targetAppId = permissionDefiners.valueAt(j);
if (targetAppId != newPkgSetting.getAppId()) {
mQueryableViaUsesPermission.add(newPkgSetting.getAppId(),
targetAppId);
@@ -619,7 +619,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable,
// Record in mUsesPermissionToUids that a permission was requested
// by a new package
if (!mUsesPermissionToUids.containsKey(usesPermissionName)) {
- mUsesPermissionToUids.put(usesPermissionName, new HashSet<>());
+ mUsesPermissionToUids.put(usesPermissionName, new ArraySet<>());
}
mUsesPermissionToUids.get(usesPermissionName).add(newPkgSetting.getAppId());
}
@@ -633,7 +633,10 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable,
// Lookup in the mUsesPermissionToUids cache if installed packages have
// requested this permission.
if (mUsesPermissionToUids.containsKey(permissionName)) {
- for (int queryingAppId : mUsesPermissionToUids.get(permissionName)) {
+ final ArraySet<Integer> permissionUsers = mUsesPermissionToUids.get(
+ permissionName);
+ for (int j = 0; j < permissionUsers.size(); j++) {
+ final int queryingAppId = permissionUsers.valueAt(j);
if (queryingAppId != newPkgSetting.getAppId()) {
mQueryableViaUsesPermission.add(queryingAppId,
newPkgSetting.getAppId());
@@ -642,7 +645,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable,
}
// Record in mPermissionToUids that a permission was defined by a new package
if (!mPermissionToUids.containsKey(permissionName)) {
- mPermissionToUids.put(permissionName, new HashSet<>());
+ mPermissionToUids.put(permissionName, new ArraySet<>());
}
mPermissionToUids.get(permissionName).add(newPkgSetting.getAppId());
}