blob: 7708adb7c9ddfccd9456ffc106bdf9dc31f80a7f [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 Monk0288de02017-02-23 14:48:05 -050012
Jason Monkf668d7c2016-01-14 10:38:41 -050013import com.android.settingslib.net.DataUsageController;
Jason Monk0288de02017-02-23 14:48:05 -050014
Jason Monk28cc1662017-03-02 10:57:36 -050015import org.junit.Ignore;
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040016import org.junit.Test;
17import org.junit.runner.RunWith;
Jason Monk33f8ae72015-05-08 10:45:15 -040018
Jason Monke427cb82015-07-28 09:18:08 -040019@SmallTest
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040020@RunWith(AndroidJUnit4.class)
Jason Monkf13b4b32014-11-07 16:39:34 -050021public class NetworkControllerDataTest extends NetworkControllerBaseTest {
22
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040023 @Test
Geoffrey Pitschba918db2017-07-12 11:40:32 -040024 @Ignore("Flaky")
Jason Monkf13b4b32014-11-07 16:39:34 -050025 public void test3gDataIcon() {
26 setupDefaultSignal();
27
Jason Monk48edc0c2017-04-10 15:01:27 -040028 verifyDataIndicators(TelephonyIcons.ICON_3G,
Jason Monk01df36f2017-06-07 13:02:47 -040029 TelephonyIcons.QS_DATA_3G);
Jason Monkf13b4b32014-11-07 16:39:34 -050030 }
31
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040032 @Test
Geoffrey Pitschba918db2017-07-12 11:40:32 -040033 @Ignore("Flaky")
Jason Monkf13b4b32014-11-07 16:39:34 -050034 public void test2gDataIcon() {
35 setupDefaultSignal();
36 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
37 TelephonyManager.NETWORK_TYPE_GSM);
38
Jason Monk48edc0c2017-04-10 15:01:27 -040039 verifyDataIndicators(TelephonyIcons.ICON_G,
Jason Monk01df36f2017-06-07 13:02:47 -040040 TelephonyIcons.QS_DATA_G);
Jason Monkf13b4b32014-11-07 16:39:34 -050041 }
42
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040043 @Test
Geoffrey Pitschba918db2017-07-12 11:40:32 -040044 @Ignore("Flaky")
Jason Monkf13b4b32014-11-07 16:39:34 -050045 public void testCdmaDataIcon() {
46 setupDefaultSignal();
47 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
48 TelephonyManager.NETWORK_TYPE_CDMA);
49
Jason Monk48edc0c2017-04-10 15:01:27 -040050 verifyDataIndicators(TelephonyIcons.ICON_1X,
Jason Monk01df36f2017-06-07 13:02:47 -040051 TelephonyIcons.QS_DATA_1X);
Jason Monkf13b4b32014-11-07 16:39:34 -050052 }
53
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040054 @Test
Geoffrey Pitschba918db2017-07-12 11:40:32 -040055 @Ignore("Flaky")
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
Geoffrey Pitschba918db2017-07-12 11:40:32 -040066 @Ignore("Flaky")
Jason Monkf13b4b32014-11-07 16:39:34 -050067 public void testLteDataIcon() {
68 setupDefaultSignal();
69 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
70 TelephonyManager.NETWORK_TYPE_LTE);
71
Jason Monk48edc0c2017-04-10 15:01:27 -040072 verifyDataIndicators(TelephonyIcons.ICON_LTE,
Jason Monk01df36f2017-06-07 13:02:47 -040073 TelephonyIcons.QS_DATA_LTE);
Jason Monkf13b4b32014-11-07 16:39:34 -050074 }
75
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040076 @Test
Geoffrey Pitschba918db2017-07-12 11:40:32 -040077 @Ignore("Flaky")
Jason Monkf13b4b32014-11-07 16:39:34 -050078 public void testHspaDataIcon() {
79 setupDefaultSignal();
80 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
81 TelephonyManager.NETWORK_TYPE_HSPA);
82
Jason Monk48edc0c2017-04-10 15:01:27 -040083 verifyDataIndicators(TelephonyIcons.ICON_H,
Jason Monk01df36f2017-06-07 13:02:47 -040084 TelephonyIcons.QS_DATA_H);
Jason Monkf13b4b32014-11-07 16:39:34 -050085 }
86
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040087 @Test
Geoffrey Pitschba918db2017-07-12 11:40:32 -040088 @Ignore("Flaky")
Jason Monk7150d7f2015-07-09 10:14:12 -040089 public void testWfcNoDataIcon() {
90 setupDefaultSignal();
91 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
92 TelephonyManager.NETWORK_TYPE_IWLAN);
93
94 verifyDataIndicators(0, 0);
95 }
96
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040097 @Test
Geoffrey Pitschba918db2017-07-12 11:40:32 -040098 @Ignore("Flaky")
Jason Monk3aaabd72014-12-12 11:11:44 -050099 public void test4gDataIcon() {
100 // Switch to showing 4g icon and re-initialize the NetworkController.
101 mConfig.show4gForLte = true;
Sundeep Ghuman9d10a3c2017-06-16 00:05:16 +0000102 mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm,
Jason Monk07b75fe2015-05-14 16:47:03 -0400103 mConfig, Looper.getMainLooper(), mCallbackHandler,
Jason Monk9c7844c2017-01-18 15:21:53 -0500104 mock(AccessPointControllerImpl.class),
105 mock(DataUsageController.class), mMockSubDefaults,
106 mock(DeviceProvisionedController.class));
Jason Monk3aaabd72014-12-12 11:11:44 -0500107 setupNetworkController();
108
109 setupDefaultSignal();
110 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
111 TelephonyManager.NETWORK_TYPE_LTE);
112
Jason Monk48edc0c2017-04-10 15:01:27 -0400113 verifyDataIndicators(TelephonyIcons.ICON_4G,
Jason Monk01df36f2017-06-07 13:02:47 -0400114 TelephonyIcons.QS_DATA_4G);
Jason Monk3aaabd72014-12-12 11:11:44 -0500115 }
116
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -0400117 @Test
Geoffrey Pitschba918db2017-07-12 11:40:32 -0400118 @Ignore("Flaky")
Jason Monkfd57ea72016-04-29 13:37:58 -0400119 public void testDataDisabledIcon() {
120 setupNetworkController();
Jason Monk0288de02017-02-23 14:48:05 -0500121 when(mMockTm.getDataEnabled(mSubId)).thenReturn(false);
Jason Monkfd57ea72016-04-29 13:37:58 -0400122 setupDefaultSignal();
123 updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0);
124 setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
125
Jason Monk7e6c83c2017-04-26 14:35:24 -0400126 verifyDataIndicators(TelephonyIcons.ICON_DATA_DISABLED,
Jason Monk01df36f2017-06-07 13:02:47 -0400127 TelephonyIcons.QS_ICON_DATA_DISABLED);
Jason Monkfd57ea72016-04-29 13:37:58 -0400128 }
129
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -0400130 @Test
Geoffrey Pitschba918db2017-07-12 11:40:32 -0400131 @Ignore("Flaky")
Jason Monkfd57ea72016-04-29 13:37:58 -0400132 public void testDataDisabledIcon_UserNotSetup() {
133 setupNetworkController();
Jason Monk0288de02017-02-23 14:48:05 -0500134 when(mMockTm.getDataEnabled(mSubId)).thenReturn(false);
Jason Monkfd57ea72016-04-29 13:37:58 -0400135 setupDefaultSignal();
136 updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0);
137 setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
Jason Monk0288de02017-02-23 14:48:05 -0500138 when(mMockProvisionController.isUserSetup(anyInt())).thenReturn(false);
139 mUserCallback.onUserSetupChanged();
Jason Monkfd57ea72016-04-29 13:37:58 -0400140
141 // Don't show the X until the device is setup.
Jason Monk7e6c83c2017-04-26 14:35:24 -0400142 verifyDataIndicators(0, 0);
Jason Monkfd57ea72016-04-29 13:37:58 -0400143 }
144
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -0400145 @Test
Geoffrey Pitschba918db2017-07-12 11:40:32 -0400146 @Ignore("Flaky")
Jason Monk3aaabd72014-12-12 11:11:44 -0500147 public void test4gDataIconConfigChange() {
148 setupDefaultSignal();
149 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
150 TelephonyManager.NETWORK_TYPE_LTE);
151
152 // Switch to showing 4g icon and re-initialize the NetworkController.
153 mConfig.show4gForLte = true;
154 // Can't send the broadcast as that would actually read the config from
155 // the context. Instead we'll just poke at a function that does all of
156 // the after work.
157 mNetworkController.handleConfigurationChanged();
158
Jason Monk48edc0c2017-04-10 15:01:27 -0400159 verifyDataIndicators(TelephonyIcons.ICON_4G,
Jason Monk01df36f2017-06-07 13:02:47 -0400160 TelephonyIcons.QS_DATA_4G);
Jason Monk3aaabd72014-12-12 11:11:44 -0500161 }
162
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -0400163 @Test
Geoffrey Pitschba918db2017-07-12 11:40:32 -0400164 @Ignore("Flaky")
Jason Monk67b2c162016-01-12 10:24:09 -0500165 public void testDataChangeWithoutConnectionState() {
166 setupDefaultSignal();
167 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
168 TelephonyManager.NETWORK_TYPE_LTE);
169
Jason Monk48edc0c2017-04-10 15:01:27 -0400170 verifyDataIndicators(TelephonyIcons.ICON_LTE,
Jason Monk01df36f2017-06-07 13:02:47 -0400171 TelephonyIcons.QS_DATA_LTE);
Jason Monk67b2c162016-01-12 10:24:09 -0500172
Jason Monk0288de02017-02-23 14:48:05 -0500173 when(mServiceState.getDataNetworkType())
Jason Monk67b2c162016-01-12 10:24:09 -0500174 .thenReturn(TelephonyManager.NETWORK_TYPE_HSPA);
175 updateServiceState();
Jason Monk48edc0c2017-04-10 15:01:27 -0400176 verifyDataIndicators(TelephonyIcons.ICON_H,
Jason Monk01df36f2017-06-07 13:02:47 -0400177 TelephonyIcons.QS_DATA_H);
Jason Monk67b2c162016-01-12 10:24:09 -0500178 }
179
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -0400180 @Test
Geoffrey Pitschba918db2017-07-12 11:40:32 -0400181 @Ignore("Flaky")
Jason Monkf13b4b32014-11-07 16:39:34 -0500182 public void testDataActivity() {
183 setupDefaultSignal();
184
185 testDataActivity(TelephonyManager.DATA_ACTIVITY_NONE, false, false);
186 testDataActivity(TelephonyManager.DATA_ACTIVITY_IN, true, false);
187 testDataActivity(TelephonyManager.DATA_ACTIVITY_OUT, false, true);
188 testDataActivity(TelephonyManager.DATA_ACTIVITY_INOUT, true, true);
189 }
190
191 private void testDataActivity(int direction, boolean in, boolean out) {
192 updateDataActivity(direction);
193
Jason Monk26ad85a2016-12-08 14:45:42 -0500194 verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, DEFAULT_ICON, true,
Jason Monk7e6c83c2017-04-26 14:35:24 -0400195 DEFAULT_QS_SIGNAL_STRENGTH, DEFAULT_QS_ICON, in, out);
Jason Monkf13b4b32014-11-07 16:39:34 -0500196 }
197
198 private void verifyDataIndicators(int dataIcon, int qsDataIcon) {
Jason Monk26ad85a2016-12-08 14:45:42 -0500199 verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, dataIcon,
Jason Monk7e6c83c2017-04-26 14:35:24 -0400200 true, DEFAULT_QS_SIGNAL_STRENGTH, qsDataIcon, false,
Jason Monkb5746272014-11-12 16:50:31 -0500201 false);
Jason Monkf13b4b32014-11-07 16:39:34 -0500202 }
203
204}