Merge "Add Iccid_prefix field"
diff --git a/src/com/android/providers/telephony/CarrierIdProvider.java b/src/com/android/providers/telephony/CarrierIdProvider.java
index a14923e..91fdf21 100644
--- a/src/com/android/providers/telephony/CarrierIdProvider.java
+++ b/src/com/android/providers/telephony/CarrierIdProvider.java
@@ -70,7 +70,7 @@
     private static final String TAG = CarrierIdProvider.class.getSimpleName();
 
     private static final String DATABASE_NAME = "carrierIdentification.db";
-    private static final int DATABASE_VERSION = 2;
+    private static final int DATABASE_VERSION = 3;
 
     private static final String ASSETS_PB_FILE = "carrier_list.pb";
     private static final String ASSETS_FILE_CHECKSUM_PREF_KEY = "assets_checksum";
@@ -105,6 +105,10 @@
      */
     private static final int APN_INDEX                   = 6;
     /**
+    * index 7: {@link CarrierIdentification#ICCID_PREFIX}
+    */
+    private static final int ICCID_PREFIX_INDEX          = 7;
+    /**
      * ending index of carrier attribute list.
      */
     private static final int CARRIER_ATTR_END_IDX        = APN_INDEX;
@@ -123,7 +127,8 @@
             CarrierIdentification.PLMN,
             CarrierIdentification.IMSI_PREFIX_XPATTERN,
             CarrierIdentification.SPN,
-            CarrierIdentification.APN));
+            CarrierIdentification.APN,
+            CarrierIdentification.ICCID_PREFIX));
 
     private CarrierIdDatabaseHelper mDbHelper;
 
@@ -138,6 +143,7 @@
                 + CarrierIdentification.IMSI_PREFIX_XPATTERN + " TEXT,"
                 + CarrierIdentification.SPN + " TEXT,"
                 + CarrierIdentification.APN + " TEXT,"
+                + CarrierIdentification.ICCID_PREFIX + " TEXT,"
                 + CarrierIdentification.NAME + " TEXT,"
                 + CarrierIdentification.CID + " INTEGER DEFAULT -1,"
                 + "UNIQUE (" + TextUtils.join(", ", CARRIERS_ID_UNIQUE_FIELDS) + "));";
@@ -409,6 +415,14 @@
                     found = true;
                 }
                 break;
+            case ICCID_PREFIX_INDEX:
+                for (String str : attr.iccidPrefix) {
+                     cv.put(CarrierIdentification.ICCID_PREFIX, str);
+                     convertCarrierAttrToContentValues(cv, cvs, attr, index + 1);
+                     cv.remove(CarrierIdentification.ICCID_PREFIX);
+                     found = true;
+                }
+                break;
             default:
                 Log.e(TAG, "unsupported index: " + index);
                 break;
diff --git a/tests/src/com/android/providers/telephony/CarrierIdProviderTest.java b/tests/src/com/android/providers/telephony/CarrierIdProviderTest.java
index 443247a..2bf069b 100644
--- a/tests/src/com/android/providers/telephony/CarrierIdProviderTest.java
+++ b/tests/src/com/android/providers/telephony/CarrierIdProviderTest.java
@@ -56,7 +56,8 @@
     private static final String dummy_imsi_prefix = "IMSI_PREFIX_DUMMY";
     private static final String dummy_spn = "SPN_DUMMY";
     private static final String dummy_apn = "APN_DUMMY";
-    private static final String  dummy_name = "NAME_DUMMY";
+    private static final String dummy_iccid_prefix = "ICCID_PREFIX_DUMMY";
+    private static final String dummy_name = "NAME_DUMMY";
     private static final int dummy_cid = 0;
 
     private MockContextWithProvider mContext;
@@ -271,7 +272,7 @@
         }
 
         Cursor findEntry = null;
-        String[] columns = {CarrierIdentification.CID};
+        String[] columns = {CarrierIdentification.CID, CarrierIdentification.ICCID_PREFIX};
         try {
             findEntry = mContentResolver.query(CarrierIdentification.CONTENT_URI, columns,
                     CarrierIdentification.MCCMNC + "=?", new String[] { dummy_mccmnc },
@@ -282,16 +283,18 @@
         assertEquals(2, findEntry.getCount());
 
         try {
-            // query based on mccmnc & gid1
+            // query based on mccmnc & gid1 & iccid_prefix
             findEntry = mContentResolver.query(CarrierIdentification.CONTENT_URI, columns,
-                    CarrierIdentification.MCCMNC + "=? and " + CarrierIdentification.GID1 + "=?",
-                    new String[] { dummy_mccmnc, dummy_gid1 }, null);
+                    CarrierIdentification.MCCMNC + "=? and " + CarrierIdentification.GID1 + "=? and "
+                    + CarrierIdentification.ICCID_PREFIX + "=?",
+                    new String[] { dummy_mccmnc, dummy_gid1, dummy_iccid_prefix }, null);
         } catch (Exception e) {
             Log.d(TAG, "Query failed:" + e);
         }
         assertEquals(1, findEntry.getCount());
         findEntry.moveToFirst();
         assertEquals(dummy_cid, findEntry.getInt(0));
+        assertEquals(dummy_iccid_prefix, findEntry.getString(1));
     }
 
     private static ContentValues createCarrierInfoInternal() {
@@ -303,6 +306,7 @@
         contentValues.put(CarrierIdentification.IMSI_PREFIX_XPATTERN, dummy_imsi_prefix);
         contentValues.put(CarrierIdentification.SPN, dummy_spn);
         contentValues.put(CarrierIdentification.APN, dummy_apn);
+        contentValues.put(CarrierIdentification.ICCID_PREFIX, dummy_iccid_prefix);
         contentValues.put(CarrierIdentification.NAME, dummy_name);
         contentValues.put(CarrierIdentification.CID, dummy_cid);
         return contentValues;