Fix output switcher didn't show album art
Before this CL, output switcher will show application icon when the meta data is null. In this CL, output switcher will align the behavior of the media object. If the meta data doesn’t have an album art, then create it based on notification icon. Bug: 162998388 Test: atest MediaOutputControllerTest Change-Id: I761d83af8e08a744e4cd5c55ff2c445125885730
This commit is contained in:
@@ -18,10 +18,7 @@ package com.android.systemui.media.dialog;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.Canvas;
|
|
||||||
import android.graphics.drawable.BitmapDrawable;
|
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.media.MediaMetadata;
|
import android.media.MediaMetadata;
|
||||||
import android.media.MediaRoute2Info;
|
import android.media.MediaRoute2Info;
|
||||||
@@ -49,6 +46,8 @@ import com.android.settingslib.media.MediaOutputSliceConstants;
|
|||||||
import com.android.settingslib.utils.ThreadUtils;
|
import com.android.settingslib.utils.ThreadUtils;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.plugins.ActivityStarter;
|
import com.android.systemui.plugins.ActivityStarter;
|
||||||
|
import com.android.systemui.statusbar.notification.NotificationEntryManager;
|
||||||
|
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
||||||
import com.android.systemui.statusbar.phone.ShadeController;
|
import com.android.systemui.statusbar.phone.ShadeController;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -61,7 +60,7 @@ import javax.inject.Inject;
|
|||||||
/**
|
/**
|
||||||
* Controller for media output dialog
|
* Controller for media output dialog
|
||||||
*/
|
*/
|
||||||
public class MediaOutputController implements LocalMediaManager.DeviceCallback{
|
public class MediaOutputController implements LocalMediaManager.DeviceCallback {
|
||||||
|
|
||||||
private static final String TAG = "MediaOutputController";
|
private static final String TAG = "MediaOutputController";
|
||||||
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
|
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
|
||||||
@@ -73,6 +72,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback{
|
|||||||
private final ActivityStarter mActivityStarter;
|
private final ActivityStarter mActivityStarter;
|
||||||
private final List<MediaDevice> mGroupMediaDevices = new CopyOnWriteArrayList<>();
|
private final List<MediaDevice> mGroupMediaDevices = new CopyOnWriteArrayList<>();
|
||||||
private final boolean mAboveStatusbar;
|
private final boolean mAboveStatusbar;
|
||||||
|
private final NotificationEntryManager mNotificationEntryManager;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
final List<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>();
|
final List<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>();
|
||||||
|
|
||||||
@@ -85,13 +85,15 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback{
|
|||||||
@Inject
|
@Inject
|
||||||
public MediaOutputController(@NonNull Context context, String packageName,
|
public MediaOutputController(@NonNull Context context, String packageName,
|
||||||
boolean aboveStatusbar, MediaSessionManager mediaSessionManager, LocalBluetoothManager
|
boolean aboveStatusbar, MediaSessionManager mediaSessionManager, LocalBluetoothManager
|
||||||
lbm, ShadeController shadeController, ActivityStarter starter) {
|
lbm, ShadeController shadeController, ActivityStarter starter,
|
||||||
|
NotificationEntryManager notificationEntryManager) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mPackageName = packageName;
|
mPackageName = packageName;
|
||||||
mMediaSessionManager = mediaSessionManager;
|
mMediaSessionManager = mediaSessionManager;
|
||||||
mShadeController = shadeController;
|
mShadeController = shadeController;
|
||||||
mActivityStarter = starter;
|
mActivityStarter = starter;
|
||||||
mAboveStatusbar = aboveStatusbar;
|
mAboveStatusbar = aboveStatusbar;
|
||||||
|
mNotificationEntryManager = notificationEntryManager;
|
||||||
InfoMediaManager imm = new InfoMediaManager(mContext, packageName, null, lbm);
|
InfoMediaManager imm = new InfoMediaManager(mContext, packageName, null, lbm);
|
||||||
mLocalMediaManager = new LocalMediaManager(mContext, lbm, imm, packageName);
|
mLocalMediaManager = new LocalMediaManager(mContext, lbm, imm, packageName);
|
||||||
}
|
}
|
||||||
@@ -197,7 +199,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback{
|
|||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Log.d(TAG, "Media meta data does not contain icon information");
|
Log.d(TAG, "Media meta data does not contain icon information");
|
||||||
}
|
}
|
||||||
return getPackageIcon();
|
return getNotificationIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
IconCompat getDeviceIconCompat(MediaDevice device) {
|
IconCompat getDeviceIconCompat(MediaDevice device) {
|
||||||
@@ -213,24 +215,15 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback{
|
|||||||
return BluetoothUtils.createIconWithDrawable(drawable);
|
return BluetoothUtils.createIconWithDrawable(drawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
private IconCompat getPackageIcon() {
|
IconCompat getNotificationIcon() {
|
||||||
if (TextUtils.isEmpty(mPackageName)) {
|
if (TextUtils.isEmpty(mPackageName)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
try {
|
for (NotificationEntry entry
|
||||||
final Drawable drawable = mContext.getPackageManager().getApplicationIcon(mPackageName);
|
: mNotificationEntryManager.getActiveNotificationsForCurrentUser()) {
|
||||||
if (drawable instanceof BitmapDrawable) {
|
if (entry.getSbn().getNotification().hasMediaSession()
|
||||||
return IconCompat.createWithBitmap(((BitmapDrawable) drawable).getBitmap());
|
&& TextUtils.equals(entry.getSbn().getPackageName(), mPackageName)) {
|
||||||
}
|
return IconCompat.createFromIcon(entry.getSbn().getNotification().getLargeIcon());
|
||||||
final Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
|
|
||||||
drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
|
|
||||||
final Canvas canvas = new Canvas(bitmap);
|
|
||||||
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
|
|
||||||
drawable.draw(canvas);
|
|
||||||
return IconCompat.createWithBitmap(bitmap);
|
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
|
||||||
if (DEBUG) {
|
|
||||||
Log.e(TAG, "Package is not found. Unable to get package icon.");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import android.content.Context
|
|||||||
import android.media.session.MediaSessionManager
|
import android.media.session.MediaSessionManager
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothManager
|
import com.android.settingslib.bluetooth.LocalBluetoothManager
|
||||||
import com.android.systemui.plugins.ActivityStarter
|
import com.android.systemui.plugins.ActivityStarter
|
||||||
|
import com.android.systemui.statusbar.notification.NotificationEntryManager
|
||||||
import com.android.systemui.statusbar.phone.ShadeController
|
import com.android.systemui.statusbar.phone.ShadeController
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@@ -31,7 +32,8 @@ class MediaOutputDialogFactory @Inject constructor(
|
|||||||
private val mediaSessionManager: MediaSessionManager,
|
private val mediaSessionManager: MediaSessionManager,
|
||||||
private val lbm: LocalBluetoothManager?,
|
private val lbm: LocalBluetoothManager?,
|
||||||
private val shadeController: ShadeController,
|
private val shadeController: ShadeController,
|
||||||
private val starter: ActivityStarter
|
private val starter: ActivityStarter,
|
||||||
|
private val notificationEntryManager: NotificationEntryManager
|
||||||
) {
|
) {
|
||||||
companion object {
|
companion object {
|
||||||
var mediaOutputDialog: MediaOutputDialog? = null
|
var mediaOutputDialog: MediaOutputDialog? = null
|
||||||
@@ -41,7 +43,7 @@ class MediaOutputDialogFactory @Inject constructor(
|
|||||||
fun create(packageName: String, aboveStatusBar: Boolean) {
|
fun create(packageName: String, aboveStatusBar: Boolean) {
|
||||||
mediaOutputDialog?.dismiss()
|
mediaOutputDialog?.dismiss()
|
||||||
mediaOutputDialog = MediaOutputController(context, packageName, aboveStatusBar,
|
mediaOutputDialog = MediaOutputController(context, packageName, aboveStatusBar,
|
||||||
mediaSessionManager, lbm, shadeController, starter).run {
|
mediaSessionManager, lbm, shadeController, starter, notificationEntryManager).run {
|
||||||
MediaOutputDialog(context, aboveStatusBar, this) }
|
MediaOutputDialog(context, aboveStatusBar, this) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
|||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.SysuiTestCase;
|
import com.android.systemui.SysuiTestCase;
|
||||||
import com.android.systemui.plugins.ActivityStarter;
|
import com.android.systemui.plugins.ActivityStarter;
|
||||||
|
import com.android.systemui.statusbar.notification.NotificationEntryManager;
|
||||||
import com.android.systemui.statusbar.phone.ShadeController;
|
import com.android.systemui.statusbar.phone.ShadeController;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -58,6 +59,8 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase {
|
|||||||
private LocalBluetoothManager mLocalBluetoothManager = mock(LocalBluetoothManager.class);
|
private LocalBluetoothManager mLocalBluetoothManager = mock(LocalBluetoothManager.class);
|
||||||
private ShadeController mShadeController = mock(ShadeController.class);
|
private ShadeController mShadeController = mock(ShadeController.class);
|
||||||
private ActivityStarter mStarter = mock(ActivityStarter.class);
|
private ActivityStarter mStarter = mock(ActivityStarter.class);
|
||||||
|
private NotificationEntryManager mNotificationEntryManager =
|
||||||
|
mock(NotificationEntryManager.class);
|
||||||
|
|
||||||
private MediaOutputBaseDialogImpl mMediaOutputBaseDialogImpl;
|
private MediaOutputBaseDialogImpl mMediaOutputBaseDialogImpl;
|
||||||
private MediaOutputController mMediaOutputController;
|
private MediaOutputController mMediaOutputController;
|
||||||
@@ -69,7 +72,8 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase {
|
|||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mMediaOutputController = new MediaOutputController(mContext, TEST_PACKAGE, false,
|
mMediaOutputController = new MediaOutputController(mContext, TEST_PACKAGE, false,
|
||||||
mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter);
|
mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter,
|
||||||
|
mNotificationEntryManager);
|
||||||
mMediaOutputBaseDialogImpl = new MediaOutputBaseDialogImpl(mContext,
|
mMediaOutputBaseDialogImpl = new MediaOutputBaseDialogImpl(mContext,
|
||||||
mMediaOutputController);
|
mMediaOutputController);
|
||||||
mMediaOutputBaseDialogImpl.onCreate(new Bundle());
|
mMediaOutputBaseDialogImpl.onCreate(new Bundle());
|
||||||
|
|||||||
@@ -27,15 +27,19 @@ import static org.mockito.Mockito.spy;
|
|||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.app.Notification;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.graphics.drawable.Icon;
|
||||||
import android.media.MediaDescription;
|
import android.media.MediaDescription;
|
||||||
import android.media.MediaMetadata;
|
import android.media.MediaMetadata;
|
||||||
import android.media.RoutingSessionInfo;
|
import android.media.RoutingSessionInfo;
|
||||||
import android.media.session.MediaController;
|
import android.media.session.MediaController;
|
||||||
import android.media.session.MediaSessionManager;
|
import android.media.session.MediaSessionManager;
|
||||||
|
import android.service.notification.StatusBarNotification;
|
||||||
import android.testing.AndroidTestingRunner;
|
import android.testing.AndroidTestingRunner;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
|
import androidx.core.graphics.drawable.IconCompat;
|
||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
|
|
||||||
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
|
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
|
||||||
@@ -45,6 +49,8 @@ import com.android.settingslib.media.MediaDevice;
|
|||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.SysuiTestCase;
|
import com.android.systemui.SysuiTestCase;
|
||||||
import com.android.systemui.plugins.ActivityStarter;
|
import com.android.systemui.plugins.ActivityStarter;
|
||||||
|
import com.android.systemui.statusbar.notification.NotificationEntryManager;
|
||||||
|
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
||||||
import com.android.systemui.statusbar.phone.ShadeController;
|
import com.android.systemui.statusbar.phone.ShadeController;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -81,6 +87,8 @@ public class MediaOutputControllerTest extends SysuiTestCase {
|
|||||||
private RoutingSessionInfo mRemoteSessionInfo = mock(RoutingSessionInfo.class);
|
private RoutingSessionInfo mRemoteSessionInfo = mock(RoutingSessionInfo.class);
|
||||||
private ShadeController mShadeController = mock(ShadeController.class);
|
private ShadeController mShadeController = mock(ShadeController.class);
|
||||||
private ActivityStarter mStarter = mock(ActivityStarter.class);
|
private ActivityStarter mStarter = mock(ActivityStarter.class);
|
||||||
|
private NotificationEntryManager mNotificationEntryManager =
|
||||||
|
mock(NotificationEntryManager.class);
|
||||||
|
|
||||||
private Context mSpyContext;
|
private Context mSpyContext;
|
||||||
private MediaOutputController mMediaOutputController;
|
private MediaOutputController mMediaOutputController;
|
||||||
@@ -100,8 +108,10 @@ public class MediaOutputControllerTest extends SysuiTestCase {
|
|||||||
MediaSessionManager.class);
|
MediaSessionManager.class);
|
||||||
when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(
|
when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(
|
||||||
mCachedBluetoothDeviceManager);
|
mCachedBluetoothDeviceManager);
|
||||||
|
|
||||||
mMediaOutputController = new MediaOutputController(mSpyContext, TEST_PACKAGE_NAME, false,
|
mMediaOutputController = new MediaOutputController(mSpyContext, TEST_PACKAGE_NAME, false,
|
||||||
mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter);
|
mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter,
|
||||||
|
mNotificationEntryManager);
|
||||||
mLocalMediaManager = spy(mMediaOutputController.mLocalMediaManager);
|
mLocalMediaManager = spy(mMediaOutputController.mLocalMediaManager);
|
||||||
mMediaOutputController.mLocalMediaManager = mLocalMediaManager;
|
mMediaOutputController.mLocalMediaManager = mLocalMediaManager;
|
||||||
MediaDescription.Builder builder = new MediaDescription.Builder();
|
MediaDescription.Builder builder = new MediaDescription.Builder();
|
||||||
@@ -144,7 +154,8 @@ public class MediaOutputControllerTest extends SysuiTestCase {
|
|||||||
@Test
|
@Test
|
||||||
public void start_withoutPackageName_verifyMediaControllerInit() {
|
public void start_withoutPackageName_verifyMediaControllerInit() {
|
||||||
mMediaOutputController = new MediaOutputController(mSpyContext, null, false,
|
mMediaOutputController = new MediaOutputController(mSpyContext, null, false,
|
||||||
mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter);
|
mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter,
|
||||||
|
mNotificationEntryManager);
|
||||||
|
|
||||||
mMediaOutputController.start(mCb);
|
mMediaOutputController.start(mCb);
|
||||||
|
|
||||||
@@ -164,7 +175,9 @@ public class MediaOutputControllerTest extends SysuiTestCase {
|
|||||||
@Test
|
@Test
|
||||||
public void stop_withoutPackageName_verifyMediaControllerDeinit() {
|
public void stop_withoutPackageName_verifyMediaControllerDeinit() {
|
||||||
mMediaOutputController = new MediaOutputController(mSpyContext, null, false,
|
mMediaOutputController = new MediaOutputController(mSpyContext, null, false,
|
||||||
mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter);
|
mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter,
|
||||||
|
mNotificationEntryManager);
|
||||||
|
|
||||||
mMediaOutputController.start(mCb);
|
mMediaOutputController.start(mCb);
|
||||||
|
|
||||||
mMediaOutputController.stop();
|
mMediaOutputController.stop();
|
||||||
@@ -423,4 +436,53 @@ public class MediaOutputControllerTest extends SysuiTestCase {
|
|||||||
}
|
}
|
||||||
assertThat(newDevices.get(4).getId()).isEqualTo(TEST_DEVICE_5_ID);
|
assertThat(newDevices.get(4).getId()).isEqualTo(TEST_DEVICE_5_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getNotificationLargeIcon_withoutPackageName_returnsNull() {
|
||||||
|
mMediaOutputController = new MediaOutputController(mSpyContext, null, false,
|
||||||
|
mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter,
|
||||||
|
mNotificationEntryManager);
|
||||||
|
|
||||||
|
assertThat(mMediaOutputController.getNotificationIcon()).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getNotificationLargeIcon_withPackageNameAndMediaSession_returnsIconCompat() {
|
||||||
|
final List<NotificationEntry> entryList = new ArrayList<>();
|
||||||
|
final NotificationEntry entry = mock(NotificationEntry.class);
|
||||||
|
final StatusBarNotification sbn = mock(StatusBarNotification.class);
|
||||||
|
final Notification notification = mock(Notification.class);
|
||||||
|
final Icon icon = mock(Icon.class);
|
||||||
|
entryList.add(entry);
|
||||||
|
|
||||||
|
when(mNotificationEntryManager.getActiveNotificationsForCurrentUser())
|
||||||
|
.thenReturn(entryList);
|
||||||
|
when(entry.getSbn()).thenReturn(sbn);
|
||||||
|
when(sbn.getNotification()).thenReturn(notification);
|
||||||
|
when(sbn.getPackageName()).thenReturn(TEST_PACKAGE_NAME);
|
||||||
|
when(notification.hasMediaSession()).thenReturn(true);
|
||||||
|
when(notification.getLargeIcon()).thenReturn(icon);
|
||||||
|
|
||||||
|
assertThat(mMediaOutputController.getNotificationIcon() instanceof IconCompat).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getNotificationLargeIcon_withPackageNameAndNoMediaSession_returnsNull() {
|
||||||
|
final List<NotificationEntry> entryList = new ArrayList<>();
|
||||||
|
final NotificationEntry entry = mock(NotificationEntry.class);
|
||||||
|
final StatusBarNotification sbn = mock(StatusBarNotification.class);
|
||||||
|
final Notification notification = mock(Notification.class);
|
||||||
|
final Icon icon = mock(Icon.class);
|
||||||
|
entryList.add(entry);
|
||||||
|
|
||||||
|
when(mNotificationEntryManager.getActiveNotificationsForCurrentUser())
|
||||||
|
.thenReturn(entryList);
|
||||||
|
when(entry.getSbn()).thenReturn(sbn);
|
||||||
|
when(sbn.getNotification()).thenReturn(notification);
|
||||||
|
when(sbn.getPackageName()).thenReturn(TEST_PACKAGE_NAME);
|
||||||
|
when(notification.hasMediaSession()).thenReturn(false);
|
||||||
|
when(notification.getLargeIcon()).thenReturn(icon);
|
||||||
|
|
||||||
|
assertThat(mMediaOutputController.getNotificationIcon()).isNull();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ import com.android.settingslib.media.LocalMediaManager;
|
|||||||
import com.android.settingslib.media.MediaDevice;
|
import com.android.settingslib.media.MediaDevice;
|
||||||
import com.android.systemui.SysuiTestCase;
|
import com.android.systemui.SysuiTestCase;
|
||||||
import com.android.systemui.plugins.ActivityStarter;
|
import com.android.systemui.plugins.ActivityStarter;
|
||||||
|
import com.android.systemui.statusbar.notification.NotificationEntryManager;
|
||||||
import com.android.systemui.statusbar.phone.ShadeController;
|
import com.android.systemui.statusbar.phone.ShadeController;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
@@ -58,6 +59,8 @@ public class MediaOutputDialogTest extends SysuiTestCase {
|
|||||||
private ActivityStarter mStarter = mock(ActivityStarter.class);
|
private ActivityStarter mStarter = mock(ActivityStarter.class);
|
||||||
private LocalMediaManager mLocalMediaManager = mock(LocalMediaManager.class);
|
private LocalMediaManager mLocalMediaManager = mock(LocalMediaManager.class);
|
||||||
private MediaDevice mMediaDevice = mock(MediaDevice.class);
|
private MediaDevice mMediaDevice = mock(MediaDevice.class);
|
||||||
|
private NotificationEntryManager mNotificationEntryManager =
|
||||||
|
mock(NotificationEntryManager.class);
|
||||||
|
|
||||||
private MediaOutputDialog mMediaOutputDialog;
|
private MediaOutputDialog mMediaOutputDialog;
|
||||||
private MediaOutputController mMediaOutputController;
|
private MediaOutputController mMediaOutputController;
|
||||||
@@ -66,7 +69,8 @@ public class MediaOutputDialogTest extends SysuiTestCase {
|
|||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mMediaOutputController = new MediaOutputController(mContext, TEST_PACKAGE, false,
|
mMediaOutputController = new MediaOutputController(mContext, TEST_PACKAGE, false,
|
||||||
mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter);
|
mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter,
|
||||||
|
mNotificationEntryManager);
|
||||||
mMediaOutputController.mLocalMediaManager = mLocalMediaManager;
|
mMediaOutputController.mLocalMediaManager = mLocalMediaManager;
|
||||||
mMediaOutputDialog = new MediaOutputDialog(mContext, false, mMediaOutputController);
|
mMediaOutputDialog = new MediaOutputDialog(mContext, false, mMediaOutputController);
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ import com.android.settingslib.media.MediaDevice;
|
|||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.SysuiTestCase;
|
import com.android.systemui.SysuiTestCase;
|
||||||
import com.android.systemui.plugins.ActivityStarter;
|
import com.android.systemui.plugins.ActivityStarter;
|
||||||
|
import com.android.systemui.statusbar.notification.NotificationEntryManager;
|
||||||
import com.android.systemui.statusbar.phone.ShadeController;
|
import com.android.systemui.statusbar.phone.ShadeController;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
@@ -59,6 +60,8 @@ public class MediaOutputGroupDialogTest extends SysuiTestCase {
|
|||||||
private LocalMediaManager mLocalMediaManager = mock(LocalMediaManager.class);
|
private LocalMediaManager mLocalMediaManager = mock(LocalMediaManager.class);
|
||||||
private MediaDevice mMediaDevice = mock(MediaDevice.class);
|
private MediaDevice mMediaDevice = mock(MediaDevice.class);
|
||||||
private MediaDevice mMediaDevice1 = mock(MediaDevice.class);
|
private MediaDevice mMediaDevice1 = mock(MediaDevice.class);
|
||||||
|
private NotificationEntryManager mNotificationEntryManager =
|
||||||
|
mock(NotificationEntryManager.class);
|
||||||
|
|
||||||
private MediaOutputGroupDialog mMediaOutputGroupDialog;
|
private MediaOutputGroupDialog mMediaOutputGroupDialog;
|
||||||
private MediaOutputController mMediaOutputController;
|
private MediaOutputController mMediaOutputController;
|
||||||
@@ -67,7 +70,8 @@ public class MediaOutputGroupDialogTest extends SysuiTestCase {
|
|||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mMediaOutputController = new MediaOutputController(mContext, TEST_PACKAGE, false,
|
mMediaOutputController = new MediaOutputController(mContext, TEST_PACKAGE, false,
|
||||||
mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter);
|
mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter,
|
||||||
|
mNotificationEntryManager);
|
||||||
mMediaOutputController.mLocalMediaManager = mLocalMediaManager;
|
mMediaOutputController.mLocalMediaManager = mLocalMediaManager;
|
||||||
mMediaOutputGroupDialog = new MediaOutputGroupDialog(mContext, false,
|
mMediaOutputGroupDialog = new MediaOutputGroupDialog(mContext, false,
|
||||||
mMediaOutputController);
|
mMediaOutputController);
|
||||||
|
|||||||
Reference in New Issue
Block a user