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:
Fan Zhang
2018-06-08 14:32:04 -07:00
parent 7bc2f98188
commit 7f5692bdea
7 changed files with 49 additions and 78 deletions

View File

@@ -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" />
<Preference

View File

@@ -23,7 +23,6 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.display.BrightnessLevelPreferenceController;
import com.android.settings.display.CameraGesturePreferenceController;
import com.android.settings.display.ColorModePreferenceController;
import com.android.settings.display.LiftToWakePreferenceController;
import com.android.settings.display.NightDisplayPreferenceController;
import com.android.settings.display.NightModePreferenceController;
@@ -94,7 +93,6 @@ public class DisplaySettings extends DashboardFragment {
controllers.add(new WallpaperPreferenceController(context));
controllers.add(new ThemePreferenceController(context));
controllers.add(new BrightnessLevelPreferenceController(context, lifecycle));
controllers.add(new ColorModePreferenceController(context));
return controllers;
}

View File

@@ -22,10 +22,6 @@ import android.net.NetworkPolicyManager;
import android.net.NetworkTemplate;
import android.os.Bundle;
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.SubscriptionManager;
import android.text.BidiFormatter;
@@ -43,20 +39,20 @@ import com.android.settings.R;
import com.android.settings.SummaryPreference;
import com.android.settings.Utils;
import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settingslib.NetworkPolicyEditor;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.net.DataUsageController;
import com.android.settingslib.search.SearchIndexable;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
/**
* Legacy {@link DataUsageSummary} fragment.
*/
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
public class DataUsageSummaryLegacy extends DataUsageBaseFragment implements Indexable,
DataUsageEditController {
@@ -143,7 +139,7 @@ public class DataUsageSummaryLegacy extends DataUsageBaseFragment implements Ind
}
mDataUsageTemplate = hasMobileData ? R.string.cell_data_template
: hasWifiRadio ? R.string.wifi_data_template
: R.string.ethernet_data_template;
: R.string.ethernet_data_template;
setHasOptionsMenu(true);
}
@@ -204,7 +200,7 @@ public class DataUsageSummaryLegacy extends DataUsageBaseFragment implements Ind
category.setTemplate(getNetworkTemplate(subId), subId, services);
category.pushTemplates(services);
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());
}
}
@@ -260,7 +256,7 @@ public class DataUsageSummaryLegacy extends DataUsageBaseFragment implements Ind
final SpannableString amountTemplate = new SpannableString(
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,
enlargedValue, usedResult.units);
@@ -359,52 +355,5 @@ public class DataUsageSummaryLegacy extends DataUsageBaseFragment implements Ind
}
public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
= 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;
}
};
= SummaryProvider::new;
}

View File

@@ -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

View File

@@ -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<SearchIndexableResource> getXmlResourcesToIndex(
Context context, boolean enabled) {
final SearchIndexableResource sir = new SearchIndexableResource(context);
sir.xmlResId = R.xml.color_mode_settings;
return Arrays.asList(sir);
}
};
}

View File

@@ -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

View File

@@ -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));
}
}