Add the protocol column to the carriers table.

Bug: 3333633
Change-Id: I18c2a6fe9506311439ea3076814d2709eb27c841
diff --git a/src/com/android/providers/telephony/TelephonyProvider.java b/src/com/android/providers/telephony/TelephonyProvider.java
index 85bd0f6..274d2cb 100644
--- a/src/com/android/providers/telephony/TelephonyProvider.java
+++ b/src/com/android/providers/telephony/TelephonyProvider.java
@@ -50,7 +50,7 @@
 {
     private static final String DATABASE_NAME = "telephony.db";
 
-    private static final int DATABASE_VERSION = 5 << 16;
+    private static final int DATABASE_VERSION = 6 << 16;
     private static final int URL_TELEPHONY = 1;
     private static final int URL_CURRENT = 2;
     private static final int URL_ID = 3;
@@ -135,7 +135,9 @@
                     "mmsc TEXT," +
                     "authtype INTEGER," +
                     "type TEXT," +
-                    "current INTEGER);");
+                    "current INTEGER," +
+                    "protocol TEXT," +
+                    "roaming_protocol TEXT);");
 
             initDatabase(db);
         }
@@ -204,6 +206,14 @@
 
                 oldVersion = 5 << 16 | 6;
             }
+            if (oldVersion < (6 << 16 | 6)) {
+                // Add protcol fields to the APN. The XML file does not change.
+                db.execSQL("ALTER TABLE " + CARRIERS_TABLE +
+                        " ADD COLUMN protocol TEXT DEFAULT IP;");
+                db.execSQL("ALTER TABLE " + CARRIERS_TABLE +
+                        " ADD COLUMN roaming_protocol TEXT DEFAULT IP;");
+                oldVersion = 6 << 16 | 6;
+            }
         }
 
         /**
@@ -260,6 +270,16 @@
                 map.put(Telephony.Carriers.AUTH_TYPE, Integer.parseInt(auth));
             }
 
+            String protocol = parser.getAttributeValue(null, "protocol");
+            if (protocol != null) {
+                map.put(Telephony.Carriers.PROTOCOL, protocol);
+            }
+
+            String roamingProtocol = parser.getAttributeValue(null, "roaming_protocol");
+            if (roamingProtocol != null) {
+                map.put(Telephony.Carriers.ROAMING_PROTOCOL, roamingProtocol);
+            }
+
             return map;
         }
 
@@ -295,6 +315,12 @@
             if (row.containsKey(Telephony.Carriers.AUTH_TYPE) == false) {
                 row.put(Telephony.Carriers.AUTH_TYPE, -1);
             }
+            if (row.containsKey(Telephony.Carriers.PROTOCOL) == false) {
+                row.put(Telephony.Carriers.PROTOCOL, "IP");
+            }
+            if (row.containsKey(Telephony.Carriers.ROAMING_PROTOCOL) == false) {
+                row.put(Telephony.Carriers.ROAMING_PROTOCOL, "IP");
+            }
             db.insert(CARRIERS_TABLE, null, row);
         }
     }
@@ -400,36 +426,42 @@
 
                 // TODO Review this. This code should probably not bet here.
                 // It is valid for the database to return a null string.
-                if (values.containsKey(Telephony.Carriers.NAME) == false) {
+                if (!values.containsKey(Telephony.Carriers.NAME)) {
                     values.put(Telephony.Carriers.NAME, "");
                 }
-                if (values.containsKey(Telephony.Carriers.APN) == false) {
+                if (!values.containsKey(Telephony.Carriers.APN)) {
                     values.put(Telephony.Carriers.APN, "");
                 }
-                if (values.containsKey(Telephony.Carriers.PORT) == false) {
+                if (!values.containsKey(Telephony.Carriers.PORT)) {
                     values.put(Telephony.Carriers.PORT, "");
                 }
-                if (values.containsKey(Telephony.Carriers.PROXY) == false) {
+                if (!values.containsKey(Telephony.Carriers.PROXY)) {
                     values.put(Telephony.Carriers.PROXY, "");
                 }
-                if (values.containsKey(Telephony.Carriers.USER) == false) {
+                if (!values.containsKey(Telephony.Carriers.USER)) {
                     values.put(Telephony.Carriers.USER, "");
                 }
-                if (values.containsKey(Telephony.Carriers.SERVER) == false) {
+                if (!values.containsKey(Telephony.Carriers.SERVER)) {
                     values.put(Telephony.Carriers.SERVER, "");
                 }
-                if (values.containsKey(Telephony.Carriers.PASSWORD) == false) {
+                if (!values.containsKey(Telephony.Carriers.PASSWORD)) {
                     values.put(Telephony.Carriers.PASSWORD, "");
                 }
-                if (values.containsKey(Telephony.Carriers.MMSPORT) == false) {
+                if (!values.containsKey(Telephony.Carriers.MMSPORT)) {
                     values.put(Telephony.Carriers.MMSPORT, "");
                 }
-                if (values.containsKey(Telephony.Carriers.MMSPROXY) == false) {
+                if (!values.containsKey(Telephony.Carriers.MMSPROXY)) {
                     values.put(Telephony.Carriers.MMSPROXY, "");
                 }
-                if (values.containsKey(Telephony.Carriers.AUTH_TYPE) == false) {
+                if (!values.containsKey(Telephony.Carriers.AUTH_TYPE)) {
                     values.put(Telephony.Carriers.AUTH_TYPE, -1);
                 }
+                if (!values.containsKey(Telephony.Carriers.PROTOCOL)) {
+                    values.put(Telephony.Carriers.PROTOCOL, "IP");
+                }
+                if (!values.containsKey(Telephony.Carriers.ROAMING_PROTOCOL)) {
+                    values.put(Telephony.Carriers.ROAMING_PROTOCOL, "IP");
+                }
 
 
                 long rowID = db.insert(CARRIERS_TABLE, null, values);