summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-12-15 00:41:56 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-12-15 00:41:56 +0000
commit5c863ed69cceba4e47763202ea6f8574fa472485 (patch)
tree2849ac39d039441c50b76f915fb8887703b81eba
parente4ea978ecc01069e0afac13ad445c7e4757df86a (diff)
parentabde5e37cf281d05c869430c783065aae6c5b438 (diff)
downloadTelephonyProvider-android14-qpr2-s1-release.tar.gz
Change-Id: I9ca9db3c59b16935f904639f7fca57ccdf593efd
-rw-r--r--src/com/android/providers/telephony/TelephonyProvider.java27
-rw-r--r--tests/src/com/android/providers/telephony/TelephonyDatabaseHelperTest.java53
2 files changed, 75 insertions, 5 deletions
diff --git a/src/com/android/providers/telephony/TelephonyProvider.java b/src/com/android/providers/telephony/TelephonyProvider.java
index c5723579..4fbeed45 100644
--- a/src/com/android/providers/telephony/TelephonyProvider.java
+++ b/src/com/android/providers/telephony/TelephonyProvider.java
@@ -164,7 +164,7 @@ public class TelephonyProvider extends ContentProvider
private static final boolean DBG = true;
private static final boolean VDBG = false; // STOPSHIP if true
- private static final int DATABASE_VERSION = 66 << 16;
+ private static final int DATABASE_VERSION = 67 << 16;
private static final int URL_UNKNOWN = 0;
private static final int URL_TELEPHONY = 1;
private static final int URL_CURRENT = 2;
@@ -400,7 +400,8 @@ public class TelephonyProvider extends ContentProvider
CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(CARRIER_ID,
String.valueOf(TelephonyManager.UNKNOWN_CARRIER_ID));
CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(INFRASTRUCTURE_BITMASK,
- String.valueOf(ApnSetting.INFRASTRUCTURE_CELLULAR));
+ String.valueOf(
+ ApnSetting.INFRASTRUCTURE_CELLULAR | ApnSetting.INFRASTRUCTURE_SATELLITE));
CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(ESIM_BOOTSTRAP_PROVISIONING, "0");
CARRIERS_UNIQUE_FIELDS.addAll(CARRIERS_UNIQUE_FIELDS_DEFAULTS.keySet());
@@ -512,7 +513,7 @@ public class TelephonyProvider extends ContentProvider
APN_SET_ID + " INTEGER DEFAULT " + NO_APN_SET_ID + "," +
SKIP_464XLAT + " INTEGER DEFAULT " + SKIP_464XLAT_DEFAULT + "," +
ALWAYS_ON + " INTEGER DEFAULT 0," +
- INFRASTRUCTURE_BITMASK + " INTEGER DEFAULT 1," +
+ INFRASTRUCTURE_BITMASK + " INTEGER DEFAULT 3," +
ESIM_BOOTSTRAP_PROVISIONING + " BOOLEAN DEFAULT 0," +
// Uniqueness collisions are used to trigger merge code so if a field is listed
// here it means we will accept both (user edited + new apn_conf definition)
@@ -1999,6 +2000,21 @@ public class TelephonyProvider extends ContentProvider
oldVersion = 66 << 16 | 6;
}
+ if (oldVersion < (67 << 16 | 6)) {
+ try {
+ // If default value of infrastructure_bitmask column is set to 1, then update
+ // it to 3
+ db.execSQL("UPDATE " + CARRIERS_TABLE + " SET " + INFRASTRUCTURE_BITMASK + "=3"
+ + " WHERE " + INFRASTRUCTURE_BITMASK + "=1;");
+ } catch (SQLiteException e) {
+ if (DBG) {
+ log("onUpgrade failed to update " + CARRIERS_TABLE
+ + " to add infrastructure bitmask value.");
+ }
+ }
+ oldVersion = 67 << 16 | 6;
+ }
+
if (DBG) {
log("dbh.onUpgrade:- db=" + db + " oldV=" + oldVersion + " newV=" + newVersion);
}
@@ -2676,7 +2692,8 @@ public class TelephonyProvider extends ContentProvider
addBoolAttribute(parser, "esim_bootstrap_provisioning", map,
ESIM_BOOTSTRAP_PROVISIONING);
- int infrastructureBitmask = ApnSetting.INFRASTRUCTURE_CELLULAR;
+ int infrastructureBitmask =
+ ApnSetting.INFRASTRUCTURE_CELLULAR | ApnSetting.INFRASTRUCTURE_SATELLITE;
String infrastructureList = parser.getAttributeValue(null, "infrastructure_bitmask");
if (infrastructureList != null) {
infrastructureBitmask = getInfrastructureListFromString(infrastructureList);
@@ -3871,7 +3888,7 @@ public class TelephonyProvider extends ContentProvider
PersistableBundle backedUpSimInfoEntry, int backupDataFormatVersion,
String isoCountryCodeFromDb,
List<String> wfcRestoreBlockedCountries) {
- if (DATABASE_VERSION != 66 << 16) {
+ if (DATABASE_VERSION != 67 << 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 "
+ "1) review whether any of the columns in #SIM_INFO_COLUMNS_TO_BACKUP have "
diff --git a/tests/src/com/android/providers/telephony/TelephonyDatabaseHelperTest.java b/tests/src/com/android/providers/telephony/TelephonyDatabaseHelperTest.java
index 71a0c71a..8ca3cd50 100644
--- a/tests/src/com/android/providers/telephony/TelephonyDatabaseHelperTest.java
+++ b/tests/src/com/android/providers/telephony/TelephonyDatabaseHelperTest.java
@@ -31,6 +31,7 @@ import android.database.sqlite.SQLiteOpenHelper;
import android.os.UserHandle;
import android.provider.Telephony;
import android.telephony.SubscriptionManager;
+import android.telephony.data.ApnSetting;
import android.text.TextUtils;
import android.util.Log;
@@ -540,6 +541,58 @@ public final class TelephonyDatabaseHelperTest {
assertTrue(Arrays.asList(columns).contains(Carriers.ESIM_BOOTSTRAP_PROVISIONING));
}
+ @Test
+ public void databaseHelperOnUpgrade_hasInfrastructureFields_updateInfrastructureValue() {
+ Log.d(TAG, "databaseHelperOnUpgrade_hasInfrastructureFields_updateInfrastructureValue");
+ // (5 << 16 | 6) is the first upgrade trigger in onUpgrade
+ SQLiteDatabase db = mInMemoryDbHelper.getWritableDatabase();
+ // UserHandle column is added in version 65.
+ mHelper.onUpgrade(db, (4 << 16), 65);
+
+ // The upgraded db must have the field Telephony.Carrier.INFRASTRUCTURE_BITMASK.
+ Cursor cursor = db.query("carriers", null, null, null, null, null, null);
+ String[] columns = cursor.getColumnNames();
+ Log.d(TAG, "carriers columns: " + Arrays.toString(columns));
+ assertTrue(Arrays.asList(columns).contains(Carriers.INFRASTRUCTURE_BITMASK));
+
+ // Insert test contentValues into db.
+ final int insertId = 1;
+ final String IdKey = "_id";
+ ContentValues contentValues = new ContentValues();
+ // Set INFRASTRUCTURE_BITMASK to 1ApnSetting.INFRASTRUCTURE_CELLULAR.
+ contentValues.put(Carriers.INFRASTRUCTURE_BITMASK, ApnSetting.INFRASTRUCTURE_CELLULAR);
+ contentValues.put(IdKey, insertId);
+ db.insert("carriers", null, contentValues);
+
+ // Query INFRASTRUCTURE_BITMASK value from db which should be equal to ApnSetting
+ // .INFRASTRUCTURE_CELLULAR.
+ final String[] testProjection = {Carriers.INFRASTRUCTURE_BITMASK};
+ final String selection = IdKey + "=?";
+ String[] selectionArgs = {Integer.toString(insertId)};
+ cursor = db.query("carriers", testProjection, selection, selectionArgs,
+ null, null, null);
+ assertNotNull(cursor);
+ assertEquals(1, cursor.getCount());
+ cursor.moveToFirst();
+ int infrastructureBitmask = cursor.getInt(0);
+ assertEquals(ApnSetting.INFRASTRUCTURE_CELLULAR, infrastructureBitmask);
+
+ // Upgrade db from version 65 to version 67.
+ mHelper.onUpgrade(db, (65 << 16), 67);
+
+ // Query INFRASTRUCTURE_BITMASK value from db which should be equal to (ApnSetting
+ // .INFRASTRUCTURE_CELLULAR | ApnSetting.INFRASTRUCTURE_SATELLITE) after db upgrade.
+ int expectedInfrastructureBitmask =
+ ApnSetting.INFRASTRUCTURE_CELLULAR | ApnSetting.INFRASTRUCTURE_SATELLITE;
+ cursor = db.query("carriers", testProjection, selection, selectionArgs,
+ null, null, null);
+ assertNotNull(cursor);
+ assertEquals(1, cursor.getCount());
+ cursor.moveToFirst();
+ infrastructureBitmask = cursor.getInt(0);
+ assertEquals(expectedInfrastructureBitmask, infrastructureBitmask);
+ }
+
/**
* Helper for an in memory DB used to test the TelephonyProvider#DatabaseHelper.
*