Loading packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/fontscaling/FontScalingDialogDelegateTest.kt +3 −13 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.animation.DialogTransitionAnimator import com.android.systemui.common.ui.view.SeekBarWithIconButtonsView import com.android.systemui.common.ui.view.SeekBarWithIconButtonsView.OnSeekBarWithIconButtonsChangeListener import com.android.systemui.model.SysUiState import com.android.systemui.res.R import com.android.systemui.settings.UserTracker Loading Loading @@ -236,13 +235,13 @@ class FontScalingDialogDelegateTest : SysuiTestCase() { dialog.show() val slider = dialog.findViewById<SeekBarWithIconButtonsView>(R.id.font_scaling_slider)!! val changeListener = slider.onSeekBarWithIconButtonsChangeListener val seekBarListener = slider.getSeekBarChangeListener() val seekBar: SeekBar = slider.findViewById(R.id.seekbar)!! // Default seekbar progress for font size is 1, simulate dragging to 0 without // releasing the finger. changeListener.onStartTrackingTouch(seekBar) seekBarListener.onStartTrackingTouch(seekBar) // Update seekbar progress. This will trigger onProgressChanged in the // OnSeekBarChangeListener and the seekbar could get updated progress value // in onStopTrackingTouch. Loading @@ -261,16 +260,7 @@ class FontScalingDialogDelegateTest : SysuiTestCase() { assertThat(systemScale).isEqualTo(1.0f) // Simulate releasing the finger from the seekbar. changeListener.onStopTrackingTouch(seekBar) backgroundDelayableExecutor.runAllReady() backgroundDelayableExecutor.advanceClockToNext() backgroundDelayableExecutor.runAllReady() // SeekBar interaction is finalized. changeListener.onUserInteractionFinalized( seekBar, OnSeekBarWithIconButtonsChangeListener.ControlUnitType.SLIDER, ) seekBarListener.onStopTrackingTouch(seekBar) backgroundDelayableExecutor.runAllReady() backgroundDelayableExecutor.advanceClockToNext() backgroundDelayableExecutor.runAllReady() Loading packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/view/SeekBarWithIconButtonsViewTest.java +29 −3 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.systemui.common.ui.view; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; Loading Loading @@ -129,16 +128,43 @@ public class SeekBarWithIconButtonsViewTest extends SysuiTestCase { } @Test public void setProgress_onlyOnProgressChangedTriggeredWithFromUserFalse() { public void setProgress_onProgressChangedAndOnUserInteractionFinalized() { reset(mOnSeekBarChangeListener); mIconDiscreteSliderLinearLayout.setProgress(1); // If users are changing seekbar progress without touching the seekbar or clicking the // buttons, trigger onUserInteractionFinalized. verify(mOnSeekBarChangeListener).onProgressChanged( eq(mSeekbar), /* progress= */ eq(1), /* fromUser= */ eq(false)); verify(mOnSeekBarChangeListener, never()).onStartTrackingTouch(/* seekBar= */ any()); verify(mOnSeekBarChangeListener, never()).onStopTrackingTouch(/* seekBar= */ any()); verify(mOnSeekBarChangeListener).onUserInteractionFinalized( /* seekBar= */ any(), eq(OnSeekBarWithIconButtonsChangeListener.ControlUnitType.SLIDER)); } @Test public void setProgressToSeekBarByTouch_onUserInteractionFinalizedAfterTouchEnds() { reset(mOnSeekBarChangeListener); final SeekBarWithIconButtonsView.SeekBarChangeListener seekBarChangeListener = mIconDiscreteSliderLinearLayout.getSeekBarChangeListener(); final SeekBar seekBar = mIconDiscreteSliderLinearLayout.findViewById(R.id.seekbar); // Simulate changing seekbar progress by touch seekBarChangeListener.onStartTrackingTouch(seekBar); mIconDiscreteSliderLinearLayout.setProgress(1); verify(mOnSeekBarChangeListener).onProgressChanged( eq(mSeekbar), /* progress= */ eq(1), /* fromUser= */ eq(false)); verify(mOnSeekBarChangeListener, never()).onUserInteractionFinalized( /* seekBar= */any(), /* control= */ anyInt()); /* seekBar= */ any(), eq(OnSeekBarWithIconButtonsChangeListener.ControlUnitType.SLIDER)); // Notify onUserInteractionFinalized after touch ends seekBarChangeListener.onStopTrackingTouch(seekBar); verify(mOnSeekBarChangeListener).onUserInteractionFinalized( /* seekBar= */ any(), eq(OnSeekBarWithIconButtonsChangeListener.ControlUnitType.SLIDER)); } @Test Loading packages/SystemUI/src/com/android/systemui/common/ui/view/SeekBarWithIconButtonsView.java +21 −1 Original line number Diff line number Diff line Loading @@ -178,6 +178,14 @@ public class SeekBarWithIconButtonsView extends LinearLayout { return mSeekBarListener.mOnSeekBarChangeListener; } /** * Only for testing. Get mSeekBarListener to the seekbar. */ @VisibleForTesting public SeekBarChangeListener getSeekBarChangeListener() { return mSeekBarListener; } /** * Only for testing. Get {@link #mSeekbar} in the layout. */ Loading Loading @@ -289,8 +297,10 @@ public class SeekBarWithIconButtonsView extends LinearLayout { void onUserInteractionFinalized(SeekBar seekBar, @ControlUnitType int control); } private class SeekBarChangeListener implements SeekBar.OnSeekBarChangeListener { @VisibleForTesting public class SeekBarChangeListener implements SeekBar.OnSeekBarChangeListener { private OnSeekBarWithIconButtonsChangeListener mOnSeekBarChangeListener = null; private boolean mSeekByTouch = false; @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { Loading @@ -308,6 +318,14 @@ public class SeekBarWithIconButtonsView extends LinearLayout { seekBar, OnSeekBarWithIconButtonsChangeListener.ControlUnitType.BUTTON); } else { mOnSeekBarChangeListener.onProgressChanged(seekBar, progress, fromUser); if (!mSeekByTouch) { // Accessibility users could change the progress of the seekbar without // touching the seekbar or clicking the buttons. We will consider the // interaction has finished in this case. mOnSeekBarChangeListener.onUserInteractionFinalized( seekBar, OnSeekBarWithIconButtonsChangeListener.ControlUnitType.SLIDER); } } } updateIconViewIfNeeded(progress); Loading @@ -315,6 +333,7 @@ public class SeekBarWithIconButtonsView extends LinearLayout { @Override public void onStartTrackingTouch(SeekBar seekBar) { mSeekByTouch = true; if (mOnSeekBarChangeListener != null) { mOnSeekBarChangeListener.onStartTrackingTouch(seekBar); } Loading @@ -322,6 +341,7 @@ public class SeekBarWithIconButtonsView extends LinearLayout { @Override public void onStopTrackingTouch(SeekBar seekBar) { mSeekByTouch = false; if (mOnSeekBarChangeListener != null) { mOnSeekBarChangeListener.onStopTrackingTouch(seekBar); mOnSeekBarChangeListener.onUserInteractionFinalized( Loading packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java +5 −2 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ import android.view.accessibility.AccessibilityManager; import android.widget.Button; import android.widget.CompoundButton; import android.widget.LinearLayout; import android.widget.SeekBar; import androidx.test.InstrumentationRegistry; import androidx.test.ext.junit.runners.AndroidJUnit4; Loading @@ -81,6 +82,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; @SmallTest Loading Loading @@ -544,9 +546,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase { OnSeekBarWithIconButtonsChangeListener onChangeListener = mZoomSeekbar.getOnSeekBarWithIconButtonsChangeListener(); mZoomSeekbar.setProgress(30); SeekBar mockSeekBar = Mockito.mock(SeekBar.class); when(mockSeekBar.getProgress()).thenReturn(30); onChangeListener.onUserInteractionFinalized( mZoomSeekbar.getSeekbar(), mockSeekBar, OnSeekBarWithIconButtonsChangeListener.ControlUnitType.SLIDER); // should trigger callback to update magnifier scale and persist the scale Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/fontscaling/FontScalingDialogDelegateTest.kt +3 −13 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.animation.DialogTransitionAnimator import com.android.systemui.common.ui.view.SeekBarWithIconButtonsView import com.android.systemui.common.ui.view.SeekBarWithIconButtonsView.OnSeekBarWithIconButtonsChangeListener import com.android.systemui.model.SysUiState import com.android.systemui.res.R import com.android.systemui.settings.UserTracker Loading Loading @@ -236,13 +235,13 @@ class FontScalingDialogDelegateTest : SysuiTestCase() { dialog.show() val slider = dialog.findViewById<SeekBarWithIconButtonsView>(R.id.font_scaling_slider)!! val changeListener = slider.onSeekBarWithIconButtonsChangeListener val seekBarListener = slider.getSeekBarChangeListener() val seekBar: SeekBar = slider.findViewById(R.id.seekbar)!! // Default seekbar progress for font size is 1, simulate dragging to 0 without // releasing the finger. changeListener.onStartTrackingTouch(seekBar) seekBarListener.onStartTrackingTouch(seekBar) // Update seekbar progress. This will trigger onProgressChanged in the // OnSeekBarChangeListener and the seekbar could get updated progress value // in onStopTrackingTouch. Loading @@ -261,16 +260,7 @@ class FontScalingDialogDelegateTest : SysuiTestCase() { assertThat(systemScale).isEqualTo(1.0f) // Simulate releasing the finger from the seekbar. changeListener.onStopTrackingTouch(seekBar) backgroundDelayableExecutor.runAllReady() backgroundDelayableExecutor.advanceClockToNext() backgroundDelayableExecutor.runAllReady() // SeekBar interaction is finalized. changeListener.onUserInteractionFinalized( seekBar, OnSeekBarWithIconButtonsChangeListener.ControlUnitType.SLIDER, ) seekBarListener.onStopTrackingTouch(seekBar) backgroundDelayableExecutor.runAllReady() backgroundDelayableExecutor.advanceClockToNext() backgroundDelayableExecutor.runAllReady() Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/view/SeekBarWithIconButtonsViewTest.java +29 −3 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.systemui.common.ui.view; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; Loading Loading @@ -129,16 +128,43 @@ public class SeekBarWithIconButtonsViewTest extends SysuiTestCase { } @Test public void setProgress_onlyOnProgressChangedTriggeredWithFromUserFalse() { public void setProgress_onProgressChangedAndOnUserInteractionFinalized() { reset(mOnSeekBarChangeListener); mIconDiscreteSliderLinearLayout.setProgress(1); // If users are changing seekbar progress without touching the seekbar or clicking the // buttons, trigger onUserInteractionFinalized. verify(mOnSeekBarChangeListener).onProgressChanged( eq(mSeekbar), /* progress= */ eq(1), /* fromUser= */ eq(false)); verify(mOnSeekBarChangeListener, never()).onStartTrackingTouch(/* seekBar= */ any()); verify(mOnSeekBarChangeListener, never()).onStopTrackingTouch(/* seekBar= */ any()); verify(mOnSeekBarChangeListener).onUserInteractionFinalized( /* seekBar= */ any(), eq(OnSeekBarWithIconButtonsChangeListener.ControlUnitType.SLIDER)); } @Test public void setProgressToSeekBarByTouch_onUserInteractionFinalizedAfterTouchEnds() { reset(mOnSeekBarChangeListener); final SeekBarWithIconButtonsView.SeekBarChangeListener seekBarChangeListener = mIconDiscreteSliderLinearLayout.getSeekBarChangeListener(); final SeekBar seekBar = mIconDiscreteSliderLinearLayout.findViewById(R.id.seekbar); // Simulate changing seekbar progress by touch seekBarChangeListener.onStartTrackingTouch(seekBar); mIconDiscreteSliderLinearLayout.setProgress(1); verify(mOnSeekBarChangeListener).onProgressChanged( eq(mSeekbar), /* progress= */ eq(1), /* fromUser= */ eq(false)); verify(mOnSeekBarChangeListener, never()).onUserInteractionFinalized( /* seekBar= */any(), /* control= */ anyInt()); /* seekBar= */ any(), eq(OnSeekBarWithIconButtonsChangeListener.ControlUnitType.SLIDER)); // Notify onUserInteractionFinalized after touch ends seekBarChangeListener.onStopTrackingTouch(seekBar); verify(mOnSeekBarChangeListener).onUserInteractionFinalized( /* seekBar= */ any(), eq(OnSeekBarWithIconButtonsChangeListener.ControlUnitType.SLIDER)); } @Test Loading
packages/SystemUI/src/com/android/systemui/common/ui/view/SeekBarWithIconButtonsView.java +21 −1 Original line number Diff line number Diff line Loading @@ -178,6 +178,14 @@ public class SeekBarWithIconButtonsView extends LinearLayout { return mSeekBarListener.mOnSeekBarChangeListener; } /** * Only for testing. Get mSeekBarListener to the seekbar. */ @VisibleForTesting public SeekBarChangeListener getSeekBarChangeListener() { return mSeekBarListener; } /** * Only for testing. Get {@link #mSeekbar} in the layout. */ Loading Loading @@ -289,8 +297,10 @@ public class SeekBarWithIconButtonsView extends LinearLayout { void onUserInteractionFinalized(SeekBar seekBar, @ControlUnitType int control); } private class SeekBarChangeListener implements SeekBar.OnSeekBarChangeListener { @VisibleForTesting public class SeekBarChangeListener implements SeekBar.OnSeekBarChangeListener { private OnSeekBarWithIconButtonsChangeListener mOnSeekBarChangeListener = null; private boolean mSeekByTouch = false; @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { Loading @@ -308,6 +318,14 @@ public class SeekBarWithIconButtonsView extends LinearLayout { seekBar, OnSeekBarWithIconButtonsChangeListener.ControlUnitType.BUTTON); } else { mOnSeekBarChangeListener.onProgressChanged(seekBar, progress, fromUser); if (!mSeekByTouch) { // Accessibility users could change the progress of the seekbar without // touching the seekbar or clicking the buttons. We will consider the // interaction has finished in this case. mOnSeekBarChangeListener.onUserInteractionFinalized( seekBar, OnSeekBarWithIconButtonsChangeListener.ControlUnitType.SLIDER); } } } updateIconViewIfNeeded(progress); Loading @@ -315,6 +333,7 @@ public class SeekBarWithIconButtonsView extends LinearLayout { @Override public void onStartTrackingTouch(SeekBar seekBar) { mSeekByTouch = true; if (mOnSeekBarChangeListener != null) { mOnSeekBarChangeListener.onStartTrackingTouch(seekBar); } Loading @@ -322,6 +341,7 @@ public class SeekBarWithIconButtonsView extends LinearLayout { @Override public void onStopTrackingTouch(SeekBar seekBar) { mSeekByTouch = false; if (mOnSeekBarChangeListener != null) { mOnSeekBarChangeListener.onStopTrackingTouch(seekBar); mOnSeekBarChangeListener.onUserInteractionFinalized( Loading
packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java +5 −2 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ import android.view.accessibility.AccessibilityManager; import android.widget.Button; import android.widget.CompoundButton; import android.widget.LinearLayout; import android.widget.SeekBar; import androidx.test.InstrumentationRegistry; import androidx.test.ext.junit.runners.AndroidJUnit4; Loading @@ -81,6 +82,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; @SmallTest Loading Loading @@ -544,9 +546,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase { OnSeekBarWithIconButtonsChangeListener onChangeListener = mZoomSeekbar.getOnSeekBarWithIconButtonsChangeListener(); mZoomSeekbar.setProgress(30); SeekBar mockSeekBar = Mockito.mock(SeekBar.class); when(mockSeekBar.getProgress()).thenReturn(30); onChangeListener.onUserInteractionFinalized( mZoomSeekbar.getSeekbar(), mockSeekBar, OnSeekBarWithIconButtonsChangeListener.ControlUnitType.SLIDER); // should trigger callback to update magnifier scale and persist the scale Loading