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 bec130b75b615..e08e33802ce08 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java @@ -356,15 +356,6 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements mHeaderSubtitle.setText(subTitle); mHeaderTitle.setGravity(Gravity.NO_GRAVITY); } - if (!mAdapter.isDragging()) { - int currentActivePosition = mAdapter.getCurrentActivePosition(); - if (!colorSetUpdated && !deviceSetChanged && currentActivePosition >= 0 - && currentActivePosition < mAdapter.getItemCount()) { - mAdapter.notifyItemChanged(currentActivePosition); - } else { - mAdapter.notifyDataSetChanged(); - } - } // Show when remote media session is available or // when the device supports BT LE audio + media is playing mStopButton.setVisibility(getStopButtonVisibility()); @@ -374,6 +365,18 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements mBroadcastIcon.setVisibility(getBroadcastIconVisibility()); mBroadcastIcon.setOnClickListener(v -> onBroadcastIconClick()); + if (!mAdapter.isDragging()) { + int currentActivePosition = mAdapter.getCurrentActivePosition(); + if (!colorSetUpdated && !deviceSetChanged && currentActivePosition >= 0 + && currentActivePosition < mAdapter.getItemCount()) { + mAdapter.notifyItemChanged(currentActivePosition); + } else { + mAdapter.notifyDataSetChanged(); + } + } else { + mMediaOutputController.setRefreshing(false); + mMediaOutputController.refreshDataSetIfNeeded(); + } } private void updateButtonBackgroundColorFilter() { 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 1131a7eb379a9..eb8ecae305bcb 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 @@ -223,6 +223,14 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase { verify(mMediaOutputBaseAdapter, never()).notifyDataSetChanged(); } + @Test + public void refresh_inDragging_directSetRefreshingToFalse() { + when(mMediaOutputBaseAdapter.isDragging()).thenReturn(true); + mMediaOutputBaseDialogImpl.refresh(); + + assertThat(mMediaOutputController.isRefreshing()).isFalse(); + } + @Test public void refresh_notInDragging_verifyUpdateAdapter() { when(mMediaOutputBaseAdapter.getCurrentActivePosition()).thenReturn(-1);