Misc search clean up
- Make color mode page searchable and suppress its parent page. - Suppress entire DataUsageSummaryLegacy page in search. This page will be deleted soon Change-Id: I0f98c9073358934b98e986d034c89a9bf87e58ad Fixes: 70720645 Test: robotests
This commit is contained in:
@@ -75,6 +75,7 @@
|
|||||||
android:key="color_mode"
|
android:key="color_mode"
|
||||||
android:title="@string/color_mode_title"
|
android:title="@string/color_mode_title"
|
||||||
android:fragment="com.android.settings.display.ColorModePreferenceFragment"
|
android:fragment="com.android.settings.display.ColorModePreferenceFragment"
|
||||||
|
settings:controller="com.android.settings.display.ColorModePreferenceController"
|
||||||
settings:keywords="@string/keywords_color_mode" />
|
settings:keywords="@string/keywords_color_mode" />
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
|
@@ -23,7 +23,6 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
|||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
import com.android.settings.display.BrightnessLevelPreferenceController;
|
import com.android.settings.display.BrightnessLevelPreferenceController;
|
||||||
import com.android.settings.display.CameraGesturePreferenceController;
|
import com.android.settings.display.CameraGesturePreferenceController;
|
||||||
import com.android.settings.display.ColorModePreferenceController;
|
|
||||||
import com.android.settings.display.LiftToWakePreferenceController;
|
import com.android.settings.display.LiftToWakePreferenceController;
|
||||||
import com.android.settings.display.NightDisplayPreferenceController;
|
import com.android.settings.display.NightDisplayPreferenceController;
|
||||||
import com.android.settings.display.NightModePreferenceController;
|
import com.android.settings.display.NightModePreferenceController;
|
||||||
@@ -94,7 +93,6 @@ public class DisplaySettings extends DashboardFragment {
|
|||||||
controllers.add(new WallpaperPreferenceController(context));
|
controllers.add(new WallpaperPreferenceController(context));
|
||||||
controllers.add(new ThemePreferenceController(context));
|
controllers.add(new ThemePreferenceController(context));
|
||||||
controllers.add(new BrightnessLevelPreferenceController(context, lifecycle));
|
controllers.add(new BrightnessLevelPreferenceController(context, lifecycle));
|
||||||
controllers.add(new ColorModePreferenceController(context));
|
|
||||||
return controllers;
|
return controllers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -22,10 +22,6 @@ import android.net.NetworkPolicyManager;
|
|||||||
import android.net.NetworkTemplate;
|
import android.net.NetworkTemplate;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.provider.SearchIndexableResource;
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
|
||||||
import androidx.preference.Preference;
|
|
||||||
import androidx.preference.PreferenceScreen;
|
|
||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.text.BidiFormatter;
|
import android.text.BidiFormatter;
|
||||||
@@ -43,20 +39,20 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.SummaryPreference;
|
import com.android.settings.SummaryPreference;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.dashboard.SummaryLoader;
|
import com.android.settings.dashboard.SummaryLoader;
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
|
||||||
import com.android.settings.search.Indexable;
|
import com.android.settings.search.Indexable;
|
||||||
import com.android.settingslib.NetworkPolicyEditor;
|
import com.android.settingslib.NetworkPolicyEditor;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
import com.android.settingslib.net.DataUsageController;
|
import com.android.settingslib.net.DataUsageController;
|
||||||
import com.android.settingslib.search.SearchIndexable;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
import androidx.preference.Preference;
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Legacy {@link DataUsageSummary} fragment.
|
* Legacy {@link DataUsageSummary} fragment.
|
||||||
*/
|
*/
|
||||||
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
|
|
||||||
public class DataUsageSummaryLegacy extends DataUsageBaseFragment implements Indexable,
|
public class DataUsageSummaryLegacy extends DataUsageBaseFragment implements Indexable,
|
||||||
DataUsageEditController {
|
DataUsageEditController {
|
||||||
|
|
||||||
@@ -143,7 +139,7 @@ public class DataUsageSummaryLegacy extends DataUsageBaseFragment implements Ind
|
|||||||
}
|
}
|
||||||
mDataUsageTemplate = hasMobileData ? R.string.cell_data_template
|
mDataUsageTemplate = hasMobileData ? R.string.cell_data_template
|
||||||
: hasWifiRadio ? R.string.wifi_data_template
|
: hasWifiRadio ? R.string.wifi_data_template
|
||||||
: R.string.ethernet_data_template;
|
: R.string.ethernet_data_template;
|
||||||
|
|
||||||
setHasOptionsMenu(true);
|
setHasOptionsMenu(true);
|
||||||
}
|
}
|
||||||
@@ -204,7 +200,7 @@ public class DataUsageSummaryLegacy extends DataUsageBaseFragment implements Ind
|
|||||||
category.setTemplate(getNetworkTemplate(subId), subId, services);
|
category.setTemplate(getNetworkTemplate(subId), subId, services);
|
||||||
category.pushTemplates(services);
|
category.pushTemplates(services);
|
||||||
if (subInfo != null && !TextUtils.isEmpty(subInfo.getDisplayName())) {
|
if (subInfo != null && !TextUtils.isEmpty(subInfo.getDisplayName())) {
|
||||||
Preference title = category.findPreference(KEY_MOBILE_USAGE_TITLE);
|
Preference title = category.findPreference(KEY_MOBILE_USAGE_TITLE);
|
||||||
title.setTitle(subInfo.getDisplayName());
|
title.setTitle(subInfo.getDisplayName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -260,7 +256,7 @@ public class DataUsageSummaryLegacy extends DataUsageBaseFragment implements Ind
|
|||||||
|
|
||||||
final SpannableString amountTemplate = new SpannableString(
|
final SpannableString amountTemplate = new SpannableString(
|
||||||
context.getString(com.android.internal.R.string.fileSizeSuffix)
|
context.getString(com.android.internal.R.string.fileSizeSuffix)
|
||||||
.replace("%1$s", "^1").replace("%2$s", "^2"));
|
.replace("%1$s", "^1").replace("%2$s", "^2"));
|
||||||
final CharSequence formattedUsage = TextUtils.expandTemplate(amountTemplate,
|
final CharSequence formattedUsage = TextUtils.expandTemplate(amountTemplate,
|
||||||
enlargedValue, usedResult.units);
|
enlargedValue, usedResult.units);
|
||||||
|
|
||||||
@@ -359,52 +355,5 @@ public class DataUsageSummaryLegacy extends DataUsageBaseFragment implements Ind
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
|
public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
|
||||||
= SummaryProvider::new;
|
= SummaryProvider::new;
|
||||||
|
|
||||||
/**
|
|
||||||
* For search
|
|
||||||
*/
|
|
||||||
public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
|
||||||
new BaseSearchIndexProvider() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
|
|
||||||
boolean enabled) {
|
|
||||||
List<SearchIndexableResource> 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<String> getNonIndexableKeys(Context context) {
|
|
||||||
List<String> 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;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
@@ -27,15 +27,14 @@ import com.android.settings.core.BasePreferenceController;
|
|||||||
|
|
||||||
public class ColorModePreferenceController extends BasePreferenceController {
|
public class ColorModePreferenceController extends BasePreferenceController {
|
||||||
private static final String TAG = "ColorModePreference";
|
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 static final int SURFACE_FLINGER_TRANSACTION_QUERY_WIDE_COLOR = 1024;
|
||||||
|
|
||||||
private final ConfigurationWrapper mConfigWrapper;
|
private final ConfigurationWrapper mConfigWrapper;
|
||||||
private ColorDisplayController mColorDisplayController;
|
private ColorDisplayController mColorDisplayController;
|
||||||
|
|
||||||
public ColorModePreferenceController(Context context) {
|
public ColorModePreferenceController(Context context, String key) {
|
||||||
super(context, KEY_COLOR_MODE);
|
super(context, key);
|
||||||
mConfigWrapper = new ConfigurationWrapper();
|
mConfigWrapper = new ConfigurationWrapper();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,7 +42,7 @@ public class ColorModePreferenceController extends BasePreferenceController {
|
|||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
return mConfigWrapper.isScreenWideColorGamut()
|
return mConfigWrapper.isScreenWideColorGamut()
|
||||||
&& !getColorDisplayController().getAccessibilityTransformActivated() ?
|
&& !getColorDisplayController().getAccessibilityTransformActivated() ?
|
||||||
AVAILABLE : DISABLED_FOR_USER;
|
AVAILABLE_UNSEARCHABLE : DISABLED_FOR_USER;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -15,6 +15,8 @@ package com.android.settings.display;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.provider.SearchIndexableResource;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.preference.PreferenceScreen;
|
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.applications.LayoutPreference;
|
||||||
import com.android.settings.R;
|
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.settings.widget.RadioButtonPickerFragment;
|
||||||
|
import com.android.settingslib.search.SearchIndexable;
|
||||||
import com.android.settingslib.widget.CandidateInfo;
|
import com.android.settingslib.widget.CandidateInfo;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@SuppressWarnings("WeakerAccess")
|
@SuppressWarnings("WeakerAccess")
|
||||||
|
@SearchIndexable
|
||||||
public class ColorModePreferenceFragment extends RadioButtonPickerFragment
|
public class ColorModePreferenceFragment extends RadioButtonPickerFragment
|
||||||
implements ColorDisplayController.Callback {
|
implements ColorDisplayController.Callback {
|
||||||
|
|
||||||
@@ -181,4 +188,15 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment
|
|||||||
getActivity().onBackPressed();
|
getActivity().onBackPressed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
||||||
|
new BaseSearchIndexProvider() {
|
||||||
|
@Override
|
||||||
|
public List<SearchIndexableResource> getXmlResourcesToIndex(
|
||||||
|
Context context, boolean enabled) {
|
||||||
|
final SearchIndexableResource sir = new SearchIndexableResource(context);
|
||||||
|
sir.xmlResId = R.xml.color_mode_settings;
|
||||||
|
return Arrays.asList(sir);
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
@@ -7,6 +7,7 @@ com.android.settings.accounts.AccountDetailDashboardFragment
|
|||||||
com.android.settings.accounts.ManagedProfileSettings
|
com.android.settings.accounts.ManagedProfileSettings
|
||||||
com.android.settings.fuelgauge.PowerUsageAnomalyDetails
|
com.android.settings.fuelgauge.PowerUsageAnomalyDetails
|
||||||
com.android.settings.fuelgauge.AdvancedPowerUsageDetail
|
com.android.settings.fuelgauge.AdvancedPowerUsageDetail
|
||||||
|
com.android.settings.datausage.DataUsageSummaryLegacy
|
||||||
com.android.settings.development.featureflags.FeatureFlagsDashboard
|
com.android.settings.development.featureflags.FeatureFlagsDashboard
|
||||||
com.android.settings.development.qstile.DevelopmentTileConfigFragment
|
com.android.settings.development.qstile.DevelopmentTileConfigFragment
|
||||||
com.android.settings.deviceinfo.StorageProfileFragment
|
com.android.settings.deviceinfo.StorageProfileFragment
|
||||||
|
@@ -16,13 +16,12 @@
|
|||||||
|
|
||||||
package com.android.settings.display;
|
package com.android.settings.display;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import androidx.preference.Preference;
|
|
||||||
|
|
||||||
import com.android.internal.app.ColorDisplayController;
|
import com.android.internal.app.ColorDisplayController;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
@@ -35,63 +34,69 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
|
||||||
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
public class ColorModePreferenceControllerTest {
|
public class ColorModePreferenceControllerTest {
|
||||||
|
|
||||||
@Mock
|
|
||||||
private Preference mPreference;
|
|
||||||
@Mock
|
@Mock
|
||||||
private ColorDisplayController mColorDisplayController;
|
private ColorDisplayController mColorDisplayController;
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
private Preference mPreference;
|
||||||
private ColorModePreferenceController mController;
|
private ColorModePreferenceController mController;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mContext = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
mController = spy(new ColorModePreferenceController(mContext));
|
mController = spy(new ColorModePreferenceController(mContext, "test"));
|
||||||
|
mPreference = new Preference(mContext);
|
||||||
doReturn(mColorDisplayController).when(mController).getColorDisplayController();
|
doReturn(mColorDisplayController).when(mController).getColorDisplayController();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updateState_colorModeAutomatic_shouldSetSummaryToAutomatic() {
|
public void updateState_colorModeAutomatic_shouldSetSummaryToAutomatic() {
|
||||||
when(mColorDisplayController.getColorMode())
|
when(mColorDisplayController.getColorMode())
|
||||||
.thenReturn(ColorDisplayController.COLOR_MODE_AUTOMATIC);
|
.thenReturn(ColorDisplayController.COLOR_MODE_AUTOMATIC);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
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
|
@Test
|
||||||
public void updateState_colorModeSaturated_shouldSetSummaryToSaturated() {
|
public void updateState_colorModeSaturated_shouldSetSummaryToSaturated() {
|
||||||
when(mColorDisplayController.getColorMode())
|
when(mColorDisplayController.getColorMode())
|
||||||
.thenReturn(ColorDisplayController.COLOR_MODE_SATURATED);
|
.thenReturn(ColorDisplayController.COLOR_MODE_SATURATED);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
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
|
@Test
|
||||||
public void updateState_colorModeBoosted_shouldSetSummaryToBoosted() {
|
public void updateState_colorModeBoosted_shouldSetSummaryToBoosted() {
|
||||||
when(mColorDisplayController.getColorMode())
|
when(mColorDisplayController.getColorMode())
|
||||||
.thenReturn(ColorDisplayController.COLOR_MODE_BOOSTED);
|
.thenReturn(ColorDisplayController.COLOR_MODE_BOOSTED);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
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
|
@Test
|
||||||
public void updateState_colorModeNatural_shouldSetSummaryToNatural() {
|
public void updateState_colorModeNatural_shouldSetSummaryToNatural() {
|
||||||
when(mColorDisplayController.getColorMode())
|
when(mColorDisplayController.getColorMode())
|
||||||
.thenReturn(ColorDisplayController.COLOR_MODE_NATURAL);
|
.thenReturn(ColorDisplayController.COLOR_MODE_NATURAL);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
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));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user