Merge "Move RCS table creation flag to contract class"
diff --git a/assets/carrier_list.pb b/assets/carrier_list.pb
index b3842c6..9580a0b 100644
--- a/assets/carrier_list.pb
+++ b/assets/carrier_list.pb
Binary files differ
diff --git a/assets/carrier_list.textpb b/assets/carrier_list.textpb
index 43fc5d2..b55cf68 100644
--- a/assets/carrier_list.textpb
+++ b/assets/carrier_list.textpb
@@ -3401,9 +3401,10 @@
 }
 carrier_id {
   canonical_id: 1475
-  carrier_name: "Elisa Matkapuhelinpalvelut Ltd."
+  carrier_name: "Elisa"
   carrier_attribute {
     mccmnc_tuple: "24405"
+    mccmnc_tuple: "24421"
   }
 }
 carrier_id {
@@ -3428,17 +3429,6 @@
   }
 }
 carrier_id {
-  canonical_id: 1479
-  carrier_name: "Saunalahti Group Ltd."
-  carrier_attribute {
-    mccmnc_tuple: "24421"
-  }
-  carrier_attribute {
-    mccmnc_tuple: "24405"
-    imsi_prefix_xpattern: "2440541"
-  }
-}
-carrier_id {
   canonical_id: 1480
   carrier_name: "Telia"
   carrier_attribute {
@@ -6531,7 +6521,7 @@
 }
 carrier_id {
   canonical_id: 1930
-  carrier_name: "Nextel"
+  carrier_name: "Entel"
   carrier_attribute {
     mccmnc_tuple: "71617"
   }
@@ -7074,6 +7064,10 @@
     gid1: "0206"
   }
   carrier_attribute {
+    mccmnc_tuple: "23210"
+    gid1: "0306"
+  }
+  carrier_attribute {
     mccmnc_tuple: "310120"
     spn: "Fi Network"
     spn: "nova"
@@ -9853,6 +9847,24 @@
   }
 }
 carrier_id {
+  canonical_id: 2360
+  carrier_name: "Telefonica"
+  carrier_attribute {
+    mccmnc_tuple: "26203"
+    gid1: "010301"
+    gid1: "010901"
+  }
+}
+carrier_id {
+  canonical_id: 2361
+  carrier_name: "o2"
+  carrier_attribute {
+    mccmnc_tuple: "26207"
+    gid1: "010301"
+    gid1: "010901"
+  }
+}
+carrier_id {
   canonical_id: 2362
   carrier_name: "Vodacom"
   carrier_attribute {
@@ -10153,4 +10165,83 @@
     mccmnc_tuple: "22208"
   }
 }
-version: 6
+carrier_id {
+  canonical_id: 10000
+  carrier_name: "Tracfone-ATT"
+  carrier_attribute {
+    mccmnc_tuple: "310410"
+    gid1: "DDFF"
+    gid1: "DEFF"
+  }
+  parent_canonical_id: 2022
+}
+carrier_id {
+  canonical_id: 10001
+  carrier_name: "Tracfone-TMO"
+  carrier_attribute {
+    mccmnc_tuple: "310260"
+    gid1: "DDFF"
+    gid1: "DEFF"
+  }
+  parent_canonical_id: 2022
+}
+carrier_id {
+  canonical_id: 10002
+  carrier_name: "o2prepaid_gb"
+  carrier_attribute {
+    mccmnc_tuple: "23410"
+    gid1: "61"
+    gid1: "67"
+    gid1: "85"
+    gid1: "99"
+  }
+  parent_canonical_id: 1492
+}
+carrier_id {
+  canonical_id: 10003
+  carrier_name: "o2prepaid_de"
+  carrier_attribute {
+    mccmnc_tuple: "26207"
+    imsi_prefix_xpattern: "2620749"
+  }
+  parent_canonical_id: 1454
+}
+carrier_id {
+  canonical_id: 10004
+  carrier_name: "sprintprepaid_us"
+  carrier_attribute {
+    mccmnc_tuple: "310120"
+    gid1: "000004"
+  }
+  parent_canonical_id: 1788
+}
+carrier_id {
+  canonical_id: 10005
+  carrier_name: "pcmobile_prepaid_bell"
+  carrier_attribute {
+    mccmnc_tuple: "30264"
+    mccmnc_tuple: "302610"
+    mccmnc_tuple: "302630"
+    mccmnc_tuple: "302640"
+    gid1: "40"
+  }
+  parent_canonical_id: 2053
+}
+carrier_id {
+  canonical_id: 10006
+  carrier_name: "pcmobile_postpaid_telus"
+  carrier_attribute {
+    mccmnc_tuple: "302220"
+    mccmnc_tuple: "302221"
+    gid1: "5043"
+  }
+  parent_canonical_id: 2053
+}
+carrier_id {
+  canonical_id: 10007
+  carrier_name: "docomo_mvno"
+  carrier_attribute {
+    mccmnc_tuple: "44010"
+  }
+}
+version: 7
diff --git a/src/com/android/providers/telephony/CarrierDatabaseHelper.java b/src/com/android/providers/telephony/CarrierDatabaseHelper.java
index b654a77..0b97da1 100644
--- a/src/com/android/providers/telephony/CarrierDatabaseHelper.java
+++ b/src/com/android/providers/telephony/CarrierDatabaseHelper.java
@@ -40,6 +40,7 @@
      */
     public CarrierDatabaseHelper(Context context) {
         super(context, DATABASE_NAME, null, DATABASE_VERSION);
+        setWriteAheadLoggingEnabled(false);
     }
 
     public static final String KEY_TYPE = "key_type";
diff --git a/src/com/android/providers/telephony/CarrierIdProvider.java b/src/com/android/providers/telephony/CarrierIdProvider.java
index 77093a6..97d496b 100644
--- a/src/com/android/providers/telephony/CarrierIdProvider.java
+++ b/src/com/android/providers/telephony/CarrierIdProvider.java
@@ -30,7 +30,9 @@
 import android.database.sqlite.SQLiteOpenHelper;
 import android.database.sqlite.SQLiteQueryBuilder;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Environment;
+import android.os.SystemProperties;
 import android.provider.Telephony.CarrierId;
 import android.telephony.SubscriptionManager;
 import android.text.TextUtils;
@@ -383,6 +385,7 @@
                     cv = new ContentValues();
                     cv.put(CarrierId.CARRIER_ID, id.canonicalId);
                     cv.put(CarrierId.CARRIER_NAME, id.carrierName);
+                    cv.put(CarrierId.PARENT_CARRIER_ID, id.parentCanonicalId);
                     cvs = new ArrayList<>();
                     convertCarrierAttrToContentValues(cv, cvs, attr, 0);
                     for (ContentValues contentVal : cvs) {
@@ -542,7 +545,10 @@
             carrierList = assets;
             version = assets.version;
         }
-        if (ota != null && ota.version > version) {
+        // bypass version check for ota carrier id test
+        if (ota != null && ((Build.IS_DEBUGGABLE && SystemProperties.getBoolean(
+                "persist.telephony.test.carrierid.ota", false))
+                || (ota.version > version))) {
             carrierList = ota;
             version = ota.version;
         }
diff --git a/src/com/android/providers/telephony/HbpcdLookupDatabaseHelper.java b/src/com/android/providers/telephony/HbpcdLookupDatabaseHelper.java
index 2debc57..0149687 100644
--- a/src/com/android/providers/telephony/HbpcdLookupDatabaseHelper.java
+++ b/src/com/android/providers/telephony/HbpcdLookupDatabaseHelper.java
@@ -102,6 +102,7 @@
         mContext = context;
         // Memory optimization - close idle connections after 30s of inactivity
         setIdleConnectionTimeout(IDLE_CONNECTION_TIMEOUT_MS);
+        setWriteAheadLoggingEnabled(false);
     }
 
     @Override
diff --git a/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java b/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
index 66a0a76..3d3711a 100644
--- a/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
+++ b/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
@@ -297,6 +297,7 @@
         } catch (IllegalArgumentException e) {
             // ignore
         }
+        setWriteAheadLoggingEnabled(false);
     }
 
     private static synchronized MmsSmsDatabaseErrorHandler getDbErrorHandler(Context context) {
diff --git a/src/com/android/providers/telephony/RcsProviderEventHelper.java b/src/com/android/providers/telephony/RcsProviderEventHelper.java
index cf72c3b..c6a6fc6 100644
--- a/src/com/android/providers/telephony/RcsProviderEventHelper.java
+++ b/src/com/android/providers/telephony/RcsProviderEventHelper.java
@@ -15,6 +15,7 @@
  */
 package com.android.providers.telephony;
 
+import static android.provider.Telephony.RcsColumns.RcsEventTypes.PARTICIPANT_ALIAS_CHANGED_EVENT_TYPE;
 import static android.provider.Telephony.RcsColumns.RcsParticipantColumns.RCS_PARTICIPANT_ID_COLUMN;
 import static android.provider.Telephony.RcsColumns.RcsParticipantEventColumns.NEW_ALIAS_COLUMN;
 import static android.provider.Telephony.RcsColumns.RcsEventTypes.ICON_CHANGED_EVENT_TYPE;
@@ -92,16 +93,19 @@
 
         // The following is a unified event view that puts every entry in both tables into one query
         db.execSQL("CREATE VIEW " + RCS_UNIFIED_EVENT_VIEW + " AS "
-                + "SELECT 1 AS event_type, event_id, originating_participant, "
-                + "origination_timestamp, old_alias, new_alias, NULL as rcs_thread_id, NULL as "
-                + "destination_participant, NULL as old_icon_uri, NULL as new_icon_uri, NULL as "
-                + "old_name, NULL as new_name "
-                + "FROM rcs_participant_event"
-                + " UNION "
-                + "SELECT event_type, event_id, originating_participant, origination_timestamp, "
-                + "NULL as old_alias, NULL as new_alias, rcs_thread_id, destination_participant, "
-                + "old_icon_uri, new_icon_uri, old_name, new_name "
-                + "FROM rcs_thread_event");
+                + "SELECT " + PARTICIPANT_ALIAS_CHANGED_EVENT_TYPE + " AS " + EVENT_TYPE_COLUMN
+                + ", " + EVENT_ID_COLUMN + ", " + SOURCE_PARTICIPANT_ID_COLUMN + ", "
+                + TIMESTAMP_COLUMN + ", " + NEW_ALIAS_COLUMN + ", NULL as " + RCS_THREAD_ID_COLUMN
+                + ", NULL as " + DESTINATION_PARTICIPANT_ID_COLUMN + ", NULL as "
+                + NEW_ICON_URI_COLUMN + ", NULL as " + NEW_NAME_COLUMN + " "
+                + "FROM " + RCS_PARTICIPANT_EVENT_TABLE + " "
+                + "UNION "
+                + "SELECT " + EVENT_TYPE_COLUMN + ", " + EVENT_ID_COLUMN + ", "
+                + SOURCE_PARTICIPANT_ID_COLUMN + ", " + TIMESTAMP_COLUMN + ", "
+                + "NULL as " + NEW_ALIAS_COLUMN + ", " + RCS_THREAD_ID_COLUMN + ", "
+                + DESTINATION_PARTICIPANT_ID_COLUMN + ", " + NEW_ICON_URI_COLUMN + ", "
+                + NEW_NAME_COLUMN + " "
+                + "FROM " + RCS_THREAD_EVENT_TABLE);
     }
 
     private final SQLiteOpenHelper mSqLiteOpenHelper;
diff --git a/src/com/android/providers/telephony/TelephonyProvider.java b/src/com/android/providers/telephony/TelephonyProvider.java
index 071005b..9535e30 100644
--- a/src/com/android/providers/telephony/TelephonyProvider.java
+++ b/src/com/android/providers/telephony/TelephonyProvider.java
@@ -481,6 +481,7 @@
             mContext = context;
             // Memory optimization - close idle connections after 30s of inactivity
             setIdleConnectionTimeout(IDLE_CONNECTION_TIMEOUT_MS);
+            setWriteAheadLoggingEnabled(false);
         }
 
         @VisibleForTesting