summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacyTest.java31
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacy.java15
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