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

Commit ac041fdb authored by Viesturs Zarins's avatar Viesturs Zarins
Browse files

Add searchable metadata attribute for injected tiles.

Allowing the injector to directly control search behavior for their tiles.

Bug: b/299430183
Test: robotest, manual
Change-Id: I21915978d6722998a45741410cca72448aacf2e0
parent b650f99c
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static com.android.settingslib.drawer.TileUtils.META_DATA_NEW_TASK;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_GROUP_KEY;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SEARCHABLE;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY_URI;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SWITCH_URI;
@@ -423,6 +424,13 @@ public abstract class Tile implements Parcelable {
        return (mMetaData == null) ? null : mMetaData.getString(META_DATA_PREFERENCE_GROUP_KEY);
    }

    /**
     * Returns if this is searchable.
     */
    public boolean isSearchable() {
        return mMetaData == null || mMetaData.getBoolean(META_DATA_PREFERENCE_SEARCHABLE, true);
    }

    /**
     * The type of the tile.
     */
+5 −0
Original line number Diff line number Diff line
@@ -249,6 +249,11 @@ public class TileUtils {
     */
    public static final String META_DATA_NEW_TASK = "com.android.settings.new_task";

    /**
     * If the entry should be shown in settings search results. Defaults to true.
     */
    public static final String META_DATA_PREFERENCE_SEARCHABLE = "com.android.settings.searchable";

    /**
     * Build a list of DashboardCategory.
     */
+23 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_GROUP_KEY;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SEARCHABLE;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SWITCH_URI;
import static com.android.settingslib.drawer.TileUtils.PROFILE_ALL;
import static com.android.settingslib.drawer.TileUtils.PROFILE_PRIMARY;
@@ -256,4 +257,26 @@ public class ActivityTileTest {

        assertThat(tile.getType()).isEqualTo(Tile.Type.SWITCH_WITH_ACTION);
    }

    @Test
    public void isSearchable_noMetadata_isTrue() {
        final Tile tile = new ActivityTile(null, "category");

        assertThat(tile.isSearchable()).isTrue();
    }

    @Test
    public void isSearchable_notSet_isTrue() {
        final Tile tile = new ActivityTile(mActivityInfo, "category");

        assertThat(tile.isSearchable()).isTrue();
    }

    @Test
    public void isSearchable_isSet_false() {
        mActivityInfo.metaData.putBoolean(META_DATA_PREFERENCE_SEARCHABLE, false);
        final Tile tile = new ActivityTile(mActivityInfo, "category");

        assertThat(tile.isSearchable()).isFalse();
    }
}
+23 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_GROUP_KEY;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SEARCHABLE;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SWITCH_URI;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_TITLE;
import static com.android.settingslib.drawer.TileUtils.PROFILE_ALL;
@@ -257,6 +258,28 @@ public class ProviderTileTest {
        assertThat(tile.getType()).isEqualTo(Tile.Type.GROUP);
    }

    @Test
    public void isSearchable_noMetadata_isTrue() {
        final Tile tile = new ProviderTile(mProviderInfo, "category", null);

        assertThat(tile.isSearchable()).isTrue();
    }

    @Test
    public void isSearchable_notSet_isTrue() {
        final Tile tile = new ProviderTile(mProviderInfo, "category", mMetaData);

        assertThat(tile.isSearchable()).isTrue();
    }

    @Test
    public void isSearchable_isSet_false() {
        mMetaData.putBoolean(META_DATA_PREFERENCE_SEARCHABLE, false);
        final Tile tile = new ProviderTile(mProviderInfo, "category", mMetaData);

        assertThat(tile.isSearchable()).isFalse();
    }

    @Implements(TileUtils.class)
    private static class ShadowTileUtils {