diff options
4 files changed, 59 insertions, 0 deletions
diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java index 1a938d6ec37e..a4089c0d8697 100644 --- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java +++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java @@ -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; @@ -424,6 +425,13 @@ public abstract class Tile implements Parcelable { } /** + * Returns if this is searchable. + */ + public boolean isSearchable() { + return mMetaData == null || mMetaData.getBoolean(META_DATA_PREFERENCE_SEARCHABLE, true); + } + + /** * The type of the tile. */ public enum Type { diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java index 33907ece5a7c..d0929e19bc9b 100644 --- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java +++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java @@ -250,6 +250,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. */ public static List<DashboardCategory> getCategories(Context context, diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/ActivityTileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/ActivityTileTest.java index 4d2b1ae2ade0..21cdc492e4ea 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/ActivityTileTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/ActivityTileTest.java @@ -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(); + } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/ProviderTileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/ProviderTileTest.java index 80f9efb8b5ac..faccf2f15f49 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/ProviderTileTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/ProviderTileTest.java @@ -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 { |