diff --git a/service-t/src/com/android/server/ethernet/EthernetTracker.java b/service-t/src/com/android/server/ethernet/EthernetTracker.java index c3749bd628..e01a5c9a18 100644 --- a/service-t/src/com/android/server/ethernet/EthernetTracker.java +++ b/service-t/src/com/android/server/ethernet/EthernetTracker.java @@ -933,7 +933,11 @@ public class EthernetTracker { if (isAtLeastB && capabilitiesString.equals("*")) { // On Android B+, a "*" string defaults to the same set of default // capabilities assigned to unconfigured interfaces. - return new NetworkCapabilities(DEFAULT_CAPABILITIES); + // Note that the transport type is populated later with the result of + // parseTransportType(). + return new NetworkCapabilities.Builder(DEFAULT_CAPABILITIES) + .removeTransportType(NetworkCapabilities.TRANSPORT_ETHERNET) + .build(); } for (String strNetworkCapability : capabilitiesString.split(",")) { diff --git a/tests/unit/java/com/android/server/ethernet/EthernetTrackerTest.java b/tests/unit/java/com/android/server/ethernet/EthernetTrackerTest.java index 5d83f724ab..c6ae03985c 100644 --- a/tests/unit/java/com/android/server/ethernet/EthernetTrackerTest.java +++ b/tests/unit/java/com/android/server/ethernet/EthernetTrackerTest.java @@ -18,6 +18,7 @@ package com.android.server.ethernet; import static android.net.TestNetworkManager.TEST_TAP_PREFIX; +import static com.android.server.ethernet.EthernetTracker.DEFAULT_CAPABILITIES; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertFalse; @@ -185,7 +186,7 @@ public class EthernetTrackerTest { // On Android B+, "*" defaults to using DEFAULT_CAPABILITIES. p = new EthernetConfigParser("eth0;*;;;;;;", true /*isAtLeastB*/); - assertThat(p.mCaps).isEqualTo(EthernetTracker.DEFAULT_CAPABILITIES); + assertThat(p.mCaps).isEqualTo(DEFAULT_CAPABILITIES); // But not so before B. p = new EthernetConfigParser("eth0;*", false /*isAtLeastB*/); @@ -205,10 +206,24 @@ public class EthernetTrackerTest { // TRANSPORT_VPN (4) is not allowed. p = new EthernetConfigParser("eth0;;;4", false /*isAtLeastB*/); assertThat(p.mCaps.hasSingleTransport(NetworkCapabilities.TRANSPORT_ETHERNET)).isTrue(); + p = new EthernetConfigParser("eth0;*;;4", true /*isAtLeastB*/); + assertThat(p.mCaps.hasSingleTransport(NetworkCapabilities.TRANSPORT_ETHERNET)).isTrue(); // invalid capability and transport type p = new EthernetConfigParser("eth0;-1,a,1000,,;;-1", false /*isAtLeastB*/); assertThat(p.mCaps).isEqualTo(baseNc); + + p = new EthernetConfigParser("eth0;*;;0", false /*isAtLeastB*/); + assertThat(p.mCaps.hasSingleTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).isTrue(); + p = new EthernetConfigParser("eth0;*;;0", true /*isAtLeastB*/); + assertThat(p.mCaps.hasSingleTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).isTrue(); + + NetworkCapabilities nc = new NetworkCapabilities.Builder(DEFAULT_CAPABILITIES) + .removeTransportType(NetworkCapabilities.TRANSPORT_ETHERNET) + .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) + .build(); + p = new EthernetConfigParser("eth0;*;;0", true /*isAtLeastB*/); + assertThat(p.mCaps).isEqualTo(nc); } @Test