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) {
diff --git a/tests/src/com/android/phone/ImsProvisioningControllerTest.java b/tests/src/com/android/phone/ImsProvisioningControllerTest.java
index 6494df4..49ce6b5 100644
--- a/tests/src/com/android/phone/ImsProvisioningControllerTest.java
+++ b/tests/src/com/android/phone/ImsProvisioningControllerTest.java
@@ -16,7 +16,6 @@
package com.android.phone;
-import static android.telephony.ims.ImsRcsManager.CAPABILITY_TYPE_OPTIONS_UCE;
import static android.telephony.ims.ImsRcsManager.CAPABILITY_TYPE_PRESENCE_UCE;
import static android.telephony.ims.ProvisioningManager.KEY_EAB_PROVISIONING_STATUS;
import static android.telephony.ims.ProvisioningManager.KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE;
@@ -70,7 +69,6 @@
import android.test.suitebuilder.annotation.SmallTest;
import android.testing.TestableLooper;
import android.util.Log;
-import android.util.SparseArray;
import com.android.ims.FeatureConnector;
import com.android.ims.ImsConfig;
@@ -178,9 +176,6 @@
int mSubId0 = 1234;
int mSubId1 = 5678;
- SparseArray<int[]> mMmTelTechMap = new SparseArray<>();
- SparseArray<int[]> mRcsTechMap = new SparseArray<>();
-
int[][] mMmTelProvisioningStorage;
int[][] mRcsProvisioningStorage;
int[][] mImsConfigStorage;
@@ -210,14 +205,6 @@
return mImsConfig;
}
- protected int[] getTechsFromCarrierConfig(int subId, int capability, boolean isMmtel) {
- if (isMmtel) {
- return mMmTelTechMap.get(capability);
- } else {
- return mRcsTechMap.get(capability);
- }
- }
-
protected boolean isValidSubId(int subId) {
return mIsValidSubId;
}
@@ -328,6 +315,14 @@
public void connectionReady_MmTelFeatureListener() throws Exception {
createImsProvisioningController();
+ // provisioning required capability
+ // voice, all tech
+ // video, all tech
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY,
+ RADIO_TECHS);
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY,
+ RADIO_TECHS);
+
try {
mTestImsProvisioningController.addFeatureProvisioningChangedCallback(
mSubId0, mIFeatureProvisioningCallback0);
@@ -376,6 +371,10 @@
public void connectionReady_RcsFeatureListener() throws Exception {
createImsProvisioningController();
+ // provisioning required capability : PRESENCE, tech : all
+ setCarrierConfig(mSubId0,
+ CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY, RADIO_TECHS);
+
try {
mTestImsProvisioningController.addFeatureProvisioningChangedCallback(
mSubId0, mIFeatureProvisioningCallback0);
@@ -440,22 +439,24 @@
// voice, all tech
// video, all tech
// UT, all tech
- mMmTelTechMap.clear();
- mMmTelTechMap.put(CAPABILITY_TYPE_VOICE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
- mMmTelTechMap.put(CAPABILITY_TYPE_VIDEO,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
- mMmTelTechMap.put(CAPABILITY_TYPE_UT,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY,
+ RADIO_TECHS);
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY,
+ RADIO_TECHS);
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_UT_INT_ARRAY,
+ RADIO_TECHS);
+ // provisioning required for each capability
boolean[][] expectedRequired = new boolean[][] {
+ //voice - LTE, WLAN, CROSS-SIM, NR
{true, true, true, true},
+ //video - LTE, WLAN, CROSS-SIM, NR
{true, true, true, true},
+ //UT - LTE, WLAN, CROSS-SIM, NR
{true, true, true, true},
+ //SMS not required
{false, false, false, false},
+ //Call composer not required
{false, false, false, false}
};
@@ -472,6 +473,45 @@
@Test
@SmallTest
+ public void isImsProvisioningRequiredForCapability_withDeprecatedKey() throws Exception {
+ createImsProvisioningController();
+
+ // provisioning required capability
+ // KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE is not defined
+ // but KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL and
+ // KEY_CARRIER_SUPPORTS_SS_OVER_UT_BOOL are defined
+ setDeprecatedCarrierConfig(
+ CarrierConfigManager.KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL, true);
+ setDeprecatedCarrierConfig(
+ CarrierConfigManager.KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL, true);
+
+ // provisioning required for each capability
+ boolean[][] expectedRequired = new boolean[][] {
+ //voice - LTE, WLAN, CROSS-SIM, NR
+ {true, true, true, true},
+ //video - LTE, WLAN, CROSS-SIM, NR
+ {true, true, true, true},
+ //UT - LTE, WLAN, CROSS-SIM, NR
+ {true, true, true, true},
+ //SMS not required
+ {false, false, false, false},
+ //Call composer not required
+ {false, false, false, false}
+ };
+
+ boolean isRequired;
+ for (int i = 0; i < MMTEL_CAPAS.length; i++) {
+ for (int j = 0; j < RADIO_TECHS.length; j++) {
+ isRequired = mTestImsProvisioningController
+ .isImsProvisioningRequiredForCapability(
+ mSubId0, MMTEL_CAPAS[i], RADIO_TECHS[j]);
+ assertEquals(expectedRequired[i][j], isRequired);
+ }
+ }
+ }
+
+ @Test
+ @SmallTest
public void isRcsProvisioningRequiredForCapability_withInvalidCapabilityTech()
throws Exception {
createImsProvisioningController();
@@ -503,12 +543,13 @@
createImsProvisioningController();
// provisioning required capability : PRESENCE, tech : all
- mRcsTechMap.clear();
- mRcsTechMap.put(CAPABILITY_TYPE_PRESENCE_UCE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ setCarrierConfig(mSubId0,
+ CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY, RADIO_TECHS);
- boolean[] expectedRequired = new boolean[] {true, true, true, true};
+ // PRESENCE provisioning required on
+ boolean[] expectedRequired = new boolean[]
+ //LTE, WLAN, CROSS-SIM, NR
+ {true, true, true, true};
boolean isRequired;
for (int i = 0; i < RADIO_TECHS.length; i++) {
@@ -521,6 +562,31 @@
@Test
@SmallTest
+ public void isRcsProvisioningRequiredForCapability_withDeprecatedKey() throws Exception {
+ createImsProvisioningController();
+
+ // provisioning required capability
+ // KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE is not defined
+ // but KEY_CARRIER_RCS_PROVISIONING_REQUIRED_BOOL is defined
+ setDeprecatedCarrierConfig(
+ CarrierConfigManager.KEY_CARRIER_RCS_PROVISIONING_REQUIRED_BOOL, true);
+
+ // PRESENCE provisioning required on
+ boolean[] expectedRequired = new boolean[]
+ //LTE, WLAN, CROSS-SIM, NR
+ {true, true, true, true};
+
+ boolean isRequired;
+ for (int i = 0; i < RADIO_TECHS.length; i++) {
+ isRequired = mTestImsProvisioningController
+ .isRcsProvisioningRequiredForCapability(
+ mSubId0, CAPABILITY_TYPE_PRESENCE_UCE, RADIO_TECHS[i]);
+ assertEquals(expectedRequired[i], isRequired);
+ }
+ }
+
+ @Test
+ @SmallTest
public void getImsProvisioningRequiredForCapability_withVoiceVideoUt() throws Exception {
createImsProvisioningController();
@@ -528,16 +594,12 @@
// voice, all tech
// video, all tech
// UT, all tech
- mMmTelTechMap.clear();
- mMmTelTechMap.put(CAPABILITY_TYPE_VOICE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
- mMmTelTechMap.put(CAPABILITY_TYPE_VIDEO,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
- mMmTelTechMap.put(CAPABILITY_TYPE_UT,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY,
+ RADIO_TECHS);
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY,
+ RADIO_TECHS);
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_UT_INT_ARRAY,
+ RADIO_TECHS);
// provisioning Status
mMmTelProvisioningStorage = new int[][] {
@@ -622,11 +684,10 @@
// provisioning required capability
// voice, LTE, IWLAN
// video, LTE
- mMmTelTechMap.clear();
- mMmTelTechMap.put(CAPABILITY_TYPE_VOICE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN});
- mMmTelTechMap.put(CAPABILITY_TYPE_VIDEO,
- new int[] {REGISTRATION_TECH_LTE});
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY,
+ REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN);
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY,
+ REGISTRATION_TECH_LTE);
// provisioning StatusP, all of provisioning status is not provisioned
mMmTelProvisioningStorage = new int[][]{
@@ -697,10 +758,8 @@
// provisioning required capability
// PRESENCE, all tech
- mRcsTechMap.clear();
- mRcsTechMap.put(CAPABILITY_TYPE_PRESENCE_UCE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ setCarrierConfig(mSubId0,
+ CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY, RADIO_TECHS);
// provisioning Status
mRcsProvisioningStorage = new int[][] {
@@ -743,9 +802,9 @@
// provisioning required capability
// PRESENCE, LTE, IWLAN
- mRcsTechMap.clear();
- mRcsTechMap.put(CAPABILITY_TYPE_PRESENCE_UCE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN});
+ setCarrierConfig(mSubId0,
+ CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY,
+ REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN);
// provisioning Status, all of provisioning status is not provisioned
mRcsProvisioningStorage = new int[][]{
@@ -805,10 +864,8 @@
// provisioning required capability
// voice, all tech
- mMmTelTechMap.clear();
- mMmTelTechMap.put(CAPABILITY_TYPE_VOICE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY,
+ RADIO_TECHS);
// provisioning Status, all of provisioning status is not provisioned
mMmTelProvisioningStorage = new int[][] {
@@ -886,10 +943,8 @@
// provisioning required capability
// video, all tech
- mMmTelTechMap.clear();
- mMmTelTechMap.put(CAPABILITY_TYPE_VIDEO,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY,
+ RADIO_TECHS);
// provisioning Status, all of provisioning status is not provisioned
mMmTelProvisioningStorage = new int[][] {
@@ -965,10 +1020,8 @@
// provisioning required capability
// PRESENCE, all tech
- mRcsTechMap.clear();
- mRcsTechMap.put(CAPABILITY_TYPE_PRESENCE_UCE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ setCarrierConfig(mSubId0,
+ CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY, RADIO_TECHS);
// provisioning Status, all of provisioning status is not provisioned
mRcsProvisioningStorage = new int[][] {
@@ -1060,13 +1113,10 @@
// provisioning required capability
// voice, all tech
// video, all tech
- mMmTelTechMap.clear();
- mMmTelTechMap.put(CAPABILITY_TYPE_VOICE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
- mMmTelTechMap.put(CAPABILITY_TYPE_VIDEO,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY,
+ RADIO_TECHS);
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY,
+ RADIO_TECHS);
// provisioning Status, all of provisioning status is not set
mMmTelProvisioningStorage = new int[][] {
@@ -1144,10 +1194,8 @@
// provisioning required capability
// presence, all tech
- mRcsTechMap.clear();
- mRcsTechMap.put(CAPABILITY_TYPE_PRESENCE_UCE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ setCarrierConfig(mSubId0,
+ CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY, RADIO_TECHS);
// provisioning Status, all of provisioning status is not set
mRcsProvisioningStorage = new int[][]{
@@ -1246,11 +1294,10 @@
// provisioning required capability
// voice, LTE, IWLAN
// video, LTE
- mMmTelTechMap.clear();
- mMmTelTechMap.put(CAPABILITY_TYPE_VOICE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN});
- mMmTelTechMap.put(CAPABILITY_TYPE_VIDEO,
- new int[] {REGISTRATION_TECH_LTE});
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY,
+ REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN);
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY,
+ REGISTRATION_TECH_LTE);
// provisioning Status, all of provisioning status is not set
mMmTelProvisioningStorage = new int[][] {
@@ -1261,10 +1308,8 @@
// provisioning required capability
// presence, all tech
- mRcsTechMap.clear();
- mRcsTechMap.put(CAPABILITY_TYPE_PRESENCE_UCE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ setCarrierConfig(mSubId0,
+ CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY, RADIO_TECHS);
// provisioning Status, all of provisioning status is not set
mRcsProvisioningStorage = new int[][]{
@@ -1346,11 +1391,10 @@
// provisioning required capability
// voice, LTE, IWLAN
// video, LTE
- mMmTelTechMap.clear();
- mMmTelTechMap.put(CAPABILITY_TYPE_VOICE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN});
- mMmTelTechMap.put(CAPABILITY_TYPE_VIDEO,
- new int[] {REGISTRATION_TECH_LTE});
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY,
+ REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN);
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY,
+ REGISTRATION_TECH_LTE);
// provisioning Status, all of provisioning status is not set
mMmTelProvisioningStorage = new int[][] {
@@ -1361,10 +1405,8 @@
// provisioning required capability
// presence, all tech
- mRcsTechMap.clear();
- mRcsTechMap.put(CAPABILITY_TYPE_PRESENCE_UCE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ setCarrierConfig(mSubId0,
+ CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY, RADIO_TECHS);
// provisioning Status, all of provisioning status is not set
mRcsProvisioningStorage = new int[][]{
@@ -1458,6 +1500,14 @@
public void onMultiSimConfigChanged() throws Exception {
createImsProvisioningController();
+ // provisioning required capability
+ // voice, all tech
+ // video, all tech
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY,
+ RADIO_TECHS);
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY,
+ RADIO_TECHS);
+
// change number of slot 2 -> 1
mHandler.sendMessage(mHandler.obtainMessage(
mTestImsProvisioningController.EVENT_MULTI_SIM_CONFIGURATION_CHANGE,
@@ -1517,6 +1567,11 @@
clearInvocations(mIFeatureProvisioningCallback0);
clearInvocations(mIFeatureProvisioningCallback1);
+ // provisioning required capability
+ // voice, all tech
+ setCarrierConfig(mSubId1, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY,
+ RADIO_TECHS);
+
// check get,setImsProvisioningRequiredForCapability with mSubId1, mPhoneId1 : Ok
int capability = CAPABILITY_TYPE_VOICE;
int tech = REGISTRATION_TECH_LTE;
@@ -1629,22 +1684,22 @@
}
private void initializeDefaultData() throws Exception {
- mMmTelTechMap.clear();
- mMmTelTechMap.put(CAPABILITY_TYPE_VOICE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
- mMmTelTechMap.put(CAPABILITY_TYPE_VIDEO,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
- mMmTelTechMap.put(CAPABILITY_TYPE_UT,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
- mMmTelTechMap.put(CAPABILITY_TYPE_SMS,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
- mMmTelTechMap.put(CAPABILITY_TYPE_CALL_COMPOSER,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
+ mPersistableBundle0.clear();
+ mPersistableBundle0.putPersistableBundle(
+ CarrierConfigManager.Ims.KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE,
+ new PersistableBundle());
+ mPersistableBundle0.putPersistableBundle(
+ CarrierConfigManager.Ims.KEY_RCS_REQUIRES_PROVISIONING_BUNDLE,
+ new PersistableBundle());
+
+ mPersistableBundle1.clear();
+ mPersistableBundle1.putPersistableBundle(
+ CarrierConfigManager.Ims.KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE,
+ new PersistableBundle());
+ mPersistableBundle1.putPersistableBundle(
+ CarrierConfigManager.Ims.KEY_RCS_REQUIRES_PROVISIONING_BUNDLE,
+ new PersistableBundle());
+
mMmTelProvisioningStorage = new int[][]{
{CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_LTE, 1},
{CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_IWLAN, 1},
@@ -1668,13 +1723,6 @@
{CAPABILITY_TYPE_CALL_COMPOSER, REGISTRATION_TECH_NR, 1}
};
- mRcsTechMap.clear();
- mRcsTechMap.put(CAPABILITY_TYPE_OPTIONS_UCE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
- mRcsTechMap.put(CAPABILITY_TYPE_PRESENCE_UCE,
- new int[] {REGISTRATION_TECH_LTE, REGISTRATION_TECH_IWLAN,
- REGISTRATION_TECH_CROSS_SIM, REGISTRATION_TECH_NR});
mRcsProvisioningStorage = new int[][]{
{CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_LTE, 1},
{CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_IWLAN, 1},
@@ -1690,6 +1738,29 @@
};
}
+ private void setCarrierConfig(int subId, String capabilityKey, int... techs) {
+ PersistableBundle imsCarrierConfig = mPersistableBundle0;
+ if (subId == mSubId1) {
+ imsCarrierConfig = mPersistableBundle1;
+ }
+
+ PersistableBundle requiredBundle;
+ if (capabilityKey.equals(
+ CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY)) {
+ requiredBundle = imsCarrierConfig.getPersistableBundle(
+ CarrierConfigManager.Ims.KEY_RCS_REQUIRES_PROVISIONING_BUNDLE);
+ } else {
+ requiredBundle = imsCarrierConfig.getPersistableBundle(
+ CarrierConfigManager.Ims.KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE);
+ }
+
+ requiredBundle.putIntArray(capabilityKey, techs);
+ }
+
+ private void setDeprecatedCarrierConfig(String key, boolean value) {
+ mPersistableBundle0.putBoolean(key, value);
+ }
+
private int getProvisionedValue(int i, int j) {
for (int[] data : mMmTelProvisioningStorage) {
if (data[0] == i && data[1] == j) {