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:
@@ -24,6 +24,7 @@ import android.content.Context;
|
|||||||
import android.icu.text.ListFormatter;
|
import android.icu.text.ListFormatter;
|
||||||
import android.provider.SearchIndexableResource;
|
import android.provider.SearchIndexableResource;
|
||||||
import android.text.BidiFormatter;
|
import android.text.BidiFormatter;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
@@ -153,21 +154,25 @@ public class NetworkDashboardFragment extends DashboardFragment implements
|
|||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final SummaryLoader mSummaryLoader;
|
private final SummaryLoader mSummaryLoader;
|
||||||
|
private final WifiMasterSwitchPreferenceController mWifiPreferenceController;
|
||||||
private final MobileNetworkPreferenceController mMobileNetworkPreferenceController;
|
private final MobileNetworkPreferenceController mMobileNetworkPreferenceController;
|
||||||
private final TetherPreferenceController mTetherPreferenceController;
|
private final TetherPreferenceController mTetherPreferenceController;
|
||||||
|
|
||||||
public SummaryProvider(Context context, SummaryLoader summaryLoader) {
|
public SummaryProvider(Context context, SummaryLoader summaryLoader) {
|
||||||
this(context, summaryLoader,
|
this(context, summaryLoader,
|
||||||
|
new WifiMasterSwitchPreferenceController(context, null),
|
||||||
new MobileNetworkPreferenceController(context),
|
new MobileNetworkPreferenceController(context),
|
||||||
new TetherPreferenceController(context, null /* lifecycle */));
|
new TetherPreferenceController(context, null /* lifecycle */));
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting(otherwise = VisibleForTesting.NONE)
|
@VisibleForTesting(otherwise = VisibleForTesting.NONE)
|
||||||
SummaryProvider(Context context, SummaryLoader summaryLoader,
|
SummaryProvider(Context context, SummaryLoader summaryLoader,
|
||||||
|
WifiMasterSwitchPreferenceController wifiPreferenceController,
|
||||||
MobileNetworkPreferenceController mobileNetworkPreferenceController,
|
MobileNetworkPreferenceController mobileNetworkPreferenceController,
|
||||||
TetherPreferenceController tetherPreferenceController) {
|
TetherPreferenceController tetherPreferenceController) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mSummaryLoader = summaryLoader;
|
mSummaryLoader = summaryLoader;
|
||||||
|
mWifiPreferenceController = wifiPreferenceController;
|
||||||
mMobileNetworkPreferenceController = mobileNetworkPreferenceController;
|
mMobileNetworkPreferenceController = mobileNetworkPreferenceController;
|
||||||
mTetherPreferenceController = tetherPreferenceController;
|
mTetherPreferenceController = tetherPreferenceController;
|
||||||
}
|
}
|
||||||
@@ -176,20 +181,27 @@ public class NetworkDashboardFragment extends DashboardFragment implements
|
|||||||
@Override
|
@Override
|
||||||
public void setListening(boolean listening) {
|
public void setListening(boolean listening) {
|
||||||
if (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()
|
final List<String> summaries = new ArrayList<>();
|
||||||
.unicodeWrap(mContext.getString(R.string.wifi_settings_title)));
|
if (mWifiPreferenceController.isAvailable() && !TextUtils.isEmpty(wifiSummary)) {
|
||||||
if (mMobileNetworkPreferenceController.isAvailable()) {
|
summaries.add(wifiSummary);
|
||||||
summaries.add(mContext.getString(
|
|
||||||
R.string.network_dashboard_summary_mobile));
|
|
||||||
}
|
}
|
||||||
final String dataUsageSettingSummary = mContext.getString(
|
if (mMobileNetworkPreferenceController.isAvailable() && !TextUtils.isEmpty(mobileSummary)) {
|
||||||
R.string.network_dashboard_summary_data_usage);
|
summaries.add(mobileSummary);
|
||||||
summaries.add(dataUsageSettingSummary);
|
}
|
||||||
if (mTetherPreferenceController.isAvailable()) {
|
if (!TextUtils.isEmpty(dataUsageSummary)) {
|
||||||
summaries.add(mContext.getString(
|
summaries.add(dataUsageSummary);
|
||||||
R.string.network_dashboard_summary_hotspot));
|
}
|
||||||
|
if (mTetherPreferenceController.isAvailable() && !TextUtils.isEmpty(hotspotSummary)) {
|
||||||
|
summaries.add(hotspotSummary);
|
||||||
}
|
}
|
||||||
mSummaryLoader.setSummary(this, ListFormatter.getInstance().format(summaries));
|
mSummaryLoader.setSummary(this, ListFormatter.getInstance().format(summaries));
|
||||||
}
|
}
|
||||||
|
@@ -26,6 +26,7 @@ import android.provider.SearchIndexableResource;
|
|||||||
|
|
||||||
import com.android.settings.dashboard.SummaryLoader;
|
import com.android.settings.dashboard.SummaryLoader;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
import com.android.settings.wifi.WifiMasterSwitchPreferenceController;
|
||||||
import com.android.settingslib.drawer.CategoryKey;
|
import com.android.settingslib.drawer.CategoryKey;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -66,6 +67,8 @@ public class NetworkDashboardFragmentTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void summaryProviderSetListening_hasMobileAndHotspot_shouldReturnMobileSummary() {
|
public void summaryProviderSetListening_hasMobileAndHotspot_shouldReturnMobileSummary() {
|
||||||
|
final WifiMasterSwitchPreferenceController wifiPreferenceController =
|
||||||
|
mock(WifiMasterSwitchPreferenceController.class);
|
||||||
final MobileNetworkPreferenceController mobileNetworkPreferenceController =
|
final MobileNetworkPreferenceController mobileNetworkPreferenceController =
|
||||||
mock(MobileNetworkPreferenceController.class);
|
mock(MobileNetworkPreferenceController.class);
|
||||||
final TetherPreferenceController tetherPreferenceController =
|
final TetherPreferenceController tetherPreferenceController =
|
||||||
@@ -74,12 +77,14 @@ public class NetworkDashboardFragmentTest {
|
|||||||
final SummaryLoader summaryLoader = mock(SummaryLoader.class);
|
final SummaryLoader summaryLoader = mock(SummaryLoader.class);
|
||||||
final SummaryLoader.SummaryProvider provider =
|
final SummaryLoader.SummaryProvider provider =
|
||||||
new NetworkDashboardFragment.SummaryProvider(mContext, summaryLoader,
|
new NetworkDashboardFragment.SummaryProvider(mContext, summaryLoader,
|
||||||
mobileNetworkPreferenceController, tetherPreferenceController);
|
wifiPreferenceController, mobileNetworkPreferenceController,
|
||||||
|
tetherPreferenceController);
|
||||||
|
|
||||||
provider.setListening(false);
|
provider.setListening(false);
|
||||||
|
|
||||||
verifyZeroInteractions(summaryLoader);
|
verifyZeroInteractions(summaryLoader);
|
||||||
|
|
||||||
|
when(wifiPreferenceController.isAvailable()).thenReturn(true);
|
||||||
when(mobileNetworkPreferenceController.isAvailable()).thenReturn(true);
|
when(mobileNetworkPreferenceController.isAvailable()).thenReturn(true);
|
||||||
when(tetherPreferenceController.isAvailable()).thenReturn(true);
|
when(tetherPreferenceController.isAvailable()).thenReturn(true);
|
||||||
|
|
||||||
@@ -90,6 +95,8 @@ public class NetworkDashboardFragmentTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void summaryProviderSetListening_noMobileOrHotspot_shouldReturnSimpleSummary() {
|
public void summaryProviderSetListening_noMobileOrHotspot_shouldReturnSimpleSummary() {
|
||||||
|
final WifiMasterSwitchPreferenceController wifiPreferenceController =
|
||||||
|
mock(WifiMasterSwitchPreferenceController.class);
|
||||||
final MobileNetworkPreferenceController mobileNetworkPreferenceController =
|
final MobileNetworkPreferenceController mobileNetworkPreferenceController =
|
||||||
mock(MobileNetworkPreferenceController.class);
|
mock(MobileNetworkPreferenceController.class);
|
||||||
final TetherPreferenceController tetherPreferenceController =
|
final TetherPreferenceController tetherPreferenceController =
|
||||||
@@ -98,12 +105,14 @@ public class NetworkDashboardFragmentTest {
|
|||||||
final SummaryLoader summaryLoader = mock(SummaryLoader.class);
|
final SummaryLoader summaryLoader = mock(SummaryLoader.class);
|
||||||
final SummaryLoader.SummaryProvider provider =
|
final SummaryLoader.SummaryProvider provider =
|
||||||
new NetworkDashboardFragment.SummaryProvider(mContext, summaryLoader,
|
new NetworkDashboardFragment.SummaryProvider(mContext, summaryLoader,
|
||||||
mobileNetworkPreferenceController, tetherPreferenceController);
|
wifiPreferenceController, mobileNetworkPreferenceController,
|
||||||
|
tetherPreferenceController);
|
||||||
|
|
||||||
provider.setListening(false);
|
provider.setListening(false);
|
||||||
|
|
||||||
verifyZeroInteractions(summaryLoader);
|
verifyZeroInteractions(summaryLoader);
|
||||||
|
|
||||||
|
when(wifiPreferenceController.isAvailable()).thenReturn(true);
|
||||||
when(mobileNetworkPreferenceController.isAvailable()).thenReturn(false);
|
when(mobileNetworkPreferenceController.isAvailable()).thenReturn(false);
|
||||||
when(tetherPreferenceController.isAvailable()).thenReturn(false);
|
when(tetherPreferenceController.isAvailable()).thenReturn(false);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user