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

Commit 27704b7b authored by Shaowei Shen's avatar Shaowei Shen Committed by Automerger Merge Worker
Browse files

Merge "[Output Switcher] Fix volume adjustment metric logging" into tm-qpr-dev...

Merge "[Output Switcher] Fix volume adjustment metric logging" into tm-qpr-dev am: 34539f92 am: d1fe7858

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20962423



Change-Id: Icca9d5f001054fbab01f1966b1478a0e93cd8420
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 874cfbd7 d1fe7858
Loading
Loading
Loading
Loading
+4 −1
Original line number Original line Diff line number Diff line
@@ -45,6 +45,7 @@ import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.TextView;


import androidx.annotation.NonNull;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.RecyclerView;


import com.android.settingslib.Utils;
import com.android.settingslib.Utils;
@@ -142,11 +143,12 @@ public abstract class MediaOutputBaseAdapter extends
        final TextView mVolumeValueText;
        final TextView mVolumeValueText;
        final ImageView mTitleIcon;
        final ImageView mTitleIcon;
        final ProgressBar mProgressBar;
        final ProgressBar mProgressBar;
        final MediaOutputSeekbar mSeekBar;
        final LinearLayout mTwoLineLayout;
        final LinearLayout mTwoLineLayout;
        final ImageView mStatusIcon;
        final ImageView mStatusIcon;
        final CheckBox mCheckBox;
        final CheckBox mCheckBox;
        final ViewGroup mEndTouchArea;
        final ViewGroup mEndTouchArea;
        @VisibleForTesting
        MediaOutputSeekbar mSeekBar;
        private String mDeviceId;
        private String mDeviceId;
        private ValueAnimator mCornerAnimator;
        private ValueAnimator mCornerAnimator;
        private ValueAnimator mVolumeAnimator;
        private ValueAnimator mVolumeAnimator;
@@ -390,6 +392,7 @@ public abstract class MediaOutputBaseAdapter extends
                        mTitleIcon.setVisibility(View.VISIBLE);
                        mTitleIcon.setVisibility(View.VISIBLE);
                        mVolumeValueText.setVisibility(View.GONE);
                        mVolumeValueText.setVisibility(View.GONE);
                    }
                    }
                    mController.logInteractionAdjustVolume(device);
                    mIsDragging = false;
                    mIsDragging = false;
                }
                }
            });
            });
+5 −2
Original line number Original line Diff line number Diff line
@@ -141,7 +141,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
    @VisibleForTesting
    @VisibleForTesting
    LocalMediaManager mLocalMediaManager;
    LocalMediaManager mLocalMediaManager;
    @VisibleForTesting
    @VisibleForTesting
    private MediaOutputMetricLogger mMetricLogger;
    MediaOutputMetricLogger mMetricLogger;
    private int mCurrentState;
    private int mCurrentState;


    private int mColorItemContent;
    private int mColorItemContent;
@@ -870,12 +870,15 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
    }
    }


    void adjustVolume(MediaDevice device, int volume) {
    void adjustVolume(MediaDevice device, int volume) {
        mMetricLogger.logInteractionAdjustVolume(device);
        ThreadUtils.postOnBackgroundThread(() -> {
        ThreadUtils.postOnBackgroundThread(() -> {
            device.requestSetVolume(volume);
            device.requestSetVolume(volume);
        });
        });
    }
    }


    void logInteractionAdjustVolume(MediaDevice device) {
        mMetricLogger.logInteractionAdjustVolume(device);
    }

    String getPackageName() {
    String getPackageName() {
        return mPackageName;
        return mPackageName;
    }
    }
+23 −0
Original line number Original line Diff line number Diff line
@@ -31,6 +31,7 @@ import android.graphics.drawable.Icon;
import android.testing.AndroidTestingRunner;
import android.testing.AndroidTestingRunner;
import android.view.View;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.LinearLayout;
import android.widget.SeekBar;


import androidx.core.graphics.drawable.IconCompat;
import androidx.core.graphics.drawable.IconCompat;
import androidx.test.filters.SmallTest;
import androidx.test.filters.SmallTest;
@@ -45,6 +46,8 @@ import com.google.common.collect.ImmutableList;
import org.junit.Before;
import org.junit.Before;
import org.junit.Test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;


import java.util.ArrayList;
import java.util.ArrayList;
import java.util.List;
import java.util.List;
@@ -72,6 +75,8 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
    private IconCompat mIconCompat = mock(IconCompat.class);
    private IconCompat mIconCompat = mock(IconCompat.class);
    private View mDialogLaunchView = mock(View.class);
    private View mDialogLaunchView = mock(View.class);


    @Captor
    private ArgumentCaptor<SeekBar.OnSeekBarChangeListener> mOnSeekBarChangeListenerCaptor;
    private MediaOutputAdapter mMediaOutputAdapter;
    private MediaOutputAdapter mMediaOutputAdapter;
    private MediaOutputAdapter.MediaDeviceViewHolder mViewHolder;
    private MediaOutputAdapter.MediaDeviceViewHolder mViewHolder;
    private List<MediaDevice> mMediaDevices = new ArrayList<>();
    private List<MediaDevice> mMediaDevices = new ArrayList<>();
@@ -351,6 +356,24 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
        assertThat(mViewHolder.mSeekBar.getVolume()).isEqualTo(TEST_CURRENT_VOLUME);
        assertThat(mViewHolder.mSeekBar.getVolume()).isEqualTo(TEST_CURRENT_VOLUME);
    }
    }


    @Test
    public void onBindViewHolder_dragSeekbar_setsVolume() {
        mOnSeekBarChangeListenerCaptor = ArgumentCaptor.forClass(
                SeekBar.OnSeekBarChangeListener.class);
        MediaOutputSeekbar mSpySeekbar = spy(mViewHolder.mSeekBar);
        mViewHolder.mSeekBar = mSpySeekbar;
        when(mMediaDevice1.getMaxVolume()).thenReturn(TEST_MAX_VOLUME);
        when(mMediaDevice1.getCurrentVolume()).thenReturn(TEST_MAX_VOLUME);
        mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);

        verify(mViewHolder.mSeekBar).setOnSeekBarChangeListener(
                mOnSeekBarChangeListenerCaptor.capture());

        mOnSeekBarChangeListenerCaptor.getValue().onStopTrackingTouch(mViewHolder.mSeekBar);
        assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE);
        verify(mMediaOutputController).logInteractionAdjustVolume(mMediaDevice1);
    }

    @Test
    @Test
    public void onBindViewHolder_bindSelectableDevice_verifyView() {
    public void onBindViewHolder_bindSelectableDevice_verifyView() {
        List<MediaDevice> selectableDevices = new ArrayList<>();
        List<MediaDevice> selectableDevices = new ArrayList<>();
+16 −5
Original line number Original line Diff line number Diff line
@@ -93,6 +93,11 @@ public class MediaOutputControllerTest extends SysuiTestCase {
    private static final String TEST_SONG = "test_song";
    private static final String TEST_SONG = "test_song";
    private static final String TEST_SESSION_ID = "test_session_id";
    private static final String TEST_SESSION_ID = "test_session_id";
    private static final String TEST_SESSION_NAME = "test_session_name";
    private static final String TEST_SESSION_NAME = "test_session_name";
    private final DialogLaunchAnimator mDialogLaunchAnimator = mock(DialogLaunchAnimator.class);
    private final ActivityLaunchAnimator.Controller mActivityLaunchAnimatorController = mock(
            ActivityLaunchAnimator.Controller.class);
    private final NearbyMediaDevicesManager mNearbyMediaDevicesManager = mock(
            NearbyMediaDevicesManager.class);
    // Mock
    // Mock
    private MediaController mMediaController = mock(MediaController.class);
    private MediaController mMediaController = mock(MediaController.class);
    private MediaSessionManager mMediaSessionManager = mock(MediaSessionManager.class);
    private MediaSessionManager mMediaSessionManager = mock(MediaSessionManager.class);
@@ -111,12 +116,7 @@ public class MediaOutputControllerTest extends SysuiTestCase {
    private KeyguardManager mKeyguardManager = mock(KeyguardManager.class);
    private KeyguardManager mKeyguardManager = mock(KeyguardManager.class);
    private PowerExemptionManager mPowerExemptionManager = mock(PowerExemptionManager.class);
    private PowerExemptionManager mPowerExemptionManager = mock(PowerExemptionManager.class);
    private CommonNotifCollection mNotifCollection = mock(CommonNotifCollection.class);
    private CommonNotifCollection mNotifCollection = mock(CommonNotifCollection.class);
    private final DialogLaunchAnimator mDialogLaunchAnimator = mock(DialogLaunchAnimator.class);
    private FeatureFlags mFlags = mock(FeatureFlags.class);
    private FeatureFlags mFlags = mock(FeatureFlags.class);
    private final ActivityLaunchAnimator.Controller mActivityLaunchAnimatorController = mock(
            ActivityLaunchAnimator.Controller.class);
    private final NearbyMediaDevicesManager mNearbyMediaDevicesManager = mock(
            NearbyMediaDevicesManager.class);
    private View mDialogLaunchView = mock(View.class);
    private View mDialogLaunchView = mock(View.class);
    private MediaOutputController.Callback mCallback = mock(MediaOutputController.Callback.class);
    private MediaOutputController.Callback mCallback = mock(MediaOutputController.Callback.class);


@@ -521,6 +521,17 @@ public class MediaOutputControllerTest extends SysuiTestCase {
        verify(mLocalMediaManager).adjustSessionVolume(testVolume);
        verify(mLocalMediaManager).adjustSessionVolume(testVolume);
    }
    }


    @Test
    public void logInteractionAdjustVolume_triggersFromMetricLogger() {
        MediaOutputMetricLogger spyMediaOutputMetricLogger = spy(
                mMediaOutputController.mMetricLogger);
        mMediaOutputController.mMetricLogger = spyMediaOutputMetricLogger;

        mMediaOutputController.logInteractionAdjustVolume(mMediaDevice1);

        verify(spyMediaOutputMetricLogger).logInteractionAdjustVolume(mMediaDevice1);
    }

    @Test
    @Test
    public void getSessionVolumeMax_triggersFromLocalMediaManager() {
    public void getSessionVolumeMax_triggersFromLocalMediaManager() {
        mMediaOutputController.getSessionVolumeMax();
        mMediaOutputController.getSessionVolumeMax();