Loading services/core/java/com/android/server/pm/AppsFilterImpl.java +36 −0 Original line number Diff line number Diff line Loading @@ -522,6 +522,33 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable, onChanged(); } public void updateHiddenMicrogPackagesConfig(Computer snapshot, @UserIdInt int userId, @Nullable ArraySet<String> packageNames) { final SparseArray<ArraySet<String>> oldPackageNamesByUser = mHideMicrogPackagesForCallerByUser; final ArraySet<String> oldPackageNames = oldPackageNamesByUser.get(userId); final ArraySet<String> newPackageNames = packageNames == null ? null : new ArraySet<>(packageNames); if (Objects.equals(oldPackageNames, newPackageNames)) { return; } final SparseArray<ArraySet<String>> newPackageNamesByUser = copyPackageNamesByUser(oldPackageNamesByUser); if (newPackageNames == null || newPackageNames.isEmpty()) { newPackageNamesByUser.remove(userId); } else { newPackageNamesByUser.put(userId, newPackageNames); } mHideMicrogPackagesForCallerByUser = newPackageNamesByUser; if (mCacheReady && hasUser(snapshot.getUserInfos(), userId)) { updateEntireShouldFilterCache(snapshot, userId); } onChanged(); } /** * Adds a package that should be considered when filtering visibility between apps. * Loading Loading @@ -1338,4 +1365,13 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable, } return true; } private static boolean hasUser(@NonNull UserInfo[] users, @UserIdInt int userId) { for (UserInfo user : users) { if (user.id == userId) { return true; } } return false; } } services/core/java/com/android/server/pm/PackageManagerService.java +30 −17 Original line number Diff line number Diff line Loading @@ -4246,25 +4246,17 @@ public class PackageManagerService implements PackageSender, TestUtilityService @Override public void onChange(boolean selfChange, @Nullable Uri uri, int userId) { final Computer snapshot = snapshotComputer(); final SparseArray<ArraySet<String>> packageNamesByUser = new SparseArray<>(); for (UserInfo userInfo : snapshot.getUserInfos()) { final String packageList = android.provider.Settings.System.getStringForUser( resolver, android.provider.Settings.System .HIDE_MICROG_PACKAGES_FOR_PACKAGE, userInfo.id); if (TextUtils.isEmpty(packageList)) { continue; if (userId != UserHandle.USER_ALL) { mAppsFilter.updateHiddenMicrogPackagesConfig(snapshot, userId, getHiddenMicrogPackagesForCaller(resolver, userId)); return; } final ArraySet<String> packageNames = new ArraySet<>(); for (String packageName : packageList.split(",")) { final String trimmedPackageName = packageName.trim(); if (!trimmedPackageName.isEmpty()) { packageNames.add(trimmedPackageName); } } if (!packageNames.isEmpty()) { final SparseArray<ArraySet<String>> packageNamesByUser = new SparseArray<>(); for (UserInfo userInfo : snapshot.getUserInfos()) { final ArraySet<String> packageNames = getHiddenMicrogPackagesForCaller(resolver, userInfo.id); if (packageNames != null) { packageNamesByUser.put(userInfo.id, packageNames); } } Loading Loading @@ -4419,6 +4411,27 @@ public class PackageManagerService implements PackageSender, TestUtilityService } } @Nullable private static ArraySet<String> getHiddenMicrogPackagesForCaller( @NonNull ContentResolver resolver, @UserIdInt int userId) { final String packageList = android.provider.Settings.System.getStringForUser( resolver, android.provider.Settings.System.HIDE_MICROG_PACKAGES_FOR_PACKAGE, userId); if (TextUtils.isEmpty(packageList)) { return null; } final ArraySet<String> packageNames = new ArraySet<>(); for (String packageName : packageList.split(",")) { final String trimmedPackageName = packageName.trim(); if (!trimmedPackageName.isEmpty()) { packageNames.add(trimmedPackageName); } } return packageNames.isEmpty() ? null : packageNames; } //TODO: b/111402650 private void disableSkuSpecificApps() { String[] apkList = mContext.getResources().getStringArray( Loading Loading
services/core/java/com/android/server/pm/AppsFilterImpl.java +36 −0 Original line number Diff line number Diff line Loading @@ -522,6 +522,33 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable, onChanged(); } public void updateHiddenMicrogPackagesConfig(Computer snapshot, @UserIdInt int userId, @Nullable ArraySet<String> packageNames) { final SparseArray<ArraySet<String>> oldPackageNamesByUser = mHideMicrogPackagesForCallerByUser; final ArraySet<String> oldPackageNames = oldPackageNamesByUser.get(userId); final ArraySet<String> newPackageNames = packageNames == null ? null : new ArraySet<>(packageNames); if (Objects.equals(oldPackageNames, newPackageNames)) { return; } final SparseArray<ArraySet<String>> newPackageNamesByUser = copyPackageNamesByUser(oldPackageNamesByUser); if (newPackageNames == null || newPackageNames.isEmpty()) { newPackageNamesByUser.remove(userId); } else { newPackageNamesByUser.put(userId, newPackageNames); } mHideMicrogPackagesForCallerByUser = newPackageNamesByUser; if (mCacheReady && hasUser(snapshot.getUserInfos(), userId)) { updateEntireShouldFilterCache(snapshot, userId); } onChanged(); } /** * Adds a package that should be considered when filtering visibility between apps. * Loading Loading @@ -1338,4 +1365,13 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable, } return true; } private static boolean hasUser(@NonNull UserInfo[] users, @UserIdInt int userId) { for (UserInfo user : users) { if (user.id == userId) { return true; } } return false; } }
services/core/java/com/android/server/pm/PackageManagerService.java +30 −17 Original line number Diff line number Diff line Loading @@ -4246,25 +4246,17 @@ public class PackageManagerService implements PackageSender, TestUtilityService @Override public void onChange(boolean selfChange, @Nullable Uri uri, int userId) { final Computer snapshot = snapshotComputer(); final SparseArray<ArraySet<String>> packageNamesByUser = new SparseArray<>(); for (UserInfo userInfo : snapshot.getUserInfos()) { final String packageList = android.provider.Settings.System.getStringForUser( resolver, android.provider.Settings.System .HIDE_MICROG_PACKAGES_FOR_PACKAGE, userInfo.id); if (TextUtils.isEmpty(packageList)) { continue; if (userId != UserHandle.USER_ALL) { mAppsFilter.updateHiddenMicrogPackagesConfig(snapshot, userId, getHiddenMicrogPackagesForCaller(resolver, userId)); return; } final ArraySet<String> packageNames = new ArraySet<>(); for (String packageName : packageList.split(",")) { final String trimmedPackageName = packageName.trim(); if (!trimmedPackageName.isEmpty()) { packageNames.add(trimmedPackageName); } } if (!packageNames.isEmpty()) { final SparseArray<ArraySet<String>> packageNamesByUser = new SparseArray<>(); for (UserInfo userInfo : snapshot.getUserInfos()) { final ArraySet<String> packageNames = getHiddenMicrogPackagesForCaller(resolver, userInfo.id); if (packageNames != null) { packageNamesByUser.put(userInfo.id, packageNames); } } Loading Loading @@ -4419,6 +4411,27 @@ public class PackageManagerService implements PackageSender, TestUtilityService } } @Nullable private static ArraySet<String> getHiddenMicrogPackagesForCaller( @NonNull ContentResolver resolver, @UserIdInt int userId) { final String packageList = android.provider.Settings.System.getStringForUser( resolver, android.provider.Settings.System.HIDE_MICROG_PACKAGES_FOR_PACKAGE, userId); if (TextUtils.isEmpty(packageList)) { return null; } final ArraySet<String> packageNames = new ArraySet<>(); for (String packageName : packageList.split(",")) { final String trimmedPackageName = packageName.trim(); if (!trimmedPackageName.isEmpty()) { packageNames.add(trimmedPackageName); } } return packageNames.isEmpty() ? null : packageNames; } //TODO: b/111402650 private void disableSkuSpecificApps() { String[] apkList = mContext.getResources().getStringArray( Loading