Loading services/core/java/com/android/server/pm/AppsFilterBase.java +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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); Loading Loading @@ -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)) { Loading services/core/java/com/android/server/pm/AppsFilterImpl.java +9 −14 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -421,6 +420,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable, mFeatureConfig.onSystemReady(); updateEntireShouldFilterCacheAsync(pmInternal); mSystemReady = true; } /** Loading @@ -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()); Loading Loading @@ -587,7 +586,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable, } private void removeAppIdFromVisibilityCache(int appId) { if (!mCacheReady) { if (!mSystemReady) { return; } synchronized (mCacheLock) { Loading Loading @@ -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); Loading @@ -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 = Loading Loading @@ -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--) { Loading @@ -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); Loading services/core/java/com/android/server/pm/AppsFilterLocked.java +1 −1 Original line number Diff line number Diff line Loading @@ -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) { Loading services/core/java/com/android/server/pm/AppsFilterSnapshotImpl.java +4 −11 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); } mShouldFilterCacheSnapshot = new SnapshotCache.Sealed<>(); } mBackgroundExecutor = null; mSystemReady = orig.mSystemReady; } } Loading
services/core/java/com/android/server/pm/AppsFilterBase.java +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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); Loading Loading @@ -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)) { Loading
services/core/java/com/android/server/pm/AppsFilterImpl.java +9 −14 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -421,6 +420,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable, mFeatureConfig.onSystemReady(); updateEntireShouldFilterCacheAsync(pmInternal); mSystemReady = true; } /** Loading @@ -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()); Loading Loading @@ -587,7 +586,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable, } private void removeAppIdFromVisibilityCache(int appId) { if (!mCacheReady) { if (!mSystemReady) { return; } synchronized (mCacheLock) { Loading Loading @@ -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); Loading @@ -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 = Loading Loading @@ -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--) { Loading @@ -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); Loading
services/core/java/com/android/server/pm/AppsFilterLocked.java +1 −1 Original line number Diff line number Diff line Loading @@ -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) { Loading
services/core/java/com/android/server/pm/AppsFilterSnapshotImpl.java +4 −11 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); } mShouldFilterCacheSnapshot = new SnapshotCache.Sealed<>(); } mBackgroundExecutor = null; mSystemReady = orig.mSystemReady; } }