Adds testing framework to com.android.ims am: 3eb99bdaaa am: d4af2331b8
am: f2818debe7
Change-Id: I9c264ff259046f0b041eaad9619b13dd12402fc5
diff --git a/src/java/com/android/ims/ImsConnectionStateListener.java b/src/java/com/android/ims/ImsConnectionStateListener.java
index 1158375..f281df1 100644
--- a/src/java/com/android/ims/ImsConnectionStateListener.java
+++ b/src/java/com/android/ims/ImsConnectionStateListener.java
@@ -34,6 +34,13 @@
}
/**
+ * Called when the device is connected to the IMS network with {@param imsRadioTech}.
+ */
+ public void onImsConnected(int imsRadioTech) {
+ // no-op
+ }
+
+ /**
* Called when the device is trying to connect to the IMS network.
*/
public void onImsProgressing() {
@@ -83,4 +90,11 @@
public void registrationAssociatedUriChanged(Uri[] uris) {
// no-op
}
+
+ /**
+ * Called when IMS registration attempt on {@param imsRadioTech} failed
+ */
+ public void onRegistrationChangeFailed(int imsRadioTech, ImsReasonInfo imsReasonInfo) {
+ // no-op
+ }
}
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java
index 6d8cef6..8706f9b 100644
--- a/src/java/com/android/ims/ImsManager.java
+++ b/src/java/com/android/ims/ImsManager.java
@@ -445,9 +445,12 @@
imsManager.turnOffIms();
}
- // Force IMS to register over LTE when turning off WFC
+ TelephonyManager tm = (TelephonyManager) context
+ .getSystemService(Context.TELEPHONY_SERVICE);
setWfcModeInternal(context, enabled
- ? getWfcMode(context)
+ // Choose wfc mode per current roaming preference
+ ? getWfcMode(context, tm.isNetworkRoaming())
+ // Force IMS to register over LTE when turning off WFC
: ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED);
} catch (ImsException e) {
loge("setWfcSetting(): ", e);
@@ -795,8 +798,11 @@
boolean enabled = isVtEnabledByUser(mContext);
boolean isNonTty = isNonTtyOrTtyOnVolteEnabled(mContext);
boolean isDataEnabled = isDataEnabled();
+ boolean ignoreDataEnabledChanged = getBooleanCarrierConfig(mContext,
+ CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS);
- boolean isFeatureOn = available && enabled && isNonTty && isDataEnabled;
+ boolean isFeatureOn = available && enabled && isNonTty
+ && (ignoreDataEnabledChanged || isDataEnabled);
log("updateVideoCallFeatureValue: available = " + available
+ ", enabled = " + enabled
@@ -1406,8 +1412,10 @@
TelephonyManager.NETWORK_TYPE_LTE, turnOn ? 1 : 0, mImsConfigListener);
if (isVtEnabledByPlatform(mContext)) {
+ boolean ignoreDataEnabledChanged = getBooleanCarrierConfig(mContext,
+ CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS);
boolean enableViLte = turnOn && isVtEnabledByUser(mContext) &&
- isDataEnabled();
+ (ignoreDataEnabledChanged || isDataEnabled());
config.setFeatureValue(ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_LTE,
TelephonyManager.NETWORK_TYPE_LTE,
enableViLte ? 1 : 0,
@@ -1475,7 +1483,7 @@
/**
* Adapter class for {@link IImsRegistrationListener}.
*/
- private class ImsRegistrationListenerProxy extends IImsRegistrationListener.Stub {
+ private static class ImsRegistrationListenerProxy extends IImsRegistrationListener.Stub {
private int mServiceClass;
private ImsConnectionStateListener mListener;
@@ -1521,6 +1529,7 @@
if (mListener != null) {
mListener.onImsConnected();
+ mListener.onImsConnected(imsRadioTech);
}
}
@@ -1608,6 +1617,16 @@
mListener.registrationAssociatedUriChanged(uris);
}
}
+
+ @Override
+ public void registrationChangeFailed(int targetAccessTech, ImsReasonInfo imsReasonInfo) {
+ if (DBG) log("registrationChangeFailed :: targetAccessTech=" + targetAccessTech +
+ ", imsReasonInfo=" + imsReasonInfo);
+
+ if (mListener != null) {
+ mListener.onRegistrationChangeFailed(targetAccessTech, imsReasonInfo);
+ }
+ }
}
/**
@@ -1749,6 +1768,8 @@
pw.println(" mConfigUpdated = " + mConfigUpdated);
pw.println(" mImsService = " + mImsService);
pw.println(" mDataEnabled = " + isDataEnabled());
+ pw.println(" ignoreDataEnabledChanged = " + getBooleanCarrierConfig(mContext,
+ CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS));
pw.println(" isGbaValid = " + isGbaValid(mContext));
pw.println(" isImsTurnOffAllowed = " + isImsTurnOffAllowed());