Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6678e8ef authored by Alexandr Shabalin's avatar Alexandr Shabalin Committed by Android (Google) Code Review
Browse files

Merge "Fix the click listener for the mute/unumte button." into main

parents 855f22d9 60d6189e
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
@@ -368,6 +368,37 @@ public class MediaOutputAdapterLegacyTest extends SysuiTestCase {
        assertThat(mViewHolder.mSeekBar.getVolume()).isEqualTo(TEST_CURRENT_VOLUME);
    }

    @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(
+14 −1
Original line number Diff line number Diff line
@@ -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