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

Commit 220936ad authored by Arc Wang's avatar Arc Wang Committed by Android (Google) Code Review
Browse files

Merge "[Wi-Fi] Fix transition mode problems"

parents 821db5c0 5f23a436
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -220,7 +220,7 @@ public class NetworkRequestDialogFragment extends NetworkRequestDialogBaseFragme
        super.onResume();

        if (mFilterWifiTracker == null) {
            mFilterWifiTracker = new FilterWifiTracker(getActivity(), getSettingsLifecycle());
            mFilterWifiTracker = new FilterWifiTracker(getContext(), getSettingsLifecycle());
        }
        mFilterWifiTracker.onResume();
    }
@@ -331,11 +331,13 @@ public class NetworkRequestDialogFragment extends NetworkRequestDialogBaseFragme
    final class FilterWifiTracker {
        private final List<String> mAccessPointKeys;
        private final WifiTracker mWifiTracker;
        private final Context mContext;

        public FilterWifiTracker(Context context, Lifecycle lifecycle) {
            mWifiTracker = WifiTrackerFactory.create(context, mWifiListener,
                    lifecycle, /* includeSaved */ true, /* includeScans */ true);
            mAccessPointKeys = new ArrayList<>();
            mContext = context;
        }

        /**
@@ -344,7 +346,7 @@ public class NetworkRequestDialogFragment extends NetworkRequestDialogBaseFragme
         */
        public void updateKeys(List<ScanResult> scanResults) {
            for (ScanResult scanResult : scanResults) {
                final String key = AccessPoint.getKey(scanResult);
                final String key = AccessPoint.getKey(mContext, scanResult);
                if (!mAccessPointKeys.contains(key)) {
                    mAccessPointKeys.add(key);
                }
+1 −33
Original line number Diff line number Diff line
@@ -607,35 +607,6 @@ public class WifiConfigController implements TextWatcher,
        }
    }

    /**
     * Special handling for WPA2/WPA3 and OWE in Transition mode: The key
     * SECURITY_PSK_SAE_TRANSITION and SECURITY_OWE_TRANSITION are pseudo keys which result by the
     * scan results, but never appears in the saved networks.
     * A saved network is either WPA3 for supporting devices or WPA2 for non-supporting devices,
     * or, OWE for supporting devices or Open for non-supporting devices.
     *
     * @param accessPointSecurity Access point current security type
     * @return Converted security type (if required)
     */
    private int convertSecurityTypeForMatching(int accessPointSecurity) {
        if (accessPointSecurity == AccessPoint.SECURITY_PSK_SAE_TRANSITION) {
            if (mWifiManager.isWpa3SaeSupported()) {
                return AccessPoint.SECURITY_SAE;
            } else {
                return AccessPoint.SECURITY_PSK;
            }
        }
        if (accessPointSecurity == AccessPoint.SECURITY_OWE_TRANSITION) {
            if (mWifiManager.isEnhancedOpenSupported()) {
                return AccessPoint.SECURITY_OWE;
            } else {
                return AccessPoint.SECURITY_NONE;
            }
        }

        return accessPointSecurity;
    }

    public WifiConfiguration getConfig() {
        if (mMode == WifiConfigUiBase.MODE_VIEW) {
            return null;
@@ -658,8 +629,6 @@ public class WifiConfigController implements TextWatcher,

        config.shared = mSharedCheckBox.isChecked();

        mAccessPointSecurity = convertSecurityTypeForMatching(mAccessPointSecurity);

        switch (mAccessPointSecurity) {
            case AccessPoint.SECURITY_NONE:
                config.allowedKeyManagement.set(KeyMgmt.NONE);
@@ -1017,8 +986,7 @@ public class WifiConfigController implements TextWatcher,

    private void showSecurityFields(boolean refreshEapMethods, boolean refreshCertificates) {
        if (mAccessPointSecurity == AccessPoint.SECURITY_NONE ||
                mAccessPointSecurity == AccessPoint.SECURITY_OWE ||
                mAccessPointSecurity == AccessPoint.SECURITY_OWE_TRANSITION) {
                mAccessPointSecurity == AccessPoint.SECURITY_OWE) {
            mView.findViewById(R.id.security_fields).setVisibility(View.GONE);
            return;
        }
+2 −5
Original line number Diff line number Diff line
@@ -515,9 +515,7 @@ public class WifiSettings extends RestrictedSettingsFragment
                if (isSavedNetwork) {
                    connect(mSelectedAccessPoint.getConfig(), isSavedNetwork);
                } else if ((mSelectedAccessPoint.getSecurity() == AccessPoint.SECURITY_NONE) ||
                        (mSelectedAccessPoint.getSecurity() == AccessPoint.SECURITY_OWE) ||
                        (mSelectedAccessPoint.getSecurity()
                                == AccessPoint.SECURITY_OWE_TRANSITION)) {
                        (mSelectedAccessPoint.getSecurity() == AccessPoint.SECURITY_OWE)) {
                    /** Bypass dialog for unsecured networks */
                    mSelectedAccessPoint.generateOpenNetworkConfig();
                    connect(mSelectedAccessPoint.getConfig(), isSavedNetwork);
@@ -774,8 +772,7 @@ public class WifiSettings extends RestrictedSettingsFragment
                preference.setOrder(index);
                if (mOpenSsid != null && mOpenSsid.equals(accessPoint.getSsidStr())
                        && (accessPoint.getSecurity() != AccessPoint.SECURITY_NONE &&
                        accessPoint.getSecurity() != AccessPoint.SECURITY_OWE &&
                        accessPoint.getSecurity() != AccessPoint.SECURITY_OWE_TRANSITION)) {
                        accessPoint.getSecurity() != AccessPoint.SECURITY_OWE)) {
                    if (!accessPoint.isSaved() || isDisabledByWrongPassword(accessPoint)) {
                        onPreferenceTreeClick(preference);
                        mOpenSsid = null;
+1 −2
Original line number Diff line number Diff line
@@ -268,8 +268,7 @@ public class WifiUtils {
        if (accessPoint.isOsuProvider()) {
            return CONNECT_TYPE_OSU_PROVISION;
        } else if ((accessPoint.getSecurity() == AccessPoint.SECURITY_NONE) ||
                (accessPoint.getSecurity() == AccessPoint.SECURITY_OWE) ||
                (accessPoint.getSecurity() == AccessPoint.SECURITY_OWE_TRANSITION)) {
                (accessPoint.getSecurity() == AccessPoint.SECURITY_OWE)) {
            return CONNECT_TYPE_OPEN_NETWORK;
        } else if (accessPoint.isSaved() && config != null
                && config.getNetworkSelectionStatus() != null
+1 −4
Original line number Diff line number Diff line
@@ -204,7 +204,7 @@ public class WifiDppUtils {
        setConfiguratorIntentExtra(intent, wifiManager, wifiConfiguration);

        // For a transition mode Wi-Fi AP, creates a QR code that's compatible with more devices
        if (accessPoint.getSecurity() == AccessPoint.SECURITY_PSK_SAE_TRANSITION) {
        if (accessPoint.isPskSaeTransitionMode()) {
            intent.putExtra(EXTRA_WIFI_SECURITY, WifiQrCode.SECURITY_WPA_PSK);
        }

@@ -427,7 +427,6 @@ public class WifiDppUtils {
                }
                break;
            case AccessPoint.SECURITY_PSK:
            case AccessPoint.SECURITY_PSK_SAE_TRANSITION:
                return true;
            default:
        }
@@ -440,8 +439,6 @@ public class WifiDppUtils {
            case AccessPoint.SECURITY_PSK:
            case AccessPoint.SECURITY_WEP:
            case AccessPoint.SECURITY_NONE:
            case AccessPoint.SECURITY_PSK_SAE_TRANSITION:
            case AccessPoint.SECURITY_OWE_TRANSITION:
                return true;
            case AccessPoint.SECURITY_SAE:
                if (wifiManager.isWpa3SaeSupported()) {