Merge "Only update mutable shortcuts."
diff --git a/src/com/android/settings/SettingsInitialize.java b/src/com/android/settings/SettingsInitialize.java
index 9c37df6..784617a 100644
--- a/src/com/android/settings/SettingsInitialize.java
+++ b/src/com/android/settings/SettingsInitialize.java
@@ -128,6 +128,9 @@
         final List<ShortcutInfo> pinnedShortcuts = shortcutManager.getPinnedShortcuts();
         final List<ShortcutInfo> 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 1c1c14c..fe06790 100644
--- a/tests/robotests/src/com/android/settings/SettingsInitializeTest.java
+++ b/tests/robotests/src/com/android/settings/SettingsInitializeTest.java
@@ -78,4 +78,23 @@
         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<ShortcutInfo> shortcuts = new ArrayList<>();
+        shortcuts.add(info);
+        ShadowShortcutManager.get().setPinnedShortcuts(shortcuts);
+
+        mSettingsInitialize.refreshExistingShortcuts(mContext);
+
+        final List<ShortcutInfo> updatedShortcuts =
+            ShadowShortcutManager.get().getLastUpdatedShortcuts();
+        assertThat(updatedShortcuts).isEmpty();
+    }
 }