diff options
author | Ye Wen <ywen@google.com> | 2014-07-21 14:19:01 -0700 |
---|---|---|
committer | Ye Wen <ywen@google.com> | 2014-07-23 11:41:17 -0700 |
commit | b87875eb88216a84c3870e574780921eb00d34c3 (patch) | |
tree | 46cfe5ebb173e03d69fbb6d71c9b8c85156d1d6f /core/java/android/net | |
parent | 5320b04fe74f0120f84dd9fe09785491f42a766b (diff) | |
download | frameworks_base-b87875eb88216a84c3870e574780921eb00d34c3.zip frameworks_base-b87875eb88216a84c3870e574780921eb00d34c3.tar.gz frameworks_base-b87875eb88216a84c3870e574780921eb00d34c3.tar.bz2 |
Infer legacy network type for ConnectivityManager.requestNetwork
ConnectivityManager.requestNetwork pass TYPE_NONE to
sendRequestForNetwork which prevents it from being used with legacy API
requestRouteToHostAddress. This CL infers the legacy network type
automatically from the network capabilities.
b/16324360
Change-Id: I591d38f875f42f56e8cfc157db2069c9eee0ee26
Diffstat (limited to 'core/java/android/net')
-rw-r--r-- | core/java/android/net/ConnectivityManager.java | 65 |
1 files changed, 62 insertions, 3 deletions
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index 13364cd..e31f012 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -1084,6 +1084,65 @@ public class ConnectivityManager { return null; } + private int inferLegacyTypeForNetworkCapabilities(NetworkCapabilities netCap) { + if (netCap == null) { + return TYPE_NONE; + } + if (!netCap.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) { + return TYPE_NONE; + } + if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_CBS)) { + if (netCap.equals(networkCapabilitiesForFeature(TYPE_MOBILE, "enableCBS"))) { + return TYPE_MOBILE_CBS; + } else { + return TYPE_NONE; + } + } + if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_IMS)) { + if (netCap.equals(networkCapabilitiesForFeature(TYPE_MOBILE, "enableIMS"))) { + return TYPE_MOBILE_IMS; + } else { + return TYPE_NONE; + } + } + if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_FOTA)) { + if (netCap.equals(networkCapabilitiesForFeature(TYPE_MOBILE, "enableFOTA"))) { + return TYPE_MOBILE_FOTA; + } else { + return TYPE_NONE; + } + } + if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_DUN)) { + if (netCap.equals(networkCapabilitiesForFeature(TYPE_MOBILE, "enableDUN"))) { + return TYPE_MOBILE_DUN; + } else { + return TYPE_NONE; + } + } + if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_SUPL)) { + if (netCap.equals(networkCapabilitiesForFeature(TYPE_MOBILE, "enableSUPL"))) { + return TYPE_MOBILE_SUPL; + } else { + return TYPE_NONE; + } + } + if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_MMS)) { + if (netCap.equals(networkCapabilitiesForFeature(TYPE_MOBILE, "enableMMS"))) { + return TYPE_MOBILE_MMS; + } else { + return TYPE_NONE; + } + } + if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) { + if (netCap.equals(networkCapabilitiesForFeature(TYPE_MOBILE, "enableHIPRI"))) { + return TYPE_MOBILE_HIPRI; + } else { + return TYPE_NONE; + } + } + return TYPE_NONE; + } + private int legacyTypeForNetworkCapabilities(NetworkCapabilities netCap) { if (netCap == null) return TYPE_NONE; if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_CBS)) { @@ -1694,7 +1753,7 @@ public class ConnectivityManager { /** * Report a problem network to the framework. This provides a hint to the system - * that there might be connectivity problems on this network and may cause + * that there might be connectivity problems on this network and may cause * the framework to re-evaluate network connectivity and/or switch to another * network. * @@ -2344,7 +2403,7 @@ public class ConnectivityManager { */ public void requestNetwork(NetworkRequest request, NetworkCallback networkCallback) { sendRequestForNetwork(request.networkCapabilities, networkCallback, 0, - REQUEST, TYPE_NONE); + REQUEST, inferLegacyTypeForNetworkCapabilities(request.networkCapabilities)); } /** @@ -2366,7 +2425,7 @@ public class ConnectivityManager { public void requestNetwork(NetworkRequest request, NetworkCallback networkCallback, int timeoutMs) { sendRequestForNetwork(request.networkCapabilities, networkCallback, timeoutMs, - REQUEST, TYPE_NONE); + REQUEST, inferLegacyTypeForNetworkCapabilities(request.networkCapabilities)); } /** |