fix(non linear font scaling): fix activity test flakiness

Always wait for the test activity to pick up the configuration change
before starting the test.

Fix: 281854884
Test: atest FrameworksCoreTests:android.content.res.FontScaleConverterActivityTest
Change-Id: I94e06374833222e1540a26e7e855a207199eea87
This commit is contained in:
Tyler Freeman
2023-05-16 17:54:19 +00:00
parent f91a331f1d
commit 3b4d13eafe

View File

@@ -50,6 +50,7 @@ import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
/**
@@ -127,7 +128,7 @@ public class FontScaleConverterActivityTest {
});
}
private static void setSystemFontScale(float fontScale) {
private void setSystemFontScale(float fontScale) {
ShellIdentityUtils.invokeWithShellPermissions(() -> {
Settings.System.putFloat(
InstrumentationRegistry.getInstrumentation().getContext().getContentResolver(),
@@ -136,14 +137,22 @@ public class FontScaleConverterActivityTest {
);
});
PollingCheck.waitFor(/* timeout= */ 5000, () ->
InstrumentationRegistry
PollingCheck.waitFor(/* timeout= */ 5000, () -> {
AtomicBoolean isActivityAtCorrectScale = new AtomicBoolean(false);
rule.getScenario().onActivity(activity ->
isActivityAtCorrectScale.set(
activity.getResources()
.getConfiguration()
.fontScale == fontScale
)
);
return isActivityAtCorrectScale.get() && InstrumentationRegistry
.getInstrumentation()
.getContext()
.getResources()
.getConfiguration()
.fontScale == fontScale
);
.fontScale == fontScale;
});
}
private static void restoreSystemFontScaleToDefault() {