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

Commit ddd03960 authored by Hyunho Shin's avatar Hyunho Shin Committed by Hyunho
Browse files

Revert "Fix SsDomainController to support terminal-based CLIR with vendor IMS"

This reverts commit 02f3fed2.

Reason for revert: UT domain selection should go back to legacy.

Change-Id: I681680035a02ce4dd07c16b85c7c67f066ebbb18
parent e50e70d1
Loading
Loading
Loading
Loading
+8 −30
Original line number Diff line number Diff line
@@ -2284,18 +2284,18 @@ public class GsmCdmaPhone extends Phone {

    /**
     * Checks the availability of Ut directly without SsDomainController.
     * This is only applicable for the case that the terminal-based service
     * is handled by the IMS service alone without interworking with framework.
     * This is only applicable for the case that the terminal-based call waiting service
     * is handled by the IMS service alone without interworking with CallWaitingController.
     */
    private boolean useTerminalBasedServiceOverIms(Message onComplete) {
    private boolean useCallWaitingOverUt(Message onComplete) {
        Phone imsPhone = mImsPhone;
        if (imsPhone == null) {
            logd("useTerminalBasedServiceOverIms: called for GsmCdma");
            logd("useCallWaitingOverUt: called for GsmCdma");
            return false;
        }

        boolean isUtEnabled = imsPhone.isUtEnabled();
        Rlog.d(LOG_TAG, "useTerminalBasedServiceOverIms isUtEnabled= " + isUtEnabled
        Rlog.d(LOG_TAG, "useCallWaitingOverUt isUtEnabled= " + isUtEnabled
                + " isCsRetry(onComplete))= " + isCsRetry(onComplete));
        return isUtEnabled && !isCsRetry(onComplete);
    }
@@ -2315,14 +2315,6 @@ public class GsmCdmaPhone extends Phone {
        return mSsDomainController.getOemHandlesTerminalBasedCallWaiting();
    }

    /**
     * Returns whether the carrier supports the terminal-based CLIR
     * and Ims service handles it by itself.
     */
    private boolean getOemHandlesTerminalBasedClir() {
        return mSsDomainController.getOemHandlesTerminalBasedClir();
    }

    /**
     * Sends response indicating no nework is available for supplementary services.
     */
@@ -2582,13 +2574,6 @@ public class GsmCdmaPhone extends Phone {
                responseInvalidState(onComplete);
                return;
            }
        } else if (getOemHandlesTerminalBasedClir()) {
            // Ims service handles the terminal-based CLIR by itself.
            // Use legacy implementation. Forward the request to Ims service if Ut is available.
            if (useTerminalBasedServiceOverIms(onComplete)) {
                imsPhone.getOutgoingCallerIdDisplay(onComplete);
                return;
            }
        }

        if (isPhoneTypeGsm()) {
@@ -2621,13 +2606,6 @@ public class GsmCdmaPhone extends Phone {
                responseInvalidState(onComplete);
                return;
            }
        } else if (getOemHandlesTerminalBasedClir()) {
            // Ims service handles the terminal-based CLIR by itself.
            // Use legacy implementation. Forward the request to Ims service if Ut is available.
            if (useTerminalBasedServiceOverIms(onComplete)) {
                imsPhone.setOutgoingCallerIdDisplay(commandInterfaceCLIRMode, onComplete);
                return;
            }
        }

        if (isPhoneTypeGsm()) {
@@ -2699,7 +2677,7 @@ public class GsmCdmaPhone extends Phone {
        } else if (getOemHandlesTerminalBasedCallWaiting()) {
            // Ims service handles the terminal-based call waiting service by itself.
            // Use legacy implementation. Forward the request to Ims service if Ut is available.
            if (useTerminalBasedServiceOverIms(onComplete)) {
            if (useCallWaitingOverUt(onComplete)) {
                imsPhone.getCallWaiting(onComplete);
                return;
            }
@@ -2764,7 +2742,7 @@ public class GsmCdmaPhone extends Phone {
        } else if (getOemHandlesTerminalBasedCallWaiting()) {
            // Ims service handles the terminal-based call waiting service by itself.
            // Use legacy implementation. Forward the request to Ims service if Ut is available.
            if (useTerminalBasedServiceOverIms(onComplete)) {
            if (useCallWaitingOverUt(onComplete)) {
                imsPhone.setCallWaiting(enable, onComplete);
                return;
            }
@@ -2808,7 +2786,7 @@ public class GsmCdmaPhone extends Phone {
    @Override
    public void setTerminalBasedCallWaitingSupported(boolean supported) {
        mCallWaitingController.setTerminalBasedCallWaitingSupported(supported);
        mSsDomainController.setOemHandlesTerminalBasedService(!supported);
        mSsDomainController.setOemHandlesTerminalBasedCallWaiting(!supported);
    }

    @Override
+14 −30
Original line number Diff line number Diff line
@@ -170,10 +170,9 @@ public class SsDomainController {
    private Set<Integer> mUtAvailableRats = new HashSet<>();
    private boolean mWiFiAvailable = false;
    private boolean mIsMonitoringConnectivity = false;
    /** true if Ims service handles the terminal-based service by itself. */
    private boolean mOemHandlesTerminalBasedService = false;
    /** true if Ims service handles the terminal-based call waiting service by itself. */
    private boolean mOemHandlesTerminalBasedCallWaiting = false;
    private boolean mSupportsTerminalBasedCallWaiting = false;
    private boolean mSupportsTerminalBasedClir = false;

    public SsDomainController(GsmCdmaPhone phone) {
        mPhone = phone;
@@ -222,19 +221,16 @@ public class SsDomainController {
        mUtAvailableWhenRoaming = availableWhenRoaming;

        mSupportsTerminalBasedCallWaiting = false;
        mSupportsTerminalBasedClir = false;
        if (tbServices != null) {
            for (int tbService : tbServices) {
                if (tbService == SUPPLEMENTARY_SERVICE_CW) {
                    mSupportsTerminalBasedCallWaiting = true;
                }
                if (tbService == SUPPLEMENTARY_SERVICE_IDENTIFICATION_OIR) {
                    mSupportsTerminalBasedClir = true;
                    break;
                }
            }
        }
        logi("updateSsOverUtConfig terminal-based cw=" + mSupportsTerminalBasedCallWaiting
                + ", clir=" + mSupportsTerminalBasedClir);
        logi("updateSsOverUtConfig terminal-based cw "
                + mSupportsTerminalBasedCallWaiting);

        mCbOverUtSupported.clear();
        mCfOverUtSupported.clear();
@@ -539,9 +535,8 @@ public class SsDomainController {
     * Only for ImsPhoneMmiCode.
     */
    public SuppServiceRoutingInfo getSuppServiceRoutingInfoForSs(String service) {
        if ((SS_CW.equals(service) && getOemHandlesTerminalBasedCallWaiting())
                || (SS_CLIR.equals(service) && getOemHandlesTerminalBasedClir())) {
            // Ims service handles the terminal based service by itself.
        if (SS_CW.equals(service) && getOemHandlesTerminalBasedCallWaiting()) {
            // Ims service handles the terminal based call waiting service by itself.
            // Use legacy implementation. Forward the request to Ims service if Ut is available.
            Phone imsPhone = mPhone.getImsPhone();
            boolean isUtEnabled = (imsPhone != null) && imsPhone.isUtEnabled();
@@ -580,12 +575,12 @@ public class SsDomainController {
    }

    /**
     * @param state true if Ims service handles the terminal-based service by itself.
     * @param state true if Ims service handles the terminal-based call waiting service by itself.
     *              Otherwise, false.
     */
    public void setOemHandlesTerminalBasedService(boolean state) {
        logi("setOemHandlesTerminalBasedService " + state);
        mOemHandlesTerminalBasedService = state;
    public void setOemHandlesTerminalBasedCallWaiting(boolean state) {
        logi("setOemHandlesTerminalBasedCallWaiting " + state);
        mOemHandlesTerminalBasedCallWaiting = state;
    }

    /**
@@ -594,18 +589,8 @@ public class SsDomainController {
     */
    public boolean getOemHandlesTerminalBasedCallWaiting() {
        logi("getOemHandlesTerminalBasedCallWaiting "
                + mSupportsTerminalBasedCallWaiting + ", " + mOemHandlesTerminalBasedService);
        return mSupportsTerminalBasedCallWaiting && mOemHandlesTerminalBasedService;
    }

    /**
     * Returns whether the carrier supports the terminal-based CLIR
     * and Ims service handles it by itself.
     */
    public boolean getOemHandlesTerminalBasedClir() {
        logi("getOemHandlesTerminalBasedClir "
                + mSupportsTerminalBasedClir + ", " + mOemHandlesTerminalBasedService);
        return mSupportsTerminalBasedClir && mOemHandlesTerminalBasedService;
                + mSupportsTerminalBasedCallWaiting + ", " + mOemHandlesTerminalBasedCallWaiting);
        return mSupportsTerminalBasedCallWaiting && mOemHandlesTerminalBasedCallWaiting;
    }

    /**
@@ -625,9 +610,8 @@ public class SsDomainController {
        pw.println(" mUtAvailableWhenRoaming=" + mUtAvailableWhenRoaming);
        pw.println(" mUtAvailableRats=" + mUtAvailableRats);
        pw.println(" mWiFiAvailable=" + mWiFiAvailable);
        pw.println(" mOemHandlesTerminalBasedService=" + mOemHandlesTerminalBasedService);
        pw.println(" mOemHandlesTerminalBasedCallWaiting=" + mOemHandlesTerminalBasedCallWaiting);
        pw.println(" mSupportsTerminalBasedCallWaiting=" + mSupportsTerminalBasedCallWaiting);
        pw.println(" mSupportsTerminalBasedClir=" + mSupportsTerminalBasedClir);
        pw.decreaseIndent();
    }

+0 −29
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.internal.telephony;

import static com.android.internal.telephony.CommandsInterface.CF_ACTION_ENABLE;
import static com.android.internal.telephony.CommandsInterface.CF_REASON_UNCONDITIONAL;
import static com.android.internal.telephony.CommandsInterface.CLIR_SUPPRESSION;
import static com.android.internal.telephony.Phone.EVENT_ICC_CHANGED;
import static com.android.internal.telephony.Phone.EVENT_SRVCC_STATE_CHANGED;
import static com.android.internal.telephony.Phone.EVENT_UICC_APPS_ENABLEMENT_STATUS_CHANGED;
@@ -2258,32 +2257,4 @@ public class GsmCdmaPhoneTest extends TelephonyTest {
        mPhoneUT.setCallWaiting(false, CommandsInterface.SERVICE_CLASS_VOICE, null);
        verify(mImsPhone, times(1)).setCallWaiting(eq(false), any());
    }

    @Test
    @SmallTest
    public void testOemHandlesTerminalBasedClir() throws Exception {
        doReturn(true).when(mImsPhone).isUtEnabled();
        replaceInstance(Phone.class, "mImsPhone", mPhoneUT, mImsPhone);

        // Ut is disabled in config
        doReturn(false).when(mSsDomainController).useSsOverUt(anyString());
        doReturn(false).when(mSsDomainController).getOemHandlesTerminalBasedClir();

        replaceInstance(GsmCdmaPhone.class, "mSsDomainController", mPhoneUT, mSsDomainController);

        mPhoneUT.getOutgoingCallerIdDisplay(null);
        verify(mImsPhone, times(0)).getOutgoingCallerIdDisplay(any());

        mPhoneUT.setOutgoingCallerIdDisplay(CLIR_SUPPRESSION, null);
        verify(mImsPhone, times(0)).setOutgoingCallerIdDisplay(anyInt(), any());

        // OEM handles the terminal-based CLIR by itself.
        doReturn(true).when(mSsDomainController).getOemHandlesTerminalBasedClir();

        mPhoneUT.getOutgoingCallerIdDisplay(null);
        verify(mImsPhone, times(1)).getOutgoingCallerIdDisplay(any());

        mPhoneUT.setOutgoingCallerIdDisplay(CLIR_SUPPRESSION, null);
        verify(mImsPhone, times(1)).setOutgoingCallerIdDisplay(eq(CLIR_SUPPRESSION), any());
    }
}
+2 −37
Original line number Diff line number Diff line
@@ -440,54 +440,19 @@ public class SsDomainControllerTest extends TelephonyTest {
                new int[] {}, UT_OVER_ALL, new int[] { SUPPLEMENTARY_SERVICE_CW });
        String sc = mServices.get(SS_CW);

        mSdc.setOemHandlesTerminalBasedService(false);
        mSdc.setOemHandlesTerminalBasedCallWaiting(false);
        SsDomainController.SuppServiceRoutingInfo ssCode =
                ImsPhoneMmiCode.getSuppServiceRoutingInfo("*#" + sc + "#", mSdc);
        assertNotNull(ssCode);
        assertFalse(ssCode.useSsOverUt());

        mSdc.setOemHandlesTerminalBasedService(true);
        mSdc.setOemHandlesTerminalBasedCallWaiting(true);
        ssCode = ImsPhoneMmiCode.getSuppServiceRoutingInfo("*#" + sc + "#", mSdc);

        assertNotNull(ssCode);
        assertTrue(ssCode.useSsOverUt());
    }

    @Test
    @SmallTest
    public void testOemHandlesTerminalBasedClir() {
        setUtEnabled();

        // Enable terminal-based CLIR
        mSdc.updateCarrierConfigForTest(true, true, false, true, true,
                new int[] {}, UT_OVER_ALL, new int[] { SUPPLEMENTARY_SERVICE_IDENTIFICATION_OIR });
        String sc = mServices.get(SS_CLIR);

        mSdc.setOemHandlesTerminalBasedService(false);
        SsDomainController.SuppServiceRoutingInfo ssCode =
                ImsPhoneMmiCode.getSuppServiceRoutingInfo("*#" + sc + "#", mSdc);

        assertNotNull(ssCode);
        assertFalse(ssCode.useSsOverUt());
        assertFalse(mSdc.getOemHandlesTerminalBasedClir());

        mSdc.setOemHandlesTerminalBasedService(true);
        ssCode = ImsPhoneMmiCode.getSuppServiceRoutingInfo("*#" + sc + "#", mSdc);

        assertNotNull(ssCode);
        assertTrue(ssCode.useSsOverUt());
        assertTrue(mSdc.getOemHandlesTerminalBasedClir());

        // Disable terminal-based CLIR
        mSdc.updateCarrierConfigForTest(true, true, false, true, true,
                new int[] {}, UT_OVER_ALL, new int[] {});
        ssCode = ImsPhoneMmiCode.getSuppServiceRoutingInfo("*#" + sc + "#", mSdc);

        assertNotNull(ssCode);
        assertFalse(ssCode.useSsOverUt());
        assertFalse(mSdc.getOemHandlesTerminalBasedClir());
    }

    private void setUtEnabled() {
        doReturn(0).when(mImsPhone).getSubId();
        mSdc.updateWifiForUt(false);