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

Commit eca36785 authored by David Duarte's avatar David Duarte
Browse files

HapClientTest: Pass AdapterService in constructor

Test: atest HapClientTest
Bug: 324268843
Flag: Exempt, Test only change
Change-Id: I5258f8457346a43547be10c15dd41bb8df441e0a
parent 5df6e71e
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 −31
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;
@@ -124,7 +121,6 @@ public class HapClientTest {

        HapClientStateMachine.sConnectTimeoutMs = TIMEOUT_MS;

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

        mAdapter = BluetoothAdapter.getDefaultAdapter();
@@ -207,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);
    }
@@ -367,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());
    }

    /**
@@ -392,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
@@ -404,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(
@@ -418,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(
@@ -441,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));

@@ -477,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);
@@ -515,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);
@@ -541,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);
@@ -568,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);
@@ -584,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);
@@ -601,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);
@@ -617,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);
@@ -636,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);
@@ -656,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);
@@ -699,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);
@@ -725,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;
@@ -772,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(
@@ -834,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));

@@ -1065,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());
    }
@@ -1094,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(
@@ -1113,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(
@@ -1129,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(