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