Merge "Physical keyboard related options shouldn't be searchable when invisible" into main
This commit is contained in:
@@ -51,6 +51,16 @@ flag {
|
|||||||
bug: "301198830"
|
bug: "301198830"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
flag {
|
||||||
|
name: "fix_a11y_settings_search"
|
||||||
|
namespace: "accessibility"
|
||||||
|
description: "Fix the a11y related search items in Settings app"
|
||||||
|
bug: "333437173"
|
||||||
|
metadata {
|
||||||
|
purpose: PURPOSE_BUGFIX
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
flag {
|
flag {
|
||||||
name: "hide_magnification_always_on_toggle_when_window_mode_only"
|
name: "hide_magnification_always_on_toggle_when_window_mode_only"
|
||||||
namespace: "accessibility"
|
namespace: "accessibility"
|
||||||
|
|||||||
@@ -613,7 +613,7 @@ public class AccessibilitySettings extends DashboardFragment implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isAnyHardKeyboardsExist() {
|
static boolean isAnyHardKeyboardsExist() {
|
||||||
for (int deviceId : InputDevice.getDeviceIds()) {
|
for (int deviceId : InputDevice.getDeviceIds()) {
|
||||||
final InputDevice device = InputDevice.getDevice(deviceId);
|
final InputDevice device = InputDevice.getDevice(deviceId);
|
||||||
if (device != null && !device.isVirtual() && device.isFullKeyboard()) {
|
if (device != null && !device.isVirtual() && device.isFullKeyboard()) {
|
||||||
|
|||||||
@@ -19,16 +19,21 @@ package com.android.settings.accessibility;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.hardware.input.InputSettings;
|
import android.hardware.input.InputSettings;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.TogglePreferenceController;
|
import com.android.settings.core.TogglePreferenceController;
|
||||||
import com.android.settings.inputmethod.PhysicalKeyboardFragment;
|
import com.android.settings.inputmethod.PhysicalKeyboardFragment;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A toggle preference controller for keyboard bounce key.
|
* A toggle preference controller for keyboard bounce key.
|
||||||
*/
|
*/
|
||||||
public class KeyboardBounceKeyPreferenceController extends TogglePreferenceController {
|
public class KeyboardBounceKeyPreferenceController extends TogglePreferenceController {
|
||||||
|
private static final String TAG = "BounceKeyPrefController";
|
||||||
static final String PREF_KEY = "toggle_keyboard_bounce_keys";
|
static final String PREF_KEY = "toggle_keyboard_bounce_keys";
|
||||||
|
|
||||||
public KeyboardBounceKeyPreferenceController(Context context, String preferenceKey) {
|
public KeyboardBounceKeyPreferenceController(Context context, String preferenceKey) {
|
||||||
@@ -58,4 +63,17 @@ public class KeyboardBounceKeyPreferenceController extends TogglePreferenceContr
|
|||||||
public int getSliceHighlightMenuRes() {
|
public int getSliceHighlightMenuRes() {
|
||||||
return R.string.menu_key_accessibility;
|
return R.string.menu_key_accessibility;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateNonIndexableKeys(@NonNull List<String> keys) {
|
||||||
|
super.updateNonIndexableKeys(keys);
|
||||||
|
|
||||||
|
if (Flags.fixA11ySettingsSearch() && !AccessibilitySettings.isAnyHardKeyboardsExist()) {
|
||||||
|
if (keys.contains(getPreferenceKey())) {
|
||||||
|
Log.w(TAG, "Skipping updateNonIndexableKeys, key already in list.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
keys.add(getPreferenceKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,15 +19,21 @@ package com.android.settings.accessibility;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.hardware.input.InputSettings;
|
import android.hardware.input.InputSettings;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.TogglePreferenceController;
|
import com.android.settings.core.TogglePreferenceController;
|
||||||
import com.android.settings.inputmethod.PhysicalKeyboardFragment;
|
import com.android.settings.inputmethod.PhysicalKeyboardFragment;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A toggle preference controller for keyboard slow key.
|
* A toggle preference controller for keyboard slow key.
|
||||||
*/
|
*/
|
||||||
public class KeyboardSlowKeyPreferenceController extends TogglePreferenceController {
|
public class KeyboardSlowKeyPreferenceController extends TogglePreferenceController {
|
||||||
|
private static final String TAG = "SlowKeyPrefController";
|
||||||
|
|
||||||
static final String PREF_KEY = "toggle_keyboard_slow_keys";
|
static final String PREF_KEY = "toggle_keyboard_slow_keys";
|
||||||
|
|
||||||
@@ -58,4 +64,17 @@ public class KeyboardSlowKeyPreferenceController extends TogglePreferenceControl
|
|||||||
public int getSliceHighlightMenuRes() {
|
public int getSliceHighlightMenuRes() {
|
||||||
return R.string.menu_key_accessibility;
|
return R.string.menu_key_accessibility;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateNonIndexableKeys(@NonNull List<String> keys) {
|
||||||
|
super.updateNonIndexableKeys(keys);
|
||||||
|
|
||||||
|
if (Flags.fixA11ySettingsSearch() && !AccessibilitySettings.isAnyHardKeyboardsExist()) {
|
||||||
|
if (keys.contains(getPreferenceKey())) {
|
||||||
|
Log.w(TAG, "Skipping updateNonIndexableKeys, key already in list.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
keys.add(getPreferenceKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,15 +19,20 @@ package com.android.settings.accessibility;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.hardware.input.InputSettings;
|
import android.hardware.input.InputSettings;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.TogglePreferenceController;
|
import com.android.settings.core.TogglePreferenceController;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A toggle preference controller for keyboard sticky key.
|
* A toggle preference controller for keyboard sticky key.
|
||||||
*/
|
*/
|
||||||
public class KeyboardStickyKeyPreferenceController extends TogglePreferenceController {
|
public class KeyboardStickyKeyPreferenceController extends TogglePreferenceController {
|
||||||
|
private static final String TAG = "StickyKeyPrefController";
|
||||||
static final String PREF_KEY = "toggle_keyboard_sticky_keys";
|
static final String PREF_KEY = "toggle_keyboard_sticky_keys";
|
||||||
|
|
||||||
public KeyboardStickyKeyPreferenceController(Context context, String preferenceKey) {
|
public KeyboardStickyKeyPreferenceController(Context context, String preferenceKey) {
|
||||||
@@ -55,4 +60,17 @@ public class KeyboardStickyKeyPreferenceController extends TogglePreferenceContr
|
|||||||
public int getSliceHighlightMenuRes() {
|
public int getSliceHighlightMenuRes() {
|
||||||
return R.string.menu_key_accessibility;
|
return R.string.menu_key_accessibility;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateNonIndexableKeys(@NonNull List<String> keys) {
|
||||||
|
super.updateNonIndexableKeys(keys);
|
||||||
|
|
||||||
|
if (Flags.fixA11ySettingsSearch() && !AccessibilitySettings.isAnyHardKeyboardsExist()) {
|
||||||
|
if (keys.contains(getPreferenceKey())) {
|
||||||
|
Log.w(TAG, "Skipping updateNonIndexableKeys, key already in list.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
keys.add(getPreferenceKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ import static org.mockito.Mockito.spy;
|
|||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.platform.test.annotations.EnableFlags;
|
||||||
|
import android.platform.test.flag.junit.SetFlagsRule;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
|
||||||
import androidx.preference.PreferenceManager;
|
import androidx.preference.PreferenceManager;
|
||||||
@@ -34,19 +36,24 @@ import androidx.test.core.app.ApplicationProvider;
|
|||||||
|
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
|
||||||
|
import org.junit.Assume;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class KeyboardBounceKeyPreferenceControllerTest {
|
public class KeyboardBounceKeyPreferenceControllerTest {
|
||||||
|
|
||||||
private static final String KEY_ACCESSIBILITY_BOUNCE_KEYS =
|
private static final String KEY_ACCESSIBILITY_BOUNCE_KEYS =
|
||||||
Settings.Secure.ACCESSIBILITY_BOUNCE_KEYS;
|
Settings.Secure.ACCESSIBILITY_BOUNCE_KEYS;
|
||||||
private static final int UNKNOWN = -1;
|
private static final int UNKNOWN = -1;
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public final SetFlagsRule mSetFlagRule = new SetFlagsRule();
|
||||||
private final Context mContext = ApplicationProvider.getApplicationContext();
|
private final Context mContext = ApplicationProvider.getApplicationContext();
|
||||||
private final SwitchPreference mSwitchPreference = spy(new SwitchPreference(mContext));
|
private final SwitchPreference mSwitchPreference = spy(new SwitchPreference(mContext));
|
||||||
private final KeyboardBounceKeyPreferenceController mController =
|
private final KeyboardBounceKeyPreferenceController mController =
|
||||||
@@ -131,4 +138,26 @@ public class KeyboardBounceKeyPreferenceControllerTest {
|
|||||||
mContext.getContentResolver(), KEY_ACCESSIBILITY_BOUNCE_KEYS,
|
mContext.getContentResolver(), KEY_ACCESSIBILITY_BOUNCE_KEYS,
|
||||||
UNKNOWN)).isNotEqualTo(OFF);
|
UNKNOWN)).isNotEqualTo(OFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
|
||||||
|
public void updateNonIndexableKeys_physicalKeyboardExists_returnEmptyList() {
|
||||||
|
Assume.assumeTrue(AccessibilitySettings.isAnyHardKeyboardsExist());
|
||||||
|
|
||||||
|
List<String> nonIndexableKeys = new ArrayList<>();
|
||||||
|
mController.updateNonIndexableKeys(nonIndexableKeys);
|
||||||
|
|
||||||
|
assertThat(nonIndexableKeys).isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
|
||||||
|
public void updateNonIndexableKeys_noPhysicalKeyboard_returnPreKey() {
|
||||||
|
Assume.assumeFalse(AccessibilitySettings.isAnyHardKeyboardsExist());
|
||||||
|
|
||||||
|
List<String> nonIndexableKeys = new ArrayList<>();
|
||||||
|
mController.updateNonIndexableKeys(nonIndexableKeys);
|
||||||
|
|
||||||
|
assertThat(nonIndexableKeys).contains(mController.getPreferenceKey());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ import static org.mockito.Mockito.spy;
|
|||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.platform.test.annotations.EnableFlags;
|
||||||
|
import android.platform.test.flag.junit.SetFlagsRule;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
|
||||||
import androidx.preference.PreferenceManager;
|
import androidx.preference.PreferenceManager;
|
||||||
@@ -34,19 +36,24 @@ import androidx.test.core.app.ApplicationProvider;
|
|||||||
|
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
|
||||||
|
import org.junit.Assume;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class KeyboardSlowKeyPreferenceControllerTest {
|
public class KeyboardSlowKeyPreferenceControllerTest {
|
||||||
|
|
||||||
private static final String KEY_ACCESSIBILITY_SLOW_KEYS =
|
private static final String KEY_ACCESSIBILITY_SLOW_KEYS =
|
||||||
Settings.Secure.ACCESSIBILITY_SLOW_KEYS;
|
Settings.Secure.ACCESSIBILITY_SLOW_KEYS;
|
||||||
private static final int UNKNOWN = -1;
|
private static final int UNKNOWN = -1;
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public final SetFlagsRule mSetFlagRule = new SetFlagsRule();
|
||||||
private final Context mContext = ApplicationProvider.getApplicationContext();
|
private final Context mContext = ApplicationProvider.getApplicationContext();
|
||||||
private final SwitchPreference mSwitchPreference = spy(new SwitchPreference(mContext));
|
private final SwitchPreference mSwitchPreference = spy(new SwitchPreference(mContext));
|
||||||
private final KeyboardSlowKeyPreferenceController mController =
|
private final KeyboardSlowKeyPreferenceController mController =
|
||||||
@@ -131,4 +138,26 @@ public class KeyboardSlowKeyPreferenceControllerTest {
|
|||||||
mContext.getContentResolver(), KEY_ACCESSIBILITY_SLOW_KEYS, UNKNOWN)).isNotEqualTo(
|
mContext.getContentResolver(), KEY_ACCESSIBILITY_SLOW_KEYS, UNKNOWN)).isNotEqualTo(
|
||||||
OFF);
|
OFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
|
||||||
|
public void updateNonIndexableKeys_physicalKeyboardExists_returnEmptyList() {
|
||||||
|
Assume.assumeTrue(AccessibilitySettings.isAnyHardKeyboardsExist());
|
||||||
|
|
||||||
|
List<String> nonIndexableKeys = new ArrayList<>();
|
||||||
|
mController.updateNonIndexableKeys(nonIndexableKeys);
|
||||||
|
|
||||||
|
assertThat(nonIndexableKeys).isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
|
||||||
|
public void updateNonIndexableKeys_noPhysicalKeyboard_returnPreKey() {
|
||||||
|
Assume.assumeFalse(AccessibilitySettings.isAnyHardKeyboardsExist());
|
||||||
|
|
||||||
|
List<String> nonIndexableKeys = new ArrayList<>();
|
||||||
|
mController.updateNonIndexableKeys(nonIndexableKeys);
|
||||||
|
|
||||||
|
assertThat(nonIndexableKeys).contains(mController.getPreferenceKey());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ import static org.mockito.Mockito.spy;
|
|||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.platform.test.annotations.EnableFlags;
|
||||||
|
import android.platform.test.flag.junit.SetFlagsRule;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
|
||||||
import androidx.preference.PreferenceManager;
|
import androidx.preference.PreferenceManager;
|
||||||
@@ -34,19 +36,24 @@ import androidx.test.core.app.ApplicationProvider;
|
|||||||
|
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
|
||||||
|
import org.junit.Assume;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class KeyboardStickyKeyPreferenceControllerTest {
|
public class KeyboardStickyKeyPreferenceControllerTest {
|
||||||
|
|
||||||
private static final String KEY_ACCESSIBILITY_STICKY_KEYS =
|
private static final String KEY_ACCESSIBILITY_STICKY_KEYS =
|
||||||
Settings.Secure.ACCESSIBILITY_STICKY_KEYS;
|
Settings.Secure.ACCESSIBILITY_STICKY_KEYS;
|
||||||
private static final int UNKNOWN = -1;
|
private static final int UNKNOWN = -1;
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public final SetFlagsRule mSetFlagRule = new SetFlagsRule();
|
||||||
private final Context mContext = ApplicationProvider.getApplicationContext();
|
private final Context mContext = ApplicationProvider.getApplicationContext();
|
||||||
private final SwitchPreference mSwitchPreference = spy(new SwitchPreference(mContext));
|
private final SwitchPreference mSwitchPreference = spy(new SwitchPreference(mContext));
|
||||||
private final KeyboardStickyKeyPreferenceController mController =
|
private final KeyboardStickyKeyPreferenceController mController =
|
||||||
@@ -129,4 +136,26 @@ public class KeyboardStickyKeyPreferenceControllerTest {
|
|||||||
assertThat(Settings.Secure.getInt(
|
assertThat(Settings.Secure.getInt(
|
||||||
mContext.getContentResolver(), KEY_ACCESSIBILITY_STICKY_KEYS, UNKNOWN)).isEqualTo(ON);
|
mContext.getContentResolver(), KEY_ACCESSIBILITY_STICKY_KEYS, UNKNOWN)).isEqualTo(ON);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
|
||||||
|
public void updateNonIndexableKeys_physicalKeyboardExists_returnEmptyList() {
|
||||||
|
Assume.assumeTrue(AccessibilitySettings.isAnyHardKeyboardsExist());
|
||||||
|
|
||||||
|
List<String> nonIndexableKeys = new ArrayList<>();
|
||||||
|
mController.updateNonIndexableKeys(nonIndexableKeys);
|
||||||
|
|
||||||
|
assertThat(nonIndexableKeys).isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
|
||||||
|
public void updateNonIndexableKeys_noPhysicalKeyboard_returnPreKey() {
|
||||||
|
Assume.assumeFalse(AccessibilitySettings.isAnyHardKeyboardsExist());
|
||||||
|
|
||||||
|
List<String> nonIndexableKeys = new ArrayList<>();
|
||||||
|
mController.updateNonIndexableKeys(nonIndexableKeys);
|
||||||
|
|
||||||
|
assertThat(nonIndexableKeys).contains(mController.getPreferenceKey());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user