summaryrefslogtreecommitdiffstats
path: root/core/java/android/net
diff options
context:
space:
mode:
authorYe Wen <ywen@google.com>2014-07-21 14:19:01 -0700
committerYe Wen <ywen@google.com>2014-07-23 11:41:17 -0700
commitb87875eb88216a84c3870e574780921eb00d34c3 (patch)
tree46cfe5ebb173e03d69fbb6d71c9b8c85156d1d6f /core/java/android/net
parent5320b04fe74f0120f84dd9fe09785491f42a766b (diff)
downloadframeworks_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.java65
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));
}
/**