Update autoclick shortcut searchable

Add autoclick shortcut to search index when
enable_autoclick_indicator flag is enabled.
Hide it when the flag is off.

Bug: 397719419
Test: atest ToggleAutoclickPreferenceFragmentTest
Flag: com.android.server.accessibility.enable_autoclick_indicator
Change-Id: Ib6d25067d024ff0dbea64d17d38fc544c615db97
This commit is contained in:
Yuhan Yang
2025-02-21 04:33:51 +00:00
parent 4d52d72337
commit 664df0f4cc
3 changed files with 43 additions and 3 deletions

View File

@@ -33,8 +33,7 @@
<com.android.settings.accessibility.ShortcutPreference <com.android.settings.accessibility.ShortcutPreference
android:key="autoclick_shortcut_preference" android:key="autoclick_shortcut_preference"
android:title="@string/accessibility_autoclick_shortcut_title" android:title="@string/accessibility_autoclick_shortcut_title"
android:persistent="false" android:persistent="false"/>
settings:searchable="false"/>
<!-- Items in a list should not be searchable. --> <!-- Items in a list should not be searchable. -->
<com.android.settingslib.widget.SelectorWithWidgetPreference <com.android.settingslib.widget.SelectorWithWidgetPreference

View File

@@ -20,16 +20,20 @@ import static com.android.internal.accessibility.AccessibilityShortcutController
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.android.internal.annotations.VisibleForTesting;
import com.android.server.accessibility.Flags; import com.android.server.accessibility.Flags;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable; import com.android.settingslib.search.SearchIndexable;
import java.util.List;
/** /**
* Fragment for preference screen for settings related to Automatically click after mouse stops * Fragment for preference screen for settings related to Automatically click after mouse stops
* feature. * feature.
@@ -40,6 +44,7 @@ public class ToggleAutoclickPreferenceFragment
private static final String TAG = "AutoclickPrefFragment"; private static final String TAG = "AutoclickPrefFragment";
@VisibleForTesting
static final String KEY_AUTOCLICK_SHORTCUT_PREFERENCE = "autoclick_shortcut_preference"; static final String KEY_AUTOCLICK_SHORTCUT_PREFERENCE = "autoclick_shortcut_preference";
/** /**
@@ -105,5 +110,15 @@ public class ToggleAutoclickPreferenceFragment
} }
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.accessibility_autoclick_settings); new BaseSearchIndexProvider(R.xml.accessibility_autoclick_settings) {
@Override
public List<String> getNonIndexableKeys(Context context) {
List<String> niks = super.getNonIndexableKeys(context);
if (!Flags.enableAutoclickIndicator()) {
niks.add(KEY_AUTOCLICK_SHORTCUT_PREFERENCE);
}
return niks;
}
};
} }

View File

@@ -16,10 +16,15 @@
package com.android.settings.accessibility; package com.android.settings.accessibility;
import static com.android.settings.accessibility.ToggleAutoclickPreferenceFragment.KEY_AUTOCLICK_SHORTCUT_PREFERENCE;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.Context; import android.content.Context;
import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
@@ -27,6 +32,7 @@ import com.android.settings.R;
import com.android.settings.testutils.XmlTestUtils; import com.android.settings.testutils.XmlTestUtils;
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;
@@ -37,6 +43,8 @@ import java.util.List;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class ToggleAutoclickPreferenceFragmentTest { public class ToggleAutoclickPreferenceFragmentTest {
@Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
private final Context mContext = ApplicationProvider.getApplicationContext(); private final Context mContext = ApplicationProvider.getApplicationContext();
private ToggleAutoclickPreferenceFragment mFragment; private ToggleAutoclickPreferenceFragment mFragment;
@@ -77,4 +85,22 @@ public class ToggleAutoclickPreferenceFragmentTest {
assertThat(keys).containsAtLeastElementsIn(niks); assertThat(keys).containsAtLeastElementsIn(niks);
} }
@Test
@DisableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
public void getNonIndexableKeys_flagDisabled_doesNotContainShortcut() {
final List<String> niks = ToggleAutoclickPreferenceFragment.SEARCH_INDEX_DATA_PROVIDER
.getNonIndexableKeys(mContext);
assertThat(niks).contains(KEY_AUTOCLICK_SHORTCUT_PREFERENCE);
}
@Test
@EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
public void getNonIndexableKeys_returnsOnlyShortcutKey() {
final List<String> niks = ToggleAutoclickPreferenceFragment.SEARCH_INDEX_DATA_PROVIDER
.getNonIndexableKeys(mContext);
assertThat(niks).doesNotContain(KEY_AUTOCLICK_SHORTCUT_PREFERENCE);
}
} }