Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 767f5878 authored by Chun-Ku Lin's avatar Chun-Ku Lin
Browse files

Physical keyboard related options shouldn't be searchable when invisible

Physical keyboard options category is hidden when there is no hardware
keyboard. It's related preferences are hidden in this case. Hence those
preferences shouldn't be searchable.

Bug: 351047456
Test: manually search "bounce keys", "sticky keys" and "slow keys",
they're not searchable when invisible on Accessibility page
Test: atest
Flag: com.android.settings.accessibility.fix_a11y_settings_search

Change-Id: I1eb465dd34e59d856bb1fa7c06bc253971a8c8d0
parent ceeb62c4
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -51,6 +51,16 @@ flag {
  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 {
  name: "hide_magnification_always_on_toggle_when_window_mode_only"
  namespace: "accessibility"
+1 −1
Original line number Diff line number Diff line
@@ -613,7 +613,7 @@ public class AccessibilitySettings extends DashboardFragment implements
        }
    }

    private boolean isAnyHardKeyboardsExist() {
    static boolean isAnyHardKeyboardsExist() {
        for (int deviceId : InputDevice.getDeviceIds()) {
            final InputDevice device = InputDevice.getDevice(deviceId);
            if (device != null && !device.isVirtual() && device.isFullKeyboard()) {
+19 −1
Original line number Diff line number Diff line
@@ -19,16 +19,21 @@ package com.android.settings.accessibility;

import android.content.Context;
import android.hardware.input.InputSettings;
import android.util.Log;

import androidx.annotation.NonNull;

import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.inputmethod.PhysicalKeyboardFragment;

import java.util.List;

/**
 * A toggle preference controller for keyboard bounce key.
 */
public class KeyboardBounceKeyPreferenceController extends TogglePreferenceController {

    private static final String TAG = "BounceKeyPrefController";
    static final String PREF_KEY = "toggle_keyboard_bounce_keys";

    public KeyboardBounceKeyPreferenceController(Context context, String preferenceKey) {
@@ -58,4 +63,17 @@ public class KeyboardBounceKeyPreferenceController extends TogglePreferenceContr
    public int getSliceHighlightMenuRes() {
        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 −0
Original line number Diff line number Diff line
@@ -19,15 +19,21 @@ package com.android.settings.accessibility;

import android.content.Context;
import android.hardware.input.InputSettings;
import android.util.Log;

import androidx.annotation.NonNull;

import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.inputmethod.PhysicalKeyboardFragment;

import java.util.List;

/**
 * A toggle preference controller for keyboard slow key.
 */
public class KeyboardSlowKeyPreferenceController extends TogglePreferenceController {
    private static final String TAG = "SlowKeyPrefController";

    static final String PREF_KEY = "toggle_keyboard_slow_keys";

@@ -58,4 +64,17 @@ public class KeyboardSlowKeyPreferenceController extends TogglePreferenceControl
    public int getSliceHighlightMenuRes() {
        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 −1
Original line number Diff line number Diff line
@@ -19,15 +19,20 @@ package com.android.settings.accessibility;

import android.content.Context;
import android.hardware.input.InputSettings;
import android.util.Log;

import androidx.annotation.NonNull;

import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;

import java.util.List;

/**
 * A toggle preference controller for keyboard sticky key.
 */
public class KeyboardStickyKeyPreferenceController extends TogglePreferenceController {

    private static final String TAG = "StickyKeyPrefController";
    static final String PREF_KEY = "toggle_keyboard_sticky_keys";

    public KeyboardStickyKeyPreferenceController(Context context, String preferenceKey) {
@@ -55,4 +60,17 @@ public class KeyboardStickyKeyPreferenceController extends TogglePreferenceContr
    public int getSliceHighlightMenuRes() {
        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());
        }
    }
}
Loading