[RESTRICT AUTOMERGE] [Provider Model] Fix WiFi SSID disappear issue

- When WiFi is connected, there will be no internet access for a short
time. Need to detect the ConnectivityManager network to assign WiFi to
the default network, and make sure that the Wi-Fi connection is ready
for internet access.

- Refine the main thread functions to avoid calling unnecessary
functions

Bug: 195893061
Test: manual test
atest -c InternetAdapterTest \
         InternetDialogControllerTest \
         InternetDialogTest

Change-Id: I505c9b044f8b139fb6c5d4df415c5ad56ce7b301
(cherry picked from commit 65aa2ec508)
This commit is contained in:
Weng Su
2021-08-16 07:34:27 +08:00
committed by Zoey Chen
parent 7c0b74fd8c
commit 22306c37b4
6 changed files with 284 additions and 218 deletions

View File

@@ -24,7 +24,6 @@ import android.content.Intent;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.text.Html; import android.text.Html;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity; import android.view.Gravity;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@@ -34,6 +33,7 @@ import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.android.settingslib.Utils; import com.android.settingslib.Utils;
@@ -43,7 +43,6 @@ import com.android.wifitrackerlib.WifiEntry;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
/** /**
* Adapter for showing Wi-Fi networks. * Adapter for showing Wi-Fi networks.
@@ -54,9 +53,10 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern
private static final String ACTION_WIFI_DIALOG = "com.android.settings.WIFI_DIALOG"; private static final String ACTION_WIFI_DIALOG = "com.android.settings.WIFI_DIALOG";
private static final String EXTRA_CHOSEN_WIFI_ENTRY_KEY = "key_chosen_wifientry_key"; private static final String EXTRA_CHOSEN_WIFI_ENTRY_KEY = "key_chosen_wifientry_key";
private static final String EXTRA_CONNECT_FOR_CALLER = "connect_for_caller"; private static final String EXTRA_CONNECT_FOR_CALLER = "connect_for_caller";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
private final InternetDialogController mInternetDialogController; private final InternetDialogController mInternetDialogController;
private List<WifiEntry> mWifiEntries;
private int mWifiEntriesCount;
protected View mHolderView; protected View mHolderView;
protected Context mContext; protected Context mContext;
@@ -76,54 +76,31 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern
@Override @Override
public void onBindViewHolder(@NonNull InternetViewHolder viewHolder, int position) { public void onBindViewHolder(@NonNull InternetViewHolder viewHolder, int position) {
List<WifiEntry> wifiList = getWifiEntryList(); if (mWifiEntries == null || position >= mWifiEntriesCount) {
if (wifiList != null && wifiList.size() != 0) { return;
int count = getItemCount();
if (wifiList.size() > count) {
wifiList = getWifiEntryList().subList(0, count - 1);
}
if (position < wifiList.size()) {
viewHolder.onBind(wifiList.get(position));
}
} else if (DEBUG) {
Log.d(TAG, "onBindViewHolder, Wi-Fi entry list = null");
} }
} viewHolder.onBind(mWifiEntries.get(position));
private List<WifiEntry> getWifiEntryList() {
if (mInternetDialogController.getWifiEntryList() == null) {
return null;
}
return mInternetDialogController.getWifiEntryList().stream()
.filter(wifiEntry -> (!wifiEntry.isDefaultNetwork()
|| !wifiEntry.hasInternetAccess()))
.limit(getItemCount())
.collect(Collectors.toList());
} }
/** /**
* The total number of networks (mobile network and entries of Wi-Fi) should be four in * Updates the Wi-Fi networks.
* {@link InternetDialog}.
* *
* Airplane mode is ON (mobile network is gone): * @param wifiEntries the updated Wi-Fi entries.
* Return four Wi-Fi's entries if no internet Wi-Fi. * @param wifiEntriesCount the total number of Wi-Fi entries.
* Return three Wi-Fi's entries if one internet Wi-Fi. */
* Airplane mode is OFF (mobile network is visible): public void setWifiEntries(@Nullable List<WifiEntry> wifiEntries, int wifiEntriesCount) {
* Return three Wi-Fi's entries if no internet Wi-Fi. mWifiEntries = wifiEntries;
* Return two Wi-Fi's entries if one internet Wi-Fi. mWifiEntriesCount = wifiEntriesCount;
}
/**
* Gets the total number of Wi-Fi networks.
* *
* @return The total number of networks. * @return The total number of Wi-Fi entries.
*/ */
@Override @Override
public int getItemCount() { public int getItemCount() {
final boolean hasInternetWifi = mInternetDialogController.getInternetWifiEntry() != null; return mWifiEntriesCount;
if (mInternetDialogController.isAirplaneModeEnabled()) {
return hasInternetWifi ? 3 : 4;
} else {
return hasInternetWifi ? 2 : 3;
}
} }
/** /**
@@ -210,6 +187,9 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern
} }
Drawable getWifiDrawable(@NonNull WifiEntry wifiEntry) throws Throwable { Drawable getWifiDrawable(@NonNull WifiEntry wifiEntry) throws Throwable {
if (wifiEntry.getLevel() == WifiEntry.WIFI_LEVEL_UNREACHABLE) {
return null;
}
final Drawable drawable = mWifiIconInjector.getIcon(wifiEntry.shouldShowXLevelIcon(), final Drawable drawable = mWifiIconInjector.getIcon(wifiEntry.shouldShowXLevelIcon(),
wifiEntry.getLevel()); wifiEntry.getLevel());
if (drawable == null) { if (drawable == null) {

View File

@@ -21,13 +21,11 @@ import static com.android.systemui.Prefs.Key.QS_HAS_TURNED_OFF_MOBILE_DATA;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.net.Network; import android.net.Network;
import android.net.NetworkCapabilities; import android.net.NetworkCapabilities;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
@@ -54,7 +52,9 @@ import android.widget.ProgressBar;
import android.widget.Switch; import android.widget.Switch;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import androidx.annotation.WorkerThread;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
@@ -91,8 +91,6 @@ public class InternetDialog extends SystemUIDialog implements
@VisibleForTesting @VisibleForTesting
protected View mDialogView; protected View mDialogView;
@VisibleForTesting @VisibleForTesting
protected WifiEntry mConnectedWifiEntry;
@VisibleForTesting
protected boolean mCanConfigWifi; protected boolean mCanConfigWifi;
private InternetDialogFactory mInternetDialogFactory; private InternetDialogFactory mInternetDialogFactory;
@@ -131,6 +129,10 @@ public class InternetDialog extends SystemUIDialog implements
private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
private boolean mCanConfigMobileData; private boolean mCanConfigMobileData;
// Wi-Fi entries
protected WifiEntry mConnectedWifiEntry;
protected int mWifiEntriesCount;
// Wi-Fi scanning progress bar // Wi-Fi scanning progress bar
protected boolean mIsProgressBarVisible; protected boolean mIsProgressBarVisible;
protected boolean mIsSearchingHidden; protected boolean mIsSearchingHidden;
@@ -315,15 +317,10 @@ public class InternetDialog extends SystemUIDialog implements
updateWifiToggle(isWifiEnabled, isDeviceLocked); updateWifiToggle(isWifiEnabled, isDeviceLocked);
updateConnectedWifi(isWifiEnabled, isDeviceLocked); updateConnectedWifi(isWifiEnabled, isDeviceLocked);
List<WifiEntry> wifiEntryList = mInternetDialogController.getWifiEntryList(); final int visibility = (isDeviceLocked || !isWifiEnabled || mWifiEntriesCount <= 0)
final int wifiListVisibility = ? View.GONE : View.VISIBLE;
(isDeviceLocked || wifiEntryList == null || wifiEntryList.size() <= 0) mWifiRecyclerView.setVisibility(visibility);
? View.GONE : View.VISIBLE; mSeeAllLayout.setVisibility(visibility);
mWifiRecyclerView.setVisibility(wifiListVisibility);
if (wifiListVisibility == View.VISIBLE) {
mAdapter.notifyDataSetChanged();
}
mSeeAllLayout.setVisibility(wifiListVisibility);
} }
private void setOnClickListener() { private void setOnClickListener() {
@@ -457,8 +454,7 @@ public class InternetDialog extends SystemUIDialog implements
return; return;
} }
setProgressBarVisible(true); setProgressBarVisible(true);
List<ScanResult> wifiScanResults = mWifiManager.getScanResults(); if (mConnectedWifiEntry != null || mWifiEntriesCount > 0) {
if (wifiScanResults != null && wifiScanResults.size() > 0) {
mHandler.postDelayed(mHideProgressBarRunnable, PROGRESS_DELAY_MS); mHandler.postDelayed(mHideProgressBarRunnable, PROGRESS_DELAY_MS);
} else if (!mIsSearchingHidden) { } else if (!mIsSearchingHidden) {
mHandler.postDelayed(mHideSearchingRunnable, PROGRESS_DELAY_MS); mHandler.postDelayed(mHideSearchingRunnable, PROGRESS_DELAY_MS);
@@ -543,8 +539,8 @@ public class InternetDialog extends SystemUIDialog implements
} }
@Override @Override
@WorkerThread
public void onDataConnectionStateChanged(int state, int networkType) { public void onDataConnectionStateChanged(int state, int networkType) {
mAdapter.notifyDataSetChanged();
mHandler.post(() -> updateDialog()); mHandler.post(() -> updateDialog());
} }
@@ -559,10 +555,16 @@ public class InternetDialog extends SystemUIDialog implements
} }
@Override @Override
public void onAccessPointsChanged(List<WifiEntry> wifiEntryList, WifiEntry connectedEntry) { @WorkerThread
public void onAccessPointsChanged(@Nullable List<WifiEntry> wifiEntries,
@Nullable WifiEntry connectedEntry) {
mConnectedWifiEntry = connectedEntry; mConnectedWifiEntry = connectedEntry;
mAdapter.notifyDataSetChanged(); mWifiEntriesCount = wifiEntries == null ? 0 : wifiEntries.size();
mHandler.post(() -> updateDialog()); mAdapter.setWifiEntries(wifiEntries, mWifiEntriesCount);
mHandler.post(() -> {
mAdapter.notifyDataSetChanged();
updateDialog();
});
} }
@Override @Override
@@ -575,24 +577,6 @@ public class InternetDialog extends SystemUIDialog implements
} }
} }
@Override
public void onWifiStateReceived(Context context, Intent intent) {
if (intent == null) {
return;
}
String action = intent.getAction();
if (action.equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
mInternetDialogController.scanWifiAccessPoints();
showProgressBar();
return;
}
if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
mHandler.post(() -> updateDialog());
}
}
public enum InternetDialogEvent implements UiEventLogger.UiEventEnum { public enum InternetDialogEvent implements UiEventLogger.UiEventEnum {
@UiEvent(doc = "The Internet dialog became visible on the screen.") @UiEvent(doc = "The Internet dialog became visible on the screen.")
INTERNET_DIALOG_SHOW(843); INTERNET_DIALOG_SHOW(843);

View File

@@ -32,7 +32,6 @@ import android.net.ConnectivityManager;
import android.net.Network; import android.net.Network;
import android.net.NetworkCapabilities; import android.net.NetworkCapabilities;
import android.net.NetworkRequest; import android.net.NetworkRequest;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Handler; import android.os.Handler;
import android.provider.Settings; import android.provider.Settings;
@@ -53,6 +52,7 @@ import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import androidx.annotation.WorkerThread;
import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLogger;
import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitor;
@@ -108,6 +108,8 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
R.string.all_network_unavailable; R.string.all_network_unavailable;
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
static final int MAX_WIFI_ENTRY_COUNT = 4;
private WifiManager mWifiManager; private WifiManager mWifiManager;
private Context mContext; private Context mContext;
private SubscriptionManager mSubscriptionManager; private SubscriptionManager mSubscriptionManager;
@@ -122,7 +124,8 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
private AccessPointController mAccessPointController; private AccessPointController mAccessPointController;
private IntentFilter mConnectionStateFilter; private IntentFilter mConnectionStateFilter;
private InternetDialogCallback mCallback; private InternetDialogCallback mCallback;
private List<WifiEntry> mWifiEntry; private WifiEntry mConnectedEntry;
private int mWifiEntriesCount;
private UiEventLogger mUiEventLogger; private UiEventLogger mUiEventLogger;
private BroadcastDispatcher mBroadcastDispatcher; private BroadcastDispatcher mBroadcastDispatcher;
private KeyguardUpdateMonitor mKeyguardUpdateMonitor; private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
@@ -132,8 +135,6 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
@VisibleForTesting @VisibleForTesting
protected ActivityStarter mActivityStarter; protected ActivityStarter mActivityStarter;
@VisibleForTesting @VisibleForTesting
protected WifiEntry mConnectedEntry;
@VisibleForTesting
protected SubscriptionManager.OnSubscriptionsChangedListener mOnSubscriptionsChangedListener; protected SubscriptionManager.OnSubscriptionsChangedListener mOnSubscriptionsChangedListener;
@VisibleForTesting @VisibleForTesting
protected InternetTelephonyCallback mInternetTelephonyCallback; protected InternetTelephonyCallback mInternetTelephonyCallback;
@@ -141,9 +142,8 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
protected WifiUtils.InternetIconInjector mWifiIconInjector; protected WifiUtils.InternetIconInjector mWifiIconInjector;
@VisibleForTesting @VisibleForTesting
protected boolean mCanConfigWifi; protected boolean mCanConfigWifi;
@VisibleForTesting @VisibleForTesting
KeyguardStateController mKeyguardStateController; protected KeyguardStateController mKeyguardStateController;
private final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback = private final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback =
new KeyguardUpdateMonitorCallback() { new KeyguardUpdateMonitorCallback() {
@@ -185,8 +185,6 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
mKeyguardUpdateMonitor = keyguardUpdateMonitor; mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mKeyguardStateController = keyguardStateController; mKeyguardStateController = keyguardStateController;
mConnectionStateFilter = new IntentFilter(); mConnectionStateFilter = new IntentFilter();
mConnectionStateFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
mConnectionStateFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
mConnectionStateFilter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED); mConnectionStateFilter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
mUiEventLogger = uiEventLogger; mUiEventLogger = uiEventLogger;
mActivityStarter = starter; mActivityStarter = starter;
@@ -291,8 +289,7 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
return mContext.getText(SUBTITLE_TEXT_UNLOCK_TO_VIEW_NETWORKS); return mContext.getText(SUBTITLE_TEXT_UNLOCK_TO_VIEW_NETWORKS);
} }
final List<ScanResult> wifiList = mWifiManager.getScanResults(); if (mConnectedEntry != null || mWifiEntriesCount > 0) {
if (wifiList != null && wifiList.size() != 0) {
return mCanConfigWifi ? mContext.getText(SUBTITLE_TEXT_TAP_A_NETWORK_TO_CONNECT) : null; return mCanConfigWifi ? mContext.getText(SUBTITLE_TEXT_TAP_A_NETWORK_TO_CONNECT) : null;
} }
@@ -576,18 +573,6 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
} }
} }
List<WifiEntry> getWifiEntryList() {
return mWifiEntry;
}
WifiEntry getInternetWifiEntry() {
if (mConnectedEntry == null || !mConnectedEntry.isDefaultNetwork()
|| !mConnectedEntry.hasInternetAccess()) {
return null;
}
return mConnectedEntry;
}
WifiManager getWifiManager() { WifiManager getWifiManager() {
return mWifiManager; return mWifiManager;
} }
@@ -765,22 +750,33 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
} }
} }
void scanWifiAccessPoints() { private void scanWifiAccessPoints() {
if (mCanConfigWifi) { if (mCanConfigWifi) {
mAccessPointController.scanForAccessPoints(); mAccessPointController.scanForAccessPoints();
} }
} }
@Override @Override
@WorkerThread
public void onAccessPointsChanged(List<WifiEntry> accessPoints) { public void onAccessPointsChanged(List<WifiEntry> accessPoints) {
if (accessPoints == null || !mCanConfigWifi) { if (!mCanConfigWifi) {
return;
}
if (accessPoints == null || accessPoints.size() == 0) {
mConnectedEntry = null;
mWifiEntriesCount = 0;
if (mCallback != null) {
mCallback.onAccessPointsChanged(null /* wifiEntries */, null /* connectedEntry */);
}
return; return;
} }
boolean hasConnectedWifi = false; boolean hasConnectedWifi = false;
mWifiEntry = accessPoints; final int accessPointSize = accessPoints.size();
for (WifiEntry wifiEntry : accessPoints) { for (int i = 0; i < accessPointSize; i++) {
if (wifiEntry.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED) { WifiEntry wifiEntry = accessPoints.get(i);
if (wifiEntry.isDefaultNetwork() && wifiEntry.hasInternetAccess()) {
mConnectedEntry = wifiEntry; mConnectedEntry = wifiEntry;
hasConnectedWifi = true; hasConnectedWifi = true;
break; break;
@@ -790,7 +786,23 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
mConnectedEntry = null; mConnectedEntry = null;
} }
mCallback.onAccessPointsChanged(mWifiEntry, getInternetWifiEntry()); int count = MAX_WIFI_ENTRY_COUNT;
if (hasCarrier()) {
count -= 1;
}
if (hasConnectedWifi) {
count -= 1;
}
final List<WifiEntry> wifiEntries = accessPoints.stream()
.filter(wifiEntry -> (!wifiEntry.isDefaultNetwork()
|| !wifiEntry.hasInternetAccess()))
.limit(count)
.collect(Collectors.toList());
mWifiEntriesCount = wifiEntries == null ? 0 : wifiEntries.size();
if (mCallback != null) {
mCallback.onAccessPointsChanged(wifiEntries, mConnectedEntry);
}
} }
@Override @Override
@@ -843,8 +855,17 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
private class DataConnectivityListener extends ConnectivityManager.NetworkCallback { private class DataConnectivityListener extends ConnectivityManager.NetworkCallback {
@Override @Override
@WorkerThread
public void onCapabilitiesChanged(@NonNull Network network, public void onCapabilitiesChanged(@NonNull Network network,
@NonNull NetworkCapabilities networkCapabilities) { @NonNull NetworkCapabilities networkCapabilities) {
if (mCanConfigWifi) {
for (int transport : networkCapabilities.getTransportTypes()) {
if (transport == NetworkCapabilities.TRANSPORT_WIFI) {
scanWifiAccessPoints();
break;
}
}
}
final Network activeNetwork = mConnectivityManager.getActiveNetwork(); final Network activeNetwork = mConnectivityManager.getActiveNetwork();
if (activeNetwork != null && activeNetwork.equals(network)) { if (activeNetwork != null && activeNetwork.equals(network)) {
// update UI // update UI
@@ -857,11 +878,6 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
final String action = intent.getAction(); final String action = intent.getAction();
if (mCanConfigWifi && (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)
|| action.equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION))) {
mCallback.onWifiStateReceived(context, intent);
}
if (action.equals(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)) { if (action.equals(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)) {
if (DEBUG) { if (DEBUG) {
Log.d(TAG, "ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED"); Log.d(TAG, "ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED");
@@ -917,8 +933,7 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
void dismissDialog(); void dismissDialog();
void onAccessPointsChanged(List<WifiEntry> wifiEntryList, WifiEntry connectedEntry); void onAccessPointsChanged(@Nullable List<WifiEntry> wifiEntries,
@Nullable WifiEntry connectedEntry);
void onWifiStateReceived(Context context, Intent intent);
} }
} }

View File

@@ -2,8 +2,11 @@ package com.android.systemui.qs.tiles.dialog;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@@ -24,6 +27,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
@SmallTest @SmallTest
@RunWith(AndroidTestingRunner.class) @RunWith(AndroidTestingRunner.class)
@@ -35,6 +39,8 @@ public class InternetAdapterTest extends SysuiTestCase {
@Mock @Mock
private WifiEntry mInternetWifiEntry; private WifiEntry mInternetWifiEntry;
@Mock @Mock
private List<WifiEntry> mWifiEntries;
@Mock
private WifiEntry mWifiEntry; private WifiEntry mWifiEntry;
@Mock @Mock
private InternetDialogController mInternetDialogController; private InternetDialogController mInternetDialogController;
@@ -56,43 +62,17 @@ public class InternetAdapterTest extends SysuiTestCase {
mInternetAdapter = new InternetAdapter(mInternetDialogController); mInternetAdapter = new InternetAdapter(mInternetDialogController);
mViewHolder = mInternetAdapter.onCreateViewHolder(new LinearLayout(mContext), 0); mViewHolder = mInternetAdapter.onCreateViewHolder(new LinearLayout(mContext), 0);
when(mInternetDialogController.getInternetWifiEntry()).thenReturn(mInternetWifiEntry); mInternetAdapter.setWifiEntries(Arrays.asList(mWifiEntry), 1 /* wifiEntriesCount */);
when(mInternetDialogController.getWifiEntryList()).thenReturn(Arrays.asList(mWifiEntry));
mViewHolder.mWifiIconInjector = mWifiIconInjector; mViewHolder.mWifiIconInjector = mWifiIconInjector;
} }
@Test @Test
public void getItemCount_withApmOnWifiOnNoInternetWifi_returnFour() { public void getItemCount_returnWifiEntriesCount() {
// The preconditions WiFi ON is already in setUp() for (int i = 0; i < InternetDialogController.MAX_WIFI_ENTRY_COUNT; i++) {
when(mInternetDialogController.getInternetWifiEntry()).thenReturn(null); mInternetAdapter.setWifiEntries(mWifiEntries, i /* wifiEntriesCount */);
when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(true);
assertThat(mInternetAdapter.getItemCount()).isEqualTo(4); assertThat(mInternetAdapter.getItemCount()).isEqualTo(i);
} }
@Test
public void getItemCount_withApmOnWifiOnHasInternetWifi_returnThree() {
// The preconditions WiFi ON and Internet WiFi are already in setUp()
when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(true);
assertThat(mInternetAdapter.getItemCount()).isEqualTo(3);
}
@Test
public void getItemCount_withApmOffWifiOnNoInternetWifi_returnThree() {
// The preconditions WiFi ON is already in setUp()
when(mInternetDialogController.getInternetWifiEntry()).thenReturn(null);
when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(false);
assertThat(mInternetAdapter.getItemCount()).isEqualTo(3);
}
@Test
public void getItemCount_withApmOffWifiOnHasInternetWifi_returnTwo() {
// The preconditions WiFi ON and Internet WiFi are already in setUp()
when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(false);
assertThat(mInternetAdapter.getItemCount()).isEqualTo(2);
} }
@Test @Test
@@ -118,7 +98,17 @@ public class InternetAdapterTest extends SysuiTestCase {
} }
@Test @Test
public void onBindViewHolder_bindDefaultWifiNetwork_getIconWithInternet() { public void onBindViewHolder_wifiLevelUnreachable_shouldNotGetWifiIcon() {
reset(mWifiIconInjector);
when(mWifiEntry.getLevel()).thenReturn(WifiEntry.WIFI_LEVEL_UNREACHABLE);
mInternetAdapter.onBindViewHolder(mViewHolder, 0);
verify(mWifiIconInjector, never()).getIcon(anyBoolean(), anyInt());
}
@Test
public void onBindViewHolder_shouldNotShowXLevelIcon_getIconWithInternet() {
when(mWifiEntry.shouldShowXLevelIcon()).thenReturn(false); when(mWifiEntry.shouldShowXLevelIcon()).thenReturn(false);
mInternetAdapter.onBindViewHolder(mViewHolder, 0); mInternetAdapter.onBindViewHolder(mViewHolder, 0);
@@ -127,7 +117,7 @@ public class InternetAdapterTest extends SysuiTestCase {
} }
@Test @Test
public void onBindViewHolder_bindNoDefaultWifiNetwork_getIconWithNoInternet() { public void onBindViewHolder_shouldShowXLevelIcon_getIconWithNoInternet() {
when(mWifiEntry.shouldShowXLevelIcon()).thenReturn(true); when(mWifiEntry.shouldShowXLevelIcon()).thenReturn(true);
mInternetAdapter.onBindViewHolder(mViewHolder, 0); mInternetAdapter.onBindViewHolder(mViewHolder, 0);

View File

@@ -18,7 +18,6 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Handler; import android.os.Handler;
import android.telephony.ServiceState; import android.telephony.ServiceState;
@@ -85,14 +84,26 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Mock @Mock
private WifiEntry mConnectedEntry; private WifiEntry mConnectedEntry;
@Mock @Mock
private WifiEntry mWifiEntry1;
@Mock
private WifiEntry mWifiEntry2;
@Mock
private WifiEntry mWifiEntry3;
@Mock
private WifiEntry mWifiEntry4;
@Mock
private ServiceState mServiceState; private ServiceState mServiceState;
@Mock @Mock
private BroadcastDispatcher mBroadcastDispatcher; private BroadcastDispatcher mBroadcastDispatcher;
@Mock @Mock
private WifiUtils.InternetIconInjector mWifiIconInjector; private WifiUtils.InternetIconInjector mWifiIconInjector;
@Mock
InternetDialogController.InternetDialogCallback mInternetDialogCallback;
private MockInternetDialogController mInternetDialogController; private MockInternetDialogController mInternetDialogController;
private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock()); private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
private List<WifiEntry> mAccessPoints = new ArrayList<>();
private List<WifiEntry> mWifiEntries = new ArrayList<>();
@Before @Before
public void setUp() { public void setUp() {
@@ -101,6 +112,12 @@ public class InternetDialogControllerTest extends SysuiTestCase {
when(mKeyguardStateController.isUnlocked()).thenReturn(true); when(mKeyguardStateController.isUnlocked()).thenReturn(true);
when(mConnectedEntry.isDefaultNetwork()).thenReturn(true); when(mConnectedEntry.isDefaultNetwork()).thenReturn(true);
when(mConnectedEntry.hasInternetAccess()).thenReturn(true); when(mConnectedEntry.hasInternetAccess()).thenReturn(true);
when(mWifiEntry1.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_DISCONNECTED);
when(mWifiEntry2.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_DISCONNECTED);
when(mWifiEntry3.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_DISCONNECTED);
when(mWifiEntry4.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_DISCONNECTED);
mAccessPoints.add(mConnectedEntry);
mAccessPoints.add(mWifiEntry1);
when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn(new int[]{SUB_ID}); when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn(new int[]{SUB_ID});
mInternetDialogController = new MockInternetDialogController(mContext, mInternetDialogController = new MockInternetDialogController(mContext,
@@ -110,10 +127,9 @@ public class InternetDialogControllerTest extends SysuiTestCase {
mock(KeyguardUpdateMonitor.class), mGlobalSettings, mKeyguardStateController); mock(KeyguardUpdateMonitor.class), mGlobalSettings, mKeyguardStateController);
mSubscriptionManager.addOnSubscriptionsChangedListener(mExecutor, mSubscriptionManager.addOnSubscriptionsChangedListener(mExecutor,
mInternetDialogController.mOnSubscriptionsChangedListener); mInternetDialogController.mOnSubscriptionsChangedListener);
mInternetDialogController.onStart( mInternetDialogController.onStart(mInternetDialogCallback, true);
mock(InternetDialogController.InternetDialogCallback.class), true); mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mInternetDialogController.mActivityStarter = mActivityStarter; mInternetDialogController.mActivityStarter = mActivityStarter;
mInternetDialogController.mConnectedEntry = mConnectedEntry;
mInternetDialogController.mWifiIconInjector = mWifiIconInjector; mInternetDialogController.mWifiIconInjector = mWifiIconInjector;
} }
@@ -159,9 +175,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
public void getSubtitleText_withNoWifiEntry_returnSearchWifi() { public void getSubtitleText_withNoWifiEntry_returnSearchWifi() {
mInternetDialogController.setAirplaneModeEnabled(false); mInternetDialogController.setAirplaneModeEnabled(false);
when(mWifiManager.isWifiEnabled()).thenReturn(true); when(mWifiManager.isWifiEnabled()).thenReturn(true);
List<ScanResult> wifiScanResults = mock(ArrayList.class); mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
doReturn(0).when(wifiScanResults).size();
when(mWifiManager.getScanResults()).thenReturn(wifiScanResults);
assertThat(mInternetDialogController.getSubtitleText(true)) assertThat(mInternetDialogController.getSubtitleText(true))
.isEqualTo(getResourcesString("wifi_empty_list_wifi_on")); .isEqualTo(getResourcesString("wifi_empty_list_wifi_on"));
@@ -175,11 +189,9 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test @Test
public void getSubtitleText_withWifiEntry_returnTapToConnect() { public void getSubtitleText_withWifiEntry_returnTapToConnect() {
// The preconditions WiFi Entries is already in setUp()
mInternetDialogController.setAirplaneModeEnabled(false); mInternetDialogController.setAirplaneModeEnabled(false);
when(mWifiManager.isWifiEnabled()).thenReturn(true); when(mWifiManager.isWifiEnabled()).thenReturn(true);
List<ScanResult> wifiScanResults = mock(ArrayList.class);
doReturn(1).when(wifiScanResults).size();
when(mWifiManager.getScanResults()).thenReturn(wifiScanResults);
assertThat(mInternetDialogController.getSubtitleText(false)) assertThat(mInternetDialogController.getSubtitleText(false))
.isEqualTo(getResourcesString("tap_a_network_to_connect")); .isEqualTo(getResourcesString("tap_a_network_to_connect"));
@@ -205,9 +217,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
public void getSubtitleText_withNoService_returnNoNetworksAvailable() { public void getSubtitleText_withNoService_returnNoNetworksAvailable() {
mInternetDialogController.setAirplaneModeEnabled(false); mInternetDialogController.setAirplaneModeEnabled(false);
when(mWifiManager.isWifiEnabled()).thenReturn(true); when(mWifiManager.isWifiEnabled()).thenReturn(true);
List<ScanResult> wifiScanResults = new ArrayList<>(); mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
doReturn(wifiScanResults).when(mWifiManager).getScanResults();
when(mWifiManager.getScanResults()).thenReturn(wifiScanResults);
doReturn(ServiceState.STATE_OUT_OF_SERVICE).when(mServiceState).getState(); doReturn(ServiceState.STATE_OUT_OF_SERVICE).when(mServiceState).getState();
doReturn(mServiceState).when(mTelephonyManager).getServiceState(); doReturn(mServiceState).when(mTelephonyManager).getServiceState();
@@ -221,9 +231,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
public void getSubtitleText_withMobileDataDisabled_returnNoOtherAvailable() { public void getSubtitleText_withMobileDataDisabled_returnNoOtherAvailable() {
mInternetDialogController.setAirplaneModeEnabled(false); mInternetDialogController.setAirplaneModeEnabled(false);
when(mWifiManager.isWifiEnabled()).thenReturn(true); when(mWifiManager.isWifiEnabled()).thenReturn(true);
List<ScanResult> wifiScanResults = new ArrayList<>(); mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
doReturn(wifiScanResults).when(mWifiManager).getScanResults();
when(mWifiManager.getScanResults()).thenReturn(wifiScanResults);
doReturn(ServiceState.STATE_IN_SERVICE).when(mServiceState).getState(); doReturn(ServiceState.STATE_IN_SERVICE).when(mServiceState).getState();
doReturn(mServiceState).when(mTelephonyManager).getServiceState(); doReturn(mServiceState).when(mTelephonyManager).getServiceState();
@@ -240,38 +248,9 @@ public class InternetDialogControllerTest extends SysuiTestCase {
.isNotEqualTo(getResourcesString("non_carrier_network_unavailable")); .isNotEqualTo(getResourcesString("non_carrier_network_unavailable"));
} }
@Test
public void getInternetWifiEntry_connectedEntryIsNull_returnNull() {
mInternetDialogController.mConnectedEntry = null;
assertThat(mInternetDialogController.getInternetWifiEntry()).isNull();
}
@Test
public void getInternetWifiEntry_connectedWifiIsNotDefaultNetwork_returnNull() {
when(mConnectedEntry.isDefaultNetwork()).thenReturn(false);
assertThat(mInternetDialogController.getInternetWifiEntry()).isNull();
}
@Test
public void getInternetWifiEntry_connectedWifiHasNotInternetAccess_returnNull() {
when(mConnectedEntry.hasInternetAccess()).thenReturn(false);
assertThat(mInternetDialogController.getInternetWifiEntry()).isNull();
}
@Test
public void getInternetWifiEntry_connectedEntryIsInternetWifi_returnConnectedEntry() {
// The preconditions have been set in setUp().
// - The connected Wi-Fi entry have both default network and internet access conditions.
assertThat(mInternetDialogController.getInternetWifiEntry()).isEqualTo(mConnectedEntry);
}
@Test @Test
public void getWifiDetailsSettingsIntent_withNoConnectedEntry_returnNull() { public void getWifiDetailsSettingsIntent_withNoConnectedEntry_returnNull() {
mInternetDialogController.mConnectedEntry = null; mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
assertThat(mInternetDialogController.getWifiDetailsSettingsIntent()).isNull(); assertThat(mInternetDialogController.getWifiDetailsSettingsIntent()).isNull();
} }
@@ -303,7 +282,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test @Test
public void launchWifiNetworkDetailsSetting_withNoConnectedEntry_doNothing() { public void launchWifiNetworkDetailsSetting_withNoConnectedEntry_doNothing() {
mInternetDialogController.mConnectedEntry = null; mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
mInternetDialogController.launchWifiNetworkDetailsSetting(); mInternetDialogController.launchWifiNetworkDetailsSetting();
@@ -335,13 +314,140 @@ public class InternetDialogControllerTest extends SysuiTestCase {
} }
@Test @Test
public void scanWifiAccessPoints_cannotConfigWifi_doNothing() { public void onAccessPointsChanged_canNotConfigWifi_doNothing() {
reset(mAccessPointController); reset(mInternetDialogCallback);
mInternetDialogController.mCanConfigWifi = false; mInternetDialogController.mCanConfigWifi = false;
mInternetDialogController.scanWifiAccessPoints(); mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
verify(mAccessPointController, never()).scanForAccessPoints(); verify(mInternetDialogCallback, never()).onAccessPointsChanged(any(), any());
}
@Test
public void onAccessPointsChanged_nullAccessPoints_callbackBothNull() {
reset(mInternetDialogCallback);
mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
verify(mInternetDialogCallback)
.onAccessPointsChanged(null /* wifiEntries */, null /* connectedEntry */);
}
@Test
public void onAccessPointsChanged_oneConnectedEntry_callbackConnectedEntryOnly() {
reset(mInternetDialogCallback);
mInternetDialogController.setAirplaneModeEnabled(true);
mAccessPoints.clear();
mAccessPoints.add(mConnectedEntry);
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.clear();
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry);
}
@Test
public void onAccessPointsChanged_noConnectedEntryAndOneOther_callbackWifiEntriesOnly() {
reset(mInternetDialogCallback);
mInternetDialogController.setAirplaneModeEnabled(true);
mAccessPoints.clear();
mAccessPoints.add(mWifiEntry1);
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.clear();
mWifiEntries.add(mWifiEntry1);
verify(mInternetDialogCallback)
.onAccessPointsChanged(mWifiEntries, null /* connectedEntry */);
}
@Test
public void onAccessPointsChanged_oneConnectedEntryAndOneOther_callbackCorrectly() {
reset(mInternetDialogCallback);
mInternetDialogController.setAirplaneModeEnabled(true);
mAccessPoints.clear();
mAccessPoints.add(mConnectedEntry);
mAccessPoints.add(mWifiEntry1);
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.clear();
mWifiEntries.add(mWifiEntry1);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry);
}
@Test
public void onAccessPointsChanged_oneConnectedEntryAndTwoOthers_callbackCorrectly() {
reset(mInternetDialogCallback);
mInternetDialogController.setAirplaneModeEnabled(true);
mAccessPoints.clear();
mAccessPoints.add(mConnectedEntry);
mAccessPoints.add(mWifiEntry1);
mAccessPoints.add(mWifiEntry2);
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.clear();
mWifiEntries.add(mWifiEntry1);
mWifiEntries.add(mWifiEntry2);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry);
}
@Test
public void onAccessPointsChanged_oneConnectedEntryAndThreeOthers_callbackCutMore() {
reset(mInternetDialogCallback);
mInternetDialogController.setAirplaneModeEnabled(true);
mAccessPoints.clear();
mAccessPoints.add(mConnectedEntry);
mAccessPoints.add(mWifiEntry1);
mAccessPoints.add(mWifiEntry2);
mAccessPoints.add(mWifiEntry3);
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.clear();
mWifiEntries.add(mWifiEntry1);
mWifiEntries.add(mWifiEntry2);
mWifiEntries.add(mWifiEntry3);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry);
// Turn off airplane mode to has carrier network, then Wi-Fi entries will cut last one.
reset(mInternetDialogCallback);
mInternetDialogController.setAirplaneModeEnabled(false);
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.remove(mWifiEntry3);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry);
}
@Test
public void onAccessPointsChanged_oneConnectedEntryAndFourOthers_callbackCutMore() {
reset(mInternetDialogCallback);
mInternetDialogController.setAirplaneModeEnabled(true);
mAccessPoints.clear();
mAccessPoints.add(mConnectedEntry);
mAccessPoints.add(mWifiEntry1);
mAccessPoints.add(mWifiEntry2);
mAccessPoints.add(mWifiEntry3);
mAccessPoints.add(mWifiEntry4);
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.clear();
mWifiEntries.add(mWifiEntry1);
mWifiEntries.add(mWifiEntry2);
mWifiEntries.add(mWifiEntry3);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry);
// Turn off airplane mode to has carrier network, then Wi-Fi entries will cut last one.
reset(mInternetDialogCallback);
mInternetDialogController.setAirplaneModeEnabled(false);
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.remove(mWifiEntry3);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry);
} }
private String getResourcesString(String name) { private String getResourcesString(String name) {

View File

@@ -12,7 +12,6 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Handler; import android.os.Handler;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
@@ -38,8 +37,6 @@ import org.mockito.Mock;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
@SmallTest @SmallTest
@@ -61,7 +58,7 @@ public class InternetDialogTest extends SysuiTestCase {
@Mock @Mock
private WifiEntry mInternetWifiEntry; private WifiEntry mInternetWifiEntry;
@Mock @Mock
private WifiEntry mWifiEntry; private List<WifiEntry> mWifiEntries;
@Mock @Mock
private InternetAdapter mInternetAdapter; private InternetAdapter mInternetAdapter;
@Mock @Mock
@@ -85,20 +82,17 @@ public class InternetDialogTest extends SysuiTestCase {
when(mInternetWifiEntry.getSummary(false)).thenReturn(WIFI_SUMMARY); when(mInternetWifiEntry.getSummary(false)).thenReturn(WIFI_SUMMARY);
when(mInternetWifiEntry.isDefaultNetwork()).thenReturn(true); when(mInternetWifiEntry.isDefaultNetwork()).thenReturn(true);
when(mInternetWifiEntry.hasInternetAccess()).thenReturn(true); when(mInternetWifiEntry.hasInternetAccess()).thenReturn(true);
when(mWifiEntry.getTitle()).thenReturn(WIFI_TITLE); when(mWifiEntries.size()).thenReturn(1);
when(mWifiEntry.getSummary(false)).thenReturn(WIFI_SUMMARY);
when(mInternetDialogController.getMobileNetworkTitle()).thenReturn(MOBILE_NETWORK_TITLE); when(mInternetDialogController.getMobileNetworkTitle()).thenReturn(MOBILE_NETWORK_TITLE);
when(mInternetDialogController.getMobileNetworkSummary()) when(mInternetDialogController.getMobileNetworkSummary())
.thenReturn(MOBILE_NETWORK_SUMMARY); .thenReturn(MOBILE_NETWORK_SUMMARY);
when(mInternetDialogController.getWifiManager()).thenReturn(mWifiManager); when(mInternetDialogController.getWifiManager()).thenReturn(mWifiManager);
when(mInternetDialogController.getInternetWifiEntry()).thenReturn(mInternetWifiEntry);
when(mInternetDialogController.getWifiEntryList()).thenReturn(Arrays.asList(mWifiEntry));
mInternetDialog = new InternetDialog(mContext, mock(InternetDialogFactory.class), mInternetDialog = new InternetDialog(mContext, mock(InternetDialogFactory.class),
mInternetDialogController, true, true, true, mock(UiEventLogger.class), mHandler); mInternetDialogController, true, true, true, mock(UiEventLogger.class), mHandler);
mInternetDialog.mAdapter = mInternetAdapter; mInternetDialog.mAdapter = mInternetAdapter;
mInternetDialog.mConnectedWifiEntry = mInternetWifiEntry; mInternetDialog.onAccessPointsChanged(mWifiEntries, mInternetWifiEntry);
mInternetDialog.show(); mInternetDialog.show();
mDialogView = mInternetDialog.mDialogView; mDialogView = mInternetDialog.mDialogView;
@@ -165,7 +159,8 @@ public class InternetDialogTest extends SysuiTestCase {
@Test @Test
public void updateDialog_wifiOnAndNoConnectedWifi_hideConnectedWifi() { public void updateDialog_wifiOnAndNoConnectedWifi_hideConnectedWifi() {
mInternetDialog.mConnectedWifiEntry = null; // The precondition WiFi ON is already in setUp()
mInternetDialog.onAccessPointsChanged(mWifiEntries, null /* connectedEntry*/);
doReturn(false).when(mInternetDialogController).activeNetworkIsCellular(); doReturn(false).when(mInternetDialogController).activeNetworkIsCellular();
mInternetDialog.updateDialog(); mInternetDialog.updateDialog();
@@ -175,7 +170,8 @@ public class InternetDialogTest extends SysuiTestCase {
@Test @Test
public void updateDialog_wifiOnAndNoWifiList_hideWifiListAndSeeAll() { public void updateDialog_wifiOnAndNoWifiList_hideWifiListAndSeeAll() {
when(mInternetDialogController.getWifiEntryList()).thenReturn(null); // The precondition WiFi ON is already in setUp()
mInternetDialog.onAccessPointsChanged(null /* wifiEntries */, mInternetWifiEntry);
mInternetDialog.updateDialog(); mInternetDialog.updateDialog();
@@ -258,9 +254,6 @@ public class InternetDialogTest extends SysuiTestCase {
public void showProgressBar_wifiEnabledWithWifiEntry_showProgressBarThenHide() { public void showProgressBar_wifiEnabledWithWifiEntry_showProgressBarThenHide() {
Mockito.reset(mHandler); Mockito.reset(mHandler);
when(mWifiManager.isWifiEnabled()).thenReturn(true); when(mWifiManager.isWifiEnabled()).thenReturn(true);
List<ScanResult> wifiScanResults = mock(ArrayList.class);
when(wifiScanResults.size()).thenReturn(1);
when(mWifiManager.getScanResults()).thenReturn(wifiScanResults);
mInternetDialog.showProgressBar(); mInternetDialog.showProgressBar();
@@ -277,12 +270,10 @@ public class InternetDialogTest extends SysuiTestCase {
} }
@Test @Test
public void showProgressBar_wifiEnabledWithoutWifiScanResults_showProgressBarThenHideSearch() { public void showProgressBar_wifiEnabledWithoutWifiEntries_showProgressBarThenHideSearch() {
Mockito.reset(mHandler); Mockito.reset(mHandler);
when(mWifiManager.isWifiEnabled()).thenReturn(true); when(mWifiManager.isWifiEnabled()).thenReturn(true);
List<ScanResult> wifiScanResults = mock(ArrayList.class); mInternetDialog.onAccessPointsChanged(null /* wifiEntries */, null /* connectedEntry*/);
when(wifiScanResults.size()).thenReturn(0);
when(mWifiManager.getScanResults()).thenReturn(wifiScanResults);
mInternetDialog.showProgressBar(); mInternetDialog.showProgressBar();