Move reset network settings into framework.

bug: 16161518
Change-Id: If4240339e8b242166c07ff2d1db140bb2e7ba00c
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 64a2d46..59eb996 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -122,6 +122,8 @@
     private static final int EVENT_EXCHANGE_SIM_IO_DONE = 32;
     private static final int CMD_SET_VOICEMAIL_NUMBER = 33;
     private static final int EVENT_SET_VOICEMAIL_NUMBER_DONE = 34;
+    private static final int CMD_SET_NETWORK_SELECTION_MODE_AUTOMATIC = 35;
+    private static final int EVENT_SET_NETWORK_SELECTION_MODE_AUTOMATIC_DONE = 36;
 
     /** The singleton instance. */
     private static PhoneInterfaceManager sInstance;
@@ -555,7 +557,7 @@
                 case CMD_GET_PREFERRED_NETWORK_TYPE:
                     request = (MainThreadRequest) msg.obj;
                     onCompleted = obtainMessage(EVENT_GET_PREFERRED_NETWORK_TYPE_DONE, request);
-                    mPhone.getPreferredNetworkType(onCompleted);
+                    getPhoneFromRequest(request).getPreferredNetworkType(onCompleted);
                     break;
 
                 case EVENT_GET_PREFERRED_NETWORK_TYPE_DONE:
@@ -583,7 +585,7 @@
                     request = (MainThreadRequest) msg.obj;
                     onCompleted = obtainMessage(EVENT_SET_PREFERRED_NETWORK_TYPE_DONE, request);
                     int networkType = (Integer) request.argument;
-                    mPhone.setPreferredNetworkType(networkType, onCompleted);
+                    getPhoneFromRequest(request).setPreferredNetworkType(networkType, onCompleted);
                     break;
 
                 case EVENT_SET_PREFERRED_NETWORK_TYPE_DONE:
@@ -617,6 +619,17 @@
                     handleNullReturnEvent(msg, "setVoicemailNumber");
                     break;
 
+                case CMD_SET_NETWORK_SELECTION_MODE_AUTOMATIC:
+                    request = (MainThreadRequest) msg.obj;
+                    onCompleted = obtainMessage(EVENT_SET_NETWORK_SELECTION_MODE_AUTOMATIC_DONE,
+                            request);
+                    getPhoneFromRequest(request).setNetworkSelectionModeAutomatic(onCompleted);
+                    break;
+
+                case EVENT_SET_NETWORK_SELECTION_MODE_AUTOMATIC_DONE:
+                    handleNullReturnEvent(msg, "setNetworkSelectionModeAutomatic");
+                    break;
+
                 default:
                     Log.w(LOG_TAG, "MainThreadHandler: unexpected message code: " + msg.what);
                     break;
@@ -1860,6 +1873,17 @@
     }
 
     /**
+     * Set the network selection mode to automatic.
+     *
+     */
+    @Override
+    public void setNetworkSelectionModeAutomatic(int subId) {
+        enforceModifyPermissionOrCarrierPrivilege();
+        if (DBG) log("setNetworkSelectionModeAutomatic: subId " + subId);
+        sendRequest(CMD_SET_NETWORK_SELECTION_MODE_AUTOMATIC, null, subId);
+    }
+
+    /**
      * Get the calculated preferred network type.
      * Used for debugging incorrect network type.
      *
@@ -1878,10 +1902,10 @@
      * @return the preferred network type, defined in RILConstants.java.
      */
     @Override
-    public int getPreferredNetworkType() {
+    public int getPreferredNetworkType(int subId) {
         enforceModifyPermissionOrCarrierPrivilege();
         if (DBG) log("getPreferredNetworkType");
-        int[] result = (int[]) sendRequest(CMD_GET_PREFERRED_NETWORK_TYPE, null);
+        int[] result = (int[]) sendRequest(CMD_GET_PREFERRED_NETWORK_TYPE, null, subId);
         int networkType = (result != null ? result[0] : -1);
         if (DBG) log("getPreferredNetworkType: " + networkType);
         return networkType;
@@ -1895,15 +1919,14 @@
      * @return true on success; false on any failure.
      */
     @Override
-    public boolean setPreferredNetworkType(int networkType) {
+    public boolean setPreferredNetworkType(int subId, int networkType) {
         enforceModifyPermissionOrCarrierPrivilege();
-        final int phoneSubId = mPhone.getSubId();
-        if (DBG) log("setPreferredNetworkType: type " + networkType);
-        Boolean success = (Boolean) sendRequest(CMD_SET_PREFERRED_NETWORK_TYPE, networkType);
+        if (DBG) log("setPreferredNetworkType: subId " + subId + " type " + networkType);
+        Boolean success = (Boolean) sendRequest(CMD_SET_PREFERRED_NETWORK_TYPE, networkType, subId);
         if (DBG) log("setPreferredNetworkType: " + (success ? "ok" : "fail"));
         if (success) {
             Settings.Global.putInt(mPhone.getContext().getContentResolver(),
-                    Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId, networkType);
+                    Settings.Global.PREFERRED_NETWORK_MODE + subId, networkType);
         }
         return success;
     }