From c6d8b915f56ca7cb7b9266e80501b961c0748808 Mon Sep 17 00:00:00 2001 From: changbetty Date: Sat, 18 Feb 2023 17:37:49 +0000 Subject: [PATCH] To fix the title and switch button of the broadcast dialog Bug: 241350633 Test: Manual test Test: atest MediaControlPanelTest Test: atest BroadcastDialogTest Change-Id: I39e02f8b4f06c4ce8bd05e1abb3af9ede8d7bfd3 --- .../systemui/bluetooth/BroadcastDialog.java | 22 +++++++------- .../bluetooth/BroadcastDialogController.java | 9 ++++-- .../media/controls/ui/MediaControlPanel.java | 11 ++++--- .../bluetooth/BroadcastDialogTest.java | 29 +++++++++++++++---- 4 files changed, 46 insertions(+), 25 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/bluetooth/BroadcastDialog.java b/packages/SystemUI/src/com/android/systemui/bluetooth/BroadcastDialog.java index 8e062bd69d63e..653c12ef955ec 100644 --- a/packages/SystemUI/src/com/android/systemui/bluetooth/BroadcastDialog.java +++ b/packages/SystemUI/src/com/android/systemui/bluetooth/BroadcastDialog.java @@ -46,11 +46,11 @@ public class BroadcastDialog extends SystemUIDialog { @VisibleForTesting protected View mDialogView; private MediaOutputDialogFactory mMediaOutputDialogFactory; - private String mSwitchBroadcastApp; + private String mCurrentBroadcastApp; private String mOutputPackageName; public BroadcastDialog(Context context, MediaOutputDialogFactory mediaOutputDialogFactory, - String switchBroadcastApp, String outputPkgName, UiEventLogger uiEventLogger) { + String currentBroadcastApp, String outputPkgName, UiEventLogger uiEventLogger) { super(context); if (DEBUG) { Log.d(TAG, "Init BroadcastDialog"); @@ -58,7 +58,7 @@ public class BroadcastDialog extends SystemUIDialog { mContext = getContext(); mMediaOutputDialogFactory = mediaOutputDialogFactory; - mSwitchBroadcastApp = switchBroadcastApp; + mCurrentBroadcastApp = currentBroadcastApp; mOutputPackageName = outputPkgName; mUiEventLogger = uiEventLogger; } @@ -77,20 +77,18 @@ public class BroadcastDialog extends SystemUIDialog { TextView title = mDialogView.requireViewById(R.id.dialog_title); TextView subTitle = mDialogView.requireViewById(R.id.dialog_subtitle); - title.setText( - mContext.getString(R.string.bt_le_audio_broadcast_dialog_title, - MediaDataUtils.getAppLabel(mContext, mOutputPackageName, - mContext.getString( - R.string.bt_le_audio_broadcast_dialog_unknown_name)))); - subTitle.setText( - mContext.getString(R.string.bt_le_audio_broadcast_dialog_sub_title, - mSwitchBroadcastApp)); + title.setText(mContext.getString( + R.string.bt_le_audio_broadcast_dialog_title, mCurrentBroadcastApp)); + String switchBroadcastApp = MediaDataUtils.getAppLabel(mContext, mOutputPackageName, + mContext.getString(R.string.bt_le_audio_broadcast_dialog_unknown_name)); + subTitle.setText(mContext.getString( + R.string.bt_le_audio_broadcast_dialog_sub_title, switchBroadcastApp)); Button switchBroadcast = mDialogView.requireViewById(R.id.switch_broadcast); Button changeOutput = mDialogView.requireViewById(R.id.change_output); Button cancelBtn = mDialogView.requireViewById(R.id.cancel); switchBroadcast.setText(mContext.getString( - R.string.bt_le_audio_broadcast_dialog_switch_app, mSwitchBroadcastApp), null); + R.string.bt_le_audio_broadcast_dialog_switch_app, switchBroadcastApp)); changeOutput.setOnClickListener((view) -> { mMediaOutputDialogFactory.create(mOutputPackageName, true, null); dismiss(); diff --git a/packages/SystemUI/src/com/android/systemui/bluetooth/BroadcastDialogController.java b/packages/SystemUI/src/com/android/systemui/bluetooth/BroadcastDialogController.java index 8a54345ae28cb..1b699e8ea5dda 100644 --- a/packages/SystemUI/src/com/android/systemui/bluetooth/BroadcastDialogController.java +++ b/packages/SystemUI/src/com/android/systemui/bluetooth/BroadcastDialogController.java @@ -47,10 +47,15 @@ public class BroadcastDialogController { mMediaOutputDialogFactory = mediaOutputDialogFactory; } - public void createBroadcastDialog(String switchAppName, String outputPkgName, + /** Creates a [BroadcastDialog] for the user to switch broadcast or change the output device + * + * @param currentBroadcastAppName Indicates the APP name currently broadcasting + * @param outputPkgName Indicates the output media package name to be switched + */ + public void createBroadcastDialog(String currentBroadcastAppName, String outputPkgName, boolean aboveStatusBar, View view) { BroadcastDialog broadcastDialog = new BroadcastDialog(mContext, mMediaOutputDialogFactory, - switchAppName, outputPkgName, mUiEventLogger); + currentBroadcastAppName, outputPkgName, mUiEventLogger); if (view != null) { mDialogLaunchAnimator.showFromView(broadcastDialog, view); } else { diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java index 767706209475e..4ab93daef70ce 100644 --- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java +++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java @@ -226,7 +226,7 @@ public class MediaControlPanel { private final BroadcastDialogController mBroadcastDialogController; private boolean mIsCurrentBroadcastedApp = false; private boolean mShowBroadcastDialogButton = false; - private String mSwitchBroadcastApp; + private String mCurrentBroadcastApp; private MultiRippleController mMultiRippleController; private TurbulenceNoiseController mTurbulenceNoiseController; private final FeatureFlags mFeatureFlags; @@ -572,9 +572,8 @@ public class MediaControlPanel { // TODO(b/233698402): Use the package name instead of app label to avoid the // unexpected result. mIsCurrentBroadcastedApp = device != null - && TextUtils.equals(device.getName(), - MediaDataUtils.getAppLabel(mContext, mPackageName, mContext.getString( - R.string.bt_le_audio_broadcast_dialog_unknown_name))); + && TextUtils.equals(device.getName(), + mContext.getString(R.string.broadcasting_description_is_broadcasting)); useDisabledAlpha = !mIsCurrentBroadcastedApp; // Always be enabled if the broadcast button is shown isTapEnabled = true; @@ -629,8 +628,8 @@ public class MediaControlPanel { // media output dialog. if (!mIsCurrentBroadcastedApp) { mLogger.logOpenBroadcastDialog(mUid, mPackageName, mInstanceId); - mSwitchBroadcastApp = device.getName().toString(); - mBroadcastDialogController.createBroadcastDialog(mSwitchBroadcastApp, + mCurrentBroadcastApp = device.getName().toString(); + mBroadcastDialogController.createBroadcastDialog(mCurrentBroadcastApp, mPackageName, true, mMediaViewHolder.getSeamlessButton()); } else { mLogger.logOpenOutputSwitcher(mUid, mPackageName, mInstanceId); diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/BroadcastDialogTest.java b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/BroadcastDialogTest.java index a61cecbabf305..35039026fe9ef 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/BroadcastDialogTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/BroadcastDialogTest.java @@ -20,14 +20,14 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.mock; -import androidx.test.filters.SmallTest; - import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.view.View; import android.widget.Button; import android.widget.TextView; +import androidx.test.filters.SmallTest; + import com.android.internal.logging.UiEventLogger; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; @@ -44,18 +44,21 @@ import org.mockito.MockitoAnnotations; @TestableLooper.RunWithLooper(setAsMainLooper = true) public class BroadcastDialogTest extends SysuiTestCase { - private static final String SWITCH_APP = "Music"; + private static final String CURRENT_BROADCAST_APP = "Music"; + private static final String SWITCH_APP = "Files by Google"; private static final String TEST_PACKAGE = "com.google.android.apps.nbu.files"; private BroadcastDialog mBroadcastDialog; private View mDialogView; + private TextView mTitle; private TextView mSubTitle; + private Button mSwitchBroadcastAppButton; private Button mChangeOutputButton; @Before public void setUp() { MockitoAnnotations.initMocks(this); mBroadcastDialog = new BroadcastDialog(mContext, mock(MediaOutputDialogFactory.class), - SWITCH_APP, TEST_PACKAGE, mock(UiEventLogger.class)); + CURRENT_BROADCAST_APP, TEST_PACKAGE, mock(UiEventLogger.class)); mBroadcastDialog.show(); mDialogView = mBroadcastDialog.mDialogView; } @@ -66,13 +69,29 @@ public class BroadcastDialogTest extends SysuiTestCase { } @Test - public void onCreate_withCurrentApp_checkSwitchAppContent() { + public void onCreate_withCurrentApp_titleIsCurrentAppName() { + mTitle = mDialogView.requireViewById(R.id.dialog_title); + + assertThat(mTitle.getText().toString()).isEqualTo(mContext.getString( + R.string.bt_le_audio_broadcast_dialog_title, CURRENT_BROADCAST_APP)); + } + + @Test + public void onCreate_withCurrentApp_subTitleIsSwitchAppName() { mSubTitle = mDialogView.requireViewById(R.id.dialog_subtitle); assertThat(mSubTitle.getText()).isEqualTo( mContext.getString(R.string.bt_le_audio_broadcast_dialog_sub_title, SWITCH_APP)); } + @Test + public void onCreate_withCurrentApp_switchBtnIsSwitchAppName() { + mSwitchBroadcastAppButton = mDialogView.requireViewById(R.id.switch_broadcast); + + assertThat(mSwitchBroadcastAppButton.getText().toString()).isEqualTo( + mContext.getString(R.string.bt_le_audio_broadcast_dialog_switch_app, SWITCH_APP)); + } + @Test public void onClick_withChangeOutput_dismissBroadcastDialog() { mChangeOutputButton = mDialogView.requireViewById(R.id.change_output);