Check if network has partial connectivity
In some networks, network validation may only get success
result for http probe but fail result for https probe.
For this kind of network, it may still work at some websites
or apps, but user didn't know about that. In order to fix this
issue, we will check if network has partial connectivity and
notify user to make a choice if they want to use this partial
connectivity or not.
Bug: 113450764
Test: 1. Build pass.
2. Fake partial connectivity case for testing.
3. atest FrameworksNetTests
4. atest NetworkStackTests
Change-Id: I69ed00ac4850904ff708c9fef22e148879a10e92
This commit is contained in:
@@ -20,6 +20,7 @@ import static android.net.NetworkCapabilities.LINK_BANDWIDTH_UNSPECIFIED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_CBS;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_EIMS;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_FOREGROUND;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_MMS;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
|
||||
@@ -27,6 +28,7 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_OEM_PAID;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVITY;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_WIFI_P2P;
|
||||
import static android.net.NetworkCapabilities.RESTRICTED_CAPABILITIES;
|
||||
@@ -334,6 +336,24 @@ public class NetworkCapabilitiesTest {
|
||||
assertTrue(request.satisfiedByNetworkCapabilities(network));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConnectivityManagedCapabilities() {
|
||||
NetworkCapabilities nc = new NetworkCapabilities();
|
||||
assertFalse(nc.hasConnectivityManagedCapability());
|
||||
// Check every single system managed capability.
|
||||
nc.addCapability(NET_CAPABILITY_CAPTIVE_PORTAL);
|
||||
assertTrue(nc.hasConnectivityManagedCapability());
|
||||
nc.removeCapability(NET_CAPABILITY_CAPTIVE_PORTAL);
|
||||
nc.addCapability(NET_CAPABILITY_FOREGROUND);
|
||||
assertTrue(nc.hasConnectivityManagedCapability());
|
||||
nc.removeCapability(NET_CAPABILITY_FOREGROUND);
|
||||
nc.addCapability(NET_CAPABILITY_PARTIAL_CONNECTIVITY);
|
||||
assertTrue(nc.hasConnectivityManagedCapability());
|
||||
nc.removeCapability(NET_CAPABILITY_PARTIAL_CONNECTIVITY);
|
||||
nc.addCapability(NET_CAPABILITY_VALIDATED);
|
||||
assertTrue(nc.hasConnectivityManagedCapability());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEqualsNetCapabilities() {
|
||||
NetworkCapabilities nc1 = new NetworkCapabilities();
|
||||
|
||||
Reference in New Issue
Block a user