Merge "Replace HashMap with ArrayMap in AppsFilterImpl"
This commit is contained in:
committed by
Android (Google) Code Review
commit
5e515d64ec
@@ -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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user