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
This commit is contained in:
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user