From 79848abfbd98a0219e13c858d55902ce125f995a Mon Sep 17 00:00:00 2001 From: Doris Ling Date: Thu, 15 Nov 2018 16:29:53 -0800 Subject: [PATCH] Only update mutable shortcuts. When trying to update the flags for the existing shortcuts, check and skip the immutable shortcuts, since they should not be modified. Change-Id: Iee70ed92f45c1b0b0f0c5b902069c017acfa4990 Fixes: 119119713 Test: make RunSettingsRoboTests --- .../android/settings/SettingsInitialize.java | 3 +++ .../settings/SettingsInitializeTest.java | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/com/android/settings/SettingsInitialize.java b/src/com/android/settings/SettingsInitialize.java index 9c37df6b3dc..784617aa39d 100644 --- a/src/com/android/settings/SettingsInitialize.java +++ b/src/com/android/settings/SettingsInitialize.java @@ -128,6 +128,9 @@ public class SettingsInitialize extends BroadcastReceiver { final List pinnedShortcuts = shortcutManager.getPinnedShortcuts(); final List updates = new ArrayList<>(); for (ShortcutInfo info : pinnedShortcuts) { + if (info.isImmutable()) { + continue; + } final Intent shortcutIntent = info.getIntent(); shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); final ShortcutInfo updatedInfo = new ShortcutInfo.Builder(context, info.getId()) diff --git a/tests/robotests/src/com/android/settings/SettingsInitializeTest.java b/tests/robotests/src/com/android/settings/SettingsInitializeTest.java index 1c1c14ce0cc..fe067909ff3 100644 --- a/tests/robotests/src/com/android/settings/SettingsInitializeTest.java +++ b/tests/robotests/src/com/android/settings/SettingsInitializeTest.java @@ -78,4 +78,23 @@ public class SettingsInitializeTest { assertThat(flags & Intent.FLAG_ACTIVITY_CLEAR_TOP).isEqualTo( Intent.FLAG_ACTIVITY_CLEAR_TOP); } + + @Test + public void refreshExistingShortcuts_shouldNotUpdateImmutableShortcut() { + final String id = "test_shortcut_id"; + final ShortcutInfo info = new ShortcutInfo.Builder(mContext, id) + .setShortLabel("test123") + .setIntent(new Intent(Intent.ACTION_DEFAULT)) + .build(); + info.addFlags(ShortcutInfo.FLAG_IMMUTABLE); + final List shortcuts = new ArrayList<>(); + shortcuts.add(info); + ShadowShortcutManager.get().setPinnedShortcuts(shortcuts); + + mSettingsInitialize.refreshExistingShortcuts(mContext); + + final List updatedShortcuts = + ShadowShortcutManager.get().getLastUpdatedShortcuts(); + assertThat(updatedShortcuts).isEmpty(); + } }