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");
+ }
}