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

Commit 36daf1f2 authored by Wei Sheng Shih's avatar Wei Sheng Shih Committed by Gerrit Code Review
Browse files

Merge "Extend splash screen exception list to SC-V2"

parents 97f0cbd9 e16beeff
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -81,7 +81,7 @@ class SplashScreenExceptionList {
    @SuppressWarnings("AndroidFrameworkCompatChange") // Target sdk check
    public boolean isException(@NonNull String packageName, int targetSdk,
            @Nullable Supplier<ApplicationInfo> infoSupplier) {
        if (targetSdk >= Build.VERSION_CODES.S) {
        if (targetSdk > Build.VERSION_CODES.S_V2) {
            return false;
        }

+3 −1
Original line number Diff line number Diff line
@@ -2528,7 +2528,9 @@ public class ActivityRecordTests extends WindowTestsBase {
            DeviceConfig.setProperty(DeviceConfig.NAMESPACE_WINDOW_MANAGER,
                    "splash_screen_exception_list", DEFAULT_COMPONENT_PACKAGE_NAME, false);
            testLegacySplashScreen(Build.VERSION_CODES.R, TYPE_PARAMETER_LEGACY_SPLASH_SCREEN);
            testLegacySplashScreen(Build.VERSION_CODES.S, 0);
            testLegacySplashScreen(Build.VERSION_CODES.S, TYPE_PARAMETER_LEGACY_SPLASH_SCREEN);
            testLegacySplashScreen(Build.VERSION_CODES.S_V2, TYPE_PARAMETER_LEGACY_SPLASH_SCREEN);
            testLegacySplashScreen(Build.VERSION_CODES.S_V2 + 1, 0);
        } finally {
            try {
                DeviceConfig.setProperties(properties);
+35 −15
Original line number Diff line number Diff line
@@ -80,13 +80,19 @@ public class SplashScreenExceptionListTest {
    public void packageFromDeviceConfigIgnored() {
        setExceptionListAndWaitForCallback("com.test.nosplashscreen1,com.test.nosplashscreen2");

        assertIsException("com.test.nosplashscreen1", null);
        assertIsException("com.test.nosplashscreen2", null);

        assertIsNotException("com.test.nosplashscreen1", VERSION_CODES.S, null);
        assertIsNotException("com.test.nosplashscreen2", VERSION_CODES.S, null);
        assertIsNotException("com.test.splashscreen", VERSION_CODES.S, null);
        assertIsNotException("com.test.splashscreen", VERSION_CODES.R, null);
        // In list, up to SC-V2 included
        assertIsException("com.test.nosplashscreen1", VERSION_CODES.R);
        assertIsException("com.test.nosplashscreen1", VERSION_CODES.S);
        assertIsException("com.test.nosplashscreen1", VERSION_CODES.S_V2);

        // In list, after SC-V2
        assertIsNotException("com.test.nosplashscreen2", VERSION_CODES.S_V2 + 1);
        assertIsNotException("com.test.nosplashscreen2", VERSION_CODES.CUR_DEVELOPMENT);

        // Not in list, up to SC-V2 included
        assertIsNotException("com.test.splashscreen", VERSION_CODES.R);
        assertIsNotException("com.test.splashscreen", VERSION_CODES.S);
        assertIsNotException("com.test.splashscreen", VERSION_CODES.S_V2);
    }

    private void setExceptionListAndWaitForCallback(String commaSeparatedList) {
@@ -123,16 +129,26 @@ public class SplashScreenExceptionListTest {
        metaData.putBoolean("android.splashscreen.exception_opt_out", true);
        assertIsNotException(packageName, VERSION_CODES.R, activityInfo);
        assertIsNotException(packageName, VERSION_CODES.S, activityInfo);
        assertIsNotException(packageName, VERSION_CODES.S_V2, activityInfo);

        // Exception Pre S
        // Exception up to T
        metaData.putBoolean("android.splashscreen.exception_opt_out", false);
        assertIsException(packageName, activityInfo);
        assertIsNotException(packageName, VERSION_CODES.S, activityInfo);
        assertIsException(packageName, VERSION_CODES.R, activityInfo);
        assertIsException(packageName, VERSION_CODES.S, activityInfo);
        assertIsException(packageName, VERSION_CODES.S_V2, activityInfo);

        // No Exception after T
        assertIsNotException(packageName, VERSION_CODES.S_V2 + 1, activityInfo);
        assertIsNotException(packageName, VERSION_CODES.CUR_DEVELOPMENT, activityInfo);

        // Edge Cases
        activityInfo.metaData = null;
        assertIsException(packageName, activityInfo);
        assertIsException(packageName, null);
        assertIsException(packageName, VERSION_CODES.R, activityInfo);
        assertIsException(packageName, VERSION_CODES.R);
    }

    private void assertIsNotException(String packageName, int targetSdk) {
        assertIsNotException(packageName, targetSdk, null);
    }

    private void assertIsNotException(String packageName, int targetSdk,
@@ -142,10 +158,14 @@ public class SplashScreenExceptionListTest {
                mList.isException(packageName, targetSdk, () -> activityInfo));
    }

    private void assertIsException(String packageName,
    private void assertIsException(String packageName, int targetSdk) {
        assertIsException(packageName, targetSdk, null);
    }

    private void assertIsException(String packageName, int targetSdk,
            ApplicationInfo activityInfo) {
        assertTrue(String.format("%s (sdk=%d) should have been considered as an exception",
                packageName, VERSION_CODES.R),
                mList.isException(packageName, VERSION_CODES.R, () -> activityInfo));
                packageName, targetSdk),
                mList.isException(packageName, targetSdk, () -> activityInfo));
    }
}