Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f7d8f048 authored by Weng Su's avatar Weng Su
Browse files

Fixed unable to enable hotspot with Security None

- Due to the design adjustment, the default value of SoftApConfiguration is not Security None, so the update of Security None cannot be omitted.

Bug: 283762826
Test: Manual test
atest -c WifiTetherSettingsTest

Change-Id: I07d18b8f73ab8190152332c01814a4bd72cf28d6
parent 71dd391e
Loading
Loading
Loading
Loading
+13 −10
Original line number Diff line number Diff line
@@ -84,8 +84,10 @@ public class WifiTetherSettings extends RestrictedDashboardFragment
    WifiTetherSSIDPreferenceController mSSIDPreferenceController;
    @VisibleForTesting
    WifiTetherPasswordPreferenceController mPasswordPreferenceController;
    private WifiTetherSecurityPreferenceController mSecurityPreferenceController;
    private WifiTetherMaximizeCompatibilityPreferenceController mMaxCompatibilityPrefController;
    @VisibleForTesting
    WifiTetherSecurityPreferenceController mSecurityPreferenceController;
    @VisibleForTesting
    WifiTetherMaximizeCompatibilityPreferenceController mMaxCompatibilityPrefController;
    @VisibleForTesting
    WifiTetherAutoOffPreferenceController mWifiTetherAutoOffPreferenceController;

@@ -276,15 +278,16 @@ public class WifiTetherSettings extends RestrictedDashboardFragment
    SoftApConfiguration buildNewConfig() {
        SoftApConfiguration currentConfig = mWifiTetherViewModel.getSoftApConfiguration();
        SoftApConfiguration.Builder configBuilder = new SoftApConfiguration.Builder(currentConfig);
        int securityType = (mWifiTetherViewModel.isSpeedFeatureAvailable())
        configBuilder.setSsid(mSSIDPreferenceController.getSSID());
        int securityType =
                mWifiTetherViewModel.isSpeedFeatureAvailable()
                        ? currentConfig.getSecurityType()
                        : mSecurityPreferenceController.getSecurityType();
        configBuilder.setSsid(mSSIDPreferenceController.getSSID());
        if (securityType != SoftApConfiguration.SECURITY_TYPE_OPEN) {
            configBuilder.setPassphrase(
                    mPasswordPreferenceController.getPasswordValidated(securityType),
                    securityType);
        }
        String passphrase =
                securityType == SoftApConfiguration.SECURITY_TYPE_OPEN
                        ? null
                        : mPasswordPreferenceController.getPasswordValidated(securityType);
        configBuilder.setPassphrase(passphrase, securityType);
        if (!mWifiTetherViewModel.isSpeedFeatureAvailable()) {
            mMaxCompatibilityPrefController.setupMaximizeCompatibility(configBuilder);
        }
+25 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.settings.wifi.tether;

import static android.net.wifi.SoftApConfiguration.SECURITY_TYPE_OPEN;
import static android.net.wifi.SoftApConfiguration.SECURITY_TYPE_WPA3_SAE;
import static android.view.View.INVISIBLE;
import static android.view.View.VISIBLE;
@@ -125,9 +126,13 @@ public class WifiTetherSettingsTest {
    @Mock
    private WifiTetherSSIDPreferenceController mSSIDPreferenceController;
    @Mock
    private WifiTetherSecurityPreferenceController mSecurityPreferenceController;
    @Mock
    private WifiTetherPasswordPreferenceController mPasswordPreferenceController;
    @Mock
    private WifiTetherAutoOffPreferenceController mWifiTetherAutoOffPreferenceController;
    @Mock
    private WifiTetherMaximizeCompatibilityPreferenceController mMaxCompatibilityPrefController;

    private WifiTetherSettings mSettings;

@@ -156,10 +161,13 @@ public class WifiTetherSettingsTest {
        mSettings.mMainSwitchBar = mMainSwitchBar;
        mSettings.mSSIDPreferenceController = mSSIDPreferenceController;
        when(mSSIDPreferenceController.getSSID()).thenReturn(SSID);
        mSettings.mSecurityPreferenceController = mSecurityPreferenceController;
        when(mSecurityPreferenceController.getSecurityType()).thenReturn(SECURITY_TYPE_WPA3_SAE);
        mSettings.mPasswordPreferenceController = mPasswordPreferenceController;
        when(mPasswordPreferenceController.getPasswordValidated(anyInt())).thenReturn(PASSWORD);
        mSettings.mWifiTetherAutoOffPreferenceController = mWifiTetherAutoOffPreferenceController;
        when(mWifiTetherAutoOffPreferenceController.isEnabled()).thenReturn(true);
        mSettings.mMaxCompatibilityPrefController = mMaxCompatibilityPrefController;
        mSettings.mWifiTetherViewModel = mWifiTetherViewModel;
        when(mSettings.findPreference(KEY_WIFI_HOTSPOT_SECURITY)).thenReturn(mWifiHotspotSecurity);
        when(mSettings.findPreference(KEY_WIFI_HOTSPOT_SPEED)).thenReturn(mWifiHotspotSpeed);
@@ -359,6 +367,23 @@ public class WifiTetherSettingsTest {
        assertThat(newConfig.getBand()).isEqualTo(currentConfig.getBand());
    }

    @Test
    public void buildNewConfig_securityTypeChangeToOpen_setSecurityTypeCorrectly() {
        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(false);
        doNothing().when(mMaxCompatibilityPrefController)
                .setupMaximizeCompatibility(any(SoftApConfiguration.Builder.class));

        when(mSecurityPreferenceController.getSecurityType()).thenReturn(SECURITY_TYPE_OPEN);
        SoftApConfiguration newConfig = mSettings.buildNewConfig();

        assertThat(newConfig.getSecurityType()).isEqualTo(SECURITY_TYPE_OPEN);
    }

    @Test
    public void onRestartingChanged_restartingFalse_setLoadingFalse() {
        doNothing().when(mSettings).setLoading(anyBoolean(), anyBoolean());