diff options
| author | 2022-05-16 09:20:52 +0000 | |
|---|---|---|
| committer | 2022-05-16 09:20:52 +0000 | |
| commit | 828c6dce47a0ead87b45e1cadc03e600428452ce (patch) | |
| tree | 639d84a5c8b9b57eea46e2d3ecf85de1b6f6789a | |
| parent | a09a76a726c3decc2edeed6c5e1bb7d21e7c2612 (diff) | |
| parent | e52fa61538e38bf10eddb537df28c7544d53f2ef (diff) | |
Merge "Extend splash screen exception list to T" into tm-dev am: a92124a41e am: e52fa61538
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18185289
Change-Id: I225c231984761aec42f08534297c76d56ad57996
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
4 files changed, 61 insertions, 37 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index f4d215e5f2f1..ae076f84a4de 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -2314,7 +2314,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A final int type = getStartingWindowType(newTask, taskSwitch, processRunning, allowTaskSnapshot, activityCreated, activityAllDrawn, snapshot); - //TODO(191787740) Remove for T + //TODO(191787740) Remove for T+ final boolean useLegacy = type == STARTING_WINDOW_TYPE_SPLASH_SCREEN && mWmService.mStartingSurfaceController.isExceptionApp(packageName, mTargetSdk, () -> { diff --git a/services/core/java/com/android/server/wm/SplashScreenExceptionList.java b/services/core/java/com/android/server/wm/SplashScreenExceptionList.java index 9ca49fe9557e..b3cd3f0df97e 100644 --- a/services/core/java/com/android/server/wm/SplashScreenExceptionList.java +++ b/services/core/java/com/android/server/wm/SplashScreenExceptionList.java @@ -70,7 +70,7 @@ class SplashScreenExceptionList { } /** - * Returns true if the packageName is in the list and the target sdk is before S. + * Returns true if the packageName is in the list and the target sdk is before or including T. * * @param packageName The package name of the application to check * @param targetSdk The target sdk of the application @@ -82,7 +82,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.TIRAMISU) { 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 3f260fe66a8e..b8f0b72b24a7 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java @@ -2600,7 +2600,11 @@ 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.TIRAMISU, + TYPE_PARAMETER_LEGACY_SPLASH_SCREEN); + // Above T + testLegacySplashScreen(Build.VERSION_CODES.TIRAMISU + 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 f5d915dee257..8425844d8042 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SplashScreenExceptionListTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/SplashScreenExceptionListTest.java @@ -90,30 +90,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); - } - - private void setExceptionListAndWaitForCallback(String commaSeparatedList) { - CountDownLatch latch = new CountDownLatch(1); - mOnUpdateDeviceConfig = rawList -> { - if (commaSeparatedList.equals(rawList)) { - latch.countDown(); - } - }; - DeviceConfig.setProperty(DeviceConfig.NAMESPACE_WINDOW_MANAGER, - KEY_SPLASH_SCREEN_EXCEPTION_LIST, commaSeparatedList, false); - try { - assertTrue("Timed out waiting for DeviceConfig to be updated.", - latch.await(1, TimeUnit.SECONDS)); - } catch (InterruptedException e) { - Assert.fail(e.getMessage()); - } + // In list, up to T included + assertIsException("com.test.nosplashscreen1", VERSION_CODES.R); + assertIsException("com.test.nosplashscreen1", VERSION_CODES.S); + assertIsException("com.test.nosplashscreen1", VERSION_CODES.TIRAMISU); + + // In list, after T + assertIsNotException("com.test.nosplashscreen2", VERSION_CODES.TIRAMISU + 1); + assertIsNotException("com.test.nosplashscreen2", VERSION_CODES.CUR_DEVELOPMENT); + + // Not in list, up to T included + assertIsNotException("com.test.splashscreen", VERSION_CODES.S); + assertIsNotException("com.test.splashscreen", VERSION_CODES.R); + assertIsNotException("com.test.splashscreen", VERSION_CODES.TIRAMISU); } @Test @@ -129,29 +118,60 @@ 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.TIRAMISU, 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.TIRAMISU, activityInfo); + + // No Exception after T + assertIsNotException(packageName, VERSION_CODES.TIRAMISU + 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 setExceptionListAndWaitForCallback(String commaSeparatedList) { + CountDownLatch latch = new CountDownLatch(1); + mOnUpdateDeviceConfig = rawList -> { + if (commaSeparatedList.equals(rawList)) { + latch.countDown(); + } + }; + DeviceConfig.setProperty(DeviceConfig.NAMESPACE_WINDOW_MANAGER, + KEY_SPLASH_SCREEN_EXCEPTION_LIST, commaSeparatedList, false); + try { + assertTrue("Timed out waiting for DeviceConfig to be updated.", + latch.await(1, TimeUnit.SECONDS)); + } catch (InterruptedException e) { + Assert.fail(e.getMessage()); + } + } + + private void assertIsNotException(String packageName, int targetSdk) { + assertIsNotException(packageName, targetSdk, null); } private void assertIsNotException(String packageName, int targetSdk, ApplicationInfo activityInfo) { assertFalse(String.format("%s (sdk=%d) should have not been considered as an exception", - packageName, targetSdk), + packageName, targetSdk), mList.isException(packageName, targetSdk, () -> activityInfo)); } + private void assertIsException(String packageName, int targetSdk) { + assertIsException(packageName, targetSdk, null); + } + private void assertIsException(String packageName, - ApplicationInfo activityInfo) { + 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)); } } |