diff options
author | Meng Wang <mewan@google.com> | 2016-06-08 14:22:20 -0700 |
---|---|---|
committer | Meng Wang <mewan@google.com> | 2016-06-08 16:34:35 -0700 |
commit | 9352c43df0c21f27fd29ee46770ca058c13d5e2f (patch) | |
tree | e138c1637a2eb06e9908cb88627671cd51d833b8 | |
parent | d46779cbd1657b9a9ededec35f008f7bfa6b5511 (diff) | |
download | ims-9352c43df0c21f27fd29ee46770ca058c13d5e2f.tar.gz |
Enable ims test mode on verizon
Added a new property 'persist.dbg.allow_ims_off'. When it's set,
CarrierConfig KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL is ignored.
Hence ims can be turned off.
Bug: 28861107
Change-Id: Ieed8f782b6e222131e64ee8755a48acc1100e520
-rw-r--r-- | src/java/com/android/ims/ImsManager.java | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java index 5f05ac7c..4774c72d 100644 --- a/src/java/com/android/ims/ImsManager.java +++ b/src/java/com/android/ims/ImsManager.java @@ -66,6 +66,8 @@ public class ImsManager { public static final int PROPERTY_DBG_VT_AVAIL_OVERRIDE_DEFAULT = 0; public static final String PROPERTY_DBG_WFC_AVAIL_OVERRIDE = "persist.dbg.wfc_avail_ovr"; public static final int PROPERTY_DBG_WFC_AVAIL_OVERRIDE_DEFAULT = 0; + public static final String PROPERTY_DBG_ALLOW_IMS_OFF_OVERRIDE = "persist.dbg.allow_ims_off"; + public static final int PROPERTY_DBG_ALLOW_IMS_OFF_OVERRIDE_DEFAULT = 0; /** * For accessing the IMS related service. @@ -342,8 +344,7 @@ public class ImsManager { if (enabled) { imsManager.turnOnIms(); - } else if (getBooleanCarrierConfig(context, - CarrierConfigManager.KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL) + } else if (isTurnOffImsAllowedByPlatform(context) && (!isVolteEnabledByPlatform(context) || !isEnhanced4gLteModeSettingEnabledByUser(context))) { log("setVtSetting() : imsServiceAllowTurnOff -> turnOffIms"); @@ -355,6 +356,19 @@ public class ImsManager { } } + /* + * Returns whether turning off ims is allowed by platform. + * The platform property may override the carrier config. + */ + private static boolean isTurnOffImsAllowedByPlatform(Context context) { + if (SystemProperties.getInt(PROPERTY_DBG_ALLOW_IMS_OFF_OVERRIDE, + PROPERTY_DBG_ALLOW_IMS_OFF_OVERRIDE_DEFAULT) == 1) { + return true; + } + return getBooleanCarrierConfig(context, + CarrierConfigManager.KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL); + } + /** * Returns the user configuration of WFC setting */ @@ -388,8 +402,7 @@ public class ImsManager { if (enabled) { imsManager.turnOnIms(); - } else if (getBooleanCarrierConfig(context, - CarrierConfigManager.KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL) + } else if (isTurnOffImsAllowedByPlatform(context) && (!isVolteEnabledByPlatform(context) || !isEnhanced4gLteModeSettingEnabledByUser(context))) { log("setWfcSetting() : imsServiceAllowTurnOff -> turnOffIms"); @@ -564,8 +577,7 @@ public class ImsManager { isImsUsed |= imsManager.updateWfcFeatureAndProvisionedValues(); isImsUsed |= imsManager.updateVideoCallFeatureValue(); - if (isImsUsed || !getBooleanCarrierConfig(context, - CarrierConfigManager.KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL)) { + if (isImsUsed || !isTurnOffImsAllowedByPlatform(context)) { // Turn on IMS if it is used. // Also, if turning off is not allowed for current carrier, // we need to turn IMS on because it might be turned off before @@ -1214,8 +1226,7 @@ public class ImsManager { } private boolean isImsTurnOffAllowed() { - return getBooleanCarrierConfig(mContext, - CarrierConfigManager.KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL) + return isTurnOffImsAllowedByPlatform(mContext) && (!isWfcEnabledByPlatform(mContext) || !isWfcEnabledByUser(mContext)); } |