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;