diff --git a/res/xml/wifi_network_details_fragment.xml b/res/xml/wifi_network_details_fragment.xml
deleted file mode 100644
index 7ec1f0e4a9a..00000000000
--- a/res/xml/wifi_network_details_fragment.xml
+++ /dev/null
@@ -1,135 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/com/android/settings/wifi/AddNetworkFragment.java b/src/com/android/settings/wifi/AddNetworkFragment.java
index 31dc21fea29..7b869361692 100644
--- a/src/com/android/settings/wifi/AddNetworkFragment.java
+++ b/src/com/android/settings/wifi/AddNetworkFragment.java
@@ -124,7 +124,7 @@ public class AddNetworkFragment extends InstrumentedFragment implements WifiConf
@Override
public int getMode() {
- return WifiConfigUiBase.MODE_CONNECT;
+ return WifiConfigUiBase2.MODE_CONNECT;
}
@Override
diff --git a/src/com/android/settings/wifi/WifiConfigController2.java b/src/com/android/settings/wifi/WifiConfigController2.java
index 99907f3223f..92a16fe538e 100644
--- a/src/com/android/settings/wifi/WifiConfigController2.java
+++ b/src/com/android/settings/wifi/WifiConfigController2.java
@@ -40,7 +40,6 @@ import android.text.InputType;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.TextWatcher;
-import android.util.FeatureFlagUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
@@ -67,7 +66,6 @@ import androidx.annotation.VisibleForTesting;
import com.android.settings.ProxySelector;
import com.android.settings.R;
-import com.android.settings.wifi.details.WifiPrivacyPreferenceController;
import com.android.settings.wifi.details2.WifiPrivacyPreferenceController2;
import com.android.settings.wifi.dpp.WifiDppUtils;
import com.android.settingslib.Utils;
@@ -294,14 +292,8 @@ public class WifiConfigController2 implements TextWatcher,
? HIDDEN_NETWORK
: NOT_HIDDEN_NETWORK);
- int prefMacValue;
- if (FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SETTINGS_WIFITRACKER2)) {
- prefMacValue = WifiPrivacyPreferenceController2
- .translateMacRandomizedValueToPrefValue(config.macRandomizationSetting);
- } else {
- prefMacValue = WifiPrivacyPreferenceController
- .translateMacRandomizedValueToPrefValue(config.macRandomizationSetting);
- }
+ final int prefMacValue = WifiPrivacyPreferenceController2
+ .translateMacRandomizedValueToPrefValue(config.macRandomizationSetting);
mPrivacySettingsSpinner.setSelection(prefMacValue);
if (config.getIpConfiguration().getIpAssignment() == IpAssignment.STATIC) {
@@ -814,15 +806,9 @@ public class WifiConfigController2 implements TextWatcher,
}
if (mPrivacySettingsSpinner != null) {
- int macValue;
- if (FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SETTINGS_WIFITRACKER2)) {
- macValue = WifiPrivacyPreferenceController2.translatePrefValueToMacRandomizedValue(
- mPrivacySettingsSpinner.getSelectedItemPosition());
- } else {
- macValue = WifiPrivacyPreferenceController.translatePrefValueToMacRandomizedValue(
- mPrivacySettingsSpinner.getSelectedItemPosition());
- }
- config.macRandomizationSetting = macValue;
+ config.macRandomizationSetting = WifiPrivacyPreferenceController2
+ .translatePrefValueToMacRandomizedValue(mPrivacySettingsSpinner
+ .getSelectedItemPosition());
}
return config;
diff --git a/src/com/android/settings/wifi/details/AddDevicePreferenceController.java b/src/com/android/settings/wifi/details/AddDevicePreferenceController.java
deleted file mode 100644
index 2f4434afcac..00000000000
--- a/src/com/android/settings/wifi/details/AddDevicePreferenceController.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2019 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.wifi.details;
-
-import android.content.Context;
-import android.content.Intent;
-import android.net.wifi.WifiManager;
-import android.util.Log;
-
-import androidx.preference.Preference;
-
-import com.android.settings.core.BasePreferenceController;
-import com.android.settings.wifi.dpp.WifiDppUtils;
-import com.android.settingslib.wifi.AccessPoint;
-
-/**
- * {@link BasePreferenceController} that launches Wi-Fi Easy Connect configurator flow.
- *
- * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
- * future, please develop in
- * {@link com.android.settings.wifi.details2.AddDevicePreferenceController2}.
- */
-public class AddDevicePreferenceController extends BasePreferenceController {
-
- private static final String TAG = "AddDevicePreferenceController";
-
- private static final String KEY_ADD_DEVICE = "add_device_to_network";
-
- private AccessPoint mAccessPoint;
- private WifiManager mWifiManager;
-
- public AddDevicePreferenceController(Context context) {
- super(context, KEY_ADD_DEVICE);
-
- mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
- }
-
- public AddDevicePreferenceController init(AccessPoint accessPoint) {
- mAccessPoint = accessPoint;
-
- return this;
- }
-
- @Override
- public int getAvailabilityStatus() {
- if (WifiDppUtils.isSupportConfiguratorQrCodeScanner(mContext, mAccessPoint)) {
- return AVAILABLE;
- } else {
- return CONDITIONALLY_UNAVAILABLE;
- }
- }
-
- @Override
- public boolean handlePreferenceTreeClick(Preference preference) {
- if (KEY_ADD_DEVICE.equals(preference.getKey())) {
- WifiDppUtils.showLockScreen(mContext, () -> launchWifiDppConfiguratorQrCodeScanner());
- return true; /* click is handled */
- }
-
- return false; /* click is not handled */
- }
-
- private void launchWifiDppConfiguratorQrCodeScanner() {
- final Intent intent = WifiDppUtils.getConfiguratorQrCodeScannerIntentOrNull(mContext,
- mWifiManager, mAccessPoint);
-
- if (intent == null) {
- Log.e(TAG, "Launch Wi-Fi QR code scanner with a wrong Wi-Fi network!");
- } else {
- mContext.startActivity(intent);
- }
- }
-}
diff --git a/src/com/android/settings/wifi/details/WifiMeteredPreferenceController.java b/src/com/android/settings/wifi/details/WifiMeteredPreferenceController.java
deleted file mode 100644
index 0b2b47e0b31..00000000000
--- a/src/com/android/settings/wifi/details/WifiMeteredPreferenceController.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) 2018 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.wifi.details;
-
-import android.app.backup.BackupManager;
-import android.content.Context;
-import android.net.wifi.WifiConfiguration;
-import android.net.wifi.WifiManager;
-
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.DropDownPreference;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.core.BasePreferenceController;
-import com.android.settings.wifi.WifiDialog;
-import com.android.settingslib.core.AbstractPreferenceController;
-
-/**
- * {@link AbstractPreferenceController} that controls whether the wifi network is metered or not.
- *
- * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
- * future, please develop in
- * {@link com.android.settings.wifi.details2.WifiMeteredPreferenceControlle2}.
- */
-public class WifiMeteredPreferenceController extends BasePreferenceController implements
- Preference.OnPreferenceChangeListener, WifiDialog.WifiDialogListener {
-
- private static final String KEY_WIFI_METERED = "metered";
- private WifiConfiguration mWifiConfiguration;
- private WifiManager mWifiManager;
- private Preference mPreference;
-
- public WifiMeteredPreferenceController(Context context, WifiConfiguration wifiConfiguration) {
- super(context, KEY_WIFI_METERED);
- mWifiConfiguration = wifiConfiguration;
- mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
- }
-
- @Override
- public void updateState(Preference preference) {
- final DropDownPreference dropDownPreference = (DropDownPreference) preference;
- final int meteredOverride = getMeteredOverride();
- dropDownPreference.setValue(Integer.toString(meteredOverride));
- updateSummary(dropDownPreference, meteredOverride);
- }
-
- @Override
- public int getAvailabilityStatus() {
- return AVAILABLE;
- }
-
- @Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- if (mWifiConfiguration != null) {
- mWifiConfiguration.meteredOverride = Integer.parseInt((String) newValue);
- }
- mWifiManager.updateNetwork(mWifiConfiguration);
- // Stage the backup of the SettingsProvider package which backs this up
- BackupManager.dataChanged("com.android.providers.settings");
- updateSummary((DropDownPreference) preference, getMeteredOverride());
- return true;
- }
-
- @VisibleForTesting
- int getMeteredOverride() {
- if (mWifiConfiguration != null) {
- // Wrap the meteredOverride since robolectric cannot recognize it
- return mWifiConfiguration.meteredOverride;
- }
- return WifiConfiguration.METERED_OVERRIDE_NONE;
- }
-
- private void updateSummary(DropDownPreference preference, int meteredOverride) {
- preference.setSummary(preference.getEntries()[meteredOverride]);
- }
-
- @Override
- public void displayPreference(PreferenceScreen screen) {
- super.displayPreference(screen);
- mPreference = screen.findPreference(getPreferenceKey());
- }
-
- @Override
- public void onSubmit(WifiDialog dialog) {
- if (dialog.getController() != null) {
- final WifiConfiguration newConfig = dialog.getController().getConfig();
- if (newConfig == null || mWifiConfiguration == null) {
- return;
- }
-
- if (newConfig.meteredOverride != mWifiConfiguration.meteredOverride) {
- mWifiConfiguration = newConfig;
- onPreferenceChange(mPreference, String.valueOf(newConfig.meteredOverride));
- }
- }
- }
-}
diff --git a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
deleted file mode 100644
index 8af9a7f1905..00000000000
--- a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (C) 2017 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.wifi.details;
-
-import static com.android.settings.wifi.WifiSettings.WIFI_DIALOG_ID;
-
-import android.app.Dialog;
-import android.app.settings.SettingsEnums;
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.net.wifi.WifiManager;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-
-import com.android.settings.R;
-import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.wifi.WifiConfigUiBase;
-import com.android.settings.wifi.WifiDialog;
-import com.android.settingslib.RestrictedLockUtils;
-import com.android.settingslib.RestrictedLockUtilsInternal;
-import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.wifi.AccessPoint;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Detail page for the currently connected wifi network.
- *
- *
The AccessPoint should be saved to the intent Extras when launching this class via
- * {@link AccessPoint#saveWifiState(Bundle)} in order to properly render this page.
- *
- * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
- * future, please develop in
- * {@link com.android.settings.wifi.details2.WifiNetworkDetailsFragment2}.
- */
-public class WifiNetworkDetailsFragment extends DashboardFragment implements
- WifiDialog.WifiDialogListener {
-
- private static final String TAG = "WifiNetworkDetailsFrg";
-
- private AccessPoint mAccessPoint;
- private WifiDetailPreferenceController mWifiDetailPreferenceController;
- private List mWifiDialogListeners = new ArrayList<>();
-
- @Override
- public void onAttach(Context context) {
- mAccessPoint = new AccessPoint(context, getArguments());
- super.onAttach(context);
- }
-
- @Override
- public int getMetricsCategory() {
- return SettingsEnums.WIFI_NETWORK_DETAILS;
- }
-
- @Override
- protected String getLogTag() {
- return TAG;
- }
-
- @Override
- protected int getPreferenceScreenResId() {
- return R.xml.wifi_network_details_fragment;
- }
-
- @Override
- public int getDialogMetricsCategory(int dialogId) {
- if (dialogId == WIFI_DIALOG_ID) {
- return SettingsEnums.DIALOG_WIFI_AP_EDIT;
- }
- return 0;
- }
-
- @Override
- public Dialog onCreateDialog(int dialogId) {
- if (getActivity() == null || mWifiDetailPreferenceController == null
- || mAccessPoint == null) {
- return null;
- }
- return WifiDialog.createModal(getActivity(), this, mAccessPoint,
- WifiConfigUiBase.MODE_MODIFY);
- }
-
-
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- MenuItem item = menu.add(0, Menu.FIRST, 0, R.string.wifi_modify);
- item.setIcon(com.android.internal.R.drawable.ic_mode_edit);
- item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
- super.onCreateOptionsMenu(menu, inflater);
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem menuItem) {
- switch (menuItem.getItemId()) {
- case Menu.FIRST:
- if (!mWifiDetailPreferenceController.canModifyNetwork()) {
- RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(),
- RestrictedLockUtilsInternal.getDeviceOwner(getContext()));
- } else {
- showDialog(WIFI_DIALOG_ID);
- }
- return true;
- default:
- return super.onOptionsItemSelected(menuItem);
- }
- }
-
- @Override
- protected List createPreferenceControllers(Context context) {
- final List controllers = new ArrayList<>();
- final ConnectivityManager cm = context.getSystemService(ConnectivityManager.class);
-
- mWifiDetailPreferenceController = WifiDetailPreferenceController.newInstance(
- mAccessPoint,
- cm,
- context,
- this,
- new Handler(Looper.getMainLooper()), // UI thread.
- getSettingsLifecycle(),
- context.getSystemService(WifiManager.class),
- mMetricsFeatureProvider);
-
- controllers.add(mWifiDetailPreferenceController);
- controllers.add(new AddDevicePreferenceController(context).init(mAccessPoint));
-
- final WifiMeteredPreferenceController meteredPreferenceController =
- new WifiMeteredPreferenceController(context, mAccessPoint.getConfig());
- controllers.add(meteredPreferenceController);
-
- final WifiPrivacyPreferenceController privacyController =
- new WifiPrivacyPreferenceController(context);
- privacyController.setWifiConfiguration(mAccessPoint.getConfig());
- privacyController.setIsEphemeral(mAccessPoint.isEphemeral());
- privacyController.setIsPasspoint(
- mAccessPoint.isPasspoint() || mAccessPoint.isPasspointConfig());
- controllers.add(privacyController);
-
- // Sets callback listener for wifi dialog.
- mWifiDialogListeners.add(mWifiDetailPreferenceController);
- mWifiDialogListeners.add(privacyController);
- mWifiDialogListeners.add(meteredPreferenceController);
-
- return controllers;
- }
-
- @Override
- public void onSubmit(WifiDialog dialog) {
- for (WifiDialog.WifiDialogListener listener : mWifiDialogListeners) {
- listener.onSubmit(dialog);
- }
- }
-}
diff --git a/tests/robotests/assets/grandfather_invalid_base_preference_controller_constructor b/tests/robotests/assets/grandfather_invalid_base_preference_controller_constructor
index c29807bbf01..b8c2575d127 100644
--- a/tests/robotests/assets/grandfather_invalid_base_preference_controller_constructor
+++ b/tests/robotests/assets/grandfather_invalid_base_preference_controller_constructor
@@ -11,5 +11,4 @@ com.android.settings.fuelgauge.RestrictAppPreferenceController
com.android.settings.fuelgauge.batterysaver.BatterySaverButtonPreferenceController
com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController
com.android.settings.security.VisiblePatternProfilePreferenceController
-com.android.settings.wifi.details.WifiMeteredPreferenceController
com.android.settings.wifi.details2.WifiMeteredPreferenceController2
diff --git a/tests/robotests/src/com/android/settings/wifi/AddNetworkFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/AddNetworkFragmentTest.java
index db699e5ae99..7421bd38b82 100644
--- a/tests/robotests/src/com/android/settings/wifi/AddNetworkFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/AddNetworkFragmentTest.java
@@ -55,7 +55,7 @@ public class AddNetworkFragmentTest {
@Test
public void getMode_shouldBeModeConnected() {
- assertThat(mAddNetworkFragment.getMode()).isEqualTo(WifiConfigUiBase.MODE_CONNECT);
+ assertThat(mAddNetworkFragment.getMode()).isEqualTo(WifiConfigUiBase2.MODE_CONNECT);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/wifi/ConfigureWifiEntryFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/ConfigureWifiEntryFragmentTest.java
index 27517e87dae..4a317a66a35 100644
--- a/tests/robotests/src/com/android/settings/wifi/ConfigureWifiEntryFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/ConfigureWifiEntryFragmentTest.java
@@ -68,7 +68,7 @@ public class ConfigureWifiEntryFragmentTest {
@Test
public void getMode_shouldBeModeConnected() {
assertThat(mConfigureWifiEntryFragment.getMode()).isEqualTo(
- WifiConfigUiBase.MODE_CONNECT);
+ WifiConfigUiBase2.MODE_CONNECT);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java b/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java
index e588799d6a4..9bd12cc03a5 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java
@@ -43,7 +43,7 @@ import android.widget.TextView;
import com.android.settings.R;
import com.android.settings.testutils.shadow.ShadowConnectivityManager;
-import com.android.settings.wifi.details.WifiPrivacyPreferenceController;
+import com.android.settings.wifi.details2.WifiPrivacyPreferenceController2;
import com.android.wifitrackerlib.WifiEntry;
import org.junit.Before;
@@ -249,7 +249,7 @@ public class WifiConfigController2Test {
@Test
public void loadCertificates_undesiredCertificates_shouldNotLoadUndesiredCertificates() {
final Spinner spinner = new Spinner(mContext);
- when(mKeyStore.list(anyString())).thenReturn(WifiConfigController.UNDESIRED_CERTIFICATES);
+ when(mKeyStore.list(anyString())).thenReturn(WifiConfigController2.UNDESIRED_CERTIFICATES);
mController.loadCertificates(spinner,
"prefix",
@@ -392,7 +392,7 @@ public class WifiConfigController2Test {
public void loadMacRandomizedValue_shouldPersistentAsDefault() {
final Spinner privacySetting = mView.findViewById(R.id.privacy_settings);
final int prefPersist =
- WifiPrivacyPreferenceController.translateMacRandomizedValueToPrefValue(
+ WifiPrivacyPreferenceController2.translateMacRandomizedValueToPrefValue(
WifiConfiguration.RANDOMIZATION_PERSISTENT);
assertThat(privacySetting.getVisibility()).isEqualTo(View.VISIBLE);
@@ -420,7 +420,7 @@ public class WifiConfigController2Test {
final Spinner privacySetting = mView.findViewById(R.id.privacy_settings);
final int expectedPrefValue =
- WifiPrivacyPreferenceController.translateMacRandomizedValueToPrefValue(
+ WifiPrivacyPreferenceController2.translateMacRandomizedValueToPrefValue(
macRandomizedValue);
assertThat(privacySetting.getVisibility()).isEqualTo(View.VISIBLE);
@@ -438,7 +438,7 @@ public class WifiConfigController2Test {
public void saveMacRandomizedValue_ChangedToNone_shouldGetNone() {
final Spinner privacySetting = mView.findViewById(R.id.privacy_settings);
final int prefMacNone =
- WifiPrivacyPreferenceController.translateMacRandomizedValueToPrefValue(
+ WifiPrivacyPreferenceController2.translateMacRandomizedValueToPrefValue(
WifiConfiguration.RANDOMIZATION_NONE);
privacySetting.setSelection(prefMacNone);
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiDialogTest.java b/tests/robotests/src/com/android/settings/wifi/WifiDialogTest.java
deleted file mode 100644
index ed9b851558f..00000000000
--- a/tests/robotests/src/com/android/settings/wifi/WifiDialogTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.android.settings.wifi;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-
-import com.android.settings.R;
-import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
-import com.android.settings.wifi.WifiDialog.WifiDialogListener;
-import com.android.settingslib.wifi.AccessPoint;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = ShadowEntityHeaderController.class)
-public class WifiDialogTest {
- @Mock private AccessPoint mockAccessPoint;
-
- private Context mContext = RuntimeEnvironment.application;
-
- private WifiDialogListener mListener = new WifiDialogListener() {};
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- }
-
- @Test
- public void createModal_usesDefaultTheme() {
- WifiDialog modal = WifiDialog
- .createModal(mContext, mListener, mockAccessPoint, WifiConfigUiBase.MODE_CONNECT);
-
- WifiDialog wifiDialog = new WifiDialog(mContext, mListener, mockAccessPoint,
- WifiConfigUiBase.MODE_CONNECT, 0 /* style */, false /* hideSubmitButton */);
- assertThat(modal.getContext().getThemeResId())
- .isEqualTo(wifiDialog.getContext().getThemeResId());
- }
-
- @Test
- public void createModal_whenSetTheme_shouldBeCustomizedTheme() {
- WifiDialog modal = WifiDialog.createModal(mContext, mListener, mockAccessPoint,
- WifiConfigUiBase.MODE_CONNECT, R.style.SuwAlertDialogThemeCompat_Light);
-
- WifiDialog wifiDialog = new WifiDialog(mContext, mListener, mockAccessPoint,
- WifiConfigUiBase.MODE_CONNECT, R.style.SuwAlertDialogThemeCompat_Light,
- false /* hideSubmitButton */);
- assertThat(modal.getContext().getThemeResId())
- .isEqualTo(wifiDialog.getContext().getThemeResId());
- }
-}
diff --git a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
deleted file mode 100644
index 11d5ece8037..00000000000
--- a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
+++ /dev/null
@@ -1,1992 +0,0 @@
-/*
- * Copyright (C) 2017 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.wifi.details;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyBoolean;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.nullable;
-import static org.mockito.Mockito.atLeastOnce;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.inOrder;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.res.Resources;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
-import android.net.CaptivePortalData;
-import android.net.ConnectivityManager;
-import android.net.ConnectivityManager.NetworkCallback;
-import android.net.IpPrefix;
-import android.net.LinkAddress;
-import android.net.LinkProperties;
-import android.net.MacAddress;
-import android.net.Network;
-import android.net.NetworkCapabilities;
-import android.net.NetworkInfo;
-import android.net.NetworkRequest;
-import android.net.RouteInfo;
-import android.net.Uri;
-import android.net.wifi.WifiConfiguration;
-import android.net.wifi.WifiInfo;
-import android.net.wifi.WifiManager;
-import android.os.Handler;
-import android.provider.Settings;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.ImageView;
-
-import androidx.fragment.app.FragmentActivity;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceCategory;
-import androidx.preference.PreferenceScreen;
-
-import com.android.internal.logging.nano.MetricsProto;
-import com.android.settings.R;
-import com.android.settings.Utils;
-import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
-import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
-import com.android.settings.widget.EntityHeaderController;
-import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
-import com.android.settingslib.core.lifecycle.Lifecycle;
-import com.android.settingslib.utils.StringUtil;
-import com.android.settingslib.widget.ActionButtonsPreference;
-import com.android.settingslib.widget.LayoutPreference;
-import com.android.settingslib.wifi.AccessPoint;
-import com.android.settingslib.wifi.WifiTracker;
-import com.android.settingslib.wifi.WifiTrackerFactory;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Answers;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InOrder;
-import org.mockito.Matchers;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowToast;
-
-import java.net.Inet4Address;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.time.ZoneId;
-import java.time.ZonedDateTime;
-import java.time.format.DateTimeFormatter;
-import java.time.format.FormatStyle;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.stream.Collectors;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowDevicePolicyManager.class, ShadowEntityHeaderController.class})
-public class WifiDetailPreferenceControllerTest {
-
- private static final int LEVEL = 1;
- private static final int RSSI = -55;
- private static final int TX_LINK_SPEED = 123;
- private static final int RX_LINK_SPEED = 54;
- private static final String SSID = "ssid";
- private static final String MAC_ADDRESS = "01:23:45:67:89:ab";
- private static final String RANDOMIZED_MAC_ADDRESS = "RANDOMIZED_MAC_ADDRESS";
- private static final String FACTORY_MAC_ADDRESS = "FACTORY_MAC_ADDRESS";
- private static final String SECURITY = "None";
- private static final String FQDN = "fqdn";
-
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private PreferenceScreen mockScreen;
-
- @Mock
- private AccessPoint mockAccessPoint;
- @Mock
- private FragmentActivity mockActivity;
- @Mock
- private ConnectivityManager mockConnectivityManager;
- @Mock
- private Network mockNetwork;
- @Mock
- private NetworkInfo mockNetworkInfo;
- @Mock
- private WifiConfiguration mockWifiConfig;
- @Mock
- private WifiInfo mockWifiInfo;
- @Mock
- private WifiNetworkDetailsFragment mockFragment;
- @Mock
- private WifiManager mockWifiManager;
- @Mock
- private WifiTracker mockWifiTracker;
- @Mock
- private MetricsFeatureProvider mockMetricsFeatureProvider;
- @Mock
- private WifiDetailPreferenceController.IconInjector mockIconInjector;
- @Mock
- private WifiDetailPreferenceController.Clock mMockClock;
- @Mock
- private MacAddress mockMacAddress;
-
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private EntityHeaderController mockHeaderController;
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private LayoutPreference mockHeaderLayoutPreference;
- @Mock
- private ImageView mockHeaderIcon;
-
- @Mock
- private ActionButtonsPreference mockButtonsPref;
- @Mock
- private Preference mockSignalStrengthPref;
- @Mock
- private Preference mockTxLinkSpeedPref;
- @Mock
- private Preference mockRxLinkSpeedPref;
- @Mock
- private Preference mockFrequencyPref;
- @Mock
- private Preference mockSecurityPref;
- @Mock
- private Preference mockSsidPref;
- @Mock
- private Preference mockMacAddressPref;
- @Mock
- private Preference mockIpAddressPref;
- @Mock
- private Preference mockGatewayPref;
- @Mock
- private Preference mockSubnetPref;
- @Mock
- private Preference mockDnsPref;
- @Mock
- private PreferenceCategory mockIpv6Category;
- @Mock
- private Preference mockIpv6AddressesPref;
- @Mock
- private PackageManager mockPackageManager;
-
- @Captor
- private ArgumentCaptor mCallbackCaptor;
- @Captor
- private ArgumentCaptor mForgetClickListener;
-
- private Context mContext;
- private Lifecycle mLifecycle;
- private LifecycleOwner mLifecycleOwner;
- private LinkProperties mLinkProperties;
- private WifiDetailPreferenceController mController;
-
- // This class exists so that these values can be made static final. They can't be static final
- // members of the test class, because any attempt to call IpPrefix or RouteInfo constructors
- // during static initialization of the test class results in NoSuchMethorError being thrown
- // when the test is run.
- private static class Constants {
- static final int IPV4_PREFIXLEN = 25;
- static final LinkAddress IPV4_ADDR;
- static final Inet4Address IPV4_GATEWAY;
- static final RouteInfo IPV4_DEFAULT;
- static final RouteInfo IPV4_SUBNET;
- static final LinkAddress IPV6_LINKLOCAL;
- static final LinkAddress IPV6_GLOBAL1;
- static final LinkAddress IPV6_GLOBAL2;
- static final InetAddress IPV4_DNS1;
- static final InetAddress IPV4_DNS2;
- static final InetAddress IPV6_DNS;
-
- private static LinkAddress ipv6LinkAddress(String addr) throws UnknownHostException {
- return new LinkAddress(InetAddress.getByName(addr), 64);
- }
-
- private static LinkAddress ipv4LinkAddress(String addr, int prefixlen)
- throws UnknownHostException {
- return new LinkAddress(InetAddress.getByName(addr), prefixlen);
- }
-
- static {
- try {
- // We create our test constants in these roundabout ways because the robolectric
- // shadows don't contain NetworkUtils.parseNumericAddress and other utility methods,
- // so the easy ways to do things fail with NoSuchMethodError.
- IPV4_ADDR = ipv4LinkAddress("192.0.2.2", IPV4_PREFIXLEN);
- IPV4_GATEWAY = (Inet4Address) InetAddress.getByName("192.0.2.127");
-
- final Inet4Address any4 = (Inet4Address) InetAddress.getByName("0.0.0.0");
- IpPrefix subnet = new IpPrefix(IPV4_ADDR.getAddress(), IPV4_PREFIXLEN);
- IPV4_SUBNET = new RouteInfo(subnet, any4);
- IPV4_DEFAULT = new RouteInfo(new IpPrefix(any4, 0), IPV4_GATEWAY);
-
- IPV6_LINKLOCAL = ipv6LinkAddress("fe80::211:25ff:fef8:7cb2%1");
- IPV6_GLOBAL1 = ipv6LinkAddress("2001:db8:1::211:25ff:fef8:7cb2");
- IPV6_GLOBAL2 = ipv6LinkAddress("2001:db8:1::3dfe:8902:f98f:739d");
-
- IPV4_DNS1 = InetAddress.getByName("8.8.8.8");
- IPV4_DNS2 = InetAddress.getByName("8.8.4.4");
- IPV6_DNS = InetAddress.getByName("2001:4860:4860::64");
- } catch (UnknownHostException e) {
- throw new RuntimeException("Invalid hardcoded IP addresss: " + e);
- }
- }
- }
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
-
- mContext = spy(RuntimeEnvironment.application);
- mLifecycleOwner = () -> mLifecycle;
- mLifecycle = new Lifecycle(mLifecycleOwner);
-
- when(mContext.getPackageManager()).thenReturn(mockPackageManager);
- when(mockAccessPoint.getConfig()).thenReturn(mockWifiConfig);
- when(mockAccessPoint.getLevel()).thenReturn(LEVEL);
- when(mockAccessPoint.getSecurityString(false)).thenReturn(SECURITY);
- when(mockAccessPoint.getSsidStr()).thenReturn(SSID);
- when(mockConnectivityManager.getNetworkInfo(any(Network.class)))
- .thenReturn(mockNetworkInfo);
- doNothing().when(mockConnectivityManager).registerNetworkCallback(
- nullable(NetworkRequest.class), mCallbackCaptor.capture(), nullable(Handler.class));
- mockButtonsPref = createMock();
- when(mockButtonsPref.setButton1OnClickListener(mForgetClickListener.capture()))
- .thenReturn(mockButtonsPref);
-
- when(mockWifiInfo.getTxLinkSpeedMbps()).thenReturn(TX_LINK_SPEED);
- when(mockWifiInfo.getRxLinkSpeedMbps()).thenReturn(RX_LINK_SPEED);
- when(mockWifiInfo.getRssi()).thenReturn(RSSI);
- when(mockWifiInfo.getMacAddress()).thenReturn(MAC_ADDRESS);
- when(mockWifiManager.getConnectionInfo()).thenReturn(mockWifiInfo);
-
- when(mockWifiManager.getCurrentNetwork()).thenReturn(mockNetwork);
- mLinkProperties = new LinkProperties();
- when(mockConnectivityManager.getLinkProperties(mockNetwork)).thenReturn(mLinkProperties);
-
- when(mockFragment.getActivity()).thenReturn(mockActivity);
-
- ShadowEntityHeaderController.setUseMock(mockHeaderController);
- // builder pattern
- when(mockHeaderController.setRecyclerView(mockFragment.getListView(), mLifecycle))
- .thenReturn(mockHeaderController);
- when(mockHeaderController.setSummary(nullable(String.class)))
- .thenReturn(mockHeaderController);
- when(mockHeaderController.setSecondSummary(nullable(String.class)))
- .thenReturn(mockHeaderController);
- when(mockIconInjector.getIcon(anyInt())).thenReturn(new ColorDrawable());
-
- setupMockedPreferenceScreen();
- }
-
- private void setUpForConnectedNetwork() {
- when(mockAccessPoint.isActive()).thenReturn(true);
- ArrayList list = new ArrayList<>();
- list.add(mockAccessPoint);
- when(mockWifiTracker.getAccessPoints()).thenReturn(list);
- WifiTrackerFactory.setTestingWifiTracker(mockWifiTracker);
- when(mockAccessPoint.matches(any(AccessPoint.class))).thenReturn(true);
- when(mockAccessPoint.isReachable()).thenReturn(true);
-
- mController = newWifiDetailPreferenceController();
- }
-
- private void setUpForDisconnectedNetwork() {
- when(mockAccessPoint.isActive()).thenReturn(false);
- ArrayList list = new ArrayList<>();
- list.add(mockAccessPoint);
- when(mockWifiTracker.getAccessPoints()).thenReturn(list);
- WifiTrackerFactory.setTestingWifiTracker(mockWifiTracker);
- when(mockAccessPoint.matches(any(AccessPoint.class))).thenReturn(true);
- when(mockAccessPoint.isReachable()).thenReturn(true);
-
- mController = newWifiDetailPreferenceController();
- }
-
- private void setUpForNotInRangeNetwork() {
- when(mockAccessPoint.isActive()).thenReturn(false);
- ArrayList list = new ArrayList<>();
- list.add(mockAccessPoint);
- when(mockWifiTracker.getAccessPoints()).thenReturn(list);
- WifiTrackerFactory.setTestingWifiTracker(mockWifiTracker);
- when(mockAccessPoint.matches(any(AccessPoint.class))).thenReturn(false);
- when(mockAccessPoint.isReachable()).thenReturn(false);
-
- mController = newWifiDetailPreferenceController();
- }
-
- private WifiDetailPreferenceController newWifiDetailPreferenceController() {
- return new WifiDetailPreferenceController(
- mockAccessPoint,
- mockConnectivityManager,
- mContext,
- mockFragment,
- null, // Handler
- mLifecycle,
- mockWifiManager,
- mockMetricsFeatureProvider,
- mockIconInjector,
- mMockClock);
- }
-
- private void setupMockedPreferenceScreen() {
- when(mockScreen.getPreferenceManager().getContext()).thenReturn(mContext);
-
- when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_HEADER))
- .thenReturn(mockHeaderLayoutPreference);
- when(mockHeaderLayoutPreference.findViewById(R.id.entity_header_icon))
- .thenReturn(mockHeaderIcon);
-
- when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_BUTTONS_PREF))
- .thenReturn(mockButtonsPref);
- when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_SIGNAL_STRENGTH_PREF))
- .thenReturn(mockSignalStrengthPref);
- when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_TX_LINK_SPEED))
- .thenReturn(mockTxLinkSpeedPref);
- when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_RX_LINK_SPEED))
- .thenReturn(mockRxLinkSpeedPref);
- when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_FREQUENCY_PREF))
- .thenReturn(mockFrequencyPref);
- when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_SECURITY_PREF))
- .thenReturn(mockSecurityPref);
- when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_SSID_PREF))
- .thenReturn(mockSsidPref);
- when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_MAC_ADDRESS_PREF))
- .thenReturn(mockMacAddressPref);
- when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_IP_ADDRESS_PREF))
- .thenReturn(mockIpAddressPref);
- when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_GATEWAY_PREF))
- .thenReturn(mockGatewayPref);
- when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_SUBNET_MASK_PREF))
- .thenReturn(mockSubnetPref);
- when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_DNS_PREF))
- .thenReturn(mockDnsPref);
- when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_IPV6_CATEGORY))
- .thenReturn(mockIpv6Category);
- when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_IPV6_ADDRESSES_PREF))
- .thenReturn(mockIpv6AddressesPref);
- }
-
- private void displayAndResume() {
- mController.displayPreference(mockScreen);
- mController.onResume();
- }
-
- @Test
- public void isAvailable_shouldAlwaysReturnTrue() {
- setUpForConnectedNetwork();
- mController.displayPreference(mockScreen);
-
- assertThat(mController.isAvailable()).isTrue();
- }
-
- @Test
- public void securityPreference_stringShouldBeSet() {
- setUpForConnectedNetwork();
- displayAndResume();
-
- verify(mockSecurityPref).setSummary(SECURITY);
- }
-
- @Test
- public void latestWifiInfo_shouldBeFetchedInDisplayPreferenceForConnectedNetwork() {
- setUpForConnectedNetwork();
-
- displayAndResume();
-
- verify(mockWifiManager, times(1)).getConnectionInfo();
- }
-
- @Test
- public void latestWifiInfo_shouldNotBeFetchedInDisplayPreferenceForDisconnectedNetwork() {
- setUpForDisconnectedNetwork();
-
- displayAndResume();
-
- verify(mockWifiManager, never()).getConnectionInfo();
- }
-
- @Test
- public void latestWifiInfo_shouldNotBeFetchedInDisplayPreferenceForNotInRangeNetwork() {
- setUpForNotInRangeNetwork();
-
- displayAndResume();
-
- verify(mockWifiManager, never()).getConnectionInfo();
- }
-
- @Test
- public void latestNetworkInfo_shouldBeFetchedInDisplayPreferenceForConnectedNetwork() {
- setUpForConnectedNetwork();
-
- displayAndResume();
-
- verify(mockConnectivityManager, times(1)).getNetworkInfo(any(Network.class));
- }
-
- @Test
- public void latestNetworkInfo_shouldNotBeFetchedInDisplayPreferenceForDisconnectedNetwork() {
- setUpForDisconnectedNetwork();
-
- displayAndResume();
-
- verify(mockConnectivityManager, never()).getNetworkInfo(any(Network.class));
- }
-
- @Test
- public void latestNetworkInfo_shouldNotBeFetchedInDisplayPreferenceForNotInRangeNetwork() {
- setUpForNotInRangeNetwork();
-
- displayAndResume();
-
- verify(mockConnectivityManager, never()).getNetworkInfo(any(Network.class));
- }
-
- @Test
- public void networkCallback_shouldBeRegisteredOnResume() {
- setUpForConnectedNetwork();
- displayAndResume();
-
- verify(mockConnectivityManager, times(1)).registerNetworkCallback(
- nullable(NetworkRequest.class), mCallbackCaptor.capture(), nullable(Handler.class));
- }
-
- @Test
- public void networkCallback_shouldBeUnregisteredOnPause() {
- setUpForConnectedNetwork();
- displayAndResume();
- mController.onPause();
-
- verify(mockConnectivityManager, times(1))
- .unregisterNetworkCallback(mCallbackCaptor.getValue());
- }
-
- @Test
- public void entityHeader_shouldHaveIconSetForConnectedNetwork() {
- setUpForConnectedNetwork();
- Drawable expectedIcon = mockIconInjector.getIcon(LEVEL);
-
- displayAndResume();
-
- verify(mockHeaderController).setIcon(expectedIcon);
- }
-
- @Test
- public void entityHeader_shouldHaveIconSetForDisconnectedNetwork() {
- setUpForDisconnectedNetwork();
- Drawable expectedIcon = mockIconInjector.getIcon(LEVEL);
-
- displayAndResume();
-
- verify(mockHeaderController).setIcon(expectedIcon);
- }
-
- @Test
- public void entityHeader_shouldNotHaveIconSetForNotInRangeNetwork() {
- setUpForNotInRangeNetwork();
-
- displayAndResume();
-
- verify(mockHeaderController, never()).setIcon(any(Drawable.class));
- }
-
- @Test
- public void entityHeader_shouldHaveLabelSetToTitle() {
- setUpForConnectedNetwork();
- String label = "title";
- when(mockAccessPoint.getTitle()).thenReturn(label);
-
- displayAndResume();
-
- verify(mockHeaderController).setLabel(label);
- }
-
- @Test
- public void entityHeader_shouldHaveSummarySet() {
- setUpForConnectedNetwork();
- String summary = "summary";
- when(mockAccessPoint.getSettingsSummary(true /*convertSavedAsDisconnected*/))
- .thenReturn(summary);
-
- displayAndResume();
-
- verify(mockHeaderController).setSummary(summary);
- }
-
- private void doShouldShowRemainingTimeTest(ZonedDateTime now, long timeRemainingMs) {
- when(mMockClock.now()).thenReturn(now);
- setUpForConnectedNetwork();
- displayAndResume();
-
- final CaptivePortalData data = new CaptivePortalData.Builder()
- .setExpiryTime(now.toInstant().getEpochSecond() * 1000 + timeRemainingMs)
- .build();
- final LinkProperties lp = new LinkProperties();
- lp.setCaptivePortalData(data);
-
- updateLinkProperties(lp);
- }
-
- @Test
- public void entityHeader_shouldShowShortRemainingTime() {
- // Expires in 1h, 2min, 15sec
- final long timeRemainingMs = (3600 + 2 * 60 + 15) * 1000;
- final ZonedDateTime fakeNow = ZonedDateTime.of(2020, 1, 2, 3, 4, 5, 6,
- ZoneId.of("Europe/London"));
- doShouldShowRemainingTimeTest(fakeNow, timeRemainingMs);
- final String expectedSummary = mContext.getString(R.string.wifi_time_remaining,
- StringUtil.formatElapsedTime(mContext, timeRemainingMs, false /* withSeconds */));
- final InOrder inOrder = inOrder(mockHeaderController);
- inOrder.verify(mockHeaderController).setSecondSummary(expectedSummary);
-
- updateLinkProperties(new LinkProperties());
- inOrder.verify(mockHeaderController).setSecondSummary((String) null);
- }
-
- @Test
- public void entityHeader_shouldShowExpiryDate() {
- // Expires in 49h, 2min, 15sec
- final long timeRemainingMs = (49 * 3600 + 2 * 60 + 15) * 1000;
- final ZonedDateTime fakeNow = ZonedDateTime.of(2020, 1, 2, 3, 4, 5, 6,
- ZoneId.of("Europe/London"));
- doShouldShowRemainingTimeTest(fakeNow, timeRemainingMs);
- final String expectedSummary = mContext.getString(
- R.string.wifi_expiry_time,
- DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT).format(
- fakeNow.plusNanos(timeRemainingMs * 1_000_000)));
- final InOrder inOrder = inOrder(mockHeaderController);
- inOrder.verify(mockHeaderController).setSecondSummary(expectedSummary);
-
- updateLinkProperties(new LinkProperties());
- inOrder.verify(mockHeaderController).setSecondSummary((String) null);
- }
-
- @Test
- public void entityHeader_shouldConvertSavedAsDisconnected() {
- setUpForDisconnectedNetwork();
-
- displayAndResume();
-
- verify(mockAccessPoint, times(1)).getSettingsSummary(true /*convertSavedAsDisconnected*/);
- }
-
- @Test
- public void signalStrengthPref_shouldHaveIconSetForConnectedNetwork() {
- setUpForConnectedNetwork();
-
- displayAndResume();
-
- verify(mockSignalStrengthPref).setIcon(any(Drawable.class));
- }
-
- @Test
- public void signalStrengthPref_shouldHaveIconSetForDisconnectedNetwork() {
- setUpForDisconnectedNetwork();
-
- displayAndResume();
-
- verify(mockSignalStrengthPref).setIcon(any(Drawable.class));
- }
-
- @Test
- public void signalStrengthPref_shouldNotHaveIconSetForOutOfRangeNetwork() {
- setUpForNotInRangeNetwork();
-
- displayAndResume();
-
- verify(mockSignalStrengthPref, never()).setIcon(any(Drawable.class));
- }
-
- @Test
- public void signalStrengthPref_shouldHaveDetailTextSetForConnectedNetwork() {
- setUpForConnectedNetwork();
- String expectedStrength =
- mContext.getResources().getStringArray(R.array.wifi_signal)[LEVEL];
-
- displayAndResume();
-
- verify(mockSignalStrengthPref).setSummary(expectedStrength);
- }
-
- @Test
- public void signalStrengthPref_shouldHaveDetailTextSetForDisconnectedNetwork() {
- setUpForDisconnectedNetwork();
- String expectedStrength =
- mContext.getResources().getStringArray(R.array.wifi_signal)[LEVEL];
-
- displayAndResume();
-
- verify(mockSignalStrengthPref).setSummary(expectedStrength);
- }
-
- @Test
- public void signalStrengthPref_shouldNotHaveDetailTextSetForNotInRangeNetwork() {
- setUpForNotInRangeNetwork();
-
- displayAndResume();
-
- verify(mockSignalStrengthPref, never()).setSummary(any(String.class));
- }
-
- @Test
- public void linkSpeedPref_shouldNotShowIfNotSet() {
- setUpForConnectedNetwork();
- when(mockWifiInfo.getTxLinkSpeedMbps()).thenReturn(WifiInfo.LINK_SPEED_UNKNOWN);
-
- displayAndResume();
-
- verify(mockTxLinkSpeedPref).setVisible(false);
- }
-
- @Test
- public void linkSpeedPref_shouldVisibleForConnectedNetwork() {
- setUpForConnectedNetwork();
- String expectedLinkSpeed = mContext.getString(R.string.tx_link_speed, TX_LINK_SPEED);
-
- displayAndResume();
-
- verify(mockTxLinkSpeedPref).setVisible(true);
- verify(mockTxLinkSpeedPref).setSummary(expectedLinkSpeed);
- }
-
- @Test
- public void linkSpeedPref_shouldInvisibleForDisconnectedNetwork() {
- setUpForDisconnectedNetwork();
-
- displayAndResume();
-
- verify(mockTxLinkSpeedPref).setVisible(false);
- verify(mockTxLinkSpeedPref, never()).setSummary(any(String.class));
- }
-
- @Test
- public void linkSpeedPref_shouldInvisibleForNotInRangeNetwork() {
- setUpForNotInRangeNetwork();
-
- displayAndResume();
-
- verify(mockTxLinkSpeedPref).setVisible(false);
- verify(mockTxLinkSpeedPref, never()).setSummary(any(String.class));
- }
-
- @Test
- public void rxLinkSpeedPref_shouldNotShowIfNotSet() {
- setUpForConnectedNetwork();
- when(mockWifiInfo.getRxLinkSpeedMbps()).thenReturn(WifiInfo.LINK_SPEED_UNKNOWN);
-
- displayAndResume();
-
- verify(mockRxLinkSpeedPref).setVisible(false);
- }
-
- @Test
- public void rxLinkSpeedPref_shouldVisibleForConnectedNetwork() {
- setUpForConnectedNetwork();
- String expectedLinkSpeed = mContext.getString(R.string.rx_link_speed, RX_LINK_SPEED);
-
- displayAndResume();
-
- verify(mockRxLinkSpeedPref).setVisible(true);
- verify(mockRxLinkSpeedPref).setSummary(expectedLinkSpeed);
- }
-
- @Test
- public void rxLinkSpeedPref_shouldInvisibleForDisconnectedNetwork() {
- setUpForDisconnectedNetwork();
-
- displayAndResume();
-
- verify(mockRxLinkSpeedPref).setVisible(false);
- verify(mockRxLinkSpeedPref, never()).setSummary(any(String.class));
- }
-
- @Test
- public void rxLinkSpeedPref_shouldInvisibleForNotInRangeNetwork() {
- setUpForNotInRangeNetwork();
-
- displayAndResume();
-
- verify(mockRxLinkSpeedPref).setVisible(false);
- verify(mockRxLinkSpeedPref, never()).setSummary(any(String.class));
- }
-
- @Test
- public void ssidPref_shouldHaveDetailTextSetForPasspointR1() {
- setUpForConnectedNetwork();
- when(mockAccessPoint.isPasspoint()).thenReturn(true);
- when(mockAccessPoint.isOsuProvider()).thenReturn(false);
-
- displayAndResume();
-
- verify(mockSsidPref, times(1)).setSummary(SSID);
- verify(mockSsidPref, times(1)).setVisible(true);
- }
-
- @Test
- public void ssidPref_shouldHaveDetailTextSetForPasspointR2() {
- setUpForConnectedNetwork();
- when(mockAccessPoint.isPasspoint()).thenReturn(false);
- when(mockAccessPoint.isOsuProvider()).thenReturn(true);
-
- displayAndResume();
-
- verify(mockSsidPref, times(1)).setSummary(SSID);
- verify(mockSsidPref, times(1)).setVisible(true);
- }
-
- @Test
- public void ssidPref_shouldNotShowIfNotPasspoint() {
- setUpForConnectedNetwork();
- when(mockAccessPoint.isPasspoint()).thenReturn(false);
- when(mockAccessPoint.isOsuProvider()).thenReturn(false);
-
- displayAndResume();
-
- verify(mockSsidPref).setVisible(false);
- }
-
- @Test
- public void macAddressPref_shouldVisibleForConnectedNetwork() {
- setUpForConnectedNetwork();
-
- displayAndResume();
-
- verify(mockMacAddressPref).setVisible(true);
- verify(mockMacAddressPref).setSummary(MAC_ADDRESS);
- }
-
- @Test
- public void macAddressPref_shouldVisibleAsRandomizedForDisconnectedNetwork() {
- setUpForDisconnectedNetwork();
- mockWifiConfig.macRandomizationSetting = WifiConfiguration.RANDOMIZATION_PERSISTENT;
- when(mockWifiConfig.getRandomizedMacAddress()).thenReturn(mockMacAddress);
- when(mockMacAddress.toString()).thenReturn(RANDOMIZED_MAC_ADDRESS);
-
- displayAndResume();
-
- verify(mockMacAddressPref).setVisible(true);
- verify(mockMacAddressPref).setSummary(RANDOMIZED_MAC_ADDRESS);
- }
-
- @Test
- public void macAddressPref_shouldVisibleAsFactoryForDisconnectedNetwork() {
- setUpForDisconnectedNetwork();
- mockWifiConfig.macRandomizationSetting = WifiConfiguration.RANDOMIZATION_NONE;
- when(mockWifiManager.getFactoryMacAddresses())
- .thenReturn(new String[]{FACTORY_MAC_ADDRESS});
-
- displayAndResume();
-
- verify(mockMacAddressPref).setVisible(true);
- verify(mockMacAddressPref).setSummary(FACTORY_MAC_ADDRESS);
- }
-
- @Test
- public void ipAddressPref_shouldHaveDetailTextSetForConnectedNetwork() {
- setUpForConnectedNetwork();
- mLinkProperties.addLinkAddress(Constants.IPV4_ADDR);
-
- displayAndResume();
-
- verify(mockIpAddressPref).setSummary(Constants.IPV4_ADDR.getAddress().getHostAddress());
- verify(mockIpAddressPref).setVisible(true);
- }
-
- @Test
- public void ipAddressPref_shouldInvisibleForDisconnectedNetwork() {
- setUpForDisconnectedNetwork();
-
- displayAndResume();
-
- verify(mockIpAddressPref).setVisible(false);
- }
-
- @Test
- public void gatewayAndSubnet_shouldHaveDetailTextSetForConnectedNetwork() {
- setUpForConnectedNetwork();
- mLinkProperties.addLinkAddress(Constants.IPV4_ADDR);
- mLinkProperties.addRoute(Constants.IPV4_DEFAULT);
- mLinkProperties.addRoute(Constants.IPV4_SUBNET);
-
- displayAndResume();
-
- verify(mockSubnetPref).setSummary("255.255.255.128");
- verify(mockGatewayPref).setSummary("192.0.2.127");
- verify(mockSubnetPref).setVisible(true);
- }
-
- @Test
- public void gatewayAndSubnet_shouldInvisibleSetForDisconnectedNetwork() {
- setUpForDisconnectedNetwork();
-
- displayAndResume();
-
- verify(mockSubnetPref).setVisible(false);
- }
-
- @Test
- public void dnsServersPref_shouldHaveDetailTextSetForConnectedNetwork()
- throws UnknownHostException {
- setUpForConnectedNetwork();
- mLinkProperties.addDnsServer(InetAddress.getByAddress(new byte[] {8, 8, 4, 4}));
- mLinkProperties.addDnsServer(InetAddress.getByAddress(new byte[] {8, 8, 8, 8}));
- mLinkProperties.addDnsServer(Constants.IPV6_DNS);
-
- displayAndResume();
-
- verify(mockDnsPref).setSummary(
- "8.8.4.4\n" +
- "8.8.8.8\n" +
- Constants.IPV6_DNS.getHostAddress());
- verify(mockDnsPref).setVisible(true);
- }
-
- @Test
- public void dnsServersPref_shouldInvisibleSetForDisconnectedNetwork()
- throws UnknownHostException {
- setUpForDisconnectedNetwork();
-
- displayAndResume();
-
- verify(mockDnsPref).setVisible(false);
- }
-
- @Test
- public void noCurrentNetwork_shouldNotFinishActivityForConnectedNetwork() {
- setUpForConnectedNetwork();
- when(mockWifiManager.getCurrentNetwork()).thenReturn(null);
-
- displayAndResume();
-
- verify(mockActivity, never()).finish();
- }
-
- @Test
- public void noLinkProperties_allIpDetailsHidden() {
- setUpForConnectedNetwork();
- when(mockConnectivityManager.getLinkProperties(mockNetwork)).thenReturn(null);
- reset(mockIpv6Category, mockIpAddressPref, mockSubnetPref, mockGatewayPref, mockDnsPref);
-
- displayAndResume();
-
- verify(mockIpv6Category).setVisible(false);
- verify(mockIpAddressPref).setVisible(false);
- verify(mockSubnetPref).setVisible(false);
- verify(mockGatewayPref).setVisible(false);
- verify(mockDnsPref).setVisible(false);
- verify(mockIpv6Category, never()).setVisible(true);
- verify(mockIpAddressPref, never()).setVisible(true);
- verify(mockSubnetPref, never()).setVisible(true);
- verify(mockGatewayPref, never()).setVisible(true);
- verify(mockDnsPref, never()).setVisible(true);
- }
-
- @Test
- public void disconnectedNetwork_allIpDetailsHidden() {
- setUpForDisconnectedNetwork();
- reset(mockIpv6Category, mockIpAddressPref, mockSubnetPref, mockGatewayPref, mockDnsPref);
-
- displayAndResume();
-
- verify(mockIpv6Category).setVisible(false);
- verify(mockIpAddressPref).setVisible(false);
- verify(mockSubnetPref).setVisible(false);
- verify(mockGatewayPref).setVisible(false);
- verify(mockDnsPref).setVisible(false);
- verify(mockIpv6Category, never()).setVisible(true);
- verify(mockIpAddressPref, never()).setVisible(true);
- verify(mockSubnetPref, never()).setVisible(true);
- verify(mockGatewayPref, never()).setVisible(true);
- verify(mockDnsPref, never()).setVisible(true);
- }
-
- // Convenience method to convert a LinkAddress to a string without a prefix length.
- private String asString(LinkAddress l) {
- return l.getAddress().getHostAddress();
- }
-
- // Pretend that the NetworkCallback was triggered with a new copy of lp. We need to create a
- // new copy because the code only updates if !mLinkProperties.equals(lp).
- private void updateLinkProperties(LinkProperties lp) {
- mCallbackCaptor.getValue().onLinkPropertiesChanged(mockNetwork, new LinkProperties(lp));
- }
-
- private void updateNetworkCapabilities(NetworkCapabilities nc) {
- mCallbackCaptor.getValue().onCapabilitiesChanged(mockNetwork, new NetworkCapabilities(nc));
- }
-
- private NetworkCapabilities makeNetworkCapabilities() {
- NetworkCapabilities nc = new NetworkCapabilities();
- nc.clearAll();
- nc.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
- return nc;
- }
-
- private void verifyDisplayedIpv6Addresses(InOrder inOrder, LinkAddress... addresses) {
- String text = Arrays.stream(addresses)
- .map(address -> asString(address))
- .collect(Collectors.joining("\n"));
- inOrder.verify(mockIpv6AddressesPref).setSummary(text);
- }
-
- @Test
- public void onLinkPropertiesChanged_updatesFields() {
- setUpForConnectedNetwork();
- displayAndResume();
-
- InOrder inOrder = inOrder(mockIpAddressPref, mockGatewayPref, mockSubnetPref,
- mockDnsPref, mockIpv6Category, mockIpv6AddressesPref);
-
- LinkProperties lp = new LinkProperties();
-
- lp.addLinkAddress(Constants.IPV6_LINKLOCAL);
- updateLinkProperties(lp);
- verifyDisplayedIpv6Addresses(inOrder, Constants.IPV6_LINKLOCAL);
- inOrder.verify(mockIpv6Category).setVisible(true);
-
- lp.addRoute(Constants.IPV4_DEFAULT);
- updateLinkProperties(lp);
- inOrder.verify(mockGatewayPref).setSummary(Constants.IPV4_GATEWAY.getHostAddress());
- inOrder.verify(mockGatewayPref).setVisible(true);
-
- lp.addLinkAddress(Constants.IPV4_ADDR);
- lp.addRoute(Constants.IPV4_SUBNET);
- updateLinkProperties(lp);
- inOrder.verify(mockIpAddressPref).setSummary(asString(Constants.IPV4_ADDR));
- inOrder.verify(mockIpAddressPref).setVisible(true);
- inOrder.verify(mockSubnetPref).setSummary("255.255.255.128");
- inOrder.verify(mockSubnetPref).setVisible(true);
-
- lp.addLinkAddress(Constants.IPV6_GLOBAL1);
- lp.addLinkAddress(Constants.IPV6_GLOBAL2);
- updateLinkProperties(lp);
- verifyDisplayedIpv6Addresses(inOrder,
- Constants.IPV6_LINKLOCAL,
- Constants.IPV6_GLOBAL1,
- Constants.IPV6_GLOBAL2);
-
- lp.removeLinkAddress(Constants.IPV6_GLOBAL1);
- updateLinkProperties(lp);
- verifyDisplayedIpv6Addresses(inOrder,
- Constants.IPV6_LINKLOCAL,
- Constants.IPV6_GLOBAL2);
-
- lp.addDnsServer(Constants.IPV6_DNS);
- updateLinkProperties(lp);
- inOrder.verify(mockDnsPref).setSummary(Constants.IPV6_DNS.getHostAddress());
- inOrder.verify(mockDnsPref).setVisible(true);
-
- lp.addDnsServer(Constants.IPV4_DNS1);
- lp.addDnsServer(Constants.IPV4_DNS2);
- updateLinkProperties(lp);
- inOrder.verify(mockDnsPref).setSummary(
- Constants.IPV6_DNS.getHostAddress() + "\n" +
- Constants.IPV4_DNS1.getHostAddress() + "\n" +
- Constants.IPV4_DNS2.getHostAddress());
- inOrder.verify(mockDnsPref).setVisible(true);
- }
-
- @Test
- public void onCapabilitiesChanged_callsRefreshIfNecessary() {
- setUpForConnectedNetwork();
- NetworkCapabilities nc = makeNetworkCapabilities();
- when(mockConnectivityManager.getNetworkCapabilities(mockNetwork))
- .thenReturn(new NetworkCapabilities(nc));
-
- String summary = "Connected, no Internet";
- when(mockAccessPoint.getSettingsSummary(true /*convertSavedAsDisconnected*/))
- .thenReturn(summary);
-
- InOrder inOrder = inOrder(mockHeaderController);
- displayAndResume();
- inOrder.verify(mockHeaderController).setSummary(summary);
-
- // Check that an irrelevant capability update does not update the access point summary, as
- // doing so could cause unnecessary jank...
- summary = "Connected";
- when(mockAccessPoint.getSettingsSummary(true /*convertSavedAsDisconnected*/))
- .thenReturn(summary);
- updateNetworkCapabilities(nc);
- inOrder.verify(mockHeaderController, never()).setSummary(any(CharSequence.class));
-
- // ... but that if the network validates, then we do refresh.
- nc.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
- updateNetworkCapabilities(nc);
- inOrder.verify(mockHeaderController).setSummary(summary);
-
- summary = "Connected, no Internet";
- when(mockAccessPoint.getSettingsSummary(true /*convertSavedAsDisconnected*/))
- .thenReturn(summary);
-
- // Another irrelevant update won't cause the UI to refresh...
- updateNetworkCapabilities(nc);
- inOrder.verify(mockHeaderController, never()).setSummary(any(CharSequence.class));
-
- // ... but if the network is no longer validated, then we display "connected, no Internet".
- nc.removeCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
- updateNetworkCapabilities(nc);
- inOrder.verify(mockHeaderController).setSummary(summary);
-
- // UI will be refreshed when private DNS is broken.
- summary = "Private DNS server cannot be accessed";
- when(mockAccessPoint.getSettingsSummary(true /* convertSavedAsDisconnected */))
- .thenReturn(summary);
- nc.setPrivateDnsBroken(true);
- updateNetworkCapabilities(nc);
- inOrder.verify(mockHeaderController).setSummary(summary);
-
- // UI will be refreshed when device connects to a partial connectivity network.
- summary = "Limited connection";
- when(mockAccessPoint.getSettingsSummary(true /*convertSavedAsDisconnected*/))
- .thenReturn(summary);
- nc.addCapability(NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVITY);
- updateNetworkCapabilities(nc);
- inOrder.verify(mockHeaderController).setSummary(summary);
-
- // Although UI will be refreshed when network become validated. The Settings should
- // continue to display "Limited connection" if network still provides partial connectivity.
- nc.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
- updateNetworkCapabilities(nc);
- inOrder.verify(mockHeaderController).setSummary(summary);
- }
-
- @Test
- public void canForgetNetwork_shouldInvisibleIfWithoutConfiguration() {
- setUpForConnectedNetwork();
- when(mockAccessPoint.getConfig()).thenReturn(null);
- mController = newWifiDetailPreferenceController();
-
- displayAndResume();
-
- verify(mockButtonsPref).setButton1Visible(false);
- }
-
- @Test
- public void canForgetNetwork_ephemeral() {
- setUpForConnectedNetwork();
- when(mockWifiInfo.isEphemeral()).thenReturn(true);
- when(mockAccessPoint.getConfig()).thenReturn(null);
-
- displayAndResume();
-
- verify(mockButtonsPref).setButton1Visible(true);
- }
-
- @Test
- public void canForgetNetwork_saved() {
- setUpForConnectedNetwork();
- displayAndResume();
-
- verify(mockButtonsPref).setButton1Visible(true);
- }
-
- @Test
- public void canForgetNetwork_lockedDown() {
- setUpForConnectedNetwork();
- lockDownNetwork();
-
- displayAndResume();
-
- verify(mockButtonsPref).setButton1Visible(false);
- }
-
- @Test
- public void canShareNetwork_shouldInvisibleIfWithoutConfiguration() {
- setUpForConnectedNetwork();
- when(mockAccessPoint.getConfig()).thenReturn(null);
-
- displayAndResume();
-
- verify(mockButtonsPref).setButton4Visible(false);
- }
-
- @Test
- public void canModifyNetwork_saved() {
- setUpForConnectedNetwork();
- assertThat(mController.canModifyNetwork()).isTrue();
- }
-
- @Test
- public void canModifyNetwork_lockedDown() {
- setUpForConnectedNetwork();
- lockDownNetwork();
-
- assertThat(mController.canModifyNetwork()).isFalse();
- }
-
- /**
- * Pretends that current network is locked down by device owner.
- */
- private void lockDownNetwork() {
- final int doUserId = 123;
- final int doUid = 1234;
- String doPackage = "some.package";
-
- mockWifiConfig.creatorUid = doUid;
- ComponentName doComponent = new ComponentName(doPackage, "some.Class");
- try {
- when(mockPackageManager.getPackageUidAsUser(Matchers.anyString(), Matchers.anyInt()))
- .thenReturn(doUid);
- } catch (PackageManager.NameNotFoundException e) {
- //do nothing
- }
- ShadowDevicePolicyManager.getShadow().setDeviceOwnerComponentOnAnyUser(doComponent);
- ShadowDevicePolicyManager.getShadow().setDeviceOwnerUserId(doUserId);
-
- Settings.Global.putInt(mContext.getContentResolver(),
- Settings.Global.WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN, 1);
- }
-
- @Test
- public void forgetNetwork_ephemeral() {
- setUpForConnectedNetwork();
- String ssid = "ssid";
- when(mockWifiInfo.isEphemeral()).thenReturn(true);
- when(mockWifiInfo.getSSID()).thenReturn(ssid);
-
- displayAndResume();
- mForgetClickListener.getValue().onClick(null);
-
- verify(mockWifiManager).disableEphemeralNetwork(ssid);
- verify(mockMetricsFeatureProvider)
- .action(mockActivity, MetricsProto.MetricsEvent.ACTION_WIFI_FORGET);
- }
-
- @Test
- public void forgetNetwork_saved() {
- setUpForConnectedNetwork();
- mockWifiConfig.networkId = 5;
-
- mController.displayPreference(mockScreen);
- mForgetClickListener.getValue().onClick(null);
-
- verify(mockWifiManager).forget(mockWifiConfig.networkId, null);
- verify(mockMetricsFeatureProvider)
- .action(mockActivity, MetricsProto.MetricsEvent.ACTION_WIFI_FORGET);
- }
-
- @Test
- public void forgetNetwork_shouldShowDialog() {
- setUpForConnectedNetwork();
- final WifiDetailPreferenceController spyController = spy(mController);
-
- mockWifiConfig.networkId = 5;
- when(mockAccessPoint.isPasspoint()).thenReturn(true);
- when(mockAccessPoint.getPasspointFqdn()).thenReturn(FQDN);
- spyController.displayPreference(mockScreen);
-
- mForgetClickListener.getValue().onClick(null);
-
- verify(mockWifiManager, times(0)).removePasspointConfiguration(FQDN);
- verify(mockMetricsFeatureProvider, times(0))
- .action(mockActivity, MetricsProto.MetricsEvent.ACTION_WIFI_FORGET);
- verify(spyController).showConfirmForgetDialog();
- }
-
- @Test
- public void networkStateChangedIntent_shouldRefetchInfo() {
- setUpForConnectedNetwork();
-
- displayAndResume();
-
- verify(mockConnectivityManager, times(1)).getNetworkInfo(any(Network.class));
- verify(mockWifiManager, times(1)).getConnectionInfo();
-
- mContext.sendBroadcast(new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION));
-
- verify(mockConnectivityManager, times(2)).getNetworkInfo(any(Network.class));
- verify(mockWifiManager, times(2)).getConnectionInfo();
- }
-
- @Test
- public void networkStateChangedIntent_shouldRefetchInfoForConnectedNetwork() {
- setUpForConnectedNetwork();
-
- displayAndResume();
-
- verify(mockConnectivityManager, times(1)).getNetworkInfo(any(Network.class));
- verify(mockWifiManager, times(1)).getConnectionInfo();
-
- mContext.sendBroadcast(new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION));
-
- verify(mockConnectivityManager, times(2)).getNetworkInfo(any(Network.class));
- verify(mockWifiManager, times(2)).getConnectionInfo();
- }
-
- @Test
- public void rssiChangedIntent_shouldRefetchInfo() {
- setUpForConnectedNetwork();
-
- displayAndResume();
-
- verify(mockConnectivityManager, times(1)).getNetworkInfo(any(Network.class));
- verify(mockWifiManager, times(1)).getConnectionInfo();
-
- mContext.sendBroadcast(new Intent(WifiManager.RSSI_CHANGED_ACTION));
-
- verify(mockConnectivityManager, times(2)).getNetworkInfo(any(Network.class));
- verify(mockWifiManager, times(2)).getConnectionInfo();
- }
-
- @Test
- public void rssiChangedIntent_shouldRefetchInfoForConnectedNetwork() {
- setUpForConnectedNetwork();
- displayAndResume();
-
- verify(mockConnectivityManager, times(1)).getNetworkInfo(any(Network.class));
- verify(mockWifiManager, times(1)).getConnectionInfo();
-
- mContext.sendBroadcast(new Intent(WifiManager.RSSI_CHANGED_ACTION));
-
- verify(mockConnectivityManager, times(2)).getNetworkInfo(any(Network.class));
- verify(mockWifiManager, times(2)).getConnectionInfo();
- }
-
- @Test
- public void networkDisconnectedState_shouldNotFinishActivityForConnectedNetwork() {
- setUpForConnectedNetwork();
-
- displayAndResume();
-
- when(mockConnectivityManager.getNetworkInfo(any(Network.class))).thenReturn(null);
- mContext.sendBroadcast(new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION));
-
- verify(mockActivity, never()).finish();
- }
-
- @Test
- public void networkOnLost_shouldNotFinishActivityForConnectedNetwork() {
- setUpForConnectedNetwork();
-
- displayAndResume();
-
- mCallbackCaptor.getValue().onLost(mockNetwork);
-
- verify(mockActivity, never()).finish();
- }
-
- @Test
- public void ipv6AddressPref_shouldHaveHostAddressTextSet() {
- setUpForConnectedNetwork();
- mLinkProperties.addLinkAddress(Constants.IPV6_LINKLOCAL);
- mLinkProperties.addLinkAddress(Constants.IPV6_GLOBAL1);
- mLinkProperties.addLinkAddress(Constants.IPV6_GLOBAL2);
-
- displayAndResume();
-
- String expectedAddresses = String.join("\n",
- asString(Constants.IPV6_LINKLOCAL),
- asString(Constants.IPV6_GLOBAL1),
- asString(Constants.IPV6_GLOBAL2));
-
- verify(mockIpv6AddressesPref).setSummary(expectedAddresses);
- }
-
- @Test
- public void ipv6AddressPref_shouldNotBeSelectable() {
- setUpForConnectedNetwork();
- mLinkProperties.addLinkAddress(Constants.IPV6_GLOBAL2);
-
- displayAndResume();
-
- assertThat(mockIpv6AddressesPref.isSelectable()).isFalse();
- }
-
- @Test
- public void captivePortal_shouldShowSignInButton() {
- setUpForConnectedNetwork();
-
- InOrder inOrder = inOrder(mockButtonsPref);
-
- displayAndResume();
-
- inOrder.verify(mockButtonsPref).setButton2Visible(false);
-
- NetworkCapabilities nc = makeNetworkCapabilities();
- updateNetworkCapabilities(nc);
- inOrder.verify(mockButtonsPref).setButton2Visible(false);
-
- nc.addCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL);
- updateNetworkCapabilities(nc);
-
- inOrder.verify(mockButtonsPref).setButton2Text(R.string.wifi_sign_in_button_text);
- inOrder.verify(mockButtonsPref).setButton2Visible(true);
-
- nc.removeCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL);
- updateNetworkCapabilities(nc);
- inOrder.verify(mockButtonsPref).setButton2Visible(false);
- }
-
- @Test
- public void captivePortal_shouldShowVenueInfoButton() {
- setUpForConnectedNetwork();
-
- InOrder inOrder = inOrder(mockButtonsPref);
-
- displayAndResume();
-
- inOrder.verify(mockButtonsPref).setButton2Visible(false);
-
- LinkProperties lp = new LinkProperties();
- final CaptivePortalData data = new CaptivePortalData.Builder()
- .setVenueInfoUrl(Uri.parse("https://example.com/info"))
- .build();
- lp.setCaptivePortalData(data);
- updateLinkProperties(lp);
-
- inOrder.verify(mockButtonsPref).setButton2Text(R.string.wifi_venue_website_button_text);
- inOrder.verify(mockButtonsPref).setButton2Visible(true);
-
- lp.setCaptivePortalData(null);
- updateLinkProperties(lp);
- inOrder.verify(mockButtonsPref).setButton2Visible(false);
- }
-
- @Test
- public void testSignInButton_shouldStartCaptivePortalApp() {
- setUpForConnectedNetwork();
-
- displayAndResume();
-
- ArgumentCaptor captor = ArgumentCaptor.forClass(OnClickListener.class);
- verify(mockButtonsPref, atLeastOnce()).setButton2OnClickListener(captor.capture());
- // getValue() returns the last captured value
- captor.getValue().onClick(null);
- verify(mockConnectivityManager).startCaptivePortalApp(mockNetwork);
- verify(mockMetricsFeatureProvider)
- .action(mockActivity, MetricsProto.MetricsEvent.ACTION_WIFI_SIGNIN);
- }
-
- @Test
- public void testSignInButton_shouldHideSignInButtonForDisconnectedNetwork() {
- setUpForDisconnectedNetwork();
- NetworkCapabilities nc = makeNetworkCapabilities();
- nc.addCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL);
- when(mockConnectivityManager.getNetworkCapabilities(mockNetwork))
- .thenReturn(new NetworkCapabilities(nc));
-
- // verify onResume
- displayAndResume();
-
- verify(mockButtonsPref, never()).setButton2Visible(true);
- verify(mockButtonsPref).setButton2Visible(false);
-
- // verify onCapabilitiesChanged
- updateNetworkCapabilities(nc);
-
- verify(mockButtonsPref, never()).setButton2Visible(true);
- verify(mockButtonsPref).setButton2Visible(false);
- }
-
- @Test
- public void testConnectButton_shouldInvisibleForConnectNetwork() {
- setUpForConnectedNetwork();
-
- displayAndResume();
-
- verify(mockButtonsPref, times(1)).setButton3Visible(false);
- }
-
- @Test
- public void testConnectButton_shouldVisibleForDisconnectNetwork() {
- setUpForDisconnectedNetwork();
-
- displayAndResume();
-
- verify(mockButtonsPref, times(1)).setButton3Visible(true);
- verify(mockButtonsPref, times(1)).setButton3Text(R.string.wifi_connect);
- }
-
- private void setUpForToast() {
- Resources res = mContext.getResources();
- when(mockActivity.getResources()).thenReturn(res);
- }
-
- @Test
- public void testConnectButton_clickConnect_displayAsSuccess() {
- setUpForDisconnectedNetwork();
- when(mockWifiManager.isWifiEnabled()).thenReturn(true);
- InOrder inOrder = inOrder(mockButtonsPref);
- String label = "title";
- when(mockAccessPoint.getTitle()).thenReturn(label);
- setUpForToast();
-
- displayAndResume();
-
- // check connect button exist
- verifyConnectBtnSetUpAsVisible(inOrder);
-
- // click connect button
- mController.connectNetwork();
-
- // check display button as connecting
- verify(mockWifiManager, times(1)).connect(anyInt(), any(WifiManager.ActionListener.class));
- verifyConnectBtnSetUpAsConnecting(inOrder);
-
- // update as connected
- when(mockAccessPoint.isActive()).thenReturn(true);
- mController.updateAccessPoint();
-
- // check connect button invisible, be init as default state and toast success message
- verifyConnectBtnBeInitAsDefault(inOrder);
- inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(false);
- assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
- mContext.getString(R.string.wifi_connected_to_message, label));
- }
-
- @Test
- public void testConnectButton_clickConnectButFailed_displayFailMessage() {
- setUpForDisconnectedNetwork();
- ArgumentCaptor connectListenerCaptor =
- ArgumentCaptor.forClass(WifiManager.ActionListener.class);
- when(mockWifiManager.isWifiEnabled()).thenReturn(true);
- InOrder inOrder = inOrder(mockButtonsPref);
- setUpForToast();
-
- displayAndResume();
-
- // check connect button exist
- verifyConnectBtnSetUpAsVisible(inOrder);
-
- // click connect button
- mController.connectNetwork();
-
- // check display button as connecting
- verify(mockWifiManager, times(1)).connect(anyInt(), connectListenerCaptor.capture());
- verifyConnectBtnSetUpAsConnecting(inOrder);
-
- // update as failed
- connectListenerCaptor.getValue().onFailure(-1);
-
- // check connect button visible, be init as default and toast failed message
- verifyConnectBtnBeInitAsDefault(inOrder);
- inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(true);
- assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
- mContext.getString(R.string.wifi_failed_connect_message));
- }
-
- private void verifyConnectBtnSetUpAsVisible(InOrder inOrder) {
- inOrder.verify(mockButtonsPref, times(1)).setButton3Text(R.string.wifi_connect);
- inOrder.verify(mockButtonsPref, times(1)).setButton3Icon(R.drawable.ic_settings_wireless);
- inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(true);
- }
-
- private void verifyConnectBtnSetUpAsConnecting(InOrder inOrder) {
- inOrder.verify(mockButtonsPref, times(1)).setButton3Text(R.string.wifi_connecting);
- inOrder.verify(mockButtonsPref, times(1)).setButton3Enabled(false);
- }
-
- private void verifyConnectBtnBeInitAsDefault(InOrder inOrder) {
- inOrder.verify(mockButtonsPref, times(1)).setButton3Text(R.string.wifi_connect);
- inOrder.verify(mockButtonsPref, times(1)).setButton3Icon(R.drawable.ic_settings_wireless);
- inOrder.verify(mockButtonsPref, times(1)).setButton3Enabled(true);
- }
-
- @Test
- public void testConnectButton_clickConnectButTimeout_displayFailMessage() {
- setUpForDisconnectedNetwork();
- when(mockWifiManager.isWifiEnabled()).thenReturn(true);
- InOrder inOrder = inOrder(mockButtonsPref);
- setUpForToast();
-
- displayAndResume();
-
- // check connect button exist
- verifyConnectBtnSetUpAsVisible(inOrder);
-
- // click connect button
- mController.connectNetwork();
-
- // check display button as connecting
- verify(mockWifiManager, times(1)).connect(anyInt(), any(WifiManager.ActionListener.class));
- verifyConnectBtnSetUpAsConnecting(inOrder);
-
- // update as failed
- mController.mTimer.onFinish();
-
- // check connect button visible, be init as default and toast failed message
- verifyConnectBtnBeInitAsDefault(inOrder);
- inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(true);
- assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
- mContext.getString(R.string.wifi_failed_connect_message));
- }
-
- @Test
- public void testConnectButton_clickConnectButTimeout_displayNotInRangeMessage() {
- setUpForNotInRangeNetwork();
- when(mockWifiManager.isWifiEnabled()).thenReturn(true);
- InOrder inOrder = inOrder(mockButtonsPref);
- setUpForToast();
-
- displayAndResume();
-
- // check connect button exist
- verifyConnectBtnSetUpAsVisible(inOrder);
-
- // click connect button
- mController.connectNetwork();
-
- // check display button as connecting
- verify(mockWifiManager, times(1)).connect(anyInt(), any(WifiManager.ActionListener.class));
- verifyConnectBtnSetUpAsConnecting(inOrder);
-
- // update as failed
- mController.mTimer.onFinish();
-
- // check connect button visible, be init as default and toast failed message
- verifyConnectBtnBeInitAsDefault(inOrder);
- inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(true);
- assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
- mContext.getString(R.string.wifi_not_in_range_message));
- }
-
- @Test
- public void testConnectButton_clickConnectWhenWiFiDisabled_displaySuccessMessage() {
- setUpForDisconnectedNetwork();
- when(mockWifiManager.isWifiEnabled()).thenReturn(false); // wifi disabled
- InOrder inOrder = inOrder(mockButtonsPref);
- String label = "title";
- when(mockAccessPoint.getTitle()).thenReturn(label);
- setUpForToast();
-
- displayAndResume();
-
- // check connect button exist
- verifyConnectBtnSetUpAsVisible(inOrder);
-
- // click connect button
- mController.connectNetwork();
-
- // check turn on Wi-Fi, display button as connecting and toast turn on Wi-Fi message
- verify(mockWifiManager, times(1)).setWifiEnabled(true);
- verifyConnectBtnSetUpAsConnecting(inOrder);
- assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
- mContext.getString(R.string.wifi_turned_on_message));
-
- // notify Wi-Fi enabled
- mController.mWifiListener.onWifiStateChanged(WifiManager.WIFI_STATE_ENABLED);
-
- // check had connect network and icon display as expected
- verify(mockWifiManager, times(1)).connect(anyInt(), any(WifiManager.ActionListener.class));
- verifyConnectBtnSetUpAsConnecting(inOrder);
-
- // update as connected
- when(mockAccessPoint.isActive()).thenReturn(true);
- mController.updateAccessPoint();
-
- // check connect button invisible, be init as default state and toast success message
- verifyConnectBtnBeInitAsDefault(inOrder);
- inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(false);
- assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
- mContext.getString(R.string.wifi_connected_to_message, label));
- }
-
- @Test
- public void testConnectButton_clickConnectWhenWiFiDisabled_failedToConnectWiFi() {
- setUpForDisconnectedNetwork();
- when(mockWifiManager.isWifiEnabled()).thenReturn(false); // wifi disabled
- InOrder inOrder = inOrder(mockButtonsPref);
- setUpForToast();
-
- displayAndResume();
-
- // check connect button exist
- verifyConnectBtnSetUpAsVisible(inOrder);
-
- // click connect button
- mController.connectNetwork();
-
- // check turn on Wi-Fi, display button as connecting and toast turn on Wi-Fi message
- verify(mockWifiManager, times(1)).setWifiEnabled(true);
- verifyConnectBtnSetUpAsConnecting(inOrder);
- assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
- mContext.getString(R.string.wifi_turned_on_message));
-
- // notify Wi-Fi enabled
- mController.mWifiListener.onWifiStateChanged(WifiManager.WIFI_STATE_ENABLED);
-
- // check had connect network and icon display as expected
- verify(mockWifiManager, times(1)).connect(anyInt(), any(WifiManager.ActionListener.class));
- verifyConnectBtnSetUpAsConnecting(inOrder);
-
- // update as failed
- mController.mTimer.onFinish();
-
- // check connect button visible, be init as default and toast failed message
- verifyConnectBtnBeInitAsDefault(inOrder);
- inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(true);
- assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
- mContext.getString(R.string.wifi_failed_connect_message));
- }
-
- @Test
- public void
- testConnectButton_clickConnectWhenWiFiDisabled_failedToConnectWifiBecauseNotInRange() {
- setUpForNotInRangeNetwork();
- when(mockWifiManager.isWifiEnabled()).thenReturn(false); // wifi disabled
- InOrder inOrder = inOrder(mockButtonsPref);
- setUpForToast();
-
- displayAndResume();
-
- // check connect button exist
- verifyConnectBtnSetUpAsVisible(inOrder);
-
- // click connect button
- mController.connectNetwork();
-
- // check turn on Wi-Fi, display button as connecting and toast turn on Wi-Fi message
- verify(mockWifiManager, times(1)).setWifiEnabled(true);
- verifyConnectBtnSetUpAsConnecting(inOrder);
- assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
- mContext.getString(R.string.wifi_turned_on_message));
-
- // notify Wi-Fi enabled
- mController.mWifiListener.onWifiStateChanged(WifiManager.WIFI_STATE_ENABLED);
-
- // check had connect network and icon display as expected
- verify(mockWifiManager, times(1)).connect(anyInt(), any(WifiManager.ActionListener.class));
- verifyConnectBtnSetUpAsConnecting(inOrder);
-
- // update as failed
- mController.mTimer.onFinish();
-
- // check connect button visible, be init as default and toast failed message
- verifyConnectBtnBeInitAsDefault(inOrder);
- inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(true);
- assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
- mContext.getString(R.string.wifi_not_in_range_message));
- }
-
- @Test
- public void testConnectButton_clickConnectWhenWiFiDisabled_failedToEnableWifi() {
- setUpForDisconnectedNetwork();
- when(mockWifiManager.isWifiEnabled()).thenReturn(false); // wifi disabled
- InOrder inOrder = inOrder(mockButtonsPref);
- setUpForToast();
-
- displayAndResume();
-
- // check connect button exist
- verifyConnectBtnSetUpAsVisible(inOrder);
-
- // click connect button
- mController.connectNetwork();
-
- // check turn on Wi-Fi, display button as connecting and toast turn on Wi-Fi message
- verify(mockWifiManager, times(1)).setWifiEnabled(true);
- verifyConnectBtnSetUpAsConnecting(inOrder);
- assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
- mContext.getString(R.string.wifi_turned_on_message));
-
- // notify turn on Wi-Fi failed
- mController.mTimer.onFinish();
-
- // check connect button visible, be init as default and toast failed message
- verifyConnectBtnBeInitAsDefault(inOrder);
- inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(true);
- assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
- mContext.getString(R.string.wifi_failed_connect_message));
- }
-
- @Test
- public void testConnectButton_clickConnectAndBackKey_ignoreTimeoutEvent() {
- setUpForDisconnectedNetwork();
- when(mockWifiManager.isWifiEnabled()).thenReturn(true);
- InOrder inOrder = inOrder(mockButtonsPref);
- setUpForToast();
-
- displayAndResume();
-
- // check connect button exist
- verifyConnectBtnSetUpAsVisible(inOrder);
-
- // click connect button
- mController.connectNetwork();
-
- // check display button as connecting
- verify(mockWifiManager, times(1)).connect(anyInt(), any(WifiManager.ActionListener.class));
- verifyConnectBtnSetUpAsConnecting(inOrder);
-
- // leave detail page
- when(mockFragment.getActivity()).thenReturn(null);
-
- // timeout happened
- mController.mTimer.onFinish();
-
- // check connect button visible, be init as default and toast failed message
- inOrder.verify(mockButtonsPref, never()).setButton3Text(R.string.wifi_connect);
- inOrder.verify(mockButtonsPref, never()).setButton3Icon(R.drawable.ic_settings_wireless);
- inOrder.verify(mockButtonsPref, never()).setButton3Enabled(true);
- inOrder.verify(mockButtonsPref, never()).setButton3Visible(true);
- assertThat(ShadowToast.shownToastCount()).isEqualTo(0);
- }
-
- @Test
- public void updateAccessPoint_returnFalseForNothingChanged() {
- setUpForDisconnectedNetwork();
-
- displayAndResume();
- boolean changed = mController.updateAccessPoint();
-
- assertThat(changed).isFalse();
- }
-
- @Test
- public void updateAccessPoint_returnTrueForSignalLevelChanged() {
- setUpForDisconnectedNetwork();
-
- displayAndResume();
-
- // Level changed
- when(mockAccessPoint.getLevel()).thenReturn(LEVEL + 1);
- boolean changed = mController.updateAccessPoint();
-
- assertThat(changed).isTrue();
- }
-
- @Test
- public void updateAccessPoint_returnTrueForChangeAsNotInRange() {
- setUpForDisconnectedNetwork();
-
- displayAndResume();
-
- // change as not in range
- when(mockAccessPoint.matches(any(AccessPoint.class))).thenReturn(false);
- boolean changed = mController.updateAccessPoint();
-
- assertThat(changed).isTrue();
- }
-
- @Test
- public void updateAccessPoint_returnTrueForChangeAsInRange() {
- setUpForNotInRangeNetwork();
-
- displayAndResume();
-
- // change as in range
- when(mockAccessPoint.matches(any(AccessPoint.class))).thenReturn(true);
- boolean changed = mController.updateAccessPoint();
-
- assertThat(changed).isTrue();
- }
-
- @Test
- public void updateAccessPoint_returnTrueForChangeAsConnected() {
- setUpForDisconnectedNetwork();
-
- displayAndResume();
-
- // change as connected
- when(mockAccessPoint.isActive()).thenReturn(true);
- boolean changed = mController.updateAccessPoint();
-
- assertThat(changed).isTrue();
- }
-
- @Test
- public void updateAccessPoint_returnTrueForChangeAsDisconnected() {
- setUpForConnectedNetwork();
-
- displayAndResume();
-
- // change as disconnected
- when(mockAccessPoint.isActive()).thenReturn(false);
- boolean changed = mController.updateAccessPoint();
-
- assertThat(changed).isTrue();
- }
-
- @Test
- public void updateAccessPoint_returnTrueForAccessPointUpdated() {
- setUpForConnectedNetwork();
-
- displayAndResume();
-
- // change as disconnected
- when(mockAccessPoint.update(mockWifiConfig, mockWifiInfo, mockNetworkInfo))
- .thenReturn(true);
- boolean changed = mController.updateAccessPoint();
-
- assertThat(changed).isTrue();
- }
-
- @Test
- public void testRefreshRssiViews_shouldNotUpdateIfLevelIsSameForConnectedNetwork() {
- setUpForConnectedNetwork();
- displayAndResume();
-
- mContext.sendBroadcast(new Intent(WifiManager.RSSI_CHANGED_ACTION));
-
- verify(mockAccessPoint, times(3)).getLevel();
- verify(mockIconInjector, times(1)).getIcon(anyInt());
- }
-
- @Test
- public void testRefreshRssiViews_shouldUpdateOnLevelChangeForConnectedNetwork() {
- setUpForConnectedNetwork();
- displayAndResume();
-
- when(mockAccessPoint.getLevel()).thenReturn(0);
- mContext.sendBroadcast(new Intent(WifiManager.RSSI_CHANGED_ACTION));
-
- verify(mockAccessPoint, times(4)).getLevel();
- verify(mockIconInjector, times(2)).getIcon(anyInt());
- }
-
- @Test
- public void testRefreshRssiViews_shouldNotUpdateForNotInRangeNetwork() {
- setUpForNotInRangeNetwork();
-
- displayAndResume();
-
- when(mockAccessPoint.getLevel()).thenReturn(0);
- mContext.sendBroadcast(new Intent(WifiManager.RSSI_CHANGED_ACTION));
-
- verify(mockSignalStrengthPref, times(2)).setVisible(false);
- }
-
- @Test
- public void testRedrawIconForHeader_shouldEnlarge() {
- setUpForConnectedNetwork();
- ArgumentCaptor drawableCaptor =
- ArgumentCaptor.forClass(BitmapDrawable.class);
- Drawable original = mContext.getDrawable(Utils.getWifiIconResource(LEVEL)).mutate();
- when(mockIconInjector.getIcon(anyInt())).thenReturn(original);
-
- displayAndResume();
-
- verify(mockHeaderController, times(1)).setIcon(drawableCaptor.capture());
-
- int expectedSize = mContext.getResources().getDimensionPixelSize(
- R.dimen.wifi_detail_page_header_image_size);
- BitmapDrawable icon = drawableCaptor.getValue();
- assertThat(icon.getMinimumWidth()).isEqualTo(expectedSize);
- assertThat(icon.getMinimumHeight()).isEqualTo(expectedSize);
- }
-
- @Test
- public void testRedrawIconForHeader_shouldEnlargeForDisconnectedNetwork() {
- setUpForDisconnectedNetwork();
- ArgumentCaptor drawableCaptor =
- ArgumentCaptor.forClass(BitmapDrawable.class);
- Drawable original = mContext.getDrawable(Utils.getWifiIconResource(LEVEL)).mutate();
- when(mockIconInjector.getIcon(anyInt())).thenReturn(original);
-
- displayAndResume();
-
- verify(mockHeaderController, times(1)).setIcon(drawableCaptor.capture());
-
- int expectedSize = mContext.getResources().getDimensionPixelSize(
- R.dimen.wifi_detail_page_header_image_size);
- BitmapDrawable icon = drawableCaptor.getValue();
- assertThat(icon.getMinimumWidth()).isEqualTo(expectedSize);
- assertThat(icon.getMinimumHeight()).isEqualTo(expectedSize);
- }
-
- @Test
- public void testRedrawIconForHeader_shouldNotEnlargeIfNotVectorDrawable() {
- setUpForConnectedNetwork();
- ArgumentCaptor drawableCaptor =
- ArgumentCaptor.forClass(ColorDrawable.class);
-
- displayAndResume();
-
- verify(mockHeaderController, times(1)).setIcon(drawableCaptor.capture());
- ColorDrawable icon = drawableCaptor.getValue();
- assertThat(icon).isNotNull();
- }
-
- @Test
- public void checkMacTitle_whenPrivacyRandomizedMac_shouldBeRandom() {
- setUpForDisconnectedNetwork();
- mockWifiConfig.macRandomizationSetting = WifiConfiguration.RANDOMIZATION_PERSISTENT;
- when(mockWifiConfig.getRandomizedMacAddress()).thenReturn(mockMacAddress);
- when(mockMacAddress.toString()).thenReturn(RANDOMIZED_MAC_ADDRESS);
-
- displayAndResume();
-
- verify(mockMacAddressPref).setTitle(R.string.wifi_advanced_randomized_mac_address_title);
- }
-
- @Test
- public void checkMacTitle_whenPrivacyDeviceMac_shouldBeFactory() {
- setUpForDisconnectedNetwork();
- mockWifiConfig.macRandomizationSetting = WifiConfiguration.RANDOMIZATION_NONE;
- when(mockWifiConfig.getRandomizedMacAddress()).thenReturn(mockMacAddress);
- when(mockWifiManager.getFactoryMacAddresses())
- .thenReturn(new String[]{FACTORY_MAC_ADDRESS});
-
- displayAndResume();
-
- verify(mockMacAddressPref).setTitle(R.string.wifi_advanced_device_mac_address_title);
- }
-
- @Test
- public void entityHeader_expiredPasspointR1_shouldHandleExpiration() {
- when(mockAccessPoint.isPasspoint()).thenReturn(true);
- when(mockAccessPoint.isPasspointConfigurationR1()).thenReturn(true);
- when(mockAccessPoint.isExpired()).thenReturn(true);
- setUpForDisconnectedNetwork();
- String expireSummary = mContext.getResources().getString(
- com.android.settingslib.R.string.wifi_passpoint_expired);
-
- displayAndResume();
-
- verify(mockButtonsPref, atLeastOnce()).setButton3Visible(false);
- verify(mockHeaderController).setSummary(expireSummary);
- }
-
- private ActionButtonsPreference createMock() {
- final ActionButtonsPreference pref = mock(ActionButtonsPreference.class);
- when(pref.setButton1Text(anyInt())).thenReturn(pref);
- when(pref.setButton1Icon(anyInt())).thenReturn(pref);
- when(pref.setButton1Enabled(anyBoolean())).thenReturn(pref);
- when(pref.setButton1Visible(anyBoolean())).thenReturn(pref);
- when(pref.setButton1OnClickListener(any(View.OnClickListener.class))).thenReturn(pref);
-
- when(pref.setButton2Text(anyInt())).thenReturn(pref);
- when(pref.setButton2Icon(anyInt())).thenReturn(pref);
- when(pref.setButton2Enabled(anyBoolean())).thenReturn(pref);
- when(pref.setButton2Visible(anyBoolean())).thenReturn(pref);
- when(pref.setButton2OnClickListener(any(View.OnClickListener.class))).thenReturn(pref);
-
- when(pref.setButton3Text(anyInt())).thenReturn(pref);
- when(pref.setButton3Icon(anyInt())).thenReturn(pref);
- when(pref.setButton3Enabled(anyBoolean())).thenReturn(pref);
- when(pref.setButton3Visible(anyBoolean())).thenReturn(pref);
- when(pref.setButton3OnClickListener(any(View.OnClickListener.class))).thenReturn(pref);
-
- when(pref.setButton4Text(anyInt())).thenReturn(pref);
- when(pref.setButton4Icon(anyInt())).thenReturn(pref);
- when(pref.setButton4Enabled(anyBoolean())).thenReturn(pref);
- when(pref.setButton4Visible(anyBoolean())).thenReturn(pref);
- when(pref.setButton4OnClickListener(any(View.OnClickListener.class))).thenReturn(pref);
-
- return pref;
- }
-}
diff --git a/tests/robotests/src/com/android/settings/wifi/details/WifiMeteredPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/details/WifiMeteredPreferenceControllerTest.java
deleted file mode 100644
index 30665e6a865..00000000000
--- a/tests/robotests/src/com/android/settings/wifi/details/WifiMeteredPreferenceControllerTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2018 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.wifi.details;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-
-import android.content.Context;
-import android.net.wifi.WifiConfiguration;
-
-import androidx.preference.DropDownPreference;
-
-import com.android.settings.R;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class WifiMeteredPreferenceControllerTest {
-
- private static final int METERED_OVERRIDE_NONE = 0;
- private static final int METERED_OVERRIDE_METERED = 1;
- private static final int METERED_OVERRIDE_NOT_METERED = 2;
-
- @Mock
- private WifiConfiguration mWifiConfiguration;
-
- private WifiMeteredPreferenceController mPreferenceController;
- private Context mContext;
- private DropDownPreference mDropDownPreference;
-
- @Before
- public void setUp() {
- mContext = RuntimeEnvironment.application;
-
- mPreferenceController = spy(
- new WifiMeteredPreferenceController(mContext, mWifiConfiguration));
- mDropDownPreference = new DropDownPreference(mContext);
- mDropDownPreference.setEntries(R.array.wifi_metered_entries);
- mDropDownPreference.setEntryValues(R.array.wifi_metered_values);
- }
-
- @Test
- public void testUpdateState_wifiMetered_setCorrectValue() {
- doReturn(METERED_OVERRIDE_METERED).when(mPreferenceController).getMeteredOverride();
-
- mPreferenceController.updateState(mDropDownPreference);
-
- assertThat(mDropDownPreference.getEntry()).isEqualTo("Treat as metered");
- }
-
- @Test
- public void testUpdateState_wifiNotMetered_setCorrectValue() {
- doReturn(METERED_OVERRIDE_NOT_METERED).when(mPreferenceController).getMeteredOverride();
-
- mPreferenceController.updateState(mDropDownPreference);
-
- assertThat(mDropDownPreference.getEntry()).isEqualTo("Treat as unmetered");
- }
-
- @Test
- public void testUpdateState_wifiAuto_setCorrectValue() {
- doReturn(METERED_OVERRIDE_NONE).when(mPreferenceController).getMeteredOverride();
-
- mPreferenceController.updateState(mDropDownPreference);
-
- assertThat(mDropDownPreference.getEntry()).isEqualTo("Detect automatically");
- }
-
- @Test
- public void testController_resilientToNullConfig() {
- mPreferenceController = spy(new WifiMeteredPreferenceController(mContext, null));
-
- mPreferenceController.getMeteredOverride();
- mPreferenceController.onPreferenceChange(mDropDownPreference, 1);
- }
-}