1f13b4b39f266e43239e40e3bf7d6997600555068Jason Monkpackage com.android.systemui.statusbar.policy;
2f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
33aaabd71242bf8aedb8edb87565943460a79226dJason Monkimport org.mockito.Mockito;
43aaabd71242bf8aedb8edb87565943460a79226dJason Monk
5f13b4b39f266e43239e40e3bf7d6997600555068Jason Monkimport android.telephony.TelephonyManager;
6f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
7f13b4b39f266e43239e40e3bf7d6997600555068Jason Monkpublic class NetworkControllerDataTest extends NetworkControllerBaseTest {
8f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
9f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    public void test3gDataIcon() {
10f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        setupDefaultSignal();
11f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
12f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        verifyDataIndicators(TelephonyIcons.DATA_3G[1][0 /* No direction */],
13f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk                TelephonyIcons.QS_DATA_3G[1]);
14f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    }
15f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
16f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    public void testRoamingDataIcon() {
17f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        setupDefaultSignal();
18f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        setGsmRoaming(true);
19f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
20f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        verifyLastMobileDataIndicators(true,
21f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk                TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH_ROAMING[1][DEFAULT_LEVEL],
22f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk                TelephonyIcons.ROAMING_ICON);
23f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        verifyLastQsMobileDataIndicators(true,
24f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk                TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH[1][DEFAULT_LEVEL],
25b574627ebc383d35cf8212ee241b191b26518a0dJason Monk                TelephonyIcons.QS_DATA_R[1], false, false);
26f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    }
27f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
28f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    public void test2gDataIcon() {
29f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        setupDefaultSignal();
30f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
31f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk                TelephonyManager.NETWORK_TYPE_GSM);
32f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
33f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        verifyDataIndicators(TelephonyIcons.DATA_G[1][0 /* No direction */],
34f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk                TelephonyIcons.QS_DATA_G[1]);
35f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    }
36f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
37f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    public void testCdmaDataIcon() {
38f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        setupDefaultSignal();
39f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
40f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk                TelephonyManager.NETWORK_TYPE_CDMA);
41f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
42f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        verifyDataIndicators(TelephonyIcons.DATA_1X[1][0 /* No direction */],
43f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk                TelephonyIcons.QS_DATA_1X[1]);
44f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    }
45f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
46f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    public void testEdgeDataIcon() {
47f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        setupDefaultSignal();
48f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
49f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk                TelephonyManager.NETWORK_TYPE_EDGE);
50f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
51f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        verifyDataIndicators(TelephonyIcons.DATA_E[1][0 /* No direction */],
52f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk                TelephonyIcons.QS_DATA_E[1]);
53f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    }
54f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
55f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    public void testLteDataIcon() {
56f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        setupDefaultSignal();
57f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
58f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk                TelephonyManager.NETWORK_TYPE_LTE);
59f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
60f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        verifyDataIndicators(TelephonyIcons.DATA_LTE[1][0 /* No direction */],
61f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk                TelephonyIcons.QS_DATA_LTE[1]);
62f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    }
63f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
64f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    public void testHspaDataIcon() {
65f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        setupDefaultSignal();
66f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
67f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk                TelephonyManager.NETWORK_TYPE_HSPA);
68f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
69f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        verifyDataIndicators(TelephonyIcons.DATA_H[1][0 /* No direction */],
70f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk                TelephonyIcons.QS_DATA_H[1]);
71f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    }
72f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
733aaabd71242bf8aedb8edb87565943460a79226dJason Monk    public void test4gDataIcon() {
743aaabd71242bf8aedb8edb87565943460a79226dJason Monk        // Switch to showing 4g icon and re-initialize the NetworkController.
753aaabd71242bf8aedb8edb87565943460a79226dJason Monk        mConfig.show4gForLte = true;
763aaabd71242bf8aedb8edb87565943460a79226dJason Monk        mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm,
773aaabd71242bf8aedb8edb87565943460a79226dJason Monk                mConfig, Mockito.mock(AccessPointControllerImpl.class),
783aaabd71242bf8aedb8edb87565943460a79226dJason Monk                Mockito.mock(MobileDataControllerImpl.class));
793aaabd71242bf8aedb8edb87565943460a79226dJason Monk        setupNetworkController();
803aaabd71242bf8aedb8edb87565943460a79226dJason Monk
813aaabd71242bf8aedb8edb87565943460a79226dJason Monk        setupDefaultSignal();
823aaabd71242bf8aedb8edb87565943460a79226dJason Monk        updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
833aaabd71242bf8aedb8edb87565943460a79226dJason Monk                TelephonyManager.NETWORK_TYPE_LTE);
843aaabd71242bf8aedb8edb87565943460a79226dJason Monk
853aaabd71242bf8aedb8edb87565943460a79226dJason Monk        verifyDataIndicators(TelephonyIcons.DATA_4G[1][0 /* No direction */],
863aaabd71242bf8aedb8edb87565943460a79226dJason Monk                TelephonyIcons.QS_DATA_4G[1]);
873aaabd71242bf8aedb8edb87565943460a79226dJason Monk    }
883aaabd71242bf8aedb8edb87565943460a79226dJason Monk
893aaabd71242bf8aedb8edb87565943460a79226dJason Monk    public void test4gDataIconConfigChange() {
903aaabd71242bf8aedb8edb87565943460a79226dJason Monk        setupDefaultSignal();
913aaabd71242bf8aedb8edb87565943460a79226dJason Monk        updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
923aaabd71242bf8aedb8edb87565943460a79226dJason Monk                TelephonyManager.NETWORK_TYPE_LTE);
933aaabd71242bf8aedb8edb87565943460a79226dJason Monk
943aaabd71242bf8aedb8edb87565943460a79226dJason Monk        // Switch to showing 4g icon and re-initialize the NetworkController.
953aaabd71242bf8aedb8edb87565943460a79226dJason Monk        mConfig.show4gForLte = true;
963aaabd71242bf8aedb8edb87565943460a79226dJason Monk        // Can't send the broadcast as that would actually read the config from
973aaabd71242bf8aedb8edb87565943460a79226dJason Monk        // the context.  Instead we'll just poke at a function that does all of
983aaabd71242bf8aedb8edb87565943460a79226dJason Monk        // the after work.
993aaabd71242bf8aedb8edb87565943460a79226dJason Monk        mNetworkController.handleConfigurationChanged();
1003aaabd71242bf8aedb8edb87565943460a79226dJason Monk
1013aaabd71242bf8aedb8edb87565943460a79226dJason Monk        verifyDataIndicators(TelephonyIcons.DATA_4G[1][0 /* No direction */],
1023aaabd71242bf8aedb8edb87565943460a79226dJason Monk                TelephonyIcons.QS_DATA_4G[1]);
1033aaabd71242bf8aedb8edb87565943460a79226dJason Monk    }
1043aaabd71242bf8aedb8edb87565943460a79226dJason Monk
105f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    public void testDataActivity() {
106f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        setupDefaultSignal();
107f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
108f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        testDataActivity(TelephonyManager.DATA_ACTIVITY_NONE, false, false);
109f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        testDataActivity(TelephonyManager.DATA_ACTIVITY_IN, true, false);
110f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        testDataActivity(TelephonyManager.DATA_ACTIVITY_OUT, false, true);
111f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        testDataActivity(TelephonyManager.DATA_ACTIVITY_INOUT, true, true);
112f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    }
113f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
114f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    private void testDataActivity(int direction, boolean in, boolean out) {
115f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        updateDataActivity(direction);
116f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
117f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, DEFAULT_ICON);
118f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        verifyLastQsMobileDataIndicators(true, DEFAULT_QS_SIGNAL_STRENGTH,
119b574627ebc383d35cf8212ee241b191b26518a0dJason Monk                DEFAULT_QS_ICON, in, out);
120f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
121f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    }
122f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
123f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    private void verifyDataIndicators(int dataIcon, int qsDataIcon) {
124f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, dataIcon);
125f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk        verifyLastQsMobileDataIndicators(true, DEFAULT_QS_SIGNAL_STRENGTH, qsDataIcon, false,
126b574627ebc383d35cf8212ee241b191b26518a0dJason Monk                false);
127f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk    }
128f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk
129f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk}
130