diff options
| author | 2024-03-25 21:17:37 +0000 | |
|---|---|---|
| committer | 2024-03-25 21:17:37 +0000 | |
| commit | dcacfa43328d80b4968d9eade4ffc98945a100d5 (patch) | |
| tree | bdfab3c137e59c037a1598807471b8e6fdb354c9 | |
| parent | b5589b1b6126e13cd64701b9a4c0fe83f052867d (diff) | |
| parent | b5e7def5fab002998dc1744bb7f1d5246b0a61a0 (diff) | |
Merge "Non-flaky slider haptics test" into main
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java | 34 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java | 26 |
2 files changed, 38 insertions, 22 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java index c3274477862a..27a708a00cb7 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java @@ -173,9 +173,9 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable, private static final String TYPE_DISMISS = "dismiss"; /** Volume dialog slider animation. */ private static final String TYPE_UPDATE = "update"; - static final short PROGRESS_HAPTICS_DISABLED = 0; - static final short PROGRESS_HAPTICS_EAGER = 1; - static final short PROGRESS_HAPTICS_ANIMATED = 2; + static final int PROGRESS_HAPTICS_DISABLED = 0; + static final int PROGRESS_HAPTICS_EAGER = 1; + static final int PROGRESS_HAPTICS_ANIMATED = 2; /** * TODO(b/290612381): remove lingering animations or tolerate them @@ -851,10 +851,7 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable, row.header.setFilters(new InputFilter[] {new InputFilter.LengthFilter(13)}); } row.slider = row.view.findViewById(R.id.volume_row_slider); - if (hapticVolumeSlider()) { - row.createPlugin(mVibratorHelper, mSystemClock); - HapticSliderViewBinder.bind(row.slider, row.mHapticPlugin); - } + addSliderHapticsToRow(row); row.slider.setOnSeekBarChangeListener(new VolumeSeekBarChangeListener(row)); row.number = row.view.findViewById(R.id.volume_number); @@ -915,6 +912,23 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable, } } + private void addSliderHapticsToRow(VolumeRow row) { + if (hapticVolumeSlider()) { + row.createPlugin(mVibratorHelper, mSystemClock); + HapticSliderViewBinder.bind(row.slider, row.mHapticPlugin); + } + } + + @VisibleForTesting void addSliderHapticsToRows() { + for (VolumeRow row: mRows) { + addSliderHapticsToRow(row); + } + } + + @VisibleForTesting void removeDismissMessages() { + mHandler.removeMessages(H.DISMISS); + } + private void setRingerMode(int newRingerMode) { Events.writeEvent(Events.EVENT_RINGER_TOGGLE, newRingerMode); incrementManualToggleCount(); @@ -2105,7 +2119,7 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable, } } - @VisibleForTesting short progressHapticsForStream(int stream) { + @VisibleForTesting int progressHapticsForStream(int stream) { for (VolumeRow row: mRows) { if (row.stream == stream) { return row.mProgressHapticsType; @@ -2619,7 +2633,7 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable, private int animTargetProgress; private int lastAudibleLevel = 1; private SeekableSliderHapticPlugin mHapticPlugin; - private short mProgressHapticsType = PROGRESS_HAPTICS_DISABLED; + private int mProgressHapticsType = PROGRESS_HAPTICS_DISABLED; void setIcon(int iconRes, Resources.Theme theme) { if (icon != null) { @@ -2661,7 +2675,7 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable, slider.setOnTouchListener(null); } - void deliverOnProgressChangedHaptics(boolean fromUser, int progress, short hapticsType) { + void deliverOnProgressChangedHaptics(boolean fromUser, int progress, int hapticsType) { if (mHapticPlugin == null) return; mHapticPlugin.onProgressChanged(slider, progress, fromUser); diff --git a/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java index 5206db4aa13a..11a53f753b2a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java @@ -95,7 +95,6 @@ import junit.framework.Assert; import org.junit.After; import org.junit.Before; -import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; @@ -272,50 +271,53 @@ public class VolumeDialogImplTest extends SysuiTestCase { @Test @DisableFlags(FLAG_HAPTIC_VOLUME_SLIDER) public void testVolumeChange_noSliderHaptics_doesNotDeliverOnProgressChangedHaptics() { - // Initialize the dialog again with haptic sliders disabled - mDialog.init(0, null); final State shellState = createShellState(); VolumeDialogController.StreamState musicStreamState = shellState.states.get(AudioSystem.STREAM_MUSIC); mDialog.show(SHOW_REASON_UNKNOWN); mTestableLooper.processMessages(1); //Only the SHOW message + mDialog.removeDismissMessages(); // Temporarily remove the rescheduled DISMISS // Change the volume two times musicStreamState.level += 10; mDialog.onStateChangedH(shellState); - mAnimatorTestRule.advanceTimeBy(10); musicStreamState.level += 10; mDialog.onStateChangedH(shellState); - // expected: the type of the progress haptics for the stream should be DISABLED - short type = mDialog.progressHapticsForStream(AudioSystem.STREAM_MUSIC); + // expected: the type of the latest progress haptics for the stream should be DISABLED + int type = mDialog.progressHapticsForStream(AudioSystem.STREAM_MUSIC); assertEquals(VolumeDialogImpl.PROGRESS_HAPTICS_DISABLED, type); + + mDialog.dismiss(DISMISS_REASON_UNKNOWN); // Dismiss + mTestableLooper.processAllMessages(); } - @Ignore("Causing breakages so ignoring to resolve, b/329099861") @Test @EnableFlags(FLAG_HAPTIC_VOLUME_SLIDER) public void testVolumeChange_withSliderHaptics_deliversOnProgressChangedHapticsEagerly() { - // Initialize the dialog again to create haptic plugins on the rows with the flag enabled - mDialog.init(0, null); + // create haptic plugins on the rows with the flag enabled + mDialog.addSliderHapticsToRows(); final State shellState = createShellState(); VolumeDialogController.StreamState musicStreamState = shellState.states.get(AudioSystem.STREAM_MUSIC); mDialog.show(SHOW_REASON_UNKNOWN); mTestableLooper.processMessages(1); //Only the SHOW message + mDialog.removeDismissMessages(); // Temporarily remove the rescheduled DISMISS // Change the volume two times musicStreamState.level += 10; mDialog.onStateChangedH(shellState); - mAnimatorTestRule.advanceTimeBy(10); musicStreamState.level += 10; mDialog.onStateChangedH(shellState); - // expected: the type of the progress haptics for the stream should be EAGER - short type = mDialog.progressHapticsForStream(AudioSystem.STREAM_MUSIC); + // expected: the type of the latest progress haptics for the stream should be EAGER + int type = mDialog.progressHapticsForStream(AudioSystem.STREAM_MUSIC); assertEquals(VolumeDialogImpl.PROGRESS_HAPTICS_EAGER, type); + + mDialog.dismiss(DISMISS_REASON_UNKNOWN); // Dismiss + mTestableLooper.processAllMessages(); } @Test |