diff options
2 files changed, 45 insertions, 1 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacyTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacyTest.java index a7a0c24e2163..f293614954e9 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacyTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacyTest.java @@ -369,6 +369,37 @@ public class MediaOutputAdapterLegacyTest extends SysuiTestCase { } @Test + public void onBindViewHolder_initSeekbarWithUnmutedVolume_displaysMuteIcon() { + when(mMediaSwitchingController.isVolumeControlEnabled(mMediaDevice1)).thenReturn(true); + when(mMediaDevice1.getMaxVolume()).thenReturn(TEST_MAX_VOLUME); + when(mMediaDevice1.getCurrentVolume()).thenReturn(TEST_CURRENT_VOLUME); + mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0); + + assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE); + assertThat(mViewHolder.mIconAreaLayout.getVisibility()).isEqualTo(View.VISIBLE); + + mViewHolder.mIconAreaLayout.performClick(); + verify(mMediaSwitchingController).adjustVolume(mMediaDevice1, 0); + verify(mMediaSwitchingController).logInteractionMuteDevice(mMediaDevice1); + } + + @Test + public void onBindViewHolder_initSeekbarWithMutedVolume_displaysUnmuteIcon() { + when(mMediaSwitchingController.isVolumeControlEnabled(mMediaDevice1)).thenReturn(true); + when(mMediaDevice1.getMaxVolume()).thenReturn(TEST_MAX_VOLUME); + when(mMediaDevice1.getCurrentVolume()).thenReturn(0); // muted. + mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0); + + assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE); + assertThat(mViewHolder.mIconAreaLayout.getVisibility()).isEqualTo(View.VISIBLE); + + mViewHolder.mIconAreaLayout.performClick(); + // Default unmute volume is 2. + verify(mMediaSwitchingController).adjustVolume(mMediaDevice1, 2); + verify(mMediaSwitchingController).logInteractionUnmuteDevice(mMediaDevice1); + } + + @Test public void onBindViewHolder_dragSeekbar_setsVolume() { mOnSeekBarChangeListenerCaptor = ArgumentCaptor.forClass( SeekBar.OnSeekBarChangeListener.class); diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacy.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacy.java index 565b2e41f75a..ea4418427698 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacy.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacy.java @@ -185,6 +185,7 @@ public class MediaOutputAdapterLegacy extends MediaOutputAdapterBase { mSubTitleText.setTextColor(mController.getColorItemContent()); mVolumeValueText.setTextColor(mController.getColorItemContent()); mIconAreaLayout.setBackground(null); + updateIconAreaClickListener(null); mSeekBar.setProgressTintList( ColorStateList.valueOf(mController.getColorSeekbarProgress())); enableFocusPropertyForView(mContainerLayout); @@ -392,6 +393,11 @@ public class MediaOutputAdapterLegacy extends MediaOutputAdapterBase { @Override public void onMute() { + mController.logInteractionMuteDevice(device); + } + + @Override + public void onUnmute() { mController.logInteractionUnmuteDevice(device); } }; @@ -430,6 +436,9 @@ public class MediaOutputAdapterLegacy extends MediaOutputAdapterBase { @Override public void onMute() {} + + @Override + public void onUnmute() {} }; if (!mController.isVolumeControlEnabledForSession()) { @@ -622,11 +631,13 @@ public class MediaOutputAdapterLegacy extends MediaOutputAdapterBase { private void updateFullItemClickListener(@Nullable View.OnClickListener listener) { mContainerLayout.setOnClickListener(listener); - updateIconAreaClickListener(listener); } void updateIconAreaClickListener(@Nullable View.OnClickListener listener) { mIconAreaLayout.setOnClickListener(listener); + if (listener == null) { + mIconAreaLayout.setClickable(false); // clickable is not removed automatically. + } } private void initAnimator() { @@ -677,6 +688,7 @@ public class MediaOutputAdapterLegacy extends MediaOutputAdapterBase { mSeekBar.setOnTouchListener((v, event) -> false); updateIconAreaClickListener((v) -> { if (volumeControl.getVolume() == 0) { + volumeControl.onUnmute(); mSeekBar.setVolume(UNMUTE_DEFAULT_VOLUME); volumeControl.setVolume(UNMUTE_DEFAULT_VOLUME); updateUnmutedVolumeIcon(null); @@ -713,6 +725,7 @@ public class MediaOutputAdapterLegacy extends MediaOutputAdapterBase { int getVolume(); void setVolume(int volume); void onMute(); + void onUnmute(); } private abstract class MediaSeekBarChangedListener |