Clean up TetheringRequest#toString()

Clean up TetheringRequest#toString() by printing the TetheringType and
ConnectivityScope in a human-readable form and only printing the values
of fields that have been set.

Bug: 216524590
Test: atest TetheringManagerTest
Change-Id: Ie2c35190a09605e3018b9d2d1f1d00cdc7bbb977
This commit is contained in:
Quang Anh Luong 2024-11-18 18:21:46 +09:00
commit 676ad858e2
2 changed files with 75 additions and 10 deletions

View file

@ -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

View file

@ -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);