Merge "Fixed speed selection lost when changing password in Wi-Fi hotspot settings" into udc-dev am: 32602794ed

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/22885040

Change-Id: I16732ae62948cd37f654d03739fc21973f9c754a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
TreeHugger Robot
2023-04-27 19:25:08 +00:00
committed by Automerger Merge Worker
2 changed files with 44 additions and 6 deletions

View File

@@ -80,11 +80,14 @@ public class WifiTetherSettings extends RestrictedDashboardFragment
@VisibleForTesting @VisibleForTesting
SettingsMainSwitchBar mMainSwitchBar; SettingsMainSwitchBar mMainSwitchBar;
private WifiTetherSwitchBarController mSwitchBarController; private WifiTetherSwitchBarController mSwitchBarController;
private WifiTetherSSIDPreferenceController mSSIDPreferenceController; @VisibleForTesting
private WifiTetherPasswordPreferenceController mPasswordPreferenceController; WifiTetherSSIDPreferenceController mSSIDPreferenceController;
@VisibleForTesting
WifiTetherPasswordPreferenceController mPasswordPreferenceController;
private WifiTetherSecurityPreferenceController mSecurityPreferenceController; private WifiTetherSecurityPreferenceController mSecurityPreferenceController;
private WifiTetherMaximizeCompatibilityPreferenceController mMaxCompatibilityPrefController; private WifiTetherMaximizeCompatibilityPreferenceController mMaxCompatibilityPrefController;
private WifiTetherAutoOffPreferenceController mWifiTetherAutoOffPreferenceController; @VisibleForTesting
WifiTetherAutoOffPreferenceController mWifiTetherAutoOffPreferenceController;
private boolean mUnavailable; private boolean mUnavailable;
private WifiRestriction mWifiRestriction; private WifiRestriction mWifiRestriction;
@@ -269,10 +272,12 @@ public class WifiTetherSettings extends RestrictedDashboardFragment
setLoading(restarting, false); setLoading(restarting, false);
} }
private SoftApConfiguration buildNewConfig() { @VisibleForTesting
SoftApConfiguration.Builder configBuilder = new SoftApConfiguration.Builder(); SoftApConfiguration buildNewConfig() {
SoftApConfiguration currentConfig = mWifiTetherViewModel.getSoftApConfiguration();
SoftApConfiguration.Builder configBuilder = new SoftApConfiguration.Builder(currentConfig);
int securityType = (mWifiTetherViewModel.isSpeedFeatureAvailable()) int securityType = (mWifiTetherViewModel.isSpeedFeatureAvailable())
? mWifiTetherViewModel.getSoftApConfiguration().getSecurityType() ? currentConfig.getSecurityType()
: mSecurityPreferenceController.getSecurityType(); : mSecurityPreferenceController.getSecurityType();
configBuilder.setSsid(mSSIDPreferenceController.getSSID()); configBuilder.setSsid(mSSIDPreferenceController.getSSID());
if (securityType != SoftApConfiguration.SECURITY_TYPE_OPEN) { if (securityType != SoftApConfiguration.SECURITY_TYPE_OPEN) {

View File

@@ -16,10 +16,12 @@
package com.android.settings.wifi.tether; package com.android.settings.wifi.tether;
import static android.net.wifi.SoftApConfiguration.SECURITY_TYPE_WPA3_SAE;
import static android.view.View.INVISIBLE; import static android.view.View.INVISIBLE;
import static android.view.View.VISIBLE; import static android.view.View.VISIBLE;
import static com.android.settings.wifi.WifiUtils.setCanShowWifiHotspotCached; import static com.android.settings.wifi.WifiUtils.setCanShowWifiHotspotCached;
import static com.android.settings.wifi.repository.WifiHotspotRepository.BAND_2GHZ_5GHZ_6GHZ;
import static com.android.settings.wifi.tether.WifiTetherSettings.KEY_WIFI_HOTSPOT_SECURITY; import static com.android.settings.wifi.tether.WifiTetherSettings.KEY_WIFI_HOTSPOT_SECURITY;
import static com.android.settings.wifi.tether.WifiTetherSettings.KEY_WIFI_HOTSPOT_SPEED; import static com.android.settings.wifi.tether.WifiTetherSettings.KEY_WIFI_HOTSPOT_SPEED;
@@ -41,6 +43,7 @@ import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.TetheringManager; import android.net.TetheringManager;
import android.net.wifi.SoftApConfiguration;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.UserManager; import android.os.UserManager;
@@ -84,6 +87,8 @@ public class WifiTetherSettingsTest {
private static final int XML_RES = R.xml.wifi_tether_settings; private static final int XML_RES = R.xml.wifi_tether_settings;
private static final String[] WIFI_REGEXS = {"wifi_regexs"}; private static final String[] WIFI_REGEXS = {"wifi_regexs"};
private static final String SSID = "ssid";
private static final String PASSWORD = "password";
@Rule @Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule(); public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@@ -117,6 +122,12 @@ public class WifiTetherSettingsTest {
private LiveData<Integer> mSpeedSummary; private LiveData<Integer> mSpeedSummary;
@Mock @Mock
private SettingsMainSwitchBar mMainSwitchBar; private SettingsMainSwitchBar mMainSwitchBar;
@Mock
private WifiTetherSSIDPreferenceController mSSIDPreferenceController;
@Mock
private WifiTetherPasswordPreferenceController mPasswordPreferenceController;
@Mock
private WifiTetherAutoOffPreferenceController mWifiTetherAutoOffPreferenceController;
private WifiTetherSettings mSettings; private WifiTetherSettings mSettings;
@@ -143,6 +154,12 @@ public class WifiTetherSettingsTest {
mSettings = spy(new WifiTetherSettings(mWifiRestriction)); mSettings = spy(new WifiTetherSettings(mWifiRestriction));
mSettings.mMainSwitchBar = mMainSwitchBar; mSettings.mMainSwitchBar = mMainSwitchBar;
mSettings.mSSIDPreferenceController = mSSIDPreferenceController;
when(mSSIDPreferenceController.getSSID()).thenReturn(SSID);
mSettings.mPasswordPreferenceController = mPasswordPreferenceController;
when(mPasswordPreferenceController.getPasswordValidated(anyInt())).thenReturn(PASSWORD);
mSettings.mWifiTetherAutoOffPreferenceController = mWifiTetherAutoOffPreferenceController;
when(mWifiTetherAutoOffPreferenceController.isEnabled()).thenReturn(true);
mSettings.mWifiTetherViewModel = mWifiTetherViewModel; mSettings.mWifiTetherViewModel = mWifiTetherViewModel;
when(mSettings.findPreference(KEY_WIFI_HOTSPOT_SECURITY)).thenReturn(mWifiHotspotSecurity); when(mSettings.findPreference(KEY_WIFI_HOTSPOT_SECURITY)).thenReturn(mWifiHotspotSecurity);
when(mSettings.findPreference(KEY_WIFI_HOTSPOT_SPEED)).thenReturn(mWifiHotspotSpeed); when(mSettings.findPreference(KEY_WIFI_HOTSPOT_SPEED)).thenReturn(mWifiHotspotSpeed);
@@ -326,6 +343,22 @@ public class WifiTetherSettingsTest {
verify(mSettings).setLoading(true, false); verify(mSettings).setLoading(true, false);
} }
@Test
public void buildNewConfig_speedFeatureIsAvailableAndPasswordChanged_bandShouldNotBeLost() {
String newPassword = "new" + PASSWORD;
SoftApConfiguration currentConfig = new SoftApConfiguration.Builder()
.setPassphrase(PASSWORD, SECURITY_TYPE_WPA3_SAE)
.setBand(BAND_2GHZ_5GHZ_6GHZ)
.build();
when(mWifiTetherViewModel.getSoftApConfiguration()).thenReturn(currentConfig);
when(mWifiTetherViewModel.isSpeedFeatureAvailable()).thenReturn(true);
when(mPasswordPreferenceController.getPasswordValidated(anyInt())).thenReturn(newPassword);
SoftApConfiguration newConfig = mSettings.buildNewConfig();
assertThat(newConfig.getBand()).isEqualTo(currentConfig.getBand());
}
@Test @Test
public void onRestartingChanged_restartingFalse_setLoadingFalse() { public void onRestartingChanged_restartingFalse_setLoadingFalse() {
doNothing().when(mSettings).setLoading(anyBoolean(), anyBoolean()); doNothing().when(mSettings).setLoading(anyBoolean(), anyBoolean());