From 06b1ebbbea3f752ee16b0ff4deba1e7014b8a8db Mon Sep 17 00:00:00 2001 From: Peter Liang Date: Tue, 20 Dec 2022 17:51:16 +0800 Subject: [PATCH] Fix the display/Font preview window appears blank while transitioning between sizes. Action: Using post messages to update the UI to avoid the timing issue. Bug: 223665259 Test: make RunSettingsRoboTests ROBOTEST_FILTER=PreviewSizeSeekBarControllerTest Change-Id: I31ef0d50a417fb76d14c1caf21926f1618ac3c4f --- .../accessibility/PreviewSizeSeekBarController.java | 4 +++- .../PreviewSizeSeekBarControllerTest.java | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) 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(); + } }