From 6b818de29a5c273aad99eb3f5456f88169c911f4 Mon Sep 17 00:00:00 2001 From: Hung-ying Tyan Date: Wed, 19 Jan 2011 16:48:38 +0800 Subject: Make VpnService synchronous API. This eases VpnSettings on dealing with multiple-activity-instance problem (i.e., SettingsActivity and VpnSettingsActivity). + Most of the code is moved from the VpnServices package to vpn/java/. + VpnManager and VpnServiceBinder are revised to provide synchronous API. + Add a new method isIdle() to IVpnService.aidl. Related bug: 3293236 (need to deal with multiple-activity-instance problem) Change-Id: I03afa3b3af85d7b4ef800683cd075c356a9266c4 --- vpn/java/android/net/vpn/IVpnService.aidl | 13 +- vpn/java/android/net/vpn/VpnManager.java | 106 +++-- vpn/java/com/android/server/vpn/DaemonProxy.java | 199 +++++++++ .../android/server/vpn/L2tpIpsecPskService.java | 47 ++ .../com/android/server/vpn/L2tpIpsecService.java | 50 +++ vpn/java/com/android/server/vpn/L2tpService.java | 35 ++ vpn/java/com/android/server/vpn/PptpService.java | 34 ++ .../com/android/server/vpn/VpnConnectingError.java | 35 ++ vpn/java/com/android/server/vpn/VpnDaemons.java | 147 +++++++ vpn/java/com/android/server/vpn/VpnService.java | 477 +++++++++++++++++++++ .../com/android/server/vpn/VpnServiceBinder.java | 117 +++++ 11 files changed, 1223 insertions(+), 37 deletions(-) create mode 100644 vpn/java/com/android/server/vpn/DaemonProxy.java create mode 100644 vpn/java/com/android/server/vpn/L2tpIpsecPskService.java create mode 100644 vpn/java/com/android/server/vpn/L2tpIpsecService.java create mode 100644 vpn/java/com/android/server/vpn/L2tpService.java create mode 100644 vpn/java/com/android/server/vpn/PptpService.java create mode 100644 vpn/java/com/android/server/vpn/VpnConnectingError.java create mode 100644 vpn/java/com/android/server/vpn/VpnDaemons.java create mode 100644 vpn/java/com/android/server/vpn/VpnService.java create mode 100644 vpn/java/com/android/server/vpn/VpnServiceBinder.java (limited to 'vpn/java') diff --git a/vpn/java/android/net/vpn/IVpnService.aidl b/vpn/java/android/net/vpn/IVpnService.aidl index fedccb0..6bf3edd 100644 --- a/vpn/java/android/net/vpn/IVpnService.aidl +++ b/vpn/java/android/net/vpn/IVpnService.aidl @@ -24,10 +24,11 @@ import android.net.vpn.VpnProfile; */ interface IVpnService { /** - * Sets up the VPN connection. + * Sets up a VPN connection. * @param profile the profile object * @param username the username for authentication * @param password the corresponding password for authentication + * @return true if VPN is successfully connected */ boolean connect(in VpnProfile profile, String username, String password); @@ -37,7 +38,13 @@ interface IVpnService { void disconnect(); /** - * Makes the service broadcast the connectivity state. + * Gets the the current connection state. */ - void checkStatus(in VpnProfile profile); + String getState(in VpnProfile profile); + + /** + * Returns the idle state. + * @return true if the system is not connecting/connected to a VPN + */ + boolean isIdle(); } diff --git a/vpn/java/android/net/vpn/VpnManager.java b/vpn/java/android/net/vpn/VpnManager.java index ce40b5d..02486bb 100644 --- a/vpn/java/android/net/vpn/VpnManager.java +++ b/vpn/java/android/net/vpn/VpnManager.java @@ -16,17 +16,19 @@ package android.net.vpn; -import java.io.File; - import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.ServiceConnection; import android.os.Environment; +import android.os.IBinder; +import android.os.RemoteException; +import android.os.ServiceManager; import android.os.SystemProperties; import android.util.Log; +import com.android.server.vpn.VpnServiceBinder; + /** * The class provides interface to manage all VPN-related tasks, including: *