diff --git a/Tethering/common/TetheringLib/src/android/net/TetheringManager.java b/Tethering/common/TetheringLib/src/android/net/TetheringManager.java index 6b963970ca..bc771da4ef 100644 --- a/Tethering/common/TetheringLib/src/android/net/TetheringManager.java +++ b/Tethering/common/TetheringLib/src/android/net/TetheringManager.java @@ -54,6 +54,7 @@ import java.util.HashMap; import java.util.List; import java.util.Objects; import java.util.Set; +import java.util.StringJoiner; import java.util.concurrent.Executor; import java.util.function.Supplier; @@ -208,6 +209,20 @@ public class TetheringManager { */ public static final int MAX_TETHERING_TYPE = TETHERING_VIRTUAL; + private static String typeToString(@TetheringType int type) { + switch (type) { + case TETHERING_INVALID: return "TETHERING_INVALID"; + case TETHERING_WIFI: return "TETHERING_WIFI"; + case TETHERING_USB: return "TETHERING_USB"; + case TETHERING_BLUETOOTH: return "TETHERING_BLUETOOTH"; + case TETHERING_WIFI_P2P: return "TETHERING_WIFI_P2P"; + case TETHERING_NCM: return "TETHERING_NCM"; + case TETHERING_ETHERNET: return "TETHERING_ETHERNET"; + default: + return "TETHERING_UNKNOWN(" + type + ")"; + } + } + /** @hide */ @Retention(RetentionPolicy.SOURCE) @IntDef(value = { @@ -689,6 +704,17 @@ public class TetheringManager { }) public @interface ConnectivityScope {} + private static String connectivityScopeToString(@ConnectivityScope int scope) { + switch (scope) { + case CONNECTIVITY_SCOPE_GLOBAL: + return "CONNECTIVITY_SCOPE_GLOBAL"; + case CONNECTIVITY_SCOPE_LOCAL: + return "CONNECTIVITY_SCOPE_LOCAL"; + default: + return "CONNECTIVITY_SCOPE_UNKNOWN(" + scope + ")"; + } + } + /** * Use with {@link #startTethering} to specify additional parameters when starting tethering. */ @@ -972,15 +998,31 @@ public class TetheringManager { /** String of TetheringRequest detail. */ public String toString() { - return "TetheringRequest [ type= " + mRequestParcel.tetheringType - + ", localIPv4Address= " + mRequestParcel.localIPv4Address - + ", staticClientAddress= " + mRequestParcel.staticClientAddress - + ", exemptFromEntitlementCheck= " + mRequestParcel.exemptFromEntitlementCheck - + ", showProvisioningUi= " + mRequestParcel.showProvisioningUi - + ", softApConfig= " + mRequestParcel.softApConfig - + ", uid= " + mRequestParcel.uid - + ", packageName= " + mRequestParcel.packageName - + " ]"; + StringJoiner sj = new StringJoiner(", ", "TetheringRequest[ ", " ]"); + sj.add(typeToString(mRequestParcel.tetheringType)); + if (mRequestParcel.localIPv4Address != null) { + sj.add("localIpv4Address=" + mRequestParcel.localIPv4Address); + } + if (mRequestParcel.staticClientAddress != null) { + sj.add("staticClientAddress=" + mRequestParcel.staticClientAddress); + } + if (mRequestParcel.exemptFromEntitlementCheck) { + sj.add("exemptFromEntitlementCheck"); + } + if (mRequestParcel.showProvisioningUi) { + sj.add("showProvisioningUi"); + } + sj.add(connectivityScopeToString(mRequestParcel.connectivityScope)); + if (mRequestParcel.softApConfig != null) { + sj.add("softApConfig=" + mRequestParcel.softApConfig); + } + if (mRequestParcel.uid != Process.INVALID_UID) { + sj.add("uid=" + mRequestParcel.uid); + } + if (mRequestParcel.packageName != null) { + sj.add("packageName=" + mRequestParcel.packageName); + } + return sj.toString(); } @Override diff --git a/tests/cts/tethering/src/android/tethering/cts/TetheringManagerTest.java b/tests/cts/tethering/src/android/tethering/cts/TetheringManagerTest.java index dbb5158969..47d444ffe3 100644 --- a/tests/cts/tethering/src/android/tethering/cts/TetheringManagerTest.java +++ b/tests/cts/tethering/src/android/tethering/cts/TetheringManagerTest.java @@ -22,6 +22,8 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_DUN; import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET; import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR; import static android.net.NetworkCapabilities.TRANSPORT_ETHERNET; +import static android.net.TetheringManager.CONNECTIVITY_SCOPE_GLOBAL; +import static android.net.TetheringManager.CONNECTIVITY_SCOPE_LOCAL; import static android.net.TetheringManager.TETHERING_BLUETOOTH; import static android.net.TetheringManager.TETHERING_ETHERNET; import static android.net.TetheringManager.TETHERING_NCM; @@ -244,9 +246,16 @@ public class TetheringManagerTest { assertNull(tr.getClientStaticIpv4Address()); assertFalse(tr.isExemptFromEntitlementCheck()); assertTrue(tr.getShouldShowEntitlementUi()); + assertEquals(CONNECTIVITY_SCOPE_GLOBAL, tr.getConnectivityScope()); assertEquals(softApConfiguration, tr.getSoftApConfiguration()); assertEquals(INVALID_UID, tr.getUid()); assertNull(tr.getPackageName()); + assertEquals(tr.toString(), "TetheringRequest[ " + + "TETHERING_WIFI, " + + "showProvisioningUi, " + + "CONNECTIVITY_SCOPE_GLOBAL, " + + "softApConfig=" + softApConfiguration.toString() + + " ]"); final LinkAddress localAddr = new LinkAddress("192.168.24.5/24"); final LinkAddress clientAddr = new LinkAddress("192.168.24.100/24"); @@ -254,6 +263,7 @@ public class TetheringManagerTest { .setStaticIpv4Addresses(localAddr, clientAddr) .setExemptFromEntitlementCheck(true) .setShouldShowEntitlementUi(false) + .setConnectivityScope(CONNECTIVITY_SCOPE_LOCAL) .build(); int uid = 1000; String packageName = "package"; @@ -265,13 +275,26 @@ public class TetheringManagerTest { assertEquals(TETHERING_USB, tr2.getTetheringType()); assertTrue(tr2.isExemptFromEntitlementCheck()); assertFalse(tr2.getShouldShowEntitlementUi()); + assertEquals(CONNECTIVITY_SCOPE_LOCAL, tr2.getConnectivityScope()); + assertNull(tr2.getSoftApConfiguration()); assertEquals(uid, tr2.getUid()); assertEquals(packageName, tr2.getPackageName()); + assertEquals(tr2.toString(), "TetheringRequest[ " + + "TETHERING_USB, " + + "localIpv4Address=" + localAddr + ", " + + "staticClientAddress=" + clientAddr + ", " + + "exemptFromEntitlementCheck, " + + "CONNECTIVITY_SCOPE_LOCAL, " + + "uid=1000, " + + "packageName=package" + + " ]"); final TetheringRequest tr3 = new TetheringRequest.Builder(TETHERING_USB) .setStaticIpv4Addresses(localAddr, clientAddr) .setExemptFromEntitlementCheck(true) - .setShouldShowEntitlementUi(false).build(); + .setShouldShowEntitlementUi(false) + .setConnectivityScope(CONNECTIVITY_SCOPE_LOCAL) + .build(); tr3.setUid(uid); tr3.setPackageName(packageName); assertEquals(tr2, tr3);