Merge "Update IMS carrier configs"
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java
index ab039df..105ff1d 100644
--- a/src/java/com/android/ims/ImsManager.java
+++ b/src/java/com/android/ims/ImsManager.java
@@ -1440,6 +1440,12 @@
 
         if (!mConfigUpdated || force) {
             try {
+                PersistableBundle imsCarrierConfigs =
+                        mConfigManager.getConfigByComponentForSubId(
+                                CarrierConfigManager.Ims.KEY_PREFIX, getSubId());
+
+                updateImsCarrierConfigs(imsCarrierConfigs);
+
                 // Note: currently the order of updates is set to produce different order of
                 // changeEnabledCapabilities() function calls from setAdvanced4GMode(). This is done
                 // to differentiate this code path from vendor code perspective.
@@ -2813,4 +2819,20 @@
         return SubscriptionManager.isValidSubscriptionId(subId) &&
                 subId != SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
     }
+
+    private void updateImsCarrierConfigs(PersistableBundle configs) throws ImsException {
+        checkAndThrowExceptionIfServiceUnavailable();
+
+        IImsConfig config = mMmTelFeatureConnection.getConfigInterface();
+        if (config == null) {
+            throw new ImsException("getConfigInterface()",
+                    ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE);
+        }
+        try {
+            config.updateImsCarrierConfigs(configs);
+        } catch (RemoteException e) {
+            throw new ImsException("updateImsCarrierConfigs()", e,
+                    ImsReasonInfo.CODE_LOCAL_IMS_SERVICE_DOWN);
+        }
+    }
 }