summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java48
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogControllerTest.java102
2 files changed, 62 insertions, 88 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
index 2a7d2c35e82f..8690ce364313 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
@@ -86,6 +86,7 @@ import com.android.systemui.util.settings.GlobalSettings;
import com.android.wifitrackerlib.MergedCarrierEntry;
import com.android.wifitrackerlib.WifiEntry;
+import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -98,8 +99,10 @@ import java.util.stream.Stream;
import javax.inject.Inject;
-public class InternetDialogController implements WifiEntry.DisconnectCallback,
- AccessPointController.AccessPointCallback {
+/**
+ * Controller for Internet Dialog.
+ */
+public class InternetDialogController implements AccessPointController.AccessPointCallback {
private static final String TAG = "InternetDialogController";
private static final String ACTION_NETWORK_PROVIDER_SETTINGS =
@@ -870,20 +873,6 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
return;
}
- boolean hasConnectedWifi = false;
- final int accessPointSize = accessPoints.size();
- for (int i = 0; i < accessPointSize; i++) {
- WifiEntry wifiEntry = accessPoints.get(i);
- if (wifiEntry.isDefaultNetwork() && wifiEntry.hasInternetAccess()) {
- mConnectedEntry = wifiEntry;
- hasConnectedWifi = true;
- break;
- }
- }
- if (!hasConnectedWifi) {
- mConnectedEntry = null;
- }
-
int count = MAX_WIFI_ENTRY_COUNT;
if (mHasEthernet) {
count -= 1;
@@ -891,15 +880,22 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
if (hasCarrier()) {
count -= 1;
}
- if (hasConnectedWifi) {
- count -= 1;
+ if (count > accessPoints.size()) {
+ count = accessPoints.size();
}
- final List<WifiEntry> wifiEntries = accessPoints.stream()
- .filter(wifiEntry -> (!wifiEntry.isDefaultNetwork()
- || !wifiEntry.hasInternetAccess()))
- .limit(count)
- .collect(Collectors.toList());
- mWifiEntriesCount = wifiEntries == null ? 0 : wifiEntries.size();
+
+ 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);
+ }
+ }
+ mConnectedEntry = connectedEntry;
+ mWifiEntriesCount = wifiEntries.size();
if (mCallback != null) {
mCallback.onAccessPointsChanged(wifiEntries, mConnectedEntry);
@@ -910,10 +906,6 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
public void onSettingsActivityTriggered(Intent settingsIntent) {
}
- @Override
- public void onDisconnectResult(int status) {
- }
-
private class InternetTelephonyCallback extends TelephonyCallback implements
TelephonyCallback.DataConnectionStateListener,
TelephonyCallback.DisplayInfoListener,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogControllerTest.java
index ca8903bfe009..95e7a98c0a60 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogControllerTest.java
@@ -1,5 +1,7 @@
package com.android.systemui.qs.tiles.dialog;
+import static android.provider.Settings.Global.AIRPLANE_MODE_ON;
+
import static com.android.systemui.qs.tiles.dialog.InternetDialogController.TOAST_PARAMS_HORIZONTAL_WEIGHT;
import static com.android.systemui.qs.tiles.dialog.InternetDialogController.TOAST_PARAMS_VERTICAL_WEIGHT;
@@ -19,7 +21,6 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.animation.Animator;
-import android.content.Context;
import android.content.Intent;
import android.graphics.PixelFormat;
import android.graphics.drawable.Drawable;
@@ -37,7 +38,6 @@ import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
-import androidx.annotation.Nullable;
import androidx.test.filters.SmallTest;
import com.android.internal.logging.UiEventLogger;
@@ -47,7 +47,6 @@ import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.animation.DialogLaunchAnimator;
import com.android.systemui.broadcast.BroadcastDispatcher;
-import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.statusbar.connectivity.AccessPointController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -70,7 +69,6 @@ import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import java.util.List;
-import java.util.concurrent.Executor;
@SmallTest
@RunWith(AndroidTestingRunner.class)
@@ -78,8 +76,6 @@ import java.util.concurrent.Executor;
public class InternetDialogControllerTest extends SysuiTestCase {
private static final int SUB_ID = 1;
- private static final String CONNECTED_TITLE = "Connected Wi-Fi Title";
- private static final String CONNECTED_SUMMARY = "Connected Wi-Fi Summary";
//SystemUIToast
private static final int GRAVITY_FLAGS = Gravity.FILL_HORIZONTAL | Gravity.FILL_VERTICAL;
@@ -142,7 +138,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
private DialogLaunchAnimator mDialogLaunchAnimator;
private TestableResources mTestableResources;
- private MockInternetDialogController mInternetDialogController;
+ private InternetDialogController mInternetDialogController;
private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
private List<WifiEntry> mAccessPoints = new ArrayList<>();
private List<WifiEntry> mWifiEntries = new ArrayList<>();
@@ -170,7 +166,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
when(mSystemUIToast.getGravity()).thenReturn(GRAVITY_FLAGS);
when(mSystemUIToast.getInAnimation()).thenReturn(mAnimator);
- mInternetDialogController = new MockInternetDialogController(mContext,
+ mInternetDialogController = new InternetDialogController(mContext,
mock(UiEventLogger.class), mock(ActivityStarter.class), mAccessPointController,
mSubscriptionManager, mTelephonyManager, mWifiManager,
mock(ConnectivityManager.class), mHandler, mExecutor, mBroadcastDispatcher,
@@ -225,7 +221,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test
public void getDialogTitleText_withAirplaneModeOn_returnAirplaneMode() {
- mInternetDialogController.setAirplaneModeEnabled(true);
+ fakeAirplaneModeEnabled(true);
assertTrue(TextUtils.equals(mInternetDialogController.getDialogTitleText(),
getResourcesString("airplane_mode")));
@@ -233,7 +229,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test
public void getDialogTitleText_withAirplaneModeOff_returnInternet() {
- mInternetDialogController.setAirplaneModeEnabled(false);
+ fakeAirplaneModeEnabled(false);
assertTrue(TextUtils.equals(mInternetDialogController.getDialogTitleText(),
getResourcesString("quick_settings_internet_label")));
@@ -241,14 +237,14 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test
public void getSubtitleText_withAirplaneModeOn_returnNull() {
- mInternetDialogController.setAirplaneModeEnabled(true);
+ fakeAirplaneModeEnabled(true);
assertThat(mInternetDialogController.getSubtitleText(false)).isNull();
}
@Test
public void getSubtitleText_withWifiOff_returnWifiIsOff() {
- mInternetDialogController.setAirplaneModeEnabled(false);
+ fakeAirplaneModeEnabled(false);
when(mWifiManager.isWifiEnabled()).thenReturn(false);
assertThat(mInternetDialogController.getSubtitleText(false))
@@ -263,7 +259,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test
public void getSubtitleText_withNoWifiEntry_returnSearchWifi() {
- mInternetDialogController.setAirplaneModeEnabled(false);
+ fakeAirplaneModeEnabled(false);
when(mWifiManager.isWifiEnabled()).thenReturn(true);
mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
@@ -280,7 +276,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test
public void getSubtitleText_withWifiEntry_returnTapToConnect() {
// The preconditions WiFi Entries is already in setUp()
- mInternetDialogController.setAirplaneModeEnabled(false);
+ fakeAirplaneModeEnabled(false);
when(mWifiManager.isWifiEnabled()).thenReturn(true);
assertThat(mInternetDialogController.getSubtitleText(false))
@@ -295,7 +291,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test
public void getSubtitleText_deviceLockedWithWifiOn_returnUnlockToViewNetworks() {
- mInternetDialogController.setAirplaneModeEnabled(false);
+ fakeAirplaneModeEnabled(false);
when(mWifiManager.isWifiEnabled()).thenReturn(true);
when(mKeyguardStateController.isUnlocked()).thenReturn(false);
@@ -305,7 +301,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test
public void getSubtitleText_withNoService_returnNoNetworksAvailable() {
- mInternetDialogController.setAirplaneModeEnabled(false);
+ fakeAirplaneModeEnabled(false);
when(mWifiManager.isWifiEnabled()).thenReturn(true);
mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
@@ -319,7 +315,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test
public void getSubtitleText_withMobileDataDisabled_returnNoOtherAvailable() {
- mInternetDialogController.setAirplaneModeEnabled(false);
+ fakeAirplaneModeEnabled(false);
when(mWifiManager.isWifiEnabled()).thenReturn(true);
mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
@@ -420,7 +416,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test
public void onAccessPointsChanged_oneConnectedEntry_callbackConnectedEntryOnly() {
reset(mInternetDialogCallback);
- mInternetDialogController.setAirplaneModeEnabled(true);
+ fakeAirplaneModeEnabled(true);
mAccessPoints.clear();
mAccessPoints.add(mConnectedEntry);
@@ -433,7 +429,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test
public void onAccessPointsChanged_noConnectedEntryAndOneOther_callbackWifiEntriesOnly() {
reset(mInternetDialogCallback);
- mInternetDialogController.setAirplaneModeEnabled(true);
+ fakeAirplaneModeEnabled(true);
mAccessPoints.clear();
mAccessPoints.add(mWifiEntry1);
@@ -448,7 +444,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test
public void onAccessPointsChanged_oneConnectedEntryAndOneOther_callbackCorrectly() {
reset(mInternetDialogCallback);
- mInternetDialogController.setAirplaneModeEnabled(true);
+ fakeAirplaneModeEnabled(true);
mAccessPoints.clear();
mAccessPoints.add(mConnectedEntry);
mAccessPoints.add(mWifiEntry1);
@@ -463,7 +459,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test
public void onAccessPointsChanged_oneConnectedEntryAndTwoOthers_callbackCorrectly() {
reset(mInternetDialogCallback);
- mInternetDialogController.setAirplaneModeEnabled(true);
+ fakeAirplaneModeEnabled(true);
mAccessPoints.clear();
mAccessPoints.add(mConnectedEntry);
mAccessPoints.add(mWifiEntry1);
@@ -480,7 +476,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test
public void onAccessPointsChanged_oneConnectedEntryAndThreeOthers_callbackCutMore() {
reset(mInternetDialogCallback);
- mInternetDialogController.setAirplaneModeEnabled(true);
+ fakeAirplaneModeEnabled(true);
mAccessPoints.clear();
mAccessPoints.add(mConnectedEntry);
mAccessPoints.add(mWifiEntry1);
@@ -497,7 +493,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
// Turn off airplane mode to has carrier network, then Wi-Fi entries will cut last one.
reset(mInternetDialogCallback);
- mInternetDialogController.setAirplaneModeEnabled(false);
+ fakeAirplaneModeEnabled(false);
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
@@ -508,7 +504,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test
public void onAccessPointsChanged_oneConnectedEntryAndFourOthers_callbackCutMore() {
reset(mInternetDialogCallback);
- mInternetDialogController.setAirplaneModeEnabled(true);
+ fakeAirplaneModeEnabled(true);
mAccessPoints.clear();
mAccessPoints.add(mConnectedEntry);
mAccessPoints.add(mWifiEntry1);
@@ -526,7 +522,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
// Turn off airplane mode to has carrier network, then Wi-Fi entries will cut last one.
reset(mInternetDialogCallback);
- mInternetDialogController.setAirplaneModeEnabled(false);
+ fakeAirplaneModeEnabled(false);
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
@@ -537,7 +533,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
@Test
public void onAccessPointsChanged_fourWifiEntries_callbackCutMore() {
reset(mInternetDialogCallback);
- mInternetDialogController.setAirplaneModeEnabled(true);
+ fakeAirplaneModeEnabled(true);
mAccessPoints.clear();
mAccessPoints.add(mWifiEntry1);
mAccessPoints.add(mWifiEntry2);
@@ -566,7 +562,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
// Turn off airplane mode to has carrier network, then Wi-Fi entries will cut last one.
reset(mInternetDialogCallback);
- mInternetDialogController.setAirplaneModeEnabled(false);
+ fakeAirplaneModeEnabled(false);
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
@@ -576,6 +572,23 @@ public class InternetDialogControllerTest extends SysuiTestCase {
}
@Test
+ public void onAccessPointsChanged_wifiIsDefaultButNoInternetAccess_putIntoWifiEntries() {
+ reset(mInternetDialogCallback);
+ 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);
+
+ mWifiEntries.clear();
+ mWifiEntries.add(mWifiEntry1);
+ verify(mInternetDialogCallback)
+ .onAccessPointsChanged(mWifiEntries, null /* connectedEntry */);
+ }
+
+ @Test
public void setMergedCarrierWifiEnabledIfNeed_carrierProvisionsEnabled_doNothing() {
when(mCarrierConfigTracker.getCarrierProvisionsWifiMergedNetworksBool(SUB_ID))
.thenReturn(true);
@@ -641,38 +654,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
mContext.getPackageName());
}
- private class MockInternetDialogController extends InternetDialogController {
-
- private GlobalSettings mGlobalSettings;
- private boolean mIsAirplaneModeOn;
-
- MockInternetDialogController(Context context, UiEventLogger uiEventLogger,
- ActivityStarter starter, AccessPointController accessPointController,
- SubscriptionManager subscriptionManager, TelephonyManager telephonyManager,
- @Nullable WifiManager wifiManager, ConnectivityManager connectivityManager,
- @Main Handler handler, @Main Executor mainExecutor,
- BroadcastDispatcher broadcastDispatcher,
- KeyguardUpdateMonitor keyguardUpdateMonitor, GlobalSettings globalSettings,
- KeyguardStateController keyguardStateController, WindowManager windowManager,
- ToastFactory toastFactory, Handler workerHandler,
- CarrierConfigTracker carrierConfigTracker,
- LocationController locationController,
- DialogLaunchAnimator dialogLaunchAnimator) {
- super(context, uiEventLogger, starter, accessPointController, subscriptionManager,
- telephonyManager, wifiManager, connectivityManager, handler, mainExecutor,
- broadcastDispatcher, keyguardUpdateMonitor, globalSettings,
- keyguardStateController, windowManager, toastFactory, workerHandler,
- carrierConfigTracker, locationController, dialogLaunchAnimator);
- mGlobalSettings = globalSettings;
- }
-
- @Override
- boolean isAirplaneModeEnabled() {
- return mIsAirplaneModeOn;
- }
-
- public void setAirplaneModeEnabled(boolean enabled) {
- mIsAirplaneModeOn = enabled;
- }
+ private void fakeAirplaneModeEnabled(boolean enabled) {
+ when(mGlobalSettings.getInt(eq(AIRPLANE_MODE_ON), anyInt())).thenReturn(enabled ? 1 : 0);
}
}