Merge changes I59be2364,Ia7889a78,I6082226a into sc-v2-dev
* changes: [Provider Model] Listen for callback to highlight WiFi network [Provider Model] Reduce the max of WiFi networks (QS Internet Dialog) [Provider Model] Fix WiFi list count timing issue (QS Internet Dialog)
This commit is contained in:
@@ -53,7 +53,10 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern
|
||||
|
||||
private final InternetDialogController mInternetDialogController;
|
||||
private List<WifiEntry> mWifiEntries;
|
||||
private int mWifiEntriesCount;
|
||||
@VisibleForTesting
|
||||
protected int mWifiEntriesCount;
|
||||
@VisibleForTesting
|
||||
protected int mMaxEntriesCount = InternetDialogController.MAX_WIFI_ENTRY_COUNT;
|
||||
|
||||
protected View mHolderView;
|
||||
protected Context mContext;
|
||||
@@ -87,7 +90,8 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern
|
||||
*/
|
||||
public void setWifiEntries(@Nullable List<WifiEntry> wifiEntries, int wifiEntriesCount) {
|
||||
mWifiEntries = wifiEntries;
|
||||
mWifiEntriesCount = wifiEntriesCount;
|
||||
mWifiEntriesCount =
|
||||
(wifiEntriesCount < mMaxEntriesCount) ? wifiEntriesCount : mMaxEntriesCount;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -100,6 +104,20 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern
|
||||
return mWifiEntriesCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the maximum number of Wi-Fi networks.
|
||||
*/
|
||||
public void setMaxEntriesCount(int count) {
|
||||
if (count < 0 || mMaxEntriesCount == count) {
|
||||
return;
|
||||
}
|
||||
mMaxEntriesCount = count;
|
||||
if (mWifiEntriesCount > count) {
|
||||
mWifiEntriesCount = count;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ViewHolder for binding Wi-Fi view.
|
||||
*/
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package com.android.systemui.qs.tiles.dialog;
|
||||
|
||||
import static com.android.systemui.Prefs.Key.QS_HAS_TURNED_OFF_MOBILE_DATA;
|
||||
import static com.android.systemui.qs.tiles.dialog.InternetDialogController.MAX_WIFI_ENTRY_COUNT;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
@@ -79,6 +80,7 @@ public class InternetDialog extends SystemUIDialog implements
|
||||
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
|
||||
|
||||
static final long PROGRESS_DELAY_MS = 1500L;
|
||||
static final int MAX_NETWORK_COUNT = 4;
|
||||
|
||||
private final Handler mHandler;
|
||||
private final Executor mBackgroundExecutor;
|
||||
@@ -138,7 +140,7 @@ public class InternetDialog extends SystemUIDialog implements
|
||||
@VisibleForTesting
|
||||
protected int mWifiEntriesCount;
|
||||
@VisibleForTesting
|
||||
protected boolean mHasMoreEntry;
|
||||
protected boolean mHasMoreWifiEntries;
|
||||
|
||||
// Wi-Fi scanning progress bar
|
||||
protected boolean mIsProgressBarVisible;
|
||||
@@ -462,21 +464,36 @@ public class InternetDialog extends SystemUIDialog implements
|
||||
mSeeAllLayout.setVisibility(View.GONE);
|
||||
return;
|
||||
}
|
||||
mWifiRecyclerView.setMinimumHeight(mWifiNetworkHeight * getWifiListMaxCount());
|
||||
final int wifiListMaxCount = getWifiListMaxCount();
|
||||
if (mAdapter.getItemCount() > wifiListMaxCount) {
|
||||
mHasMoreWifiEntries = true;
|
||||
}
|
||||
mAdapter.setMaxEntriesCount(wifiListMaxCount);
|
||||
final int wifiListMinHeight = mWifiNetworkHeight * wifiListMaxCount;
|
||||
if (mWifiRecyclerView.getMinimumHeight() != wifiListMinHeight) {
|
||||
mWifiRecyclerView.setMinimumHeight(wifiListMinHeight);
|
||||
}
|
||||
mWifiRecyclerView.setVisibility(View.VISIBLE);
|
||||
mSeeAllLayout.setVisibility(mHasMoreEntry ? View.VISIBLE : View.INVISIBLE);
|
||||
mSeeAllLayout.setVisibility(mHasMoreWifiEntries ? View.VISIBLE : View.INVISIBLE);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@MainThread
|
||||
int getWifiListMaxCount() {
|
||||
int count = InternetDialogController.MAX_WIFI_ENTRY_COUNT;
|
||||
// Use the maximum count of networks to calculate the remaining count for Wi-Fi networks.
|
||||
int count = MAX_NETWORK_COUNT;
|
||||
if (mEthernetLayout.getVisibility() == View.VISIBLE) {
|
||||
count -= 1;
|
||||
}
|
||||
if (mMobileNetworkLayout.getVisibility() == View.VISIBLE) {
|
||||
count -= 1;
|
||||
}
|
||||
|
||||
// If the remaining count is greater than the maximum count of the Wi-Fi network, the
|
||||
// maximum count of the Wi-Fi network is used.
|
||||
if (count > MAX_WIFI_ENTRY_COUNT) {
|
||||
count = MAX_WIFI_ENTRY_COUNT;
|
||||
}
|
||||
if (mConnectedWifListLayout.getVisibility() == View.VISIBLE) {
|
||||
count -= 1;
|
||||
}
|
||||
@@ -654,14 +671,14 @@ public class InternetDialog extends SystemUIDialog implements
|
||||
@Override
|
||||
@WorkerThread
|
||||
public void onAccessPointsChanged(@Nullable List<WifiEntry> wifiEntries,
|
||||
@Nullable WifiEntry connectedEntry, boolean hasMoreEntry) {
|
||||
@Nullable WifiEntry connectedEntry, boolean hasMoreWifiEntries) {
|
||||
// Should update the carrier network layout when it is connected under airplane mode ON.
|
||||
boolean shouldUpdateCarrierNetwork = mMobileNetworkLayout.getVisibility() == View.VISIBLE
|
||||
&& mInternetDialogController.isAirplaneModeEnabled();
|
||||
mHandler.post(() -> {
|
||||
mConnectedWifiEntry = connectedEntry;
|
||||
mWifiEntriesCount = wifiEntries == null ? 0 : wifiEntries.size();
|
||||
mHasMoreEntry = hasMoreEntry;
|
||||
mHasMoreWifiEntries = hasMoreWifiEntries;
|
||||
updateDialog(shouldUpdateCarrierNetwork /* shouldUpdateMobileNetwork */);
|
||||
mAdapter.setWifiEntries(wifiEntries, mWifiEntriesCount);
|
||||
mAdapter.notifyDataSetChanged();
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.android.systemui.qs.tiles.dialog;
|
||||
|
||||
import static com.android.settingslib.mobile.MobileMappings.getIconKey;
|
||||
import static com.android.settingslib.mobile.MobileMappings.mapIconSets;
|
||||
import static com.android.wifitrackerlib.WifiEntry.CONNECTED_STATE_CONNECTED;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
@@ -125,7 +126,7 @@ public class InternetDialogController implements AccessPointController.AccessPoi
|
||||
R.string.all_network_unavailable;
|
||||
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
|
||||
|
||||
static final int MAX_WIFI_ENTRY_COUNT = 4;
|
||||
static final int MAX_WIFI_ENTRY_COUNT = 3;
|
||||
|
||||
private WifiManager mWifiManager;
|
||||
private Context mContext;
|
||||
@@ -143,8 +144,6 @@ public class InternetDialogController implements AccessPointController.AccessPoi
|
||||
private AccessPointController mAccessPointController;
|
||||
private IntentFilter mConnectionStateFilter;
|
||||
private InternetDialogCallback mCallback;
|
||||
private WifiEntry mConnectedEntry;
|
||||
private int mWifiEntriesCount;
|
||||
private UiEventLogger mUiEventLogger;
|
||||
private BroadcastDispatcher mBroadcastDispatcher;
|
||||
private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
|
||||
@@ -156,6 +155,7 @@ public class InternetDialogController implements AccessPointController.AccessPoi
|
||||
private SignalDrawable mSignalDrawable;
|
||||
private LocationController mLocationController;
|
||||
private DialogLaunchAnimator mDialogLaunchAnimator;
|
||||
private boolean mHasWifiEntries;
|
||||
|
||||
@VisibleForTesting
|
||||
static final float TOAST_PARAMS_HORIZONTAL_WEIGHT = 1.0f;
|
||||
@@ -177,6 +177,8 @@ public class InternetDialogController implements AccessPointController.AccessPoi
|
||||
protected KeyguardStateController mKeyguardStateController;
|
||||
@VisibleForTesting
|
||||
protected boolean mHasEthernet = false;
|
||||
@VisibleForTesting
|
||||
protected ConnectedWifiInternetMonitor mConnectedWifiInternetMonitor;
|
||||
|
||||
private final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback =
|
||||
new KeyguardUpdateMonitorCallback() {
|
||||
@@ -237,6 +239,7 @@ public class InternetDialogController implements AccessPointController.AccessPoi
|
||||
mSignalDrawable = new SignalDrawable(mContext);
|
||||
mLocationController = locationController;
|
||||
mDialogLaunchAnimator = dialogLaunchAnimator;
|
||||
mConnectedWifiInternetMonitor = new ConnectedWifiInternetMonitor();
|
||||
}
|
||||
|
||||
void onStart(@NonNull InternetDialogCallback callback, boolean canConfigWifi) {
|
||||
@@ -277,6 +280,7 @@ public class InternetDialogController implements AccessPointController.AccessPoi
|
||||
mAccessPointController.removeAccessPointCallback(this);
|
||||
mKeyguardUpdateMonitor.removeCallback(mKeyguardUpdateCallback);
|
||||
mConnectivityManager.unregisterNetworkCallback(mConnectivityManagerNetworkCallback);
|
||||
mConnectedWifiInternetMonitor.unregisterCallback();
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -334,7 +338,7 @@ public class InternetDialogController implements AccessPointController.AccessPoi
|
||||
return mContext.getText(SUBTITLE_TEXT_UNLOCK_TO_VIEW_NETWORKS);
|
||||
}
|
||||
|
||||
if (mConnectedEntry != null || mWifiEntriesCount > 0) {
|
||||
if (mHasWifiEntries) {
|
||||
return mCanConfigWifi ? mContext.getText(SUBTITLE_TEXT_TAP_A_NETWORK_TO_CONNECT) : null;
|
||||
}
|
||||
|
||||
@@ -875,43 +879,30 @@ public class InternetDialogController implements AccessPointController.AccessPoi
|
||||
return;
|
||||
}
|
||||
|
||||
if (accessPoints == null || accessPoints.size() == 0) {
|
||||
mConnectedEntry = null;
|
||||
mWifiEntriesCount = 0;
|
||||
mCallback.onAccessPointsChanged(null /* wifiEntries */, null /* connectedEntry */,
|
||||
false /* hasMoreEntry */);
|
||||
return;
|
||||
}
|
||||
|
||||
boolean hasMoreEntry = false;
|
||||
int count = MAX_WIFI_ENTRY_COUNT;
|
||||
if (mHasEthernet) {
|
||||
count -= 1;
|
||||
}
|
||||
if (hasActiveSubId() || isCarrierNetworkActive()) {
|
||||
count -= 1;
|
||||
}
|
||||
final int wifiTotalCount = accessPoints.size();
|
||||
if (count > wifiTotalCount) {
|
||||
count = wifiTotalCount;
|
||||
} else if (count < wifiTotalCount) {
|
||||
hasMoreEntry = true;
|
||||
}
|
||||
|
||||
WifiEntry connectedEntry = null;
|
||||
final List<WifiEntry> wifiEntries = new ArrayList<>();
|
||||
for (int i = 0; i < count; i++) {
|
||||
WifiEntry entry = accessPoints.get(i);
|
||||
if (connectedEntry == null && entry.isDefaultNetwork() && entry.hasInternetAccess()) {
|
||||
connectedEntry = entry;
|
||||
} else {
|
||||
wifiEntries.add(entry);
|
||||
List<WifiEntry> wifiEntries = null;
|
||||
final int accessPointsSize = (accessPoints == null) ? 0 : accessPoints.size();
|
||||
final boolean hasMoreWifiEntries = (accessPointsSize > MAX_WIFI_ENTRY_COUNT);
|
||||
if (accessPointsSize > 0) {
|
||||
wifiEntries = new ArrayList<>();
|
||||
final int count = hasMoreWifiEntries ? MAX_WIFI_ENTRY_COUNT : accessPointsSize;
|
||||
mConnectedWifiInternetMonitor.unregisterCallback();
|
||||
for (int i = 0; i < count; i++) {
|
||||
WifiEntry entry = accessPoints.get(i);
|
||||
mConnectedWifiInternetMonitor.registerCallbackIfNeed(entry);
|
||||
if (connectedEntry == null && entry.isDefaultNetwork()
|
||||
&& entry.hasInternetAccess()) {
|
||||
connectedEntry = entry;
|
||||
} else {
|
||||
wifiEntries.add(entry);
|
||||
}
|
||||
}
|
||||
mHasWifiEntries = true;
|
||||
} else {
|
||||
mHasWifiEntries = false;
|
||||
}
|
||||
mConnectedEntry = connectedEntry;
|
||||
mWifiEntriesCount = wifiEntries.size();
|
||||
|
||||
mCallback.onAccessPointsChanged(wifiEntries, mConnectedEntry, hasMoreEntry);
|
||||
mCallback.onAccessPointsChanged(wifiEntries, connectedEntry, hasMoreWifiEntries);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -986,6 +977,55 @@ public class InternetDialogController implements AccessPointController.AccessPoi
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper class for monitoring the Internet access of the connected WifiEntry.
|
||||
*/
|
||||
@VisibleForTesting
|
||||
protected class ConnectedWifiInternetMonitor implements WifiEntry.WifiEntryCallback {
|
||||
|
||||
private WifiEntry mWifiEntry;
|
||||
|
||||
public void registerCallbackIfNeed(WifiEntry entry) {
|
||||
if (entry == null || mWifiEntry != null) {
|
||||
return;
|
||||
}
|
||||
// If the Wi-Fi is not connected yet, or it's the connected Wi-Fi with Internet
|
||||
// access. Then we don't need to listen to the callback to update the Wi-Fi entries.
|
||||
if (entry.getConnectedState() != CONNECTED_STATE_CONNECTED
|
||||
|| (entry.isDefaultNetwork() && entry.hasInternetAccess())) {
|
||||
return;
|
||||
}
|
||||
mWifiEntry = entry;
|
||||
entry.setListener(this);
|
||||
}
|
||||
|
||||
public void unregisterCallback() {
|
||||
if (mWifiEntry == null) {
|
||||
return;
|
||||
}
|
||||
mWifiEntry.setListener(null);
|
||||
mWifiEntry = null;
|
||||
}
|
||||
|
||||
@MainThread
|
||||
@Override
|
||||
public void onUpdated() {
|
||||
if (mWifiEntry == null) {
|
||||
return;
|
||||
}
|
||||
WifiEntry entry = mWifiEntry;
|
||||
if (entry.getConnectedState() != CONNECTED_STATE_CONNECTED) {
|
||||
unregisterCallback();
|
||||
return;
|
||||
}
|
||||
if (entry.isDefaultNetwork() && entry.hasInternetAccess()) {
|
||||
unregisterCallback();
|
||||
// Trigger onAccessPointsChanged() to update the Wi-Fi entries.
|
||||
scanWifiAccessPoints();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return {@code true} If the Ethernet exists
|
||||
*/
|
||||
@@ -1061,7 +1101,7 @@ public class InternetDialogController implements AccessPointController.AccessPoi
|
||||
void dismissDialog();
|
||||
|
||||
void onAccessPointsChanged(@Nullable List<WifiEntry> wifiEntries,
|
||||
@Nullable WifiEntry connectedEntry, boolean hasMoreEntry);
|
||||
@Nullable WifiEntry connectedEntry, boolean hasMoreWifiEntries);
|
||||
}
|
||||
|
||||
void makeOverlayToast(int stringId) {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.android.systemui.qs.tiles.dialog;
|
||||
|
||||
import static com.android.systemui.qs.tiles.dialog.InternetDialogController.MAX_WIFI_ENTRY_COUNT;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||
@@ -83,7 +85,7 @@ public class InternetAdapterTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void getItemCount_returnWifiEntriesCount() {
|
||||
for (int i = 0; i < InternetDialogController.MAX_WIFI_ENTRY_COUNT; i++) {
|
||||
for (int i = 0; i < MAX_WIFI_ENTRY_COUNT; i++) {
|
||||
mInternetAdapter.setWifiEntries(mWifiEntries, i /* wifiEntriesCount */);
|
||||
|
||||
assertThat(mInternetAdapter.getItemCount()).isEqualTo(i);
|
||||
@@ -140,6 +142,60 @@ public class InternetAdapterTest extends SysuiTestCase {
|
||||
verify(mWifiIconInjector).getIcon(eq(true) /* noInternet */, anyInt());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setWifiEntries_wifiCountLessThenMaxCount_setWifiCount() {
|
||||
final int wifiCount = MAX_WIFI_ENTRY_COUNT - 1;
|
||||
mInternetAdapter.mMaxEntriesCount = MAX_WIFI_ENTRY_COUNT;
|
||||
|
||||
mInternetAdapter.setWifiEntries(mWifiEntries, wifiCount);
|
||||
|
||||
assertThat(mInternetAdapter.mWifiEntriesCount).isEqualTo(wifiCount);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setWifiEntries_wifiCountGreaterThenMaxCount_setMaxCount() {
|
||||
final int wifiCount = MAX_WIFI_ENTRY_COUNT;
|
||||
mInternetAdapter.mMaxEntriesCount = MAX_WIFI_ENTRY_COUNT - 1;
|
||||
|
||||
mInternetAdapter.setWifiEntries(mWifiEntries, wifiCount);
|
||||
|
||||
assertThat(mInternetAdapter.mWifiEntriesCount).isEqualTo(mInternetAdapter.mMaxEntriesCount);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setMaxEntriesCount_maxCountLessThenZero_doNothing() {
|
||||
mInternetAdapter.mMaxEntriesCount = MAX_WIFI_ENTRY_COUNT;
|
||||
final int maxCount = -1;
|
||||
|
||||
mInternetAdapter.setMaxEntriesCount(maxCount);
|
||||
|
||||
assertThat(mInternetAdapter.mMaxEntriesCount).isEqualTo(MAX_WIFI_ENTRY_COUNT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setMaxEntriesCount_maxCountGreaterThenWifiCount_updateMaxCount() {
|
||||
mInternetAdapter.mWifiEntriesCount = MAX_WIFI_ENTRY_COUNT - 2;
|
||||
mInternetAdapter.mMaxEntriesCount = MAX_WIFI_ENTRY_COUNT;
|
||||
final int maxCount = MAX_WIFI_ENTRY_COUNT - 1;
|
||||
|
||||
mInternetAdapter.setMaxEntriesCount(maxCount);
|
||||
|
||||
assertThat(mInternetAdapter.mWifiEntriesCount).isEqualTo(MAX_WIFI_ENTRY_COUNT - 2);
|
||||
assertThat(mInternetAdapter.mMaxEntriesCount).isEqualTo(maxCount);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setMaxEntriesCount_maxCountLessThenWifiCount_updateBothCount() {
|
||||
mInternetAdapter.mWifiEntriesCount = MAX_WIFI_ENTRY_COUNT;
|
||||
mInternetAdapter.mMaxEntriesCount = MAX_WIFI_ENTRY_COUNT;
|
||||
final int maxCount = MAX_WIFI_ENTRY_COUNT - 1;
|
||||
|
||||
mInternetAdapter.setMaxEntriesCount(maxCount);
|
||||
|
||||
assertThat(mInternetAdapter.mWifiEntriesCount).isEqualTo(maxCount);
|
||||
assertThat(mInternetAdapter.mMaxEntriesCount).isEqualTo(maxCount);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void viewHolderUpdateEndIcon_wifiConnected_updateGearIcon() {
|
||||
mTestableResources.addOverride(GEAR_ICON_RES_ID, mGearIcon);
|
||||
|
||||
@@ -434,7 +434,6 @@ public class InternetDialogControllerTest extends SysuiTestCase {
|
||||
@Test
|
||||
public void onAccessPointsChanged_oneConnectedEntry_callbackConnectedEntryOnly() {
|
||||
reset(mInternetDialogCallback);
|
||||
fakeAirplaneModeEnabled(true);
|
||||
mAccessPoints.clear();
|
||||
mAccessPoints.add(mConnectedEntry);
|
||||
|
||||
@@ -448,7 +447,6 @@ public class InternetDialogControllerTest extends SysuiTestCase {
|
||||
@Test
|
||||
public void onAccessPointsChanged_noConnectedEntryAndOneOther_callbackWifiEntriesOnly() {
|
||||
reset(mInternetDialogCallback);
|
||||
fakeAirplaneModeEnabled(true);
|
||||
mAccessPoints.clear();
|
||||
mAccessPoints.add(mWifiEntry1);
|
||||
|
||||
@@ -463,7 +461,6 @@ public class InternetDialogControllerTest extends SysuiTestCase {
|
||||
@Test
|
||||
public void onAccessPointsChanged_oneConnectedEntryAndOneOther_callbackCorrectly() {
|
||||
reset(mInternetDialogCallback);
|
||||
fakeAirplaneModeEnabled(true);
|
||||
mAccessPoints.clear();
|
||||
mAccessPoints.add(mConnectedEntry);
|
||||
mAccessPoints.add(mWifiEntry1);
|
||||
@@ -479,7 +476,6 @@ public class InternetDialogControllerTest extends SysuiTestCase {
|
||||
@Test
|
||||
public void onAccessPointsChanged_oneConnectedEntryAndTwoOthers_callbackCorrectly() {
|
||||
reset(mInternetDialogCallback);
|
||||
fakeAirplaneModeEnabled(true);
|
||||
mAccessPoints.clear();
|
||||
mAccessPoints.add(mConnectedEntry);
|
||||
mAccessPoints.add(mWifiEntry1);
|
||||
@@ -497,7 +493,6 @@ public class InternetDialogControllerTest extends SysuiTestCase {
|
||||
@Test
|
||||
public void onAccessPointsChanged_oneConnectedEntryAndThreeOthers_callbackCutMore() {
|
||||
reset(mInternetDialogCallback);
|
||||
fakeAirplaneModeEnabled(true);
|
||||
mAccessPoints.clear();
|
||||
mAccessPoints.add(mConnectedEntry);
|
||||
mAccessPoints.add(mWifiEntry1);
|
||||
@@ -509,86 +504,13 @@ public class InternetDialogControllerTest extends SysuiTestCase {
|
||||
mWifiEntries.clear();
|
||||
mWifiEntries.add(mWifiEntry1);
|
||||
mWifiEntries.add(mWifiEntry2);
|
||||
mWifiEntries.add(mWifiEntry3);
|
||||
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry,
|
||||
false /* hasMoreEntry */);
|
||||
|
||||
// Turn off airplane mode to has carrier network, then Wi-Fi entries will cut last one.
|
||||
reset(mInternetDialogCallback);
|
||||
fakeAirplaneModeEnabled(false);
|
||||
|
||||
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
|
||||
|
||||
mWifiEntries.remove(mWifiEntry3);
|
||||
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry,
|
||||
true /* hasMoreEntry */);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onAccessPointsChanged_oneConnectedEntryAndFourOthers_callbackCutMore() {
|
||||
reset(mInternetDialogCallback);
|
||||
fakeAirplaneModeEnabled(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,
|
||||
true /* hasMoreEntry */);
|
||||
|
||||
// Turn off airplane mode to has carrier network, then Wi-Fi entries will cut last one.
|
||||
reset(mInternetDialogCallback);
|
||||
fakeAirplaneModeEnabled(false);
|
||||
|
||||
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
|
||||
|
||||
mWifiEntries.remove(mWifiEntry3);
|
||||
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry,
|
||||
true /* hasMoreEntry */);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onAccessPointsChanged_oneCarrierWifiAndFourOthers_callbackCutMore() {
|
||||
reset(mInternetDialogCallback);
|
||||
fakeAirplaneModeEnabled(true);
|
||||
when(mMergedCarrierEntry.isDefaultNetwork()).thenReturn(true);
|
||||
mAccessPoints.clear();
|
||||
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,
|
||||
null /* connectedEntry */, true /* hasMoreEntry */);
|
||||
|
||||
// Turn off airplane mode to has carrier WiFi, then Wi-Fi entries will keep the same.
|
||||
reset(mInternetDialogCallback);
|
||||
fakeAirplaneModeEnabled(false);
|
||||
|
||||
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
|
||||
|
||||
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries,
|
||||
null /* connectedEntry */, true /* hasMoreEntry */);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onAccessPointsChanged_fourWifiEntries_callbackCutMore() {
|
||||
reset(mInternetDialogCallback);
|
||||
fakeAirplaneModeEnabled(true);
|
||||
mAccessPoints.clear();
|
||||
mAccessPoints.add(mWifiEntry1);
|
||||
mAccessPoints.add(mWifiEntry2);
|
||||
@@ -601,27 +523,6 @@ public class InternetDialogControllerTest extends SysuiTestCase {
|
||||
mWifiEntries.add(mWifiEntry1);
|
||||
mWifiEntries.add(mWifiEntry2);
|
||||
mWifiEntries.add(mWifiEntry3);
|
||||
mWifiEntries.add(mWifiEntry4);
|
||||
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries,
|
||||
null /* connectedEntry */, false /* hasMoreEntry */);
|
||||
|
||||
// If the Ethernet exists, then Wi-Fi entries will cut last one.
|
||||
reset(mInternetDialogCallback);
|
||||
mInternetDialogController.mHasEthernet = true;
|
||||
|
||||
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
|
||||
|
||||
mWifiEntries.remove(mWifiEntry4);
|
||||
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries,
|
||||
null /* connectedEntry */, true /* hasMoreEntry */);
|
||||
|
||||
// Turn off airplane mode to has carrier network, then Wi-Fi entries will cut last one.
|
||||
reset(mInternetDialogCallback);
|
||||
fakeAirplaneModeEnabled(false);
|
||||
|
||||
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
|
||||
|
||||
mWifiEntries.remove(mWifiEntry3);
|
||||
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries,
|
||||
null /* connectedEntry */, true /* hasMoreEntry */);
|
||||
}
|
||||
@@ -643,6 +544,37 @@ public class InternetDialogControllerTest extends SysuiTestCase {
|
||||
null /* connectedEntry */, false /* hasMoreEntry */);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onAccessPointsChanged_connectedWifiNoInternetAccess_shouldSetListener() {
|
||||
reset(mWifiEntry1);
|
||||
mAccessPoints.clear();
|
||||
when(mWifiEntry1.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
|
||||
when(mWifiEntry1.isDefaultNetwork()).thenReturn(true);
|
||||
when(mWifiEntry1.hasInternetAccess()).thenReturn(false);
|
||||
mAccessPoints.add(mWifiEntry1);
|
||||
|
||||
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
|
||||
|
||||
verify(mWifiEntry1).setListener(mInternetDialogController.mConnectedWifiInternetMonitor);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onUpdated_connectedWifiHasInternetAccess_shouldScanWifiAccessPoints() {
|
||||
reset(mAccessPointController);
|
||||
when(mWifiEntry1.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
|
||||
when(mWifiEntry1.isDefaultNetwork()).thenReturn(true);
|
||||
when(mWifiEntry1.hasInternetAccess()).thenReturn(false);
|
||||
InternetDialogController.ConnectedWifiInternetMonitor mConnectedWifiInternetMonitor =
|
||||
mInternetDialogController.mConnectedWifiInternetMonitor;
|
||||
mConnectedWifiInternetMonitor.registerCallbackIfNeed(mWifiEntry1);
|
||||
|
||||
// When the hasInternetAccess() changed to true, and call back the onUpdated() function.
|
||||
when(mWifiEntry1.hasInternetAccess()).thenReturn(true);
|
||||
mConnectedWifiInternetMonitor.onUpdated();
|
||||
|
||||
verify(mAccessPointController).scanForAccessPoints();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setMergedCarrierWifiEnabledIfNeed_carrierProvisionsEnabled_doNothing() {
|
||||
when(mCarrierConfigTracker.getCarrierProvisionsWifiMergedNetworksBool(SUB_ID))
|
||||
|
||||
@@ -312,6 +312,7 @@ public class InternetDialogTest extends SysuiTestCase {
|
||||
assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
|
||||
// Show a blank block to fix the dialog height even if there is no WiFi list
|
||||
assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
verify(mInternetAdapter).setMaxEntriesCount(3);
|
||||
assertThat(mSeeAll.getVisibility()).isEqualTo(View.INVISIBLE);
|
||||
}
|
||||
|
||||
@@ -326,6 +327,7 @@ public class InternetDialogTest extends SysuiTestCase {
|
||||
assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
|
||||
// Show a blank block to fix the dialog height even if there is no WiFi list
|
||||
assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
verify(mInternetAdapter).setMaxEntriesCount(3);
|
||||
assertThat(mSeeAll.getVisibility()).isEqualTo(View.INVISIBLE);
|
||||
}
|
||||
|
||||
@@ -339,6 +341,7 @@ public class InternetDialogTest extends SysuiTestCase {
|
||||
assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
// Show a blank block to fix the dialog height even if there is no WiFi list
|
||||
assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
verify(mInternetAdapter).setMaxEntriesCount(2);
|
||||
assertThat(mSeeAll.getVisibility()).isEqualTo(View.INVISIBLE);
|
||||
}
|
||||
|
||||
@@ -347,12 +350,13 @@ public class InternetDialogTest extends SysuiTestCase {
|
||||
// The preconditions WiFi ON and WiFi entries are already in setUp()
|
||||
mInternetDialog.mConnectedWifiEntry = null;
|
||||
mInternetDialog.mWifiEntriesCount = MAX_WIFI_ENTRY_COUNT;
|
||||
mInternetDialog.mHasMoreEntry = true;
|
||||
mInternetDialog.mHasMoreWifiEntries = true;
|
||||
|
||||
mInternetDialog.updateDialog(false);
|
||||
|
||||
assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
|
||||
assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
verify(mInternetAdapter).setMaxEntriesCount(3);
|
||||
assertThat(mSeeAll.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
}
|
||||
|
||||
@@ -360,12 +364,13 @@ public class InternetDialogTest extends SysuiTestCase {
|
||||
public void updateDialog_wifiOnAndHasBothWifiEntry_showBothWifiEntryAndSeeAll() {
|
||||
// The preconditions WiFi ON and WiFi entries are already in setUp()
|
||||
mInternetDialog.mWifiEntriesCount = MAX_WIFI_ENTRY_COUNT - 1;
|
||||
mInternetDialog.mHasMoreEntry = true;
|
||||
mInternetDialog.mHasMoreWifiEntries = true;
|
||||
|
||||
mInternetDialog.updateDialog(false);
|
||||
|
||||
assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
verify(mInternetAdapter).setMaxEntriesCount(2);
|
||||
assertThat(mSeeAll.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
}
|
||||
|
||||
@@ -518,45 +523,46 @@ public class InternetDialogTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void getWifiListMaxCount_returnCountCorrectly() {
|
||||
// Ethernet, MobileData, ConnectedWiFi are all hidden.
|
||||
// Both of the Ethernet, MobileData is hidden.
|
||||
// Then the maximum count is equal to MAX_WIFI_ENTRY_COUNT.
|
||||
setNetworkVisible(false, false, false);
|
||||
|
||||
assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT);
|
||||
|
||||
// Only one of Ethernet, MobileData, ConnectedWiFi is displayed.
|
||||
// Then the maximum count is equal to MAX_WIFI_ENTRY_COUNT - 1.
|
||||
setNetworkVisible(true, false, false);
|
||||
|
||||
assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 1);
|
||||
|
||||
setNetworkVisible(false, true, false);
|
||||
|
||||
assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 1);
|
||||
|
||||
// If the Connected Wi-Fi is displayed then reduce one of the Wi-Fi list max count.
|
||||
setNetworkVisible(false, false, true);
|
||||
|
||||
assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 1);
|
||||
|
||||
// Only one of Ethernet, MobileData, ConnectedWiFi is hidden.
|
||||
// Then the maximum count is equal to MAX_WIFI_ENTRY_COUNT - 2.
|
||||
setNetworkVisible(true, true, false);
|
||||
// Only one of Ethernet, MobileData is displayed.
|
||||
// Then the maximum count is equal to MAX_WIFI_ENTRY_COUNT.
|
||||
setNetworkVisible(true, false, false);
|
||||
|
||||
assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 2);
|
||||
assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT);
|
||||
|
||||
setNetworkVisible(false, true, false);
|
||||
|
||||
assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT);
|
||||
|
||||
// If the Connected Wi-Fi is displayed then reduce one of the Wi-Fi list max count.
|
||||
setNetworkVisible(true, false, true);
|
||||
|
||||
assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 2);
|
||||
assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 1);
|
||||
|
||||
setNetworkVisible(false, true, true);
|
||||
|
||||
assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 2);
|
||||
assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 1);
|
||||
|
||||
// Ethernet, MobileData, ConnectedWiFi are all displayed.
|
||||
// Then the maximum count is equal to MAX_WIFI_ENTRY_COUNT - 3.
|
||||
// Both of Ethernet, MobileData, ConnectedWiFi is displayed.
|
||||
// Then the maximum count is equal to MAX_WIFI_ENTRY_COUNT - 1.
|
||||
setNetworkVisible(true, true, false);
|
||||
|
||||
assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 1);
|
||||
|
||||
// If the Connected Wi-Fi is displayed then reduce one of the Wi-Fi list max count.
|
||||
setNetworkVisible(true, true, true);
|
||||
|
||||
assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 3);
|
||||
assertThat(mInternetDialog.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT - 2);
|
||||
}
|
||||
|
||||
private void setNetworkVisible(boolean ethernetVisible, boolean mobileDataVisible,
|
||||
|
||||
Reference in New Issue
Block a user