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

Commit c045987c authored by Jason Zhang's avatar Jason Zhang Committed by Android (Google) Code Review
Browse files

Merge "Support "add new network" when WIFI_ENTRY_KEY is not specified in WifiDialog2" into main

parents 89845bc2 3bcffac2
Loading
Loading
Loading
Loading
+34 −13
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import static android.Manifest.permission.ACCESS_FINE_LOCATION;
import static android.os.UserManager.DISALLOW_ADD_WIFI_CONFIG;
import static android.os.UserManager.DISALLOW_CONFIG_WIFI;

import static com.android.wifitrackerlib.WifiEntry.CONNECTED_STATE_CONNECTED;

import android.app.KeyguardManager;
import android.content.DialogInterface;
import android.content.Intent;
@@ -44,6 +46,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.SetupWizardUtils;
import com.android.settings.Utils;
import com.android.settings.connectivity.Flags;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wifi.dpp.WifiDppUtils;
import com.android.settingslib.core.lifecycle.ObservableActivity;
@@ -109,11 +112,14 @@ public class WifiDialogActivity extends ObservableActivity implements WifiDialog

    // The received intent supports a key of WifiTrackerLib or SettingsLib.
    private boolean mIsWifiTrackerLib;
    // Whether to use WifiDialog2 when user clicks on "Add network".
    private boolean mUseWifiDialog2ForAddNetwork;

    private Intent mIntent;
    private NetworkDetailsTracker mNetworkDetailsTracker;
    private HandlerThread mWorkerThread;
    private WifiManager mWifiManager;
    @VisibleForTesting
    WifiManager mWifiManager;
    private LockScreenMonitor mLockScreenMonitor;

    @Override
@@ -130,6 +136,11 @@ public class WifiDialogActivity extends ObservableActivity implements WifiDialog
        }

        mIsWifiTrackerLib = !TextUtils.isEmpty(mIntent.getStringExtra(KEY_CHOSEN_WIFIENTRY_KEY));
        if (Flags.wifiMultiuser()) {
            mUseWifiDialog2ForAddNetwork =
                TextUtils.isEmpty(mIntent.getStringExtra(KEY_CHOSEN_WIFIENTRY_KEY))
                && TextUtils.isEmpty(mIntent.getStringExtra(KEY_ACCESS_POINT_STATE));
        }

        if (mIsWifiTrackerLib) {
            mWorkerThread = new HandlerThread(
@@ -171,11 +182,12 @@ public class WifiDialogActivity extends ObservableActivity implements WifiDialog
        if (WizardManagerHelper.isAnySetupWizard(getIntent())) {
            createDialogWithSuwTheme();
        } else {
            if (mIsWifiTrackerLib) {
            if (mIsWifiTrackerLib || mUseWifiDialog2ForAddNetwork) {
                mDialog2 = new WifiDialog2(this, this,
                        mNetworkDetailsTracker.getWifiEntry(), WifiConfigUiBase2.MODE_CONNECT,
                        0 /* style */, false /* hideSubmitButton */,
                        false /* hideMeteredAndPrivacy */,
                        mNetworkDetailsTracker == null
                                ? null : mNetworkDetailsTracker.getWifiEntry(),
                        WifiConfigUiBase2.MODE_CONNECT, 0 /* style */,
                        false /* hideSubmitButton */, false /* hideMeteredAndPrivacy */,
                        Utils.SYSTEMUI_PACKAGE_NAME.equals(getLaunchedFromPackage()));
            } else {
                mDialog = WifiDialog.createModal(
@@ -183,7 +195,7 @@ public class WifiDialogActivity extends ObservableActivity implements WifiDialog
            }
        }

        if (mIsWifiTrackerLib) {
        if (mIsWifiTrackerLib || mUseWifiDialog2ForAddNetwork) {
            if (mDialog2 != null) {
                mDialog2.show();
                mDialog2.setOnDismissListener(this);
@@ -205,9 +217,9 @@ public class WifiDialogActivity extends ObservableActivity implements WifiDialog
        final int targetStyle = ThemeHelper.isSetupWizardDayNightEnabled(this)
                ? R.style.SuwAlertDialogThemeCompat_DayNight :
                R.style.SuwAlertDialogThemeCompat_Light;
        if (mIsWifiTrackerLib) {
        if (mIsWifiTrackerLib || mUseWifiDialog2ForAddNetwork) {
            mDialog2 = new WifiDialog2(this, this,
                    mNetworkDetailsTracker.getWifiEntry(),
                    mNetworkDetailsTracker == null ? null : mNetworkDetailsTracker.getWifiEntry(),
                    WifiConfigUiBase2.MODE_CONNECT, targetStyle);
        } else {
            mDialog = WifiDialog.createModal(this, this, mAccessPoint,
@@ -224,11 +236,13 @@ public class WifiDialogActivity extends ObservableActivity implements WifiDialog

    @Override
    public void onDestroy() {
        if (mIsWifiTrackerLib) {
        if (mIsWifiTrackerLib || mUseWifiDialog2ForAddNetwork) {
            if (mDialog2 != null && mDialog2.isShowing()) {
                mDialog2 = null;
            }
            if (mWorkerThread != null) {
                mWorkerThread.quit();
            }
        } else {
            if (mDialog != null && mDialog.isShowing()) {
                mDialog = null;
@@ -290,12 +304,19 @@ public class WifiDialogActivity extends ObservableActivity implements WifiDialog
        final WifiConfiguration config = dialog.getController().getConfig();

        if (getIntent().getBooleanExtra(KEY_CONNECT_FOR_CALLER, true)) {
            if (config == null && wifiEntry != null && wifiEntry.canConnect()) {
            if (config == null) {
                if (wifiEntry != null && wifiEntry.canConnect()) {
                    wifiEntry.connect(null /* callback */);
                }
            } else {
                mWifiManager.save(config, null /* listener */);
                // wifiEntry is null for "Add network"
                if (wifiEntry != null
                        && wifiEntry.getConnectedState() != CONNECTED_STATE_CONNECTED) {
                    mWifiManager.connect(config, null /* listener */);
                }
            }
        }

        Intent resultData = hasPermissionForResult() ? createResultData(config, null) : null;
        setResult(RESULT_CONNECTED, resultData);
+22 −0
Original line number Diff line number Diff line
@@ -42,7 +42,10 @@ import android.content.pm.PackageManager;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.UserManager;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;

import com.android.settings.connectivity.Flags;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settingslib.wifi.AccessPoint;
import com.android.wifitrackerlib.NetworkDetailsTracker;
@@ -51,6 +54,7 @@ import com.android.wifitrackerlib.WifiEntry;
import com.google.android.setupcompat.util.WizardManagerHelper;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -70,6 +74,8 @@ public class WifiDialogActivityTest {
    @Mock
    PackageManager mPackageManager;
    @Mock
    WifiManager mWifiManager;
    @Mock
    WifiDialog mWifiDialog;
    @Mock
    WifiConfiguration mWifiConfiguration;
@@ -90,6 +96,8 @@ public class WifiDialogActivityTest {

    WifiDialogActivity mActivity;

    @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
@@ -175,6 +183,7 @@ public class WifiDialogActivityTest {
    public void onSubmit_whenConnectForCallerIsFalse_shouldNotConnectToNetwork() {
        final Intent intent = new Intent();
        intent.putExtra(WifiDialogActivity.KEY_CONNECT_FOR_CALLER, false);
        intent.putExtra(WifiDialogActivity.KEY_ACCESS_POINT_STATE, "FAKE_KEY");
        mActivity = spy(Robolectric.buildActivity(WifiDialogActivity.class, intent).setup().get());

        mActivity.onSubmit(mWifiDialog);
@@ -195,6 +204,19 @@ public class WifiDialogActivityTest {
        verify(mWifiEntry, never()).connect(any());
    }

    @Test
    @EnableFlags(Flags.FLAG_WIFI_MULTIUSER)
    public void onSubmit2_whenAddNewNetwork_shouldSave() {
        when(mWifiConfiguration2.getConfig()).thenReturn(mWifiConfiguration);
        final Intent intent = new Intent("com.android.settings.WIFI_DIALOG");
        intent.putExtra(WifiDialogActivity.KEY_CONNECT_FOR_CALLER, true);
        mActivity = spy(Robolectric.buildActivity(WifiDialogActivity.class, intent).setup().get());
        mActivity.mWifiManager = mWifiManager;

        mActivity.onSubmit(mWifiDialog2);
        verify(mWifiManager).save(any(), any());
    }

    @Test
    public void onStart_whenLaunchInSetupFlow_shouldCreateDialogWithSuwTheme() {
        final Intent intent = new Intent();