Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b4d13ea authored by Tyler Freeman's avatar Tyler Freeman
Browse files

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
parent f91a331f
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -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() {