diff --git a/res/xml/one_handed_settings.xml b/res/xml/one_handed_settings.xml index ab4d6f7c8b7..ad3bf3a1e4e 100644 --- a/res/xml/one_handed_settings.xml +++ b/res/xml/one_handed_settings.xml @@ -24,7 +24,8 @@ + android:title="@string/one_handed_mode_intro_text" + settings:searchable="false"/> getRawDataToIndex(Context context, + boolean enabled) { + final List rawData = + super.getRawDataToIndex(context, enabled); + if (!com.android.settings.accessibility.Flags.fixA11ySettingsSearch()) { + return rawData; + } + rawData.add(createShortcutPreferenceSearchData(context)); + return rawData; + } + + private SearchIndexableRaw createShortcutPreferenceSearchData(Context context) { + final SearchIndexableRaw raw = new SearchIndexableRaw(context); + raw.key = ONE_HANDED_SHORTCUT_KEY; + raw.title = context.getString(R.string.one_handed_mode_shortcut_title); + return raw; + } }; @Override diff --git a/tests/robotests/src/com/android/settings/gestures/OneHandedSettingsTest.java b/tests/robotests/src/com/android/settings/gestures/OneHandedSettingsTest.java index 9633b15bec4..a03ca6192b6 100644 --- a/tests/robotests/src/com/android/settings/gestures/OneHandedSettingsTest.java +++ b/tests/robotests/src/com/android/settings/gestures/OneHandedSettingsTest.java @@ -16,6 +16,8 @@ package com.android.settings.gestures; +import static com.android.settings.gestures.OneHandedSettings.ONE_HANDED_SHORTCUT_KEY; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; @@ -23,14 +25,19 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.os.SystemProperties; +import android.platform.test.annotations.DisableFlags; +import android.platform.test.annotations.EnableFlags; +import android.platform.test.flag.junit.SetFlagsRule; import android.provider.SearchIndexableResource; import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType; +import com.android.settingslib.search.SearchIndexableRaw; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; @@ -43,12 +50,16 @@ import java.util.List; @RunWith(RobolectricTestRunner.class) public class OneHandedSettingsTest { + @Rule + public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); + private final Context mContext = ApplicationProvider.getApplicationContext(); private OneHandedSettings mSettings; @Before public void setUp() { mSettings = spy(new OneHandedSettings()); + SystemProperties.set(OneHandedSettingsUtils.SUPPORT_ONE_HANDED_MODE, "true"); } @Test @@ -102,4 +113,35 @@ public class OneHandedSettingsTest { final boolean isEnabled = (Boolean) obj; assertThat(isEnabled).isFalse(); } + + @Test + @DisableFlags(com.android.settings.accessibility.Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH) + public void getRawDataToIndex_flagDisabled_isEmpty() { + final List rawData = OneHandedSettings + .SEARCH_INDEX_DATA_PROVIDER.getRawDataToIndex(mContext, true); + final List actualSearchKeys = rawData.stream().map(raw -> raw.key).toList(); + + assertThat(actualSearchKeys).isEmpty(); + } + + @Test + @EnableFlags(com.android.settings.accessibility.Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH) + public void getRawDataToIndex_returnsOnlyShortcutKey() { + final List rawData = OneHandedSettings + .SEARCH_INDEX_DATA_PROVIDER.getRawDataToIndex(mContext, true); + final List actualSearchKeys = rawData.stream().map(raw -> raw.key).toList(); + + assertThat(actualSearchKeys).containsExactly(ONE_HANDED_SHORTCUT_KEY); + } + + @Test + public void getNonIndexableKeys_containsNonSearchableElements() { + final List niks = OneHandedSettings.SEARCH_INDEX_DATA_PROVIDER + .getNonIndexableKeys(mContext); + + assertThat(niks).containsExactly( + "gesture_one_handed_mode_intro", + "one_handed_header", + "one_handed_mode_footer"); + } }