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

Commit 062a80f2 authored by Weng Su's avatar Weng Su Committed by Android (Google) Code Review
Browse files

Merge "Add Hotspot WPA3 Settings"

parents 90c976b8 b9c865b7
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -222,6 +222,10 @@

    <!-- Security types for wireless tether -->
    <string-array name="wifi_tether_security">
        <!-- Do not translate. -->
        <item>@string/wifi_security_sae</item>
        <!-- Do not translate. -->
        <item>@string/wifi_security_psk_sae</item>
        <!-- Do not translate. -->
        <item>@string/wifi_security_wpa2</item>
        <!-- Do not translate. -->
@@ -230,6 +234,10 @@

    <!-- Values for security type for wireless tether -->
    <string-array name="wifi_tether_security_values" translatable="false">
        <!-- Do not translate. -->
        <item>3</item>
        <!-- Do not translate. -->
        <item>2</item>
        <!-- Do not translate. -->
        <item>1</item>
        <!-- Do not translate. -->
+1 −1
Original line number Diff line number Diff line
@@ -355,7 +355,7 @@ public class AllInOneTetherSettings extends RestrictedDashboardFragment
    @Override
    public void onTetherConfigUpdated(AbstractPreferenceController controller) {
        final SoftApConfiguration config = buildNewConfig();
        mPasswordPreferenceController.updateVisibility(config.getSecurityType());
        mPasswordPreferenceController.setSecurityType(config.getSecurityType());
        mWifiManager.setSoftApConfiguration(config);

        if (mWifiManager.getWifiApState() == WifiManager.WIFI_AP_STATE_ENABLED) {
+3 −3
Original line number Diff line number Diff line
@@ -56,12 +56,12 @@ public class WifiUtils {
    }

    /**
     * Check if the WPA2-PSK hotspot password is valid.
     * Check if the hotspot password is valid.
     */
    public static boolean isHotspotWpa2PasswordValid(String password) {
    public static boolean isHotspotPasswordValid(String password, int securityType) {
        final SoftApConfiguration.Builder configBuilder = new SoftApConfiguration.Builder();
        try {
            configBuilder.setPassphrase(password, SoftApConfiguration.SECURITY_TYPE_WPA2_PSK);
            configBuilder.setPassphrase(password, securityType);
        } catch (IllegalArgumentException e) {
            return false;
        }
+10 −6
Original line number Diff line number Diff line
@@ -301,7 +301,11 @@ public class WifiDppUtils {

        final String ssid = removeFirstAndLastDoubleQuotes(softApConfiguration.getSsid());
        String security;
        if (softApConfiguration.getSecurityType() == SoftApConfiguration.SECURITY_TYPE_WPA2_PSK) {
        final int securityType = softApConfiguration.getSecurityType();
        if (securityType == SoftApConfiguration.SECURITY_TYPE_WPA3_SAE) {
            security = WifiQrCode.SECURITY_SAE;
        } else if (securityType == SoftApConfiguration.SECURITY_TYPE_WPA2_PSK
                || securityType == SoftApConfiguration.SECURITY_TYPE_WPA3_SAE_TRANSITION) {
            security = WifiQrCode.SECURITY_WPA_PSK;
        } else {
            security = WifiQrCode.SECURITY_NO_PASSWORD;
@@ -431,11 +435,11 @@ public class WifiDppUtils {

    private static boolean isSupportHotspotConfiguratorQrCodeGenerator(
            SoftApConfiguration softApConfiguration) {
        // QR code generator produces QR code with ZXing's Wi-Fi network config format,
        // it supports PSK and WEP and non security
        // KeyMgmt.NONE is for WEP or non security
        return softApConfiguration.getSecurityType() == SoftApConfiguration.SECURITY_TYPE_WPA2_PSK
                || softApConfiguration.getSecurityType() == SoftApConfiguration.SECURITY_TYPE_OPEN;
        final int securityType = softApConfiguration.getSecurityType();
        return securityType == SoftApConfiguration.SECURITY_TYPE_WPA3_SAE
                || securityType == SoftApConfiguration.SECURITY_TYPE_WPA3_SAE_TRANSITION
                || securityType == SoftApConfiguration.SECURITY_TYPE_WPA2_PSK
                || securityType == SoftApConfiguration.SECURITY_TYPE_OPEN;
    }

    private static boolean isSupportWifiDpp(Context context, int wifiEntrySecurity) {
+17 −6
Original line number Diff line number Diff line
@@ -37,12 +37,16 @@ import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;

import java.util.UUID;

/**
 * Controller for logic pertaining to the password of Wi-Fi tethering.
 */
public class WifiTetherPasswordPreferenceController extends WifiTetherBasePreferenceController
        implements ValidatedEditTextPreference.Validator {

    private static final String PREF_KEY = "wifi_tether_network_password";

    private String mPassword;
    private int mSecurityType;

    private final MetricsFeatureProvider mMetricsFeatureProvider;

@@ -68,13 +72,13 @@ public class WifiTetherPasswordPreferenceController extends WifiTetherBasePrefer
    @Override
    public void updateDisplay() {
        final SoftApConfiguration config = mWifiManager.getSoftApConfiguration();
        if (config == null
                || (config.getSecurityType() == SoftApConfiguration.SECURITY_TYPE_WPA2_PSK
                && TextUtils.isEmpty(config.getPassphrase()))) {
        if (config.getSecurityType() != SoftApConfiguration.SECURITY_TYPE_OPEN
                && TextUtils.isEmpty(config.getPassphrase())) {
            mPassword = generateRandomPassword();
        } else {
            mPassword = config.getPassphrase();
        }
        mSecurityType = config.getSecurityType();
        ((ValidatedEditTextPreference) mPreference).setValidator(this);
        ((ValidatedEditTextPreference) mPreference).setIsPassword(true);
        ((ValidatedEditTextPreference) mPreference).setIsSummaryPassword(true);
@@ -105,20 +109,27 @@ public class WifiTetherPasswordPreferenceController extends WifiTetherBasePrefer
        // don't actually overwrite unless we get a new config in case it was accidentally toggled.
        if (securityType == SoftApConfiguration.SECURITY_TYPE_OPEN) {
            return "";
        } else if (!isTextValid(mPassword)) {
        } else if (!WifiUtils.isHotspotPasswordValid(mPassword, securityType)) {
            mPassword = generateRandomPassword();
            updatePasswordDisplay((EditTextPreference) mPreference);
        }
        return mPassword;
    }

    public void updateVisibility(int securityType) {
    /**
     * This method set the security type of user selection. Then the controller will based on the
     * security type changed to update the password changed on the preference.
     *
     * @param securityType The security type of SoftApConfiguration.
     */
    public void setSecurityType(int securityType) {
        mSecurityType = securityType;
        mPreference.setVisible(securityType != SoftApConfiguration.SECURITY_TYPE_OPEN);
    }

    @Override
    public boolean isTextValid(String value) {
        return WifiUtils.isHotspotWpa2PasswordValid(value);
        return WifiUtils.isHotspotPasswordValid(value, mSecurityType);
    }

    private static String generateRandomPassword() {
Loading