Add IMS_WFC configs to sim-specific settings Backup/Restore.
Test: make, atest, manual tests
Bug: 179933909
Change-Id: I49a9b49ba662a2361f5f5644b5456670a5961ee2
diff --git a/res/values/config.xml b/res/values/config.xml
index 23c08b8..e4be55f 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -14,4 +14,11 @@
If this value is empty or unparsable, we will apply APNs from the APN
conf xml file. -->
<string name="apn_source_service" translatable="false"></string>
+
+ <!-- Countries, in iso country code format, where wfc entitlement is
+ required-->
+ <string-array name="wfc_entitlement_required_countries">
+ <item>us</item>
+ <item>ca</item>
+ </string-array>
</resources>
diff --git a/src/com/android/providers/telephony/TelephonyProvider.java b/src/com/android/providers/telephony/TelephonyProvider.java
index 7d4bc6f..e9740c4 100644
--- a/src/com/android/providers/telephony/TelephonyProvider.java
+++ b/src/com/android/providers/telephony/TelephonyProvider.java
@@ -394,6 +394,12 @@
Telephony.SimInfo.COLUMN_VT_IMS_ENABLED, Cursor.FIELD_TYPE_INTEGER);
SIM_INFO_COLUMNS_TO_BACKUP.put(
Telephony.SimInfo.COLUMN_D2D_STATUS_SHARING, Cursor.FIELD_TYPE_INTEGER);
+ SIM_INFO_COLUMNS_TO_BACKUP.put(
+ Telephony.SimInfo.COLUMN_WFC_IMS_ENABLED, Cursor.FIELD_TYPE_INTEGER);
+ SIM_INFO_COLUMNS_TO_BACKUP.put(
+ Telephony.SimInfo.COLUMN_WFC_IMS_MODE, Cursor.FIELD_TYPE_INTEGER);
+ SIM_INFO_COLUMNS_TO_BACKUP.put(
+ Telephony.SimInfo.COLUMN_WFC_IMS_ROAMING_MODE, Cursor.FIELD_TYPE_INTEGER);
}
@VisibleForTesting
@@ -3179,7 +3185,8 @@
Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID,
Telephony.SimInfo.COLUMN_ICC_ID,
Telephony.SimInfo.COLUMN_NUMBER,
- Telephony.SimInfo.COLUMN_CARRIER_ID},
+ Telephony.SimInfo.COLUMN_CARRIER_ID,
+ Telephony.SimInfo.COLUMN_ISO_COUNTRY_CODE},
selection,
selectionArgs,
ORDER_BY_SUB_ID)) {
@@ -3198,6 +3205,10 @@
int backupDataFormatVersion = backedUpDataBundle
.getInt(KEY_BACKUP_DATA_FORMAT_VERSION, -1);
+ Resources r = getContext().getResources();
+ List<String> wfcEntitlementRequiredCountries = Arrays.asList(r.getStringArray(
+ R.array.wfc_entitlement_required_countries));
+
while (cursor != null && cursor.moveToNext()) {
// Get all the possible matching criteria.
int subIdColumnIndex = cursor.getColumnIndex(
@@ -3218,6 +3229,11 @@
int carrierIdColumnIndex = cursor.getColumnIndex(Telephony.SimInfo.COLUMN_CARRIER_ID);
int currCarrierIdFromDb = cursor.getInt(carrierIdColumnIndex);
+ int isoCountryCodeColumnIndex= cursor.getColumnIndex(
+ Telephony.SimInfo.COLUMN_ISO_COUNTRY_CODE);
+ String isoCountryCodeFromDb = cursor.getString(isoCountryCodeColumnIndex);
+
+
// Find the best match from backed up data.
SimRestoreMatch bestRestoreMatch = null;
for (int rowNum = 0; true; rowNum++) {
@@ -3228,7 +3244,8 @@
}
SimRestoreMatch currSimRestoreMatch = new SimRestoreMatch(
- currIccIdFromDb, currCarrierIdFromDb, currPhoneNumberFromDb, currRow,
+ currIccIdFromDb, currCarrierIdFromDb, currPhoneNumberFromDb,
+ isoCountryCodeFromDb, wfcEntitlementRequiredCountries, currRow,
backupDataFormatVersion);
if (currSimRestoreMatch == null) {
@@ -3315,8 +3332,9 @@
private static final int CARRIER_ID_MATCH = 3;
public SimRestoreMatch(String iccIdFromDb, int carrierIdFromDb,
- String phoneNumberFromDb, PersistableBundle backedUpSimInfoEntry,
- int backupDataFormatVersion) {
+ String phoneNumberFromDb, String isoCountryCodeFromDb,
+ List<String> wfcEntitlementRequiredCountries,
+ PersistableBundle backedUpSimInfoEntry, int backupDataFormatVersion) {
subId = backedUpSimInfoEntry.getInt(
Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID,
DEFAULT_INT_COLUMN_VALUE);
@@ -3344,7 +3362,8 @@
}
contentValues = convertBackedUpDataToContentValues(
- backedUpSimInfoEntry, backupDataFormatVersion);
+ backedUpSimInfoEntry, backupDataFormatVersion, isoCountryCodeFromDb,
+ wfcEntitlementRequiredCountries);
matchScore = calculateMatchScore();
matchingCriteria = calculateMatchingCriteria();
}
@@ -3398,7 +3417,9 @@
}
private ContentValues convertBackedUpDataToContentValues(
- PersistableBundle backedUpSimInfoEntry, int backupDataFormatVersion) {
+ PersistableBundle backedUpSimInfoEntry, int backupDataFormatVersion,
+ String isoCountryCodeFromDb,
+ List<String> wfcEntitlementRequiredCountries) {
if (DATABASE_VERSION != 50 << 16) {
throw new AssertionError("The database schema has been updated which might make "
+ "the format of #BACKED_UP_SIM_SPECIFIC_SETTINGS_FILE outdated. Make sure to "
@@ -3435,6 +3456,7 @@
* contentValues.put(Telephony.SimInfo.COLUMN_VT_IMS_ENABLED,
* backedUpSimInfoEntry.getString(Telephony.SimInfo.COLUMN_VT_IMS_ENABLED,
* ""));
+ * ...
* }
*
* Also make sure to add necessary removal of sensitive settings in
@@ -3456,6 +3478,24 @@
backedUpSimInfoEntry.getInt(
Telephony.SimInfo.COLUMN_D2D_STATUS_SHARING,
DEFAULT_INT_COLUMN_VALUE));
+ if (isoCountryCodeFromDb != null
+ && !wfcEntitlementRequiredCountries
+ .contains(isoCountryCodeFromDb.toLowerCase())) {
+ // Don't restore COLUMN_WFC_IMS_ENABLED if the sim is from one of the countries that
+ // requires WFC entitlement.
+ contentValues.put(Telephony.SimInfo.COLUMN_WFC_IMS_ENABLED,
+ backedUpSimInfoEntry.getInt(
+ Telephony.SimInfo.COLUMN_WFC_IMS_ENABLED,
+ DEFAULT_INT_COLUMN_VALUE));
+ }
+ contentValues.put(Telephony.SimInfo.COLUMN_WFC_IMS_MODE,
+ backedUpSimInfoEntry.getInt(
+ Telephony.SimInfo.COLUMN_WFC_IMS_MODE,
+ DEFAULT_INT_COLUMN_VALUE));
+ contentValues.put(Telephony.SimInfo.COLUMN_WFC_IMS_ROAMING_MODE,
+ backedUpSimInfoEntry.getInt(
+ Telephony.SimInfo.COLUMN_WFC_IMS_ROAMING_MODE,
+ DEFAULT_INT_COLUMN_VALUE));
return polishContentValues(contentValues);
}
diff --git a/tests/src/com/android/providers/telephony/TelephonyProviderTest.java b/tests/src/com/android/providers/telephony/TelephonyProviderTest.java
index 826f51a..4adf0bc 100644
--- a/tests/src/com/android/providers/telephony/TelephonyProviderTest.java
+++ b/tests/src/com/android/providers/telephony/TelephonyProviderTest.java
@@ -45,6 +45,7 @@
import android.telephony.TelephonyManager;
import android.test.mock.MockContentResolver;
import android.test.mock.MockContext;
+import android.test.mock.MockResources;
import android.test.suitebuilder.annotation.SmallTest;
import android.text.TextUtils;
import android.util.Log;
@@ -55,6 +56,8 @@
import org.junit.Test;
import org.mockito.MockitoAnnotations;
+import org.mockito.Mock;
+import static org.mockito.Mockito.when;
import java.io.File;
import java.io.FileInputStream;
@@ -81,6 +84,8 @@
private MockContextWithProvider mContext;
private MockContentResolver mContentResolver;
private TelephonyProviderTestable mTelephonyProviderTestable;
+ @Mock
+ private Resources mockContextResources;
private int notifyChangeCount;
private int notifyChangeRestoreCount;
@@ -119,120 +124,96 @@
private static final String ENFORCED_KEY = "enforced";
- private static final int MATCHING_SUB_ID = 987654321;
private static final String MATCHING_ICCID = "MATCHING_ICCID";
private static final String MATCHING_PHONE_NUMBER = "MATCHING_PHONE_NUMBER";
private static final int MATCHING_CARRIER_ID = 123456789;
// Represents an entry in the SimInfoDb
- private static final ContentValues TEST_SIM_INFO_VALUES = new ContentValues();
+ private static final ContentValues TEST_SIM_INFO_VALUES_US;
+ private static final ContentValues TEST_SIM_INFO_VALUES_FR;
private static final int ARBITRARY_SIMINFO_DB_TEST_INT_VALUE = 999999;
private static final String ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE
= "ARBITRARY_TEST_STRING_VALUE";
- private static final ContentValues BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_ICCID
- = new ContentValues();
+ private static final ContentValues BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_ICCID;
private static final int ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1 = 111111;
private static final String ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE_1
= "ARBITRARY_TEST_STRING_VALUE_1";
- private static final ContentValues BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_NUMBER_AND_CID
- = new ContentValues();
+ private static final ContentValues BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_NUMBER_AND_CID;
private static final int ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_2 = 222222;
private static final String ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE_2
= "ARBITRARY_TEST_STRING_VALUE_2";
- private static final ContentValues BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID
- = new ContentValues();
+ private static final ContentValues BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID;
private static final int ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_3 = 333333;
private static final String ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE_3
= "ARBITRARY_TEST_STRING_VALUE_3";
static {
- TEST_SIM_INFO_VALUES.put(Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID,
- MATCHING_SUB_ID);
- TEST_SIM_INFO_VALUES.put(Telephony.SimInfo.COLUMN_ICC_ID, MATCHING_ICCID);
- TEST_SIM_INFO_VALUES.put(Telephony.SimInfo.COLUMN_NUMBER, MATCHING_PHONE_NUMBER);
- TEST_SIM_INFO_VALUES.put(Telephony.SimInfo.COLUMN_CARD_ID,
+ TEST_SIM_INFO_VALUES_US = populateContentValues(
+ MATCHING_ICCID,
+ MATCHING_PHONE_NUMBER,
+ MATCHING_CARRIER_ID,
+ "us",
+ ARBITRARY_SIMINFO_DB_TEST_INT_VALUE,
ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE);
- TEST_SIM_INFO_VALUES.put(Telephony.SimInfo.COLUMN_CARRIER_ID, MATCHING_CARRIER_ID);
- TEST_SIM_INFO_VALUES.put(Telephony.SimInfo.COLUMN_ENHANCED_4G_MODE_ENABLED,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE);
- TEST_SIM_INFO_VALUES.put(Telephony.SimInfo.COLUMN_VT_IMS_ENABLED,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE);
- TEST_SIM_INFO_VALUES.put(Telephony.SimInfo.COLUMN_IMS_RCS_UCE_ENABLED,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE);
- TEST_SIM_INFO_VALUES.put(SimInfo.COLUMN_D2D_STATUS_SHARING,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_ICCID.put(
- Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_ICCID.put(
- Telephony.SimInfo.COLUMN_ICC_ID, MATCHING_ICCID);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_ICCID.put(
- Telephony.SimInfo.COLUMN_NUMBER, ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE_1);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_ICCID.put(
- Telephony.SimInfo.COLUMN_CARD_ID, ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE_1);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_ICCID.put(
- Telephony.SimInfo.COLUMN_CARRIER_ID, ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_ICCID.put(
- Telephony.SimInfo.COLUMN_ENHANCED_4G_MODE_ENABLED,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_ICCID.put(
- Telephony.SimInfo.COLUMN_VT_IMS_ENABLED, ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_ICCID.put(
- Telephony.SimInfo.COLUMN_IMS_RCS_UCE_ENABLED,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_ICCID.put(
- SimInfo.COLUMN_D2D_STATUS_SHARING,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE);
-
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_NUMBER_AND_CID.put(
- Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_2);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_NUMBER_AND_CID.put(
- Telephony.SimInfo.COLUMN_ICC_ID, ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE_2);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_NUMBER_AND_CID.put(
- Telephony.SimInfo.COLUMN_NUMBER, MATCHING_PHONE_NUMBER);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_NUMBER_AND_CID.put(
- Telephony.SimInfo.COLUMN_CARD_ID, ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE_2);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_NUMBER_AND_CID.put(
- Telephony.SimInfo.COLUMN_CARRIER_ID, MATCHING_CARRIER_ID);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_NUMBER_AND_CID.put(
- Telephony.SimInfo.COLUMN_ENHANCED_4G_MODE_ENABLED,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_2);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_NUMBER_AND_CID.put(
- Telephony.SimInfo.COLUMN_VT_IMS_ENABLED, ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_2);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_NUMBER_AND_CID.put(
- Telephony.SimInfo.COLUMN_IMS_RCS_UCE_ENABLED,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_2);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_NUMBER_AND_CID.put(
- SimInfo.COLUMN_D2D_STATUS_SHARING,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_2);
-
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID.put(
- Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_3);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID.put(Telephony.SimInfo.COLUMN_ICC_ID,
- ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE_3);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID.put(Telephony.SimInfo.COLUMN_NUMBER,
- ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE_3);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID.put(Telephony.SimInfo.COLUMN_CARD_ID,
+ TEST_SIM_INFO_VALUES_FR = populateContentValues(
+ MATCHING_ICCID,
+ MATCHING_PHONE_NUMBER,
+ MATCHING_CARRIER_ID,
+ "fr",
+ ARBITRARY_SIMINFO_DB_TEST_INT_VALUE,
ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID.put(Telephony.SimInfo.COLUMN_CARRIER_ID,
- MATCHING_CARRIER_ID);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID.put(
- Telephony.SimInfo.COLUMN_ENHANCED_4G_MODE_ENABLED,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_3);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID.put(Telephony.SimInfo.COLUMN_VT_IMS_ENABLED,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_3);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID.put(
- Telephony.SimInfo.COLUMN_IMS_RCS_UCE_ENABLED,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_3);
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID.put(
- SimInfo.COLUMN_D2D_STATUS_SHARING,
- ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_3);
+
+ BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_ICCID = populateContentValues(
+ MATCHING_ICCID,
+ ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE_1,
+ ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1,
+ null,
+ ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1,
+ ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE_1);
+
+ BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_NUMBER_AND_CID = populateContentValues(
+ ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE_2,
+ MATCHING_PHONE_NUMBER,
+ MATCHING_CARRIER_ID,
+ null,
+ ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_2,
+ ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE_2);
+
+ BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID = populateContentValues(
+ ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE_3,
+ ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE_3,
+ MATCHING_CARRIER_ID,
+ null,
+ ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_3,
+ ARBITRARY_SIMINFO_DB_TEST_STRING_VALUE_3);
+ }
+
+ private static ContentValues populateContentValues(
+ String iccId, String phoneNumber, int carrierId, String isoCountryCode,
+ int arbitraryIntVal, String arbitraryStringVal) {
+ ContentValues contentValues = new ContentValues();
+
+ contentValues.put(Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID, arbitraryIntVal);
+ contentValues.put(Telephony.SimInfo.COLUMN_ICC_ID, iccId);
+ contentValues.put(Telephony.SimInfo.COLUMN_NUMBER, phoneNumber);
+ contentValues.put(Telephony.SimInfo.COLUMN_CARD_ID, arbitraryStringVal);
+ contentValues.put(Telephony.SimInfo.COLUMN_CARRIER_ID, carrierId);
+ contentValues.put(Telephony.SimInfo.COLUMN_ENHANCED_4G_MODE_ENABLED, arbitraryIntVal);
+ contentValues.put(Telephony.SimInfo.COLUMN_VT_IMS_ENABLED, arbitraryIntVal);
+ contentValues.put(Telephony.SimInfo.COLUMN_IMS_RCS_UCE_ENABLED, arbitraryIntVal);
+ contentValues.put(Telephony.SimInfo.COLUMN_WFC_IMS_ENABLED, arbitraryIntVal);
+ contentValues.put(Telephony.SimInfo.COLUMN_WFC_IMS_MODE, arbitraryIntVal);
+ contentValues.put(Telephony.SimInfo.COLUMN_WFC_IMS_ROAMING_MODE, arbitraryIntVal);
+ contentValues.put(Telephony.SimInfo.COLUMN_D2D_STATUS_SHARING, arbitraryIntVal);
+ if (isoCountryCode != null) {
+ contentValues.put(Telephony.SimInfo.COLUMN_ISO_COUNTRY_CODE, isoCountryCode);
+ }
+
+ return contentValues;
}
/**
@@ -317,8 +298,7 @@
@Override
public Resources getResources() {
- Log.d(TAG, "getResources: returning null");
- return null;
+ return mockContextResources;
}
@Override
@@ -365,6 +345,7 @@
super.setUp();
MockitoAnnotations.initMocks(this);
mTelephonyProviderTestable = new TelephonyProviderTestable();
+ when(mockContextResources.getStringArray(anyInt())).thenReturn(new String[]{"ca", "us"});
notifyChangeCount = 0;
notifyChangeRestoreCount = 0;
}
@@ -775,23 +756,23 @@
BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_NUMBER_AND_CID,
BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID});
createInternalBackupFile(simSpecificSettingsData);
- mContentResolver.insert(SubscriptionManager.CONTENT_URI, TEST_SIM_INFO_VALUES);
+ mContentResolver.insert(SubscriptionManager.CONTENT_URI, TEST_SIM_INFO_VALUES_US);
mContext.getContentResolver().call(
- SubscriptionManager.SIM_INFO_BACKUP_AND_RESTORE_CONTENT_URI,
- SubscriptionManager.RESTORE_SIM_SPECIFIC_SETTINGS_METHOD_NAME,
- MATCHING_ICCID, null);
+ SubscriptionManager.SIM_INFO_BACKUP_AND_RESTORE_CONTENT_URI,
+ SubscriptionManager.RESTORE_SIM_SPECIFIC_SETTINGS_METHOD_NAME,
+ MATCHING_ICCID, null);
Cursor cursor = mContentResolver.query(SubscriptionManager.CONTENT_URI,
- null, null, null, null);
+ null, null, null, null);
assertEquals(1, cursor.getCount());
cursor.moveToFirst();
// Make sure SubId didn't get overridden.
assertEquals(
- (int)TEST_SIM_INFO_VALUES.getAsInteger(
- Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID),
- getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID));
+ (int)TEST_SIM_INFO_VALUES_US.getAsInteger(
+ Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID),
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID));
// Ensure all other values got updated.
assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1,
getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_ENHANCED_4G_MODE_ENABLED));
@@ -799,6 +780,12 @@
getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_VT_IMS_ENABLED));
assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1,
getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_IMS_RCS_UCE_ENABLED));
+ assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE,
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_WFC_IMS_ENABLED));
+ assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1,
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_WFC_IMS_MODE));
+ assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1,
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_WFC_IMS_ROAMING_MODE));
assertRestoredSubIdIsRemembered();
}
@@ -807,26 +794,26 @@
public void testFullRestoreOnMatchingNumberAndCid() {
byte[] simSpecificSettingsData = getBackupData(
new ContentValues[]{
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_NUMBER_AND_CID,
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID});
+ BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_NUMBER_AND_CID,
+ BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID});
createInternalBackupFile(simSpecificSettingsData);
- mContentResolver.insert(SubscriptionManager.CONTENT_URI, TEST_SIM_INFO_VALUES);
+ mContentResolver.insert(SubscriptionManager.CONTENT_URI, TEST_SIM_INFO_VALUES_US);
mContext.getContentResolver().call(
- SubscriptionManager.SIM_INFO_BACKUP_AND_RESTORE_CONTENT_URI,
- SubscriptionManager.RESTORE_SIM_SPECIFIC_SETTINGS_METHOD_NAME,
- MATCHING_ICCID, null);
+ SubscriptionManager.SIM_INFO_BACKUP_AND_RESTORE_CONTENT_URI,
+ SubscriptionManager.RESTORE_SIM_SPECIFIC_SETTINGS_METHOD_NAME,
+ MATCHING_ICCID, null);
Cursor cursor = mContentResolver.query(SubscriptionManager.CONTENT_URI,
- null, null, null, null);
+ null, null, null, null);
assertEquals(1, cursor.getCount());
cursor.moveToFirst();
// Make sure SubId didn't get overridden.
assertEquals(
- (int) TEST_SIM_INFO_VALUES.getAsInteger(
- Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID),
- getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID));
+ (int) TEST_SIM_INFO_VALUES_US.getAsInteger(
+ Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID),
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID));
// Ensure all other values got updated.
assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_2,
getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_ENHANCED_4G_MODE_ENABLED));
@@ -834,6 +821,12 @@
getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_VT_IMS_ENABLED));
assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_2,
getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_IMS_RCS_UCE_ENABLED));
+ assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE,
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_WFC_IMS_ENABLED));
+ assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_2,
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_WFC_IMS_MODE));
+ assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_2,
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_WFC_IMS_ROAMING_MODE));
assertRestoredSubIdIsRemembered();
}
@@ -841,26 +834,26 @@
@Test
public void testFullRestoreOnMatchingCidOnly() {
byte[] simSpecificSettingsData = getBackupData(
- new ContentValues[]{
- BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID});
+ new ContentValues[]{
+ BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID});
createInternalBackupFile(simSpecificSettingsData);
- mContentResolver.insert(SubscriptionManager.CONTENT_URI, TEST_SIM_INFO_VALUES);
+ mContentResolver.insert(SubscriptionManager.CONTENT_URI, TEST_SIM_INFO_VALUES_US);
mContext.getContentResolver().call(
- SubscriptionManager.SIM_INFO_BACKUP_AND_RESTORE_CONTENT_URI,
- SubscriptionManager.RESTORE_SIM_SPECIFIC_SETTINGS_METHOD_NAME,
- MATCHING_ICCID, null);
+ SubscriptionManager.SIM_INFO_BACKUP_AND_RESTORE_CONTENT_URI,
+ SubscriptionManager.RESTORE_SIM_SPECIFIC_SETTINGS_METHOD_NAME,
+ MATCHING_ICCID, null);
Cursor cursor = mContentResolver.query(SubscriptionManager.CONTENT_URI,
- null, null, null, null);
+ null, null, null, null);
assertEquals(1, cursor.getCount());
cursor.moveToFirst();
// Make sure SubId didn't get overridden.
assertEquals(
- (int) TEST_SIM_INFO_VALUES.getAsInteger(
- Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID),
- getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID));
+ (int) TEST_SIM_INFO_VALUES_US.getAsInteger(
+ Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID),
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID));
// Ensure sensitive settings did not get updated.
assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE,
getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_IMS_RCS_UCE_ENABLED));
@@ -869,6 +862,54 @@
getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_ENHANCED_4G_MODE_ENABLED));
assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_3,
getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_VT_IMS_ENABLED));
+ assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE,
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_WFC_IMS_ENABLED));
+ assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_3,
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_WFC_IMS_MODE));
+ assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_3,
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_WFC_IMS_ROAMING_MODE));
+
+ assertRestoredSubIdIsRemembered();
+ }
+
+ @Test
+ public void testFullRestoreOnMatchingIccIdWithFranceISO() {
+ byte[] simSpecificSettingsData = getBackupData(
+ new ContentValues[]{
+ BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_ICCID,
+ BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_NUMBER_AND_CID,
+ BACKED_UP_SIM_INFO_VALUES_WITH_MATCHING_CID});
+ createInternalBackupFile(simSpecificSettingsData);
+ mContentResolver.insert(SubscriptionManager.CONTENT_URI, TEST_SIM_INFO_VALUES_FR);
+
+ mContext.getContentResolver().call(
+ SubscriptionManager.SIM_INFO_BACKUP_AND_RESTORE_CONTENT_URI,
+ SubscriptionManager.RESTORE_SIM_SPECIFIC_SETTINGS_METHOD_NAME,
+ MATCHING_ICCID, null);
+
+ Cursor cursor = mContentResolver.query(SubscriptionManager.CONTENT_URI,
+ null, null, null, null);
+ assertEquals(1, cursor.getCount());
+ cursor.moveToFirst();
+
+ // Make sure SubId didn't get overridden.
+ assertEquals(
+ (int) TEST_SIM_INFO_VALUES_FR.getAsInteger(
+ Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID),
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID));
+ // Ensure all other values got updated.
+ assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1,
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_ENHANCED_4G_MODE_ENABLED));
+ assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1,
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_VT_IMS_ENABLED));
+ assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1,
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_IMS_RCS_UCE_ENABLED));
+ assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1,
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_WFC_IMS_ENABLED));
+ assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1,
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_WFC_IMS_MODE));
+ assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE_1,
+ getIntValueFromCursor(cursor, Telephony.SimInfo.COLUMN_WFC_IMS_ROAMING_MODE));
assertRestoredSubIdIsRemembered();
}
@@ -878,7 +919,7 @@
int[] previouslyRestoredSubIds =
bundle.getIntArray(TelephonyProvider.KEY_PREVIOUSLY_RESTORED_SUB_IDS);
assertNotNull(previouslyRestoredSubIds);
- assertEquals(MATCHING_SUB_ID, previouslyRestoredSubIds[0]);
+ assertEquals(ARBITRARY_SIMINFO_DB_TEST_INT_VALUE, previouslyRestoredSubIds[0]);
}
private PersistableBundle getPersistableBundleFromInternalStorageFile() {