From 8027f4608d53c702ff15433c89eb10c391555d41 Mon Sep 17 00:00:00 2001 From: shaoweishen Date: Tue, 17 Jan 2023 13:37:10 +0000 Subject: [PATCH] [Output Switcher] Set clickable on MediaMetadata section Set clicklistener on Media Metadata section, to guide user to application when tap on it. Bug: 262013662 Test: atest MediaOutputAdapterTest MediaOutputControllerTest MediaOutputBaseDialogTest MediaOutputDialogTest Change-Id: I0f5fa36af6bfaa8d5b78f8bdab69dd43bcc70d6e --- .../res/layout/media_output_dialog.xml | 1 + .../media/dialog/MediaOutputBaseDialog.java | 18 ++++++++---------- .../media/dialog/MediaOutputController.java | 9 +++++++++ .../dialog/MediaOutputBaseDialogTest.java | 7 +++++++ .../dialog/MediaOutputControllerTest.java | 7 +++++++ 5 files changed, 32 insertions(+), 10 deletions(-) diff --git a/packages/SystemUI/res/layout/media_output_dialog.xml b/packages/SystemUI/res/layout/media_output_dialog.xml index b76de5afdb730..e182a6ae78deb 100644 --- a/packages/SystemUI/res/layout/media_output_dialog.xml +++ b/packages/SystemUI/res/layout/media_output_dialog.xml @@ -24,6 +24,7 @@ android:orientation="vertical"> onHeaderIconClick()); // Init bottom buttons mDoneButton.setOnClickListener(v -> dismiss()); mStopButton.setOnClickListener(v -> { mMediaOutputController.releaseSession(); dismiss(); }); - mAppButton.setOnClickListener(v -> { - mBroadcastSender.closeSystemDialogs(); - if (mMediaOutputController.getAppLaunchIntent() != null) { - mContext.startActivity(mMediaOutputController.getAppLaunchIntent()); - } - dismiss(); - }); + mAppButton.setOnClickListener(v -> mMediaOutputController.tryToLaunchMediaApplication()); + if (mMediaOutputController.isAdvancedLayoutSupported()) { + mMediaMetadataSectionLayout.setOnClickListener( + v -> mMediaOutputController.tryToLaunchMediaApplication()); + } } @Override @@ -560,7 +558,7 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements @Override public void dismissDialog() { - dismiss(); + mBroadcastSender.closeSystemDialogs(); } void onHeaderIconClick() { diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java index 41fca554e37df..f95da273fae60 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java @@ -382,6 +382,15 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback, return mContext.getPackageManager().getLaunchIntentForPackage(mPackageName); } + void tryToLaunchMediaApplication() { + Intent launchIntent = getAppLaunchIntent(); + if (launchIntent != null) { + launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + mCallback.dismissDialog(); + mContext.startActivity(launchIntent); + } + } + CharSequence getHeaderTitle() { if (mMediaController != null) { final MediaMetadata metadata = mMediaController.getMetadata(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBaseDialogTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBaseDialogTest.java index 094d69a9d3921..9a0bd9e4b0df2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBaseDialogTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBaseDialogTest.java @@ -242,6 +242,13 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase { verify(mMediaOutputBaseAdapter).notifyDataSetChanged(); } + @Test + public void dismissDialog_closesDialogByBroadcastSender() { + mMediaOutputBaseDialogImpl.dismissDialog(); + + verify(mBroadcastSender).closeSystemDialogs(); + } + @Test public void whenBroadcasting_verifyLeBroadcastServiceCallBackIsRegisteredAndUnregistered() { when(mLocalBluetoothProfileManager.getLeAudioBroadcastProfile()).thenReturn( diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java index f5432e22c57e2..117751c470047 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java @@ -251,6 +251,13 @@ public class MediaOutputControllerTest extends SysuiTestCase { verify(mNearbyMediaDevicesManager).unregisterNearbyDevicesCallback(any()); } + @Test + public void tryToLaunchMediaApplication_nullIntent_skip() { + mMediaOutputController.tryToLaunchMediaApplication(); + + verify(mCb, never()).dismissDialog(); + } + @Test public void onDevicesUpdated_unregistersNearbyDevicesCallback() throws RemoteException { mMediaOutputController.start(mCb);