Loading packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java +14 −21 Original line number Diff line number Diff line Loading @@ -18,10 +18,7 @@ package com.android.systemui.media.dialog; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.media.MediaMetadata; import android.media.MediaRoute2Info; Loading Loading @@ -49,6 +46,8 @@ import com.android.settingslib.media.MediaOutputSliceConstants; import com.android.settingslib.utils.ThreadUtils; import com.android.systemui.R; 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 java.util.ArrayList; Loading @@ -73,6 +72,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback{ private final ActivityStarter mActivityStarter; private final List<MediaDevice> mGroupMediaDevices = new CopyOnWriteArrayList<>(); private final boolean mAboveStatusbar; private final NotificationEntryManager mNotificationEntryManager; @VisibleForTesting final List<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>(); Loading @@ -85,13 +85,15 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback{ @Inject public MediaOutputController(@NonNull Context context, String packageName, boolean aboveStatusbar, MediaSessionManager mediaSessionManager, LocalBluetoothManager lbm, ShadeController shadeController, ActivityStarter starter) { lbm, ShadeController shadeController, ActivityStarter starter, NotificationEntryManager notificationEntryManager) { mContext = context; mPackageName = packageName; mMediaSessionManager = mediaSessionManager; mShadeController = shadeController; mActivityStarter = starter; mAboveStatusbar = aboveStatusbar; mNotificationEntryManager = notificationEntryManager; InfoMediaManager imm = new InfoMediaManager(mContext, packageName, null, lbm); mLocalMediaManager = new LocalMediaManager(mContext, lbm, imm, packageName); } Loading Loading @@ -197,7 +199,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback{ if (DEBUG) { Log.d(TAG, "Media meta data does not contain icon information"); } return getPackageIcon(); return getNotificationIcon(); } IconCompat getDeviceIconCompat(MediaDevice device) { Loading @@ -213,24 +215,15 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback{ return BluetoothUtils.createIconWithDrawable(drawable); } private IconCompat getPackageIcon() { IconCompat getNotificationIcon() { if (TextUtils.isEmpty(mPackageName)) { return null; } try { final Drawable drawable = mContext.getPackageManager().getApplicationIcon(mPackageName); if (drawable instanceof BitmapDrawable) { return IconCompat.createWithBitmap(((BitmapDrawable) drawable).getBitmap()); } 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."); for (NotificationEntry entry : mNotificationEntryManager.getActiveNotificationsForCurrentUser()) { if (entry.getSbn().getNotification().hasMediaSession() && TextUtils.equals(entry.getSbn().getPackageName(), mPackageName)) { return IconCompat.createFromIcon(entry.getSbn().getNotification().getLargeIcon()); } } return null; Loading packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputDialogFactory.kt +4 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.content.Context import android.media.session.MediaSessionManager import com.android.settingslib.bluetooth.LocalBluetoothManager import com.android.systemui.plugins.ActivityStarter import com.android.systemui.statusbar.notification.NotificationEntryManager import com.android.systemui.statusbar.phone.ShadeController import javax.inject.Inject Loading @@ -31,7 +32,8 @@ class MediaOutputDialogFactory @Inject constructor( private val mediaSessionManager: MediaSessionManager, private val lbm: LocalBluetoothManager?, private val shadeController: ShadeController, private val starter: ActivityStarter private val starter: ActivityStarter, private val notificationEntryManager: NotificationEntryManager ) { companion object { var mediaOutputDialog: MediaOutputDialog? = null Loading @@ -41,7 +43,7 @@ class MediaOutputDialogFactory @Inject constructor( fun create(packageName: String, aboveStatusBar: Boolean) { mediaOutputDialog?.dismiss() mediaOutputDialog = MediaOutputController(context, packageName, aboveStatusBar, mediaSessionManager, lbm, shadeController, starter).run { mediaSessionManager, lbm, shadeController, starter, notificationEntryManager).run { MediaOutputDialog(context, aboveStatusBar, this) } } Loading packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBaseDialogTest.java +5 −1 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.phone.ShadeController; import org.junit.Before; Loading @@ -58,6 +59,8 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase { private LocalBluetoothManager mLocalBluetoothManager = mock(LocalBluetoothManager.class); private ShadeController mShadeController = mock(ShadeController.class); private ActivityStarter mStarter = mock(ActivityStarter.class); private NotificationEntryManager mNotificationEntryManager = mock(NotificationEntryManager.class); private MediaOutputBaseDialogImpl mMediaOutputBaseDialogImpl; private MediaOutputController mMediaOutputController; Loading @@ -69,7 +72,8 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase { @Before public void setUp() { mMediaOutputController = new MediaOutputController(mContext, TEST_PACKAGE, false, mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter); mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter, mNotificationEntryManager); mMediaOutputBaseDialogImpl = new MediaOutputBaseDialogImpl(mContext, mMediaOutputController); mMediaOutputBaseDialogImpl.onCreate(new Bundle()); Loading packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java +65 −3 Original line number Diff line number Diff line Loading @@ -27,15 +27,19 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Notification; import android.content.Context; import android.graphics.drawable.Icon; import android.media.MediaDescription; import android.media.MediaMetadata; import android.media.RoutingSessionInfo; import android.media.session.MediaController; import android.media.session.MediaSessionManager; import android.service.notification.StatusBarNotification; import android.testing.AndroidTestingRunner; import android.text.TextUtils; import androidx.core.graphics.drawable.IconCompat; import androidx.test.filters.SmallTest; import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager; Loading @@ -45,6 +49,8 @@ import com.android.settingslib.media.MediaDevice; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; 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 org.junit.Before; Loading Loading @@ -81,6 +87,8 @@ public class MediaOutputControllerTest extends SysuiTestCase { private RoutingSessionInfo mRemoteSessionInfo = mock(RoutingSessionInfo.class); private ShadeController mShadeController = mock(ShadeController.class); private ActivityStarter mStarter = mock(ActivityStarter.class); private NotificationEntryManager mNotificationEntryManager = mock(NotificationEntryManager.class); private Context mSpyContext; private MediaOutputController mMediaOutputController; Loading @@ -100,8 +108,10 @@ public class MediaOutputControllerTest extends SysuiTestCase { MediaSessionManager.class); when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn( mCachedBluetoothDeviceManager); mMediaOutputController = new MediaOutputController(mSpyContext, TEST_PACKAGE_NAME, false, mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter); mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter, mNotificationEntryManager); mLocalMediaManager = spy(mMediaOutputController.mLocalMediaManager); mMediaOutputController.mLocalMediaManager = mLocalMediaManager; MediaDescription.Builder builder = new MediaDescription.Builder(); Loading Loading @@ -144,7 +154,8 @@ public class MediaOutputControllerTest extends SysuiTestCase { @Test public void start_withoutPackageName_verifyMediaControllerInit() { mMediaOutputController = new MediaOutputController(mSpyContext, null, false, mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter); mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter, mNotificationEntryManager); mMediaOutputController.start(mCb); Loading @@ -164,7 +175,9 @@ public class MediaOutputControllerTest extends SysuiTestCase { @Test public void stop_withoutPackageName_verifyMediaControllerDeinit() { mMediaOutputController = new MediaOutputController(mSpyContext, null, false, mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter); mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter, mNotificationEntryManager); mMediaOutputController.start(mCb); mMediaOutputController.stop(); Loading Loading @@ -423,4 +436,53 @@ public class MediaOutputControllerTest extends SysuiTestCase { } 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(); } } packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogTest.java +5 −1 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import com.android.settingslib.media.LocalMediaManager; import com.android.settingslib.media.MediaDevice; import com.android.systemui.SysuiTestCase; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.phone.ShadeController; import org.junit.After; Loading @@ -58,6 +59,8 @@ public class MediaOutputDialogTest extends SysuiTestCase { private ActivityStarter mStarter = mock(ActivityStarter.class); private LocalMediaManager mLocalMediaManager = mock(LocalMediaManager.class); private MediaDevice mMediaDevice = mock(MediaDevice.class); private NotificationEntryManager mNotificationEntryManager = mock(NotificationEntryManager.class); private MediaOutputDialog mMediaOutputDialog; private MediaOutputController mMediaOutputController; Loading @@ -66,7 +69,8 @@ public class MediaOutputDialogTest extends SysuiTestCase { @Before public void setUp() { mMediaOutputController = new MediaOutputController(mContext, TEST_PACKAGE, false, mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter); mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter, mNotificationEntryManager); mMediaOutputController.mLocalMediaManager = mLocalMediaManager; mMediaOutputDialog = new MediaOutputDialog(mContext, false, mMediaOutputController); Loading Loading
packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java +14 −21 Original line number Diff line number Diff line Loading @@ -18,10 +18,7 @@ package com.android.systemui.media.dialog; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.media.MediaMetadata; import android.media.MediaRoute2Info; Loading Loading @@ -49,6 +46,8 @@ import com.android.settingslib.media.MediaOutputSliceConstants; import com.android.settingslib.utils.ThreadUtils; import com.android.systemui.R; 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 java.util.ArrayList; Loading @@ -73,6 +72,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback{ private final ActivityStarter mActivityStarter; private final List<MediaDevice> mGroupMediaDevices = new CopyOnWriteArrayList<>(); private final boolean mAboveStatusbar; private final NotificationEntryManager mNotificationEntryManager; @VisibleForTesting final List<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>(); Loading @@ -85,13 +85,15 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback{ @Inject public MediaOutputController(@NonNull Context context, String packageName, boolean aboveStatusbar, MediaSessionManager mediaSessionManager, LocalBluetoothManager lbm, ShadeController shadeController, ActivityStarter starter) { lbm, ShadeController shadeController, ActivityStarter starter, NotificationEntryManager notificationEntryManager) { mContext = context; mPackageName = packageName; mMediaSessionManager = mediaSessionManager; mShadeController = shadeController; mActivityStarter = starter; mAboveStatusbar = aboveStatusbar; mNotificationEntryManager = notificationEntryManager; InfoMediaManager imm = new InfoMediaManager(mContext, packageName, null, lbm); mLocalMediaManager = new LocalMediaManager(mContext, lbm, imm, packageName); } Loading Loading @@ -197,7 +199,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback{ if (DEBUG) { Log.d(TAG, "Media meta data does not contain icon information"); } return getPackageIcon(); return getNotificationIcon(); } IconCompat getDeviceIconCompat(MediaDevice device) { Loading @@ -213,24 +215,15 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback{ return BluetoothUtils.createIconWithDrawable(drawable); } private IconCompat getPackageIcon() { IconCompat getNotificationIcon() { if (TextUtils.isEmpty(mPackageName)) { return null; } try { final Drawable drawable = mContext.getPackageManager().getApplicationIcon(mPackageName); if (drawable instanceof BitmapDrawable) { return IconCompat.createWithBitmap(((BitmapDrawable) drawable).getBitmap()); } 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."); for (NotificationEntry entry : mNotificationEntryManager.getActiveNotificationsForCurrentUser()) { if (entry.getSbn().getNotification().hasMediaSession() && TextUtils.equals(entry.getSbn().getPackageName(), mPackageName)) { return IconCompat.createFromIcon(entry.getSbn().getNotification().getLargeIcon()); } } return null; Loading
packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputDialogFactory.kt +4 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.content.Context import android.media.session.MediaSessionManager import com.android.settingslib.bluetooth.LocalBluetoothManager import com.android.systemui.plugins.ActivityStarter import com.android.systemui.statusbar.notification.NotificationEntryManager import com.android.systemui.statusbar.phone.ShadeController import javax.inject.Inject Loading @@ -31,7 +32,8 @@ class MediaOutputDialogFactory @Inject constructor( private val mediaSessionManager: MediaSessionManager, private val lbm: LocalBluetoothManager?, private val shadeController: ShadeController, private val starter: ActivityStarter private val starter: ActivityStarter, private val notificationEntryManager: NotificationEntryManager ) { companion object { var mediaOutputDialog: MediaOutputDialog? = null Loading @@ -41,7 +43,7 @@ class MediaOutputDialogFactory @Inject constructor( fun create(packageName: String, aboveStatusBar: Boolean) { mediaOutputDialog?.dismiss() mediaOutputDialog = MediaOutputController(context, packageName, aboveStatusBar, mediaSessionManager, lbm, shadeController, starter).run { mediaSessionManager, lbm, shadeController, starter, notificationEntryManager).run { MediaOutputDialog(context, aboveStatusBar, this) } } Loading
packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBaseDialogTest.java +5 −1 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.phone.ShadeController; import org.junit.Before; Loading @@ -58,6 +59,8 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase { private LocalBluetoothManager mLocalBluetoothManager = mock(LocalBluetoothManager.class); private ShadeController mShadeController = mock(ShadeController.class); private ActivityStarter mStarter = mock(ActivityStarter.class); private NotificationEntryManager mNotificationEntryManager = mock(NotificationEntryManager.class); private MediaOutputBaseDialogImpl mMediaOutputBaseDialogImpl; private MediaOutputController mMediaOutputController; Loading @@ -69,7 +72,8 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase { @Before public void setUp() { mMediaOutputController = new MediaOutputController(mContext, TEST_PACKAGE, false, mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter); mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter, mNotificationEntryManager); mMediaOutputBaseDialogImpl = new MediaOutputBaseDialogImpl(mContext, mMediaOutputController); mMediaOutputBaseDialogImpl.onCreate(new Bundle()); Loading
packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java +65 −3 Original line number Diff line number Diff line Loading @@ -27,15 +27,19 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Notification; import android.content.Context; import android.graphics.drawable.Icon; import android.media.MediaDescription; import android.media.MediaMetadata; import android.media.RoutingSessionInfo; import android.media.session.MediaController; import android.media.session.MediaSessionManager; import android.service.notification.StatusBarNotification; import android.testing.AndroidTestingRunner; import android.text.TextUtils; import androidx.core.graphics.drawable.IconCompat; import androidx.test.filters.SmallTest; import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager; Loading @@ -45,6 +49,8 @@ import com.android.settingslib.media.MediaDevice; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; 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 org.junit.Before; Loading Loading @@ -81,6 +87,8 @@ public class MediaOutputControllerTest extends SysuiTestCase { private RoutingSessionInfo mRemoteSessionInfo = mock(RoutingSessionInfo.class); private ShadeController mShadeController = mock(ShadeController.class); private ActivityStarter mStarter = mock(ActivityStarter.class); private NotificationEntryManager mNotificationEntryManager = mock(NotificationEntryManager.class); private Context mSpyContext; private MediaOutputController mMediaOutputController; Loading @@ -100,8 +108,10 @@ public class MediaOutputControllerTest extends SysuiTestCase { MediaSessionManager.class); when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn( mCachedBluetoothDeviceManager); mMediaOutputController = new MediaOutputController(mSpyContext, TEST_PACKAGE_NAME, false, mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter); mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter, mNotificationEntryManager); mLocalMediaManager = spy(mMediaOutputController.mLocalMediaManager); mMediaOutputController.mLocalMediaManager = mLocalMediaManager; MediaDescription.Builder builder = new MediaDescription.Builder(); Loading Loading @@ -144,7 +154,8 @@ public class MediaOutputControllerTest extends SysuiTestCase { @Test public void start_withoutPackageName_verifyMediaControllerInit() { mMediaOutputController = new MediaOutputController(mSpyContext, null, false, mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter); mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter, mNotificationEntryManager); mMediaOutputController.start(mCb); Loading @@ -164,7 +175,9 @@ public class MediaOutputControllerTest extends SysuiTestCase { @Test public void stop_withoutPackageName_verifyMediaControllerDeinit() { mMediaOutputController = new MediaOutputController(mSpyContext, null, false, mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter); mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter, mNotificationEntryManager); mMediaOutputController.start(mCb); mMediaOutputController.stop(); Loading Loading @@ -423,4 +436,53 @@ public class MediaOutputControllerTest extends SysuiTestCase { } 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(); } }
packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogTest.java +5 −1 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import com.android.settingslib.media.LocalMediaManager; import com.android.settingslib.media.MediaDevice; import com.android.systemui.SysuiTestCase; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.phone.ShadeController; import org.junit.After; Loading @@ -58,6 +59,8 @@ public class MediaOutputDialogTest extends SysuiTestCase { private ActivityStarter mStarter = mock(ActivityStarter.class); private LocalMediaManager mLocalMediaManager = mock(LocalMediaManager.class); private MediaDevice mMediaDevice = mock(MediaDevice.class); private NotificationEntryManager mNotificationEntryManager = mock(NotificationEntryManager.class); private MediaOutputDialog mMediaOutputDialog; private MediaOutputController mMediaOutputController; Loading @@ -66,7 +69,8 @@ public class MediaOutputDialogTest extends SysuiTestCase { @Before public void setUp() { mMediaOutputController = new MediaOutputController(mContext, TEST_PACKAGE, false, mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter); mMediaSessionManager, mLocalBluetoothManager, mShadeController, mStarter, mNotificationEntryManager); mMediaOutputController.mLocalMediaManager = mLocalMediaManager; mMediaOutputDialog = new MediaOutputDialog(mContext, false, mMediaOutputController); Loading