Loading src/java/com/android/internal/telephony/GsmCdmaPhone.java +3 −3 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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 { Loading Loading @@ -2250,7 +2250,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) Loading src/java/com/android/internal/telephony/Phone.java +11 −13 Original line number Diff line number Diff line Loading @@ -56,7 +56,6 @@ import android.telephony.SignalStrength; import android.telephony.SubscriptionManager; import android.telephony.VoLteServiceState; import android.text.TextUtils; import android.util.Log; import com.android.ims.ImsCall; import com.android.ims.ImsConfig; Loading Loading @@ -121,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(); Loading Loading @@ -3333,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; } Loading Loading @@ -3459,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, Loading src/java/com/android/internal/telephony/imsphone/ImsPhone.java +4 −4 Original line number Diff line number Diff line Loading @@ -1629,7 +1629,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); } } Loading Loading @@ -1715,7 +1715,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. Loading Loading @@ -1761,8 +1761,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, Loading src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java +11 −7 Original line number Diff line number Diff line Loading @@ -640,7 +640,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 Loading Loading @@ -831,8 +831,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { } if (mCarrierConfigLoaded) { ImsManager.updateImsServiceConfig(mPhone.getContext(), mPhone.getPhoneId(), true); mImsManager.updateImsServiceConfig(true); } } Loading Loading @@ -2327,7 +2326,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; } } Loading Loading @@ -3457,8 +3458,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=" + Loading Loading @@ -3539,6 +3540,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) { Loading Loading @@ -3575,7 +3577,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); } } } Loading tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -426,7 +426,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(); Loading Loading
src/java/com/android/internal/telephony/GsmCdmaPhone.java +3 −3 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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 { Loading Loading @@ -2250,7 +2250,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) Loading
src/java/com/android/internal/telephony/Phone.java +11 −13 Original line number Diff line number Diff line Loading @@ -56,7 +56,6 @@ import android.telephony.SignalStrength; import android.telephony.SubscriptionManager; import android.telephony.VoLteServiceState; import android.text.TextUtils; import android.util.Log; import com.android.ims.ImsCall; import com.android.ims.ImsConfig; Loading Loading @@ -121,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(); Loading Loading @@ -3333,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; } Loading Loading @@ -3459,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, Loading
src/java/com/android/internal/telephony/imsphone/ImsPhone.java +4 −4 Original line number Diff line number Diff line Loading @@ -1629,7 +1629,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); } } Loading Loading @@ -1715,7 +1715,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. Loading Loading @@ -1761,8 +1761,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, Loading
src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java +11 −7 Original line number Diff line number Diff line Loading @@ -640,7 +640,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 Loading Loading @@ -831,8 +831,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { } if (mCarrierConfigLoaded) { ImsManager.updateImsServiceConfig(mPhone.getContext(), mPhone.getPhoneId(), true); mImsManager.updateImsServiceConfig(true); } } Loading Loading @@ -2327,7 +2326,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; } } Loading Loading @@ -3457,8 +3458,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=" + Loading Loading @@ -3539,6 +3540,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) { Loading Loading @@ -3575,7 +3577,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); } } } Loading
tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -426,7 +426,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(); Loading