1da68f596282e60bee832dff07cc96bf64bd15939Jason Monk/* 2da68f596282e60bee832dff07cc96bf64bd15939Jason Monk * Copyright (C) 2015 The Android Open Source Project 3da68f596282e60bee832dff07cc96bf64bd15939Jason Monk * 4da68f596282e60bee832dff07cc96bf64bd15939Jason Monk * Licensed under the Apache License, Version 2.0 (the "License"); 5da68f596282e60bee832dff07cc96bf64bd15939Jason Monk * you may not use this file except in compliance with the License. 6da68f596282e60bee832dff07cc96bf64bd15939Jason Monk * You may obtain a copy of the License at 7da68f596282e60bee832dff07cc96bf64bd15939Jason Monk * 8da68f596282e60bee832dff07cc96bf64bd15939Jason Monk * http://www.apache.org/licenses/LICENSE-2.0 9da68f596282e60bee832dff07cc96bf64bd15939Jason Monk * 10da68f596282e60bee832dff07cc96bf64bd15939Jason Monk * Unless required by applicable law or agreed to in writing, software 11da68f596282e60bee832dff07cc96bf64bd15939Jason Monk * distributed under the License is distributed on an "AS IS" BASIS, 12da68f596282e60bee832dff07cc96bf64bd15939Jason Monk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13da68f596282e60bee832dff07cc96bf64bd15939Jason Monk * See the License for the specific language governing permissions and 14da68f596282e60bee832dff07cc96bf64bd15939Jason Monk * limitations under the License. 15da68f596282e60bee832dff07cc96bf64bd15939Jason Monk */ 16e0cdb6079e9e9e8b87a71d67ef5aa1dc0e3e6840Jason Monkpackage com.android.systemui.statusbar.policy; 17e0cdb6079e9e9e8b87a71d67ef5aa1dc0e3e6840Jason Monk 1829f7a7b0ae2264651c176ef50cc21cf9131247e3Jason Monkimport static org.mockito.Mockito.mock; 19c014decc74edc3a415efb78893f597f3b800a212Jason Monk 20d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anneimport android.content.Intent; 21e0cdb6079e9e9e8b87a71d67ef5aa1dc0e3e6840Jason Monkimport android.net.ConnectivityManager; 2233f8ae7543fbf7d94266f0f1621ec873aa2542f1Jason Monkimport android.net.NetworkCapabilities; 2307b75fe65dcb5b8add8246654c65f95f1191933eJason Monkimport android.os.Looper; 24b0808aab0caec42a068b927be974076783a87692Jason Monkimport android.telephony.ServiceState; 25e0cdb6079e9e9e8b87a71d67ef5aa1dc0e3e6840Jason Monkimport android.telephony.SignalStrength; 26c014decc74edc3a415efb78893f597f3b800a212Jason Monkimport android.telephony.SubscriptionInfo; 27e0cdb6079e9e9e8b87a71d67ef5aa1dc0e3e6840Jason Monkimport android.telephony.TelephonyManager; 28e427cb80762c5cd067f3c419eb0a427d077b3d95Jason Monkimport android.test.suitebuilder.annotation.SmallTest; 29e0cdb6079e9e9e8b87a71d67ef5aa1dc0e3e6840Jason Monk 3018985e08ebd1c04e3160262925be995cf7c82001Jason Monkimport com.android.internal.telephony.PhoneConstants; 31d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anneimport com.android.internal.telephony.TelephonyIntents; 32f13b4b39f266e43239e40e3bf7d6997600555068Jason Monkimport com.android.systemui.R; 33da68f596282e60bee832dff07cc96bf64bd15939Jason Monk 34c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monkimport org.mockito.ArgumentCaptor; 35da68f596282e60bee832dff07cc96bf64bd15939Jason Monkimport org.mockito.Mockito; 36da68f596282e60bee832dff07cc96bf64bd15939Jason Monk 37da68f596282e60bee832dff07cc96bf64bd15939Jason Monkimport java.util.ArrayList; 38da68f596282e60bee832dff07cc96bf64bd15939Jason Monkimport java.util.List; 39f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk 40e427cb80762c5cd067f3c419eb0a427d077b3d95Jason Monk@SmallTest 41e0cdb6079e9e9e8b87a71d67ef5aa1dc0e3e6840Jason Monkpublic class NetworkControllerSignalTest extends NetworkControllerBaseTest { 42e0cdb6079e9e9e8b87a71d67ef5aa1dc0e3e6840Jason Monk 43f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk public void testNoIconWithoutMobile() { 44f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk // Turn off mobile network support. 45f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk Mockito.when(mMockCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false); 46f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk // Create a new NetworkController as this is currently handled in constructor. 47b574627ebc383d35cf8212ee241b191b26518a0dJason Monk mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm, 4807b75fe65dcb5b8add8246654c65f95f1191933eJason Monk mConfig, Looper.getMainLooper(), mCallbackHandler, 49c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk mock(AccessPointControllerImpl.class), mock(MobileDataControllerImpl.class), 50c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk mMockSubDefaults); 51f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setupNetworkController(); 52f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk 53f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk verifyLastMobileDataIndicators(false, 0, 0); 54f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk } 55f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk 5621d05a08d8ab632608980371d78990890029f4e4Jason Monk public void testNoSimsIconPresent() { 5721d05a08d8ab632608980371d78990890029f4e4Jason Monk // No Subscriptions. 5821d05a08d8ab632608980371d78990890029f4e4Jason Monk mNetworkController.mMobileSignalControllers.clear(); 5921d05a08d8ab632608980371d78990890029f4e4Jason Monk mNetworkController.updateNoSims(); 6021d05a08d8ab632608980371d78990890029f4e4Jason Monk 6121d05a08d8ab632608980371d78990890029f4e4Jason Monk verifyHasNoSims(true); 6221d05a08d8ab632608980371d78990890029f4e4Jason Monk } 6321d05a08d8ab632608980371d78990890029f4e4Jason Monk 64c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk public void testEmergencyOnly() { 65c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk setupDefaultSignal(); 66c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk mNetworkController.recalculateEmergency(); 67c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk verifyEmergencyOnly(false); 68c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk 69c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk mMobileSignalController.getState().isEmergency = true; 70c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk mNetworkController.recalculateEmergency(); 71c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk verifyEmergencyOnly(true); 72c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk } 73c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk 74c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk public void testEmergencyOnlyNoSubscriptions() { 75c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk setupDefaultSignal(); 76b0808aab0caec42a068b927be974076783a87692Jason Monk setSubscriptions(); 77b0808aab0caec42a068b927be974076783a87692Jason Monk mNetworkController.mLastServiceState = new ServiceState(); 78b0808aab0caec42a068b927be974076783a87692Jason Monk mNetworkController.mLastServiceState.setEmergencyOnly(true); 79c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk mNetworkController.recalculateEmergency(); 80b0808aab0caec42a068b927be974076783a87692Jason Monk verifyEmergencyOnly(true); 81b0808aab0caec42a068b927be974076783a87692Jason Monk } 82c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk 83b0808aab0caec42a068b927be974076783a87692Jason Monk public void testNoEmengencyNoSubscriptions() { 84b0808aab0caec42a068b927be974076783a87692Jason Monk setupDefaultSignal(); 85c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk setSubscriptions(); 86b0808aab0caec42a068b927be974076783a87692Jason Monk mNetworkController.mLastServiceState = new ServiceState(); 87b0808aab0caec42a068b927be974076783a87692Jason Monk mNetworkController.mLastServiceState.setEmergencyOnly(false); 88b0808aab0caec42a068b927be974076783a87692Jason Monk mNetworkController.recalculateEmergency(); 89b0808aab0caec42a068b927be974076783a87692Jason Monk verifyEmergencyOnly(false); 90c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk } 91c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk 9221d05a08d8ab632608980371d78990890029f4e4Jason Monk public void testNoSimlessIconWithoutMobile() { 9321d05a08d8ab632608980371d78990890029f4e4Jason Monk // Turn off mobile network support. 9421d05a08d8ab632608980371d78990890029f4e4Jason Monk Mockito.when(mMockCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false); 9521d05a08d8ab632608980371d78990890029f4e4Jason Monk // Create a new NetworkController as this is currently handled in constructor. 9621d05a08d8ab632608980371d78990890029f4e4Jason Monk mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm, 9707b75fe65dcb5b8add8246654c65f95f1191933eJason Monk mConfig, Looper.getMainLooper(), mCallbackHandler, 98c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk mock(AccessPointControllerImpl.class), mock(MobileDataControllerImpl.class), 99c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk mMockSubDefaults); 10021d05a08d8ab632608980371d78990890029f4e4Jason Monk setupNetworkController(); 10121d05a08d8ab632608980371d78990890029f4e4Jason Monk 10221d05a08d8ab632608980371d78990890029f4e4Jason Monk // No Subscriptions. 10321d05a08d8ab632608980371d78990890029f4e4Jason Monk mNetworkController.mMobileSignalControllers.clear(); 10421d05a08d8ab632608980371d78990890029f4e4Jason Monk mNetworkController.updateNoSims(); 10521d05a08d8ab632608980371d78990890029f4e4Jason Monk 10621d05a08d8ab632608980371d78990890029f4e4Jason Monk verifyHasNoSims(false); 10721d05a08d8ab632608980371d78990890029f4e4Jason Monk } 10821d05a08d8ab632608980371d78990890029f4e4Jason Monk 109e0cdb6079e9e9e8b87a71d67ef5aa1dc0e3e6840Jason Monk public void testSignalStrength() { 110f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk for (int testStrength = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 111f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk testStrength <= SignalStrength.SIGNAL_STRENGTH_GREAT; testStrength++) { 112f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setupDefaultSignal(); 113f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setLevel(testStrength); 114f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk 115f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk verifyLastMobileDataIndicators(true, 11633f8ae7543fbf7d94266f0f1621ec873aa2542f1Jason Monk TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[1][testStrength], DEFAULT_ICON); 117e0cdb6079e9e9e8b87a71d67ef5aa1dc0e3e6840Jason Monk 118f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk // Verify low inet number indexing. 11933f8ae7543fbf7d94266f0f1621ec873aa2542f1Jason Monk setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, true); 120f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk verifyLastMobileDataIndicators(true, 12133f8ae7543fbf7d94266f0f1621ec873aa2542f1Jason Monk TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[0][testStrength], DEFAULT_ICON); 122f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk } 123f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk } 124f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk 125f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk public void testCdmaSignalStrength() { 126f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk for (int testStrength = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 127f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk testStrength <= SignalStrength.SIGNAL_STRENGTH_GREAT; testStrength++) { 128f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setupDefaultSignal(); 129f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setCdma(); 130f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setLevel(testStrength); 131f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk 132f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk verifyLastMobileDataIndicators(true, 133f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[1][testStrength], 134f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk TelephonyIcons.DATA_1X[1][0 /* No direction */]); 135f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk } 136e0cdb6079e9e9e8b87a71d67ef5aa1dc0e3e6840Jason Monk } 137e0cdb6079e9e9e8b87a71d67ef5aa1dc0e3e6840Jason Monk 138e0cdb6079e9e9e8b87a71d67ef5aa1dc0e3e6840Jason Monk public void testSignalRoaming() { 139f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk for (int testStrength = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 140f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk testStrength <= SignalStrength.SIGNAL_STRENGTH_GREAT; testStrength++) { 141f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setupDefaultSignal(); 14261633f18611731d7011facbfe3d14f3ec83d86a3Jason Monk setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false); 143f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setGsmRoaming(true); 144f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setLevel(testStrength); 145f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk 146f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk verifyLastMobileDataIndicators(true, 147f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH_ROAMING[1][testStrength], 148f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk TelephonyIcons.ROAMING_ICON); 149f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk } 150f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk } 151e0cdb6079e9e9e8b87a71d67ef5aa1dc0e3e6840Jason Monk 152f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk public void testCdmaSignalRoaming() { 153f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk for (int testStrength = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 154f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk testStrength <= SignalStrength.SIGNAL_STRENGTH_GREAT; testStrength++) { 155f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setupDefaultSignal(); 156f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setCdma(); 157f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setCdmaRoaming(true); 158f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setLevel(testStrength); 159f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk 160f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk verifyLastMobileDataIndicators(true, 161f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH_ROAMING[1][testStrength], 162f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk TelephonyIcons.ROAMING_ICON); 163f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk } 164f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk } 165f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk 166f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk public void testQsSignalStrength() { 167f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk for (int testStrength = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 168f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk testStrength <= SignalStrength.SIGNAL_STRENGTH_GREAT; testStrength++) { 169f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setupDefaultSignal(); 170f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setLevel(testStrength); 171f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk 172f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk verifyLastQsMobileDataIndicators(true, 173f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH[1][testStrength], 174b574627ebc383d35cf8212ee241b191b26518a0dJason Monk DEFAULT_QS_ICON, false, false); 175f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk } 176f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk } 177f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk 178f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk public void testCdmaQsSignalStrength() { 179f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk for (int testStrength = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 180f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk testStrength <= SignalStrength.SIGNAL_STRENGTH_GREAT; testStrength++) { 181f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setupDefaultSignal(); 182f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setCdma(); 183f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setLevel(testStrength); 184f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk 185f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk verifyLastQsMobileDataIndicators(true, 186f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH[1][testStrength], 187b574627ebc383d35cf8212ee241b191b26518a0dJason Monk TelephonyIcons.QS_ICON_1X, false, false); 188f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk } 189f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk } 190f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk 19133f8ae7543fbf7d94266f0f1621ec873aa2542f1Jason Monk public void testNoBangWithWifi() { 192f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setupDefaultSignal(); 19333f8ae7543fbf7d94266f0f1621ec873aa2542f1Jason Monk setConnectivity(mMobileSignalController.mTransportType, false, false); 19433f8ae7543fbf7d94266f0f1621ec873aa2542f1Jason Monk setConnectivity(NetworkCapabilities.TRANSPORT_WIFI, true, true); 19533f8ae7543fbf7d94266f0f1621ec873aa2542f1Jason Monk 19633f8ae7543fbf7d94266f0f1621ec873aa2542f1Jason Monk verifyLastMobileDataIndicators(true, TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[1][2], 0); 197f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk } 198f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk 199c014decc74edc3a415efb78893f597f3b800a212Jason Monk // Some tests of actual NetworkController code, just internals not display stuff 200c014decc74edc3a415efb78893f597f3b800a212Jason Monk // TODO: Put this somewhere else, maybe in its own file. 201c014decc74edc3a415efb78893f597f3b800a212Jason Monk public void testHasCorrectMobileControllers() { 202c014decc74edc3a415efb78893f597f3b800a212Jason Monk int[] testSubscriptions = new int[] { 1, 5, 3 }; 203c014decc74edc3a415efb78893f597f3b800a212Jason Monk int notTestSubscription = 0; 204c014decc74edc3a415efb78893f597f3b800a212Jason Monk MobileSignalController mobileSignalController = Mockito.mock(MobileSignalController.class); 205c014decc74edc3a415efb78893f597f3b800a212Jason Monk 206c014decc74edc3a415efb78893f597f3b800a212Jason Monk mNetworkController.mMobileSignalControllers.clear(); 207c014decc74edc3a415efb78893f597f3b800a212Jason Monk List<SubscriptionInfo> subscriptions = new ArrayList<>(); 208c014decc74edc3a415efb78893f597f3b800a212Jason Monk for (int i = 0; i < testSubscriptions.length; i++) { 209c014decc74edc3a415efb78893f597f3b800a212Jason Monk // Force the test controllers into NetworkController. 210c014decc74edc3a415efb78893f597f3b800a212Jason Monk mNetworkController.mMobileSignalControllers.put(testSubscriptions[i], 211c014decc74edc3a415efb78893f597f3b800a212Jason Monk mobileSignalController); 212c014decc74edc3a415efb78893f597f3b800a212Jason Monk 213c014decc74edc3a415efb78893f597f3b800a212Jason Monk // Generate a list of subscriptions we will tell the NetworkController to use. 214c014decc74edc3a415efb78893f597f3b800a212Jason Monk SubscriptionInfo mockSubInfo = Mockito.mock(SubscriptionInfo.class); 215c014decc74edc3a415efb78893f597f3b800a212Jason Monk Mockito.when(mockSubInfo.getSubscriptionId()).thenReturn(testSubscriptions[i]); 216c014decc74edc3a415efb78893f597f3b800a212Jason Monk subscriptions.add(mockSubInfo); 217c014decc74edc3a415efb78893f597f3b800a212Jason Monk } 218c014decc74edc3a415efb78893f597f3b800a212Jason Monk assertTrue(mNetworkController.hasCorrectMobileControllers(subscriptions)); 219c014decc74edc3a415efb78893f597f3b800a212Jason Monk 220c014decc74edc3a415efb78893f597f3b800a212Jason Monk // Add a subscription that the NetworkController doesn't know about. 221c014decc74edc3a415efb78893f597f3b800a212Jason Monk SubscriptionInfo mockSubInfo = Mockito.mock(SubscriptionInfo.class); 222c014decc74edc3a415efb78893f597f3b800a212Jason Monk Mockito.when(mockSubInfo.getSubscriptionId()).thenReturn(notTestSubscription); 223c014decc74edc3a415efb78893f597f3b800a212Jason Monk subscriptions.add(mockSubInfo); 224c014decc74edc3a415efb78893f597f3b800a212Jason Monk assertFalse(mNetworkController.hasCorrectMobileControllers(subscriptions)); 225c014decc74edc3a415efb78893f597f3b800a212Jason Monk } 226c014decc74edc3a415efb78893f597f3b800a212Jason Monk 227c014decc74edc3a415efb78893f597f3b800a212Jason Monk public void testSetCurrentSubscriptions() { 228c014decc74edc3a415efb78893f597f3b800a212Jason Monk // We will not add one controller to make sure it gets created. 229c014decc74edc3a415efb78893f597f3b800a212Jason Monk int indexToSkipController = 0; 230c014decc74edc3a415efb78893f597f3b800a212Jason Monk // We will not add one subscription to make sure it's controller gets removed. 231c014decc74edc3a415efb78893f597f3b800a212Jason Monk int indexToSkipSubscription = 1; 232c014decc74edc3a415efb78893f597f3b800a212Jason Monk 233c014decc74edc3a415efb78893f597f3b800a212Jason Monk int[] testSubscriptions = new int[] { 1, 5, 3 }; 234c014decc74edc3a415efb78893f597f3b800a212Jason Monk MobileSignalController[] mobileSignalControllers = new MobileSignalController[] { 235c014decc74edc3a415efb78893f597f3b800a212Jason Monk Mockito.mock(MobileSignalController.class), 236c014decc74edc3a415efb78893f597f3b800a212Jason Monk Mockito.mock(MobileSignalController.class), 237c014decc74edc3a415efb78893f597f3b800a212Jason Monk Mockito.mock(MobileSignalController.class), 238c014decc74edc3a415efb78893f597f3b800a212Jason Monk }; 239c014decc74edc3a415efb78893f597f3b800a212Jason Monk mNetworkController.mMobileSignalControllers.clear(); 240c014decc74edc3a415efb78893f597f3b800a212Jason Monk List<SubscriptionInfo> subscriptions = new ArrayList<>(); 241c014decc74edc3a415efb78893f597f3b800a212Jason Monk for (int i = 0; i < testSubscriptions.length; i++) { 242c014decc74edc3a415efb78893f597f3b800a212Jason Monk if (i != indexToSkipController) { 243c014decc74edc3a415efb78893f597f3b800a212Jason Monk // Force the test controllers into NetworkController. 244c014decc74edc3a415efb78893f597f3b800a212Jason Monk mNetworkController.mMobileSignalControllers.put(testSubscriptions[i], 245c014decc74edc3a415efb78893f597f3b800a212Jason Monk mobileSignalControllers[i]); 246c014decc74edc3a415efb78893f597f3b800a212Jason Monk } 247c014decc74edc3a415efb78893f597f3b800a212Jason Monk 248c014decc74edc3a415efb78893f597f3b800a212Jason Monk if (i != indexToSkipSubscription) { 249c014decc74edc3a415efb78893f597f3b800a212Jason Monk // Generate a list of subscriptions we will tell the NetworkController to use. 250c014decc74edc3a415efb78893f597f3b800a212Jason Monk SubscriptionInfo mockSubInfo = Mockito.mock(SubscriptionInfo.class); 251c014decc74edc3a415efb78893f597f3b800a212Jason Monk Mockito.when(mockSubInfo.getSubscriptionId()).thenReturn(testSubscriptions[i]); 252c014decc74edc3a415efb78893f597f3b800a212Jason Monk Mockito.when(mockSubInfo.getSimSlotIndex()).thenReturn(testSubscriptions[i]); 253c014decc74edc3a415efb78893f597f3b800a212Jason Monk subscriptions.add(mockSubInfo); 254c014decc74edc3a415efb78893f597f3b800a212Jason Monk } 255c014decc74edc3a415efb78893f597f3b800a212Jason Monk } 256c014decc74edc3a415efb78893f597f3b800a212Jason Monk 257c014decc74edc3a415efb78893f597f3b800a212Jason Monk // We can only test whether unregister gets called if it thinks its in a listening 258c014decc74edc3a415efb78893f597f3b800a212Jason Monk // state. 259c014decc74edc3a415efb78893f597f3b800a212Jason Monk mNetworkController.mListening = true; 260c014decc74edc3a415efb78893f597f3b800a212Jason Monk mNetworkController.setCurrentSubscriptions(subscriptions); 261c014decc74edc3a415efb78893f597f3b800a212Jason Monk 262c014decc74edc3a415efb78893f597f3b800a212Jason Monk for (int i = 0; i < testSubscriptions.length; i++) { 263c014decc74edc3a415efb78893f597f3b800a212Jason Monk if (i == indexToSkipController) { 264c014decc74edc3a415efb78893f597f3b800a212Jason Monk // Make sure a controller was created despite us not adding one. 265c014decc74edc3a415efb78893f597f3b800a212Jason Monk assertTrue(mNetworkController.mMobileSignalControllers.containsKey( 266c014decc74edc3a415efb78893f597f3b800a212Jason Monk testSubscriptions[i])); 267c014decc74edc3a415efb78893f597f3b800a212Jason Monk } else if (i == indexToSkipSubscription) { 268c014decc74edc3a415efb78893f597f3b800a212Jason Monk // Make sure the controller that did exist was removed 269c014decc74edc3a415efb78893f597f3b800a212Jason Monk assertFalse(mNetworkController.mMobileSignalControllers.containsKey( 270c014decc74edc3a415efb78893f597f3b800a212Jason Monk testSubscriptions[i])); 271c014decc74edc3a415efb78893f597f3b800a212Jason Monk } else { 272c014decc74edc3a415efb78893f597f3b800a212Jason Monk // If a MobileSignalController is around it needs to not be unregistered. 273c014decc74edc3a415efb78893f597f3b800a212Jason Monk Mockito.verify(mobileSignalControllers[i], Mockito.never()) 274c014decc74edc3a415efb78893f597f3b800a212Jason Monk .unregisterListener(); 275c014decc74edc3a415efb78893f597f3b800a212Jason Monk } 276c014decc74edc3a415efb78893f597f3b800a212Jason Monk } 277c014decc74edc3a415efb78893f597f3b800a212Jason Monk } 278c014decc74edc3a415efb78893f597f3b800a212Jason Monk 2797f9623f3dc6ec5f548bbade0b497d1f5e7f6db06Jason Monk public void testHistorySize() { 2807f9623f3dc6ec5f548bbade0b497d1f5e7f6db06Jason Monk // Verify valid history size, otherwise it gits printed out the wrong order and whatnot. 2817f9623f3dc6ec5f548bbade0b497d1f5e7f6db06Jason Monk assertEquals(0, SignalController.HISTORY_SIZE & (SignalController.HISTORY_SIZE - 1)); 2827f9623f3dc6ec5f548bbade0b497d1f5e7f6db06Jason Monk } 2837f9623f3dc6ec5f548bbade0b497d1f5e7f6db06Jason Monk 284f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk private void setCdma() { 285f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setIsGsm(false); 286f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 287f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk TelephonyManager.NETWORK_TYPE_CDMA); 288f13b4b39f266e43239e40e3bf7d6997600555068Jason Monk setCdmaRoaming(false); 289e0cdb6079e9e9e8b87a71d67ef5aa1dc0e3e6840Jason Monk } 290d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 291d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne public void testOnReceive_stringsUpdatedAction_spn() { 292d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne String expectedMNetworkName = "Test"; 293d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne Intent intent = createStringsUpdatedIntent(true /* showSpn */, 294d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne expectedMNetworkName /* spn */, 295d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne false /* showPlmn */, 296d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne "NotTest" /* plmn */); 297d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 298d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne mNetworkController.onReceive(mContext, intent); 299d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 300d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne assertNetworkNameEquals(expectedMNetworkName); 301d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne } 302d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 303d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne public void testOnReceive_stringsUpdatedAction_plmn() { 304d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne String expectedMNetworkName = "Test"; 305d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 306d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne Intent intent = createStringsUpdatedIntent(false /* showSpn */, 307d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne "NotTest" /* spn */, 308d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne true /* showPlmn */, 309d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne expectedMNetworkName /* plmn */); 310d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 311d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne mNetworkController.onReceive(mContext, intent); 312d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 313d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne assertNetworkNameEquals(expectedMNetworkName); 314d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne } 315d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 316d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne public void testOnReceive_stringsUpdatedAction_bothFalse() { 317d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne Intent intent = createStringsUpdatedIntent(false /* showSpn */, 318d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne "Irrelevant" /* spn */, 319d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne false /* showPlmn */, 320d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne "Irrelevant" /* plmn */); 321d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 322d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne mNetworkController.onReceive(mContext, intent); 323d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 324d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne String defaultNetworkName = mMobileSignalController 325d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne .getStringIfExists( 326d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne com.android.internal.R.string.lockscreen_carrier_default); 327d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne assertNetworkNameEquals(defaultNetworkName); 328d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne } 329d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 330d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne public void testOnReceive_stringsUpdatedAction_bothTrueAndNull() { 331d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne Intent intent = createStringsUpdatedIntent(true /* showSpn */, 332d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne null /* spn */, 333d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne true /* showPlmn */, 334d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne null /* plmn */); 335d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 336d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne mNetworkController.onReceive(mContext, intent); 337d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 338d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne String defaultNetworkName = mMobileSignalController.getStringIfExists( 339d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne com.android.internal.R.string.lockscreen_carrier_default); 340d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne assertNetworkNameEquals(defaultNetworkName); 341d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne } 342d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 343d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne public void testOnReceive_stringsUpdatedAction_bothTrueAndNonNull() { 344d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne String spn = "Test1"; 345d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne String plmn = "Test2"; 346d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 347d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne Intent intent = createStringsUpdatedIntent(true /* showSpn */, 348d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne spn /* spn */, 349d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne true /* showPlmn */, 350d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne plmn /* plmn */); 351d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 352d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne mNetworkController.onReceive(mContext, intent); 353d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 354d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne assertNetworkNameEquals(plmn 355d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne + mMobileSignalController.getStringIfExists( 356d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne R.string.status_bar_network_name_separator) 357d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne + spn); 358d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne } 359d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 360d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne private Intent createStringsUpdatedIntent(boolean showSpn, String spn, 361d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne boolean showPlmn, String plmn) { 362d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 363d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne Intent intent = new Intent(); 364d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne intent.setAction(TelephonyIntents.SPN_STRINGS_UPDATED_ACTION); 365d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 366d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne intent.putExtra(TelephonyIntents.EXTRA_SHOW_SPN, showSpn); 367d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne intent.putExtra(TelephonyIntents.EXTRA_SPN, spn); 368d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 369d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne intent.putExtra(TelephonyIntents.EXTRA_SHOW_PLMN, showPlmn); 370d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne intent.putExtra(TelephonyIntents.EXTRA_PLMN, plmn); 37118985e08ebd1c04e3160262925be995cf7c82001Jason Monk intent.putExtra(PhoneConstants.SUBSCRIPTION_KEY, mSubId); 372d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 373d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne return intent; 374d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne } 375d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 376d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne public void testOnUpdateDataActivity_dataIn() { 377d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne setupDefaultSignal(); 378d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 379d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne updateDataActivity(TelephonyManager.DATA_ACTIVITY_IN); 380d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 381d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne verifyLastQsMobileDataIndicators(true /* visible */, 382d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH[1][DEFAULT_LEVEL] /* icon */, 383d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne DEFAULT_QS_ICON /* typeIcon */, 384d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne true /* dataIn */, 385d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne false /* dataOut */); 386d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 387d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne } 388d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 389d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne public void testOnUpdateDataActivity_dataOut() { 390d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne setupDefaultSignal(); 391d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 392d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne updateDataActivity(TelephonyManager.DATA_ACTIVITY_OUT); 393d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 394d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne verifyLastQsMobileDataIndicators(true /* visible */, 395d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH[1][DEFAULT_LEVEL] /* icon */, 396d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne DEFAULT_QS_ICON /* typeIcon */, 397d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne false /* dataIn */, 398d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne true /* dataOut */); 399d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 400d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne } 401d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 402d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne public void testOnUpdateDataActivity_dataInOut() { 403d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne setupDefaultSignal(); 404d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 405d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne updateDataActivity(TelephonyManager.DATA_ACTIVITY_INOUT); 406d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 407d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne verifyLastQsMobileDataIndicators(true /* visible */, 408d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH[1][DEFAULT_LEVEL] /* icon */, 409d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne DEFAULT_QS_ICON /* typeIcon */, 410d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne true /* dataIn */, 411d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne true /* dataOut */); 412d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 413d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne } 414d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 415d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne public void testOnUpdateDataActivity_dataActivityNone() { 416d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne setupDefaultSignal(); 417d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 418d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne updateDataActivity(TelephonyManager.DATA_ACTIVITY_NONE); 419d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 420d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne verifyLastQsMobileDataIndicators(true /* visible */, 421d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH[1][DEFAULT_LEVEL] /* icon */, 422d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne DEFAULT_QS_ICON /* typeIcon */, 423d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne false /* dataIn */, 424d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne false /* dataOut */); 425d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne 426d0a6279af69184621bf6384c5435d3eb6f62ac03Leigh Anne } 4275e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn 42855fc8004ad1896da615fd08caca87d1b393d085cAndrew Flynn public void testCarrierNetworkChange_carrierNetworkChange() { 4295e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn int strength = SignalStrength.SIGNAL_STRENGTH_GREAT; 4305e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn 4315e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn setupDefaultSignal(); 4325e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn setLevel(strength); 4335e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn 4345e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn // Verify baseline 4355e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn verifyLastMobileDataIndicators(true /* visible */, 4365e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[1][strength] /* strengthIcon */, 4375e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn DEFAULT_ICON /* typeIcon */); 4385e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn 43955fc8004ad1896da615fd08caca87d1b393d085cAndrew Flynn // API call is made 4405e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn setCarrierNetworkChange(true /* enabled */); 4415e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn 44255fc8004ad1896da615fd08caca87d1b393d085cAndrew Flynn // Carrier network change is true, show special indicator 4435e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn verifyLastMobileDataIndicators(true /* visible */, 4445e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn TelephonyIcons.TELEPHONY_CARRIER_NETWORK_CHANGE[0][0] /* strengthIcon */, 4455e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn 0 /* typeIcon */); 4465e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn 4475e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn // Revert back 4485e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn setCarrierNetworkChange(false /* enabled */); 4495e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn 4505e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn // Verify back in previous state 4515e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn verifyLastMobileDataIndicators(true /* visible */, 4525e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[1][strength] /* strengthIcon */, 4535e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn DEFAULT_ICON /* typeIcon */); 4545e751478065835cf86f661cf34fa4f52f851cef5Andrew Flynn } 455c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk 456c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk private void verifyEmergencyOnly(boolean isEmergencyOnly) { 457c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk ArgumentCaptor<Boolean> emergencyOnly = ArgumentCaptor.forClass(Boolean.class); 458c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setEmergencyCallsOnly( 459c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk emergencyOnly.capture()); 460c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk assertEquals(isEmergencyOnly, (boolean) emergencyOnly.getValue()); 461c6cc6266c9325f180b1a073f733fdf0a64e9286fJason Monk } 462e0cdb6079e9e9e8b87a71d67ef5aa1dc0e3e6840Jason Monk} 463