blob: cf3620d1b2b88ef0fd8888de0bd0409a504e5b50 [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
Amin Shaikhaf4c1932018-03-08 10:29:56 -0500114 public void testNoInternetIcon() {
115 setupNetworkController();
116 when(mMockTm.getDataEnabled(mSubId)).thenReturn(false);
117 setupDefaultSignal();
118 updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 0);
119 setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
120
121 // Verify that a SignalDrawable with a cut out is used to display data disabled.
122 verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, 0,
123 true, DEFAULT_QS_SIGNAL_STRENGTH, 0, false,
124 false, true);
125 }
126
127 @Test
Jason Monkfd57ea72016-04-29 13:37:58 -0400128 public void testDataDisabledIcon() {
129 setupNetworkController();
Jason Monk0288de02017-02-23 14:48:05 -0500130 when(mMockTm.getDataEnabled(mSubId)).thenReturn(false);
Jason Monkfd57ea72016-04-29 13:37:58 -0400131 setupDefaultSignal();
132 updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0);
133 setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
134
Amin Shaikhaf4c1932018-03-08 10:29:56 -0500135 // Verify that a SignalDrawable with a cut out is used to display data disabled.
136 verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, 0,
137 true, DEFAULT_QS_SIGNAL_STRENGTH, 0, false,
138 false, true);
Jason Monkfd57ea72016-04-29 13:37:58 -0400139 }
140
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -0400141 @Test
Jason Monkfd57ea72016-04-29 13:37:58 -0400142 public void testDataDisabledIcon_UserNotSetup() {
143 setupNetworkController();
Jason Monk0288de02017-02-23 14:48:05 -0500144 when(mMockTm.getDataEnabled(mSubId)).thenReturn(false);
Jason Monkfd57ea72016-04-29 13:37:58 -0400145 setupDefaultSignal();
146 updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0);
147 setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
Jason Monk0288de02017-02-23 14:48:05 -0500148 when(mMockProvisionController.isUserSetup(anyInt())).thenReturn(false);
149 mUserCallback.onUserSetupChanged();
Jason Monk2515f472017-09-19 09:52:43 -0400150 TestableLooper.get(this).processAllMessages();
Jason Monkfd57ea72016-04-29 13:37:58 -0400151
152 // Don't show the X until the device is setup.
Jason Monk7e6c83c2017-04-26 14:35:24 -0400153 verifyDataIndicators(0, 0);
Jason Monkfd57ea72016-04-29 13:37:58 -0400154 }
155
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -0400156 @Test
Wenting Xiong63364fe2017-02-07 19:12:27 +0800157 public void testAlwaysShowDataRatIcon() {
158 setupDefaultSignal();
159 when(mMockTm.getDataEnabled(mSubId)).thenReturn(false);
160 updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED,
161 TelephonyManager.NETWORK_TYPE_GSM);
162
163 // Switch to showing data RAT icon when data is disconnected
164 // and re-initialize the NetworkController.
165 mConfig.alwaysShowDataRatIcon = true;
166 mNetworkController.handleConfigurationChanged();
167
168 verifyDataIndicators(TelephonyIcons.ICON_G,
169 TelephonyIcons.QS_DATA_G);
170 }
171
172 @Test
Jason Monk3aaabd72014-12-12 11:11:44 -0500173 public void test4gDataIconConfigChange() {
174 setupDefaultSignal();
175 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
176 TelephonyManager.NETWORK_TYPE_LTE);
177
178 // Switch to showing 4g icon and re-initialize the NetworkController.
179 mConfig.show4gForLte = true;
180 // Can't send the broadcast as that would actually read the config from
181 // the context. Instead we'll just poke at a function that does all of
182 // the after work.
183 mNetworkController.handleConfigurationChanged();
184
Jason Monk48edc0c2017-04-10 15:01:27 -0400185 verifyDataIndicators(TelephonyIcons.ICON_4G,
Jason Monk01df36f2017-06-07 13:02:47 -0400186 TelephonyIcons.QS_DATA_4G);
Jason Monk3aaabd72014-12-12 11:11:44 -0500187 }
188
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -0400189 @Test
Jason Monk67b2c162016-01-12 10:24:09 -0500190 public void testDataChangeWithoutConnectionState() {
191 setupDefaultSignal();
192 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
193 TelephonyManager.NETWORK_TYPE_LTE);
194
Jason Monk48edc0c2017-04-10 15:01:27 -0400195 verifyDataIndicators(TelephonyIcons.ICON_LTE,
Jason Monk01df36f2017-06-07 13:02:47 -0400196 TelephonyIcons.QS_DATA_LTE);
Jason Monk67b2c162016-01-12 10:24:09 -0500197
Jason Monk0288de02017-02-23 14:48:05 -0500198 when(mServiceState.getDataNetworkType())
Jason Monk67b2c162016-01-12 10:24:09 -0500199 .thenReturn(TelephonyManager.NETWORK_TYPE_HSPA);
200 updateServiceState();
Jason Monk48edc0c2017-04-10 15:01:27 -0400201 verifyDataIndicators(TelephonyIcons.ICON_H,
Jason Monk01df36f2017-06-07 13:02:47 -0400202 TelephonyIcons.QS_DATA_H);
Jason Monk67b2c162016-01-12 10:24:09 -0500203 }
204
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -0400205 @Test
Jason Monkf13b4b32014-11-07 16:39:34 -0500206 public void testDataActivity() {
207 setupDefaultSignal();
208
209 testDataActivity(TelephonyManager.DATA_ACTIVITY_NONE, false, false);
210 testDataActivity(TelephonyManager.DATA_ACTIVITY_IN, true, false);
211 testDataActivity(TelephonyManager.DATA_ACTIVITY_OUT, false, true);
212 testDataActivity(TelephonyManager.DATA_ACTIVITY_INOUT, true, true);
213 }
214
215 private void testDataActivity(int direction, boolean in, boolean out) {
216 updateDataActivity(direction);
217
Jason Monk26ad85a2016-12-08 14:45:42 -0500218 verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, DEFAULT_ICON, true,
Jason Monk7e6c83c2017-04-26 14:35:24 -0400219 DEFAULT_QS_SIGNAL_STRENGTH, DEFAULT_QS_ICON, in, out);
Jason Monkf13b4b32014-11-07 16:39:34 -0500220 }
221
222 private void verifyDataIndicators(int dataIcon, int qsDataIcon) {
Jason Monk26ad85a2016-12-08 14:45:42 -0500223 verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, dataIcon,
Jason Monk7e6c83c2017-04-26 14:35:24 -0400224 true, DEFAULT_QS_SIGNAL_STRENGTH, qsDataIcon, false,
Jason Monkb5746272014-11-12 16:50:31 -0500225 false);
Jason Monkf13b4b32014-11-07 16:39:34 -0500226 }
227
228}