From 29ae958b76f76646dc42010954f47808e46fb76f Mon Sep 17 00:00:00 2001 From: timhypeng Date: Tue, 22 Sep 2020 11:41:43 +0800 Subject: [PATCH] Update OutputSwitcher from SettingsPanel to MediaOutputDialog in SystemUI -Put MediaOutputDialogFactory in Dependency provider -Inject MediaOutputDialogFactory in MediaControlPanel -Use Dependency.get() to get MediaOutputDialogFactory in MediaTransferManager -Use MediaOutputDialogFactory.create() to launch dialog in MediaControlPanel and MediaTransferManager Bug: 155822415 Test: atest MediaControlPanelTest DependencyTest Merged-In: I1b393d43bf4c7c869a3066404c9755ebef5f9c76 Change-Id: I1b393d43bf4c7c869a3066404c9755ebef5f9c76 --- .../src/com/android/systemui/Dependency.java | 4 ++++ .../systemui/media/MediaControlPanel.java | 16 ++++++---------- .../systemui/statusbar/MediaTransferManager.java | 15 ++++----------- .../systemui/media/MediaControlPanelTest.kt | 5 ++++- 4 files changed, 18 insertions(+), 22 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/Dependency.java b/packages/SystemUI/src/com/android/systemui/Dependency.java index 59580bbf1ae23..ded129defe07e 100644 --- a/packages/SystemUI/src/com/android/systemui/Dependency.java +++ b/packages/SystemUI/src/com/android/systemui/Dependency.java @@ -46,6 +46,7 @@ import com.android.systemui.dump.DumpManager; import com.android.systemui.fragments.FragmentService; import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.keyguard.WakefulnessLifecycle; +import com.android.systemui.media.dialog.MediaOutputDialogFactory; import com.android.systemui.model.SysUiState; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.DarkIconDispatcher; @@ -324,6 +325,7 @@ public class Dependency { @Inject Lazy mRecordingController; @Inject Lazy mProtoTracer; @Inject Lazy mDivider; + @Inject Lazy mMediaOutputDialogFactory; @Inject public Dependency() { @@ -522,6 +524,8 @@ public class Dependency { mProviders.put(RecordingController.class, mRecordingController::get); mProviders.put(Divider.class, mDivider::get); + mProviders.put(MediaOutputDialogFactory.class, mMediaOutputDialogFactory::get); + sDependency = this; } diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java index d853e3d4a57c4..bffe05085887d 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +++ b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java @@ -42,10 +42,10 @@ import androidx.annotation.UiThread; import androidx.constraintlayout.widget.ConstraintSet; import com.android.settingslib.Utils; -import com.android.settingslib.media.MediaOutputSliceConstants; import com.android.settingslib.widget.AdaptiveIcon; import com.android.systemui.R; import com.android.systemui.dagger.qualifiers.Background; +import com.android.systemui.media.dialog.MediaOutputDialogFactory; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.statusbar.phone.KeyguardDismissUtil; import com.android.systemui.util.animation.TransitionLayout; @@ -93,7 +93,7 @@ public class MediaControlPanel { private int mAlbumArtRadius; // This will provide the corners for the album art. private final ViewOutlineProvider mViewOutlineProvider; - + private final MediaOutputDialogFactory mMediaOutputDialogFactory; /** * Initialize a new control panel * @param context @@ -104,7 +104,8 @@ public class MediaControlPanel { public MediaControlPanel(Context context, @Background Executor backgroundExecutor, ActivityStarter activityStarter, MediaViewController mediaViewController, SeekBarViewModel seekBarViewModel, Lazy lazyMediaDataManager, - KeyguardDismissUtil keyguardDismissUtil) { + KeyguardDismissUtil keyguardDismissUtil, MediaOutputDialogFactory + mediaOutputDialogFactory) { mContext = context; mBackgroundExecutor = backgroundExecutor; mActivityStarter = activityStarter; @@ -112,6 +113,7 @@ public class MediaControlPanel { mMediaViewController = mediaViewController; mMediaDataManagerLazy = lazyMediaDataManager; mKeyguardDismissUtil = keyguardDismissUtil; + mMediaOutputDialogFactory = mediaOutputDialogFactory; loadDimens(); mViewOutlineProvider = new ViewOutlineProvider() { @@ -274,13 +276,7 @@ public class MediaControlPanel { setVisibleAndAlpha(collapsedSet, R.id.media_seamless, true /*visible */); setVisibleAndAlpha(expandedSet, R.id.media_seamless, true /*visible */); mViewHolder.getSeamless().setOnClickListener(v -> { - final Intent intent = new Intent() - .setAction(MediaOutputSliceConstants.ACTION_MEDIA_OUTPUT) - .putExtra(MediaOutputSliceConstants.EXTRA_PACKAGE_NAME, - data.getPackageName()) - .putExtra(MediaOutputSliceConstants.KEY_MEDIA_SESSION_TOKEN, mToken); - mActivityStarter.startActivity(intent, false, true /* dismissShade */, - Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); + mMediaOutputDialogFactory.create(data.getPackageName(), true); }); ImageView iconView = mViewHolder.getSeamlessIcon(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/MediaTransferManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/MediaTransferManager.java index ac3523b2fffd0..1b1a51b8a57b7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/MediaTransferManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/MediaTransferManager.java @@ -17,7 +17,6 @@ package com.android.systemui.statusbar; import android.content.Context; -import android.content.Intent; import android.content.res.ColorStateList; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; @@ -36,10 +35,9 @@ 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; import com.android.settingslib.widget.AdaptiveIcon; import com.android.systemui.Dependency; -import com.android.systemui.plugins.ActivityStarter; +import com.android.systemui.media.dialog.MediaOutputDialogFactory; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; @@ -51,7 +49,7 @@ import java.util.List; */ public class MediaTransferManager { private final Context mContext; - private final ActivityStarter mActivityStarter; + private final MediaOutputDialogFactory mMediaOutputDialogFactory; private MediaDevice mDevice; private List mViews = new ArrayList<>(); private LocalMediaManager mLocalMediaManager; @@ -74,12 +72,7 @@ public class MediaTransferManager { ViewParent parent = view.getParent(); StatusBarNotification statusBarNotification = getRowForParent(parent).getEntry().getSbn(); - final Intent intent = new Intent() - .setAction(MediaOutputSliceConstants.ACTION_MEDIA_OUTPUT) - .putExtra(MediaOutputSliceConstants.EXTRA_PACKAGE_NAME, - statusBarNotification.getPackageName()); - mActivityStarter.startActivity(intent, false, true /* dismissShade */, - Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); + mMediaOutputDialogFactory.create(statusBarNotification.getPackageName(), true); return true; } }; @@ -107,7 +100,7 @@ public class MediaTransferManager { public MediaTransferManager(Context context) { mContext = context; - mActivityStarter = Dependency.get(ActivityStarter.class); + mMediaOutputDialogFactory = Dependency.get(MediaOutputDialogFactory.class); LocalBluetoothManager lbm = Dependency.get(LocalBluetoothManager.class); InfoMediaManager imm = new InfoMediaManager(mContext, null, null, lbm); mLocalMediaManager = new LocalMediaManager(mContext, lbm, imm, null); diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt index ad703614fdb48..af677c9d9f648 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt @@ -38,6 +38,7 @@ import androidx.constraintlayout.widget.ConstraintSet import androidx.lifecycle.LiveData import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase +import com.android.systemui.media.dialog.MediaOutputDialogFactory import com.android.systemui.plugins.ActivityStarter import com.android.systemui.statusbar.phone.KeyguardDismissUtil import com.android.systemui.util.animation.TransitionLayout @@ -92,6 +93,7 @@ public class MediaControlPanelTest : SysuiTestCase() { @Mock private lateinit var mediaDataManager: MediaDataManager @Mock private lateinit var expandedSet: ConstraintSet @Mock private lateinit var collapsedSet: ConstraintSet + @Mock private lateinit var mediaOutputDialogFactory: MediaOutputDialogFactory private lateinit var appIcon: ImageView private lateinit var appName: TextView private lateinit var albumView: ImageView @@ -128,7 +130,8 @@ public class MediaControlPanelTest : SysuiTestCase() { whenever(mediaViewController.collapsedLayout).thenReturn(collapsedSet) player = MediaControlPanel(context, bgExecutor, activityStarter, mediaViewController, - seekBarViewModel, Lazy { mediaDataManager }, keyguardDismissUtil) + seekBarViewModel, Lazy { mediaDataManager }, keyguardDismissUtil, + mediaOutputDialogFactory) whenever(seekBarViewModel.progress).thenReturn(seekBarData) // Mock out a view holder for the player to attach to.