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

Commit 58bd1ca1 authored by Malcolm Chen's avatar Malcolm Chen
Browse files

Replace ImsManager static methods with proper ones.

ImsManager static methods are deprecated since it doesn't support
MSIM devices. It will now always call getInstance with phoneId and
then call corresponding non-static methods.

Bug: 67602046
Test: regression tests
Change-Id: I1253249a414cc9be45d5fbbab182911144a30c32
parent 32a4bfa8
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1076,7 +1076,7 @@ public class GsmCdmaPhone extends Phone {
        boolean useImsForEmergency = imsPhone != null
                && isEmergency
                && alwaysTryImsForEmergencyCarrierConfig
                && ImsManager.isNonTtyOrTtyOnVolteEnabled(mContext)
                && ImsManager.getInstance(mContext, mPhoneId).isNonTtyOrTtyOnVolteEnabled()
                && imsPhone.isImsAvailable();

        String dialPart = PhoneNumberUtils.extractNetworkPortionAlt(PhoneNumberUtils.
@@ -1102,7 +1102,7 @@ public class GsmCdmaPhone extends Phone {
                    + ((imsPhone != null) ? imsPhone.getServiceState().getState() : "N/A"));
        }

        Phone.checkWfcWifiOnlyModeBeforeDial(mImsPhone, mContext);
        Phone.checkWfcWifiOnlyModeBeforeDial(mImsPhone, mPhoneId, mContext);

        if ((useImsForCall && !isUt) || (isUt && useImsForUt) || useImsForEmergency) {
            try {
@@ -2243,7 +2243,7 @@ public class GsmCdmaPhone extends Phone {
                    mCi.getVoiceRadioTechnology(obtainMessage(EVENT_REQUEST_VOICE_RADIO_TECH_DONE));
                }
                // Force update IMS service
                ImsManager.updateImsServiceConfig(mContext, mPhoneId, true);
                ImsManager.getInstance(mContext, mPhoneId).updateImsServiceConfig(true);

                // Update broadcastEmergencyCallStateChanges
                CarrierConfigManager configMgr = (CarrierConfigManager)
+11 −12
Original line number Diff line number Diff line
@@ -120,7 +120,7 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
                if (intent.getAction().equals(ImsManager.ACTION_IMS_SERVICE_UP)) {
                    mImsServiceReady = true;
                    updateImsPhone();
                    ImsManager.updateImsServiceConfig(mContext, mPhoneId, false);
                    ImsManager.getInstance(mContext, mPhoneId).updateImsServiceConfig(false);
                } else if (intent.getAction().equals(ImsManager.ACTION_IMS_SERVICE_DOWN)) {
                    mImsServiceReady = false;
                    updateImsPhone();
@@ -3332,12 +3332,11 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
     * @return {@code true} if IMS calling is enabled.
     */
    public boolean isImsUseEnabled() {
        boolean imsUseEnabled =
                ((ImsManager.isVolteEnabledByPlatform(mContext) &&
                ImsManager.isEnhanced4gLteModeSettingEnabledByUser(mContext)) ||
                (ImsManager.isWfcEnabledByPlatform(mContext) &&
                ImsManager.isWfcEnabledByUser(mContext)) &&
                ImsManager.isNonTtyOrTtyOnVolteEnabled(mContext));
        ImsManager imsManager = ImsManager.getInstance(mContext, mPhoneId);
        boolean imsUseEnabled = ((imsManager.isVolteEnabledByPlatform()
                && imsManager.isEnhanced4gLteModeSettingEnabledByUser())
                || (imsManager.isWfcEnabledByPlatform() && imsManager.isWfcEnabledByUser())
                && imsManager.isNonTtyOrTtyOnVolteEnabled());
        return imsUseEnabled;
    }

@@ -3458,13 +3457,13 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
        return false;
    }

    public static void checkWfcWifiOnlyModeBeforeDial(Phone imsPhone, Context context)
    public static void checkWfcWifiOnlyModeBeforeDial(Phone imsPhone, int phoneId, Context context)
            throws CallStateException {
        if (imsPhone == null || !imsPhone.isWifiCallingEnabled()) {
            boolean wfcWiFiOnly = (ImsManager.isWfcEnabledByPlatform(context) &&
                    ImsManager.isWfcEnabledByUser(context) &&
                    (ImsManager.getWfcMode(context) ==
                            ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY));
            ImsManager imsManager = ImsManager.getInstance(context, phoneId);
            boolean wfcWiFiOnly = (imsManager.isWfcEnabledByPlatform()
                    && imsManager.isWfcEnabledByUser() && (imsManager.getWfcMode()
                    == ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY));
            if (wfcWiFiOnly) {
                throw new CallStateException(
                        CallStateException.ERROR_OUT_OF_SERVICE,
+4 −4
Original line number Diff line number Diff line
@@ -1613,7 +1613,7 @@ public class ImsPhone extends ImsPhoneBase {
        if (imsReasonInfo.mCode == imsReasonInfo.CODE_REGISTRATION_ERROR
                && imsReasonInfo.mExtraMessage != null) {
            // Suppress WFC Registration notifications if WFC is not enabled by the user.
            if (ImsManager.isWfcEnabledByUser(mContext)) {
            if (ImsManager.getInstance(mContext, mPhoneId).isWfcEnabledByUser()) {
                processWfcDisconnectForNotification(imsReasonInfo);
            }
        }
@@ -1699,7 +1699,7 @@ public class ImsPhone extends ImsPhoneBase {
            }

            // UX requirement is to disable WFC in case of "permanent" registration failures.
            ImsManager.setWfcSetting(mContext, false);
            ImsManager.getInstance(mContext, mPhoneId).setWfcSetting(false);

            // If WfcSettings are active then alert will be shown
            // otherwise notification will be added.
@@ -1745,8 +1745,8 @@ public class ImsPhone extends ImsPhoneBase {
        if (mCT.getState() == PhoneConstants.State.IDLE) {
            if (DBG) Rlog.d(LOG_TAG, "updateRoamingState now: " + newRoaming);
            mRoaming = newRoaming;
            ImsManager.setWfcMode(mContext,
                    ImsManager.getWfcMode(mContext, newRoaming), newRoaming);
            ImsManager imsManager = ImsManager.getInstance(mContext, mPhoneId);
            imsManager.setWfcMode(imsManager.getWfcMode(newRoaming), newRoaming);
        } else {
            if (DBG) Rlog.d(LOG_TAG, "updateRoamingState postponed: " + newRoaming);
            mCT.registerForVoiceCallEnded(this,
+11 −7
Original line number Diff line number Diff line
@@ -600,7 +600,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {

    /**
     * TODO: Remove this code; it is a workaround.
     * When {@code true}, forces {@link ImsManager#updateImsServiceConfig(Context, int, boolean)} to
     * When {@code true}, forces {@link ImsManager#updateImsServiceConfig(boolean)} to
     * be called when an ongoing video call is disconnected.  In some cases, where video pause is
     * supported by the carrier, when {@link #onDataEnabledChanged(boolean, int)} reports that data
     * has been disabled we will pause the video rather than disconnecting the call.  When this
@@ -784,8 +784,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
        }

        if (mCarrierConfigLoaded) {
            ImsManager.updateImsServiceConfig(mPhone.getContext(),
                    mPhone.getPhoneId(), true);
            mImsManager.updateImsServiceConfig(true);
        }
    }

@@ -2231,7 +2230,9 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
            if (mShouldUpdateImsConfigOnDisconnect) {
                // Ensure we update the IMS config when the call is disconnected; we delayed this
                // because a video call was paused.
                ImsManager.updateImsServiceConfig(mPhone.getContext(), mPhone.getPhoneId(), true);
                if (mImsManager != null) {
                    mImsManager.updateImsServiceConfig(true);
                }
                mShouldUpdateImsConfigOnDisconnect = false;
            }
        }
@@ -3338,8 +3339,8 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
        boolean isActiveCallVideo = activeCall.isVideoCall() ||
                (mTreatDowngradedVideoCallsAsVideoCalls && activeCall.wasVideoCall());
        boolean isActiveCallOnWifi = activeCall.isWifiCall();
        boolean isVoWifiEnabled = mImsManager.isWfcEnabledByPlatform(mPhone.getContext()) &&
                mImsManager.isWfcEnabledByUser(mPhone.getContext());
        boolean isVoWifiEnabled = mImsManager.isWfcEnabledByPlatform()
                && mImsManager.isWfcEnabledByUser();
        boolean isIncomingCallAudio = !incomingCall.isVideoCall();
        log("shouldDisconnectActiveCallOnAnswer : isActiveCallVideo=" + isActiveCallVideo +
                " isActiveCallOnWifi=" + isActiveCallOnWifi + " isIncomingCallAudio=" +
@@ -3420,6 +3421,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
        log("onDataEnabledChanged: enabled=" + enabled + ", reason=" + reason);

        ImsManager.getInstance(mPhone.getContext(), mPhone.getPhoneId()).setDataEnabled(enabled);

        mIsDataEnabled = enabled;

        if (!mIsViLteDataMetered) {
@@ -3456,7 +3458,9 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
                && reason != DataEnabledSettings.REASON_REGISTERED) {
            // This will call into updateVideoCallFeatureValue and eventually all clients will be
            // asynchronously notified that the availability of VT over LTE has changed.
            ImsManager.updateImsServiceConfig(mPhone.getContext(), mPhone.getPhoneId(), true);
            if (mImsManager != null) {
                mImsManager.updateImsServiceConfig(true);
            }
        }
    }

+1 −1
Original line number Diff line number Diff line
@@ -441,7 +441,7 @@ public abstract class TelephonyTest {
        doReturn(ServiceState.RIL_RADIO_TECHNOLOGY_UMTS).when(mServiceState).
                getRilDataRadioTechnology();
        doReturn(mPhone).when(mCT).getPhone();
        mImsManagerInstances.put(mPhone.getPhoneId(), null);
        mImsManagerInstances.put(mPhone.getPhoneId(), mImsManager);
        doReturn(mImsEcbm).when(mImsManager).getEcbmInterface(anyInt());
        doReturn(mPhone).when(mInboundSmsHandler).getPhone();
        doReturn(mImsCallProfile).when(mImsCall).getCallProfile();