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

Commit 1c576674 authored by Daniel Norman's avatar Daniel Norman Committed by Android (Google) Code Review
Browse files

Merge "Fix Settings Search for OneHandedSettings" into main

parents 26fc990b 5ddd74b9
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -24,7 +24,8 @@


    <com.android.settingslib.widget.TopIntroPreference
    <com.android.settingslib.widget.TopIntroPreference
        android:key="gesture_one_handed_mode_intro"
        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
    <com.android.settingslib.widget.IllustrationPreference
        android:key="one_handed_header"
        android:key="one_handed_header"
+25 −1
Original line number Original line Diff line number Diff line
@@ -29,15 +29,19 @@ import android.view.ViewGroup;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.RecyclerView;


import com.android.internal.accessibility.AccessibilityShortcutController;
import com.android.internal.accessibility.AccessibilityShortcutController;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.R;
import com.android.settings.accessibility.AccessibilityFragmentUtils;
import com.android.settings.accessibility.AccessibilityFragmentUtils;
import com.android.settings.accessibility.AccessibilityShortcutPreferenceFragment;
import com.android.settings.accessibility.AccessibilityShortcutPreferenceFragment;
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
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 com.android.settingslib.search.SearchIndexableRaw;
import com.android.settingslib.widget.IllustrationPreference;
import com.android.settingslib.widget.IllustrationPreference;
import com.android.settingslib.widget.MainSwitchPreference;
import com.android.settingslib.widget.MainSwitchPreference;


import java.util.List;

/**
/**
 * Fragment for One-handed mode settings
 * Fragment for One-handed mode settings
 *
 *
@@ -48,7 +52,8 @@ import com.android.settingslib.widget.MainSwitchPreference;
public class OneHandedSettings extends AccessibilityShortcutPreferenceFragment {
public class OneHandedSettings extends AccessibilityShortcutPreferenceFragment {


    private static final String TAG = "OneHandedSettings";
    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";
    private static final String ONE_HANDED_ILLUSTRATION_KEY = "one_handed_header";
    protected static final String ONE_HANDED_MAIN_SWITCH_KEY =
    protected static final String ONE_HANDED_MAIN_SWITCH_KEY =
            "gesture_one_handed_mode_enabled_main_switch";
            "gesture_one_handed_mode_enabled_main_switch";
@@ -180,6 +185,25 @@ public class OneHandedSettings extends AccessibilityShortcutPreferenceFragment {
                protected boolean isPageSearchEnabled(Context context) {
                protected boolean isPageSearchEnabled(Context context) {
                    return OneHandedSettingsUtils.isSupportOneHandedMode();
                    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
    @Override
+42 −0
Original line number Original line Diff line number Diff line
@@ -16,6 +16,8 @@


package com.android.settings.gestures;
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 com.google.common.truth.Truth.assertThat;


import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.spy;
@@ -23,14 +25,19 @@ import static org.mockito.Mockito.when;


import android.content.Context;
import android.content.Context;
import android.os.SystemProperties;
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 android.provider.SearchIndexableResource;


import androidx.test.core.app.ApplicationProvider;
import androidx.test.core.app.ApplicationProvider;


import com.android.settings.R;
import com.android.settings.R;
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
import com.android.settingslib.search.SearchIndexableRaw;


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;
@@ -43,12 +50,16 @@ import java.util.List;
@RunWith(RobolectricTestRunner.class)
@RunWith(RobolectricTestRunner.class)
public class OneHandedSettingsTest {
public class OneHandedSettingsTest {


    @Rule
    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    private final Context mContext = ApplicationProvider.getApplicationContext();
    private final Context mContext = ApplicationProvider.getApplicationContext();
    private OneHandedSettings mSettings;
    private OneHandedSettings mSettings;


    @Before
    @Before
    public void setUp() {
    public void setUp() {
        mSettings = spy(new OneHandedSettings());
        mSettings = spy(new OneHandedSettings());
        SystemProperties.set(OneHandedSettingsUtils.SUPPORT_ONE_HANDED_MODE, "true");
    }
    }


    @Test
    @Test
@@ -102,4 +113,35 @@ public class OneHandedSettingsTest {
        final boolean isEnabled = (Boolean) obj;
        final boolean isEnabled = (Boolean) obj;
        assertThat(isEnabled).isFalse();
        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");
    }
}
}