Loading res/xml/accessibility_settings.xml +8 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,14 @@ android:title="@string/screen_zoom_title" settings:searchable="false"/> <ListPreference android:key="dark_ui_mode_accessibility" android:title="@string/dark_ui_mode" android:dialogTitle="@string/dark_ui_mode_title" android:entries="@array/dark_ui_mode_entries" android:entryValues="@array/dark_ui_mode_values" settings:searchable="false" /> <Preference android:fragment="com.android.settings.accessibility.MagnificationPreferenceFragment" android:key="magnification_preference_screen" Loading src/com/android/settings/accessibility/AccessibilitySettings.java +15 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ import com.android.internal.view.RotationPolicy.RotationPolicyListener; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.display.DarkUIPreferenceController; import com.android.settings.display.ToggleFontSizePreferenceFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; Loading Loading @@ -133,6 +134,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements "accessibility_content_timeout_preference_fragment"; private static final String ACCESSIBILITY_CONTROL_TIMEOUT_PREFERENCE = "accessibility_control_timeout_preference_fragment"; private static final String DARK_UI_MODE_PREFERENCE = "dark_ui_mode_accessibility"; // Extras passed to sub-fragments. Loading Loading @@ -236,6 +239,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements private SwitchPreference mToggleInversionPreference; private ColorInversionPreferenceController mInversionPreferenceController; private AccessibilityHearingAidPreferenceController mHearingAidPreferenceController; private ListPreference mDarkUIModePreference; private DarkUIPreferenceController mDarkUIPreferenceController; private int mLongPressTimeoutDefault; Loading Loading @@ -501,6 +506,13 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements // Vibrations. mVibrationPreferenceScreen = findPreference(VIBRATION_PREFERENCE_SCREEN); // Dark Mode. mDarkUIModePreference = findPreference(DARK_UI_MODE_PREFERENCE); mDarkUIPreferenceController = new DarkUIPreferenceController(getContext(), DARK_UI_MODE_PREFERENCE); mDarkUIPreferenceController.displayPreference(getPreferenceScreen()); mDarkUIModePreference.setSummary(mDarkUIPreferenceController.getSummary()); } private void updateAllPreferences() { Loading Loading @@ -683,6 +695,9 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements // If the quick setting is enabled, the preference MUST be enabled. mInversionPreferenceController.updateState(mToggleInversionPreference); // Dark Mode mDarkUIPreferenceController.updateState(mDarkUIModePreference); // Power button ends calls. if (KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_POWER) && Utils.isVoiceCapable(getActivity())) { Loading tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -21,14 +21,17 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import android.app.UiModeManager; import android.content.ContentResolver; import android.content.Context; import android.os.Vibrator; import android.provider.Settings; import androidx.preference.ListPreference; import androidx.preference.Preference; import com.android.settings.R; import com.android.settings.display.DarkUIPreferenceController; import com.android.settings.testutils.XmlTestUtils; import org.junit.Before; Loading @@ -47,10 +50,13 @@ public class AccessibilitySettingsTest { "accessibility_content_timeout_preference_fragment"; private static final String ACCESSIBILITY_CONTROL_TIMEOUT_PREFERENCE = "accessibility_control_timeout_preference_fragment"; private static final String DARK_UI_MODE_PREFERENCE = "dark_ui_mode_accessibility"; private Context mContext; private ContentResolver mContentResolver; private AccessibilitySettings mSettings; private UiModeManager mUiModeManager; @Before public void setup() { Loading @@ -59,6 +65,7 @@ public class AccessibilitySettingsTest { mContentResolver = mContext.getContentResolver(); mSettings = spy(new AccessibilitySettings()); doReturn(mContext).when(mSettings).getContext(); mUiModeManager = mContext.getSystemService(UiModeManager.class); } @Test Loading Loading @@ -146,4 +153,29 @@ public class AccessibilitySettingsTest { assertThat(preference.getSummary()).isEqualTo(mContext.getResources().getString(resId)); } @Test public void testDarkUIModePreferenceSummary_shouldUpdateSummary() { final ListPreference darkUIModePreference = new ListPreference(mContext); final DarkUIPreferenceController mController; doReturn(darkUIModePreference).when(mSettings).findPreference( DARK_UI_MODE_PREFERENCE); mController = new DarkUIPreferenceController(mContext, DARK_UI_MODE_PREFERENCE); final String darkUIModeDescription = modeToDescription(mUiModeManager.getNightMode()); darkUIModePreference.setSummary(mController.getSummary()); assertThat(darkUIModePreference.getSummary()).isEqualTo(darkUIModeDescription); } private String modeToDescription(int mode) { String[] values = mContext.getResources().getStringArray(R.array.dark_ui_mode_entries); switch (mode) { case UiModeManager.MODE_NIGHT_YES: return values[0]; case UiModeManager.MODE_NIGHT_NO: case UiModeManager.MODE_NIGHT_AUTO: default: return values[1]; } } } Loading
res/xml/accessibility_settings.xml +8 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,14 @@ android:title="@string/screen_zoom_title" settings:searchable="false"/> <ListPreference android:key="dark_ui_mode_accessibility" android:title="@string/dark_ui_mode" android:dialogTitle="@string/dark_ui_mode_title" android:entries="@array/dark_ui_mode_entries" android:entryValues="@array/dark_ui_mode_values" settings:searchable="false" /> <Preference android:fragment="com.android.settings.accessibility.MagnificationPreferenceFragment" android:key="magnification_preference_screen" Loading
src/com/android/settings/accessibility/AccessibilitySettings.java +15 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ import com.android.internal.view.RotationPolicy.RotationPolicyListener; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.display.DarkUIPreferenceController; import com.android.settings.display.ToggleFontSizePreferenceFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; Loading Loading @@ -133,6 +134,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements "accessibility_content_timeout_preference_fragment"; private static final String ACCESSIBILITY_CONTROL_TIMEOUT_PREFERENCE = "accessibility_control_timeout_preference_fragment"; private static final String DARK_UI_MODE_PREFERENCE = "dark_ui_mode_accessibility"; // Extras passed to sub-fragments. Loading Loading @@ -236,6 +239,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements private SwitchPreference mToggleInversionPreference; private ColorInversionPreferenceController mInversionPreferenceController; private AccessibilityHearingAidPreferenceController mHearingAidPreferenceController; private ListPreference mDarkUIModePreference; private DarkUIPreferenceController mDarkUIPreferenceController; private int mLongPressTimeoutDefault; Loading Loading @@ -501,6 +506,13 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements // Vibrations. mVibrationPreferenceScreen = findPreference(VIBRATION_PREFERENCE_SCREEN); // Dark Mode. mDarkUIModePreference = findPreference(DARK_UI_MODE_PREFERENCE); mDarkUIPreferenceController = new DarkUIPreferenceController(getContext(), DARK_UI_MODE_PREFERENCE); mDarkUIPreferenceController.displayPreference(getPreferenceScreen()); mDarkUIModePreference.setSummary(mDarkUIPreferenceController.getSummary()); } private void updateAllPreferences() { Loading Loading @@ -683,6 +695,9 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements // If the quick setting is enabled, the preference MUST be enabled. mInversionPreferenceController.updateState(mToggleInversionPreference); // Dark Mode mDarkUIPreferenceController.updateState(mDarkUIModePreference); // Power button ends calls. if (KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_POWER) && Utils.isVoiceCapable(getActivity())) { Loading
tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -21,14 +21,17 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import android.app.UiModeManager; import android.content.ContentResolver; import android.content.Context; import android.os.Vibrator; import android.provider.Settings; import androidx.preference.ListPreference; import androidx.preference.Preference; import com.android.settings.R; import com.android.settings.display.DarkUIPreferenceController; import com.android.settings.testutils.XmlTestUtils; import org.junit.Before; Loading @@ -47,10 +50,13 @@ public class AccessibilitySettingsTest { "accessibility_content_timeout_preference_fragment"; private static final String ACCESSIBILITY_CONTROL_TIMEOUT_PREFERENCE = "accessibility_control_timeout_preference_fragment"; private static final String DARK_UI_MODE_PREFERENCE = "dark_ui_mode_accessibility"; private Context mContext; private ContentResolver mContentResolver; private AccessibilitySettings mSettings; private UiModeManager mUiModeManager; @Before public void setup() { Loading @@ -59,6 +65,7 @@ public class AccessibilitySettingsTest { mContentResolver = mContext.getContentResolver(); mSettings = spy(new AccessibilitySettings()); doReturn(mContext).when(mSettings).getContext(); mUiModeManager = mContext.getSystemService(UiModeManager.class); } @Test Loading Loading @@ -146,4 +153,29 @@ public class AccessibilitySettingsTest { assertThat(preference.getSummary()).isEqualTo(mContext.getResources().getString(resId)); } @Test public void testDarkUIModePreferenceSummary_shouldUpdateSummary() { final ListPreference darkUIModePreference = new ListPreference(mContext); final DarkUIPreferenceController mController; doReturn(darkUIModePreference).when(mSettings).findPreference( DARK_UI_MODE_PREFERENCE); mController = new DarkUIPreferenceController(mContext, DARK_UI_MODE_PREFERENCE); final String darkUIModeDescription = modeToDescription(mUiModeManager.getNightMode()); darkUIModePreference.setSummary(mController.getSummary()); assertThat(darkUIModePreference.getSummary()).isEqualTo(darkUIModeDescription); } private String modeToDescription(int mode) { String[] values = mContext.getResources().getStringArray(R.array.dark_ui_mode_entries); switch (mode) { case UiModeManager.MODE_NIGHT_YES: return values[0]; case UiModeManager.MODE_NIGHT_NO: case UiModeManager.MODE_NIGHT_AUTO: default: return values[1]; } } }