diff options
4 files changed, 27 insertions, 25 deletions
diff --git a/core/java/android/app/admin/DevicePolicyCache.java b/core/java/android/app/admin/DevicePolicyCache.java index b6e83c8bc8a1..29f657ec6ba7 100644 --- a/core/java/android/app/admin/DevicePolicyCache.java +++ b/core/java/android/app/admin/DevicePolicyCache.java @@ -19,8 +19,8 @@ import android.annotation.UserIdInt; import com.android.server.LocalServices; -import java.util.ArrayList; -import java.util.List; +import java.util.Collections; +import java.util.Map; /** * Stores a copy of the set of device policies maintained by {@link DevicePolicyManager} that @@ -64,10 +64,11 @@ public abstract class DevicePolicyCache { public abstract boolean canAdminGrantSensorsPermissions(); /** - * Returns a list of package names for which all launcher shortcuts should be modified to be - * launched in the managed profile and badged accordingly. + * Returns a map of package names to package names, for which all launcher shortcuts which + * match a key package name should be modified to launch the corresponding value package + * name in the managed profile. The overridden shortcut should be badged accordingly. */ - public abstract List<String> getLauncherShortcutOverrides(); + public abstract Map<String, String> getLauncherShortcutOverrides(); /** * Empty implementation. @@ -95,8 +96,8 @@ public abstract class DevicePolicyCache { return false; } @Override - public List<String> getLauncherShortcutOverrides() { - return new ArrayList<>(); + public Map<String, String> getLauncherShortcutOverrides() { + return Collections.EMPTY_MAP; } } } diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java index 402fb30437b0..9b1a80bed17b 100644 --- a/services/core/java/com/android/server/pm/LauncherAppsService.java +++ b/services/core/java/com/android/server/pm/LauncherAppsService.java @@ -1120,12 +1120,12 @@ public class LauncherAppsService extends SystemService { return shortcutOverridesInfo; } - List<String> packagesToOverride = + Map<String, String> packagesToOverride = DevicePolicyCache.getInstance().getLauncherShortcutOverrides(); - for (String packageName : packagesToOverride) { + for (Map.Entry<String, String> packageNames : packagesToOverride.entrySet()) { Intent intent = new Intent(Intent.ACTION_MAIN) .addCategory(Intent.CATEGORY_LAUNCHER) - .setPackage(packageName); + .setPackage(packageNames.getValue()); List<LauncherActivityInfoInternal> possibleShortcutOverrides = queryIntentLauncherActivities( @@ -1135,7 +1135,8 @@ public class LauncherAppsService extends SystemService { ); if (!possibleShortcutOverrides.isEmpty()) { - shortcutOverridesInfo.put(packageName, possibleShortcutOverrides.get(0)); + shortcutOverridesInfo.put(packageNames.getKey(), + possibleShortcutOverrides.get(0)); } } return shortcutOverridesInfo; diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyCacheImpl.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyCacheImpl.java index 80100a927e82..c681b884d2ed 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyCacheImpl.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyCacheImpl.java @@ -19,13 +19,13 @@ import android.annotation.UserIdInt; import android.app.admin.DevicePolicyCache; import android.app.admin.DevicePolicyManager; import android.os.UserHandle; +import android.util.ArrayMap; import android.util.IndentingPrintWriter; import android.util.SparseIntArray; import com.android.internal.annotations.GuardedBy; -import java.util.ArrayList; -import java.util.List; +import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; /** @@ -55,8 +55,7 @@ public class DevicePolicyCacheImpl extends DevicePolicyCache { private final SparseIntArray mPermissionPolicy = new SparseIntArray(); @GuardedBy("mLock") - private List<String> mLauncherShortcutOverrides = - new ArrayList<>(); + private ArrayMap<String, String> mLauncherShortcutOverrides = new ArrayMap<>(); /** Maps to {@code ActiveAdmin.mAdminCanGrantSensorsPermissions}. */ @@ -130,18 +129,20 @@ public class DevicePolicyCacheImpl extends DevicePolicyCache { } @Override - public List<String> getLauncherShortcutOverrides() { + public Map<String, String> getLauncherShortcutOverrides() { synchronized (mLock) { - return new ArrayList<>(mLauncherShortcutOverrides); + return new ArrayMap<>(mLauncherShortcutOverrides); } } /** - * Sets a list of packages for which shortcuts should be replaced by their badged version. + * Sets a map of packages names to package names, for which all launcher shortcuts which + * match a key package name should be modified to launch the corresponding value package + * name in the managed profile. The overridden shortcut should be badged accordingly. */ - public void setLauncherShortcutOverrides(List<String> launcherShortcutOverrides) { + public void setLauncherShortcutOverrides(ArrayMap<String, String> launcherShortcutOverrides) { synchronized (mLock) { - mLauncherShortcutOverrides = new ArrayList<>(launcherShortcutOverrides); + mLauncherShortcutOverrides = new ArrayMap<>(launcherShortcutOverrides); } } diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index ebe7e0cbac06..7d661eb1914b 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -7721,7 +7721,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } private void clearLauncherShortcutOverrides() { - mPolicyCache.setLauncherShortcutOverrides(new ArrayList<>()); + mPolicyCache.setLauncherShortcutOverrides(new ArrayMap<>()); } private void updateTelephonyCrossProfileIntentFilters(int parentUserId, int profileUserId, @@ -23721,15 +23721,14 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { private void updateDialerAndSmsManagedShortcutsOverrideCache( String defaultDialerPackageName, String defaultSmsPackageName) { - - List<String> shortcutOverrides = new ArrayList<>(); + ArrayMap<String, String> shortcutOverrides = new ArrayMap<>(); if (defaultDialerPackageName != null) { - shortcutOverrides.add(defaultDialerPackageName); + shortcutOverrides.put(defaultDialerPackageName, defaultDialerPackageName); } if (defaultSmsPackageName != null) { - shortcutOverrides.add(defaultSmsPackageName); + shortcutOverrides.put(defaultSmsPackageName, defaultSmsPackageName); } mPolicyCache.setLauncherShortcutOverrides(shortcutOverrides); } |