Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4572a406 authored by William Escande's avatar William Escande
Browse files

Trunk Stable/HearingAid: Use static flagging

Bug: 323981134
Bug: 300174072
Test: m Bluetooth | mechanical refactor
Change-Id: Ie64a2fa5e8cb674a7fc1c1fff8814f8ee47a8128
parent 07e1f7d8
Loading
Loading
Loading
Loading
+2 −9
Original line number Diff line number Diff line
@@ -51,8 +51,7 @@ import com.android.bluetooth.btservice.MetricsLogger;
import com.android.bluetooth.btservice.ProfileService;
import com.android.bluetooth.btservice.ServiceFactory;
import com.android.bluetooth.btservice.storage.DatabaseManager;
import com.android.bluetooth.flags.FeatureFlags;
import com.android.bluetooth.flags.FeatureFlagsImpl;
import com.android.bluetooth.flags.Flags;
import com.android.internal.annotations.VisibleForTesting;
import com.android.modules.utils.SynchronousResultReceiver;

@@ -78,7 +77,6 @@ public class HearingAidService extends ProfileService {
    private static final int MAX_HEARING_AID_STATE_MACHINES = 10;
    private static HearingAidService sHearingAidService;

    private FeatureFlags mFeatureFlags = new FeatureFlagsImpl();
    private AdapterService mAdapterService;
    private DatabaseManager mDatabaseManager;
    private HandlerThread mStateMachinesThread;
@@ -721,11 +719,6 @@ public class HearingAidService extends ProfileService {
        sendBroadcast(intent, BLUETOOTH_CONNECT);
    }

    @VisibleForTesting
    void setFeatureFlags(FeatureFlags featureFlags) {
        mFeatureFlags = featureFlags;
    }

    /* Notifications of audio device disconnection events. */
    private class AudioManagerOnAudioDevicesRemovedCallback extends AudioDeviceCallback {
        @Override
@@ -1062,7 +1055,7 @@ public class HearingAidService extends ProfileService {
            try {
                HearingAidService service = getService(source);
                if (service != null) {
                    if (service.mFeatureFlags.audioRoutingCentralization()) {
                    if (Flags.audioRoutingCentralization()) {
                        ((AudioRoutingManager) service.mAdapterService.getActiveDeviceManager())
                                .activateDeviceProfile(
                                        device, BluetoothProfile.HEARING_AID, receiver);
+6 −8
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import android.media.AudioManager;
import android.media.BluetoothProfileConnectionInfo;
import android.os.Looper;
import android.os.ParcelUuid;
import android.platform.test.flag.junit.SetFlagsRule;

import androidx.test.filters.MediumTest;
import androidx.test.platform.app.InstrumentationRegistry;
@@ -52,7 +53,6 @@ import com.android.bluetooth.btservice.ActiveDeviceManager;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.AudioRoutingManager;
import com.android.bluetooth.btservice.storage.DatabaseManager;
import com.android.bluetooth.flags.FakeFeatureFlagsImpl;
import com.android.bluetooth.flags.Flags;
import com.android.bluetooth.x.com.android.modules.utils.SynchronousResultReceiver;

@@ -60,6 +60,7 @@ import org.hamcrest.Matcher;
import org.hamcrest.core.AllOf;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
@@ -84,12 +85,12 @@ public class HearingAidServiceTest {
    private static final BluetoothDevice mRightDevice = TestUtils.getTestDevice(mAdapter, 1);
    private static final BluetoothDevice mSingleDevice = TestUtils.getTestDevice(mAdapter, 2);

    @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    private HearingAidService mService;
    private HearingAidService.BluetoothHearingAidBinder mServiceBinder;
    private HashMap<BluetoothDevice, LinkedBlockingQueue<Intent>> mDeviceQueueMap;

    private FakeFeatureFlagsImpl mFakeFlagsImpl;

    @Mock private AdapterService mAdapterService;
    @Mock private ActiveDeviceManager mActiveDeviceManager;
    @Mock private AudioRoutingManager mAudioRoutingManager;
@@ -112,13 +113,11 @@ public class HearingAidServiceTest {
        if (Looper.myLooper() == null) {
            Looper.prepare();
        }
        mFakeFlagsImpl = new FakeFeatureFlagsImpl();
        mFakeFlagsImpl.setFlag(Flags.FLAG_AUDIO_ROUTING_CENTRALIZATION, false);

        TestUtils.setAdapterService(mAdapterService);
        doAnswer(
                        invocation -> {
                            if (mFakeFlagsImpl.audioRoutingCentralization()) {
                            if (Flags.audioRoutingCentralization()) {
                                return mAudioRoutingManager;
                            } else {
                                return mActiveDeviceManager;
@@ -969,14 +968,13 @@ public class HearingAidServiceTest {
        assertThat(mService.getActiveDevices()).containsNoneOf(mRightDevice, mLeftDevice);
        assertThat(mService.getActiveDevices()).contains(mSingleDevice);

        mService.setFeatureFlags(mFakeFlagsImpl);
        SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get();
        boolean defaultRecvValue = false;
        mServiceBinder.setActiveDevice(null, null, recv);
        assertThat(recv.awaitResultNoInterrupt(TIMEOUT).getValue(defaultRecvValue)).isTrue();
        assertThat(mService.getActiveDevices()).doesNotContain(mSingleDevice);

        mFakeFlagsImpl.setFlag(Flags.FLAG_AUDIO_ROUTING_CENTRALIZATION, true);
        mSetFlagsRule.enableFlags(Flags.FLAG_AUDIO_ROUTING_CENTRALIZATION);
        recv = SynchronousResultReceiver.get();
        mServiceBinder.setActiveDevice(null, null, recv);
        verify(mAudioRoutingManager)