diff --git a/services/core/java/com/android/server/wm/SplashScreenExceptionList.java b/services/core/java/com/android/server/wm/SplashScreenExceptionList.java index e815a0e2682a9..92a538c235983 100644 --- a/services/core/java/com/android/server/wm/SplashScreenExceptionList.java +++ b/services/core/java/com/android/server/wm/SplashScreenExceptionList.java @@ -81,7 +81,7 @@ class SplashScreenExceptionList { @SuppressWarnings("AndroidFrameworkCompatChange") // Target sdk check public boolean isException(@NonNull String packageName, int targetSdk, @Nullable Supplier infoSupplier) { - if (targetSdk >= Build.VERSION_CODES.S) { + if (targetSdk > Build.VERSION_CODES.S_V2) { return false; } diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java index b770b3e3a55b7..0d9c923c674f8 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java @@ -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); diff --git a/services/tests/wmtests/src/com/android/server/wm/SplashScreenExceptionListTest.java b/services/tests/wmtests/src/com/android/server/wm/SplashScreenExceptionListTest.java index 3714d9984a0c4..b78675d73f6c1 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SplashScreenExceptionListTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/SplashScreenExceptionListTest.java @@ -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); + // 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); - 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, 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)); } }