Merge "[Wi-Fi] Support WifiTrackerLib in WifiDialogActivity"

This commit is contained in:
Arc Wang
2020-07-23 01:37:47 +00:00
committed by Android (Google) Code Review
3 changed files with 286 additions and 20 deletions

View File

@@ -0,0 +1,60 @@
/*
* Copyright (C) 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.testutils.shadow;
import static org.mockito.Mockito.mock;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkScoreManager;
import android.net.wifi.WifiManager;
import android.os.Handler;
import androidx.annotation.NonNull;
import androidx.lifecycle.Lifecycle;
import com.android.wifitrackerlib.NetworkDetailsTracker;
import com.android.wifitrackerlib.WifiEntry;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import java.time.Clock;
@Implements(NetworkDetailsTracker.class)
public class ShadowNetworkDetailsTracker {
@Implementation
public static NetworkDetailsTracker createNetworkDetailsTracker(@NonNull Lifecycle lifecycle,
@NonNull Context context,
@NonNull WifiManager wifiManager,
@NonNull ConnectivityManager connectivityManager,
@NonNull NetworkScoreManager networkScoreManager,
@NonNull Handler mainHandler,
@NonNull Handler workerHandler,
@NonNull Clock clock,
long maxScanAgeMillis,
long scanIntervalMillis,
String key) {
return mock(NetworkDetailsTracker.class);
}
@Implementation
public WifiEntry getWifiEntry() {
return mock(WifiEntry.class);
}
}

View File

@@ -23,13 +23,18 @@ import static org.mockito.Mockito.doReturn;
import android.content.Intent;
import android.net.wifi.WifiConfiguration;
import androidx.lifecycle.Lifecycle.State;
import androidx.test.core.app.ActivityScenario;
import com.android.settings.R;
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
import com.android.settings.testutils.shadow.ShadowConnectivityManager;
import com.android.settings.testutils.shadow.ShadowNetworkDetailsTracker;
import com.android.settings.testutils.shadow.ShadowWifiManager;
import com.google.android.setupcompat.util.WizardManagerHelper;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -42,15 +47,20 @@ import org.robolectric.util.ReflectionHelpers;
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {
ShadowAlertDialogCompat.class,
ShadowConnectivityManager.class,
ShadowWifiManager.class,
ShadowAlertDialogCompat.class
ShadowNetworkDetailsTracker.class,
ShadowWifiManager.class
})
public class WifiDialogActivityTest {
private static final String AP1_SSID = "\"ap1\"";
@Mock
private WifiConfigController mController;
@Mock
private WifiConfigController2 mController2;
private ActivityScenario<WifiDialogActivity> mWifiDialogActivity;
@Before
public void setUp() {
@@ -59,6 +69,18 @@ public class WifiDialogActivityTest {
WifiConfiguration wifiConfig = new WifiConfiguration();
wifiConfig.SSID = AP1_SSID;
doReturn(wifiConfig).when(mController).getConfig();
doReturn(wifiConfig).when(mController2).getConfig();
}
@After
public void cleanUp() {
if (mWifiDialogActivity != null) {
mWifiDialogActivity.close();
}
}
private ActivityScenario<WifiDialogActivity> createTargetActivity(Intent activityIntent) {
return ActivityScenario.launch(activityIntent);
}
@Test
@@ -74,6 +96,27 @@ public class WifiDialogActivityTest {
assertThat(ShadowWifiManager.get().savedWifiConfig.SSID).isEqualTo(AP1_SSID);
}
@Test
public void onSubmit2_whenConnectForCallerIsTrue_shouldConnectToNetwork() {
final Intent intent = new Intent("com.android.settings.WIFI_DIALOG");
intent.putExtra(WifiDialogActivity.KEY_CHOSEN_WIFIENTRY_KEY, "FAKE_KEY");
intent.putExtra(WifiDialogActivity.KEY_CONNECT_FOR_CALLER, true);
mWifiDialogActivity = createTargetActivity(intent);
mWifiDialogActivity.moveToState(State.CREATED);
mWifiDialogActivity.moveToState(State.STARTED);
WifiDialog2 dialog = (WifiDialog2) ShadowAlertDialogCompat.getLatestAlertDialog();
assertThat(dialog).isNotNull();
ReflectionHelpers.setField(dialog, "mController", mController2);
mWifiDialogActivity.onActivity(activity -> {
activity.onSubmit(dialog);
assertThat(ShadowWifiManager.get().savedWifiConfig.SSID).isEqualTo(AP1_SSID);
});
}
@Test
public void onSubmit_whenConnectForCallerIsFalse_shouldNotConnectToNetwork() {
WifiDialogActivity activity =
@@ -92,6 +135,27 @@ public class WifiDialogActivityTest {
assertThat(ShadowWifiManager.get().savedWifiConfig).isNull();
}
@Test
public void onSubmit2_whenConnectForCallerIsFalse_shouldNotConnectToNetwork() {
final Intent intent = new Intent("com.android.settings.WIFI_DIALOG");
intent.putExtra(WifiDialogActivity.KEY_CHOSEN_WIFIENTRY_KEY, "FAKE_KEY");
intent.putExtra(WifiDialogActivity.KEY_CONNECT_FOR_CALLER, false);
mWifiDialogActivity = createTargetActivity(intent);
mWifiDialogActivity.moveToState(State.CREATED);
mWifiDialogActivity.moveToState(State.STARTED);
WifiDialog2 dialog = (WifiDialog2) ShadowAlertDialogCompat.getLatestAlertDialog();
assertThat(dialog).isNotNull();
ReflectionHelpers.setField(dialog, "mController", mController2);
mWifiDialogActivity.onActivity(activity -> {
activity.onSubmit(dialog);
assertThat(ShadowWifiManager.get().savedWifiConfig).isEqualTo(null);
});
}
@Test
public void onSubmit_whenLaunchInSetupFlow_shouldBeLightThemeForWifiDialog() {
WifiDialogActivity activity =