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

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

Merge "Add Hotspot WPA3 Settings"

parents 65ced148 e0062af1
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) {
+8 −6
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ public class WifiTetherPasswordPreferenceController extends WifiTetherBasePrefer
    private static final String PREF_KEY = "wifi_tether_network_password";

    private String mPassword;
    private int mSecurityType;

    private final MetricsFeatureProvider mMetricsFeatureProvider;

@@ -68,13 +69,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 +106,21 @@ 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) {
    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