diff --git a/src/com/android/settings/accessibility/PreviewSizeSeekBarController.java b/src/com/android/settings/accessibility/PreviewSizeSeekBarController.java index 51a775e85c3..851797ec2a9 100644 --- a/src/com/android/settings/accessibility/PreviewSizeSeekBarController.java +++ b/src/com/android/settings/accessibility/PreviewSizeSeekBarController.java @@ -48,7 +48,9 @@ class PreviewSizeSeekBarController extends BasePreferenceController implements final ProgressInteractionListener interactionListener = mInteractionListener.get(); - interactionListener.notifyPreferenceChanged(); + // Avoid timing issues to update the corresponding preview fail when clicking + // the increase/decrease button. + seekBar.post(interactionListener::notifyPreferenceChanged); if (!mSeekByTouch) { interactionListener.onProgressChanged(); diff --git a/tests/robotests/src/com/android/settings/accessibility/PreviewSizeSeekBarControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/PreviewSizeSeekBarControllerTest.java index 31e0782a8c9..52ccb374ca6 100644 --- a/tests/robotests/src/com/android/settings/accessibility/PreviewSizeSeekBarControllerTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/PreviewSizeSeekBarControllerTest.java @@ -24,6 +24,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; +import android.widget.SeekBar; import androidx.preference.PreferenceScreen; import androidx.test.core.app.ApplicationProvider; @@ -111,4 +112,15 @@ public class PreviewSizeSeekBarControllerTest { verify(mInteractionListener).onProgressChanged(); } + + @Test + public void onProgressChanged_verifyNotifyPreferenceChanged() { + mSeekBarController.displayPreference(mPreferenceScreen); + + mSeekBarPreference.setProgress(mSeekBarPreference.getMax()); + mSeekBarPreference.onProgressChanged(new SeekBar(mContext), /* progress= */ + 0, /* fromUser= */ false); + + verify(mInteractionListener).notifyPreferenceChanged(); + } }