Move NetworkController broadcasts/listeners to BG
Also do some refactoring to avoid having to sets of callback interfaces
with 75% of the same data.
Bug: 19520495
Change-Id: Ife1c71174c0d6a21f924f7de3cb2f97a04c3d5a1
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java
new file mode 100644
index 0000000..1cc6fa8
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.systemui.statusbar.policy;
+
+import android.os.HandlerThread;
+import android.telephony.SubscriptionInfo;
+import android.test.AndroidTestCase;
+
+import com.android.systemui.R;
+import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
+import com.android.systemui.statusbar.policy.NetworkControllerImpl.EmergencyListener;
+import com.android.systemui.statusbar.policy.NetworkControllerImpl.IconState;
+
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CallbackHandlerTest extends AndroidTestCase {
+
+ private CallbackHandler mHandler;
+ private HandlerThread mHandlerThread;
+
+ @Mock
+ private EmergencyListener mEmengencyListener;
+ @Mock
+ private SignalCallback mSignalCallback;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ mHandlerThread = new HandlerThread("TestThread");
+ mHandlerThread.start();
+ mHandler = new CallbackHandler(mHandlerThread.getLooper());
+
+ MockitoAnnotations.initMocks(this);
+ mHandler.setListening(mEmengencyListener, true);
+ mHandler.setListening(mSignalCallback, true);
+ }
+
+ public void testEmergencyListener() {
+ mHandler.setEmergencyCallsOnly(true);
+ waitForCallbacks();
+
+ ArgumentCaptor<Boolean> captor = ArgumentCaptor.forClass(Boolean.class);
+ Mockito.verify(mEmengencyListener).setEmergencyCallsOnly(captor.capture());
+ assertTrue(captor.getValue());
+ }
+
+ public void testSignalCallback_setWifiIndicators() {
+ boolean enabled = true;
+ IconState status = new IconState(true, 0, "");
+ IconState qs = new IconState(true, 1, "");
+ boolean in = true;
+ boolean out = true;
+ String description = "Test";
+ mHandler.setWifiIndicators(enabled, status, qs, in, out, description);
+ waitForCallbacks();
+
+ ArgumentCaptor<Boolean> enableArg = ArgumentCaptor.forClass(Boolean.class);
+ ArgumentCaptor<IconState> statusArg = ArgumentCaptor.forClass(IconState.class);
+ ArgumentCaptor<IconState> qsArg = ArgumentCaptor.forClass(IconState.class);
+ ArgumentCaptor<Boolean> inArg = ArgumentCaptor.forClass(Boolean.class);
+ ArgumentCaptor<Boolean> outArg = ArgumentCaptor.forClass(Boolean.class);
+ ArgumentCaptor<String> descArg = ArgumentCaptor.forClass(String.class);
+ Mockito.verify(mSignalCallback).setWifiIndicators(enableArg.capture(),
+ statusArg.capture(), qsArg.capture(), inArg.capture(), outArg.capture(),
+ descArg.capture());
+ assertEquals(enabled, (boolean) enableArg.getValue());
+ assertEquals(status, statusArg.getValue());
+ assertEquals(qs, qsArg.getValue());
+ assertEquals(in, (boolean) inArg.getValue());
+ assertEquals(out, (boolean) outArg.getValue());
+ assertEquals(description, descArg.getValue());
+ }
+
+ public void testSignalCallback_setMobileDataIndicators() {
+ IconState status = new IconState(true, 0, "");
+ IconState qs = new IconState(true, 1, "");
+ int dark = 2;
+ boolean in = true;
+ boolean out = true;
+ String typeDescription = "Test 1";
+ String description = "Test 2";
+ int type = R.drawable.stat_sys_data_fully_connected_1x;
+ int qsType = R.drawable.ic_qs_signal_1x;
+ boolean wide = true;
+ int subId = 5;
+ mHandler.setMobileDataIndicators(status, qs, dark, type, qsType, in, out, typeDescription,
+ description, wide, subId);
+ waitForCallbacks();
+
+ ArgumentCaptor<IconState> statusArg = ArgumentCaptor.forClass(IconState.class);
+ ArgumentCaptor<IconState> qsArg = ArgumentCaptor.forClass(IconState.class);
+ ArgumentCaptor<Integer> darkStrengthArg = ArgumentCaptor.forClass(Integer.class);
+ ArgumentCaptor<Integer> typeIconArg = ArgumentCaptor.forClass(Integer.class);
+ ArgumentCaptor<Integer> qsTypeIconArg = ArgumentCaptor.forClass(Integer.class);
+ ArgumentCaptor<Boolean> inArg = ArgumentCaptor.forClass(Boolean.class);
+ ArgumentCaptor<Boolean> outArg = ArgumentCaptor.forClass(Boolean.class);
+ ArgumentCaptor<String> typeContentArg = ArgumentCaptor.forClass(String.class);
+ ArgumentCaptor<String> descArg = ArgumentCaptor.forClass(String.class);
+ ArgumentCaptor<Boolean> wideArg = ArgumentCaptor.forClass(Boolean.class);
+ ArgumentCaptor<Integer> subIdArg = ArgumentCaptor.forClass(Integer.class);
+ Mockito.verify(mSignalCallback).setMobileDataIndicators(statusArg.capture(), qsArg.capture(),
+ darkStrengthArg.capture(), typeIconArg.capture(), qsTypeIconArg.capture(),
+ inArg.capture(), outArg.capture(), typeContentArg.capture(), descArg.capture(),
+ wideArg.capture(), subIdArg.capture());
+ assertEquals(status, statusArg.getValue());
+ assertEquals(qs, qsArg.getValue());
+ assertEquals(dark, (int) darkStrengthArg.getValue());
+ assertEquals(type, (int) typeIconArg.getValue());
+ assertEquals(qsType, (int) qsTypeIconArg.getValue());
+ assertEquals(in, (boolean) inArg.getValue());
+ assertEquals(out, (boolean) outArg.getValue());
+ assertEquals(typeDescription, typeContentArg.getValue());
+ assertEquals(description, descArg.getValue());
+ assertEquals(wide, (boolean) wideArg.getValue());
+ assertEquals(subId, (int) subIdArg.getValue());
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testSignalCallback_setSubs() {
+ List<SubscriptionInfo> subs = new ArrayList<>();
+ mHandler.setSubs(subs);
+ waitForCallbacks();
+
+ ArgumentCaptor<ArrayList> subsArg = ArgumentCaptor.forClass(ArrayList.class);
+ Mockito.verify(mSignalCallback).setSubs(subsArg.capture());
+ assertTrue(subs == subsArg.getValue());
+ }
+
+ public void testSignalCallback_setNoSims() {
+ boolean noSims = true;
+ mHandler.setNoSims(noSims);
+ waitForCallbacks();
+
+ ArgumentCaptor<Boolean> noSimsArg = ArgumentCaptor.forClass(Boolean.class);
+ Mockito.verify(mSignalCallback).setNoSims(noSimsArg.capture());
+ assertEquals(noSims, (boolean) noSimsArg.getValue());
+ }
+
+ public void testSignalCallback_setEthernetIndicators() {
+ IconState state = new IconState(true, R.drawable.stat_sys_ethernet, "Test Description");
+ mHandler.setEthernetIndicators(state);
+ waitForCallbacks();
+
+ ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
+ Mockito.verify(mSignalCallback).setEthernetIndicators(iconArg.capture());
+ assertEquals(state, iconArg.getValue());
+ }
+
+ public void testSignalCallback_setIsAirplaneMode() {
+ IconState state = new IconState(true, R.drawable.stat_sys_airplane_mode, "Test Description");
+ mHandler.setIsAirplaneMode(state);
+ waitForCallbacks();
+
+ ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
+ Mockito.verify(mSignalCallback).setIsAirplaneMode(iconArg.capture());
+ assertEquals(state, iconArg.getValue());
+ }
+
+ private void waitForCallbacks() {
+ mHandlerThread.quitSafely();
+ try {
+ mHandlerThread.join();
+ } catch (InterruptedException e) {
+ }
+ }
+
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
index 29f461e..3d5f045 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
@@ -23,6 +23,7 @@
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.net.wifi.WifiManager;
+import android.os.Looper;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
@@ -31,12 +32,10 @@
import android.telephony.TelephonyManager;
import android.util.Log;
-import com.android.internal.telephony.IccCardConstants;
import com.android.internal.telephony.cdma.EriInfo;
import com.android.systemui.SysuiTestCase;
-import com.android.systemui.statusbar.policy.NetworkController.NetworkSignalChangedCallback;
import com.android.systemui.statusbar.policy.NetworkControllerImpl.Config;
-import com.android.systemui.statusbar.policy.NetworkControllerImpl.SignalCluster;
+import com.android.systemui.statusbar.policy.NetworkControllerImpl.IconState;
import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;
@@ -59,8 +58,6 @@
protected NetworkControllerImpl mNetworkController;
protected MobileSignalController mMobileSignalController;
protected PhoneStateListener mPhoneStateListener;
- protected SignalCluster mSignalCluster;
- protected NetworkSignalChangedCallback mNetworkSignalChangedCallback;
private SignalStrength mSignalStrength;
private ServiceState mServiceState;
protected ConnectivityManager mMockCm;
@@ -68,6 +65,7 @@
protected SubscriptionManager mMockSm;
protected TelephonyManager mMockTm;
protected Config mConfig;
+ protected CallbackHandler mCallbackHandler;
protected int mSubId;
@@ -91,33 +89,36 @@
mConfig = new Config();
mConfig.hspaDataDistinguishable = true;
+ mCallbackHandler = mock(CallbackHandler.class);
mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm,
- mConfig, mock(AccessPointControllerImpl.class),
- mock(MobileDataControllerImpl.class));
+ mConfig, Looper.getMainLooper(), mCallbackHandler,
+ mock(AccessPointControllerImpl.class), mock(MobileDataControllerImpl.class));
setupNetworkController();
}
protected void setupNetworkController() {
// For now just pretend to be the data sim, so we can test that too.
- mSubId = SubscriptionManager.getDefaultDataSubId();
+ mSubId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
SubscriptionInfo subscription = mock(SubscriptionInfo.class);
List<SubscriptionInfo> subs = new ArrayList<SubscriptionInfo>();
when(subscription.getSubscriptionId()).thenReturn(mSubId);
subs.add(subscription);
mNetworkController.setCurrentSubscriptions(subs);
mMobileSignalController = mNetworkController.mMobileSignalControllers.get(mSubId);
+ mMobileSignalController.getState().dataSim = true;
mPhoneStateListener = mMobileSignalController.mPhoneStateListener;
- mSignalCluster = mock(SignalCluster.class);
- mNetworkSignalChangedCallback = mock(NetworkSignalChangedCallback.class);
- mNetworkController.addSignalCluster(mSignalCluster);
- mNetworkController.addNetworkSignalChangedCallback(mNetworkSignalChangedCallback);
+
+ // Trigger blank callbacks to always get the current state (some tests don't trigger
+ // changes from default state).
+ mNetworkController.addSignalCallback(null);
}
protected NetworkControllerImpl setUpNoMobileData() {
when(mMockCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false);
NetworkControllerImpl networkControllerNoMobile
= new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm,
- mConfig, mock(AccessPointControllerImpl.class),
+ mConfig, Looper.getMainLooper(), mCallbackHandler,
+ mock(AccessPointControllerImpl.class),
mock(MobileDataControllerImpl.class));
setupNetworkController();
@@ -242,34 +243,30 @@
protected void verifyHasNoSims(boolean hasNoSimsVisible) {
ArgumentCaptor<Boolean> hasNoSimsArg = ArgumentCaptor.forClass(Boolean.class);
- Mockito.verify(mSignalCluster, Mockito.atLeastOnce()).setNoSims(hasNoSimsArg.capture());
- assertEquals("No sims in status bar", hasNoSimsVisible, (boolean) hasNoSimsArg.getValue());
-
- Mockito.verify(mNetworkSignalChangedCallback, Mockito.atLeastOnce())
- .onNoSimVisibleChanged(hasNoSimsArg.capture());
- assertEquals("No sims in quick settings", hasNoSimsVisible,
- (boolean) hasNoSimsArg.getValue());
+ Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setNoSims(hasNoSimsArg.capture());
+ assertEquals("No sims", hasNoSimsVisible, (boolean) hasNoSimsArg.getValue());
}
protected void verifyLastQsMobileDataIndicators(boolean visible, int icon, int typeIcon,
boolean dataIn, boolean dataOut) {
- ArgumentCaptor<Integer> iconArg = ArgumentCaptor.forClass(Integer.class);
+ ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
ArgumentCaptor<Integer> typeIconArg = ArgumentCaptor.forClass(Integer.class);
- ArgumentCaptor<Boolean> visibleArg = ArgumentCaptor.forClass(Boolean.class);
ArgumentCaptor<Boolean> dataInArg = ArgumentCaptor.forClass(Boolean.class);
ArgumentCaptor<Boolean> dataOutArg = ArgumentCaptor.forClass(Boolean.class);
- Mockito.verify(mNetworkSignalChangedCallback, Mockito.atLeastOnce())
- .onMobileDataSignalChanged(visibleArg.capture(), iconArg.capture(),
- ArgumentCaptor.forClass(String.class).capture(),
- typeIconArg.capture(),
- dataInArg.capture(),
- dataOutArg.capture(),
- ArgumentCaptor.forClass(String.class).capture(),
- ArgumentCaptor.forClass(String.class).capture(),
- ArgumentCaptor.forClass(Boolean.class).capture());
- assertEquals("Visibility in, quick settings", visible, (boolean) visibleArg.getValue());
- assertEquals("Signal icon in, quick settings", icon, (int) iconArg.getValue());
+ Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setMobileDataIndicators(
+ ArgumentCaptor.forClass(IconState.class).capture(),
+ iconArg.capture(),
+ ArgumentCaptor.forClass(Integer.class).capture(),
+ ArgumentCaptor.forClass(Integer.class).capture(),
+ typeIconArg.capture(), dataInArg.capture(), dataOutArg.capture(),
+ ArgumentCaptor.forClass(String.class).capture(),
+ ArgumentCaptor.forClass(String.class).capture(),
+ ArgumentCaptor.forClass(Boolean.class).capture(),
+ ArgumentCaptor.forClass(Integer.class).capture());
+ IconState iconState = iconArg.getValue();
+ assertEquals("Visibility in, quick settings", visible, iconState.visible);
+ assertEquals("Signal icon in, quick settings", icon, iconState.icon);
assertEquals("Data icon in, quick settings", typeIcon, (int) typeIconArg.getValue());
assertEquals("Data direction in, in quick settings", dataIn,
(boolean) dataInArg.getValue());
@@ -283,29 +280,32 @@
protected void verifyLastMobileDataIndicators(boolean visible, int strengthIcon,
int darkStrengthIcon, int typeIcon) {
- ArgumentCaptor<Integer> strengthIconArg = ArgumentCaptor.forClass(Integer.class);
+ ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
ArgumentCaptor<Integer> darkStrengthIconArg = ArgumentCaptor.forClass(Integer.class);
ArgumentCaptor<Integer> typeIconArg = ArgumentCaptor.forClass(Integer.class);
- ArgumentCaptor<Boolean> visibleArg = ArgumentCaptor.forClass(Boolean.class);
// TODO: Verify all fields.
- Mockito.verify(mSignalCluster, Mockito.atLeastOnce()).setMobileDataIndicators(
- visibleArg.capture(), strengthIconArg.capture(), darkStrengthIconArg.capture(),
- typeIconArg.capture(),
+ Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setMobileDataIndicators(
+ iconArg.capture(),
+ ArgumentCaptor.forClass(IconState.class).capture(),
+ darkStrengthIconArg.capture(), typeIconArg.capture(),
+ ArgumentCaptor.forClass(Integer.class).capture(),
+ ArgumentCaptor.forClass(Boolean.class).capture(),
+ ArgumentCaptor.forClass(Boolean.class).capture(),
ArgumentCaptor.forClass(String.class).capture(),
ArgumentCaptor.forClass(String.class).capture(),
ArgumentCaptor.forClass(Boolean.class).capture(),
ArgumentCaptor.forClass(Integer.class).capture());
+ IconState iconState = iconArg.getValue();
- assertEquals("Signal strength icon in status bar", strengthIcon,
- (int) strengthIconArg.getValue());
+ assertEquals("Signal strength icon in status bar", strengthIcon, iconState.icon);
assertEquals("Signal strength icon (dark mode) in status bar", darkStrengthIcon,
(int) darkStrengthIconArg.getValue());
assertEquals("Data icon in status bar", typeIcon, (int) typeIconArg.getValue());
- assertEquals("Visibility in status bar", visible, (boolean) visibleArg.getValue());
+ assertEquals("Visibility in status bar", visible, iconState.visible);
}
protected void assertNetworkNameEquals(String expected) {
- assertEquals("Network name", expected, mNetworkController.getMobileDataNetworkName());
+ assertEquals("Network name", expected, mMobileSignalController.getState().networkName);
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
index 3f9312d..015127d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
@@ -2,6 +2,7 @@
import org.mockito.Mockito;
+import android.os.Looper;
import android.telephony.TelephonyManager;
public class NetworkControllerDataTest extends NetworkControllerBaseTest {
@@ -74,7 +75,8 @@
// Switch to showing 4g icon and re-initialize the NetworkController.
mConfig.show4gForLte = true;
mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm,
- mConfig, Mockito.mock(AccessPointControllerImpl.class),
+ mConfig, Looper.getMainLooper(), mCallbackHandler,
+ Mockito.mock(AccessPointControllerImpl.class),
Mockito.mock(MobileDataControllerImpl.class));
setupNetworkController();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerEthernetTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerEthernetTest.java
index 82ced9f..f1d2acb 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerEthernetTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerEthernetTest.java
@@ -2,6 +2,8 @@
import android.net.NetworkCapabilities;
+import com.android.systemui.statusbar.policy.NetworkControllerImpl.IconState;
+
import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;
@@ -28,13 +30,12 @@
}
protected void verifyLastEthernetIcon(boolean visible, int icon) {
- ArgumentCaptor<Boolean> visibleArg = ArgumentCaptor.forClass(Boolean.class);
- ArgumentCaptor<Integer> iconArg = ArgumentCaptor.forClass(Integer.class);
+ ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
- Mockito.verify(mSignalCluster, Mockito.atLeastOnce()).setEthernetIndicators(
- visibleArg.capture(), iconArg.capture(),
- ArgumentCaptor.forClass(String.class).capture());
- assertEquals("Ethernet visible, in status bar", visible, (boolean) visibleArg.getValue());
- assertEquals("Ethernet icon, in status bar", icon, (int) iconArg.getValue());
+ Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setEthernetIndicators(
+ iconArg.capture());
+ IconState iconState = iconArg.getValue();
+ assertEquals("Ethernet visible, in status bar", visible, iconState.visible);
+ assertEquals("Ethernet icon, in status bar", icon, iconState.icon);
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
index 389ad6f..a85bca2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
@@ -19,12 +19,12 @@
import android.content.Intent;
import android.net.ConnectivityManager;
+import android.os.Looper;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo;
import android.telephony.TelephonyManager;
-import com.android.internal.telephony.IccCardConstants;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.TelephonyIntents;
import com.android.systemui.R;
@@ -41,8 +41,8 @@
Mockito.when(mMockCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false);
// Create a new NetworkController as this is currently handled in constructor.
mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm,
- mConfig, mock(AccessPointControllerImpl.class),
- mock(MobileDataControllerImpl.class));
+ mConfig, Looper.getMainLooper(), mCallbackHandler,
+ mock(AccessPointControllerImpl.class), mock(MobileDataControllerImpl.class));
setupNetworkController();
verifyLastMobileDataIndicators(false, 0, 0);
@@ -61,8 +61,8 @@
Mockito.when(mMockCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false);
// Create a new NetworkController as this is currently handled in constructor.
mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm,
- mConfig, mock(AccessPointControllerImpl.class),
- mock(MobileDataControllerImpl.class));
+ mConfig, Looper.getMainLooper(), mCallbackHandler,
+ mock(AccessPointControllerImpl.class), mock(MobileDataControllerImpl.class));
setupNetworkController();
// No Subscriptions.
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java
index 2e0e9a3..d0c95b9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java
@@ -6,6 +6,8 @@
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
+import com.android.systemui.statusbar.policy.NetworkControllerImpl.IconState;
+
import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;
@@ -133,46 +135,39 @@
ArgumentCaptor<Boolean> inArg = ArgumentCaptor.forClass(Boolean.class);
ArgumentCaptor<Boolean> outArg = ArgumentCaptor.forClass(Boolean.class);
- Mockito.verify(mNetworkSignalChangedCallback, Mockito.atLeastOnce()).onWifiSignalChanged(
- ArgumentCaptor.forClass(Boolean.class).capture(),
- ArgumentCaptor.forClass(Boolean.class).capture(),
- ArgumentCaptor.forClass(Integer.class).capture(),
- inArg.capture(), outArg.capture(),
- ArgumentCaptor.forClass(String.class).capture(),
- ArgumentCaptor.forClass(String.class).capture());
+ Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setWifiIndicators(
+ Mockito.anyBoolean(), Mockito.any(IconState.class), Mockito.any(IconState.class),
+ inArg.capture(), outArg.capture(), Mockito.anyString());
assertEquals("WiFi data in, in quick settings", in, (boolean) inArg.getValue());
assertEquals("WiFi data out, in quick settings", out, (boolean) outArg.getValue());
}
protected void verifyLastQsWifiIcon(boolean enabled, boolean connected, int icon,
String description) {
+ ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
ArgumentCaptor<Boolean> enabledArg = ArgumentCaptor.forClass(Boolean.class);
- ArgumentCaptor<Boolean> connectedArg = ArgumentCaptor.forClass(Boolean.class);
- ArgumentCaptor<Integer> iconArg = ArgumentCaptor.forClass(Integer.class);
ArgumentCaptor<String> descArg = ArgumentCaptor.forClass(String.class);
- Mockito.verify(mNetworkSignalChangedCallback, Mockito.atLeastOnce()).onWifiSignalChanged(
- enabledArg.capture(), connectedArg.capture(), iconArg.capture(),
- ArgumentCaptor.forClass(Boolean.class).capture(),
- ArgumentCaptor.forClass(Boolean.class).capture(),
- ArgumentCaptor.forClass(String.class).capture(),
+ Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setWifiIndicators(
+ enabledArg.capture(), Mockito.any(IconState.class),
+ iconArg.capture(), Mockito.anyBoolean(),
+ Mockito.anyBoolean(),
descArg.capture());
+ IconState iconState = iconArg.getValue();
assertEquals("WiFi enabled, in quick settings", enabled, (boolean) enabledArg.getValue());
- assertEquals("WiFi connected, in quick settings", connected,
- (boolean) connectedArg.getValue());
- assertEquals("WiFi signal, in quick settings", icon, (int) iconArg.getValue());
- assertEquals("WiFI desc (ssid), in quick settings", description,
- (String) descArg.getValue());
+ assertEquals("WiFi connected, in quick settings", connected, iconState.visible);
+ assertEquals("WiFi signal, in quick settings", icon, iconState.icon);
+ assertEquals("WiFI desc (ssid), in quick settings", description, descArg.getValue());
}
protected void verifyLastWifiIcon(boolean visible, int icon) {
- ArgumentCaptor<Boolean> visibleArg = ArgumentCaptor.forClass(Boolean.class);
- ArgumentCaptor<Integer> iconArg = ArgumentCaptor.forClass(Integer.class);
+ ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
- Mockito.verify(mSignalCluster, Mockito.atLeastOnce()).setWifiIndicators(
- visibleArg.capture(), iconArg.capture(),
- ArgumentCaptor.forClass(String.class).capture());
- assertEquals("WiFi visible, in status bar", visible, (boolean) visibleArg.getValue());
- assertEquals("WiFi signal, in status bar", icon, (int) iconArg.getValue());
+ Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setWifiIndicators(
+ Mockito.anyBoolean(), iconArg.capture(), Mockito.any(IconState.class),
+ Mockito.anyBoolean(), Mockito.anyBoolean(), Mockito.anyString());
+ IconState iconState = iconArg.getValue();
+ assertEquals("WiFi visible, in status bar", visible, iconState.visible);
+ assertEquals("WiFi signal, in status bar", icon, iconState.icon);
}
}