diff --git a/res/values/strings.xml b/res/values/strings.xml index d06e8af2556..ed9b5059177 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -2508,9 +2508,11 @@ When no devices are connected - Maximize compatibility - - This may reduce speed for devices connected to this hotspot and use more power + Extend compatibility + + Helps other devices find this hotspot. Reduces hotspot connection speed. + + Helps other devices find this hotspot. Increases battery usage. Turning hotspot on\u2026 diff --git a/res/xml/wifi_tether_settings.xml b/res/xml/wifi_tether_settings.xml index 8648cff0f43..21f347bb021 100644 --- a/res/xml/wifi_tether_settings.xml +++ b/res/xml/wifi_tether_settings.xml @@ -44,6 +44,5 @@ + android:title="@string/wifi_hotspot_maximize_compatibility"/> diff --git a/src/com/android/settings/wifi/tether/WifiTetherMaximizeCompatibilityPreferenceController.java b/src/com/android/settings/wifi/tether/WifiTetherMaximizeCompatibilityPreferenceController.java index 41532d00e70..67d1f49a5f9 100644 --- a/src/com/android/settings/wifi/tether/WifiTetherMaximizeCompatibilityPreferenceController.java +++ b/src/com/android/settings/wifi/tether/WifiTetherMaximizeCompatibilityPreferenceController.java @@ -24,6 +24,8 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.SwitchPreference; +import com.android.settings.R; + /** * This controller helps to manage the state of maximize compatibility switch preference. */ @@ -53,6 +55,9 @@ public class WifiTetherMaximizeCompatibilityPreferenceController extends } mPreference.setEnabled(is5GhzBandSupported()); ((SwitchPreference) mPreference).setChecked(mIsChecked); + mPreference.setSummary(mWifiManager.isBridgedApConcurrencySupported() + ? R.string.wifi_hotspot_maximize_compatibility_dual_ap_summary + : R.string.wifi_hotspot_maximize_compatibility_single_ap_summary); } @Override diff --git a/tests/unit/src/com/android/settings/wifi/tether/WifiTetherMaximizeCompatibilityPreferenceControllerTest.java b/tests/unit/src/com/android/settings/wifi/tether/WifiTetherMaximizeCompatibilityPreferenceControllerTest.java index 072978040b9..0ee9e70fe71 100644 --- a/tests/unit/src/com/android/settings/wifi/tether/WifiTetherMaximizeCompatibilityPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/wifi/tether/WifiTetherMaximizeCompatibilityPreferenceControllerTest.java @@ -34,6 +34,8 @@ import androidx.preference.SwitchPreference; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; +import com.android.settings.testutils.ResourcesUtils; + import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -52,29 +54,30 @@ public class WifiTetherMaximizeCompatibilityPreferenceControllerTest { @Mock private WifiTetherBasePreferenceController.OnTetherConfigUpdateListener mListener; + private Context mContext; private WifiTetherMaximizeCompatibilityPreferenceController mController; private SwitchPreference mPreference; private SoftApConfiguration mConfig; @Before public void setUp() { - final Context context = spy(ApplicationProvider.getApplicationContext()); + mContext = spy(ApplicationProvider.getApplicationContext()); mConfig = new SoftApConfiguration.Builder() .setSsid("test_Ssid") .setPassphrase(null, SoftApConfiguration.SECURITY_TYPE_OPEN) .setBridgedModeOpportunisticShutdownEnabled(true) .build(); - doReturn(mWifiManager).when(context).getSystemService(Context.WIFI_SERVICE); + doReturn(mWifiManager).when(mContext).getSystemService(Context.WIFI_SERVICE); doReturn(true).when(mWifiManager).isBridgedApConcurrencySupported(); doReturn(mConfig).when(mWifiManager).getSoftApConfiguration(); - mController = new WifiTetherMaximizeCompatibilityPreferenceController(context, mListener); + mController = new WifiTetherMaximizeCompatibilityPreferenceController(mContext, mListener); if (Looper.myLooper() == null) { Looper.prepare(); } - final PreferenceManager preferenceManager = new PreferenceManager(context); - final PreferenceScreen screen = preferenceManager.createPreferenceScreen(context); - mPreference = new SwitchPreference(context); + final PreferenceManager preferenceManager = new PreferenceManager(mContext); + final PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext); + mPreference = new SwitchPreference(mContext); mPreference.setKey(WifiTetherMaximizeCompatibilityPreferenceController.PREF_KEY); screen.addPreference(mPreference); mController.displayPreference(screen); @@ -104,6 +107,26 @@ public class WifiTetherMaximizeCompatibilityPreferenceControllerTest { assertThat(mPreference.isEnabled()).isEqualTo(false); } + @Test + public void updateDisplay_notSupportedBridgedApConcurrency_setSingleApSummary() { + doReturn(false).when(mWifiManager).isBridgedApConcurrencySupported(); + + mController.updateDisplay(); + + assertThat(mPreference.getSummary()).isEqualTo(ResourcesUtils.getResourcesString(mContext, + "wifi_hotspot_maximize_compatibility_single_ap_summary")); + } + + @Test + public void updateDisplay_supportedBridgedApConcurrency_setDualApSummary() { + doReturn(true).when(mWifiManager).isBridgedApConcurrencySupported(); + + mController.updateDisplay(); + + assertThat(mPreference.getSummary()).isEqualTo(ResourcesUtils.getResourcesString(mContext, + "wifi_hotspot_maximize_compatibility_dual_ap_summary")); + } + @Test public void updateDisplay_supported5GHzBandAndCountryCodeIsNotNull_setPreferenceEnabled() { doReturn(true).when(mWifiManager).is5GHzBandSupported();