Accessibility shortcut secondary action - fix magnification triple tap logic
- triple tap in settings is boolean status, not string. Bug: 142530063 Test: make RunSettingsRoboTests -j52 ROBOTEST_FILTER=ToggleScreenMagnificationPreferenceFragmentTest Change-Id: Ieec9879f7ef55b694245c6f9143575ba933855e5
This commit is contained in:
@@ -17,6 +17,8 @@
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME;
|
||||
import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
|
||||
import static com.android.settings.accessibility.AccessibilityUtil.State.ON;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.app.settings.SettingsEnums;
|
||||
@@ -64,12 +66,12 @@ public class ToggleScreenMagnificationPreferenceFragment extends
|
||||
|
||||
private static final String SETTINGS_KEY = "screen_magnification_settings";
|
||||
private static final String EXTRA_SHORTCUT_TYPE = "shortcut_type";
|
||||
private static final String KEY_SHORTCUT_PREFERENCE = "shortcut_preference";
|
||||
private ShortcutPreference mShortcutPreference;
|
||||
private int mUserShortcutType = UserShortcutType.DEFAULT;
|
||||
private CheckBox mSoftwareTypeCheckBox;
|
||||
private CheckBox mHardwareTypeCheckBox;
|
||||
private CheckBox mTripleTapTypeCheckBox;
|
||||
private static final String KEY_SHORTCUT_PREFERENCE = "shortcut_preference";
|
||||
|
||||
// TODO(b/147021230): Will move common functions and variables to
|
||||
// android/internal/accessibility folder. For now, magnification need to be treated
|
||||
@@ -530,15 +532,21 @@ public class ToggleScreenMagnificationPreferenceFragment extends
|
||||
|
||||
private static void optInMagnificationValueToSettings(Context context,
|
||||
@UserShortcutType int shortcutType) {
|
||||
final String targetKey = AccessibilityUtil.convertKeyFromSettings(shortcutType);
|
||||
final String targetString = Settings.Secure.getString(context.getContentResolver(),
|
||||
targetKey);
|
||||
if (shortcutType == UserShortcutType.TRIPLETAP) {
|
||||
Settings.Secure.putInt(context.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, ON);
|
||||
return;
|
||||
}
|
||||
|
||||
if (hasMagnificationValueInSettings(context, shortcutType)) {
|
||||
return;
|
||||
}
|
||||
|
||||
final String targetKey = AccessibilityUtil.convertKeyFromSettings(shortcutType);
|
||||
final String targetString = Settings.Secure.getString(context.getContentResolver(),
|
||||
targetKey);
|
||||
final StringJoiner joiner = new StringJoiner(String.valueOf(COMPONENT_NAME_SEPARATOR));
|
||||
|
||||
if (!TextUtils.isEmpty(targetString)) {
|
||||
joiner.add(targetString);
|
||||
}
|
||||
@@ -563,7 +571,12 @@ public class ToggleScreenMagnificationPreferenceFragment extends
|
||||
|
||||
private static void optOutMagnificationValueFromSettings(Context context,
|
||||
@UserShortcutType int shortcutType) {
|
||||
final StringJoiner joiner = new StringJoiner(String.valueOf(COMPONENT_NAME_SEPARATOR));
|
||||
if (shortcutType == UserShortcutType.TRIPLETAP) {
|
||||
Settings.Secure.putInt(context.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, OFF);
|
||||
return;
|
||||
}
|
||||
|
||||
final String targetKey = AccessibilityUtil.convertKeyFromSettings(shortcutType);
|
||||
final String targetString = Settings.Secure.getString(context.getContentResolver(),
|
||||
targetKey);
|
||||
@@ -572,6 +585,8 @@ public class ToggleScreenMagnificationPreferenceFragment extends
|
||||
return;
|
||||
}
|
||||
|
||||
final StringJoiner joiner = new StringJoiner(String.valueOf(COMPONENT_NAME_SEPARATOR));
|
||||
|
||||
sStringColonSplitter.setString(targetString);
|
||||
while (sStringColonSplitter.hasNext()) {
|
||||
final String name = sStringColonSplitter.next();
|
||||
@@ -602,6 +617,11 @@ public class ToggleScreenMagnificationPreferenceFragment extends
|
||||
|
||||
private static boolean hasMagnificationValueInSettings(Context context,
|
||||
@UserShortcutType int shortcutType) {
|
||||
if (shortcutType == UserShortcutType.TRIPLETAP) {
|
||||
return Settings.Secure.getInt(context.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, OFF) == ON;
|
||||
}
|
||||
|
||||
final String targetKey = AccessibilityUtil.convertKeyFromSettings(shortcutType);
|
||||
final String targetString = Settings.Secure.getString(context.getContentResolver(),
|
||||
targetKey);
|
||||
|
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
|
||||
import static com.android.settings.accessibility.AccessibilityUtil.State.ON;
|
||||
import static com.android.settings.accessibility.AccessibilityUtil.UserShortcutType;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
@@ -55,7 +57,7 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
|
||||
|
||||
@Test
|
||||
public void hasValueInSettings_putValue_hasValue() {
|
||||
putStringIntoSettings(TRIPLETAP_SHORTCUT_KEY, MAGNIFICATION_CONTROLLER_NAME);
|
||||
setMagnificationTripleTapEnabled(/* enabled= */ true);
|
||||
|
||||
assertThat(ToggleScreenMagnificationPreferenceFragment.hasMagnificationValuesInSettings(
|
||||
mContext, UserShortcutType.TRIPLETAP)).isTrue();
|
||||
@@ -70,8 +72,7 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
|
||||
|
||||
assertThat(getStringFromSettings(SOFTWARE_SHORTCUT_KEY)).isEqualTo(
|
||||
MAGNIFICATION_CONTROLLER_NAME);
|
||||
assertThat(getStringFromSettings(TRIPLETAP_SHORTCUT_KEY)).isEqualTo(
|
||||
MAGNIFICATION_CONTROLLER_NAME);
|
||||
assertThat(getMagnificationTripleTapStatus()).isTrue();
|
||||
|
||||
}
|
||||
|
||||
@@ -91,7 +92,7 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
|
||||
public void optOutAllValuesToSettings_optOutValue_emptyString() {
|
||||
putStringIntoSettings(SOFTWARE_SHORTCUT_KEY, MAGNIFICATION_CONTROLLER_NAME);
|
||||
putStringIntoSettings(HARDWARE_SHORTCUT_KEY, MAGNIFICATION_CONTROLLER_NAME);
|
||||
putStringIntoSettings(TRIPLETAP_SHORTCUT_KEY, MAGNIFICATION_CONTROLLER_NAME);
|
||||
setMagnificationTripleTapEnabled(/* enabled= */ true);
|
||||
int shortcutTypes =
|
||||
UserShortcutType.SOFTWARE | UserShortcutType.HARDWARE | UserShortcutType.TRIPLETAP;
|
||||
|
||||
@@ -100,7 +101,7 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
|
||||
|
||||
assertThat(getStringFromSettings(SOFTWARE_SHORTCUT_KEY)).isEmpty();
|
||||
assertThat(getStringFromSettings(HARDWARE_SHORTCUT_KEY)).isEmpty();
|
||||
assertThat(getStringFromSettings(TRIPLETAP_SHORTCUT_KEY)).isEmpty();
|
||||
assertThat(getMagnificationTripleTapStatus()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -124,7 +125,17 @@ public class ToggleScreenMagnificationPreferenceFragmentTest {
|
||||
Settings.Secure.putString(mContext.getContentResolver(), key, componentName);
|
||||
}
|
||||
|
||||
private void setMagnificationTripleTapEnabled(boolean enabled) {
|
||||
Settings.Secure.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, enabled ? ON : OFF);
|
||||
}
|
||||
|
||||
private String getStringFromSettings(String key) {
|
||||
return Settings.Secure.getString(mContext.getContentResolver(), key);
|
||||
}
|
||||
|
||||
private boolean getMagnificationTripleTapStatus() {
|
||||
return Settings.Secure.getInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, OFF) == ON;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user