diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml index ec8a19733b3..683abd33f67 100644 --- a/res/xml/display_settings.xml +++ b/res/xml/display_settings.xml @@ -75,6 +75,7 @@ android:key="color_mode" android:title="@string/color_mode_title" android:fragment="com.android.settings.display.ColorModePreferenceFragment" + settings:controller="com.android.settings.display.ColorModePreferenceController" settings:keywords="@string/keywords_color_mode" /> getXmlResourcesToIndex(Context context, - boolean enabled) { - List resources = new ArrayList<>(); - SearchIndexableResource resource = new SearchIndexableResource(context); - resource.xmlResId = R.xml.data_usage_legacy; - resources.add(resource); - - resource = new SearchIndexableResource(context); - resource.xmlResId = R.xml.data_usage_cellular; - resources.add(resource); - - resource = new SearchIndexableResource(context); - resource.xmlResId = R.xml.data_usage_wifi; - resources.add(resource); - - return resources; - } - - @Override - public List getNonIndexableKeys(Context context) { - List keys = super.getNonIndexableKeys(context); - - if (!DataUsageUtils.hasMobileData(context)) { - keys.add(KEY_MOBILE_USAGE_TITLE); - keys.add(KEY_MOBILE_DATA_USAGE_TOGGLE); - keys.add(KEY_MOBILE_DATA_USAGE); - keys.add(KEY_MOBILE_BILLING_CYCLE); - } - - if (!DataUsageUtils.hasWifiRadio(context)) { - keys.add(KEY_WIFI_DATA_USAGE); - } - - // This title is named Wifi, and will confuse users. - keys.add(KEY_WIFI_USAGE_TITLE); - - return keys; - } - }; + = SummaryProvider::new; } diff --git a/src/com/android/settings/display/ColorModePreferenceController.java b/src/com/android/settings/display/ColorModePreferenceController.java index ebb4370098a..6a86cd93876 100644 --- a/src/com/android/settings/display/ColorModePreferenceController.java +++ b/src/com/android/settings/display/ColorModePreferenceController.java @@ -27,15 +27,14 @@ import com.android.settings.core.BasePreferenceController; public class ColorModePreferenceController extends BasePreferenceController { private static final String TAG = "ColorModePreference"; - private static final String KEY_COLOR_MODE = "color_mode"; private static final int SURFACE_FLINGER_TRANSACTION_QUERY_WIDE_COLOR = 1024; private final ConfigurationWrapper mConfigWrapper; private ColorDisplayController mColorDisplayController; - public ColorModePreferenceController(Context context) { - super(context, KEY_COLOR_MODE); + public ColorModePreferenceController(Context context, String key) { + super(context, key); mConfigWrapper = new ConfigurationWrapper(); } @@ -43,7 +42,7 @@ public class ColorModePreferenceController extends BasePreferenceController { public int getAvailabilityStatus() { return mConfigWrapper.isScreenWideColorGamut() && !getColorDisplayController().getAccessibilityTransformActivated() ? - AVAILABLE : DISABLED_FOR_USER; + AVAILABLE_UNSEARCHABLE : DISABLED_FOR_USER; } @Override diff --git a/src/com/android/settings/display/ColorModePreferenceFragment.java b/src/com/android/settings/display/ColorModePreferenceFragment.java index ab17c72051b..874dc71e80d 100644 --- a/src/com/android/settings/display/ColorModePreferenceFragment.java +++ b/src/com/android/settings/display/ColorModePreferenceFragment.java @@ -15,6 +15,8 @@ package com.android.settings.display; import android.content.Context; import android.graphics.drawable.Drawable; +import android.provider.SearchIndexableResource; + import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceScreen; @@ -23,13 +25,18 @@ import com.android.internal.logging.nano.MetricsProto; import com.android.settings.applications.LayoutPreference; import com.android.settings.R; +import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settings.search.Indexable; import com.android.settings.widget.RadioButtonPickerFragment; +import com.android.settingslib.search.SearchIndexable; import com.android.settingslib.widget.CandidateInfo; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @SuppressWarnings("WeakerAccess") +@SearchIndexable public class ColorModePreferenceFragment extends RadioButtonPickerFragment implements ColorDisplayController.Callback { @@ -181,4 +188,15 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment getActivity().onBackPressed(); } } + + public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = + new BaseSearchIndexProvider() { + @Override + public List getXmlResourcesToIndex( + Context context, boolean enabled) { + final SearchIndexableResource sir = new SearchIndexableResource(context); + sir.xmlResId = R.xml.color_mode_settings; + return Arrays.asList(sir); + } + }; } diff --git a/tests/robotests/assets/grandfather_not_implementing_index_provider b/tests/robotests/assets/grandfather_not_implementing_index_provider index a55f02483c8..655346b0a02 100644 --- a/tests/robotests/assets/grandfather_not_implementing_index_provider +++ b/tests/robotests/assets/grandfather_not_implementing_index_provider @@ -7,6 +7,7 @@ com.android.settings.accounts.AccountDetailDashboardFragment com.android.settings.accounts.ManagedProfileSettings com.android.settings.fuelgauge.PowerUsageAnomalyDetails com.android.settings.fuelgauge.AdvancedPowerUsageDetail +com.android.settings.datausage.DataUsageSummaryLegacy com.android.settings.development.featureflags.FeatureFlagsDashboard com.android.settings.development.qstile.DevelopmentTileConfigFragment com.android.settings.deviceinfo.StorageProfileFragment diff --git a/tests/robotests/src/com/android/settings/display/ColorModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/ColorModePreferenceControllerTest.java index c7b65356c20..83343feb9e4 100644 --- a/tests/robotests/src/com/android/settings/display/ColorModePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/ColorModePreferenceControllerTest.java @@ -16,13 +16,12 @@ package com.android.settings.display; +import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; -import androidx.preference.Preference; import com.android.internal.app.ColorDisplayController; import com.android.settings.R; @@ -35,63 +34,69 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; +import androidx.preference.Preference; + @RunWith(SettingsRobolectricTestRunner.class) public class ColorModePreferenceControllerTest { - @Mock - private Preference mPreference; @Mock private ColorDisplayController mColorDisplayController; private Context mContext; + private Preference mPreference; private ColorModePreferenceController mController; @Before public void setup() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; - mController = spy(new ColorModePreferenceController(mContext)); + mController = spy(new ColorModePreferenceController(mContext, "test")); + mPreference = new Preference(mContext); doReturn(mColorDisplayController).when(mController).getColorDisplayController(); } @Test public void updateState_colorModeAutomatic_shouldSetSummaryToAutomatic() { when(mColorDisplayController.getColorMode()) - .thenReturn(ColorDisplayController.COLOR_MODE_AUTOMATIC); + .thenReturn(ColorDisplayController.COLOR_MODE_AUTOMATIC); mController.updateState(mPreference); - verify(mPreference).setSummary(mContext.getString(R.string.color_mode_option_automatic)); + assertThat(mPreference.getSummary()) + .isEqualTo(mContext.getText(R.string.color_mode_option_automatic)); } @Test public void updateState_colorModeSaturated_shouldSetSummaryToSaturated() { when(mColorDisplayController.getColorMode()) - .thenReturn(ColorDisplayController.COLOR_MODE_SATURATED); + .thenReturn(ColorDisplayController.COLOR_MODE_SATURATED); mController.updateState(mPreference); - verify(mPreference).setSummary(mContext.getString(R.string.color_mode_option_saturated)); + assertThat(mPreference.getSummary()) + .isEqualTo(mContext.getText(R.string.color_mode_option_saturated)); } @Test public void updateState_colorModeBoosted_shouldSetSummaryToBoosted() { when(mColorDisplayController.getColorMode()) - .thenReturn(ColorDisplayController.COLOR_MODE_BOOSTED); + .thenReturn(ColorDisplayController.COLOR_MODE_BOOSTED); mController.updateState(mPreference); - verify(mPreference).setSummary(mContext.getString(R.string.color_mode_option_boosted)); + assertThat(mPreference.getSummary()) + .isEqualTo(mContext.getText(R.string.color_mode_option_boosted)); } @Test public void updateState_colorModeNatural_shouldSetSummaryToNatural() { when(mColorDisplayController.getColorMode()) - .thenReturn(ColorDisplayController.COLOR_MODE_NATURAL); + .thenReturn(ColorDisplayController.COLOR_MODE_NATURAL); mController.updateState(mPreference); - verify(mPreference).setSummary(mContext.getString(R.string.color_mode_option_natural)); + assertThat(mPreference.getSummary()) + .isEqualTo(mContext.getText(R.string.color_mode_option_natural)); } }