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

Commit e5400c3b authored by Brad Ebinger's avatar Brad Ebinger
Browse files

Revert "Report OUT_OF_SERVICE when service is lost but still IMS registered"

This reverts commit 9790b2ba.

Reason for revert: Broke VZW APM + WFC off VT use cases.
Bug: 72483562
Change-Id: Ib3832722b5ad8a7a90da1dd7244733c5604d1162
parent 9790b2ba
Loading
Loading
Loading
Loading
+0 −20
Original line number Diff line number Diff line
@@ -1583,7 +1583,6 @@ public class ImsPhone extends ImsPhoneBase {
    }

    public void onFeatureCapabilityChanged() {
        updateVoiceServiceState();
        mDefaultPhone.getServiceStateTracker().onImsCapabilityChanged();
    }

@@ -1619,7 +1618,6 @@ public class ImsPhone extends ImsPhoneBase {

    public void setImsRegistered(boolean value) {
        mImsRegistered = value;
        updateVoiceServiceState();
    }

    @Override
@@ -1627,24 +1625,6 @@ public class ImsPhone extends ImsPhoneBase {
        mCT.callEndCleanupHandOverCallIfAny();
    }

    /**
     * Determines what the voice registration state for ImsPhone is. Considered "in service" if
     * we are both registered for IMS and have voice capability (either through LTE or IWLAN).
     */
    private void updateVoiceServiceState() {
        if (!isImsRegistered()) {
            // We are considered out of service is not registered to IMS
            setServiceState(ServiceState.STATE_OUT_OF_SERVICE);
            return;
        }
        // We are registered for IMS
        if (isVolteEnabled() || isWifiCallingEnabled()) {
            setServiceState(ServiceState.STATE_IN_SERVICE);
        } else {
            setServiceState(ServiceState.STATE_OUT_OF_SERVICE);
        }
    }

    private BroadcastReceiver mResultReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
+3 −0
Original line number Diff line number Diff line
@@ -2865,6 +2865,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
                public void onRegistered(
                        @ImsRegistrationImplBase.ImsRegistrationTech int imsRadioTech) {
                    if (DBG) log("onImsConnected imsRadioTech=" + imsRadioTech);
                    mPhone.setServiceState(ServiceState.STATE_IN_SERVICE);
                    mPhone.setImsRegistered(true);
                    mMetrics.writeOnImsConnectionState(mPhone.getPhoneId(),
                            ImsConnectionState.State.CONNECTED, null);
@@ -2874,6 +2875,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
                public void onRegistering(
                        @ImsRegistrationImplBase.ImsRegistrationTech int imsRadioTech) {
                    if (DBG) log("onImsProgressing imsRadioTech=" + imsRadioTech);
                    mPhone.setServiceState(ServiceState.STATE_OUT_OF_SERVICE);
                    mPhone.setImsRegistered(false);
                    mMetrics.writeOnImsConnectionState(mPhone.getPhoneId(),
                            ImsConnectionState.State.PROGRESSING, null);
@@ -2883,6 +2885,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
                public void onDeregistered(ImsReasonInfo imsReasonInfo) {
                    if (DBG) log("onImsDisconnected imsReasonInfo=" + imsReasonInfo);
                    resetImsCapabilities();
                    mPhone.setServiceState(ServiceState.STATE_OUT_OF_SERVICE);
                    mPhone.setImsRegistered(false);
                    mPhone.processDisconnectReason(imsReasonInfo);
                    mMetrics.writeOnImsConnectionState(mPhone.getPhoneId(),
+9 −0
Original line number Diff line number Diff line
@@ -246,21 +246,30 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest {
    @Test
    @SmallTest
    public void testImsRegistered() {
        // when IMS is registered
        mRegistrationCallback.onRegistered(ImsRegistrationImplBase.REGISTRATION_TECH_LTE);
        // then service state should be IN_SERVICE and ImsPhone state set to registered
        verify(mImsPhone).setServiceState(eq(ServiceState.STATE_IN_SERVICE));
        verify(mImsPhone).setImsRegistered(eq(true));
    }

    @Test
    @SmallTest
    public void testImsRegistering() {
        // when IMS is registering
        mRegistrationCallback.onRegistering(ImsRegistrationImplBase.REGISTRATION_TECH_LTE);
        // then service state should be OUT_OF_SERVICE and ImsPhone state set to not registered
        verify(mImsPhone).setServiceState(eq(ServiceState.STATE_OUT_OF_SERVICE));
        verify(mImsPhone).setImsRegistered(eq(false));
    }

    @Test
    @SmallTest
    public void testImsDeregistered() {
        // when IMS is deregistered
        mRegistrationCallback.onDeregistered(new ImsReasonInfo());
        // then service state should be OUT_OF_SERVICE and ImsPhone state set to not registered
        verify(mImsPhone).setServiceState(eq(ServiceState.STATE_OUT_OF_SERVICE));
        verify(mImsPhone).setImsRegistered(eq(false));
    }

+0 −42
Original line number Diff line number Diff line
@@ -506,48 +506,6 @@ public class ImsPhoneTest extends TelephonyTest {
        verify(mSST, never()).onImsServiceStateChanged();
    }

    @Test
    public void testInServiceWhenRegisteredAndVoLTE() {
        mImsPhoneUT.setImsRegistered(true);
        doReturn(true).when(mImsCT).isVolteEnabled();
        mImsPhoneUT.onFeatureCapabilityChanged();
        assertEquals(ServiceState.STATE_IN_SERVICE, mImsPhoneUT.getServiceState().getState());
    }

    @Test
    public void testInServiceWhenRegisteredAndVoWiFi() {
        mImsPhoneUT.setImsRegistered(true);
        doReturn(true).when(mImsCT).isVowifiEnabled();
        mImsPhoneUT.onFeatureCapabilityChanged();
        assertEquals(ServiceState.STATE_IN_SERVICE, mImsPhoneUT.getServiceState().getState());
    }

    @Test
    public void testOutOfServiceWhenRegisteredAndNoVoice() {
        mImsPhoneUT.setImsRegistered(true);
        doReturn(false).when(mImsCT).isVowifiEnabled();
        doReturn(false).when(mImsCT).isVolteEnabled();
        mImsPhoneUT.onFeatureCapabilityChanged();
        assertEquals(ServiceState.STATE_OUT_OF_SERVICE, mImsPhoneUT.getServiceState().getState());
    }

    @Test
    public void testOutOfServiceWhenNotRegistered() {
        mImsPhoneUT.setImsRegistered(false);
        assertEquals(ServiceState.STATE_OUT_OF_SERVICE, mImsPhoneUT.getServiceState().getState());
    }

    @Test
    public void testOutOfServiceWhenRegisteredAndLoseVoice() {
        doReturn(true).when(mImsCT).isVolteEnabled();
        mImsPhoneUT.setImsRegistered(true);
        assertEquals(ServiceState.STATE_IN_SERVICE, mImsPhoneUT.getServiceState().getState());

        doReturn(false).when(mImsCT).isVolteEnabled();
        mImsPhoneUT.onFeatureCapabilityChanged();
        assertEquals(ServiceState.STATE_OUT_OF_SERVICE, mImsPhoneUT.getServiceState().getState());
    }

    @Test
    @SmallTest
    public void testCellBarring() throws Exception {