Merge "[Output Switcher] Fix volume adjustment metric logging" into tm-qpr-dev
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,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;
|
||||||
@@ -43,6 +44,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;
|
||||||
@@ -70,6 +73,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<>();
|
||||||
@@ -349,6 +354,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<>();
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user