diff options
| author | 2018-05-22 12:07:53 +0000 | |
|---|---|---|
| committer | 2018-05-22 12:07:53 +0000 | |
| commit | 468fdc3dd29f87e2959696d21b37e58aa1663bfd (patch) | |
| tree | 8ec0abb746fcfec72885a7c7488f4b7e3867b279 | |
| parent | 6df95fa08778b0639b75182d9dc16764d125408f (diff) | |
| parent | b3ab0d1e63fbbad007bb2a7da2fd4e1206d86c40 (diff) | |
Merge "Unify behavior of various cases of "no underlying networks"" into pi-dev
| -rw-r--r-- | services/core/java/com/android/server/connectivity/Vpn.java | 15 | ||||
| -rw-r--r-- | tests/net/java/com/android/server/ConnectivityServiceTest.java | 6 |
2 files changed, 11 insertions, 10 deletions
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index dd82950fe020..a91989838521 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -319,15 +319,12 @@ public class Vpn { boolean roaming = false; boolean congested = false; - if (ArrayUtils.isEmpty(underlyingNetworks)) { - // No idea what the underlying networks are; assume sane defaults - metered = true; - roaming = false; - congested = false; - } else { + boolean hadUnderlyingNetworks = false; + if (null != underlyingNetworks) { for (Network underlying : underlyingNetworks) { final NetworkCapabilities underlyingCaps = cm.getNetworkCapabilities(underlying); if (underlyingCaps == null) continue; + hadUnderlyingNetworks = true; for (int underlyingType : underlyingCaps.getTransportTypes()) { transportTypes = ArrayUtils.appendInt(transportTypes, underlyingType); } @@ -343,6 +340,12 @@ public class Vpn { congested |= !underlyingCaps.hasCapability(NET_CAPABILITY_NOT_CONGESTED); } } + if (!hadUnderlyingNetworks) { + // No idea what the underlying networks are; assume sane defaults + metered = true; + roaming = false; + congested = false; + } caps.setTransportTypes(transportTypes); caps.setLinkDownstreamBandwidthKbps(downKbps); diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java index cf7ab4294b98..220858081e93 100644 --- a/tests/net/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java @@ -4413,13 +4413,11 @@ public class ConnectivityServiceTest { && caps.hasCapability(NET_CAPABILITY_NOT_METERED), vpnNetworkAgent); - // Disconnect wifi too. No underlying networks should mean this is now metered, - // unfortunately a discrepancy in the current implementation has this unmetered. - // TODO : fix this. + // Disconnect wifi too. No underlying networks means this is now metered. mWiFiNetworkAgent.disconnect(); vpnNetworkCallback.expectCapabilitiesLike((caps) -> caps.hasTransport(TRANSPORT_VPN) && !caps.hasTransport(TRANSPORT_CELLULAR) && !caps.hasTransport(TRANSPORT_WIFI) - && caps.hasCapability(NET_CAPABILITY_NOT_METERED), + && !caps.hasCapability(NET_CAPABILITY_NOT_METERED), vpnNetworkAgent); mMockVpn.disconnect(); |