Merge "Support customized summary in Channel Notification" into main
diff --git a/aconfig/settings_contacts_default_account_flag_declarations.aconfig b/aconfig/settings_contacts_default_account_flag_declarations.aconfig
new file mode 100644
index 0000000..eb877af
--- /dev/null
+++ b/aconfig/settings_contacts_default_account_flag_declarations.aconfig
@@ -0,0 +1,9 @@
+package: "com.android.settings.flags"
+container: "system"
+
+flag {
+  name: "enable_contacts_default_account_in_settings"
+  namespace: "contacts"
+  description: "Enable Contacts Storage (Contacts Default Account) in settings"
+  bug: "368126293"
+}
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 8e5519f..327ff44 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -1503,14 +1503,12 @@
 
     <!-- A locale list of not supporting Terms of Address. [DO NOT TRANSLATE] -->
     <string-array name="terms_of_address_unsupported_locales">
+        <item>fr-CA</item> <!-- French (Canada) -->
     </string-array>
 
     <!-- A language list of supporting Terms of Address. [DO NOT TRANSLATE] -->
     <string-array name="terms_of_address_supported_languages">
         <item>fr</item> <!-- French -->
-        <item>es</item> <!-- Spanish -->
-        <item>it</item> <!-- Italian -->
-        <item>de</item> <!-- German -->
     </string-array>
 
     <!-- Entries for private space auto lock option -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 456eb95..c586c3f 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -960,8 +960,6 @@
     <string name="go_to_identity_check">Go to identity check</string>
     <!-- Biometric error dialog button text to lock screen and recover biometric lockout state. [CHAR LIMIT=60] -->
     <string name="identity_check_lockout_error_lock_screen">Lock screen</string>
-    <!-- Action for opening identity check settings page [CHAR LIMIT=NONE] [DO NOT TRANSLATE] -->
-    <string name="identity_check_settings_action"></string>
     <!-- RemoteAuth unlock enrollment and settings --><skip />
     <!-- Title shown for menu item that launches watch unlock settings. [CHAR LIMIT=40] -->
     <string name ="security_settings_remoteauth_preference_title">Remote Authenticator Unlock</string>
@@ -4695,6 +4693,8 @@
     <string name="pointer_scale_decrease_content_description">Decrease pointer scale</string>
     <!-- Setting for mouse pointer scale. [CHAR LIMIT=35] -->
     <string name="pointer_scale_increase_content_description">Increase pointer scale</string>
+    <!-- Search keywords for pointer scale, including legacy Large Mouse Pointer. [CHAR LIMIT=NONE] -->
+    <string name="pointer_scale_keywords">scale, size, Pointer Scale, Pointer Size, Large mouse pointer, Large, noticeable</string>
 
     <!-- On Languages & input settings screen, heading. Inside the "Languages & input settings" screen, this is the header for settings that relate to game controller devices. [CHAR LIMIT=40] -->
     <string name="game_controller_settings_category">Game Controller</string>
diff --git a/res/xml/accessibility_pointer_and_touchpad.xml b/res/xml/accessibility_pointer_and_touchpad.xml
index 1d3b0f2..8da4177 100644
--- a/res/xml/accessibility_pointer_and_touchpad.xml
+++ b/res/xml/accessibility_pointer_and_touchpad.xml
@@ -29,6 +29,7 @@
         settings:iconStartContentDescription="@string/pointer_scale_decrease_content_description"
         settings:iconEnd="@drawable/ic_add_24dp"
         settings:iconEndContentDescription="@string/pointer_scale_increase_content_description"
+        settings:keywords="@string/pointer_scale_keywords"
         settings:controller="com.android.settings.inputmethod.PointerScaleSeekBarController" />
 
     <Preference
diff --git a/src/com/android/settings/biometrics/IdentityCheckBiometricErrorDialog.java b/src/com/android/settings/biometrics/IdentityCheckBiometricErrorDialog.java
index a4b10fc..a5fe49e 100644
--- a/src/com/android/settings/biometrics/IdentityCheckBiometricErrorDialog.java
+++ b/src/com/android/settings/biometrics/IdentityCheckBiometricErrorDialog.java
@@ -53,6 +53,7 @@
     private static final String KEY_FINISH_ACTIVITY = "key_finish_activity";
 
     private String mActionIdentityCheckSettings = Settings.ACTION_SETTINGS;
+    private String mIdentityCheckSettingsPackageName;
     @Nullable private BroadcastReceiver mBroadcastReceiver;
     private boolean mShouldFinishActivity = false;
 
@@ -69,9 +70,11 @@
         final boolean twoFactorAuthentication = getArguments().getBoolean(
                 KEY_TWO_FACTOR_AUTHENTICATION);
         final String identityCheckSettingsAction = getActivity().getString(
-                R.string.identity_check_settings_action);
+                com.android.internal.R.string.identity_check_settings_action);
         mActionIdentityCheckSettings = identityCheckSettingsAction.isEmpty()
                 ? mActionIdentityCheckSettings : identityCheckSettingsAction;
+        mIdentityCheckSettingsPackageName = getActivity().getString(
+                com.android.internal.R.string.identity_check_settings_package_name);
         mShouldFinishActivity = getArguments().getBoolean(
                 KEY_FINISH_ACTIVITY);
 
diff --git a/src/com/android/settings/development/DesktopModePreferenceController.java b/src/com/android/settings/development/DesktopModePreferenceController.java
index 3f8ddab..f43e17c 100644
--- a/src/com/android/settings/development/DesktopModePreferenceController.java
+++ b/src/com/android/settings/development/DesktopModePreferenceController.java
@@ -17,14 +17,14 @@
 package com.android.settings.development;
 
 import static android.provider.Settings.Global.DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES;
-
-import static com.android.wm.shell.shared.desktopmode.DesktopModeFlags.convertToToggleOverrideWithFallback;
-import static com.android.wm.shell.shared.desktopmode.DesktopModeFlags.ToggleOverride.OVERRIDE_OFF;
-import static com.android.wm.shell.shared.desktopmode.DesktopModeFlags.ToggleOverride.OVERRIDE_ON;
-import static com.android.wm.shell.shared.desktopmode.DesktopModeFlags.ToggleOverride.OVERRIDE_UNSET;
+import static android.window.flags.DesktopModeFlags.ToggleOverride.fromSetting;
+import static android.window.flags.DesktopModeFlags.ToggleOverride.OVERRIDE_OFF;
+import static android.window.flags.DesktopModeFlags.ToggleOverride.OVERRIDE_ON;
+import static android.window.flags.DesktopModeFlags.ToggleOverride.OVERRIDE_UNSET;
 
 import android.content.Context;
 import android.provider.Settings;
+import android.window.flags.DesktopModeFlags.ToggleOverride;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
@@ -34,7 +34,6 @@
 import com.android.settings.R;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settingslib.development.DeveloperOptionsPreferenceController;
-import com.android.wm.shell.shared.desktopmode.DesktopModeFlags.ToggleOverride;
 import com.android.wm.shell.shared.desktopmode.DesktopModeStatus;
 
 /**
@@ -84,7 +83,7 @@
         // Use overridden state, if not present, then use default state
         final int overrideInt = Settings.Global.getInt(mContext.getContentResolver(),
                 DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, OVERRIDE_UNSET.getSetting());
-        final ToggleOverride toggleOverride = convertToToggleOverrideWithFallback(overrideInt,
+        final ToggleOverride toggleOverride = fromSetting(overrideInt,
                 OVERRIDE_UNSET);
         final boolean shouldDevOptionBeEnabled = switch (toggleOverride) {
             case OVERRIDE_OFF -> false;
diff --git a/src/com/android/settings/notification/modes/IconUtil.java b/src/com/android/settings/notification/modes/IconUtil.java
index 33d0d96..23817cb 100644
--- a/src/com/android/settings/notification/modes/IconUtil.java
+++ b/src/com/android/settings/notification/modes/IconUtil.java
@@ -60,7 +60,7 @@
 
     private static Drawable applyTint(@NonNull Context context, @NonNull Drawable icon,
             @AttrRes int colorAttr) {
-        icon = icon.mutate();
+        icon = mutateDrawable(context.getResources(), icon);
         icon.setTintList(Utils.getColorAttr(context, colorAttr));
         return icon;
     }
@@ -218,9 +218,9 @@
 
     private static Drawable composeIcons(Resources res, Drawable outer, ColorStateList outerColor,
             @Px int outerSizePx, Drawable icon, ColorStateList iconColor, @Px int iconSizePx) {
-        Drawable background = checkNotNull(outer.getConstantState()).newDrawable(res).mutate();
+        Drawable background = mutateDrawable(res, outer);
         background.setTintList(outerColor);
-        Drawable foreground = checkNotNull(icon.getConstantState()).newDrawable(res).mutate();
+        Drawable foreground = mutateDrawable(res, icon);
         foreground.setTintList(iconColor);
 
         LayerDrawable layerDrawable = new LayerDrawable(new Drawable[] { background, foreground });
@@ -232,4 +232,13 @@
         layerDrawable.setBounds(0, 0, outerSizePx, outerSizePx);
         return layerDrawable;
     }
+
+    private static Drawable mutateDrawable(Resources res, Drawable drawable) {
+        Drawable.ConstantState cs = drawable.getConstantState();
+        if (cs != null) {
+            return cs.newDrawable(res).mutate();
+        } else {
+            return drawable.mutate();
+        }
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/development/DesktopModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/DesktopModePreferenceControllerTest.java
index 0fd4d85..7fe9377 100644
--- a/tests/robotests/src/com/android/settings/development/DesktopModePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/DesktopModePreferenceControllerTest.java
@@ -17,10 +17,9 @@
 package com.android.settings.development;
 
 import static android.provider.Settings.Global.DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES;
-
-import static com.android.wm.shell.shared.desktopmode.DesktopModeFlags.ToggleOverride.OVERRIDE_ON;
-import static com.android.wm.shell.shared.desktopmode.DesktopModeFlags.ToggleOverride.OVERRIDE_OFF;
-import static com.android.wm.shell.shared.desktopmode.DesktopModeFlags.ToggleOverride.OVERRIDE_UNSET;
+import static android.window.flags.DesktopModeFlags.ToggleOverride.OVERRIDE_ON;
+import static android.window.flags.DesktopModeFlags.ToggleOverride.OVERRIDE_OFF;
+import static android.window.flags.DesktopModeFlags.ToggleOverride.OVERRIDE_UNSET;
 
 import static com.google.common.truth.Truth.assertThat;