Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit de4aa08c authored by Sarah Chin's avatar Sarah Chin Committed by Gerrit Code Review
Browse files

Merge "Update call sites for getCombinedRegState"

parents be75c2e3 a6af0ea3
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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();
+1 −1
Original line number Diff line number Diff line
@@ -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
+2 −10
Original line number Diff line number Diff line
@@ -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) {
@@ -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();
    }
}
+48 −4
Original line number Diff line number Diff line
@@ -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);
        }
    }
@@ -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();
@@ -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();
@@ -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();
@@ -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();
@@ -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));
    }
}