From e545c385a8d012534bdb22001c85069b755a5362 Mon Sep 17 00:00:00 2001 From: lucaslin Date: Mon, 29 Mar 2021 18:56:47 +0800 Subject: [PATCH] Add new network capabilities to support automotive head unit via USB - Add a new transport type for USB and a new network capability to support automotive head unit. - In order to pass DnsManagerTest#testTransportTypesEqual, Android.bp needs to link to dnsresolver_aidl_interface-V8-java. That test checks whether the TRANSPORT types defined in NetworkCapabilities are the same as IDnsResolver.aidl. Bug: 181742019 Test: atest FrameworksNetTests Change-Id: Iec2df09a776d779108f95098e01b7ffdf6f8867a --- framework/api/current.txt | 2 ++ .../src/android/net/NetworkCapabilities.java | 25 ++++++++++++++++--- service/Android.bp | 2 +- .../android/net/util/KeepaliveUtilsTest.kt | 2 +- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/framework/api/current.txt b/framework/api/current.txt index 0a9560a5c5..7428c6e70f 100644 --- a/framework/api/current.txt +++ b/framework/api/current.txt @@ -311,6 +311,7 @@ package android.net { field public static final int NET_CAPABILITY_ENTERPRISE = 29; // 0x1d field public static final int NET_CAPABILITY_FOREGROUND = 19; // 0x13 field public static final int NET_CAPABILITY_FOTA = 3; // 0x3 + field public static final int NET_CAPABILITY_HEAD_UNIT = 32; // 0x20 field public static final int NET_CAPABILITY_IA = 7; // 0x7 field public static final int NET_CAPABILITY_IMS = 4; // 0x4 field public static final int NET_CAPABILITY_INTERNET = 12; // 0xc @@ -334,6 +335,7 @@ package android.net { field public static final int TRANSPORT_CELLULAR = 0; // 0x0 field public static final int TRANSPORT_ETHERNET = 3; // 0x3 field public static final int TRANSPORT_LOWPAN = 6; // 0x6 + field public static final int TRANSPORT_USB = 8; // 0x8 field public static final int TRANSPORT_VPN = 4; // 0x4 field public static final int TRANSPORT_WIFI = 1; // 0x1 field public static final int TRANSPORT_WIFI_AWARE = 5; // 0x5 diff --git a/framework/src/android/net/NetworkCapabilities.java b/framework/src/android/net/NetworkCapabilities.java index ca69f16f44..4f95ccc881 100644 --- a/framework/src/android/net/NetworkCapabilities.java +++ b/framework/src/android/net/NetworkCapabilities.java @@ -275,6 +275,7 @@ public final class NetworkCapabilities implements Parcelable { NET_CAPABILITY_ENTERPRISE, NET_CAPABILITY_VSIM, NET_CAPABILITY_BIP, + NET_CAPABILITY_HEAD_UNIT, }) public @interface NetCapability { } @@ -508,8 +509,13 @@ public final class NetworkCapabilities implements Parcelable { @SystemApi public static final int NET_CAPABILITY_BIP = 31; + /** + * Indicates that this network is connected to an automotive head unit. + */ + public static final int NET_CAPABILITY_HEAD_UNIT = 32; + private static final int MIN_NET_CAPABILITY = NET_CAPABILITY_MMS; - private static final int MAX_NET_CAPABILITY = NET_CAPABILITY_BIP; + private static final int MAX_NET_CAPABILITY = NET_CAPABILITY_HEAD_UNIT; /** * Network capabilities that are expected to be mutable, i.e., can change while a particular @@ -527,7 +533,10 @@ public final class NetworkCapabilities implements Parcelable { | (1 << NET_CAPABILITY_NOT_SUSPENDED) | (1 << NET_CAPABILITY_PARTIAL_CONNECTIVITY) | (1 << NET_CAPABILITY_TEMPORARILY_NOT_METERED) - | (1 << NET_CAPABILITY_NOT_VCN_MANAGED); + | (1 << NET_CAPABILITY_NOT_VCN_MANAGED) + // The value of NET_CAPABILITY_HEAD_UNIT is 32, which cannot use int to do bit shift, + // otherwise there will be an overflow. Use long to do bit shift instead. + | (1L << NET_CAPABILITY_HEAD_UNIT); /** * Network capabilities that are not allowed in NetworkRequests. This exists because the @@ -867,6 +876,7 @@ public final class NetworkCapabilities implements Parcelable { TRANSPORT_WIFI_AWARE, TRANSPORT_LOWPAN, TRANSPORT_TEST, + TRANSPORT_USB, }) public @interface Transport { } @@ -913,10 +923,15 @@ public final class NetworkCapabilities implements Parcelable { @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static final int TRANSPORT_TEST = 7; + /** + * Indicates this network uses a USB transport. + */ + public static final int TRANSPORT_USB = 8; + /** @hide */ public static final int MIN_TRANSPORT = TRANSPORT_CELLULAR; /** @hide */ - public static final int MAX_TRANSPORT = TRANSPORT_TEST; + public static final int MAX_TRANSPORT = TRANSPORT_USB; /** @hide */ public static boolean isValidTransport(@Transport int transportType) { @@ -931,7 +946,8 @@ public final class NetworkCapabilities implements Parcelable { "VPN", "WIFI_AWARE", "LOWPAN", - "TEST" + "TEST", + "USB" }; /** @@ -2107,6 +2123,7 @@ public final class NetworkCapabilities implements Parcelable { case NET_CAPABILITY_ENTERPRISE: return "ENTERPRISE"; case NET_CAPABILITY_VSIM: return "VSIM"; case NET_CAPABILITY_BIP: return "BIP"; + case NET_CAPABILITY_HEAD_UNIT: return "HEAD_UNIT"; default: return Integer.toString(capability); } } diff --git a/service/Android.bp b/service/Android.bp index b44128b9ae..518f198bad 100644 --- a/service/Android.bp +++ b/service/Android.bp @@ -72,7 +72,7 @@ java_library { "ServiceConnectivityResources", ], static_libs: [ - "dnsresolver_aidl_interface-V7-java", + "dnsresolver_aidl_interface-V8-java", "modules-utils-os", "net-utils-device-common", "net-utils-framework-common", diff --git a/tests/net/java/android/net/util/KeepaliveUtilsTest.kt b/tests/net/java/android/net/util/KeepaliveUtilsTest.kt index b62bdbcfb5..5006d5345f 100644 --- a/tests/net/java/android/net/util/KeepaliveUtilsTest.kt +++ b/tests/net/java/android/net/util/KeepaliveUtilsTest.kt @@ -101,7 +101,7 @@ class KeepaliveUtilsTest { // Check valid customization generates expected array. val validRes = arrayOf("0,3", "1,0", "4,4") - val expectedValidRes = intArrayOf(3, 0, 0, 0, 4, 0, 0, 0) + val expectedValidRes = intArrayOf(3, 0, 0, 0, 4, 0, 0, 0, 0) val mockContext = getMockedContextWithStringArrayRes( R.array.config_networkSupportedKeepaliveCount,