From f5aa59e99efab30f195662d0e7ce6471420a23e9 Mon Sep 17 00:00:00 2001 From: jackqdyulei Date: Tue, 14 Aug 2018 17:58:44 -0700 Subject: [PATCH] Implement createPrefControllers for tether page So tether preferences could show up in search Change-Id: I234680aff878451df2a634cb58538bb2627d2eff Fixes: 112599941 Test: Robotests --- .../wifi/tether/WifiTetherSettings.java | 32 ++++++++++++------- .../testutils/shadow/ShadowWifiManager.java | 5 +++ .../wifi/tether/WifiTetherSettingsTest.java | 19 ++++++++--- 3 files changed, 41 insertions(+), 15 deletions(-) diff --git a/src/com/android/settings/wifi/tether/WifiTetherSettings.java b/src/com/android/settings/wifi/tether/WifiTetherSettings.java index 16908d62a1a..47f3ceda391 100644 --- a/src/com/android/settings/wifi/tether/WifiTetherSettings.java +++ b/src/com/android/settings/wifi/tether/WifiTetherSettings.java @@ -99,6 +99,11 @@ public class WifiTetherSettings extends RestrictedDashboardFragment super.onAttach(context); mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); mTetherChangeReceiver = new TetherChangeReceiver(); + + mSSIDPreferenceController = use(WifiTetherSSIDPreferenceController.class); + mSecurityPreferenceController = use(WifiTetherSecurityPreferenceController.class); + mPasswordPreferenceController = use(WifiTetherPasswordPreferenceController.class); + mApBandPreferenceController = use(WifiTetherApBandPreferenceController.class); } @Override @@ -140,18 +145,17 @@ public class WifiTetherSettings extends RestrictedDashboardFragment @Override protected List createPreferenceControllers(Context context) { - final List controllers = new ArrayList<>(); - mSSIDPreferenceController = new WifiTetherSSIDPreferenceController(context, this); - mSecurityPreferenceController = new WifiTetherSecurityPreferenceController(context, this); - mPasswordPreferenceController = new WifiTetherPasswordPreferenceController(context, this); - mApBandPreferenceController = new WifiTetherApBandPreferenceController(context, this); + return buildPreferenceControllers(context, this::onTetherConfigUpdated); + } + + private static List buildPreferenceControllers(Context context, + WifiTetherBasePreferenceController.OnTetherConfigUpdateListener listener) { + final List controllers = new ArrayList<>(); + controllers.add(new WifiTetherSSIDPreferenceController(context, listener)); + controllers.add(new WifiTetherSecurityPreferenceController(context, listener)); + controllers.add(new WifiTetherPasswordPreferenceController(context, listener)); + controllers.add(new WifiTetherApBandPreferenceController(context, listener)); - controllers.add(mSSIDPreferenceController); - controllers.add(mSecurityPreferenceController); - controllers.add(mPasswordPreferenceController); - controllers.add(mApBandPreferenceController); - controllers.add( - new WifiTetherAutoOffPreferenceController(context, KEY_WIFI_TETHER_AUTO_OFF)); return controllers; } @@ -227,6 +231,12 @@ public class WifiTetherSettings extends RestrictedDashboardFragment keys.add(KEY_WIFI_TETHER_SCREEN); return keys; } + + @Override + public List createPreferenceControllers( + Context context) { + return buildPreferenceControllers(context, null /* listener */); + } }; @VisibleForTesting diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowWifiManager.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowWifiManager.java index 65f92a32727..d9bc486be5d 100644 --- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowWifiManager.java +++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowWifiManager.java @@ -52,6 +52,11 @@ public class ShadowWifiManager extends org.robolectric.shadows.ShadowWifiManager return Collections.emptyList(); } + @Implementation + public boolean isDualModeSupported() { + return false; + } + public static ShadowWifiManager get() { return Shadow.extract(application.getSystemService(WifiManager.class)); } diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java index d376775d1a3..4b765e845ed 100644 --- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java +++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java @@ -17,6 +17,7 @@ package com.android.settings.wifi.tether; 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.when; @@ -27,6 +28,7 @@ import android.os.UserHandle; import android.os.UserManager; import com.android.settings.testutils.SettingsRobolectricTestRunner; +import com.android.settings.testutils.shadow.ShadowWifiManager; import org.junit.Before; import org.junit.Test; @@ -34,12 +36,15 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; import java.util.ArrayList; import java.util.List; @RunWith(SettingsRobolectricTestRunner.class) +@Config(shadows = {ShadowWifiManager.class}) public class WifiTetherSettingsTest { + private static final String[] WIFI_REGEXS = {"wifi_regexs"}; private Context mContext; @@ -55,12 +60,12 @@ public class WifiTetherSettingsTest { MockitoAnnotations.initMocks(this); doReturn(mConnectivityManager) .when(mContext).getSystemService(Context.CONNECTIVITY_SERVICE); - doReturn(mUserManager) - .when(mContext).getSystemService(Context.USER_SERVICE); + doReturn(WIFI_REGEXS).when(mConnectivityManager).getTetherableWifiRegexs(); + doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE); } @Test - public void testWifiTetherNonIndexableKeys_tetherAvailable_keysNotReturned() { + public void wifiTetherNonIndexableKeys_tetherAvailable_keysNotReturned() { // To let TetherUtil.isTetherAvailable return true, select one of the combinations setupIsTetherAvailable(true); @@ -74,7 +79,7 @@ public class WifiTetherSettingsTest { } @Test - public void testWifiTetherNonIndexableKeys_tetherNotAvailable_keysReturned() { + public void wifiTetherNonIndexableKeys_tetherNotAvailable_keysReturned() { // To let TetherUtil.isTetherAvailable return false, select one of the combinations setupIsTetherAvailable(false); @@ -87,6 +92,12 @@ public class WifiTetherSettingsTest { assertThat(niks).contains(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_AP_BAND); } + @Test + public void createPreferenceControllers_notEmpty() { + assertThat(WifiTetherSettings.SEARCH_INDEX_DATA_PROVIDER.getPreferenceControllers(mContext)) + .isNotEmpty(); + } + private void setupIsTetherAvailable(boolean returnValue) { when(mConnectivityManager.isTetheringSupported()).thenReturn(true);