Add ability to show/hide Color Correction and Color Inversion.

This adds two new boolean flags:
config_show_color_inversion_preference
config_show_color_correction_preference

Which whent set to false, will hide the color inversion and color
correction preference items, respectively.

Bug: 62378109
Test: make RunSettingsRoboTests
ROBOTEST_FILTER=AccessibilitySettingsTest

Change-Id: I06eac8e141bd6564495298c6c6544a7b059a4e73
diff --git a/res/values/bools.xml b/res/values/bools.xml
index c490365..23dc88a 100644
--- a/res/values/bools.xml
+++ b/res/values/bools.xml
@@ -99,6 +99,12 @@
     <!-- Whether default_home should be shown or not. -->
     <bool name="config_show_default_home">true</bool>
 
+    <!-- Whether color correction preference should be shown or not. -->
+    <bool name="config_show_color_correction_preference">true</bool>
+
+    <!-- Whether color inversion preference should be shown or not. -->
+    <bool name="config_show_color_inversion_preference">true</bool>
+
     <!-- Whether accessibility shortcut preference should be shown or not. -->
     <bool name="config_show_accessibility_shortcut_preference">true</bool>
 
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index cc72280..df8d4c8 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -90,8 +90,6 @@
     // Preferences
     private static final String TOGGLE_HIGH_TEXT_CONTRAST_PREFERENCE =
             "toggle_high_text_contrast_preference";
-    private static final String TOGGLE_INVERSION_PREFERENCE =
-            "toggle_inversion_preference";
     private static final String TOGGLE_POWER_BUTTON_ENDS_CALL_PREFERENCE =
             "toggle_power_button_ends_call_preference";
     private static final String TOGGLE_LOCK_SCREEN_ROTATION_PREFERENCE =
@@ -113,9 +111,11 @@
             "tts_settings_preference";
     private static final String AUTOCLICK_PREFERENCE_SCREEN =
             "autoclick_preference_screen";
-    private static final String DISPLAY_DALTONIZER_PREFERENCE_SCREEN =
-            "daltonizer_preference_screen";
 
+    @VisibleForTesting static final String TOGGLE_INVERSION_PREFERENCE =
+            "toggle_inversion_preference";
+    @VisibleForTesting static final String DISPLAY_DALTONIZER_PREFERENCE_SCREEN =
+            "daltonizer_preference_screen";
     @VisibleForTesting static final String ACCESSIBILITY_SHORTCUT_PREFERENCE =
             "accessibility_shortcut_preference";
 
@@ -619,6 +619,8 @@
             displayCategory.addPreference(mToggleInversionPreference);
             displayCategory.addPreference(mDisplayDaltonizerPreferenceScreen);
         }
+        checkColorCorrectionVisibility(mDisplayDaltonizerPreferenceScreen);
+        checkColorInversionVisibility(mToggleInversionPreference);
 
         // Text contrast.
         mToggleHighTextContrastPreference.setChecked(
@@ -769,6 +771,20 @@
         }
     }
 
+    @VisibleForTesting void checkColorCorrectionVisibility(Preference preference) {
+        if (!getContext().getResources().getBoolean(
+                R.bool.config_show_color_correction_preference)) {
+            removePreference(DISPLAY_DALTONIZER_PREFERENCE_SCREEN);
+        }
+    }
+
+    @VisibleForTesting void checkColorInversionVisibility(Preference preference) {
+        if (!getContext().getResources().getBoolean(
+                R.bool.config_show_color_inversion_preference)) {
+            removePreference(TOGGLE_INVERSION_PREFERENCE);
+        }
+    }
+
     @VisibleForTesting void checkAccessibilityShortcutVisibility(Preference preference) {
         if (!getContext().getResources().getBoolean(
                 R.bool.config_show_accessibility_shortcut_preference)) {
diff --git a/tests/robotests/res/values-mcc999/config.xml b/tests/robotests/res/values-mcc999/config.xml
index 7bb80e8..6ac135d 100644
--- a/tests/robotests/res/values-mcc999/config.xml
+++ b/tests/robotests/res/values-mcc999/config.xml
@@ -37,4 +37,6 @@
     <bool name="config_show_tts_settings_summary">false</bool>
     <bool name="config_show_pointer_speed">false</bool>
     <bool name="config_show_vibrate_input_devices">false</bool>
+    <bool name="config_show_color_correction_preference">false</bool>
+    <bool name="config_show_color_inversion_preference">false</bool>
 </resources>
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
index c721fc9..96ce183 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
@@ -45,6 +45,8 @@
     private Context mContext;
     private AccessibilitySettings mFragment;
     private boolean mAccessibilityShortcutPreferenceRemoved;
+    private boolean mColorInversionPreferenceRemoved;
+    private boolean mColorCorrectionPreferenceRemoved;
 
     @Before
     public void setUp() {
@@ -60,7 +62,16 @@
             protected boolean removePreference(String key) {
                 if (AccessibilitySettings.ACCESSIBILITY_SHORTCUT_PREFERENCE.equals(key)) {
                     mAccessibilityShortcutPreferenceRemoved = true;
+                    return true;
+                }
 
+                if (AccessibilitySettings.TOGGLE_INVERSION_PREFERENCE.equals(key)) {
+                    mColorInversionPreferenceRemoved = true;
+                    return true;
+                }
+
+                if (AccessibilitySettings.DISPLAY_DALTONIZER_PREFERENCE_SCREEN.equals(key)) {
+                    mColorCorrectionPreferenceRemoved = true;
                     return true;
                 }
                 return false;
@@ -104,4 +115,38 @@
 
         assertThat(niks).contains(AccessibilitySettings.ACCESSIBILITY_SHORTCUT_PREFERENCE);
     }
+
+    @Test
+    public void testColorInversionPreference_byDefault_shouldBeShown() {
+        final Preference preference = new Preference(mContext);
+        mFragment.checkColorInversionVisibility(preference);
+
+        assertThat(mColorInversionPreferenceRemoved).isEqualTo(false);
+    }
+
+    @Test
+    @Config(qualifiers = "mcc999")
+    public void testColorInversionPreference_ifDisabled_shouldNotBeShown() {
+        final Preference preference = new Preference(mContext);
+        mFragment.checkColorInversionVisibility(preference);
+
+        assertThat(mColorInversionPreferenceRemoved).isEqualTo(true);
+    }
+
+    @Test
+    public void testColorCorrectionPreference_byDefault_shouldBeShown() {
+        final Preference preference = new Preference(mContext);
+        mFragment.checkColorCorrectionVisibility(preference);
+
+        assertThat(mColorCorrectionPreferenceRemoved).isEqualTo(false);
+    }
+
+    @Test
+    @Config(qualifiers = "mcc999")
+    public void testColorCorrectionPreference_ifDisabled_shouldNotBeShown() {
+        final Preference preference = new Preference(mContext);
+        mFragment.checkColorCorrectionVisibility(preference);
+
+        assertThat(mColorCorrectionPreferenceRemoved).isEqualTo(true);
+    }
 }