Add MatchNonThreadLocalNetworks flag in NetworkCapabilities
This is for backwards compatibility. Apps targeting V or lower
SDK should not see Tethering network agent.
This restriction is still disabled to maintain no-op in this
change. Will be enabled when introducing ConnectivityService
part in the subsequent change.
Test: atest CtsNetTestCases:android.net.NetworkCapabilitiesTest \
ConnectivityCoverageTests:android.net.connectivity.com.android.server \
--update-device
Bug: 349487600
Change-Id: I99405ab62e82ff4b7fcebffd3a1a31ec6d8962a9
This commit is contained in:
parent
23cfd04e9b
commit
f3ae766e8e
1 changed files with 145 additions and 5 deletions
|
|
@ -56,6 +56,7 @@ import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
|||
import static android.net.NetworkCapabilities.TRANSPORT_ETHERNET;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_SATELLITE;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_TEST;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_THREAD;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_USB;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_VPN;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
|
||||
|
|
@ -1532,4 +1533,93 @@ public class NetworkCapabilitiesTest {
|
|||
nc.setReservationId(43);
|
||||
assertNotEquals(nc, other);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMatchNonThreadLocalNetworks_equals() {
|
||||
final NetworkCapabilities nc = new NetworkCapabilities();
|
||||
nc.setMatchNonThreadLocalNetworks(true);
|
||||
final NetworkCapabilities other = new NetworkCapabilities(nc);
|
||||
assertEquals(nc, other);
|
||||
|
||||
nc.setMatchNonThreadLocalNetworks(false);
|
||||
assertNotEquals(nc, other);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMatchNonThreadLocalNetworks_enabled() {
|
||||
doTestMatchNonThreadLocalNetworks(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMatchNonThreadLocalNetworks_disabled() {
|
||||
doTestMatchNonThreadLocalNetworks(false);
|
||||
}
|
||||
|
||||
private void doTestMatchNonThreadLocalNetworks(boolean enabled) {
|
||||
// Setup request NCs.
|
||||
final NetworkCapabilities noTransportRequestNc = new NetworkCapabilities();
|
||||
final NetworkCapabilities threadRequestNc =
|
||||
new NetworkCapabilities.Builder().addTransportType(TRANSPORT_THREAD).build();
|
||||
final NetworkCapabilities wifiRequestNc =
|
||||
new NetworkCapabilities.Builder().addTransportType(TRANSPORT_WIFI).build();
|
||||
final NetworkCapabilities multiTransportRequestNc =
|
||||
new NetworkCapabilities.Builder().addTransportType(
|
||||
TRANSPORT_THREAD).addTransportType(TRANSPORT_WIFI).build();
|
||||
|
||||
// Setup network NCs.
|
||||
final NetworkCapabilities localNoTransportNc = new NetworkCapabilities.Builder()
|
||||
.addCapability(NET_CAPABILITY_LOCAL_NETWORK).build();
|
||||
final NetworkCapabilities localThreadsNc = new NetworkCapabilities.Builder()
|
||||
.addCapability(NET_CAPABILITY_LOCAL_NETWORK)
|
||||
.addTransportType(TRANSPORT_THREAD).build();
|
||||
final NetworkCapabilities localWifiNc = new NetworkCapabilities.Builder()
|
||||
.addCapability(NET_CAPABILITY_LOCAL_NETWORK)
|
||||
.addTransportType(TRANSPORT_WIFI).build();
|
||||
final NetworkCapabilities wanWifiNc = new NetworkCapabilities.Builder()
|
||||
.addTransportType(TRANSPORT_WIFI).build();
|
||||
|
||||
// Mark flags accordingly.
|
||||
noTransportRequestNc.setMatchNonThreadLocalNetworks(enabled);
|
||||
threadRequestNc.setMatchNonThreadLocalNetworks(enabled);
|
||||
wifiRequestNc.setMatchNonThreadLocalNetworks(enabled);
|
||||
multiTransportRequestNc.setMatchNonThreadLocalNetworks(enabled);
|
||||
|
||||
if (enabled) {
|
||||
// A request with no specific transport matches all networks.
|
||||
assertTrue(noTransportRequestNc.satisfiedByNetworkCapabilities(localNoTransportNc));
|
||||
assertTrue(noTransportRequestNc.satisfiedByNetworkCapabilities(localWifiNc));
|
||||
} else {
|
||||
// A request with no specific transport only matches thread networks.
|
||||
assertFalse(noTransportRequestNc.satisfiedByNetworkCapabilities(localNoTransportNc));
|
||||
assertFalse(noTransportRequestNc.satisfiedByNetworkCapabilities(localWifiNc));
|
||||
}
|
||||
assertTrue(noTransportRequestNc.satisfiedByNetworkCapabilities(localThreadsNc));
|
||||
assertTrue(noTransportRequestNc.satisfiedByNetworkCapabilities(wanWifiNc));
|
||||
|
||||
// A request with TRANSPORT_THREAD only matches thread networks.
|
||||
assertFalse(threadRequestNc.satisfiedByNetworkCapabilities(localNoTransportNc));
|
||||
assertTrue(threadRequestNc.satisfiedByNetworkCapabilities(localThreadsNc));
|
||||
assertFalse(threadRequestNc.satisfiedByNetworkCapabilities(localWifiNc));
|
||||
assertFalse(threadRequestNc.satisfiedByNetworkCapabilities(wanWifiNc));
|
||||
|
||||
assertFalse(multiTransportRequestNc.satisfiedByNetworkCapabilities(localNoTransportNc));
|
||||
assertTrue(multiTransportRequestNc.satisfiedByNetworkCapabilities(localThreadsNc));
|
||||
assertTrue(multiTransportRequestNc.satisfiedByNetworkCapabilities(wanWifiNc));
|
||||
if (enabled) {
|
||||
assertTrue(multiTransportRequestNc.satisfiedByNetworkCapabilities(localWifiNc));
|
||||
} else {
|
||||
// A request with multiple transports only matches thread networks.
|
||||
assertFalse(multiTransportRequestNc.satisfiedByNetworkCapabilities(localWifiNc));
|
||||
}
|
||||
|
||||
assertFalse(wifiRequestNc.satisfiedByNetworkCapabilities(localNoTransportNc));
|
||||
assertFalse(wifiRequestNc.satisfiedByNetworkCapabilities(localThreadsNc));
|
||||
assertTrue(wifiRequestNc.satisfiedByNetworkCapabilities(wanWifiNc));
|
||||
if (enabled) {
|
||||
assertTrue(wifiRequestNc.satisfiedByNetworkCapabilities(localWifiNc));
|
||||
} else {
|
||||
// A request without TRANSPORT_THREAD matches nothing.
|
||||
assertFalse(wifiRequestNc.satisfiedByNetworkCapabilities(localWifiNc));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue