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

Commit 1599dde8 authored by Peter Qiu's avatar Peter Qiu Committed by android-build-merger
Browse files

Merge "wifi: managed Passpoint configurations in "Saved Networks" page" into oc-dev

am: 82e2239c

Change-Id: I5746669f3e2f2157548979d9317bbe6a225bb715
parents e049c352 82e2239c
Loading
Loading
Loading
Loading
+49 −5
Original line number Diff line number Diff line
@@ -20,7 +20,9 @@ import android.app.Dialog;
import android.content.Context;
import android.content.res.Resources;
import android.icu.text.Collator;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.net.wifi.hotspot2.PasspointConfiguration;
import android.os.Bundle;
import android.provider.SearchIndexableResource;
import android.support.v7.preference.Preference;
@@ -110,8 +112,7 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
        PreferenceScreen preferenceScreen = getPreferenceScreen();
        final Context context = getPrefContext();

        final List<AccessPoint> accessPoints = WifiTracker.getCurrentAccessPoints(context, true,
                false, true);
        final List<AccessPoint> accessPoints = getSavedConfigs(context, mWifiManager);
        Collections.sort(accessPoints, SAVED_NETWORK_COMPARATOR);
        preferenceScreen.removeAll();

@@ -129,6 +130,39 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
        }
    }

    /**
     * Retrieved the list of saved network configurations from {@link WifiManager}.
     * Each configuration is represented by {@link AccessPoint}.
     *
     * @param context The application context
     * @param wifiManager An instance of {@link WifiManager}
     * @return List of {@link AccessPoint}
     */
    private static List<AccessPoint> getSavedConfigs(Context context, WifiManager wifiManager) {
        List<AccessPoint> savedConfigs = new ArrayList<>();
        List<WifiConfiguration> savedNetworks = wifiManager.getConfiguredNetworks();
        for (WifiConfiguration network : savedNetworks) {
            // Configuration for Passpoint network is configured temporary by WifiService for
            // connection attempt only.  The underlying configuration is saved as Passpoint
            // configuration, which will be retrieved with WifiManager#getPasspointConfiguration
            // call below.
            if (network.isPasspoint()) {
                continue;
            }
            savedConfigs.add(new AccessPoint(context, network));
        }
        try {
            List<PasspointConfiguration> savedPasspointConfigs =
                    wifiManager.getPasspointConfigurations();
            for (PasspointConfiguration config : savedPasspointConfigs) {
                savedConfigs.add(new AccessPoint(context, config));
            }
        } catch (UnsupportedOperationException e) {
            // Passpoint not supported.
        }
        return savedConfigs;
    }

    private void showDialog(LongPressAccessPointPreference accessPoint, boolean edit) {
        if (mDialog != null) {
            removeDialog(WifiSettings.WIFI_DIALOG_ID);
@@ -187,7 +221,17 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
    @Override
    public void onForget(WifiDialog dialog) {
        if (mSelectedAccessPoint != null) {
            if (mSelectedAccessPoint.isPasspointConfig()) {
                try {
                    mWifiManager.removePasspointConfiguration(
                            mSelectedAccessPoint.getPasspointFqdn());
                } catch (RuntimeException e) {
                    Log.e(TAG, "Failed to remove Passpoint configuration for "
                            + mSelectedAccessPoint.getConfigName());
                }
            } else {
                mWifiManager.forget(mSelectedAccessPoint.getConfig().networkId, null);
            }
            mSelectedAccessPoint = null;
            initPreferences();
        }
@@ -235,8 +279,8 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
                result.add(data);

                // Add available Wi-Fi access points
                final List<AccessPoint> accessPoints = WifiTracker.getCurrentAccessPoints(context,
                        true, false, true);
                final List<AccessPoint> accessPoints =
                        getSavedConfigs(context, context.getSystemService(WifiManager.class));

                final int accessPointsSize = accessPoints.size();
                for (int i = 0; i < accessPointsSize; ++i){
+9 −3
Original line number Diff line number Diff line
@@ -217,7 +217,11 @@ public class WifiConfigController implements TextWatcher,

            mConfigUi.setSubmitButton(res.getString(R.string.wifi_save));
        } else {
            if (!mAccessPoint.isPasspointConfig()) {
                mConfigUi.setTitle(mAccessPoint.getSsid());
            } else {
                mConfigUi.setTitle(mAccessPoint.getConfigName());
            }

            ViewGroup group = (ViewGroup) mView.findViewById(R.id.info);

@@ -258,7 +262,8 @@ public class WifiConfigController implements TextWatcher,
                }
            }

            if ((!mAccessPoint.isSaved() && !mAccessPoint.isActive())
            if ((!mAccessPoint.isSaved() && !mAccessPoint.isActive()
                    && !mAccessPoint.isPasspointConfig())
                    || mMode != WifiConfigUiBase.MODE_VIEW) {
                showSecurityFields();
                showIpConfigFields();
@@ -326,7 +331,8 @@ public class WifiConfigController implements TextWatcher,
                    addRow(group, R.string.wifi_security, mAccessPoint.getSecurityString(false));
                    mView.findViewById(R.id.ip_fields).setVisibility(View.GONE);
                }
                if (mAccessPoint.isSaved() || mAccessPoint.isActive()) {
                if (mAccessPoint.isSaved() || mAccessPoint.isActive()
                        || mAccessPoint.isPasspointConfig()) {
                    mConfigUi.setForgetButton(res.getString(R.string.wifi_forget));
                }
            }