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

Commit 1404ca3a authored by William Escande's avatar William Escande
Browse files

HeadsetClient: merge "start" into constructor

Test: atest BluetoothInstrumentationTests
Flag: Exempt refactor no-op
Bug: 311772251
Change-Id: I385e5884d667cd6c82495f32d81950a85e530f2e
parent ac17109c
Loading
Loading
Loading
Loading
+56 −81
Original line number Diff line number Diff line
@@ -55,7 +55,6 @@ import com.android.internal.annotations.VisibleForTesting;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -80,19 +79,18 @@ public class HeadsetClientService extends ProfileService {
            new HashMap<>();

    private static HeadsetClientService sHeadsetClientService;
    private NativeInterface mNativeInterface = null;
    private HandlerThread mSmThread = null;
    private HeadsetClientStateMachineFactory mSmFactory = null;

    private final HandlerThread mSmThread;
    private final AdapterService mAdapterService;
    private final DatabaseManager mDatabaseManager;
    private final AudioManager mAudioManager;
    private BatteryManager mBatteryManager = null;
    private int mLastBatteryLevel = -1;

    private final NativeInterface mNativeInterface;
    private final BatteryManager mBatteryManager;
    private final HeadsetClientStateMachineFactory mSmFactory;
    private final int mMaxAmVcVol;
    private final int mMinAmVcVol;

    private final Object mStartStopLock = new Object();
    private int mLastBatteryLevel = -1;

    public static final String HFP_CLIENT_STOP_TAG = "hfp_client_stop_tag";

@@ -103,24 +101,6 @@ public class HeadsetClientService extends ProfileService {
        mAudioManager = requireNonNull(getSystemService(AudioManager.class));
        mMaxAmVcVol = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL);
        mMinAmVcVol = mAudioManager.getStreamMinVolume(AudioManager.STREAM_VOICE_CALL);
    }

    public static boolean isEnabled() {
        return BluetoothProperties.isProfileHfpHfEnabled().orElse(false);
    }

    @Override
    public IProfileServiceBinder initBinder() {
        return new BluetoothHeadsetClientBinder(this);
    }

    @Override
    public void start() {
        synchronized (mStartStopLock) {
            Log.d(TAG, "start()");
            if (getHeadsetClientService() != null) {
                throw new IllegalStateException("start() called twice");
            }

        // Setup the JNI service
        mNativeInterface = NativeInterface.getInstance();
@@ -143,8 +123,7 @@ public class HeadsetClientService extends ProfileService {

        // Start the HfpClientConnectionService to create connection with telecom when HFP
        // connection is available on non-wearable device.
            if (getPackageManager() != null
                    && !getPackageManager().hasSystemFeature(FEATURE_WATCH)) {
        if (getPackageManager() != null && !getPackageManager().hasSystemFeature(FEATURE_WATCH)) {
            Intent startIntent = new Intent(this, HfpClientConnectionService.class);
            startService(startIntent);
        }
@@ -155,11 +134,18 @@ public class HeadsetClientService extends ProfileService {

        setHeadsetClientService(this);
    }

    public static boolean isEnabled() {
        return BluetoothProperties.isProfileHfpHfEnabled().orElse(false);
    }

    @Override
    public IProfileServiceBinder initBinder() {
        return new BluetoothHeadsetClientBinder(this);
    }

    @Override
    public void stop() {
        synchronized (mStartStopLock) {
        synchronized (HeadsetClientService.class) {
            if (sHeadsetClientService == null) {
                Log.w(TAG, "stop() called without start()");
@@ -179,23 +165,16 @@ public class HeadsetClientService extends ProfileService {
        unregisterReceiver(mBroadcastReceiver);

        synchronized (mStateMachineMap) {
                for (Iterator<Map.Entry<BluetoothDevice, HeadsetClientStateMachine>> it =
                                mStateMachineMap.entrySet().iterator();
                        it.hasNext(); ) {
                    HeadsetClientStateMachine sm =
                            mStateMachineMap.get((BluetoothDevice) it.next().getKey());
            for (HeadsetClientStateMachine sm : mStateMachineMap.values()) {
                sm.doQuit();
                    it.remove();
            }
            mStateMachineMap.clear();
        }

        // Stop the handler thread
        mSmThread.quit();
            mSmThread = null;

        mNativeInterface.cleanup();
            mNativeInterface = null;
        }
    }

    int hfToAmVol(int hfVol) {
@@ -1365,10 +1344,6 @@ public class HeadsetClientService extends ProfileService {
        }
    }

    protected void setSMFactory(HeadsetClientStateMachineFactory factory) {
        mSmFactory = factory;
    }

    protected AudioManager getAudioManager() {
        return mAudioManager;
    }
+8 −11
Original line number Diff line number Diff line
@@ -68,23 +68,23 @@ import java.util.concurrent.TimeUnit;
@MediumTest
@RunWith(AndroidJUnit4.class)
public class HeadsetClientServiceTest {
    private HeadsetClientService mService = null;
    private boolean mIsHeadsetClientServiceStarted;

    private static final int STANDARD_WAIT_MILLIS = 1000;
    private static final int SERVICE_START_WAIT_MILLIS = 100;

    @Rule public MockitoRule mockitoRule = MockitoJUnit.rule();

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

    @Mock private AdapterService mAdapterService;
    private AudioManager mMockAudioManager;
    @Mock private HeadsetClientStateMachine mStateMachine;
    @Mock private NativeInterface mNativeInterface;
    @Mock private DatabaseManager mDatabaseManager;
    @Mock private RemoteDevices mRemoteDevices;

    private HeadsetClientService mService;
    private boolean mIsHeadsetClientServiceStarted;

    private static final int STANDARD_WAIT_MILLIS = 1000;
    private static final int SERVICE_START_WAIT_MILLIS = 100;

    private AudioManager mMockAudioManager;

    <T> T mockGetSystemService(String serviceName, Class<T> serviceClass) {
        return TestUtils.mockGetSystemService(mAdapterService, serviceName, serviceClass);
    }
@@ -183,7 +183,6 @@ public class HeadsetClientServiceTest {
        doReturn(packageManager).when(mAdapterService).getPackageManager();

        HeadsetClientService service = new HeadsetClientService(mAdapterService);
        service.start();

        verify(mAdapterService).startService(any(Intent.class));

@@ -198,7 +197,6 @@ public class HeadsetClientServiceTest {
        doReturn(packageManager).when(mAdapterService).getPackageManager();

        HeadsetClientService service = new HeadsetClientService(mAdapterService);
        service.start();

        verify(mAdapterService, never()).startService(any(Intent.class));

@@ -267,7 +265,6 @@ public class HeadsetClientServiceTest {

    private void startService() throws Exception {
        mService = new HeadsetClientService(mAdapterService);
        mService.start();
        mService.setAvailable(true);
        mIsHeadsetClientServiceStarted = true;
    }