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

Commit e2381760 authored by Jeff Davidson's avatar Jeff Davidson Committed by Android Git Automerger
Browse files

am 9dc247bb: Merge "Final platform settings UX for ephemeral networks." into lmp-mr1-dev

* commit '9dc247bb':
  Final platform settings UX for ephemeral networks.
parents 53bfcb52 9dc247bb
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