From 15a4153880e3dd3a3c377b518ae57f7dd6d52d15 Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Tue, 21 Aug 2012 19:27:00 -0700 Subject: [PATCH] Add BT - DataTracker connection Allows the external BT stack the means to communicate with ConnectivityService during reverse tethering. bug:8445208 Change-Id: Ice7dfb0b50c9481d359aed14a51372878185171c --- core/java/android/net/ConnectivityManager.java | 14 ++++++++++++++ core/java/android/net/IConnectivityManager.aidl | 3 +++ .../com/android/server/ConnectivityService.java | 11 ++++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index 3a04c271ca..4e4980d557 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -23,6 +23,7 @@ import android.annotation.SdkConstant.SdkConstantType; import android.content.Context; import android.os.Binder; import android.os.Build.VERSION_CODES; +import android.os.Messenger; import android.os.RemoteException; import android.provider.Settings; @@ -1280,4 +1281,17 @@ public class ConnectivityManager { } } + /** + * Supply the backend messenger for a network tracker + * + * @param type NetworkType to set + * @param messenger {@link Messenger} + * {@hide} + */ + public void supplyMessenger(int networkType, Messenger messenger) { + try { + mService.supplyMessenger(networkType, messenger); + } catch (RemoteException e) { + } + } } diff --git a/core/java/android/net/IConnectivityManager.aidl b/core/java/android/net/IConnectivityManager.aidl index 056fa030e9..9e9b43d9ab 100644 --- a/core/java/android/net/IConnectivityManager.aidl +++ b/core/java/android/net/IConnectivityManager.aidl @@ -22,6 +22,7 @@ import android.net.NetworkQuotaInfo; import android.net.NetworkState; import android.net.ProxyProperties; import android.os.IBinder; +import android.os.Messenger; import android.os.ParcelFileDescriptor; import com.android.internal.net.LegacyVpnInfo; @@ -126,4 +127,6 @@ interface IConnectivityManager boolean updateLockdownVpn(); void captivePortalCheckComplete(in NetworkInfo info); + + void supplyMessenger(int networkType, in Messenger messenger); } diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index 6dcb4034e5..0bb0366db9 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -74,6 +74,7 @@ import android.os.IBinder; import android.os.INetworkManagementService; import android.os.Looper; import android.os.Message; +import android.os.Messenger; import android.os.ParcelFileDescriptor; import android.os.PowerManager; import android.os.Process; @@ -3220,7 +3221,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { throwIfLockdownEnabled(); try { int type = mActiveDefaultNetwork; - if (ConnectivityManager.isNetworkTypeValid(type)) { + if (ConnectivityManager.isNetworkTypeValid(type) && mNetTrackers[type] != null) { mVpn.protect(socket, mNetTrackers[type].getLinkProperties().getInterfaceName()); return true; } @@ -3425,4 +3426,12 @@ public class ConnectivityService extends IConnectivityManager.Stub { throw new IllegalStateException("Unavailable in lockdown mode"); } } + + public void supplyMessenger(int networkType, Messenger messenger) { + enforceConnectivityInternalPermission(); + + if (isNetworkTypeValid(networkType) && mNetTrackers[networkType] != null) { + mNetTrackers[networkType].supplyMessenger(messenger); + } + } }