1package com.android.systemui.statusbar.policy; 2 3import android.net.NetworkCapabilities; 4import android.os.Looper; 5import android.telephony.TelephonyManager; 6import android.test.suitebuilder.annotation.SmallTest; 7import com.android.settingslib.net.DataUsageController; 8import org.mockito.Mockito; 9 10@SmallTest 11public class NetworkControllerDataTest extends NetworkControllerBaseTest { 12 13 public void test3gDataIcon() { 14 setupDefaultSignal(); 15 16 verifyDataIndicators(TelephonyIcons.DATA_3G[1][0 /* No direction */], 17 TelephonyIcons.QS_DATA_3G); 18 } 19 20 public void testRoamingDataIcon() { 21 setupDefaultSignal(); 22 setGsmRoaming(true); 23 24 verifyLastMobileDataIndicators(true, 25 TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH_ROAMING[1][DEFAULT_LEVEL], 26 TelephonyIcons.ROAMING_ICON); 27 verifyLastQsMobileDataIndicators(true, 28 TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH[1][DEFAULT_LEVEL], 29 TelephonyIcons.QS_DATA_R, false, false); 30 } 31 32 public void test2gDataIcon() { 33 setupDefaultSignal(); 34 updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 35 TelephonyManager.NETWORK_TYPE_GSM); 36 37 verifyDataIndicators(TelephonyIcons.DATA_G[1][0 /* No direction */], 38 TelephonyIcons.QS_DATA_G); 39 } 40 41 public void testCdmaDataIcon() { 42 setupDefaultSignal(); 43 updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 44 TelephonyManager.NETWORK_TYPE_CDMA); 45 46 verifyDataIndicators(TelephonyIcons.DATA_1X[1][0 /* No direction */], 47 TelephonyIcons.QS_DATA_1X); 48 } 49 50 public void testEdgeDataIcon() { 51 setupDefaultSignal(); 52 updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 53 TelephonyManager.NETWORK_TYPE_EDGE); 54 55 verifyDataIndicators(TelephonyIcons.DATA_E[1][0 /* No direction */], 56 TelephonyIcons.QS_DATA_E); 57 } 58 59 public void testLteDataIcon() { 60 setupDefaultSignal(); 61 updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 62 TelephonyManager.NETWORK_TYPE_LTE); 63 64 verifyDataIndicators(TelephonyIcons.DATA_LTE[1][0 /* No direction */], 65 TelephonyIcons.QS_DATA_LTE); 66 } 67 68 public void testHspaDataIcon() { 69 setupDefaultSignal(); 70 updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 71 TelephonyManager.NETWORK_TYPE_HSPA); 72 73 verifyDataIndicators(TelephonyIcons.DATA_H[1][0 /* No direction */], 74 TelephonyIcons.QS_DATA_H); 75 } 76 77 public void testWfcNoDataIcon() { 78 setupDefaultSignal(); 79 updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 80 TelephonyManager.NETWORK_TYPE_IWLAN); 81 82 verifyDataIndicators(0, 0); 83 } 84 85 public void test4gDataIcon() { 86 // Switch to showing 4g icon and re-initialize the NetworkController. 87 mConfig.show4gForLte = true; 88 mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm, 89 mConfig, Looper.getMainLooper(), mCallbackHandler, 90 Mockito.mock(AccessPointControllerImpl.class), 91 Mockito.mock(DataUsageController.class), mMockSubDefaults); 92 setupNetworkController(); 93 94 setupDefaultSignal(); 95 updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 96 TelephonyManager.NETWORK_TYPE_LTE); 97 98 verifyDataIndicators(TelephonyIcons.DATA_4G[1][0 /* No direction */], 99 TelephonyIcons.QS_DATA_4G); 100 } 101 102 public void testDataDisabledIcon() { 103 setupNetworkController(); 104 Mockito.when(mMockTm.getDataEnabled(mSubId)).thenReturn(false); 105 setupDefaultSignal(); 106 updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0); 107 setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false); 108 109 verifyDataIndicators(TelephonyIcons.ICON_DATA_DISABLED, 110 TelephonyIcons.QS_ICON_DATA_DISABLED); 111 } 112 113 public void testDataDisabledIcon_UserNotSetup() { 114 setupNetworkController(); 115 Mockito.when(mMockTm.getDataEnabled(mSubId)).thenReturn(false); 116 setupDefaultSignal(); 117 updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0); 118 setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false); 119 mNetworkController.handleSetUserSetupComplete(false); 120 121 // Don't show the X until the device is setup. 122 verifyDataIndicators(0, 0); 123 } 124 125 public void test4gDataIconConfigChange() { 126 setupDefaultSignal(); 127 updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 128 TelephonyManager.NETWORK_TYPE_LTE); 129 130 // Switch to showing 4g icon and re-initialize the NetworkController. 131 mConfig.show4gForLte = true; 132 // Can't send the broadcast as that would actually read the config from 133 // the context. Instead we'll just poke at a function that does all of 134 // the after work. 135 mNetworkController.handleConfigurationChanged(); 136 137 verifyDataIndicators(TelephonyIcons.DATA_4G[1][0 /* No direction */], 138 TelephonyIcons.QS_DATA_4G); 139 } 140 141 public void testDataChangeWithoutConnectionState() { 142 setupDefaultSignal(); 143 updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 144 TelephonyManager.NETWORK_TYPE_LTE); 145 146 verifyDataIndicators(TelephonyIcons.DATA_LTE[1][0 /* No direction */], 147 TelephonyIcons.QS_DATA_LTE); 148 149 Mockito.when(mServiceState.getDataNetworkType()) 150 .thenReturn(TelephonyManager.NETWORK_TYPE_HSPA); 151 updateServiceState(); 152 verifyDataIndicators(TelephonyIcons.DATA_H[1][0 /* No direction */], 153 TelephonyIcons.QS_DATA_H); 154 } 155 156 public void testDataActivity() { 157 setupDefaultSignal(); 158 159 testDataActivity(TelephonyManager.DATA_ACTIVITY_NONE, false, false); 160 testDataActivity(TelephonyManager.DATA_ACTIVITY_IN, true, false); 161 testDataActivity(TelephonyManager.DATA_ACTIVITY_OUT, false, true); 162 testDataActivity(TelephonyManager.DATA_ACTIVITY_INOUT, true, true); 163 } 164 165 private void testDataActivity(int direction, boolean in, boolean out) { 166 updateDataActivity(direction); 167 168 verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, DEFAULT_ICON); 169 verifyLastQsMobileDataIndicators(true, DEFAULT_QS_SIGNAL_STRENGTH, 170 DEFAULT_QS_ICON, in, out); 171 } 172 173 private void verifyDataIndicators(int dataIcon, int qsDataIcon) { 174 verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, dataIcon); 175 verifyLastQsMobileDataIndicators(true, DEFAULT_QS_SIGNAL_STRENGTH, qsDataIcon, false, 176 false); 177 } 178 179} 180