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

@@ -26,6 +26,7 @@ import android.provider.SearchIndexableResource;
import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wifi.WifiMasterSwitchPreferenceController;
import com.android.settingslib.drawer.CategoryKey;
import org.junit.Before;
@@ -66,6 +67,8 @@ public class NetworkDashboardFragmentTest {
@Test
public void summaryProviderSetListening_hasMobileAndHotspot_shouldReturnMobileSummary() {
final WifiMasterSwitchPreferenceController wifiPreferenceController =
mock(WifiMasterSwitchPreferenceController.class);
final MobileNetworkPreferenceController mobileNetworkPreferenceController =
mock(MobileNetworkPreferenceController.class);
final TetherPreferenceController tetherPreferenceController =
@@ -74,12 +77,14 @@ public class NetworkDashboardFragmentTest {
final SummaryLoader summaryLoader = mock(SummaryLoader.class);
final SummaryLoader.SummaryProvider provider =
new NetworkDashboardFragment.SummaryProvider(mContext, summaryLoader,
mobileNetworkPreferenceController, tetherPreferenceController);
wifiPreferenceController, mobileNetworkPreferenceController,
tetherPreferenceController);
provider.setListening(false);
verifyZeroInteractions(summaryLoader);
when(wifiPreferenceController.isAvailable()).thenReturn(true);
when(mobileNetworkPreferenceController.isAvailable()).thenReturn(true);
when(tetherPreferenceController.isAvailable()).thenReturn(true);
@@ -90,6 +95,8 @@ public class NetworkDashboardFragmentTest {
@Test
public void summaryProviderSetListening_noMobileOrHotspot_shouldReturnSimpleSummary() {
final WifiMasterSwitchPreferenceController wifiPreferenceController =
mock(WifiMasterSwitchPreferenceController.class);
final MobileNetworkPreferenceController mobileNetworkPreferenceController =
mock(MobileNetworkPreferenceController.class);
final TetherPreferenceController tetherPreferenceController =
@@ -98,12 +105,14 @@ public class NetworkDashboardFragmentTest {
final SummaryLoader summaryLoader = mock(SummaryLoader.class);
final SummaryLoader.SummaryProvider provider =
new NetworkDashboardFragment.SummaryProvider(mContext, summaryLoader,
mobileNetworkPreferenceController, tetherPreferenceController);
wifiPreferenceController, mobileNetworkPreferenceController,
tetherPreferenceController);
provider.setListening(false);
verifyZeroInteractions(summaryLoader);
when(wifiPreferenceController.isAvailable()).thenReturn(true);
when(mobileNetworkPreferenceController.isAvailable()).thenReturn(false);
when(tetherPreferenceController.isAvailable()).thenReturn(false);