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

View File

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

View File

@@ -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 {
@@ -360,51 +356,4 @@ 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;
}
};
} }

View File

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

View File

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

View File

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

View File

@@ -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,22 +34,24 @@ 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();
} }
@@ -61,7 +62,8 @@ public class ColorModePreferenceControllerTest {
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
@@ -71,7 +73,8 @@ public class ColorModePreferenceControllerTest {
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
@@ -81,7 +84,8 @@ public class ColorModePreferenceControllerTest {
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
@@ -91,7 +95,8 @@ public class ColorModePreferenceControllerTest {
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));
} }
} }