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

Commit cc4c6c35 authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

Use Singleton LocalBluetoothManager in SystemUI

Use the Dagger created LocalBluetoothManager everywhere in SystemUI.
Create LocalMediaManager by injecting said manager.

This prevents the SystemUI package to have multiple instances of
LocalBluetoothManager

Fixes: 150833065
Bug: 151319693
Test: bluetooth tile shows correct state
Change-Id: I9a4d81f32036a7ed94c202eac4ace84f0d6bf988
parent 3ce07026
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -108,14 +108,12 @@ public class LocalMediaManager implements BluetoothCallback {
                new InfoMediaManager(context, packageName, notification, mLocalBluetoothManager);
    }

    @VisibleForTesting
    LocalMediaManager(Context context, LocalBluetoothManager localBluetoothManager,
    public LocalMediaManager(Context context, LocalBluetoothManager localBluetoothManager,
            InfoMediaManager infoMediaManager, String packageName) {
        mContext = context;
        mLocalBluetoothManager = localBluetoothManager;
        mInfoMediaManager = infoMediaManager;
        mPackageName = packageName;

    }

    /**
+9 −2
Original line number Diff line number Diff line
@@ -44,6 +44,8 @@ import android.widget.LinearLayout;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settingslib.Utils;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.media.InfoMediaManager;
import com.android.settingslib.media.LocalMediaManager;
import com.android.settingslib.media.MediaDevice;
import com.android.systemui.Dependency;
@@ -98,6 +100,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
    private final LinearLayout mMediaCarousel;
    private final ArrayList<QSMediaPlayer> mMediaPlayers = new ArrayList<>();
    private final NotificationMediaManager mNotificationMediaManager;
    private final LocalBluetoothManager mLocalBluetoothManager;
    private final Executor mBackgroundExecutor;
    private LocalMediaManager mLocalMediaManager;
    private MediaDevice mDevice;
@@ -157,7 +160,8 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
            BroadcastDispatcher broadcastDispatcher,
            QSLogger qsLogger,
            NotificationMediaManager notificationMediaManager,
            @Background Executor backgroundExecutor
            @Background Executor backgroundExecutor,
            @Nullable LocalBluetoothManager localBluetoothManager
    ) {
        super(context, attrs);
        mContext = context;
@@ -165,6 +169,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
        mDumpManager = dumpManager;
        mNotificationMediaManager = notificationMediaManager;
        mBackgroundExecutor = backgroundExecutor;
        mLocalBluetoothManager = localBluetoothManager;

        setOrientation(VERTICAL);

@@ -286,7 +291,9 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne

            // Set up listener for device changes
            // TODO: integrate with MediaTransferManager?
            mLocalMediaManager = new LocalMediaManager(mContext, null, null);
            InfoMediaManager imm =
                    new InfoMediaManager(mContext, null, null, mLocalBluetoothManager);
            mLocalMediaManager = new LocalMediaManager(mContext, mLocalBluetoothManager, imm, null);
            mLocalMediaManager.startScan();
            mDevice = mLocalMediaManager.getCurrentConnectedDevice();
            mLocalMediaManager.registerCallback(mDeviceCallback);
+5 −4
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.qs;

import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT;

import android.annotation.Nullable;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Rect;
@@ -26,6 +27,7 @@ import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;

import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.broadcast.BroadcastDispatcher;
@@ -77,10 +79,11 @@ public class QuickQSPanel extends QSPanel {
            BroadcastDispatcher broadcastDispatcher,
            QSLogger qsLogger,
            NotificationMediaManager notificationMediaManager,
            @Background Executor backgroundExecutor
            @Background Executor backgroundExecutor,
            @Nullable LocalBluetoothManager localBluetoothManager
    ) {
        super(context, attrs, dumpManager, broadcastDispatcher, qsLogger, notificationMediaManager,
                backgroundExecutor);
                backgroundExecutor, localBluetoothManager);
        if (mFooter != null) {
            removeView(mFooter.getView());
        }
@@ -155,8 +158,6 @@ public class QuickQSPanel extends QSPanel {
        Dependency.get(TunerService.class).removeTunable(mNumTiles);
    }



    @Override
    protected String getDumpableTag() {
        return TAG;
+5 −1
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.media.InfoMediaManager;
import com.android.settingslib.media.LocalMediaManager;
import com.android.settingslib.media.MediaDevice;
import com.android.settingslib.media.MediaOutputSliceConstants;
@@ -106,7 +108,9 @@ public class MediaTransferManager {
    public MediaTransferManager(Context context) {
        mContext = context;
        mActivityStarter = Dependency.get(ActivityStarter.class);
        mLocalMediaManager = new LocalMediaManager(mContext, null, null);
        LocalBluetoothManager lbm = Dependency.get(LocalBluetoothManager.class);
        InfoMediaManager imm = new InfoMediaManager(mContext, null, null, lbm);
        mLocalMediaManager = new LocalMediaManager(mContext, lbm, imm, null);
    }

    /**
+5 −1
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import androidx.test.filters.SmallTest;

import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dump.DumpManager;
@@ -85,6 +86,8 @@ public class QSPanelTest extends SysuiTestCase {
    private NotificationMediaManager mNotificationMediaManager;
    @Mock
    private Executor mBackgroundExecutor;
    @Mock
    private LocalBluetoothManager mLocalBluetoothManager;

    @Before
    public void setup() throws Exception {
@@ -94,7 +97,8 @@ public class QSPanelTest extends SysuiTestCase {
        mTestableLooper.runWithLooper(() -> {
            mMetricsLogger = mDependency.injectMockDependency(MetricsLogger.class);
            mQsPanel = new QSPanel(mContext, null, mDumpManager, mBroadcastDispatcher,
                    mQSLogger, mNotificationMediaManager, mBackgroundExecutor);
                    mQSLogger, mNotificationMediaManager, mBackgroundExecutor,
                    mLocalBluetoothManager);
            // Provides a parent with non-zero size for QSPanel
            mParentView = new FrameLayout(mContext);
            mParentView.addView(mQsPanel);