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

Commit 016e262f authored by Kihong Seong's avatar Kihong Seong Committed by Gerrit Code Review
Browse files

Merge "Modify ScanManager cosntructor to take looper as parameter" into main

parents 6f893001 951ed55c
Loading
Loading
Loading
Loading
+16 −3
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.bluetooth.gatt;

import android.os.Looper;
import android.util.Log;

import com.android.bluetooth.Utils;
@@ -68,9 +69,21 @@ public class GattObjectsFactory {
        return ScanNativeInterface.getInstance();
    }

    public ScanManager createScanManager(GattService service, AdapterService adapterService,
            BluetoothAdapterProxy bluetoothAdapterProxy) {
        return new ScanManager(service, adapterService, bluetoothAdapterProxy);
    /**
     * Create an instance of ScanManager
     *
     * @param service a GattService instance
     * @param adapterService an AdapterService instance
     * @param bluetoothAdapterProxy a bluetoothAdapterProxy instance
     * @param looper the looper to be used for processing messages
     * @return the created ScanManager instance
     */
    public ScanManager createScanManager(
            GattService service,
            AdapterService adapterService,
            BluetoothAdapterProxy bluetoothAdapterProxy,
            Looper looper) {
        return new ScanManager(service, adapterService, bluetoothAdapterProxy, looper);
    }

    public PeriodicScanManager createPeriodicScanManager(AdapterService adapterService) {
+7 −2
Original line number Diff line number Diff line
@@ -69,6 +69,7 @@ import android.net.MacAddress;
import android.os.Binder;
import android.os.Build;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.Message;
import android.os.ParcelUuid;
@@ -359,8 +360,12 @@ public class GattService extends ProfileService {
                        mAdapterService,
                        mAdvertiserMap);

        mScanManager = GattObjectsFactory.getInstance()
                .createScanManager(this, mAdapterService, mBluetoothAdapterProxy);
        HandlerThread thread = new HandlerThread("BluetoothScanManager");
        thread.start();
        mScanManager =
                GattObjectsFactory.getInstance()
                        .createScanManager(
                                this, mAdapterService, mBluetoothAdapterProxy, thread.getLooper());

        mPeriodicScanManager = GattObjectsFactory.getInstance()
                .createPeriodicScanManager(mAdapterService);
+3 −5
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ import android.content.IntentFilter;
import android.hardware.display.DisplayManager;
import android.location.LocationManager;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
@@ -160,7 +159,8 @@ public class ScanManager {
    ScanManager(
            GattService service,
            AdapterService adapterService,
            BluetoothAdapterProxy bluetoothAdapterProxy) {
            BluetoothAdapterProxy bluetoothAdapterProxy,
            Looper looper) {
        mRegularScanClients =
                Collections.newSetFromMap(new ConcurrentHashMap<ScanClient, Boolean>());
        mBatchClients = Collections.newSetFromMap(new ConcurrentHashMap<ScanClient, Boolean>());
@@ -184,9 +184,7 @@ public class ScanManager {
        mPriorityMap.put(ScanSettings.SCAN_MODE_AMBIENT_DISCOVERY, 4);
        mPriorityMap.put(ScanSettings.SCAN_MODE_LOW_LATENCY, 5);

        HandlerThread thread = new HandlerThread("BluetoothScanManager");
        thread.start();
        mHandler = new ClientHandler(thread.getLooper());
        mHandler = new ClientHandler(looper);
        if (mDm != null) {
            mDm.registerDisplayListener(mDisplayListener, null);
        }
+1 −1
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ public class GattServiceTest {

        GattObjectsFactory.setInstanceForTesting(mFactory);
        doReturn(mNativeInterface).when(mFactory).getNativeInterface();
        doReturn(mScanManager).when(mFactory).createScanManager(any(), any(), any());
        doReturn(mScanManager).when(mFactory).createScanManager(any(), any(), any(), any());
        doReturn(mPeriodicScanManager).when(mFactory).createPeriodicScanManager(any());
        doReturn(mDistanceMeasurementManager).when(mFactory)
                .createDistanceMeasurementManager(any());
+14 −4
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.test.TestLooper;
import android.provider.Settings;
import android.test.mock.MockContentProvider;
import android.test.mock.MockContentResolver;
@@ -106,6 +107,7 @@ public class ScanManagerTest {
    private Context mTargetContext;
    private ScanManager mScanManager;
    private Handler mHandler;
    private TestLooper mTestLooper;
    private CountDownLatch mLatch;
    private long mScanReportDelay;

@@ -181,7 +183,14 @@ public class ScanManagerTest {
        doReturn(mTargetContext.getUser()).when(mMockGattService).getUser();
        doReturn(mTargetContext.getPackageName()).when(mMockGattService).getPackageName();

        mScanManager = new ScanManager(mMockGattService, mAdapterService, mBluetoothAdapterProxy);
        mTestLooper = new TestLooper();
        mTestLooper.startAutoDispatch();
        mScanManager =
                new ScanManager(
                        mMockGattService,
                        mAdapterService,
                        mBluetoothAdapterProxy,
                        mTestLooper.getLooper());

        mHandler = mScanManager.getClientHandler();
        assertThat(mHandler).isNotNull();
@@ -194,6 +203,7 @@ public class ScanManagerTest {

    @After
    public void tearDown() throws Exception {
        mTestLooper.stopAutoDispatchAndIgnoreExceptions();
        TestUtils.clearAdapterService(mAdapterService);
        BluetoothAdapterProxy.setInstanceForTesting(null);
        GattObjectsFactory.setInstanceForTesting(null);
@@ -216,7 +226,7 @@ public class ScanManagerTest {
        }
        mHandler.sendMessage(msg);
        // Wait for async work from handler thread
        TestUtils.waitForLooperToBeIdle(mHandler.getLooper());
        TestUtils.waitForLooperToFinishScheduledTask(mHandler.getLooper());
    }

    private ScanClient createScanClient(
@@ -1394,7 +1404,7 @@ public class ScanManagerTest {
                BluetoothProfile.STATE_CONNECTING);

        // Wait for handleConnectingState to happen
        TestUtils.waitForLooperToBeIdle(mHandler.getLooper());
        TestUtils.waitForLooperToFinishScheduledTask(mHandler.getLooper());
        assertThat(mScanManager.mIsConnecting).isTrue();
    }

@@ -1430,7 +1440,7 @@ public class ScanManagerTest {

        t1.join();
        t2.join();
        TestUtils.waitForLooperToBeIdle(mHandler.getLooper());
        TestUtils.waitForLooperToFinishScheduledTask(mHandler.getLooper());
        assertThat(mScanManager.mProfilesConnecting).isEqualTo(3);
    }
}