[Output Switcher] Fix volume adjustment metric logging

change volume fix event logging to reduce duplicated logging.

Bug: 261072068
Test: atest MediaOutputAdapterTest MediaOutputControllerTest MediaOutputBaseDialogTest MediaOutputDialogTest
Change-Id: I1b159095cb843826c1ebab9b0202600b931aa3d8
This commit is contained in:
shaoweishen
2023-01-12 15:50:00 +00:00
committed by Shaowei Shen
parent 63e26b3c75
commit 7bace705e3
4 changed files with 48 additions and 8 deletions

View File

@@ -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;
}
});

View File

@@ -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;
}

View File

@@ -29,6 +29,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;
@@ -43,6 +44,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;
@@ -70,6 +73,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<>();
@@ -349,6 +354,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<>();

View File

@@ -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();