Merge "[Output Switcher] Fix volume adjustment metric logging" into tm-qpr-dev am: 34539f9279 am: d1fe7858c7
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20962423 Change-Id: Icca9d5f001054fbab01f1966b1478a0e93cd8420 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -45,6 +45,7 @@ import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.settingslib.Utils;
|
||||
@@ -142,11 +143,12 @@ public abstract class MediaOutputBaseAdapter extends
|
||||
final TextView mVolumeValueText;
|
||||
final ImageView mTitleIcon;
|
||||
final ProgressBar mProgressBar;
|
||||
final MediaOutputSeekbar mSeekBar;
|
||||
final LinearLayout mTwoLineLayout;
|
||||
final ImageView mStatusIcon;
|
||||
final CheckBox mCheckBox;
|
||||
final ViewGroup mEndTouchArea;
|
||||
@VisibleForTesting
|
||||
MediaOutputSeekbar mSeekBar;
|
||||
private String mDeviceId;
|
||||
private ValueAnimator mCornerAnimator;
|
||||
private ValueAnimator mVolumeAnimator;
|
||||
@@ -390,6 +392,7 @@ public abstract class MediaOutputBaseAdapter extends
|
||||
mTitleIcon.setVisibility(View.VISIBLE);
|
||||
mVolumeValueText.setVisibility(View.GONE);
|
||||
}
|
||||
mController.logInteractionAdjustVolume(device);
|
||||
mIsDragging = false;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -141,7 +141,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
|
||||
@VisibleForTesting
|
||||
LocalMediaManager mLocalMediaManager;
|
||||
@VisibleForTesting
|
||||
private MediaOutputMetricLogger mMetricLogger;
|
||||
MediaOutputMetricLogger mMetricLogger;
|
||||
private int mCurrentState;
|
||||
|
||||
private int mColorItemContent;
|
||||
@@ -870,12 +870,15 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
|
||||
}
|
||||
|
||||
void adjustVolume(MediaDevice device, int volume) {
|
||||
mMetricLogger.logInteractionAdjustVolume(device);
|
||||
ThreadUtils.postOnBackgroundThread(() -> {
|
||||
device.requestSetVolume(volume);
|
||||
});
|
||||
}
|
||||
|
||||
void logInteractionAdjustVolume(MediaDevice device) {
|
||||
mMetricLogger.logInteractionAdjustVolume(device);
|
||||
}
|
||||
|
||||
String getPackageName() {
|
||||
return mPackageName;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import android.graphics.drawable.Icon;
|
||||
import android.testing.AndroidTestingRunner;
|
||||
import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.SeekBar;
|
||||
|
||||
import androidx.core.graphics.drawable.IconCompat;
|
||||
import androidx.test.filters.SmallTest;
|
||||
@@ -45,6 +46,8 @@ import com.google.common.collect.ImmutableList;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Captor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -72,6 +75,8 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
|
||||
private IconCompat mIconCompat = mock(IconCompat.class);
|
||||
private View mDialogLaunchView = mock(View.class);
|
||||
|
||||
@Captor
|
||||
private ArgumentCaptor<SeekBar.OnSeekBarChangeListener> mOnSeekBarChangeListenerCaptor;
|
||||
private MediaOutputAdapter mMediaOutputAdapter;
|
||||
private MediaOutputAdapter.MediaDeviceViewHolder mViewHolder;
|
||||
private List<MediaDevice> mMediaDevices = new ArrayList<>();
|
||||
@@ -351,6 +356,24 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
|
||||
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
|
||||
public void onBindViewHolder_bindSelectableDevice_verifyView() {
|
||||
List<MediaDevice> selectableDevices = new ArrayList<>();
|
||||
|
||||
@@ -93,6 +93,11 @@ public class MediaOutputControllerTest extends SysuiTestCase {
|
||||
private static final String TEST_SONG = "test_song";
|
||||
private static final String TEST_SESSION_ID = "test_session_id";
|
||||
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
|
||||
private MediaController mMediaController = mock(MediaController.class);
|
||||
private MediaSessionManager mMediaSessionManager = mock(MediaSessionManager.class);
|
||||
@@ -111,12 +116,7 @@ public class MediaOutputControllerTest extends SysuiTestCase {
|
||||
private KeyguardManager mKeyguardManager = mock(KeyguardManager.class);
|
||||
private PowerExemptionManager mPowerExemptionManager = mock(PowerExemptionManager.class);
|
||||
private CommonNotifCollection mNotifCollection = mock(CommonNotifCollection.class);
|
||||
private final DialogLaunchAnimator mDialogLaunchAnimator = mock(DialogLaunchAnimator.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 MediaOutputController.Callback mCallback = mock(MediaOutputController.Callback.class);
|
||||
|
||||
@@ -521,6 +521,17 @@ public class MediaOutputControllerTest extends SysuiTestCase {
|
||||
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
|
||||
public void getSessionVolumeMax_triggersFromLocalMediaManager() {
|
||||
mMediaOutputController.getSessionVolumeMax();
|
||||
|
||||
Reference in New Issue
Block a user