diff options
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 b76de5afdb73..e182a6ae78de 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"> <LinearLayout + android:id="@+id/media_metadata_section" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="start|center_vertical" diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java index a9e1a4d325d2..4803371e97c1 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java @@ -95,6 +95,7 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements private RecyclerView mDevicesRecyclerView; private LinearLayout mDeviceListLayout; private LinearLayout mCastAppLayout; + private LinearLayout mMediaMetadataSectionLayout; private Button mDoneButton; private Button mStopButton; private Button mAppButton; @@ -240,6 +241,7 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements mHeaderSubtitle = mDialogView.requireViewById(R.id.header_subtitle); mHeaderIcon = mDialogView.requireViewById(R.id.header_icon); mDevicesRecyclerView = mDialogView.requireViewById(R.id.list_result); + mMediaMetadataSectionLayout = mDialogView.requireViewById(R.id.media_metadata_section); mDeviceListLayout = mDialogView.requireViewById(R.id.device_list); mDoneButton = mDialogView.requireViewById(R.id.done); mStopButton = mDialogView.requireViewById(R.id.stop); @@ -255,21 +257,17 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements mDevicesRecyclerView.setLayoutManager(mLayoutManager); mDevicesRecyclerView.setAdapter(mAdapter); mDevicesRecyclerView.setHasFixedSize(false); - // Init header icon - mHeaderIcon.setOnClickListener(v -> 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 9cf672b584bc..1587e6248595 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 094d69a9d392..9a0bd9e4b0df 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 @@ -243,6 +243,13 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase { } @Test + public void dismissDialog_closesDialogByBroadcastSender() { + mMediaOutputBaseDialogImpl.dismissDialog(); + + verify(mBroadcastSender).closeSystemDialogs(); + } + + @Test public void whenBroadcasting_verifyLeBroadcastServiceCallBackIsRegisteredAndUnregistered() { when(mLocalBluetoothProfileManager.getLeAudioBroadcastProfile()).thenReturn( mLocalBluetoothLeBroadcast); 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 f5432e22c57e..117751c47004 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 @@ -252,6 +252,13 @@ public class MediaOutputControllerTest extends SysuiTestCase { } @Test + public void tryToLaunchMediaApplication_nullIntent_skip() { + mMediaOutputController.tryToLaunchMediaApplication(); + + verify(mCb, never()).dismissDialog(); + } + + @Test public void onDevicesUpdated_unregistersNearbyDevicesCallback() throws RemoteException { mMediaOutputController.start(mCb); |