From 04bbc5b9b0e97f4c2a2ce2ea1e34f0e98e2f34c7 Mon Sep 17 00:00:00 2001 From: Jack Yu Date: Thu, 16 Dec 2021 13:15:25 -0800 Subject: [PATCH] Added a new network capability MMTEL Added NET_CAPABILITY_MMTEL to indicate a network support MMTEL (Multimedia telephony). This is for IMS service to request an IMS network that supports voice or PS (VoPS for 4G, VoNR for 5G). This was previously submitted as aosp/1927841, but which got reverted due to breaking the mainline build, which uses the pre-built module. Bug: 210774375 Test: atest ConnectivityServiceTest Change-Id: If8b691ff4999a4dbf54e7567d9ca74d743dc5ded --- framework/api/current.txt | 1 + framework/src/android/net/NetworkCapabilities.java | 9 ++++++++- .../java/com/android/server/ConnectivityServiceTest.java | 4 +++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/framework/api/current.txt b/framework/api/current.txt index 9a77a3ced5..ad42ddeda8 100644 --- a/framework/api/current.txt +++ b/framework/api/current.txt @@ -316,6 +316,7 @@ package android.net { field public static final int NET_CAPABILITY_INTERNET = 12; // 0xc field public static final int NET_CAPABILITY_MCX = 23; // 0x17 field public static final int NET_CAPABILITY_MMS = 0; // 0x0 + field public static final int NET_CAPABILITY_MMTEL = 33; // 0x21 field public static final int NET_CAPABILITY_NOT_CONGESTED = 20; // 0x14 field public static final int NET_CAPABILITY_NOT_METERED = 11; // 0xb field public static final int NET_CAPABILITY_NOT_RESTRICTED = 13; // 0xd diff --git a/framework/src/android/net/NetworkCapabilities.java b/framework/src/android/net/NetworkCapabilities.java index 03cf109256..721a12d0c6 100644 --- a/framework/src/android/net/NetworkCapabilities.java +++ b/framework/src/android/net/NetworkCapabilities.java @@ -274,6 +274,7 @@ public final class NetworkCapabilities implements Parcelable { NET_CAPABILITY_VSIM, NET_CAPABILITY_BIP, NET_CAPABILITY_HEAD_UNIT, + NET_CAPABILITY_MMTEL, }) public @interface NetCapability { } @@ -512,8 +513,13 @@ public final class NetworkCapabilities implements Parcelable { */ public static final int NET_CAPABILITY_HEAD_UNIT = 32; + /** + * Indicates that this network has ability to support MMTEL (Multimedia Telephony service). + */ + public static final int NET_CAPABILITY_MMTEL = 33; + private static final int MIN_NET_CAPABILITY = NET_CAPABILITY_MMS; - private static final int MAX_NET_CAPABILITY = NET_CAPABILITY_HEAD_UNIT; + private static final int MAX_NET_CAPABILITY = NET_CAPABILITY_MMTEL; /** * Network capabilities that are expected to be mutable, i.e., can change while a particular @@ -2090,6 +2096,7 @@ public final class NetworkCapabilities implements Parcelable { case NET_CAPABILITY_VSIM: return "VSIM"; case NET_CAPABILITY_BIP: return "BIP"; case NET_CAPABILITY_HEAD_UNIT: return "HEAD_UNIT"; + case NET_CAPABILITY_MMTEL: return "MMTEL"; default: return Integer.toString(capability); } } diff --git a/tests/unit/java/com/android/server/ConnectivityServiceTest.java b/tests/unit/java/com/android/server/ConnectivityServiceTest.java index 044ff0204b..c47604c0eb 100644 --- a/tests/unit/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/unit/java/com/android/server/ConnectivityServiceTest.java @@ -81,6 +81,7 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_IA; import static android.net.NetworkCapabilities.NET_CAPABILITY_IMS; import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET; import static android.net.NetworkCapabilities.NET_CAPABILITY_MMS; +import static android.net.NetworkCapabilities.NET_CAPABILITY_MMTEL; import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED; import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED; import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED; @@ -3586,7 +3587,7 @@ public class ConnectivityServiceTest { || capability == NET_CAPABILITY_IA || capability == NET_CAPABILITY_IMS || capability == NET_CAPABILITY_RCS || capability == NET_CAPABILITY_XCAP || capability == NET_CAPABILITY_VSIM || capability == NET_CAPABILITY_BIP - || capability == NET_CAPABILITY_ENTERPRISE) { + || capability == NET_CAPABILITY_ENTERPRISE || capability == NET_CAPABILITY_MMTEL) { assertFalse(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)); } else { assertTrue(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)); @@ -3714,6 +3715,7 @@ public class ConnectivityServiceTest { tryNetworkFactoryRequests(NET_CAPABILITY_WIFI_P2P); tryNetworkFactoryRequests(NET_CAPABILITY_IA); tryNetworkFactoryRequests(NET_CAPABILITY_RCS); + tryNetworkFactoryRequests(NET_CAPABILITY_MMTEL); tryNetworkFactoryRequests(NET_CAPABILITY_XCAP); tryNetworkFactoryRequests(NET_CAPABILITY_ENTERPRISE); tryNetworkFactoryRequests(NET_CAPABILITY_EIMS);