fix issues with precise carrier id

1. new carrier id table verision 7 which includes precise carrier id for
some carriers.
2. include precise carrier id information to carrier id db

Bug: 110559381
Test: Manual
Change-Id: I9b45fbdbb3b134cadc666b061d4cb1de2f3330f1
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/CarrierIdProvider.java b/src/com/android/providers/telephony/CarrierIdProvider.java
index 77093a6..07298ec 100644
--- a/src/com/android/providers/telephony/CarrierIdProvider.java
+++ b/src/com/android/providers/telephony/CarrierIdProvider.java
@@ -383,6 +383,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) {