diff --git a/common/Android.bp b/common/Android.bp index 41ced61f6c..9a6df55691 100644 --- a/common/Android.bp +++ b/common/Android.bp @@ -37,6 +37,23 @@ java_aconfig_library { ], } +aconfig_declarations { + name: "tethering.mainline.beta.flags", + package: "com.android.tethering.mainline.beta", + container: "com.android.tethering", + srcs: ["mainline_beta.aconfig"], +} + +java_aconfig_library { + name: "com.android.tethering.mainline.beta.flags-aconfig-java", + aconfig_declarations: "tethering.mainline.beta.flags", + defaults: ["framework-minus-apex-aconfig-java-defaults"], + min_sdk_version: "30", + apex_available: [ + "com.android.tethering", + ], +} + aconfig_declarations { name: "com.android.net.flags-aconfig", package: "com.android.net.flags", diff --git a/common/mainline_beta.aconfig b/common/mainline_beta.aconfig new file mode 100644 index 0000000000..c05285087e --- /dev/null +++ b/common/mainline_beta.aconfig @@ -0,0 +1,9 @@ +package: "com.android.tethering.mainline.beta" +container: "com.android.tethering" + +flag { + name: "bluetooth_tethering_randomized_address" + namespace: "com_android_tethering" + description: "bluetooth tethering use randomized address" + bug: "287177081" +} diff --git a/service/Android.bp b/service/Android.bp index 62fe9fd516..ae45964014 100644 --- a/service/Android.bp +++ b/service/Android.bp @@ -189,6 +189,7 @@ java_library { // in framework-connectivity "android.net.platform.flags-aconfig-java-export", "androidx.annotation_annotation", + "com.android.tethering.mainline.beta.flags-aconfig-java", "connectivity-net-module-utils-bpf", "connectivity_native_aidl_interface-lateststable-java", "dnsresolver_aidl_interface-V16-java", diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java index 9cba46e8be..ed74289c61 100644 --- a/service/src/com/android/server/ConnectivityService.java +++ b/service/src/com/android/server/ConnectivityService.java @@ -2023,8 +2023,8 @@ public class ConnectivityService extends IConnectivityManager.Stub * The flag value can change at runtime via a server push. */ public boolean shouldBluetoothTetheringUseRandomAddress() { - // TODO: add a mainline beta flag to enable the new behaviour. - return SdkLevel.isAtLeastT() && false; + return SdkLevel.isAtLeastT() && + com.android.tethering.mainline.beta.Flags.bluetoothTetheringRandomizedAddress(); } } diff --git a/tests/unit/java/com/android/server/ConnectivityServiceTest.java b/tests/unit/java/com/android/server/ConnectivityServiceTest.java index 1a682201cb..23c6ecfe87 100644 --- a/tests/unit/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/unit/java/com/android/server/ConnectivityServiceTest.java @@ -2432,6 +2432,11 @@ public class ConnectivityServiceTest { public L2capNetworkProvider makeL2capNetworkProvider(Context context) { return null; } + + @Override + public boolean shouldBluetoothTetheringUseRandomAddress() { + return false; + } } static class PermissionMonitorDependencies extends PermissionMonitor.Dependencies { diff --git a/tests/unit/java/com/android/server/connectivityservice/base/CSTest.kt b/tests/unit/java/com/android/server/connectivityservice/base/CSTest.kt index 7f4009f06f..5cb2442c54 100644 --- a/tests/unit/java/com/android/server/connectivityservice/base/CSTest.kt +++ b/tests/unit/java/com/android/server/connectivityservice/base/CSTest.kt @@ -538,6 +538,8 @@ open class CSTest { netlinkMessageUpdate = consumer return ConnectivityService.AddressUpdateMonitor(h, log, tag, consumer) } + + override fun shouldBluetoothTetheringUseRandomAddress() = false } inner class PermDeps : PermissionMonitor.Dependencies() {