blob: 3b796caa98df19ae448d59dbc8bcd030b27a2c8c [file] [log] [blame]
Jason Monkf13b4b32014-11-07 16:39:34 -05001package com.android.systemui.statusbar.policy;
2
Jason Monk0288de02017-02-23 14:48:05 -05003import static org.mockito.Matchers.anyInt;
Jason Monk9c7844c2017-01-18 15:21:53 -05004import static org.mockito.Mockito.mock;
Jason Monk0288de02017-02-23 14:48:05 -05005import static org.mockito.Mockito.when;
Jason Monk9c7844c2017-01-18 15:21:53 -05006
Jason Monkfd57ea72016-04-29 13:37:58 -04007import android.net.NetworkCapabilities;
Jason Monk07b75fe2015-05-14 16:47:03 -04008import android.os.Looper;
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -04009import android.support.test.runner.AndroidJUnit4;
Jason Monkf13b4b32014-11-07 16:39:34 -050010import android.telephony.TelephonyManager;
Jason Monke427cb82015-07-28 09:18:08 -040011import android.test.suitebuilder.annotation.SmallTest;
Jason Monk2515f472017-09-19 09:52:43 -040012import android.testing.AndroidTestingRunner;
13import android.testing.TestableLooper;
14import android.testing.TestableLooper.RunWithLooper;
Jason Monk0288de02017-02-23 14:48:05 -050015
Jason Monkf668d7c2016-01-14 10:38:41 -050016import com.android.settingslib.net.DataUsageController;
Jason Monk0288de02017-02-23 14:48:05 -050017
Jason Monk28cc1662017-03-02 10:57:36 -050018import org.junit.Ignore;
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040019import org.junit.Test;
20import org.junit.runner.RunWith;
Jason Monk33f8ae72015-05-08 10:45:15 -040021
Jason Monke427cb82015-07-28 09:18:08 -040022@SmallTest
Jason Monk2515f472017-09-19 09:52:43 -040023@RunWith(AndroidTestingRunner.class)
24@RunWithLooper
Jason Monkf13b4b32014-11-07 16:39:34 -050025public class NetworkControllerDataTest extends NetworkControllerBaseTest {
26
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040027 @Test
Jason Monkf13b4b32014-11-07 16:39:34 -050028 public void test3gDataIcon() {
29 setupDefaultSignal();
30
Jason Monk48edc0c2017-04-10 15:01:27 -040031 verifyDataIndicators(TelephonyIcons.ICON_3G,
Jason Monk01df36f2017-06-07 13:02:47 -040032 TelephonyIcons.QS_DATA_3G);
Jason Monkf13b4b32014-11-07 16:39:34 -050033 }
34
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040035 @Test
Jason Monkf13b4b32014-11-07 16:39:34 -050036 public void test2gDataIcon() {
37 setupDefaultSignal();
38 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
39 TelephonyManager.NETWORK_TYPE_GSM);
40
Jason Monk48edc0c2017-04-10 15:01:27 -040041 verifyDataIndicators(TelephonyIcons.ICON_G,
Jason Monk01df36f2017-06-07 13:02:47 -040042 TelephonyIcons.QS_DATA_G);
Jason Monkf13b4b32014-11-07 16:39:34 -050043 }
44
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040045 @Test
Jason Monkf13b4b32014-11-07 16:39:34 -050046 public void testCdmaDataIcon() {
47 setupDefaultSignal();
48 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
49 TelephonyManager.NETWORK_TYPE_CDMA);
50
Jason Monk48edc0c2017-04-10 15:01:27 -040051 verifyDataIndicators(TelephonyIcons.ICON_1X,
Jason Monk01df36f2017-06-07 13:02:47 -040052 TelephonyIcons.QS_DATA_1X);
Jason Monkf13b4b32014-11-07 16:39:34 -050053 }
54
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040055 @Test
Jason Monkf13b4b32014-11-07 16:39:34 -050056 public void testEdgeDataIcon() {
57 setupDefaultSignal();
58 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
59 TelephonyManager.NETWORK_TYPE_EDGE);
60
Jason Monk48edc0c2017-04-10 15:01:27 -040061 verifyDataIndicators(TelephonyIcons.ICON_E,
Jason Monk01df36f2017-06-07 13:02:47 -040062 TelephonyIcons.QS_DATA_E);
Jason Monkf13b4b32014-11-07 16:39:34 -050063 }
64
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040065 @Test
Jason Monkf13b4b32014-11-07 16:39:34 -050066 public void testLteDataIcon() {
67 setupDefaultSignal();
68 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
69 TelephonyManager.NETWORK_TYPE_LTE);
70
Jason Monk48edc0c2017-04-10 15:01:27 -040071 verifyDataIndicators(TelephonyIcons.ICON_LTE,
Jason Monk01df36f2017-06-07 13:02:47 -040072 TelephonyIcons.QS_DATA_LTE);
Jason Monkf13b4b32014-11-07 16:39:34 -050073 }
74
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040075 @Test
Jason Monkf13b4b32014-11-07 16:39:34 -050076 public void testHspaDataIcon() {
77 setupDefaultSignal();
78 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
79 TelephonyManager.NETWORK_TYPE_HSPA);
80
Jason Monk48edc0c2017-04-10 15:01:27 -040081 verifyDataIndicators(TelephonyIcons.ICON_H,
Jason Monk01df36f2017-06-07 13:02:47 -040082 TelephonyIcons.QS_DATA_H);
Jason Monkf13b4b32014-11-07 16:39:34 -050083 }
84
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040085 @Test
Jason Monk7150d7f2015-07-09 10:14:12 -040086 public void testWfcNoDataIcon() {
87 setupDefaultSignal();
88 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
89 TelephonyManager.NETWORK_TYPE_IWLAN);
90
91 verifyDataIndicators(0, 0);
92 }
93
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040094 @Test
Jason Monk3aaabd72014-12-12 11:11:44 -050095 public void test4gDataIcon() {
96 // Switch to showing 4g icon and re-initialize the NetworkController.
97 mConfig.show4gForLte = true;
Sundeep Ghuman9d10a3c2017-06-16 00:05:16 +000098 mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm,
Jason Monk07b75fe2015-05-14 16:47:03 -040099 mConfig, Looper.getMainLooper(), mCallbackHandler,
Jason Monk9c7844c2017-01-18 15:21:53 -0500100 mock(AccessPointControllerImpl.class),
101 mock(DataUsageController.class), mMockSubDefaults,
102 mock(DeviceProvisionedController.class));
Jason Monk3aaabd72014-12-12 11:11:44 -0500103 setupNetworkController();
104
105 setupDefaultSignal();
106 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
107 TelephonyManager.NETWORK_TYPE_LTE);
108
Jason Monk48edc0c2017-04-10 15:01:27 -0400109 verifyDataIndicators(TelephonyIcons.ICON_4G,
Jason Monk01df36f2017-06-07 13:02:47 -0400110 TelephonyIcons.QS_DATA_4G);
Jason Monk3aaabd72014-12-12 11:11:44 -0500111 }
112
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -0400113 @Test
Jason Monkfd57ea72016-04-29 13:37:58 -0400114 public void testDataDisabledIcon() {
115 setupNetworkController();
Jason Monk0288de02017-02-23 14:48:05 -0500116 when(mMockTm.getDataEnabled(mSubId)).thenReturn(false);
Jason Monkfd57ea72016-04-29 13:37:58 -0400117 setupDefaultSignal();
118 updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0);
119 setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
120
Jason Monk7e6c83c2017-04-26 14:35:24 -0400121 verifyDataIndicators(TelephonyIcons.ICON_DATA_DISABLED,
Jason Monk01df36f2017-06-07 13:02:47 -0400122 TelephonyIcons.QS_ICON_DATA_DISABLED);
Jason Monkfd57ea72016-04-29 13:37:58 -0400123 }
124
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -0400125 @Test
Jason Monkfd57ea72016-04-29 13:37:58 -0400126 public void testDataDisabledIcon_UserNotSetup() {
127 setupNetworkController();
Jason Monk0288de02017-02-23 14:48:05 -0500128 when(mMockTm.getDataEnabled(mSubId)).thenReturn(false);
Jason Monkfd57ea72016-04-29 13:37:58 -0400129 setupDefaultSignal();
130 updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0);
131 setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
Jason Monk0288de02017-02-23 14:48:05 -0500132 when(mMockProvisionController.isUserSetup(anyInt())).thenReturn(false);
133 mUserCallback.onUserSetupChanged();
Jason Monk2515f472017-09-19 09:52:43 -0400134 TestableLooper.get(this).processAllMessages();
Jason Monkfd57ea72016-04-29 13:37:58 -0400135
136 // Don't show the X until the device is setup.
Jason Monk7e6c83c2017-04-26 14:35:24 -0400137 verifyDataIndicators(0, 0);
Jason Monkfd57ea72016-04-29 13:37:58 -0400138 }
139
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -0400140 @Test
Wenting Xiong63364fe2017-02-07 19:12:27 +0800141 public void testAlwaysShowDataRatIcon() {
142 setupDefaultSignal();
143 when(mMockTm.getDataEnabled(mSubId)).thenReturn(false);
144 updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED,
145 TelephonyManager.NETWORK_TYPE_GSM);
146
147 // Switch to showing data RAT icon when data is disconnected
148 // and re-initialize the NetworkController.
149 mConfig.alwaysShowDataRatIcon = true;
150 mNetworkController.handleConfigurationChanged();
151
152 verifyDataIndicators(TelephonyIcons.ICON_G,
153 TelephonyIcons.QS_DATA_G);
154 }
155
156 @Test
Jason Monk3aaabd72014-12-12 11:11:44 -0500157 public void test4gDataIconConfigChange() {
158 setupDefaultSignal();
159 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
160 TelephonyManager.NETWORK_TYPE_LTE);
161
162 // Switch to showing 4g icon and re-initialize the NetworkController.
163 mConfig.show4gForLte = true;
164 // Can't send the broadcast as that would actually read the config from
165 // the context. Instead we'll just poke at a function that does all of
166 // the after work.
167 mNetworkController.handleConfigurationChanged();
168
Jason Monk48edc0c2017-04-10 15:01:27 -0400169 verifyDataIndicators(TelephonyIcons.ICON_4G,
Jason Monk01df36f2017-06-07 13:02:47 -0400170 TelephonyIcons.QS_DATA_4G);
Jason Monk3aaabd72014-12-12 11:11:44 -0500171 }
172
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -0400173 @Test
Jason Monk67b2c162016-01-12 10:24:09 -0500174 public void testDataChangeWithoutConnectionState() {
175 setupDefaultSignal();
176 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
177 TelephonyManager.NETWORK_TYPE_LTE);
178
Jason Monk48edc0c2017-04-10 15:01:27 -0400179 verifyDataIndicators(TelephonyIcons.ICON_LTE,
Jason Monk01df36f2017-06-07 13:02:47 -0400180 TelephonyIcons.QS_DATA_LTE);
Jason Monk67b2c162016-01-12 10:24:09 -0500181
Jason Monk0288de02017-02-23 14:48:05 -0500182 when(mServiceState.getDataNetworkType())
Jason Monk67b2c162016-01-12 10:24:09 -0500183 .thenReturn(TelephonyManager.NETWORK_TYPE_HSPA);
184 updateServiceState();
Jason Monk48edc0c2017-04-10 15:01:27 -0400185 verifyDataIndicators(TelephonyIcons.ICON_H,
Jason Monk01df36f2017-06-07 13:02:47 -0400186 TelephonyIcons.QS_DATA_H);
Jason Monk67b2c162016-01-12 10:24:09 -0500187 }
188
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -0400189 @Test
Jason Monkf13b4b32014-11-07 16:39:34 -0500190 public void testDataActivity() {
191 setupDefaultSignal();
192
193 testDataActivity(TelephonyManager.DATA_ACTIVITY_NONE, false, false);
194 testDataActivity(TelephonyManager.DATA_ACTIVITY_IN, true, false);
195 testDataActivity(TelephonyManager.DATA_ACTIVITY_OUT, false, true);
196 testDataActivity(TelephonyManager.DATA_ACTIVITY_INOUT, true, true);
197 }
198
199 private void testDataActivity(int direction, boolean in, boolean out) {
200 updateDataActivity(direction);
201
Jason Monk26ad85a2016-12-08 14:45:42 -0500202 verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, DEFAULT_ICON, true,
Jason Monk7e6c83c2017-04-26 14:35:24 -0400203 DEFAULT_QS_SIGNAL_STRENGTH, DEFAULT_QS_ICON, in, out);
Jason Monkf13b4b32014-11-07 16:39:34 -0500204 }
205
206 private void verifyDataIndicators(int dataIcon, int qsDataIcon) {
Jason Monk26ad85a2016-12-08 14:45:42 -0500207 verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, dataIcon,
Jason Monk7e6c83c2017-04-26 14:35:24 -0400208 true, DEFAULT_QS_SIGNAL_STRENGTH, qsDataIcon, false,
Jason Monkb5746272014-11-12 16:50:31 -0500209 false);
Jason Monkf13b4b32014-11-07 16:39:34 -0500210 }
211
212}