Loading res/values/strings.xml +2 −4 Original line number Diff line number Diff line Loading @@ -4773,6 +4773,8 @@ <string name="accessibility_screen_magnification_title">Magnify</string> <!-- Title for the accessibility preference screen to edit magnification area. [CHAR LIMIT=35] --> <string name="accessibility_magnification_mode_title">Magnification area</string> <!-- Title for the accessibility preference screen to edit magnification enable mode. [CHAR LIMIT=35] --> <string name="accessibility_magnification_enable_mode_title">Magnification enable</string> <!-- Message for the accessibility preference screen to edit magnification area dialog. [CHAR LIMIT=none] --> <string name="accessibility_magnification_area_settings_message">Choose the magnification area(s) you want to use when magnifying the screen</string> <!-- Summary for the accessibility preference screen to edit full screen. [CHAR LIMIT=none] --> Loading @@ -4785,10 +4787,6 @@ <string name="accessibility_magnification_area_settings_full_screen">Magnify entire screen</string> <!-- Message for the accessibility preference screen to edit part of screen. [CHAR LIMIT=none] --> <string name="accessibility_magnification_area_settings_window_screen">Magnify part of screen</string> <!-- Title for the accessibility preference screen to show move controller. [CHAR LIMIT=35] --> <string name="accessibility_magnification_window_control_switch_title">Show move controller</string> <!-- Summary for the accessibility preference screen to show move controller. [CHAR LIMIT=none] --> <string name="accessibility_magnification_window_control_switch_summary">Show a joystick-like controller to move the magnification area</string> <!-- Title for the accessibility preference screen to enable screen magnification settings. [CHAR LIMIT=35] --> <string name="accessibility_magnification_service_settings_title">Magnification settings</string> <!-- Title for the accessibility preference screen to enable triple-tap gesture screen magnification. [CHAR LIMIT=35] --> Loading res/xml/accessibility_magnification_service_settings.xml +6 −4 Original line number Diff line number Diff line Loading @@ -28,9 +28,11 @@ settings:controller="com.android.settings.accessibility.MagnificationModePreferenceController" /> <SwitchPreference android:key="magnification_window_control_switch" android:key="magnification_enable" android:persistent="false" android:summary="@string/accessibility_magnification_window_control_switch_summary" android:title="@string/accessibility_magnification_window_control_switch_title" settings:controller="com.android.settings.accessibility.MagnificationWindowControlPreferenceController" /> android:title="@string/accessibility_magnification_enable_mode_title" android:summaryOn="@string/accessibility_magnification_area_settings_full_screen_summary" android:summaryOff="@string/accessibility_magnification_area_settings_window_screen_summary" settings:controller="com.android.settings.accessibility.MagnificationEnablePreferenceController" /> </PreferenceScreen> src/com/android/settings/accessibility/MagnificationWindowControlPreferenceController.java→src/com/android/settings/accessibility/MagnificationEnablePreferenceController.java +58 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * Copyright (C) 2020 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. Loading @@ -20,41 +20,39 @@ import android.content.Context; import android.os.UserHandle; import android.provider.Settings; import com.android.settings.core.TogglePreferenceController; import androidx.preference.Preference; import androidx.preference.SwitchPreference; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import com.android.settings.core.TogglePreferenceController; /** Controller that shows and updates the magnification window control switch. */ public class MagnificationWindowControlPreferenceController extends TogglePreferenceController { /** Controller that shows the magnification enable mode summary. */ public class MagnificationEnablePreferenceController extends TogglePreferenceController { // TODO(b/146019459): Use magnification_window_control_enabled. private static final String KEY_CONTROL = Settings.System.MASTER_MONO; private static final String KEY_ENABLE = Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE; public MagnificationWindowControlPreferenceController(Context context, String preferenceKey) { public MagnificationEnablePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); } @Override public boolean isChecked() { return Settings.System.getIntForUser(mContext.getContentResolver(), KEY_CONTROL, State.OFF, UserHandle.USER_CURRENT) == State.ON; final int enableMode = Settings.Secure.getIntForUser(mContext.getContentResolver(), KEY_ENABLE, Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN, UserHandle.USER_CURRENT); return enableMode == Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN; } @Override public boolean setChecked(boolean isChecked) { return Settings.System.putIntForUser(mContext.getContentResolver(), KEY_CONTROL, isChecked ? State.ON : State.OFF, UserHandle.USER_CURRENT); final int value = isChecked ? Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN : Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW; return Settings.Secure.putIntForUser(mContext.getContentResolver(), KEY_ENABLE, value, UserHandle.USER_CURRENT); } @Override public int getAvailabilityStatus() { return AVAILABLE; } @Retention(RetentionPolicy.SOURCE) private @interface State { int OFF = 0; int ON = 1; } } src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +14 −0 Original line number Diff line number Diff line Loading @@ -257,6 +257,11 @@ public class ToggleScreenMagnificationPreferenceFragment extends updateAlertDialogCheckState(); updateAlertDialogEnableState(); // Window magnification mode doesn't support advancedView. if (isWindowMagnification(getPrefContext())) { advancedView.setVisibility(View.GONE); return; } // Shows the triple tap checkbox directly if clicked. if (mTripleTapTypeCheckBox.isChecked()) { advancedView.setVisibility(View.GONE); Loading Loading @@ -614,4 +619,13 @@ public class ToggleScreenMagnificationPreferenceFragment extends } return false; } private boolean isWindowMagnification(Context context) { final int mode = Settings.Secure.getIntForUser( context.getContentResolver(), Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE, Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN, context.getContentResolver().getUserId()); return mode == Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW; } } tests/robotests/src/com/android/settings/accessibility/MagnificationWindowControlPreferenceControllerTest.java→tests/robotests/src/com/android/settings/accessibility/MagnificationEnablePreferenceControllerTest.java +26 −29 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * Copyright (C) 2020 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. Loading Loading @@ -30,29 +30,27 @@ import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @RunWith(RobolectricTestRunner.class) public class MagnificationWindowControlPreferenceControllerTest { private static final String PREF_KEY = "screen_magnification_window_control_switch"; // TODO(b/146019459): Use magnification_window_control_enabled. private static final String KEY_CONTROL = Settings.System.MASTER_MONO; public class MagnificationEnablePreferenceControllerTest { private static final String PREF_KEY = "screen_magnification_enable"; private static final String KEY_ENABLE = Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE; private static final int UNKNOWN = -1; private Context mContext; private SwitchPreference mPreference; private MagnificationWindowControlPreferenceController mController; private MagnificationEnablePreferenceController mController; @Before public void setUp() { mContext = RuntimeEnvironment.application; mPreference = new SwitchPreference(mContext); mController = new MagnificationWindowControlPreferenceController(mContext, PREF_KEY); mController = new MagnificationEnablePreferenceController(mContext, PREF_KEY); } @Test public void isChecked_enabledWindowControl_shouldReturnTrue() { Settings.System.putIntForUser(mContext.getContentResolver(), KEY_CONTROL, State.ON, UserHandle.USER_CURRENT); public void isChecked_enabledFullscreenMagnificationMode_shouldReturnTrue() { Settings.Secure.putIntForUser(mContext.getContentResolver(), KEY_ENABLE, Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN, UserHandle.USER_CURRENT); mController.updateState(mPreference); Loading @@ -61,9 +59,10 @@ public class MagnificationWindowControlPreferenceControllerTest { } @Test public void isChecked_disabledWindowControl_shouldReturnFalse() { Settings.System.putIntForUser(mContext.getContentResolver(), KEY_CONTROL, State.OFF, UserHandle.USER_CURRENT); public void isChecked_enabledWindowMagnificationMode_shouldReturnFalse() { Settings.Secure.putIntForUser(mContext.getContentResolver(), KEY_ENABLE, Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW, UserHandle.USER_CURRENT); mController.updateState(mPreference); Loading @@ -71,26 +70,24 @@ public class MagnificationWindowControlPreferenceControllerTest { assertThat(mPreference.isChecked()).isFalse(); } @Test public void setChecked_setTrue_shouldEnableWindowControl() { public void setChecked_setTrue_shouldEnableFullscreenMagnificationMode() { mController.setChecked(true); assertThat(Settings.System.getIntForUser(mContext.getContentResolver(), KEY_CONTROL, State.UNKNOWN, UserHandle.USER_CURRENT)).isEqualTo(State.ON); assertThat(Settings.Secure.getIntForUser(mContext.getContentResolver(), KEY_ENABLE, UNKNOWN, UserHandle.USER_CURRENT)).isEqualTo( Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN); } @Test public void setChecked_setFalse_shouldDisableWindowControl() { public void setChecked_setFalse_shouldEnableWindowMagnificationMode() { mController.setChecked(false); assertThat(Settings.System.getIntForUser(mContext.getContentResolver(), KEY_CONTROL, State.UNKNOWN, UserHandle.USER_CURRENT)).isEqualTo(State.OFF); } @Retention(RetentionPolicy.SOURCE) private @interface State { int UNKNOWN = -1; int OFF = 0; int ON = 1; assertThat(Settings.Secure.getIntForUser(mContext.getContentResolver(), KEY_ENABLE, UNKNOWN, UserHandle.USER_CURRENT)).isEqualTo( Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW); } } Loading
res/values/strings.xml +2 −4 Original line number Diff line number Diff line Loading @@ -4773,6 +4773,8 @@ <string name="accessibility_screen_magnification_title">Magnify</string> <!-- Title for the accessibility preference screen to edit magnification area. [CHAR LIMIT=35] --> <string name="accessibility_magnification_mode_title">Magnification area</string> <!-- Title for the accessibility preference screen to edit magnification enable mode. [CHAR LIMIT=35] --> <string name="accessibility_magnification_enable_mode_title">Magnification enable</string> <!-- Message for the accessibility preference screen to edit magnification area dialog. [CHAR LIMIT=none] --> <string name="accessibility_magnification_area_settings_message">Choose the magnification area(s) you want to use when magnifying the screen</string> <!-- Summary for the accessibility preference screen to edit full screen. [CHAR LIMIT=none] --> Loading @@ -4785,10 +4787,6 @@ <string name="accessibility_magnification_area_settings_full_screen">Magnify entire screen</string> <!-- Message for the accessibility preference screen to edit part of screen. [CHAR LIMIT=none] --> <string name="accessibility_magnification_area_settings_window_screen">Magnify part of screen</string> <!-- Title for the accessibility preference screen to show move controller. [CHAR LIMIT=35] --> <string name="accessibility_magnification_window_control_switch_title">Show move controller</string> <!-- Summary for the accessibility preference screen to show move controller. [CHAR LIMIT=none] --> <string name="accessibility_magnification_window_control_switch_summary">Show a joystick-like controller to move the magnification area</string> <!-- Title for the accessibility preference screen to enable screen magnification settings. [CHAR LIMIT=35] --> <string name="accessibility_magnification_service_settings_title">Magnification settings</string> <!-- Title for the accessibility preference screen to enable triple-tap gesture screen magnification. [CHAR LIMIT=35] --> Loading
res/xml/accessibility_magnification_service_settings.xml +6 −4 Original line number Diff line number Diff line Loading @@ -28,9 +28,11 @@ settings:controller="com.android.settings.accessibility.MagnificationModePreferenceController" /> <SwitchPreference android:key="magnification_window_control_switch" android:key="magnification_enable" android:persistent="false" android:summary="@string/accessibility_magnification_window_control_switch_summary" android:title="@string/accessibility_magnification_window_control_switch_title" settings:controller="com.android.settings.accessibility.MagnificationWindowControlPreferenceController" /> android:title="@string/accessibility_magnification_enable_mode_title" android:summaryOn="@string/accessibility_magnification_area_settings_full_screen_summary" android:summaryOff="@string/accessibility_magnification_area_settings_window_screen_summary" settings:controller="com.android.settings.accessibility.MagnificationEnablePreferenceController" /> </PreferenceScreen>
src/com/android/settings/accessibility/MagnificationWindowControlPreferenceController.java→src/com/android/settings/accessibility/MagnificationEnablePreferenceController.java +58 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * Copyright (C) 2020 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. Loading @@ -20,41 +20,39 @@ import android.content.Context; import android.os.UserHandle; import android.provider.Settings; import com.android.settings.core.TogglePreferenceController; import androidx.preference.Preference; import androidx.preference.SwitchPreference; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import com.android.settings.core.TogglePreferenceController; /** Controller that shows and updates the magnification window control switch. */ public class MagnificationWindowControlPreferenceController extends TogglePreferenceController { /** Controller that shows the magnification enable mode summary. */ public class MagnificationEnablePreferenceController extends TogglePreferenceController { // TODO(b/146019459): Use magnification_window_control_enabled. private static final String KEY_CONTROL = Settings.System.MASTER_MONO; private static final String KEY_ENABLE = Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE; public MagnificationWindowControlPreferenceController(Context context, String preferenceKey) { public MagnificationEnablePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); } @Override public boolean isChecked() { return Settings.System.getIntForUser(mContext.getContentResolver(), KEY_CONTROL, State.OFF, UserHandle.USER_CURRENT) == State.ON; final int enableMode = Settings.Secure.getIntForUser(mContext.getContentResolver(), KEY_ENABLE, Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN, UserHandle.USER_CURRENT); return enableMode == Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN; } @Override public boolean setChecked(boolean isChecked) { return Settings.System.putIntForUser(mContext.getContentResolver(), KEY_CONTROL, isChecked ? State.ON : State.OFF, UserHandle.USER_CURRENT); final int value = isChecked ? Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN : Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW; return Settings.Secure.putIntForUser(mContext.getContentResolver(), KEY_ENABLE, value, UserHandle.USER_CURRENT); } @Override public int getAvailabilityStatus() { return AVAILABLE; } @Retention(RetentionPolicy.SOURCE) private @interface State { int OFF = 0; int ON = 1; } }
src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +14 −0 Original line number Diff line number Diff line Loading @@ -257,6 +257,11 @@ public class ToggleScreenMagnificationPreferenceFragment extends updateAlertDialogCheckState(); updateAlertDialogEnableState(); // Window magnification mode doesn't support advancedView. if (isWindowMagnification(getPrefContext())) { advancedView.setVisibility(View.GONE); return; } // Shows the triple tap checkbox directly if clicked. if (mTripleTapTypeCheckBox.isChecked()) { advancedView.setVisibility(View.GONE); Loading Loading @@ -614,4 +619,13 @@ public class ToggleScreenMagnificationPreferenceFragment extends } return false; } private boolean isWindowMagnification(Context context) { final int mode = Settings.Secure.getIntForUser( context.getContentResolver(), Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE, Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN, context.getContentResolver().getUserId()); return mode == Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW; } }
tests/robotests/src/com/android/settings/accessibility/MagnificationWindowControlPreferenceControllerTest.java→tests/robotests/src/com/android/settings/accessibility/MagnificationEnablePreferenceControllerTest.java +26 −29 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * Copyright (C) 2020 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. Loading Loading @@ -30,29 +30,27 @@ import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @RunWith(RobolectricTestRunner.class) public class MagnificationWindowControlPreferenceControllerTest { private static final String PREF_KEY = "screen_magnification_window_control_switch"; // TODO(b/146019459): Use magnification_window_control_enabled. private static final String KEY_CONTROL = Settings.System.MASTER_MONO; public class MagnificationEnablePreferenceControllerTest { private static final String PREF_KEY = "screen_magnification_enable"; private static final String KEY_ENABLE = Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE; private static final int UNKNOWN = -1; private Context mContext; private SwitchPreference mPreference; private MagnificationWindowControlPreferenceController mController; private MagnificationEnablePreferenceController mController; @Before public void setUp() { mContext = RuntimeEnvironment.application; mPreference = new SwitchPreference(mContext); mController = new MagnificationWindowControlPreferenceController(mContext, PREF_KEY); mController = new MagnificationEnablePreferenceController(mContext, PREF_KEY); } @Test public void isChecked_enabledWindowControl_shouldReturnTrue() { Settings.System.putIntForUser(mContext.getContentResolver(), KEY_CONTROL, State.ON, UserHandle.USER_CURRENT); public void isChecked_enabledFullscreenMagnificationMode_shouldReturnTrue() { Settings.Secure.putIntForUser(mContext.getContentResolver(), KEY_ENABLE, Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN, UserHandle.USER_CURRENT); mController.updateState(mPreference); Loading @@ -61,9 +59,10 @@ public class MagnificationWindowControlPreferenceControllerTest { } @Test public void isChecked_disabledWindowControl_shouldReturnFalse() { Settings.System.putIntForUser(mContext.getContentResolver(), KEY_CONTROL, State.OFF, UserHandle.USER_CURRENT); public void isChecked_enabledWindowMagnificationMode_shouldReturnFalse() { Settings.Secure.putIntForUser(mContext.getContentResolver(), KEY_ENABLE, Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW, UserHandle.USER_CURRENT); mController.updateState(mPreference); Loading @@ -71,26 +70,24 @@ public class MagnificationWindowControlPreferenceControllerTest { assertThat(mPreference.isChecked()).isFalse(); } @Test public void setChecked_setTrue_shouldEnableWindowControl() { public void setChecked_setTrue_shouldEnableFullscreenMagnificationMode() { mController.setChecked(true); assertThat(Settings.System.getIntForUser(mContext.getContentResolver(), KEY_CONTROL, State.UNKNOWN, UserHandle.USER_CURRENT)).isEqualTo(State.ON); assertThat(Settings.Secure.getIntForUser(mContext.getContentResolver(), KEY_ENABLE, UNKNOWN, UserHandle.USER_CURRENT)).isEqualTo( Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN); } @Test public void setChecked_setFalse_shouldDisableWindowControl() { public void setChecked_setFalse_shouldEnableWindowMagnificationMode() { mController.setChecked(false); assertThat(Settings.System.getIntForUser(mContext.getContentResolver(), KEY_CONTROL, State.UNKNOWN, UserHandle.USER_CURRENT)).isEqualTo(State.OFF); } @Retention(RetentionPolicy.SOURCE) private @interface State { int UNKNOWN = -1; int OFF = 0; int ON = 1; assertThat(Settings.Secure.getIntForUser(mContext.getContentResolver(), KEY_ENABLE, UNKNOWN, UserHandle.USER_CURRENT)).isEqualTo( Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW); } }