New feature “Text and reading options” for SetupWizard, Wallpaper, and Settings (15/n).

- Link-up between the ResetPreference and the HighTextContrastPreference.

Bug: 211503117
Test: atest HighTextContrastPreferenceControllerTest
Change-Id: I502e52f6a14243c19a707c91b0b5ab5dd163433a
diff --git a/res/xml/accessibility_text_reading_options.xml b/res/xml/accessibility_text_reading_options.xml
index c8d142f..7d81565 100644
--- a/res/xml/accessibility_text_reading_options.xml
+++ b/res/xml/accessibility_text_reading_options.xml
@@ -54,8 +54,7 @@
     <SwitchPreference
         android:key="toggle_high_text_contrast_preference"
         android:persistent="false"
-        android:title="@string/accessibility_toggle_high_text_contrast_preference_title"
-        settings:controller="com.android.settings.accessibility.HighTextContrastPreferenceController"/>
+        android:title="@string/accessibility_toggle_high_text_contrast_preference_title" />
 
     <com.android.settingslib.widget.LayoutPreference
         android:key="reset"
diff --git a/src/com/android/settings/accessibility/HighTextContrastPreferenceController.java b/src/com/android/settings/accessibility/HighTextContrastPreferenceController.java
index e98a28c..aad69b9 100644
--- a/src/com/android/settings/accessibility/HighTextContrastPreferenceController.java
+++ b/src/com/android/settings/accessibility/HighTextContrastPreferenceController.java
@@ -22,7 +22,11 @@
 import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
-public class HighTextContrastPreferenceController extends TogglePreferenceController {
+/**
+ * PreferenceController for displaying all text in high contrast style.
+ */
+public class HighTextContrastPreferenceController extends TogglePreferenceController implements
+        TextReadingResetController.ResetStateListener {
 
     public HighTextContrastPreferenceController(Context context, String preferenceKey) {
         super(context, preferenceKey);
@@ -49,4 +53,9 @@
     public int getSliceHighlightMenuRes() {
         return R.string.menu_key_accessibility;
     }
+
+    @Override
+    public void resetState() {
+        setChecked(false);
+    }
 }
diff --git a/src/com/android/settings/accessibility/TextReadingPreferenceFragment.java b/src/com/android/settings/accessibility/TextReadingPreferenceFragment.java
index 4779a3f..7dd70af 100644
--- a/src/com/android/settings/accessibility/TextReadingPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/TextReadingPreferenceFragment.java
@@ -43,6 +43,7 @@
     private static final String PREVIEW_KEY = "preview";
     private static final String RESET_KEY = "reset";
     private static final String BOLD_TEXT_KEY = "toggle_force_bold_text";
+    private static final String HIGHT_TEXT_CONTRAST_KEY = "toggle_high_text_contrast_preference";
 
     @Override
     protected int getPreferenceScreenResId() {
@@ -83,6 +84,10 @@
                 new FontWeightAdjustmentPreferenceController(context, BOLD_TEXT_KEY);
         controllers.add(fontWeightController);
 
+        final HighTextContrastPreferenceController highTextContrastController =
+                new HighTextContrastPreferenceController(context, HIGHT_TEXT_CONTRAST_KEY);
+        controllers.add(highTextContrastController);
+
         final List<ResetStateListener> resetStateListeners =
                 controllers.stream().filter(c -> c instanceof ResetStateListener).map(
                         c -> (ResetStateListener) c).collect(Collectors.toList());
diff --git a/tests/unit/src/com/android/settings/accessibility/HighTextContrastPreferenceControllerTest.java b/tests/unit/src/com/android/settings/accessibility/HighTextContrastPreferenceControllerTest.java
index 6250fef..1ada051 100644
--- a/tests/unit/src/com/android/settings/accessibility/HighTextContrastPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/accessibility/HighTextContrastPreferenceControllerTest.java
@@ -31,6 +31,9 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+/**
+ * Tests for {@link HighTextContrastPreferenceController}.
+ */
 @RunWith(AndroidJUnit4.class)
 public class HighTextContrastPreferenceControllerTest {
 
@@ -93,4 +96,14 @@
         assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
                 Settings.Secure.ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED, UNKNOWN)).isEqualTo(OFF);
     }
+
+    @Test
+    public void resetState_shouldDisableTextContrast() {
+        mController.setChecked(true);
+
+        mController.resetState();
+
+        assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED, UNKNOWN)).isEqualTo(OFF);
+    }
 }