Revert "Revert "[eSIM BootStrap Support] Upgrade TelephonyProvid..."

Revert submission 25285161-revert-24820655-esim_profile_support_v1.0-APHOXMVQGQ

Reason for revert: With CTS issue fix

Reverted changes: Updated Teelephony Provider changes for adding new field at
Apn configuration

Bug: 309633531
Test: atest CtsTelephonyTestCases
Change-Id: I16ad221b5403405a7a0beef52abbc241396b3bbb
diff --git a/src/com/android/providers/telephony/TelephonyProvider.java b/src/com/android/providers/telephony/TelephonyProvider.java
index 23a0a19..c572357 100644
--- a/src/com/android/providers/telephony/TelephonyProvider.java
+++ b/src/com/android/providers/telephony/TelephonyProvider.java
@@ -33,6 +33,7 @@
 import static android.provider.Telephony.Carriers.DEFAULT_SORT_ORDER;
 import static android.provider.Telephony.Carriers.EDITED_STATUS;
 import static android.provider.Telephony.Carriers.INFRASTRUCTURE_BITMASK;
+import static android.provider.Telephony.Carriers.ESIM_BOOTSTRAP_PROVISIONING;
 import static android.provider.Telephony.Carriers.LINGERING_NETWORK_TYPE_BITMASK;
 import static android.provider.Telephony.Carriers.MAX_CONNECTIONS;
 import static android.provider.Telephony.Carriers.MCC;
@@ -163,7 +164,7 @@
     private static final boolean DBG = true;
     private static final boolean VDBG = false; // STOPSHIP if true
 
-    private static final int DATABASE_VERSION = 65 << 16;
+    private static final int DATABASE_VERSION = 66 << 16;
     private static final int URL_UNKNOWN = 0;
     private static final int URL_TELEPHONY = 1;
     private static final int URL_CURRENT = 2;
@@ -400,6 +401,7 @@
                 String.valueOf(TelephonyManager.UNKNOWN_CARRIER_ID));
         CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(INFRASTRUCTURE_BITMASK,
                 String.valueOf(ApnSetting.INFRASTRUCTURE_CELLULAR));
+        CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(ESIM_BOOTSTRAP_PROVISIONING, "0");
 
         CARRIERS_UNIQUE_FIELDS.addAll(CARRIERS_UNIQUE_FIELDS_DEFAULTS.keySet());
 
@@ -410,6 +412,7 @@
         CARRIERS_BOOLEAN_FIELDS.add(MODEM_PERSIST);
         CARRIERS_BOOLEAN_FIELDS.add(USER_VISIBLE);
         CARRIERS_BOOLEAN_FIELDS.add(USER_EDITABLE);
+        CARRIERS_BOOLEAN_FIELDS.add(ESIM_BOOTSTRAP_PROVISIONING);
 
         MVNO_TYPE_STRING_MAP = new ArrayMap<>();
         MVNO_TYPE_STRING_MAP.put("spn", ApnSetting.MVNO_TYPE_SPN);
@@ -510,6 +513,7 @@
                 SKIP_464XLAT + " INTEGER DEFAULT " + SKIP_464XLAT_DEFAULT + "," +
                 ALWAYS_ON + " INTEGER DEFAULT 0," +
                 INFRASTRUCTURE_BITMASK + " INTEGER DEFAULT 1," +
+                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)
                 // Columns not included in UNIQUE constraint: name, current, edited,
@@ -1980,6 +1984,21 @@
                 oldVersion = 65 << 16 | 6;
             }
 
+            if (oldVersion < (66 << 16 | 6)) {
+                try {
+                    // Try to add new field ESIM_BOOTSTRAP_PROVISIONING
+                    db.execSQL("ALTER TABLE " + CARRIERS_TABLE + " ADD COLUMN "
+                            + ESIM_BOOTSTRAP_PROVISIONING + " INTEGER DEFAULT 0;");
+                } catch (SQLiteException e) {
+                    if (DBG) {
+                        log("onUpgrade failed to update " + CARRIERS_TABLE
+                                    + " to add esim bootstrap provisioning flag");
+                    }
+
+                }
+                oldVersion = 66 << 16 | 6;
+            }
+
             if (DBG) {
                 log("dbh.onUpgrade:- db=" + db + " oldV=" + oldVersion + " newV=" + newVersion);
             }
@@ -2429,6 +2448,7 @@
             getIntValueFromCursor(cv, c, SKIP_464XLAT);
             getIntValueFromCursor(cv, c, ALWAYS_ON);
             getIntValueFromCursor(cv, c, INFRASTRUCTURE_BITMASK);
+            getIntValueFromCursor(cv, c, ESIM_BOOTSTRAP_PROVISIONING);
         }
 
         private void copyPreservedApnsToNewTable(SQLiteDatabase db, Cursor c) {
@@ -2653,6 +2673,8 @@
             addBoolAttribute(parser, "user_visible", map, USER_VISIBLE);
             addBoolAttribute(parser, "user_editable", map, USER_EDITABLE);
             addBoolAttribute(parser, "always_on", map, ALWAYS_ON);
+            addBoolAttribute(parser, "esim_bootstrap_provisioning", map,
+                    ESIM_BOOTSTRAP_PROVISIONING);
 
             int infrastructureBitmask = ApnSetting.INFRASTRUCTURE_CELLULAR;
             String infrastructureList = parser.getAttributeValue(null, "infrastructure_bitmask");
@@ -3849,7 +3871,7 @@
                 PersistableBundle backedUpSimInfoEntry, int backupDataFormatVersion,
                 String isoCountryCodeFromDb,
                 List<String> wfcRestoreBlockedCountries) {
-            if (DATABASE_VERSION != 65 << 16) {
+            if (DATABASE_VERSION != 66 << 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 a4fa500..71a0c71 100644
--- a/tests/src/com/android/providers/telephony/TelephonyDatabaseHelperTest.java
+++ b/tests/src/com/android/providers/telephony/TelephonyDatabaseHelperTest.java
@@ -525,6 +525,21 @@
         assertTrue(Arrays.asList(columns).contains(Carriers.INFRASTRUCTURE_BITMASK));
     }
 
+    @Test
+    public void databaseHelperOnUpgrade_hasEsimBootstrapProvisioningFields() {
+        Log.d(TAG, "databaseHelperOnUpgrade_hasEsimBootstrapProvisioningFields");
+        // (5 << 16 | 6) is the first upgrade trigger in onUpgrade
+        SQLiteDatabase db = mInMemoryDbHelper.getWritableDatabase();
+        mHelper.onUpgrade(db, (4 << 16), TelephonyProvider.getVersion(mContext));
+
+        // The upgraded db must have the fields Telephony.Carrier.ESIM_BOOTSTRAP_PROVISIONING.
+        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.ESIM_BOOTSTRAP_PROVISIONING));
+    }
+
     /**
      * Helper for an in memory DB used to test the TelephonyProvider#DatabaseHelper.
      *