VPN: migrate from generic Bundle to our own Parcelable VpnConfig.

Note that VpnConfig is for internal use only.
Also remove hidden methods from ConnectivityManager.

Change-Id: Ic298c4dc9a2c6c452bd8f4be6fa84e7ac489c0c4
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index c6f4c20..385448f 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -48,7 +48,6 @@
 import android.net.vpn.VpnManager;
 import android.net.wifi.WifiStateTracker;
 import android.os.Binder;
-import android.os.Bundle;
 import android.os.FileUtils;
 import android.os.Handler;
 import android.os.HandlerThread;
@@ -67,6 +66,7 @@
 import android.util.Slog;
 import android.util.SparseIntArray;
 
+import com.android.internal.net.VpnConfig;
 import com.android.internal.telephony.Phone;
 import com.android.server.connectivity.Tethering;
 import com.android.server.connectivity.Vpn;
@@ -2396,24 +2396,37 @@
         return value;
     }
 
-    // @see ConnectivityManager#protectVpn(ParcelFileDescriptor)
-    // Permission checks are done in Vpn class.
+    /**
+     * Protect a socket from VPN routing rules. This method is used by
+     * VpnBuilder and not available in ConnectivityManager. Permission
+     * checks are done in Vpn class.
+     * @hide
+     */
     @Override
     public void protectVpn(ParcelFileDescriptor socket) {
         mVpn.protect(socket, getDefaultInterface());
     }
 
-    // @see ConnectivityManager#prepareVpn(String)
-    // Permission checks are done in Vpn class.
+    /**
+     * Prepare for a VPN application. This method is used by VpnDialogs
+     * and not available in ConnectivityManager. Permission checks are
+     * done in Vpn class.
+     * @hide
+     */
     @Override
     public String prepareVpn(String packageName) {
         return mVpn.prepare(packageName);
     }
 
-    // @see ConnectivityManager#establishVpn(Bundle)
-    // Permission checks are done in Vpn class.
+    /**
+     * Configure a TUN interface and return its file descriptor. Parameters
+     * are encoded and opaque to this class. This method is used by VpnBuilder
+     * and not available in ConnectivityManager. Permission checks are done
+     * in Vpn class.
+     * @hide
+     */
     @Override
-    public ParcelFileDescriptor establishVpn(Bundle config) {
+    public ParcelFileDescriptor establishVpn(VpnConfig config) {
         return mVpn.establish(config);
     }