ImsProvisioningController returns provisioned when provisoning has not completed
Add code that access deprecated carrier config key when new define key
is not exist. This functionality comes from ImsManager
Bug: 230794289
Test: atest ImsProvisioningControllerTest, ImsServiceTest
Test: manual with TMO, ATT SIM
1. add carrier config carrier_volte_provisioning_required_bool as true
2. device reboot
3. check IMS registration and imsprovisioningstatus_X.xml file is created by ImsProvisioningLoader
Change-Id: Ifbcecf259f5dd1ecdf01b7ae76161f1a38566474
diff --git a/src/com/android/phone/ImsProvisioningController.java b/src/com/android/phone/ImsProvisioningController.java
index 54fc547..7a6c3e0 100644
--- a/src/com/android/phone/ImsProvisioningController.java
+++ b/src/com/android/phone/ImsProvisioningController.java
@@ -889,8 +889,27 @@
throw new IllegalArgumentException("Registration technology '" + tech + "' is invalid");
}
+ // check new carrier config first KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE
boolean retVal = isProvisioningRequired(subId, capability, tech, /*isMmTel*/true);
+ // if that returns false, check deprecated carrier config
+ // KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL, KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL
+ if (!retVal && (capability == CAPABILITY_TYPE_VOICE
+ || capability == CAPABILITY_TYPE_VIDEO
+ || capability == CAPABILITY_TYPE_UT)) {
+ String key = CarrierConfigManager.KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL;
+ if (capability == CAPABILITY_TYPE_UT) {
+ key = CarrierConfigManager.KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL;
+ }
+
+ PersistableBundle imsCarrierConfigs = mCarrierConfigManager.getConfigForSubId(subId);
+ if (imsCarrierConfigs != null) {
+ retVal = imsCarrierConfigs.getBoolean(key);
+ } else {
+ retVal = CarrierConfigManager.getDefaultConfig().getBoolean(key);
+ }
+ }
+
log("isImsProvisioningRequiredForCapability capability " + capability
+ " tech " + tech + " return value " + retVal);
@@ -920,8 +939,22 @@
throw new IllegalArgumentException("Registration technology '" + tech + "' is invalid");
}
+ // check new carrier config first KEY_RCS_REQUIRES_PROVISIONING_BUNDLE
boolean retVal = isProvisioningRequired(subId, capability, tech, /*isMmTel*/false);
+ // if that returns false, check deprecated carrier config
+ // KEY_CARRIER_RCS_PROVISIONING_REQUIRED_BOOL
+ if (!retVal) {
+ PersistableBundle imsCarrierConfigs = mCarrierConfigManager.getConfigForSubId(subId);
+ if (imsCarrierConfigs != null) {
+ retVal = imsCarrierConfigs.getBoolean(
+ CarrierConfigManager.KEY_CARRIER_RCS_PROVISIONING_REQUIRED_BOOL);
+ } else {
+ retVal = CarrierConfigManager.getDefaultConfig().getBoolean(
+ CarrierConfigManager.KEY_CARRIER_RCS_PROVISIONING_REQUIRED_BOOL);
+ }
+ }
+
log("isRcsProvisioningRequiredForCapability capability " + capability
+ " tech " + tech + " return value " + retVal);
@@ -1212,8 +1245,7 @@
return false;
}
- @VisibleForTesting
- protected int[] getTechsFromCarrierConfig(int subId, int capability, boolean isMmTel) {
+ private int[] getTechsFromCarrierConfig(int subId, int capability, boolean isMmTel) {
String featureKey;
String capabilityKey;
if (isMmTel) {