From 561d041f7b0af57bb3c05acd27104f197efe8400 Mon Sep 17 00:00:00 2001 From: lesl Date: Thu, 6 Feb 2020 16:47:46 +0800 Subject: [PATCH] tether setting: Remove dual mode check for band convert Some conutries don't support 5G only hotspot. Thus band convert should not only work for dual mode device. It should general design since it will be country dependency. Bug: 148924644 Bug: 148764406 Test: Manual Test, use command to force country 1. adb root && adb shell cmd wifi force-country-code enabled GB 2. Change Band Setting to 5G prefer Turn on hotspot to check log and make sure it will enable succeed. Test:make RunSettingsRoboTests ROBOTEST_FILTER=CodeInspectionTest Change-Id: I7828c62ef399244531a72aa35c89b71549e0d623 --- res/values/arrays.xml | 16 ++------- .../WifiTetherApBandPreferenceController.java | 25 ++++---------- ...iTetherApBandPreferenceControllerTest.java | 34 ++----------------- 3 files changed, 12 insertions(+), 63 deletions(-) diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 9c3a622df00..3c6c3c7d90c 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -276,24 +276,14 @@ Require all non-trusted certificate statuses - + - - 1 - 2 - - - - @string/wifi_ap_choose_2G - @string/wifi_ap_choose_5G - - - + 1 3 - + @string/wifi_ap_choose_2G @string/wifi_ap_prefer_5G diff --git a/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceController.java b/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceController.java index 3a571d7d38b..8a4be105986 100644 --- a/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceController.java +++ b/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceController.java @@ -39,12 +39,10 @@ public class WifiTetherApBandPreferenceController extends WifiTetherBasePreferen private String[] mBandEntries; private String[] mBandSummaries; private int mBandIndex; - private boolean isDualMode; public WifiTetherApBandPreferenceController(Context context, OnTetherConfigUpdateListener listener) { super(context, listener); - isDualMode = mWifiManager.isStaApConcurrencySupported(); updatePreferenceEntries(); } @@ -106,16 +104,12 @@ public class WifiTetherApBandPreferenceController extends WifiTetherBasePreferen private int validateSelection(int band) { // unsupported states: - // 1: no dual mode means we can't have multiband - default to 5GHZ + // 1: BAND_5GHZ only - include 2GHZ since some of countries doesn't support 5G hotspot // 2: no 5 GHZ support means we can't have BAND_5GHZ - default to 2GHZ - // 3: With Dual mode support we can't have BAND_5GHZ only - include 2GHZ - if (!isDualMode - && ((band & SoftApConfiguration.BAND_5GHZ) != 0) - && ((band & SoftApConfiguration.BAND_2GHZ) != 0)) { - return SoftApConfiguration.BAND_5GHZ; - } else if (!is5GhzBandSupported() && SoftApConfiguration.BAND_5GHZ == band) { - return SoftApConfiguration.BAND_2GHZ; - } else if (isDualMode && SoftApConfiguration.BAND_5GHZ == band) { + if (SoftApConfiguration.BAND_5GHZ == band) { + if (!is5GhzBandSupported()) { + return SoftApConfiguration.BAND_2GHZ; + } return SoftApConfiguration.BAND_5GHZ | SoftApConfiguration.BAND_2GHZ; } @@ -125,13 +119,8 @@ public class WifiTetherApBandPreferenceController extends WifiTetherBasePreferen @VisibleForTesting void updatePreferenceEntries() { Resources res = mContext.getResources(); - int entriesRes = R.array.wifi_ap_band_config_full; - int summariesRes = R.array.wifi_ap_band_summary_full; - // change the list options if this is a dual mode device - if (isDualMode) { - entriesRes = R.array.wifi_ap_band_dual_mode; - summariesRes = R.array.wifi_ap_band_dual_mode_summary; - } + int entriesRes = R.array.wifi_ap_band; + int summariesRes = R.array.wifi_ap_band_summary; mBandEntries = res.getStringArray(entriesRes); mBandSummaries = res.getStringArray(summariesRes); } diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceControllerTest.java index b5645b4a3b2..32cec6839a2 100644 --- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceControllerTest.java @@ -81,7 +81,6 @@ public class WifiTetherApBandPreferenceControllerTest { when(mScreen.findPreference(anyString())).thenReturn(mPreference); when(mWifiManager.getSoftApConfiguration()).thenReturn( new SoftApConfiguration.Builder().build()); - when(mWifiManager.isStaApConcurrencySupported()).thenReturn(false); mController = new WifiTetherApBandPreferenceController(mContext, mListener); } @@ -90,9 +89,8 @@ public class WifiTetherApBandPreferenceControllerTest { public void display_5GhzSupported_shouldDisplayFullList() { when(mWifiManager.getCountryCode()).thenReturn("US"); when(mWifiManager.is5GHzBandSupported()).thenReturn(true); - when(mWifiManager.isStaApConcurrencySupported()).thenReturn(true); - // Create a new instance to pick the proper value of isDualModeSupported() + // Create a new instance mController = new WifiTetherApBandPreferenceController(mContext, mListener); mController.displayPreference(mScreen); @@ -126,38 +124,10 @@ public class WifiTetherApBandPreferenceControllerTest { } @Test - public void changePreference_noDualModeWith5G_shouldUpdateValue() { + public void changePreference_With5G_shouldUpdateValue() { when(mWifiManager.getCountryCode()).thenReturn("US"); when(mWifiManager.is5GHzBandSupported()).thenReturn(true); - mController.displayPreference(mScreen); - - // 'Auto' option should be prevented from being set since - // it is invalid for this configuration - mController.onPreferenceChange(mPreference, VAL_2_5_GHZ_STR); - assertThat(mController.getBandIndex()).isEqualTo(VAL_5GHZ_INT); - assertThat(mPreference.getSummary()).isEqualTo(FIVE_GHZ_STRING); - verify(mListener, times(1)).onTetherConfigUpdated(mController); - - // set to 5 Ghz - mController.onPreferenceChange(mPreference, VAL_5GHZ_STR); - assertThat(mController.getBandIndex()).isEqualTo(VAL_5GHZ_INT); - assertThat(mPreference.getSummary()).isEqualTo(FIVE_GHZ_STRING); - verify(mListener, times(2)).onTetherConfigUpdated(mController); - - // set to 2 Ghz - mController.onPreferenceChange(mPreference, VAL_2GHZ_STR); - assertThat(mController.getBandIndex()).isEqualTo(VAL_2GHZ_INT); - assertThat(mPreference.getSummary()).isEqualTo(TWO_GHZ_STRING); - verify(mListener, times(3)).onTetherConfigUpdated(mController); - } - - @Test - public void changePreference_dualModeWith5G_shouldUpdateValue() { - when(mWifiManager.getCountryCode()).thenReturn("US"); - when(mWifiManager.is5GHzBandSupported()).thenReturn(true); - when(mWifiManager.isStaApConcurrencySupported()).thenReturn(true); - // Create a new instance to pick the proper value of isDualModeSupported() mController = new WifiTetherApBandPreferenceController(mContext, mListener);