ImsManager: WFC provision state may depends on VoLTE
Some carrier demands that when VoLTE is not proviosned, treat WFC
as not provisioned.
Bug: 32875701
Test: make
Change-Id: I62e37056e4f9514b513037984e6b81fff86a6487
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java
index 049157f..3f2d041 100644
--- a/src/java/com/android/ims/ImsManager.java
+++ b/src/java/com/android/ims/ImsManager.java
@@ -431,13 +431,23 @@
}
/**
- * Indicates whether VoWifi is provisioned on device
+ * Indicates whether VoWifi is provisioned on device.
+ *
+ * When CarrierConfig KEY_CARRIER_VOLTE_OVERRIDE_WFC_PROVISIONING_BOOL is true, and VoLTE is not
+ * provisioned on device, this method returns false.
*
* @deprecated Does not support MSIM devices. Please use
* {@link #isWfcProvisionedOnDeviceForSlot()} instead.
*/
public static boolean isWfcProvisionedOnDevice(Context context) {
if (getBooleanCarrierConfig(context,
+ CarrierConfigManager.KEY_CARRIER_VOLTE_OVERRIDE_WFC_PROVISIONING_BOOL)) {
+ if (!isVolteProvisionedOnDevice(context)) {
+ return false;
+ }
+ }
+
+ if (getBooleanCarrierConfig(context,
CarrierConfigManager.KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL)) {
ImsManager mgr = ImsManager.getInstance(context,
SubscriptionManager.getDefaultVoicePhoneId());
@@ -451,11 +461,21 @@
/**
* Indicates whether VoWifi is provisioned on slot.
+ *
+ * When CarrierConfig KEY_CARRIER_VOLTE_OVERRIDE_WFC_PROVISIONING_BOOL is true, and VoLTE is not
+ * provisioned on device, this method returns false.
*/
public boolean isWfcProvisionedOnDeviceForSlot() {
if (getBooleanCarrierConfigForSlot(
+ CarrierConfigManager.KEY_CARRIER_VOLTE_OVERRIDE_WFC_PROVISIONING_BOOL)) {
+ if (!isVolteProvisionedOnDeviceForSlot()) {
+ return false;
+ }
+ }
+
+ if (getBooleanCarrierConfigForSlot(
CarrierConfigManager.KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL)) {
- return isWfcProvisioned();
+ return isWfcProvisioned();
}
return true;