summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Henri Chataing <henrichataing@google.com> 2024-12-09 10:44:43 -0800
committer Henri Chataing <henrichataing@google.com> 2024-12-10 18:02:59 +0000
commit0cb205b681a969e80458d46eab8453a57644c3f0 (patch)
treeccc316b20bba13d3344ff401a1212c91770428e7
parent48cd179a09e379ab2b8cf1e90807d3ed76a80a3d (diff)
Flags 24Q4: Remove the flag a2dp_service_looper
Bug: 337348333 Test: m com.android.btservices Flag: com.android.bluetooth.flags.a2dp_service_looper Change-Id: I01be4670da5c225a4904a920a3dfde7ac7ee4f6b
-rw-r--r--android/app/src/com/android/bluetooth/a2dp/A2dpService.java22
-rw-r--r--android/app/tests/unit/src/com/android/bluetooth/a2dp/A2dpServiceTest.java25
-rw-r--r--flags/a2dp.aconfig10
3 files changed, 5 insertions, 52 deletions
diff --git a/android/app/src/com/android/bluetooth/a2dp/A2dpService.java b/android/app/src/com/android/bluetooth/a2dp/A2dpService.java
index 355cb36929..75d9f04fb5 100644
--- a/android/app/src/com/android/bluetooth/a2dp/A2dpService.java
+++ b/android/app/src/com/android/bluetooth/a2dp/A2dpService.java
@@ -92,7 +92,6 @@ public class A2dpService extends ProfileService {
private final CompanionDeviceManager mCompanionDeviceManager;
private final Looper mLooper;
private final Handler mHandler;
- private final HandlerThread mStateMachinesThread;
// Upper limit of all A2DP devices that are Connected or Connecting
private final int mMaxConnectedAudioDevices;
@@ -108,9 +107,6 @@ public class A2dpService extends ProfileService {
// Protect setActiveDevice()/removeActiveDevice() so all invoked is handled sequentially
private final Object mActiveSwitchingGuard = new Object();
- // Timeout for state machine thread join, to prevent potential ANR.
- private static final int SM_THREAD_JOIN_TIMEOUT_MS = 1000;
-
// Upper limit of all A2DP devices: Bonded or Connected
private static final int MAX_A2DP_STATE_MACHINES = 50;
// A2DP Offload Enabled in platform
@@ -137,13 +133,6 @@ public class A2dpService extends ProfileService {
mMaxConnectedAudioDevices = mAdapterService.getMaxConnectedAudioDevices();
Log.i(TAG, "Max connected audio devices set to " + mMaxConnectedAudioDevices);
- if (!Flags.a2dpServiceLooper()) {
- mStateMachinesThread = new HandlerThread("A2dpService.StateMachines");
- mStateMachinesThread.start();
- } else {
- mStateMachinesThread = null;
- }
-
mA2dpCodecConfig = new A2dpCodecConfig(this, mNativeInterface);
mNativeInterface.init(
@@ -200,15 +189,6 @@ public class A2dpService extends ProfileService {
mStateMachines.clear();
}
- if (mStateMachinesThread != null) {
- try {
- mStateMachinesThread.quitSafely();
- mStateMachinesThread.join(SM_THREAD_JOIN_TIMEOUT_MS);
- } catch (InterruptedException e) {
- // Do not rethrow as we are shutting down anyway
- }
- }
-
mHandler.removeCallbacksAndMessages(null);
}
@@ -1015,7 +995,7 @@ public class A2dpService extends ProfileService {
device,
mNativeInterface,
mA2dpOffloadEnabled,
- Flags.a2dpServiceLooper() ? mLooper : mStateMachinesThread.getLooper());
+ mLooper);
mStateMachines.put(device, sm);
return sm;
}
diff --git a/android/app/tests/unit/src/com/android/bluetooth/a2dp/A2dpServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/a2dp/A2dpServiceTest.java
index a398b2d6df..126c1559e9 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/a2dp/A2dpServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/a2dp/A2dpServiceTest.java
@@ -110,7 +110,6 @@ public class A2dpServiceTest {
@Parameters(name = "{0}")
public static List<FlagsParameterization> getParams() {
return FlagsParameterization.allCombinationsOf(
- Flags.FLAG_A2DP_SERVICE_LOOPER,
Flags.FLAG_A2DP_BROADCAST_CONNECTION_STATE_WHEN_TURNED_OFF);
}
@@ -155,19 +154,11 @@ public class A2dpServiceTest {
doReturn(new ParcelUuid[] {BluetoothUuid.A2DP_SINK})
.when(mAdapterService)
.getRemoteUuids(any(BluetoothDevice.class));
-
- if (!Flags.a2dpServiceLooper()) {
- mLooper.startAutoDispatch();
- }
}
@After
public void tearDown() {
- if (Flags.a2dpServiceLooper()) {
- assertThat(mLooper.dispatchAll()).isEqualTo(0);
- } else {
- mLooper.stopAutoDispatchAndIgnoreExceptions();
- }
+ assertThat(mLooper.dispatchAll()).isEqualTo(0);
mA2dpService.stop();
}
@@ -333,7 +324,6 @@ public class A2dpServiceTest {
/** Test that an outgoing connection times out */
@Test
- @EnableFlags(Flags.FLAG_A2DP_SERVICE_LOOPER)
public void testOutgoingConnectTimeout() {
// Update the device priority so okToConnect() returns true
when(mDatabaseManager.getProfileConnectionPolicy(sTestDevice, BluetoothProfile.A2DP))
@@ -654,7 +644,6 @@ public class A2dpServiceTest {
* if the device is unbond.
*/
@Test
- @EnableFlags(Flags.FLAG_A2DP_SERVICE_LOOPER)
public void testDeleteStateMachineDisconnectEvents() {
// Update the device priority so okToConnect() returns true
when(mDatabaseManager.getProfileConnectionPolicy(sTestDevice, BluetoothProfile.A2DP))
@@ -1255,21 +1244,15 @@ public class A2dpServiceTest {
// Dispatch messages for the A2dpService looper, and validate
// that at least one message was handled.
private void dispatchAtLeastOneMessage() {
- if (Flags.a2dpServiceLooper()) {
- assertThat(mLooper.dispatchAll()).isGreaterThan(0);
- }
+ assertThat(mLooper.dispatchAll()).isGreaterThan(0);
}
// Validate that no messages are pending on the A2dpService looper.
private void dispatchNoMessages() {
- if (Flags.a2dpServiceLooper()) {
- assertThat(mLooper.dispatchAll()).isEqualTo(0);
- }
+ assertThat(mLooper.dispatchAll()).isEqualTo(0);
}
private void moveTimeForward(long millis) {
- if (Flags.a2dpServiceLooper()) {
- mLooper.moveTimeForward(millis);
- }
+ mLooper.moveTimeForward(millis);
}
}
diff --git a/flags/a2dp.aconfig b/flags/a2dp.aconfig
index a11626576d..15cf789176 100644
--- a/flags/a2dp.aconfig
+++ b/flags/a2dp.aconfig
@@ -2,16 +2,6 @@ package: "com.android.bluetooth.flags"
container: "com.android.btservices"
flag {
- name: "a2dp_service_looper"
- namespace: "bluetooth"
- description: "Inject looper into A2dpService"
- bug: "337348333"
- metadata {
- purpose: PURPOSE_BUGFIX
- }
-}
-
-flag {
name: "avdtp_error_codes"
namespace: "bluetooth"
description: "Use compliant error codes in AVDTP responses"