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

Commit 48dda7c7 authored by David Duarte's avatar David Duarte Committed by Gerrit Code Review
Browse files

Merge changes I5258f845,I89b188d8 into main

* changes:
  HapClientTest: Pass AdapterService in constructor
  HapClientTest: Don't prepare a looper on the test thread
parents 94a02dc6 eca36785
Loading
Loading
Loading
Loading
+33 −29
Original line number Diff line number Diff line
@@ -1433,17 +1433,21 @@ public class AdapterService extends Service {
        BluetoothSap.invalidateBluetoothGetConnectionStateCache();
    }

    private static final Map<Integer, Function<Context, ProfileService>> PROFILE_CONSTRUCTORS =
    private static final Map<Integer, Function<AdapterService, ProfileService>>
            PROFILE_CONSTRUCTORS =
                    Map.ofEntries(
                            Map.entry(BluetoothProfile.A2DP, A2dpService::new),
                            Map.entry(BluetoothProfile.A2DP_SINK, A2dpSinkService::new),
                            Map.entry(BluetoothProfile.AVRCP, AvrcpTargetService::new),
                    Map.entry(BluetoothProfile.AVRCP_CONTROLLER, AvrcpControllerService::new),
                            Map.entry(
                            BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT, BassClientService::new),
                                    BluetoothProfile.AVRCP_CONTROLLER, AvrcpControllerService::new),
                            Map.entry(
                                    BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT,
                                    BassClientService::new),
                            Map.entry(BluetoothProfile.BATTERY, BatteryService::new),
                            Map.entry(
                            BluetoothProfile.CSIP_SET_COORDINATOR, CsipSetCoordinatorService::new),
                                    BluetoothProfile.CSIP_SET_COORDINATOR,
                                    CsipSetCoordinatorService::new),
                            Map.entry(BluetoothProfile.HAP_CLIENT, HapClientService::new),
                            Map.entry(BluetoothProfile.HEADSET, HeadsetService::new),
                            Map.entry(BluetoothProfile.HEADSET_CLIENT, HeadsetClientService::new),
+8 −11
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ import android.bluetooth.BluetoothUuid;
import android.bluetooth.IBluetoothHapClient;
import android.bluetooth.IBluetoothHapClientCallback;
import android.content.AttributionSource;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.HandlerThread;
@@ -127,8 +126,9 @@ public class HapClientService extends ProfileService {
        return sHapClient;
    }

    public HapClientService(Context ctx) {
        super(ctx);
    public HapClientService(AdapterService adapterService) {
        super(adapterService);
        mAdapterService = Objects.requireNonNull(adapterService);
        mFeatureFlags = new FeatureFlagsImpl();
    }

@@ -154,11 +154,11 @@ public class HapClientService extends ProfileService {
            throw new IllegalStateException("start() called twice");
        }

        // Get AdapterService, HapClientNativeInterface, DatabaseManager, AudioManager.
        // Get HapClientNativeInterface, DatabaseManager, AudioManager.
        // None of them can be null.
        mAdapterService = Objects.requireNonNull(AdapterService.getAdapterService(),
                "AdapterService cannot be null when HapClientService starts");
        mDatabaseManager = Objects.requireNonNull(mAdapterService.getDatabase(),
        mDatabaseManager =
                Objects.requireNonNull(
                        mAdapterService.getDatabase(),
                        "DatabaseManager cannot be null when HapClientService starts");
        mHapClientNativeInterface = Objects.requireNonNull(
                HapClientNativeInterface.getInstance(),
@@ -229,9 +229,6 @@ public class HapClientService extends ProfileService {
        if (mCallbacks != null) {
            mCallbacks.kill();
        }

        // Clear AdapterService
        mAdapterService = null;
    }

    /** Process a change in the bonding state for a device */
+23 −35
Original line number Diff line number Diff line
@@ -52,9 +52,7 @@ import android.bluetooth.BluetoothStatusCodes;
import android.bluetooth.BluetoothUuid;
import android.bluetooth.IBluetoothHapClientCallback;
import android.content.AttributionSource;
import android.content.Context;
import android.os.Binder;
import android.os.Looper;
import android.os.ParcelUuid;
import android.os.RemoteException;

@@ -104,7 +102,6 @@ public class HapClientTest {
    private HapClientService.BluetoothHapClientBinder mServiceBinder;
    private AttributionSource mAttributionSource;

    @Mock private Context mContext;
    @Mock private AdapterService mAdapterService;
    @Mock private DatabaseManager mDatabaseManager;
    @Mock private HapClientNativeInterface mNativeInterface;
@@ -122,13 +119,8 @@ public class HapClientTest {
        // Set up mocks and test assets
        MockitoAnnotations.initMocks(this);

        if (Looper.myLooper() == null) {
            Looper.prepare();
        }

        HapClientStateMachine.sConnectTimeoutMs = TIMEOUT_MS;

        TestUtils.setAdapterService(mAdapterService);
        doReturn(mDatabaseManager).when(mAdapterService).getDatabase();

        mAdapter = BluetoothAdapter.getDefaultAdapter();
@@ -211,14 +203,10 @@ public class HapClientTest {
        HapClientNativeInterface.setInstance(null);

        mAdapter = null;

        if (mAdapterService != null) {
            TestUtils.clearAdapterService(mAdapterService);
        }
    }

    private void startService() throws TimeoutException {
        mService = new HapClientService(mContext);
        mService = new HapClientService(mAdapterService);
        mService.start();
        mService.setAvailable(true);
    }
@@ -371,7 +359,7 @@ public class HapClientTest {
        // Send a connect request
        Assert.assertTrue("Connect expected to succeed", mService.connect(mDevice));

        verify(mContext, timeout(TIMEOUT_MS)).sendBroadcast(any(), any());
        verify(mAdapterService, timeout(TIMEOUT_MS)).sendBroadcast(any(), any());
    }

    /**
@@ -396,7 +384,7 @@ public class HapClientTest {
     */
    @Test
    public void testOutgoingConnectTimeout() throws Exception {
        InOrder order = inOrder(mContext);
        InOrder order = inOrder(mAdapterService);

        // Update the device policy so okToConnect() returns true
        when(mDatabaseManager
@@ -408,7 +396,7 @@ public class HapClientTest {
        // Send a connect request
        Assert.assertTrue("Connect failed", mService.connect(mDevice));

        order.verify(mContext, timeout(TIMEOUT_MS))
        order.verify(mAdapterService, timeout(TIMEOUT_MS))
                .sendBroadcast(
                        argThat(
                                allOf(
@@ -422,7 +410,7 @@ public class HapClientTest {
                mService.getConnectionState(mDevice));

        // Verify the connection state broadcast, and that we are in Disconnected state via binder
        order.verify(mContext, timeout(HapClientStateMachine.sConnectTimeoutMs * 2))
        order.verify(mAdapterService, timeout(HapClientStateMachine.sConnectTimeoutMs * 2))
                .sendBroadcast(
                        argThat(
                                allOf(
@@ -445,7 +433,7 @@ public class HapClientTest {
     */
    @Test
    public void testConnectTwo() throws Exception {
        InOrder order = inOrder(mContext);
        InOrder order = inOrder(mAdapterService);
        doReturn(new ParcelUuid[]{BluetoothUuid.HAS}).when(mAdapterService)
                .getRemoteUuids(any(BluetoothDevice.class));

@@ -481,7 +469,7 @@ public class HapClientTest {
     */
    @Test
    public void testGetHapGroupCoordinatedOps() throws Exception {
        InOrder order = inOrder(mContext);
        InOrder order = inOrder(mAdapterService);
        doReturn(new ParcelUuid[]{BluetoothUuid.HAS}).when(mAdapterService)
                .getRemoteUuids(any(BluetoothDevice.class));
        testConnectingDevice(order, mDevice);
@@ -519,7 +507,7 @@ public class HapClientTest {
     */
    @Test
    public void testSelectPresetNative() {
        InOrder order = inOrder(mContext);
        InOrder order = inOrder(mAdapterService);
        doReturn(new ParcelUuid[]{BluetoothUuid.HAS}).when(mAdapterService)
                .getRemoteUuids(any(BluetoothDevice.class));
        testConnectingDevice(order, mDevice);
@@ -545,7 +533,7 @@ public class HapClientTest {
     */
    @Test
    public void testGroupSelectActivePresetNative() {
        InOrder order = inOrder(mContext);
        InOrder order = inOrder(mAdapterService);
        doReturn(new ParcelUuid[]{BluetoothUuid.HAS}).when(mAdapterService)
                .getRemoteUuids(any(BluetoothDevice.class));
        testConnectingDevice(order, mDevice3);
@@ -572,7 +560,7 @@ public class HapClientTest {
     */
    @Test
    public void testSwitchToNextPreset() {
        InOrder order = inOrder(mContext);
        InOrder order = inOrder(mAdapterService);
        doReturn(new ParcelUuid[]{BluetoothUuid.HAS}).when(mAdapterService)
                .getRemoteUuids(any(BluetoothDevice.class));
        testConnectingDevice(order, mDevice);
@@ -588,7 +576,7 @@ public class HapClientTest {
     */
    @Test
    public void testSwitchToNextPresetForGroup() {
        InOrder order = inOrder(mContext);
        InOrder order = inOrder(mAdapterService);
        doReturn(new ParcelUuid[]{BluetoothUuid.HAS}).when(mAdapterService)
                .getRemoteUuids(any(BluetoothDevice.class));
        testConnectingDevice(order, mDevice3);
@@ -605,7 +593,7 @@ public class HapClientTest {
     */
    @Test
    public void testSwitchToPreviousPreset() {
        InOrder order = inOrder(mContext);
        InOrder order = inOrder(mAdapterService);
        doReturn(new ParcelUuid[]{BluetoothUuid.HAS}).when(mAdapterService)
                .getRemoteUuids(any(BluetoothDevice.class));
        testConnectingDevice(order, mDevice);
@@ -621,7 +609,7 @@ public class HapClientTest {
     */
    @Test
    public void testSwitchToPreviousPresetForGroup() {
        InOrder order = inOrder(mContext);
        InOrder order = inOrder(mAdapterService);
        doReturn(new ParcelUuid[]{BluetoothUuid.HAS}).when(mAdapterService)
                .getRemoteUuids(any(BluetoothDevice.class));
        testConnectingDevice(order, mDevice);
@@ -640,7 +628,7 @@ public class HapClientTest {
     */
    @Test
    public void testGetActivePresetIndex() throws Exception {
        InOrder order = inOrder(mContext);
        InOrder order = inOrder(mAdapterService);
        doReturn(new ParcelUuid[]{BluetoothUuid.HAS}).when(mAdapterService)
                .getRemoteUuids(any(BluetoothDevice.class));
        testConnectingDevice(order, mDevice);
@@ -660,7 +648,7 @@ public class HapClientTest {
     */
    @Test
    public void testGetPresetInfoAndActivePresetInfo() throws Exception {
        InOrder order = inOrder(mContext);
        InOrder order = inOrder(mAdapterService);
        doReturn(new ParcelUuid[]{BluetoothUuid.HAS}).when(mAdapterService)
                .getRemoteUuids(any(BluetoothDevice.class));
        testConnectingDevice(order, mDevice2);
@@ -703,7 +691,7 @@ public class HapClientTest {
     */
    @Test
    public void testSetPresetNameNative() {
        InOrder order = inOrder(mContext);
        InOrder order = inOrder(mAdapterService);
        doReturn(new ParcelUuid[]{BluetoothUuid.HAS}).when(mAdapterService)
                .getRemoteUuids(any(BluetoothDevice.class));
        testConnectingDevice(order, mDevice);
@@ -729,7 +717,7 @@ public class HapClientTest {
     */
    @Test
    public void testSetPresetNameForGroup() {
        InOrder order = inOrder(mContext);
        InOrder order = inOrder(mAdapterService);
        doReturn(new ParcelUuid[]{BluetoothUuid.HAS}).when(mAdapterService)
                .getRemoteUuids(any(BluetoothDevice.class));
        int test_group = 0x02;
@@ -776,7 +764,7 @@ public class HapClientTest {
                .onDeviceAvailable(any(byte[].class), anyInt());
        mNativeInterface.onDeviceAvailable(getByteAddress(mDevice), 0x03);

        verify(mContext, timeout(TIMEOUT_MS))
        verify(mAdapterService, timeout(TIMEOUT_MS))
                .sendBroadcast(
                        argThat(
                                allOf(
@@ -838,7 +826,7 @@ public class HapClientTest {
     */
    @Test
    public void testStackEventOnPresetInfo() {
        InOrder order = inOrder(mContext);
        InOrder order = inOrder(mAdapterService);
        doReturn(new ParcelUuid[]{BluetoothUuid.HAS}).when(mAdapterService)
                .getRemoteUuids(any(BluetoothDevice.class));

@@ -1069,7 +1057,7 @@ public class HapClientTest {
        // Add state machine for testing dump()
        mService.connect(mDevice);

        verify(mContext, timeout(TIMEOUT_MS)).sendBroadcast(any(), any());
        verify(mAdapterService, timeout(TIMEOUT_MS)).sendBroadcast(any(), any());

        mService.dump(new StringBuilder());
    }
@@ -1098,7 +1086,7 @@ public class HapClientTest {
    /** Helper function to test device connecting */
    private void verifyConnectingDevice(InOrder order, BluetoothDevice device) {
        // Verify the connection state broadcast, and that we are in Connecting state
        order.verify(mContext, timeout(TIMEOUT_MS))
        order.verify(mAdapterService, timeout(TIMEOUT_MS))
                .sendBroadcast(
                        argThat(
                                allOf(
@@ -1117,7 +1105,7 @@ public class HapClientTest {
        mService.messageFromNative(evt);

        // Verify the connection state broadcast, and that we are in Connected state
        order.verify(mContext, timeout(TIMEOUT_MS))
        order.verify(mAdapterService, timeout(TIMEOUT_MS))
                .sendBroadcast(
                        argThat(
                                allOf(
@@ -1133,7 +1121,7 @@ public class HapClientTest {
        evt.valueInt1 = 0x01;   // features
        mService.messageFromNative(evt);

        order.verify(mContext, timeout(TIMEOUT_MS))
        order.verify(mAdapterService, timeout(TIMEOUT_MS))
                .sendBroadcast(
                        argThat(
                                allOf(