Merge "Add accessibility string description for auto rotate" into tm-dev
diff --git a/res/layout/confirm_lock_password_base.xml b/res/layout/confirm_lock_password_base.xml
index 7c2fc5b..a3e5659 100644
--- a/res/layout/confirm_lock_password_base.xml
+++ b/res/layout/confirm_lock_password_base.xml
@@ -59,7 +59,7 @@
                 android:layout_height="wrap_content"
                 android:layout_gravity="center_horizontal"
                 android:inputType="textPassword"
-                android:imeOptions="actionNext|flagForceAscii"
+                android:imeOptions="actionNext|flagForceAscii|flagNoExtractUi"
                 android:gravity="center"
                 style="@style/TextAppearance.PasswordEntry"/>
 
diff --git a/res/layout/confirm_lock_password_normal.xml b/res/layout/confirm_lock_password_normal.xml
index f2b8d1f..645c444 100644
--- a/res/layout/confirm_lock_password_normal.xml
+++ b/res/layout/confirm_lock_password_normal.xml
@@ -52,7 +52,7 @@
                 android:layout_height="wrap_content"
                 android:layout_gravity="center_horizontal"
                 android:inputType="textPassword"
-                android:imeOptions="actionNext|flagForceAscii"
+                android:imeOptions="actionNext|flagForceAscii|flagNoExtractUi"
                 android:gravity="center"
                 style="@style/TextAppearance.PasswordEntry"/>
 
@@ -85,4 +85,4 @@
             android:text="@string/cancel" />
 
     </com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient>
-</com.google.android.setupdesign.GlifLayout>
\ No newline at end of file
+</com.google.android.setupdesign.GlifLayout>
diff --git a/res/layout/face_enroll_introduction.xml b/res/layout/face_enroll_introduction.xml
index 5e7a6a1..c497015 100644
--- a/res/layout/face_enroll_introduction.xml
+++ b/res/layout/face_enroll_introduction.xml
@@ -30,9 +30,7 @@
         android:layout_height="wrap_content"
         android:clipChildren="false"
         android:clipToPadding="false"
-        android:orientation="vertical"
-        android:layout_marginStart="?attr/sudMarginStart"
-        android:layout_marginEnd="?attr/sudMarginEnd">
+        android:orientation="vertical">
 
         <com.google.android.setupdesign.view.RichTextView
             android:id="@+id/error_text"
diff --git a/res/layout/fingerprint_enroll_introduction.xml b/res/layout/fingerprint_enroll_introduction.xml
index aaed5be..5b4560e 100644
--- a/res/layout/fingerprint_enroll_introduction.xml
+++ b/res/layout/fingerprint_enroll_introduction.xml
@@ -30,9 +30,7 @@
         android:layout_height="wrap_content"
         android:clipChildren="false"
         android:clipToPadding="false"
-        android:orientation="vertical"
-        android:layout_marginStart="?attr/sudMarginStart"
-        android:layout_marginEnd="?attr/sudMarginEnd">
+        android:orientation="vertical">
 
         <com.google.android.setupdesign.view.RichTextView
             android:id="@+id/error_text"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 29867e5..f87b489 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5308,6 +5308,8 @@
     <string name="accessibility_text_reading_preview_mail_content">Good morning!\n\nI just wanted to check how the designs are coming. Will they be ready before we start building the new balloons?</string>
     <!-- Title for the reset button of the accessibility text reading page to reset all preferences state. [CHAR LIMIT=25] -->
     <string name="accessibility_text_reading_reset_button_title">Reset settings</string>
+    <!-- Message for the toast after clicking the reset button of the dialog of the accessibility text reading page. [CHAR LIMIT=NONE] -->
+    <string name="accessibility_text_reading_reset_message">Display size and text settings have been reset</string>
     <!-- Title for the confirm dialog of reset settings. [CHAR LIMIT=NONE] -->
     <string name="accessibility_text_reading_confirm_dialog_title">Reset display size and text?</string>
     <!-- Message for the confirm dialog of reset settings. [CHAR LIMIT=NONE] -->
diff --git a/res/values/themes_suw.xml b/res/values/themes_suw.xml
index f0be252..79adbd8 100644
--- a/res/values/themes_suw.xml
+++ b/res/values/themes_suw.xml
@@ -229,8 +229,6 @@
         <item name="android:clipToPadding">true</item>
         <item name="android:clipChildren">true</item>
         <item name="android:textAppearanceListItem">@style/TextAppearance.PreferenceTitle.SettingsLib</item>
-        <item name="android:listPreferredItemPaddingStart">@dimen/settingslib_listPreferredItemPaddingStart</item>
-        <item name="android:listPreferredItemPaddingEnd">16dp</item>
         <item name="preferenceTheme">@style/PreferenceTheme.SettingsLib</item>
         <item name="android:switchStyle">@style/Switch.SettingsLib</item>
         <item name="preferenceFragmentCompatStyle">@style/SetupWizardPreferenceFragmentStyle</item>
diff --git a/src/com/android/settings/accessibility/TextReadingPreferenceFragment.java b/src/com/android/settings/accessibility/TextReadingPreferenceFragment.java
index 1148584..a4ee961c 100644
--- a/src/com/android/settings/accessibility/TextReadingPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/TextReadingPreferenceFragment.java
@@ -23,6 +23,7 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
+import android.widget.Toast;
 
 import androidx.appcompat.app.AlertDialog;
 
@@ -178,6 +179,9 @@
         } else {
             mResetStateListeners.forEach(ResetStateListener::resetState);
         }
+
+        Toast.makeText(getPrefContext(), R.string.accessibility_text_reading_reset_message,
+                Toast.LENGTH_SHORT).show();
     }
 
     private List<ResetStateListener> getResetStateListeners() {
diff --git a/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java
index 71f47cc..06f8276 100644
--- a/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java
@@ -51,6 +51,11 @@
 
     @Override
     protected void onPreferenceToggled(String preferenceKey, boolean enabled) {
+        final boolean isEnabled = Settings.Secure.getInt(getContentResolver(), ENABLED, OFF) == ON;
+        if (enabled == isEnabled) {
+            return;
+        }
+
         if (enabled) {
             showQuickSettingsTooltipIfNeeded(QuickSettingsTooltipType.GUIDE_TO_DIRECT_USE);
         }
diff --git a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java
index ac4408f..208d5c1 100644
--- a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java
@@ -166,6 +166,11 @@
 
     @Override
     protected void onPreferenceToggled(String preferenceKey, boolean enabled) {
+        final boolean isEnabled = Settings.Secure.getInt(getContentResolver(), ENABLED, OFF) == ON;
+        if (enabled == isEnabled) {
+            return;
+        }
+
         if (enabled) {
             showQuickSettingsTooltipIfNeeded(QuickSettingsTooltipType.GUIDE_TO_DIRECT_USE);
         }
diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java b/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java
index f0809ad..b7f8909 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java
@@ -479,7 +479,7 @@
     @Override
     protected void refresh() {
         for (LocalBluetoothProfile profile : getProfiles()) {
-            if (!profile.isProfileReady()) {
+            if (profile != null && !profile.isProfileReady()) {
                 continue;
             }
             SwitchPreference pref = mProfilesContainer.findPreference(
diff --git a/src/com/android/settings/deviceinfo/storage/ManageStoragePreferenceController.java b/src/com/android/settings/deviceinfo/storage/ManageStoragePreferenceController.java
index 1a60cb8..9613b55 100644
--- a/src/com/android/settings/deviceinfo/storage/ManageStoragePreferenceController.java
+++ b/src/com/android/settings/deviceinfo/storage/ManageStoragePreferenceController.java
@@ -22,6 +22,7 @@
 import android.graphics.drawable.Drawable;
 import android.os.UserHandle;
 import android.os.storage.StorageManager;
+import android.text.TextUtils;
 
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
@@ -65,6 +66,10 @@
 
     @Override
     public boolean handlePreferenceTreeClick(Preference preference) {
+        if (!TextUtils.equals(getPreferenceKey(), preference.getKey())) {
+            return super.handlePreferenceTreeClick(preference);
+        }
+
         final MetricsFeatureProvider metricsFeatureProvider =
                 FeatureFactory.getFactory(mContext).getMetricsFeatureProvider();
         metricsFeatureProvider.action(mContext, SettingsEnums.STORAGE_FREE_UP_SPACE_NOW);
diff --git a/tests/robotests/src/com/android/settings/accessibility/TextReadingPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/TextReadingPreferenceFragmentTest.java
index 1793cc2..b72cdf7 100644
--- a/tests/robotests/src/com/android/settings/accessibility/TextReadingPreferenceFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/TextReadingPreferenceFragmentTest.java
@@ -47,6 +47,7 @@
 import org.mockito.MockitoAnnotations;
 import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
+import org.robolectric.shadows.ShadowToast;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -104,4 +105,18 @@
         verify(listener1).resetState();
         verify(listener2).resetState();
     }
+
+    @Test
+    public void onDialogPositiveButtonClicked_boldTextEnabled_showToast() {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.FONT_WEIGHT_ADJUSTMENT, BOLD_TEXT_ADJUSTMENT);
+        final AlertDialog dialog = (AlertDialog) mFragment.onCreateDialog(
+                DialogEnums.DIALOG_RESET_SETTINGS);
+        dialog.show();
+
+        dialog.getButton(DialogInterface.BUTTON_POSITIVE).callOnClick();
+
+        assertThat(ShadowToast.getTextOfLatestToast())
+                .isEqualTo(mContext.getString(R.string.accessibility_text_reading_reset_message));
+    }
 }
diff --git a/tests/unit/src/com/android/settings/deviceinfo/storage/ManageStoragePreferenceControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/storage/ManageStoragePreferenceControllerTest.java
new file mode 100644
index 0000000..6806bdd
--- /dev/null
+++ b/tests/unit/src/com/android/settings/deviceinfo/storage/ManageStoragePreferenceControllerTest.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.deviceinfo.storage;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import android.content.Context;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settings.widget.CardPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class ManageStoragePreferenceControllerTest {
+
+    private ManageStoragePreferenceController mController;
+    private CardPreference mPreference;
+
+    @Before
+    public void setUp() {
+        Context context = ApplicationProvider.getApplicationContext();
+        mPreference = new CardPreference(context);
+        mController = new ManageStoragePreferenceController(context, "free_up_space");
+    }
+
+    @Test
+    public void handPreferenceTreeClick_keyMatched_consumeClickEvent() {
+        mPreference.setKey(mController.getPreferenceKey());
+
+        assertTrue(mController.handlePreferenceTreeClick(mPreference));
+    }
+
+    @Test
+    public void handPreferenceTreeClick_keyNotMatched_notConsumeClickEvent() {
+        mPreference.setKey("not_matched_key");
+
+        assertFalse(mController.handlePreferenceTreeClick(mPreference));
+    }
+}