Loading src/java/com/android/internal/telephony/Phone.java +15 −0 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import android.telephony.SignalStrength; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.VoLteServiceState; import android.telephony.ims.stub.ImsRegistrationImplBase; import android.text.TextUtils; import com.android.ims.ImsCall; Loading Loading @@ -3195,6 +3196,20 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { return isVolteEnabled; } /** * @return the IMS MmTel Registration technology for this Phone, defined in * {@link ImsRegistrationImplBase}. */ public int getImsRegistrationTech() { Phone imsPhone = mImsPhone; int regTech = ImsRegistrationImplBase.REGISTRATION_TECH_NONE; if (imsPhone != null) { regTech = imsPhone.getImsRegistrationTech(); } Rlog.d(LOG_TAG, "getImsRegistrationTechnology =" + regTech); return regTech; } private boolean getRoamingOverrideHelper(String prefix, String key) { String iccId = getIccSerialNumber(); if (TextUtils.isEmpty(iccId) || TextUtils.isEmpty(key)) { Loading src/java/com/android/internal/telephony/imsphone/ImsPhone.java +9 −4 Original line number Diff line number Diff line Loading @@ -67,16 +67,16 @@ import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.UssdResponse; import android.text.TextUtils; import android.telephony.ims.ImsCallForwardInfo; import android.telephony.ims.ImsCallProfile; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.ImsSsInfo; import android.text.TextUtils; import com.android.ims.ImsEcbm; import com.android.ims.ImsEcbmStateListener; import com.android.ims.ImsException; import com.android.ims.ImsManager; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.ImsSsInfo; import com.android.ims.ImsUtInterface; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.Call; Loading Loading @@ -1563,6 +1563,11 @@ public class ImsPhone extends ImsPhoneBase { return mCT.isVideoCallEnabled(); } @Override public int getImsRegistrationTech() { return mCT.getImsRegistrationTech(); } @Override public Phone getDefaultPhone() { return mDefaultPhone; Loading src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java +4 −4 Original line number Diff line number Diff line Loading @@ -52,6 +52,9 @@ import android.telephony.Rlog; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.ims.ImsCallProfile; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.ImsSuppServiceNotification; import android.telephony.ims.feature.ImsFeature; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsConfigImplBase; Loading @@ -63,15 +66,12 @@ import android.util.Pair; import android.util.SparseIntArray; import com.android.ims.ImsCall; import android.telephony.ims.ImsCallProfile; import com.android.ims.ImsConfig; import com.android.ims.ImsConfigListener; import com.android.ims.ImsEcbm; import com.android.ims.ImsException; import com.android.ims.ImsManager; import com.android.ims.ImsMultiEndpoint; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.ImsSuppServiceNotification; import com.android.ims.ImsUtInterface; import com.android.ims.MmTelFeatureConnection; import com.android.ims.internal.IImsCallSession; Loading Loading @@ -3314,7 +3314,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { return mState; } private int getImsRegistrationTech() { public int getImsRegistrationTech() { if (mImsManager != null) { return mImsManager.getRegistrationTech(); } Loading tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneCallTrackerTest.java +76 −4 Original line number Diff line number Diff line Loading @@ -49,19 +49,19 @@ import android.telephony.DisconnectCause; import android.telephony.PhoneNumberUtils; import android.telephony.ServiceState; import android.telephony.TelephonyManager; import android.telephony.ims.ImsCallProfile; import android.telephony.ims.ImsCallSession; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.ImsStreamMediaProfile; import android.telephony.ims.feature.ImsFeature; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; import android.test.suitebuilder.annotation.SmallTest; import com.android.ims.ImsCall; import android.telephony.ims.ImsCallProfile; import com.android.ims.ImsConfig; import com.android.ims.ImsException; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.ImsStreamMediaProfile; import com.android.ims.internal.IImsCallSession; import android.telephony.ims.ImsCallSession; import com.android.internal.telephony.Call; import com.android.internal.telephony.CallStateException; import com.android.internal.telephony.CommandsInterface; Loading @@ -83,6 +83,7 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { private ImsPhoneCallTracker mCTUT; private ImsCTHandlerThread mImsCTHandlerThread; private MmTelFeature.Listener mMmTelListener; private ImsRegistrationImplBase.Callback mRegistrationCallback; private ImsFeature.CapabilityCallback mCapabilityCallback; private ImsCall.Listener mImsCallListener; private ImsCall mImsCall; Loading Loading @@ -209,6 +210,11 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { }).when(mImsManager).makeCall(eq(mImsCallProfile), (String []) any(), (ImsCall.Listener) any()); doAnswer(invocation -> { mRegistrationCallback = invocation.getArgument(0); return mRegistrationCallback; }).when(mImsManager).addRegistrationCallback(any(ImsRegistrationImplBase.Callback.class)); doAnswer(invocation -> { mCapabilityCallback = (ImsFeature.CapabilityCallback) invocation.getArguments()[0]; return mCapabilityCallback; Loading @@ -233,6 +239,72 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { super.tearDown(); } @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)); } @Test @SmallTest public void testVowifiDisabledOnLte() { // LTE is registered. doReturn(ImsRegistrationImplBase.REGISTRATION_TECH_LTE).when( mImsManager).getRegistrationTech(); assertFalse(mCTUT.isVowifiEnabled()); // enable Voice over LTE ImsFeature.Capabilities caps = new ImsFeature.Capabilities(); caps.addCapabilities(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE); mCapabilityCallback.onCapabilitiesStatusChanged(caps); waitForHandlerAction(mCTHander, 1000); // Voice over IWLAN is still disabled assertFalse(mCTUT.isVowifiEnabled()); } @Test @SmallTest public void testVowifiDisabledOnIwlan() { // LTE is registered. doReturn(ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN).when( mImsManager).getRegistrationTech(); assertFalse(mCTUT.isVowifiEnabled()); // enable Voice over IWLAN ImsFeature.Capabilities caps = new ImsFeature.Capabilities(); caps.addCapabilities(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE); mCapabilityCallback.onCapabilitiesStatusChanged(caps); waitForHandlerAction(mCTHander, 1000); // Voice over IWLAN is enabled assertTrue(mCTUT.isVowifiEnabled()); } @Test @SmallTest public void testImsFeatureCapabilityChange() { Loading Loading
src/java/com/android/internal/telephony/Phone.java +15 −0 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import android.telephony.SignalStrength; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.VoLteServiceState; import android.telephony.ims.stub.ImsRegistrationImplBase; import android.text.TextUtils; import com.android.ims.ImsCall; Loading Loading @@ -3195,6 +3196,20 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { return isVolteEnabled; } /** * @return the IMS MmTel Registration technology for this Phone, defined in * {@link ImsRegistrationImplBase}. */ public int getImsRegistrationTech() { Phone imsPhone = mImsPhone; int regTech = ImsRegistrationImplBase.REGISTRATION_TECH_NONE; if (imsPhone != null) { regTech = imsPhone.getImsRegistrationTech(); } Rlog.d(LOG_TAG, "getImsRegistrationTechnology =" + regTech); return regTech; } private boolean getRoamingOverrideHelper(String prefix, String key) { String iccId = getIccSerialNumber(); if (TextUtils.isEmpty(iccId) || TextUtils.isEmpty(key)) { Loading
src/java/com/android/internal/telephony/imsphone/ImsPhone.java +9 −4 Original line number Diff line number Diff line Loading @@ -67,16 +67,16 @@ import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.UssdResponse; import android.text.TextUtils; import android.telephony.ims.ImsCallForwardInfo; import android.telephony.ims.ImsCallProfile; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.ImsSsInfo; import android.text.TextUtils; import com.android.ims.ImsEcbm; import com.android.ims.ImsEcbmStateListener; import com.android.ims.ImsException; import com.android.ims.ImsManager; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.ImsSsInfo; import com.android.ims.ImsUtInterface; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.Call; Loading Loading @@ -1563,6 +1563,11 @@ public class ImsPhone extends ImsPhoneBase { return mCT.isVideoCallEnabled(); } @Override public int getImsRegistrationTech() { return mCT.getImsRegistrationTech(); } @Override public Phone getDefaultPhone() { return mDefaultPhone; Loading
src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java +4 −4 Original line number Diff line number Diff line Loading @@ -52,6 +52,9 @@ import android.telephony.Rlog; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.ims.ImsCallProfile; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.ImsSuppServiceNotification; import android.telephony.ims.feature.ImsFeature; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsConfigImplBase; Loading @@ -63,15 +66,12 @@ import android.util.Pair; import android.util.SparseIntArray; import com.android.ims.ImsCall; import android.telephony.ims.ImsCallProfile; import com.android.ims.ImsConfig; import com.android.ims.ImsConfigListener; import com.android.ims.ImsEcbm; import com.android.ims.ImsException; import com.android.ims.ImsManager; import com.android.ims.ImsMultiEndpoint; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.ImsSuppServiceNotification; import com.android.ims.ImsUtInterface; import com.android.ims.MmTelFeatureConnection; import com.android.ims.internal.IImsCallSession; Loading Loading @@ -3314,7 +3314,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { return mState; } private int getImsRegistrationTech() { public int getImsRegistrationTech() { if (mImsManager != null) { return mImsManager.getRegistrationTech(); } Loading
tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneCallTrackerTest.java +76 −4 Original line number Diff line number Diff line Loading @@ -49,19 +49,19 @@ import android.telephony.DisconnectCause; import android.telephony.PhoneNumberUtils; import android.telephony.ServiceState; import android.telephony.TelephonyManager; import android.telephony.ims.ImsCallProfile; import android.telephony.ims.ImsCallSession; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.ImsStreamMediaProfile; import android.telephony.ims.feature.ImsFeature; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; import android.test.suitebuilder.annotation.SmallTest; import com.android.ims.ImsCall; import android.telephony.ims.ImsCallProfile; import com.android.ims.ImsConfig; import com.android.ims.ImsException; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.ImsStreamMediaProfile; import com.android.ims.internal.IImsCallSession; import android.telephony.ims.ImsCallSession; import com.android.internal.telephony.Call; import com.android.internal.telephony.CallStateException; import com.android.internal.telephony.CommandsInterface; Loading @@ -83,6 +83,7 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { private ImsPhoneCallTracker mCTUT; private ImsCTHandlerThread mImsCTHandlerThread; private MmTelFeature.Listener mMmTelListener; private ImsRegistrationImplBase.Callback mRegistrationCallback; private ImsFeature.CapabilityCallback mCapabilityCallback; private ImsCall.Listener mImsCallListener; private ImsCall mImsCall; Loading Loading @@ -209,6 +210,11 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { }).when(mImsManager).makeCall(eq(mImsCallProfile), (String []) any(), (ImsCall.Listener) any()); doAnswer(invocation -> { mRegistrationCallback = invocation.getArgument(0); return mRegistrationCallback; }).when(mImsManager).addRegistrationCallback(any(ImsRegistrationImplBase.Callback.class)); doAnswer(invocation -> { mCapabilityCallback = (ImsFeature.CapabilityCallback) invocation.getArguments()[0]; return mCapabilityCallback; Loading @@ -233,6 +239,72 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { super.tearDown(); } @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)); } @Test @SmallTest public void testVowifiDisabledOnLte() { // LTE is registered. doReturn(ImsRegistrationImplBase.REGISTRATION_TECH_LTE).when( mImsManager).getRegistrationTech(); assertFalse(mCTUT.isVowifiEnabled()); // enable Voice over LTE ImsFeature.Capabilities caps = new ImsFeature.Capabilities(); caps.addCapabilities(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE); mCapabilityCallback.onCapabilitiesStatusChanged(caps); waitForHandlerAction(mCTHander, 1000); // Voice over IWLAN is still disabled assertFalse(mCTUT.isVowifiEnabled()); } @Test @SmallTest public void testVowifiDisabledOnIwlan() { // LTE is registered. doReturn(ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN).when( mImsManager).getRegistrationTech(); assertFalse(mCTUT.isVowifiEnabled()); // enable Voice over IWLAN ImsFeature.Capabilities caps = new ImsFeature.Capabilities(); caps.addCapabilities(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE); mCapabilityCallback.onCapabilitiesStatusChanged(caps); waitForHandlerAction(mCTHander, 1000); // Voice over IWLAN is enabled assertTrue(mCTUT.isVowifiEnabled()); } @Test @SmallTest public void testImsFeatureCapabilityChange() { Loading