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

Commit bced4c67 authored by Nikhil Nayunigari's avatar Nikhil Nayunigari
Browse files

Add shared toggle to the add network dialog

This lets the user to either create a shared or a private network.

Bug: b/409845350

Flag: com.android.settings.connectivity.wifi_multiuser

Test: Manual test on a pixel tablet
Change-Id: Ie84b4452172ce74abf1fb43e0e0bdb7c129394db
parent 4f0ea443
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -401,6 +401,30 @@
                  android:orientation="vertical"
                  android:visibility="gone">

        <LinearLayout
            android:id="@+id/sharing_toggle_fields"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center_vertical"
            style="@style/wifi_item"
            android:visibility="gone">

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/share_wifi_network"
                style="@style/wifi_item_label"/>

            <Switch
                android:id="@+id/share_wifi_network"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:summary="@string/share_wifi_network_summary"
                android:gravity="center_vertical" />
        </LinearLayout>

        <LinearLayout android:id="@+id/hidden_settings_field"
                      android:layout_width="match_parent"
                      android:layout_height="wrap_content"
+4 −0
Original line number Diff line number Diff line
@@ -2598,6 +2598,10 @@
    <string name="wifi_scan_always_confirm_deny">Deny</string>
    <!-- Error message displayed below the Wi-Fi EditText when the filed is required. [CHAR LIMIT=NONE] -->
    <string name="wifi_field_required">*required</string>
    <!-- Label for the share wifi network toggle. [CHAR LIMIT=250] -->
    <string name="share_wifi_network">Share this network with other device users</string>
    <!-- Label for the share wifi network summary. [CHAR LIMIT=NONE] -->
    <string name="share_wifi_network_summary">All users on this device can view and connect to a shared network. Administrators can delete a shared network. Learn more</string>
    <!-- Dialog text to tell the user that the selected network does not have Internet access. -->
    <string name="no_internet_access_text">This network has no internet access. Stay connected?</string>
+12 −1
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.Switch;
import android.widget.TextView;

import androidx.annotation.Nullable;
@@ -206,6 +207,7 @@ public class WifiConfigController2 implements TextWatcher,
    private TextView mDns1View;
    private TextView mDns2View;

    private Switch mSharedSwitch;
    private Spinner mProxySettingsSpinner;
    @Nullable
    private Spinner mMeteredSettingsSpinner;
@@ -335,10 +337,14 @@ public class WifiConfigController2 implements TextWatcher,
                        ? View.GONE
                        : View.VISIBLE);
        mSecurityInPosition = new Integer[WifiEntry.NUM_SECURITY_TYPES];
        mSharedSwitch = (Switch) mView.findViewById(R.id.share_wifi_network);

        if (mWifiEntry == null) { // new network
            configureSecuritySpinner();
            mConfigUi.setSubmitButton(res.getString(R.string.wifi_save));
            if (com.android.settings.connectivity.Flags.wifiMultiuser()) {
                mView.findViewById(R.id.sharing_toggle_fields).setVisibility(View.VISIBLE);
            }
        } else {
            mConfigUi.setTitle(mWifiEntry.getTitle());

@@ -603,6 +609,9 @@ public class WifiConfigController2 implements TextWatcher,
            config.SSID = "\"" + mSsidInputGroup.getText() + "\"";
            // If the user adds a network manually, assume that it is hidden.
            config.hiddenSSID = mHiddenSettingsSpinner.getSelectedItemPosition() == HIDDEN_NETWORK;
            if (com.android.settings.connectivity.Flags.wifiMultiuser()) {
                config.shared = mSharedSwitch.isChecked();
            }
        } else if (mWifiEntry.isSaved()) {
            config = new WifiConfiguration(mWifiEntry.getWifiConfiguration());
        } else {
@@ -610,7 +619,9 @@ public class WifiConfigController2 implements TextWatcher,
            config.SSID = "\"" + mWifiEntry.getTitle() + "\"";
        }

        if (!com.android.settings.connectivity.Flags.wifiMultiuser()) {
            config.shared = mSharedCheckBox.isChecked();
        }

        switch (mWifiEntrySecurity) {
            case WifiEntry.SECURITY_NONE:
+20 −3
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import android.net.wifi.WifiEnterpriseConfig;
import android.net.wifi.WifiEnterpriseConfig.Eap;
import android.net.wifi.WifiEnterpriseConfig.Phase2;
import android.net.wifi.WifiManager;
import android.platform.test.annotations.EnableFlags;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
@@ -52,9 +53,11 @@ import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.Switch;
import android.widget.TextView;

import com.android.settings.R;
import com.android.settings.connectivity.Flags;
import com.android.settings.network.SubscriptionUtil;
import com.android.settings.utils.AndroidKeystoreAliasLoader;
import com.android.settings.wifi.details2.WifiPrivacyPreferenceController;
@@ -218,6 +221,20 @@ public class WifiConfigController2Test {
        assertThat(mController.isSubmittable()).isTrue();
    }

    @Test
    @EnableFlags(Flags.FLAG_WIFI_MULTIUSER)
    public void saveSharedField() {
        createController(null, WifiConfigUiBase2.MODE_CONNECT, false);
        final Switch sharedSwitch = mView.findViewById(R.id.share_wifi_network);
        assertThat(sharedSwitch).isNotNull();
        assertThat(sharedSwitch.getVisibility()).isEqualTo(View.VISIBLE);
        sharedSwitch.setChecked(true);

        WifiConfiguration config = mController.getConfig();

        assertThat(config.shared).isTrue();
    }

    @Test
    public void isSubmittable_EapWithAkaMethod_shouldReturnTrue() {
        createController(mWifiEntry, WifiConfigUiBase2.MODE_CONNECT, false);
@@ -599,13 +616,13 @@ public class WifiConfigController2Test {
    }

    @Test
    public void getHiddenSettingsPosition_whenAdvancedToggled_shouldBeFirst() {
    public void getSharingSettingsPosition_whenAdvancedToggled_shouldBeFirst() {
        final LinearLayout advancedFieldsLayout = mView.findViewById(R.id.wifi_advanced_fields);
        final LinearLayout hiddenSettingLayout = mView.findViewById(R.id.hidden_settings_field);
        final LinearLayout shareSettingLayout = mView.findViewById(R.id.sharing_toggle_fields);

        final LinearLayout firstChild = (LinearLayout) advancedFieldsLayout.getChildAt(0);

        assertThat(firstChild).isEqualTo(hiddenSettingLayout);
        assertThat(firstChild).isEqualTo(shareSettingLayout);
    }

    @Test
+3 −3
Original line number Diff line number Diff line
@@ -550,13 +550,13 @@ public class WifiConfigControllerTest {
    }

    @Test
    public void getHiddenSettingsPosition_whenAdvancedToggled_shouldBeFirst() {
    public void getSharingSettingsPosition_whenAdvancedToggled_shouldBeFirst() {
        final LinearLayout advancedFieldsLayout = mView.findViewById(R.id.wifi_advanced_fields);
        final LinearLayout hiddenSettingLayout = mView.findViewById(R.id.hidden_settings_field);
        final LinearLayout shareSettingLayout = mView.findViewById(R.id.sharing_toggle_fields);

        final LinearLayout firstChild = (LinearLayout) advancedFieldsLayout.getChildAt(0);

        assertThat(firstChild).isEqualTo(hiddenSettingLayout);
        assertThat(firstChild).isEqualTo(shareSettingLayout);
    }

    @Test