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
This commit is contained in:
@@ -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)) {
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user