Fix Settings Search for OneHandedSettings
- Marks top header preference as non-searchable - Makes shortcut preference searchable Fix: 353591062 Test: manually confirm above behaviors Test: atest OneHandedSettingsTest Flag: com.android.settings.accessibility.fix_a11y_settings_search Change-Id: I3355f817358cec1d265b89d75229ffc2742efe1c
This commit is contained in:
@@ -24,7 +24,8 @@
|
||||
|
||||
<com.android.settingslib.widget.TopIntroPreference
|
||||
android:key="gesture_one_handed_mode_intro"
|
||||
android:title="@string/one_handed_mode_intro_text"/>
|
||||
android:title="@string/one_handed_mode_intro_text"
|
||||
settings:searchable="false"/>
|
||||
|
||||
<com.android.settingslib.widget.IllustrationPreference
|
||||
android:key="one_handed_header"
|
||||
|
@@ -29,15 +29,19 @@ import android.view.ViewGroup;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.internal.accessibility.AccessibilityShortcutController;
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.accessibility.AccessibilityFragmentUtils;
|
||||
import com.android.settings.accessibility.AccessibilityShortcutPreferenceFragment;
|
||||
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settingslib.search.SearchIndexable;
|
||||
import com.android.settingslib.search.SearchIndexableRaw;
|
||||
import com.android.settingslib.widget.IllustrationPreference;
|
||||
import com.android.settingslib.widget.MainSwitchPreference;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Fragment for One-handed mode settings
|
||||
*
|
||||
@@ -48,7 +52,8 @@ import com.android.settingslib.widget.MainSwitchPreference;
|
||||
public class OneHandedSettings extends AccessibilityShortcutPreferenceFragment {
|
||||
|
||||
private static final String TAG = "OneHandedSettings";
|
||||
private static final String ONE_HANDED_SHORTCUT_KEY = "one_handed_shortcuts_preference";
|
||||
@VisibleForTesting
|
||||
static final String ONE_HANDED_SHORTCUT_KEY = "one_handed_shortcuts_preference";
|
||||
private static final String ONE_HANDED_ILLUSTRATION_KEY = "one_handed_header";
|
||||
protected static final String ONE_HANDED_MAIN_SWITCH_KEY =
|
||||
"gesture_one_handed_mode_enabled_main_switch";
|
||||
@@ -180,6 +185,25 @@ public class OneHandedSettings extends AccessibilityShortcutPreferenceFragment {
|
||||
protected boolean isPageSearchEnabled(Context context) {
|
||||
return OneHandedSettingsUtils.isSupportOneHandedMode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SearchIndexableRaw> getRawDataToIndex(Context context,
|
||||
boolean enabled) {
|
||||
final List<SearchIndexableRaw> 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
|
||||
|
@@ -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<SearchIndexableRaw> rawData = OneHandedSettings
|
||||
.SEARCH_INDEX_DATA_PROVIDER.getRawDataToIndex(mContext, true);
|
||||
final List<String> 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<SearchIndexableRaw> rawData = OneHandedSettings
|
||||
.SEARCH_INDEX_DATA_PROVIDER.getRawDataToIndex(mContext, true);
|
||||
final List<String> actualSearchKeys = rawData.stream().map(raw -> raw.key).toList();
|
||||
|
||||
assertThat(actualSearchKeys).containsExactly(ONE_HANDED_SHORTCUT_KEY);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getNonIndexableKeys_containsNonSearchableElements() {
|
||||
final List<String> niks = OneHandedSettings.SEARCH_INDEX_DATA_PROVIDER
|
||||
.getNonIndexableKeys(mContext);
|
||||
|
||||
assertThat(niks).containsExactly(
|
||||
"gesture_one_handed_mode_intro",
|
||||
"one_handed_header",
|
||||
"one_handed_mode_footer");
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user