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

Commit 9dc247bb authored by Jeff Davidson's avatar Jeff Davidson Committed by Android (Google) Code Review
Browse files

Merge "Final platform settings UX for ephemeral networks." into lmp-mr1-dev

parents 7dca460a 5ead6b92
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -595,7 +595,7 @@ class AccessPoint extends Preference {
     * For ephemeral connections (networkId is invalid), this returns false if the network is
     * disconnected.
     */
    private boolean isActive() {
    boolean isActive() {
        return mNetworkInfo != null &&
                (networkId != WifiConfiguration.INVALID_NETWORK_ID ||
                 mNetworkInfo.getState() != State.DISCONNECTED);
@@ -617,7 +617,8 @@ class AccessPoint extends Preference {
        StringBuilder summary = new StringBuilder();

        if (isActive()) { // This is the active connection
            summary.append(Summary.get(context, getState()));
            summary.append(Summary.get(context, getState(),
                    networkId == WifiConfiguration.INVALID_NETWORK_ID));
        } else if (mConfig != null
                && mConfig.hasNoInternetAccess()) {
            summary.append(context.getString(R.string.wifi_no_internet));
+8 −3
Original line number Diff line number Diff line
@@ -22,7 +22,12 @@ import android.content.Context;
import android.net.NetworkInfo.DetailedState;

class Summary {
    static String get(Context context, String ssid, DetailedState state) {
    static String get(Context context, String ssid, DetailedState state, boolean isEphemeral) {
        if (state == DetailedState.CONNECTED && isEphemeral && ssid == null) {
            // Special case for connected + ephemeral networks.
            return context.getString(R.string.connected_via_wfa);
        }

        String[] formats = context.getResources().getStringArray((ssid == null)
                ? R.array.wifi_status : R.array.wifi_status_with_ssid);
        int index = state.ordinal();
@@ -33,7 +38,7 @@ class Summary {
        return String.format(formats[index], ssid);
    }

    static String get(Context context, DetailedState state) {
        return get(context, null, state);
    static String get(Context context, DetailedState state, boolean isEphemeral) {
        return get(context, null, state, isEphemeral);
    }
}
+5 −3
Original line number Diff line number Diff line
@@ -242,7 +242,8 @@ public class WifiConfigController implements TextWatcher,
                }
            }

            if (mAccessPoint.networkId == INVALID_NETWORK_ID || mEdit) {
            if ((mAccessPoint.networkId == INVALID_NETWORK_ID && !mAccessPoint.isActive())
                    || mEdit) {
                showSecurityFields();
                showIpConfigFields();
                showProxyFields();
@@ -266,7 +267,8 @@ public class WifiConfigController implements TextWatcher,
                } else {
                    if (state != null) {
                        addRow(group, R.string.wifi_status, Summary.get(mConfigUi.getContext(),
                                state));
                                state, mAccessPoint.networkId ==
                                WifiConfiguration.INVALID_NETWORK_ID));
                    }

                    if (signalLevel != null) {
@@ -300,7 +302,7 @@ 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.networkId != INVALID_NETWORK_ID
                if ((mAccessPoint.networkId != INVALID_NETWORK_ID || mAccessPoint.isActive())
                        && ActivityManager.getCurrentUser() == UserHandle.USER_OWNER) {
                    mConfigUi.setForgetButton(res.getString(R.string.wifi_forget));
                }
+25 −22
Original line number Diff line number Diff line
@@ -502,26 +502,21 @@ public class WifiSettings extends RestrictedSettingsFragment
                mSelectedAccessPoint = (AccessPoint) preference;
                menu.setHeaderTitle(mSelectedAccessPoint.ssid);
                if (mSelectedAccessPoint.getLevel() != -1) {
                    int connectStringRes = 0;
                    if (mSelectedAccessPoint.getState() == null) {
                        connectStringRes = R.string.wifi_menu_connect;
                    } else if (mSelectedAccessPoint.networkId == INVALID_NETWORK_ID &&
                            mSelectedAccessPoint.getNetworkInfo().getState()
                                != State.DISCONNECTED) {
                        // State is non-null (and not disconnected) but this network has no
                        // configuration, which means it is ephemeral. Allow the user to save the
                        // configuration permanently (but still issue this as a CONNECT command).
                        connectStringRes = R.string.wifi_menu_remember;
                    }

                    if (connectStringRes != 0) {
                        menu.add(Menu.NONE, MENU_ID_CONNECT, 0, connectStringRes);
                        menu.add(Menu.NONE, MENU_ID_CONNECT, 0, R.string.wifi_menu_connect);
                    }
                }
                if (mSelectedAccessPoint.networkId != INVALID_NETWORK_ID) {
                    if (ActivityManager.getCurrentUser() == UserHandle.USER_OWNER) {

                if (ActivityManager.getCurrentUser() == UserHandle.USER_OWNER &&
                        (mSelectedAccessPoint.networkId != INVALID_NETWORK_ID ||
                        (mSelectedAccessPoint.getNetworkInfo() != null &&
                        mSelectedAccessPoint.getNetworkInfo().getState() != State.DISCONNECTED))) {
                    // Allow forgetting a network if the current user is the owner and either the
                    // network is saved or ephemerally connected. (In the latter case, "forget"
                    // blacklists the network so it won't be used again, ephemerally).
                    menu.add(Menu.NONE, MENU_ID_FORGET, 0, R.string.wifi_menu_forget);
                }
                if (mSelectedAccessPoint.networkId != INVALID_NETWORK_ID) {
                    menu.add(Menu.NONE, MENU_ID_MODIFY, 0, R.string.wifi_menu_modify);

                    if (mSelectedAccessPoint.security != AccessPoint.SECURITY_NONE) {
@@ -552,7 +547,7 @@ public class WifiSettings extends RestrictedSettingsFragment
                return true;
            }
            case MENU_ID_FORGET: {
                mWifiManager.forget(mSelectedAccessPoint.networkId, mForgetListener);
                forget();
                return true;
            }
            case MENU_ID_MODIFY: {
@@ -571,9 +566,10 @@ public class WifiSettings extends RestrictedSettingsFragment
    public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) {
        if (preference instanceof AccessPoint) {
            mSelectedAccessPoint = (AccessPoint) preference;
            /** Bypass dialog for unsecured, unsaved networks */
            /** Bypass dialog for unsecured, unsaved, and inactive networks */
            if (mSelectedAccessPoint.security == AccessPoint.SECURITY_NONE &&
                    mSelectedAccessPoint.networkId == INVALID_NETWORK_ID) {
                    mSelectedAccessPoint.networkId == INVALID_NETWORK_ID &&
                    !mSelectedAccessPoint.isActive()) {
                mSelectedAccessPoint.generateOpenNetworkConfig();
                if (!savedNetworksExist) {
                    savedNetworksExist = true;
@@ -903,12 +899,19 @@ public class WifiSettings extends RestrictedSettingsFragment

    /* package */ void forget() {
        if (mSelectedAccessPoint.networkId == INVALID_NETWORK_ID) {
            if (mSelectedAccessPoint.getNetworkInfo().getState() != State.DISCONNECTED) {
                // Network is active but has no network ID - must be ephemeral.
                mWifiManager.disableEphemeralNetwork(
                        AccessPoint.convertToQuotedString(mSelectedAccessPoint.ssid));
            } else {
                // Should not happen, but a monkey seems to trigger it
                Log.e(TAG, "Failed to forget invalid network " + mSelectedAccessPoint.getConfig());
                return;
            }

        } else {
            mWifiManager.forget(mSelectedAccessPoint.networkId, mForgetListener);
        }


        if (mWifiManager.isWifiEnabled()) {
            mScanner.resume();
+1 −1
Original line number Diff line number Diff line
@@ -285,7 +285,7 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
        default:  // DISCONNECTED, FAILED
            if (mScreenState != SCREEN_STATE_CONNECTED &&
                    mWifiSettings.getAccessPointsCount() > 0) {
                showDisconnectedState(Summary.get(this, state));
                showDisconnectedState(Summary.get(this, state, false /* isEphemeral */));
            }
            break;
        }
Loading