Check for WiFi controller for summary population.

WiFiController might return not available, so we should only surface
"Wi-Fi" as a summary entry if it's available in the settings page.

This also checks for empty strings in case they are declared as such in
the XML (since XML can be device/product overlay'd), to avoid situations
such as ", data usage".

Bug: 111398942
Test: Manual check, and I see Wi-Fi no longer visible for cases where
Wifi controller isn't available.
Test: make RunSettingsRoboTests
Change-Id: I24736a6240c50e2ea38ce424fbac2316721290d8
This commit is contained in:
Ben Lin
2018-07-20 12:36:42 -07:00
parent c879386e5a
commit 96dc235f6e
2 changed files with 35 additions and 14 deletions

View File

@@ -24,6 +24,7 @@ import android.content.Context;
import android.icu.text.ListFormatter;
import android.provider.SearchIndexableResource;
import android.text.BidiFormatter;
import android.text.TextUtils;
import android.util.Log;
import com.android.internal.logging.nano.MetricsProto;
@@ -153,21 +154,25 @@ public class NetworkDashboardFragment extends DashboardFragment implements
private final Context mContext;
private final SummaryLoader mSummaryLoader;
private final WifiMasterSwitchPreferenceController mWifiPreferenceController;
private final MobileNetworkPreferenceController mMobileNetworkPreferenceController;
private final TetherPreferenceController mTetherPreferenceController;
public SummaryProvider(Context context, SummaryLoader summaryLoader) {
this(context, summaryLoader,
new WifiMasterSwitchPreferenceController(context, null),
new MobileNetworkPreferenceController(context),
new TetherPreferenceController(context, null /* lifecycle */));
}
@VisibleForTesting(otherwise = VisibleForTesting.NONE)
SummaryProvider(Context context, SummaryLoader summaryLoader,
WifiMasterSwitchPreferenceController wifiPreferenceController,
MobileNetworkPreferenceController mobileNetworkPreferenceController,
TetherPreferenceController tetherPreferenceController) {
mContext = context;
mSummaryLoader = summaryLoader;
mWifiPreferenceController = wifiPreferenceController;
mMobileNetworkPreferenceController = mobileNetworkPreferenceController;
mTetherPreferenceController = tetherPreferenceController;
}
@@ -176,20 +181,27 @@ public class NetworkDashboardFragment extends DashboardFragment implements
@Override
public void setListening(boolean listening) {
if (listening) {
final List<String> summaries = new ArrayList<>();
final String wifiSummary = BidiFormatter.getInstance()
.unicodeWrap(mContext.getString(R.string.wifi_settings_title));
final String mobileSummary = mContext.getString(
R.string.network_dashboard_summary_mobile);
final String dataUsageSummary = mContext.getString(
R.string.network_dashboard_summary_data_usage);
final String hotspotSummary = mContext.getString(
R.string.network_dashboard_summary_hotspot);
summaries.add(BidiFormatter.getInstance()
.unicodeWrap(mContext.getString(R.string.wifi_settings_title)));
if (mMobileNetworkPreferenceController.isAvailable()) {
summaries.add(mContext.getString(
R.string.network_dashboard_summary_mobile));
final List<String> summaries = new ArrayList<>();
if (mWifiPreferenceController.isAvailable() && !TextUtils.isEmpty(wifiSummary)) {
summaries.add(wifiSummary);
}
final String dataUsageSettingSummary = mContext.getString(
R.string.network_dashboard_summary_data_usage);
summaries.add(dataUsageSettingSummary);
if (mTetherPreferenceController.isAvailable()) {
summaries.add(mContext.getString(
R.string.network_dashboard_summary_hotspot));
if (mMobileNetworkPreferenceController.isAvailable() && !TextUtils.isEmpty(mobileSummary)) {
summaries.add(mobileSummary);
}
if (!TextUtils.isEmpty(dataUsageSummary)) {
summaries.add(dataUsageSummary);
}
if (mTetherPreferenceController.isAvailable() && !TextUtils.isEmpty(hotspotSummary)) {
summaries.add(hotspotSummary);
}
mSummaryLoader.setSummary(this, ListFormatter.getInstance().format(summaries));
}