summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--service/java/com/android/server/wifi/aware/WifiAwareDataPathStateManager.java36
-rw-r--r--tests/wifitests/src/com/android/server/wifi/aware/WifiAwareDataPathStateManagerTest.java11
2 files changed, 35 insertions, 12 deletions
diff --git a/service/java/com/android/server/wifi/aware/WifiAwareDataPathStateManager.java b/service/java/com/android/server/wifi/aware/WifiAwareDataPathStateManager.java
index 5842a3bf8..b0a3f027a 100644
--- a/service/java/com/android/server/wifi/aware/WifiAwareDataPathStateManager.java
+++ b/service/java/com/android/server/wifi/aware/WifiAwareDataPathStateManager.java
@@ -22,12 +22,15 @@ import android.net.ConnectivityManager;
import android.net.IpPrefix;
import android.net.LinkAddress;
import android.net.LinkProperties;
+import android.net.MatchAllNetworkSpecifier;
import android.net.NetworkAgent;
import android.net.NetworkCapabilities;
import android.net.NetworkFactory;
import android.net.NetworkInfo;
import android.net.NetworkRequest;
+import android.net.NetworkSpecifier;
import android.net.RouteInfo;
+import android.net.StringNetworkSpecifier;
import android.net.wifi.aware.WifiAwareManager;
import android.os.IBinder;
import android.os.INetworkManagementService;
@@ -113,8 +116,7 @@ public class WifiAwareDataPathStateManager {
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
.addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED);
- mNetworkCapabilitiesFilter
- .setNetworkSpecifier(NetworkCapabilities.MATCH_ALL_REQUESTS_NETWORK_SPECIFIER);
+ mNetworkCapabilitiesFilter.setNetworkSpecifier(new MatchAllNetworkSpecifier());
mNetworkCapabilitiesFilter.setLinkUpstreamBandwidthKbps(NETWORK_FACTORY_BANDWIDTH_AVAIL);
mNetworkCapabilitiesFilter.setLinkDownstreamBandwidthKbps(NETWORK_FACTORY_BANDWIDTH_AVAIL);
mNetworkCapabilitiesFilter.setSignalStrength(NETWORK_FACTORY_SIGNAL_STRENGTH_AVAIL);
@@ -568,12 +570,17 @@ public class WifiAwareDataPathStateManager {
return false;
}
- String networkSpecifier = request.networkCapabilities.getNetworkSpecifier();
- if (TextUtils.isEmpty(networkSpecifier)) {
+ NetworkSpecifier networkSpecifierObj =
+ request.networkCapabilities.getNetworkSpecifier();
+ if (networkSpecifierObj == null
+ || !(networkSpecifierObj instanceof StringNetworkSpecifier)
+ || TextUtils.isEmpty(
+ ((StringNetworkSpecifier) networkSpecifierObj).specifier)) {
Log.w(TAG, "WifiAwareNetworkFactory.acceptRequest: request=" + request
- + " - empty (or null) NetworkSpecifier");
+ + " - null, empty, or not a StringNetworkSpecifier");
return false;
}
+ String networkSpecifier = ((StringNetworkSpecifier) networkSpecifierObj).specifier;
// look up specifier - are we being called again?
AwareNetworkRequestInformation nnri = mNetworkRequestsCache.get(networkSpecifier);
@@ -609,7 +616,13 @@ public class WifiAwareDataPathStateManager {
+ networkRequest + ", score=" + score);
}
- String networkSpecifier = networkRequest.networkCapabilities.getNetworkSpecifier();
+ NetworkSpecifier networkSpecifierObj =
+ networkRequest.networkCapabilities.getNetworkSpecifier();
+ String networkSpecifier = "";
+ if (networkSpecifierObj != null
+ && networkSpecifierObj instanceof StringNetworkSpecifier) {
+ networkSpecifier = ((StringNetworkSpecifier) networkSpecifierObj).specifier;
+ }
AwareNetworkRequestInformation nnri = mNetworkRequestsCache.get(networkSpecifier);
if (nnri == null) {
Log.e(TAG, "WifiAwareNetworkFactory.needNetworkFor: networkRequest="
@@ -656,7 +669,14 @@ public class WifiAwareDataPathStateManager {
+ networkRequest);
}
- String networkSpecifier = networkRequest.networkCapabilities.getNetworkSpecifier();
+ NetworkSpecifier networkSpecifierObj =
+ networkRequest.networkCapabilities.getNetworkSpecifier();
+ String networkSpecifier = "";
+ if (networkSpecifierObj != null
+ && networkSpecifierObj instanceof StringNetworkSpecifier) {
+ networkSpecifier = ((StringNetworkSpecifier) networkSpecifierObj).specifier;
+ }
+
AwareNetworkRequestInformation nnri = mNetworkRequestsCache.get(networkSpecifier);
if (nnri == null) {
Log.e(TAG, "WifiAwareNetworkFactory.releaseNetworkFor: networkRequest="
@@ -1034,7 +1054,7 @@ public class WifiAwareDataPathStateManager {
networkInfo.setIsAvailable(true);
networkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, null, null);
- networkCapabilities.setNetworkSpecifier(networkSpecifier);
+ networkCapabilities.setNetworkSpecifier(new StringNetworkSpecifier(networkSpecifier));
linkProperties.setInterfaceName(nnri.interfaceName);
linkProperties.addLinkAddress(new LinkAddress(linkLocal, 64));
diff --git a/tests/wifitests/src/com/android/server/wifi/aware/WifiAwareDataPathStateManagerTest.java b/tests/wifitests/src/com/android/server/wifi/aware/WifiAwareDataPathStateManagerTest.java
index 29d0d12a6..912dce2f3 100644
--- a/tests/wifitests/src/com/android/server/wifi/aware/WifiAwareDataPathStateManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/aware/WifiAwareDataPathStateManagerTest.java
@@ -37,6 +37,7 @@ import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.net.NetworkFactory;
import android.net.NetworkRequest;
+import android.net.StringNetworkSpecifier;
import android.net.wifi.aware.AttachCallback;
import android.net.wifi.aware.ConfigRequest;
import android.net.wifi.aware.DiscoverySession;
@@ -417,10 +418,12 @@ public class WifiAwareDataPathStateManagerTest {
doPublish);
// corrupt the network specifier: reverse the role (so it's mis-matched)
- JSONObject jsonObject = new JSONObject(nr.networkCapabilities.getNetworkSpecifier());
+ JSONObject jsonObject = new JSONObject(
+ ((StringNetworkSpecifier) nr.networkCapabilities.getNetworkSpecifier()).specifier);
jsonObject.put(WifiAwareManager.NETWORK_SPECIFIER_KEY_ROLE,
1 - jsonObject.getInt(WifiAwareManager.NETWORK_SPECIFIER_KEY_ROLE));
- nr.networkCapabilities.setNetworkSpecifier(jsonObject.toString());
+ nr.networkCapabilities.setNetworkSpecifier(
+ new StringNetworkSpecifier(jsonObject.toString()));
Message reqNetworkMsg = Message.obtain();
reqNetworkMsg.what = NetworkFactory.CMD_REQUEST_NETWORK;
@@ -691,7 +694,7 @@ public class WifiAwareDataPathStateManagerTest {
nc.addTransportType(NetworkCapabilities.TRANSPORT_WIFI_AWARE);
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN).addCapability(
NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
- nc.setNetworkSpecifier(ns);
+ nc.setNetworkSpecifier(new StringNetworkSpecifier(ns));
nc.setLinkUpstreamBandwidthKbps(1);
nc.setLinkDownstreamBandwidthKbps(1);
nc.setSignalStrength(1);
@@ -729,7 +732,7 @@ public class WifiAwareDataPathStateManagerTest {
nc.addTransportType(NetworkCapabilities.TRANSPORT_WIFI_AWARE);
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN).addCapability(
NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
- nc.setNetworkSpecifier(ns);
+ nc.setNetworkSpecifier(new StringNetworkSpecifier(ns));
nc.setLinkUpstreamBandwidthKbps(1);
nc.setLinkDownstreamBandwidthKbps(1);
nc.setSignalStrength(1);