diff options
| author | 2022-05-14 17:05:26 +0000 | |
|---|---|---|
| committer | 2022-05-14 17:05:26 +0000 | |
| commit | f75a338996f2a9139d1209e5f1b010eab6cecdcc (patch) | |
| tree | f3fed10fba6373a02c6dc207d6e2a0ea0472d8aa | |
| parent | bd4ae50c2b076c60885395fe8a1a5e23d0ed0761 (diff) | |
| parent | 2dabd1208cb2084cf52defd8d2a9471b8a5706df (diff) | |
Merge "Revert "Synchronize cache-is-ready boolean with cache readiness."" into tm-dev am: 2dabd1208c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18384536
Change-Id: I0fad10146b69dc53bd43234e213d74fde89e03f8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
4 files changed, 17 insertions, 29 deletions
diff --git a/services/core/java/com/android/server/pm/AppsFilterBase.java b/services/core/java/com/android/server/pm/AppsFilterBase.java index e7bcb0aa13c8..7004c7363122 100644 --- a/services/core/java/com/android/server/pm/AppsFilterBase.java +++ b/services/core/java/com/android/server/pm/AppsFilterBase.java @@ -173,7 +173,7 @@ public abstract class AppsFilterBase implements AppsFilterSnapshot { * {@link #shouldFilterApplicationInternal(PackageDataSnapshot, int, Object, * PackageStateInternal, int)} call. * NOTE: It can only be relied upon after the system is ready to avoid unnecessary update on - * initial scam and is empty until {@link #mCacheReady} is true. + * initial scam and is empty until {@link #mSystemReady} is true. */ @NonNull @Watched @@ -181,7 +181,7 @@ public abstract class AppsFilterBase implements AppsFilterSnapshot { @NonNull protected SnapshotCache<WatchedSparseBooleanMatrix> mShouldFilterCacheSnapshot; - protected volatile boolean mCacheReady = false; + protected volatile boolean mSystemReady = false; protected boolean isForceQueryable(int callingAppId) { return mForceQueryable.contains(callingAppId); @@ -312,7 +312,7 @@ public abstract class AppsFilterBase implements AppsFilterSnapshot { || callingAppId == targetPkgSetting.getAppId()) { return false; } - if (mCacheReady) { // use cache + if (mSystemReady) { // use cache if (!shouldFilterApplicationUsingCache(callingUid, targetPkgSetting.getAppId(), userId)) { diff --git a/services/core/java/com/android/server/pm/AppsFilterImpl.java b/services/core/java/com/android/server/pm/AppsFilterImpl.java index c817e24d3b82..952711db1735 100644 --- a/services/core/java/com/android/server/pm/AppsFilterImpl.java +++ b/services/core/java/com/android/server/pm/AppsFilterImpl.java @@ -404,8 +404,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable, + recipientUid + " -> " + visibleUid); } - // TODO(b/231528435): invalidate cache instead of locking. - if (true/*mCacheReady*/) { + if (mSystemReady) { synchronized (mCacheLock) { // update the cache in a one-off manner since we've got all the information we // need. @@ -421,6 +420,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable, mFeatureConfig.onSystemReady(); updateEntireShouldFilterCacheAsync(pmInternal); + mSystemReady = true; } /** @@ -444,8 +444,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable, final UserInfo[] users = snapshot.getUserInfos(); final ArraySet<String> additionalChangedPackages = addPackageInternal(newPkgSetting, settings); - // TODO(b/231528435): invalidate cache instead of locking. - if (true/*mCacheReady*/) { + if (mSystemReady) { synchronized (mCacheLock) { updateShouldFilterCacheForPackage(snapshot, null, newPkgSetting, settings, users, USER_ALL, settings.size()); @@ -587,7 +586,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable, } private void removeAppIdFromVisibilityCache(int appId) { - if (!mCacheReady) { + if (!mSystemReady) { return; } synchronized (mCacheLock) { @@ -662,20 +661,18 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable, updateEntireShouldFilterCacheInner(snapshot, settings, usersRef[0], USER_ALL); onChanged(); - - mCacheReady = true; }); } public void onUserCreated(PackageDataSnapshot snapshot, int newUserId) { - if (!mCacheReady) { + if (!mSystemReady) { return; } updateEntireShouldFilterCache(snapshot, newUserId); } public void onUserDeleted(@UserIdInt int userId) { - if (!mCacheReady) { + if (!mSystemReady) { return; } removeShouldFilterCacheForUser(userId); @@ -684,7 +681,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable, private void updateShouldFilterCacheForPackage(PackageDataSnapshot snapshot, String packageName) { - if (!mCacheReady) { + if (!mSystemReady) { return; } final ArrayMap<String, ? extends PackageStateInternal> settings = @@ -933,8 +930,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable, } removeAppIdFromVisibilityCache(setting.getAppId()); - // TODO(b/231528435): invalidate cache instead of locking. - if (/*mCacheReady && */setting.hasSharedUser()) { + if (mSystemReady && setting.hasSharedUser()) { final ArraySet<? extends PackageStateInternal> sharedUserPackages = getSharedUserPackages(setting.getSharedUserAppId(), sharedUserSettings); for (int i = sharedUserPackages.size() - 1; i >= 0; i--) { @@ -951,8 +947,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable, } } - // TODO(b/231528435): invalidate cache instead of locking. - if (true/*mCacheReady*/) { + if (mSystemReady) { if (additionalChangedPackages != null) { for (int index = 0; index < additionalChangedPackages.size(); index++) { String changedPackage = additionalChangedPackages.valueAt(index); diff --git a/services/core/java/com/android/server/pm/AppsFilterLocked.java b/services/core/java/com/android/server/pm/AppsFilterLocked.java index b85bd8fbaa87..e8e6cd9e8edb 100644 --- a/services/core/java/com/android/server/pm/AppsFilterLocked.java +++ b/services/core/java/com/android/server/pm/AppsFilterLocked.java @@ -32,7 +32,7 @@ abstract class AppsFilterLocked extends AppsFilterBase { /** * Guards the access for {@link AppsFilterBase#mShouldFilterCache}; */ - protected final Object mCacheLock = new Object(); + protected Object mCacheLock = new Object(); @Override protected boolean isForceQueryable(int appId) { diff --git a/services/core/java/com/android/server/pm/AppsFilterSnapshotImpl.java b/services/core/java/com/android/server/pm/AppsFilterSnapshotImpl.java index 39b63415e42e..c12aa6d485a4 100644 --- a/services/core/java/com/android/server/pm/AppsFilterSnapshotImpl.java +++ b/services/core/java/com/android/server/pm/AppsFilterSnapshotImpl.java @@ -17,7 +17,6 @@ package com.android.server.pm; import com.android.server.utils.SnapshotCache; -import com.android.server.utils.WatchedSparseBooleanMatrix; import java.util.Arrays; @@ -50,18 +49,12 @@ public final class AppsFilterSnapshotImpl extends AppsFilterBase { mFeatureConfig = orig.mFeatureConfig.snapshot(); mOverlayReferenceMapper = orig.mOverlayReferenceMapper; mSystemSigningDetails = orig.mSystemSigningDetails; - - mCacheReady = orig.mCacheReady; - if (mCacheReady) { - synchronized (orig.mCacheLock) { - mShouldFilterCache = orig.mShouldFilterCacheSnapshot.snapshot(); - } - } else { - // cache is not ready, use an empty cache for the snapshot - mShouldFilterCache = new WatchedSparseBooleanMatrix(); + synchronized (orig.mCacheLock) { + mShouldFilterCache = orig.mShouldFilterCacheSnapshot.snapshot(); + mShouldFilterCacheSnapshot = new SnapshotCache.Sealed<>(); } - mShouldFilterCacheSnapshot = new SnapshotCache.Sealed<>(); mBackgroundExecutor = null; + mSystemReady = orig.mSystemReady; } } |