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

Commit aeb5071c authored by Hyunho Shin's avatar Hyunho Shin Committed by Android (Google) Code Review
Browse files

Merge changes from topic "SsDomainControllerRevert"

* changes:
  Revert "Implement the domain selection of supplementary services over Ut"
  Revert "Interworking between CallWaitingController and SsDomainController"
  Revert "Fix SsDomainController to support terminal-based CLIR with vendor IMS"
parents 6bab9a9d 4aa218e7
Loading
Loading
Loading
Loading
+43 −209
Original line number Diff line number Diff line
@@ -29,9 +29,6 @@ import static com.android.internal.telephony.CommandsInterface.CF_REASON_NOT_REA
import static com.android.internal.telephony.CommandsInterface.CF_REASON_NO_REPLY;
import static com.android.internal.telephony.CommandsInterface.CF_REASON_UNCONDITIONAL;
import static com.android.internal.telephony.CommandsInterface.SERVICE_CLASS_VOICE;
import static com.android.internal.telephony.SsDomainController.SS_CLIP;
import static com.android.internal.telephony.SsDomainController.SS_CLIR;
import static com.android.internal.telephony.SsDomainController.SS_CW;

import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -266,8 +263,6 @@ public class GsmCdmaPhone extends Phone {
    private boolean mResetModemOnRadioTechnologyChange = false;
    private boolean mSsOverCdmaSupported = false;

    private SsDomainController mSsDomainController;

    private int mRilVersion;
    private boolean mBroadcastEmergencyCallStateChanges = false;
    private @ServiceState.RegState int mTelecomVoiceServiceStateOverride =
@@ -386,8 +381,6 @@ public class GsmCdmaPhone extends Phone {
        subMan.addOnSubscriptionsChangedListener(
                new HandlerExecutor(this), mSubscriptionsChangedListener);

        mSsDomainController = new SsDomainController(this);

        logd("GsmCdmaPhone: constructor: sub = " + mPhoneId);
    }

@@ -1375,10 +1368,9 @@ public class GsmCdmaPhone extends Phone {
                stripSeparators(dialString));
        boolean isMmiCode = (dialPart.startsWith("*") || dialPart.startsWith("#"))
                && dialPart.endsWith("#");
        SsDomainController.SuppServiceRoutingInfo ssInfo =
                ImsPhoneMmiCode.getSuppServiceRoutingInfo(dialPart, this);
        boolean isPotentialUssdCode = isMmiCode && (ssInfo == null);
        boolean useImsForUt = ssInfo != null && ssInfo.useSsOverUt();
        boolean isSuppServiceCode = ImsPhoneMmiCode.isSuppServiceCodes(dialPart, this);
        boolean isPotentialUssdCode = isMmiCode && !isSuppServiceCode;
        boolean useImsForUt = imsPhone != null && imsPhone.isUtEnabled();
        boolean useImsForCall = useImsForCall(dialArgs)
                && (isWpsCall ? allowWpsOverIms : true);

@@ -1389,8 +1381,7 @@ public class GsmCdmaPhone extends Phone {
                    + ", useImsForEmergency=" + useImsForEmergency
                    + ", useImsForUt=" + useImsForUt
                    + ", isUt=" + isMmiCode
                    + ", isSuppServiceCode=" + (ssInfo != null)
                    + ", useSsOverUt=" + (ssInfo != null && ssInfo.useSsOverUt())
                    + ", isSuppServiceCode=" + isSuppServiceCode
                    + ", isPotentialUssdCode=" + isPotentialUssdCode
                    + ", isWpsCall=" + isWpsCall
                    + ", allowWpsOverIms=" + allowWpsOverIms
@@ -1446,10 +1437,6 @@ public class GsmCdmaPhone extends Phone {
            }
        }

        if (ssInfo != null && !ssInfo.supportsCsfb()) {
            throw new CallStateException("not support csfb for supplementary services");
        }

        if (mSST != null && mSST.mSS.getState() == ServiceState.STATE_OUT_OF_SERVICE
                && mSST.mSS.getDataRegistrationState() != ServiceState.STATE_IN_SERVICE
                && !isEmergency) {
@@ -2245,36 +2232,12 @@ public class GsmCdmaPhone extends Phone {
        mSsOverCdmaSupported = b.getBoolean(CarrierConfigManager.KEY_SUPPORT_SS_OVER_CDMA_BOOL);
    }

    private void updateSsOverUtConfig(PersistableBundle b) {
        mSsDomainController.updateSsOverUtConfig(b);
    }

    @Override
    public SsDomainController getSsDomainController() {
        return mSsDomainController;
    }

    /** Checks the static configuration for the given Call Barring service. */
    public boolean useCbOverUt(String facility) {
        return mSsDomainController.useCbOverUt(facility);
    }

    /** Checks the static configuration for the given Call Forwarding service. */
    public boolean useCfOverUt(int reason) {
        return mSsDomainController.useCfOverUt(reason);
    }

    /** Checks the static configuration for the given supplementary service. */
    public boolean useSsOverUt(String service) {
        return mSsDomainController.useSsOverUt(service);
    }

    @Override
    public boolean useSsOverUt(Message onComplete) {
    public boolean useSsOverIms(Message onComplete) {
        boolean isUtEnabled = isUtEnabled();

        Rlog.d(LOG_TAG, "useSsOverUt: isUtEnabled()= " + isUtEnabled
                + " isCsRetry(onComplete))= " + isCsRetry(onComplete));
        Rlog.d(LOG_TAG, "useSsOverIms: isUtEnabled()= " + isUtEnabled +
                " isCsRetry(onComplete))= " + isCsRetry(onComplete));

        if (isUtEnabled && !isCsRetry(onComplete)) {
            return true;
@@ -2282,58 +2245,6 @@ public class GsmCdmaPhone extends Phone {
        return false;
    }

    /**
     * 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.
     */
    private boolean useTerminalBasedServiceOverIms(Message onComplete) {
        Phone imsPhone = mImsPhone;
        if (imsPhone == null) {
            logd("useTerminalBasedServiceOverIms: called for GsmCdma");
            return false;
        }

        boolean isUtEnabled = imsPhone.isUtEnabled();
        Rlog.d(LOG_TAG, "useTerminalBasedServiceOverIms isUtEnabled= " + isUtEnabled
                + " isCsRetry(onComplete))= " + isCsRetry(onComplete));
        return isUtEnabled && !isCsRetry(onComplete);
    }

    /**
     * Returns whether CSFB is supported for supplementary services.
     */
    public boolean supportCsfbForSs() {
        return mSsDomainController.supportCsfb();
    }

    /**
     * Returns whether the carrier supports the terminal-based call waiting service
     * and Ims service handles it by itself.
     */
    private boolean getOemHandlesTerminalBasedCallWaiting() {
        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.
     */
    private void responseInvalidState(Message onComplete) {
        if (onComplete == null) return;
        AsyncResult.forMessage(onComplete, null,
                new CommandException(CommandException.Error.INVALID_STATE,
                        "No network available for supplementary services"));
        onComplete.sendToTarget();
    }

    @Override
    public void getCallForwardingOption(int commandInterfaceCFReason, Message onComplete) {
        getCallForwardingOption(commandInterfaceCFReason,
@@ -2353,15 +2264,9 @@ public class GsmCdmaPhone extends Phone {
        }

        Phone imsPhone = mImsPhone;
        if (useCfOverUt(commandInterfaceCFReason)) {
            if (useSsOverUt(onComplete)) {
                imsPhone.getCallForwardingOption(commandInterfaceCFReason,
                        serviceClass, onComplete);
        if (useSsOverIms(onComplete)) {
            imsPhone.getCallForwardingOption(commandInterfaceCFReason, serviceClass, onComplete);
            return;
            } else if (!supportCsfbForSs()) {
                responseInvalidState(onComplete);
                return;
            }
        }

        if (isPhoneTypeGsm()) {
@@ -2418,15 +2323,10 @@ public class GsmCdmaPhone extends Phone {
        }

        Phone imsPhone = mImsPhone;
        if (useCfOverUt(commandInterfaceCFReason)) {
            if (useSsOverUt(onComplete)) {
        if (useSsOverIms(onComplete)) {
            imsPhone.setCallForwardingOption(commandInterfaceCFAction, commandInterfaceCFReason,
                    dialingNumber, serviceClass, timerSeconds, onComplete);
            return;
            } else if (!supportCsfbForSs()) {
                responseInvalidState(onComplete);
                return;
            }
        }

        if (isPhoneTypeGsm()) {
@@ -2485,14 +2385,9 @@ public class GsmCdmaPhone extends Phone {
        }

        Phone imsPhone = mImsPhone;
        if (useCbOverUt(facility)) {
            if (useSsOverUt(onComplete)) {
        if (useSsOverIms(onComplete)) {
            imsPhone.getCallBarring(facility, password, onComplete, serviceClass);
            return;
            } else if (!supportCsfbForSs()) {
                responseInvalidState(onComplete);
                return;
            }
        }

        if (isPhoneTypeGsm()) {
@@ -2517,14 +2412,9 @@ public class GsmCdmaPhone extends Phone {
        }

        Phone imsPhone = mImsPhone;
        if (useCbOverUt(facility)) {
            if (useSsOverUt(onComplete)) {
        if (useSsOverIms(onComplete)) {
            imsPhone.setCallBarring(facility, lockState, password, onComplete, serviceClass);
            return;
            } else if (!supportCsfbForSs()) {
                responseInvalidState(onComplete);
                return;
            }
        }

        if (isPhoneTypeGsm()) {
@@ -2574,22 +2464,11 @@ public class GsmCdmaPhone extends Phone {
        }

        Phone imsPhone = mImsPhone;
        if (useSsOverUt(SS_CLIR)) {
            if (useSsOverUt(onComplete)) {
                imsPhone.getOutgoingCallerIdDisplay(onComplete);
                return;
            } else if (!supportCsfbForSs()) {
                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)) {

        if (useSsOverIms(onComplete)) {
            imsPhone.getOutgoingCallerIdDisplay(onComplete);
            return;
        }
        }

        if (isPhoneTypeGsm()) {
            mCi.getCLIR(onComplete);
@@ -2613,22 +2492,10 @@ public class GsmCdmaPhone extends Phone {
        }

        Phone imsPhone = mImsPhone;
        if (useSsOverUt(SS_CLIR)) {
            if (useSsOverUt(onComplete)) {
                imsPhone.setOutgoingCallerIdDisplay(commandInterfaceCLIRMode, onComplete);
                return;
            } else if (!supportCsfbForSs()) {
                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)) {
        if (useSsOverIms(onComplete)) {
            imsPhone.setOutgoingCallerIdDisplay(commandInterfaceCLIRMode, onComplete);
            return;
        }
        }

        if (isPhoneTypeGsm()) {
            // Packing CLIR value in the message. This will be required for
@@ -2655,14 +2522,9 @@ public class GsmCdmaPhone extends Phone {
        }

        Phone imsPhone = mImsPhone;
        if (useSsOverUt(SS_CLIP)) {
            if (useSsOverUt(onComplete)) {
        if (useSsOverIms(onComplete)) {
            imsPhone.queryCLIP(onComplete);
            return;
            } else if (!supportCsfbForSs()) {
                responseInvalidState(onComplete);
                return;
            }
        }

        if (isPhoneTypeGsm()) {
@@ -2688,21 +2550,9 @@ public class GsmCdmaPhone extends Phone {
        if (mCallWaitingController.getCallWaiting(onComplete)) return;

        Phone imsPhone = mImsPhone;
        if (useSsOverUt(SS_CW)) {
            if (useSsOverUt(onComplete)) {
        if (useSsOverIms(onComplete)) {
            imsPhone.getCallWaiting(onComplete);
            return;
            } else if (!supportCsfbForSs()) {
                responseInvalidState(onComplete);
                return;
            }
        } 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)) {
                imsPhone.getCallWaiting(onComplete);
                return;
            }
        }

        if (isPhoneTypeGsm()) {
@@ -2753,21 +2603,9 @@ public class GsmCdmaPhone extends Phone {
        if (mCallWaitingController.setCallWaiting(enable, serviceClass, onComplete)) return;

        Phone imsPhone = mImsPhone;
        if (useSsOverUt(SS_CW)) {
            if (useSsOverUt(onComplete)) {
        if (useSsOverIms(onComplete)) {
            imsPhone.setCallWaiting(enable, onComplete);
            return;
            } else if (!supportCsfbForSs()) {
                responseInvalidState(onComplete);
                return;
            }
        } 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)) {
                imsPhone.setCallWaiting(enable, onComplete);
                return;
            }
        }

        if (isPhoneTypeGsm()) {
@@ -2808,7 +2646,6 @@ public class GsmCdmaPhone extends Phone {
    @Override
    public void setTerminalBasedCallWaitingSupported(boolean supported) {
        mCallWaitingController.setTerminalBasedCallWaitingSupported(supported);
        mSsDomainController.setOemHandlesTerminalBasedService(!supported);
    }

    @Override
@@ -3248,7 +3085,6 @@ public class GsmCdmaPhone extends Phone {
                updateVoNrSettings(b);
                updateSsOverCdmaSupported(b);
                loadAllowedNetworksFromSubscriptionDatabase();
                updateSsOverUtConfig(b);
                // Obtain new radio capabilities from the modem, since some are SIM-dependent
                mCi.getRadioCapability(obtainMessage(EVENT_GET_RADIO_CAPABILITY));
                break;
@@ -4454,14 +4290,6 @@ public class GsmCdmaPhone extends Phone {
                        + ServiceState.rilServiceStateToString(mTelecomVoiceServiceStateOverride)
                        + ")");
        pw.flush();

        try {
            mSsDomainController.dump(pw);
        } catch (Exception e) {
            e.printStackTrace();
        }
        pw.flush();

        try {
            mCallWaitingController.dump(pw);
        } catch (Exception e) {
@@ -4764,7 +4592,13 @@ public class GsmCdmaPhone extends Phone {

    @Override
    public boolean isUtEnabled() {
        return mSsDomainController.isUtEnabled();
        Phone imsPhone = mImsPhone;
        if (imsPhone != null) {
            return imsPhone.isUtEnabled();
        } else {
            logd("isUtEnabled: called for GsmCdma");
            return false;
        }
    }

    public String getDtmfToneDelayKey() {
+1 −11
Original line number Diff line number Diff line
@@ -4795,17 +4795,7 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
        return null;
    }

    /**
     * Returns the instance of SsDomainController
     */
    public SsDomainController getSsDomainController() {
        return null;
    }

    /**
     * Returns whether it will be served with Ut or not.
     */
    public boolean useSsOverUt(Message onComplete) {
    public boolean useSsOverIms(Message onComplete) {
        return false;
    }

Loading