package com.android.systemui.statusbar.policy; import android.net.NetworkCapabilities; import android.os.Looper; import android.telephony.TelephonyManager; import android.test.suitebuilder.annotation.SmallTest; import com.android.settingslib.net.DataUsageController; import org.mockito.Mockito; @SmallTest public class NetworkControllerDataTest extends NetworkControllerBaseTest { public void test3gDataIcon() { setupDefaultSignal(); verifyDataIndicators(TelephonyIcons.DATA_3G[1][0 /* No direction */], TelephonyIcons.QS_DATA_3G); } public void testRoamingDataIcon() { setupDefaultSignal(); setGsmRoaming(true); verifyLastMobileDataIndicators(true, TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH_ROAMING[1][DEFAULT_LEVEL], TelephonyIcons.ROAMING_ICON); verifyLastQsMobileDataIndicators(true, TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH[1][DEFAULT_LEVEL], TelephonyIcons.QS_DATA_R, false, false); } public void test2gDataIcon() { setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_CONNECTED, TelephonyManager.NETWORK_TYPE_GSM); verifyDataIndicators(TelephonyIcons.DATA_G[1][0 /* No direction */], TelephonyIcons.QS_DATA_G); } public void testCdmaDataIcon() { setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_CONNECTED, TelephonyManager.NETWORK_TYPE_CDMA); verifyDataIndicators(TelephonyIcons.DATA_1X[1][0 /* No direction */], TelephonyIcons.QS_DATA_1X); } public void testEdgeDataIcon() { setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_CONNECTED, TelephonyManager.NETWORK_TYPE_EDGE); verifyDataIndicators(TelephonyIcons.DATA_E[1][0 /* No direction */], TelephonyIcons.QS_DATA_E); } public void testLteDataIcon() { setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_CONNECTED, TelephonyManager.NETWORK_TYPE_LTE); verifyDataIndicators(TelephonyIcons.DATA_LTE[1][0 /* No direction */], TelephonyIcons.QS_DATA_LTE); } public void testHspaDataIcon() { setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_CONNECTED, TelephonyManager.NETWORK_TYPE_HSPA); verifyDataIndicators(TelephonyIcons.DATA_H[1][0 /* No direction */], TelephonyIcons.QS_DATA_H); } public void testWfcNoDataIcon() { setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_CONNECTED, TelephonyManager.NETWORK_TYPE_IWLAN); verifyDataIndicators(0, 0); } public void test4gDataIcon() { // Switch to showing 4g icon and re-initialize the NetworkController. mConfig.show4gForLte = true; mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm, mConfig, Looper.getMainLooper(), mCallbackHandler, Mockito.mock(AccessPointControllerImpl.class), Mockito.mock(DataUsageController.class), mMockSubDefaults); setupNetworkController(); setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_CONNECTED, TelephonyManager.NETWORK_TYPE_LTE); verifyDataIndicators(TelephonyIcons.DATA_4G[1][0 /* No direction */], TelephonyIcons.QS_DATA_4G); } public void testDataDisabledIcon() { setupNetworkController(); Mockito.when(mMockTm.getDataEnabled(mSubId)).thenReturn(false); setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0); setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false); verifyDataIndicators(TelephonyIcons.ICON_DATA_DISABLED, TelephonyIcons.QS_ICON_DATA_DISABLED); } public void testDataDisabledIcon_UserNotSetup() { setupNetworkController(); Mockito.when(mMockTm.getDataEnabled(mSubId)).thenReturn(false); setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0); setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false); mNetworkController.handleSetUserSetupComplete(false); // Don't show the X until the device is setup. verifyDataIndicators(0, 0); } public void test4gDataIconConfigChange() { setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_CONNECTED, TelephonyManager.NETWORK_TYPE_LTE); // Switch to showing 4g icon and re-initialize the NetworkController. mConfig.show4gForLte = true; // Can't send the broadcast as that would actually read the config from // the context. Instead we'll just poke at a function that does all of // the after work. mNetworkController.handleConfigurationChanged(); verifyDataIndicators(TelephonyIcons.DATA_4G[1][0 /* No direction */], TelephonyIcons.QS_DATA_4G); } public void testDataChangeWithoutConnectionState() { setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_CONNECTED, TelephonyManager.NETWORK_TYPE_LTE); verifyDataIndicators(TelephonyIcons.DATA_LTE[1][0 /* No direction */], TelephonyIcons.QS_DATA_LTE); Mockito.when(mServiceState.getDataNetworkType()) .thenReturn(TelephonyManager.NETWORK_TYPE_HSPA); updateServiceState(); verifyDataIndicators(TelephonyIcons.DATA_H[1][0 /* No direction */], TelephonyIcons.QS_DATA_H); } public void testDataActivity() { setupDefaultSignal(); testDataActivity(TelephonyManager.DATA_ACTIVITY_NONE, false, false); testDataActivity(TelephonyManager.DATA_ACTIVITY_IN, true, false); testDataActivity(TelephonyManager.DATA_ACTIVITY_OUT, false, true); testDataActivity(TelephonyManager.DATA_ACTIVITY_INOUT, true, true); } private void testDataActivity(int direction, boolean in, boolean out) { updateDataActivity(direction); verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, DEFAULT_ICON); verifyLastQsMobileDataIndicators(true, DEFAULT_QS_SIGNAL_STRENGTH, DEFAULT_QS_ICON, in, out); } private void verifyDataIndicators(int dataIcon, int qsDataIcon) { verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, dataIcon); verifyLastQsMobileDataIndicators(true, DEFAULT_QS_SIGNAL_STRENGTH, qsDataIcon, false, false); } }