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

Commit 52a0bd5b authored by Yuyang Huang's avatar Yuyang Huang
Browse files

use mActiveDeviceManager instead of intent

avoid dependency on intent for tests

Bug: 292009085
Change-Id: I7615ff2362b8c9a0b86467872dc7a17e53a44231
Test: atest HeadsetServiceAndStateMachineTest
parent d27686d4
Loading
Loading
Loading
Loading
+14 −11
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import android.os.ParcelUuid;
import android.os.PowerManager;
import android.os.RemoteException;
import android.telecom.PhoneAccount;
import android.util.Log;

import androidx.test.InstrumentationRegistry;
import androidx.test.espresso.intent.Intents;
@@ -82,9 +83,11 @@ import java.util.concurrent.LinkedBlockingQueue;
@MediumTest
@RunWith(AndroidJUnit4.class)
public class HeadsetServiceAndStateMachineTest {
    private static final String TAG = "HeadsetServiceAndStateMachineTest";
    private static final int ASYNC_CALL_TIMEOUT_MILLIS = 250;
    private static final int START_VR_TIMEOUT_MILLIS = 1000;
    private static final int START_VR_TIMEOUT_WAIT_MILLIS = START_VR_TIMEOUT_MILLIS * 3 / 2;
    private static final int STATE_CHANGE_TIMEOUT_MILLIS = 1000;
    private static final int MAX_HEADSET_CONNECTIONS = 5;
    private static final ParcelUuid[] FAKE_HEADSET_UUID = {BluetoothUuid.HFP};
    private static final String TEST_PHONE_NUMBER = "1234567890";
@@ -470,7 +473,7 @@ public class HeadsetServiceAndStateMachineTest {
        BluetoothDevice activeDevice = connectedDevices.get(MAX_HEADSET_CONNECTIONS / 2);
        Assert.assertTrue(mHeadsetService.setActiveDevice(activeDevice));
        verify(mNativeInterface).setActiveDevice(activeDevice);
        waitAndVerifyActiveDeviceChangedIntent(ASYNC_CALL_TIMEOUT_MILLIS, activeDevice);
        verify(mActiveDeviceManager).hfpActiveStateChanged(activeDevice);
        Assert.assertEquals(activeDevice, mHeadsetService.getActiveDevice());
        // Start virtual call
        Assert.assertTrue(mHeadsetService.startScoUsingVirtualVoiceCall());
@@ -1176,11 +1179,11 @@ public class HeadsetServiceAndStateMachineTest {
        verify(mObjectsFactory).makeStateMachine(device,
                mHeadsetService.getStateMachinesThreadLooper(), mHeadsetService, mAdapterService,
                mNativeInterface, mSystemInterface);
        // Wait ASYNC_CALL_TIMEOUT_MILLIS for state to settle, timing is also tested here and
        // 250ms for processing two messages should be way more than enough. Anything that breaks
        // this indicate some breakage in other part of Android OS
        waitAndVerifyConnectionStateIntent(ASYNC_CALL_TIMEOUT_MILLIS, device,
                BluetoothProfile.STATE_CONNECTING, BluetoothProfile.STATE_DISCONNECTED);
        verify(mActiveDeviceManager, timeout(STATE_CHANGE_TIMEOUT_MILLIS))
                .hfpConnectionStateChanged(
                        device,
                        BluetoothProfile.STATE_DISCONNECTED,
                        BluetoothProfile.STATE_CONNECTING);
        Assert.assertEquals(BluetoothProfile.STATE_CONNECTING,
                mHeadsetService.getConnectionState(device));
        Assert.assertEquals(Collections.singletonList(device),
@@ -1191,11 +1194,11 @@ public class HeadsetServiceAndStateMachineTest {
                new HeadsetStackEvent(HeadsetStackEvent.EVENT_TYPE_CONNECTION_STATE_CHANGED,
                        HeadsetHalConstants.CONNECTION_STATE_SLC_CONNECTED, device);
        mHeadsetService.messageFromNative(slcConnectedEvent);
        // Wait ASYNC_CALL_TIMEOUT_MILLIS for state to settle, timing is also tested here and
        // 250ms for processing two messages should be way more than enough. Anything that breaks
        // this indicate some breakage in other part of Android OS
        waitAndVerifyConnectionStateIntent(ASYNC_CALL_TIMEOUT_MILLIS, device,
                BluetoothProfile.STATE_CONNECTED, BluetoothProfile.STATE_CONNECTING);
        verify(mActiveDeviceManager, timeout(STATE_CHANGE_TIMEOUT_MILLIS))
                .hfpConnectionStateChanged(
                        device,
                        BluetoothProfile.STATE_CONNECTING,
                        BluetoothProfile.STATE_CONNECTED);
        Assert.assertEquals(BluetoothProfile.STATE_CONNECTED,
                mHeadsetService.getConnectionState(device));
    }