Loading src/java/com/android/internal/telephony/Phone.java +4 −4 Original line number Diff line number Diff line Loading @@ -4619,10 +4619,10 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { boolean isEmergencyCallOnly = false; for (Phone phone : PhoneFactory.getPhones()) { if (phone != null) { ServiceState ss = phone.getServiceStateTracker().getServiceState(); // One of the phone is in service, hence the device is not emergency call only. if (ss.getState() == ServiceState.STATE_IN_SERVICE || ss.getDataRegistrationState() == ServiceState.STATE_IN_SERVICE) { ServiceStateTracker sst = phone.getServiceStateTracker(); ServiceState ss = sst.getServiceState(); // Combined reg state is in service, hence the device is not emergency call only. if (sst.getCombinedRegState(ss) == ServiceState.STATE_IN_SERVICE) { return false; } isEmergencyCallOnly |= ss.isEmergencyOnly(); Loading src/java/com/android/internal/telephony/ServiceStateTracker.java +1 −1 Original line number Diff line number Diff line Loading @@ -5929,7 +5929,7 @@ public class ServiceStateTracker extends Handler { * If dataRegState is in service on IWLAN, also check for wifi calling enabled. * @param ss service state. */ protected int getCombinedRegState(ServiceState ss) { public int getCombinedRegState(ServiceState ss) { int regState = ss.getState(); int dataRegState = ss.getDataRegistrationState(); if ((regState == ServiceState.STATE_OUT_OF_SERVICE Loading src/java/com/android/internal/telephony/cdnr/CarrierDisplayNameResolver.java +2 −10 Original line number Diff line number Diff line Loading @@ -429,7 +429,8 @@ public class CarrierDisplayNameResolver { private void resolveCarrierDisplayName() { CarrierDisplayNameData data = getCarrierDisplayNameFromEf(); if (DBG) Rlog.d(TAG, "CarrierName from EF: " + data); if (getCombinedRegState(getServiceState()) == ServiceState.STATE_IN_SERVICE) { if (mPhone.getServiceStateTracker().getCombinedRegState(getServiceState()) == ServiceState.STATE_IN_SERVICE) { if (mPhone.isWifiCallingEnabled()) { data = getCarrierDisplayNameFromWifiCallingOverride(data); if (DBG) { Loading Loading @@ -578,13 +579,4 @@ public class CarrierDisplayNameResolver { return String.format(mDataFormat, name.trim()); } } /** * Consider dataRegState if voiceRegState is OOS to determine SPN to be displayed. * @param ss service state. */ private static int getCombinedRegState(ServiceState ss) { if (ss.getState() != ServiceState.STATE_IN_SERVICE) return ss.getDataRegistrationState(); return ss.getState(); } } tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +48 −4 Original line number Diff line number Diff line Loading @@ -188,6 +188,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { public void onLooperPrepared() { sst = new ServiceStateTracker(mPhone, mSimulatedCommands); sst.setServiceStateStats(mServiceStateStats); doReturn(sst).when(mPhone).getServiceStateTracker(); setReady(true); } } Loading Loading @@ -2670,7 +2671,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { ss.setVoiceRegState(ServiceState.STATE_EMERGENCY_ONLY); ss.setDataRegState(ServiceState.STATE_OUT_OF_SERVICE); ss.setEmergencyOnly(true); doReturn(ss).when(mSST).getServiceState(); sst.mSS = ss; // update the spn sst.updateSpnDisplay(); Loading @@ -2692,7 +2693,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { ss.setVoiceRegState(ServiceState.STATE_OUT_OF_SERVICE); ss.setDataRegState(ServiceState.STATE_OUT_OF_SERVICE); ss.setEmergencyOnly(false); doReturn(ss).when(mSST).getServiceState(); sst.mSS = ss; // update the spn sst.updateSpnDisplay(); Loading @@ -2713,7 +2714,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { ServiceState ss = new ServiceState(); ss.setVoiceRegState(ServiceState.STATE_POWER_OFF); ss.setDataRegState(ServiceState.STATE_POWER_OFF); doReturn(ss).when(mSST).getServiceState(); sst.mSS = ss; // update the spn sst.updateSpnDisplay(); Loading @@ -2733,7 +2734,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { doReturn(ServiceState.STATE_POWER_OFF).when(mServiceState).getVoiceRegState(); doReturn(ServiceState.STATE_POWER_OFF).when(mServiceState).getDataRegState(); doReturn(TelephonyManager.NETWORK_TYPE_IWLAN).when(mServiceState).getDataNetworkType(); doReturn(mServiceState).when(mSST).getServiceState(); sst.mSS = mServiceState; // wifi-calling is disable doReturn(false).when(mPhone).isWifiCallingEnabled(); Loading Loading @@ -2991,4 +2992,47 @@ public class ServiceStateTrackerTest extends TelephonyTest { assertEquals(4, (long) method.invoke(mSST, lteCi)); assertEquals(5, (long) method.invoke(mSST, nrCi)); } @Test public void testGetCombinedRegState() { doReturn(mImsPhone).when(mPhone).getImsPhone(); // If voice/data out of service, return out of service. doReturn(ServiceState.STATE_OUT_OF_SERVICE).when(mServiceState).getState(); doReturn(ServiceState.STATE_OUT_OF_SERVICE).when(mServiceState).getDataRegistrationState(); assertEquals(ServiceState.STATE_OUT_OF_SERVICE, sst.getCombinedRegState(mServiceState)); // If voice is emergency only, return emergency only doReturn(ServiceState.STATE_EMERGENCY_ONLY).when(mServiceState).getState(); assertEquals(ServiceState.STATE_EMERGENCY_ONLY, sst.getCombinedRegState(mServiceState)); // If data in service, return in service. doReturn(ServiceState.STATE_OUT_OF_SERVICE).when(mServiceState).getState(); doReturn(ServiceState.STATE_IN_SERVICE).when(mServiceState).getDataRegistrationState(); assertEquals(ServiceState.STATE_IN_SERVICE, sst.getCombinedRegState(mServiceState)); // Check emergency doReturn(ServiceState.STATE_EMERGENCY_ONLY).when(mServiceState).getState(); assertEquals(ServiceState.STATE_EMERGENCY_ONLY, sst.getCombinedRegState(mServiceState)); // If data in service and network is IWLAN but WiFi calling is off, return out of service. doReturn(ServiceState.STATE_OUT_OF_SERVICE).when(mServiceState).getState(); doReturn(TelephonyManager.NETWORK_TYPE_IWLAN).when(mServiceState).getDataNetworkType(); doReturn(false).when(mImsPhone).isWifiCallingEnabled(); assertEquals(ServiceState.STATE_OUT_OF_SERVICE, sst.getCombinedRegState(mServiceState)); // Check emrgency doReturn(ServiceState.STATE_EMERGENCY_ONLY).when(mServiceState).getState(); assertEquals(ServiceState.STATE_EMERGENCY_ONLY, sst.getCombinedRegState(mServiceState)); // If data in service and network is IWLAN and WiFi calling is on, return in service. doReturn(ServiceState.STATE_OUT_OF_SERVICE).when(mServiceState).getState(); doReturn(TelephonyManager.NETWORK_TYPE_IWLAN).when(mServiceState).getDataNetworkType(); doReturn(true).when(mImsPhone).isWifiCallingEnabled(); assertEquals(ServiceState.STATE_IN_SERVICE, sst.getCombinedRegState(mServiceState)); // Check emergency doReturn(ServiceState.STATE_EMERGENCY_ONLY).when(mServiceState).getState(); assertEquals(ServiceState.STATE_EMERGENCY_ONLY, sst.getCombinedRegState(mServiceState)); } } Loading
src/java/com/android/internal/telephony/Phone.java +4 −4 Original line number Diff line number Diff line Loading @@ -4619,10 +4619,10 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { boolean isEmergencyCallOnly = false; for (Phone phone : PhoneFactory.getPhones()) { if (phone != null) { ServiceState ss = phone.getServiceStateTracker().getServiceState(); // One of the phone is in service, hence the device is not emergency call only. if (ss.getState() == ServiceState.STATE_IN_SERVICE || ss.getDataRegistrationState() == ServiceState.STATE_IN_SERVICE) { ServiceStateTracker sst = phone.getServiceStateTracker(); ServiceState ss = sst.getServiceState(); // Combined reg state is in service, hence the device is not emergency call only. if (sst.getCombinedRegState(ss) == ServiceState.STATE_IN_SERVICE) { return false; } isEmergencyCallOnly |= ss.isEmergencyOnly(); Loading
src/java/com/android/internal/telephony/ServiceStateTracker.java +1 −1 Original line number Diff line number Diff line Loading @@ -5929,7 +5929,7 @@ public class ServiceStateTracker extends Handler { * If dataRegState is in service on IWLAN, also check for wifi calling enabled. * @param ss service state. */ protected int getCombinedRegState(ServiceState ss) { public int getCombinedRegState(ServiceState ss) { int regState = ss.getState(); int dataRegState = ss.getDataRegistrationState(); if ((regState == ServiceState.STATE_OUT_OF_SERVICE Loading
src/java/com/android/internal/telephony/cdnr/CarrierDisplayNameResolver.java +2 −10 Original line number Diff line number Diff line Loading @@ -429,7 +429,8 @@ public class CarrierDisplayNameResolver { private void resolveCarrierDisplayName() { CarrierDisplayNameData data = getCarrierDisplayNameFromEf(); if (DBG) Rlog.d(TAG, "CarrierName from EF: " + data); if (getCombinedRegState(getServiceState()) == ServiceState.STATE_IN_SERVICE) { if (mPhone.getServiceStateTracker().getCombinedRegState(getServiceState()) == ServiceState.STATE_IN_SERVICE) { if (mPhone.isWifiCallingEnabled()) { data = getCarrierDisplayNameFromWifiCallingOverride(data); if (DBG) { Loading Loading @@ -578,13 +579,4 @@ public class CarrierDisplayNameResolver { return String.format(mDataFormat, name.trim()); } } /** * Consider dataRegState if voiceRegState is OOS to determine SPN to be displayed. * @param ss service state. */ private static int getCombinedRegState(ServiceState ss) { if (ss.getState() != ServiceState.STATE_IN_SERVICE) return ss.getDataRegistrationState(); return ss.getState(); } }
tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +48 −4 Original line number Diff line number Diff line Loading @@ -188,6 +188,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { public void onLooperPrepared() { sst = new ServiceStateTracker(mPhone, mSimulatedCommands); sst.setServiceStateStats(mServiceStateStats); doReturn(sst).when(mPhone).getServiceStateTracker(); setReady(true); } } Loading Loading @@ -2670,7 +2671,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { ss.setVoiceRegState(ServiceState.STATE_EMERGENCY_ONLY); ss.setDataRegState(ServiceState.STATE_OUT_OF_SERVICE); ss.setEmergencyOnly(true); doReturn(ss).when(mSST).getServiceState(); sst.mSS = ss; // update the spn sst.updateSpnDisplay(); Loading @@ -2692,7 +2693,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { ss.setVoiceRegState(ServiceState.STATE_OUT_OF_SERVICE); ss.setDataRegState(ServiceState.STATE_OUT_OF_SERVICE); ss.setEmergencyOnly(false); doReturn(ss).when(mSST).getServiceState(); sst.mSS = ss; // update the spn sst.updateSpnDisplay(); Loading @@ -2713,7 +2714,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { ServiceState ss = new ServiceState(); ss.setVoiceRegState(ServiceState.STATE_POWER_OFF); ss.setDataRegState(ServiceState.STATE_POWER_OFF); doReturn(ss).when(mSST).getServiceState(); sst.mSS = ss; // update the spn sst.updateSpnDisplay(); Loading @@ -2733,7 +2734,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { doReturn(ServiceState.STATE_POWER_OFF).when(mServiceState).getVoiceRegState(); doReturn(ServiceState.STATE_POWER_OFF).when(mServiceState).getDataRegState(); doReturn(TelephonyManager.NETWORK_TYPE_IWLAN).when(mServiceState).getDataNetworkType(); doReturn(mServiceState).when(mSST).getServiceState(); sst.mSS = mServiceState; // wifi-calling is disable doReturn(false).when(mPhone).isWifiCallingEnabled(); Loading Loading @@ -2991,4 +2992,47 @@ public class ServiceStateTrackerTest extends TelephonyTest { assertEquals(4, (long) method.invoke(mSST, lteCi)); assertEquals(5, (long) method.invoke(mSST, nrCi)); } @Test public void testGetCombinedRegState() { doReturn(mImsPhone).when(mPhone).getImsPhone(); // If voice/data out of service, return out of service. doReturn(ServiceState.STATE_OUT_OF_SERVICE).when(mServiceState).getState(); doReturn(ServiceState.STATE_OUT_OF_SERVICE).when(mServiceState).getDataRegistrationState(); assertEquals(ServiceState.STATE_OUT_OF_SERVICE, sst.getCombinedRegState(mServiceState)); // If voice is emergency only, return emergency only doReturn(ServiceState.STATE_EMERGENCY_ONLY).when(mServiceState).getState(); assertEquals(ServiceState.STATE_EMERGENCY_ONLY, sst.getCombinedRegState(mServiceState)); // If data in service, return in service. doReturn(ServiceState.STATE_OUT_OF_SERVICE).when(mServiceState).getState(); doReturn(ServiceState.STATE_IN_SERVICE).when(mServiceState).getDataRegistrationState(); assertEquals(ServiceState.STATE_IN_SERVICE, sst.getCombinedRegState(mServiceState)); // Check emergency doReturn(ServiceState.STATE_EMERGENCY_ONLY).when(mServiceState).getState(); assertEquals(ServiceState.STATE_EMERGENCY_ONLY, sst.getCombinedRegState(mServiceState)); // If data in service and network is IWLAN but WiFi calling is off, return out of service. doReturn(ServiceState.STATE_OUT_OF_SERVICE).when(mServiceState).getState(); doReturn(TelephonyManager.NETWORK_TYPE_IWLAN).when(mServiceState).getDataNetworkType(); doReturn(false).when(mImsPhone).isWifiCallingEnabled(); assertEquals(ServiceState.STATE_OUT_OF_SERVICE, sst.getCombinedRegState(mServiceState)); // Check emrgency doReturn(ServiceState.STATE_EMERGENCY_ONLY).when(mServiceState).getState(); assertEquals(ServiceState.STATE_EMERGENCY_ONLY, sst.getCombinedRegState(mServiceState)); // If data in service and network is IWLAN and WiFi calling is on, return in service. doReturn(ServiceState.STATE_OUT_OF_SERVICE).when(mServiceState).getState(); doReturn(TelephonyManager.NETWORK_TYPE_IWLAN).when(mServiceState).getDataNetworkType(); doReturn(true).when(mImsPhone).isWifiCallingEnabled(); assertEquals(ServiceState.STATE_IN_SERVICE, sst.getCombinedRegState(mServiceState)); // Check emergency doReturn(ServiceState.STATE_EMERGENCY_ONLY).when(mServiceState).getState(); assertEquals(ServiceState.STATE_EMERGENCY_ONLY, sst.getCombinedRegState(mServiceState)); } }