From 61434924f077d57f86c35e13683ea1e762e776b1 Mon Sep 17 00:00:00 2001 From: Vadim Tryshev Date: Tue, 5 Dec 2023 13:31:22 -0800 Subject: [PATCH] Waiting for wallpaper animation completion when configuring new widget This will help to ensure that Launcher state has settled before continuing the test. Bug: 313926097 Flag: N/A Test: presubmit Change-Id: Ice7ae8a2517d68c53d135a34cc33e11f3203f788 --- .../android/launcher3/QuickstepTransitionManager.java | 11 +++++++++++ .../launcher3/testing/shared/TestProtocol.java | 2 ++ .../launcher3/ui/widget/AddConfigWidgetTest.java | 8 +++++--- .../launcher3/tapl/LauncherInstrumentation.java | 10 ++++++++++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java index d6ab54e039..8db63e3d88 100644 --- a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +++ b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java @@ -55,6 +55,7 @@ import static com.android.launcher3.config.FeatureFlags.ENABLE_SCRIM_FOR_APP_LAU import static com.android.launcher3.config.FeatureFlags.KEYGUARD_ANIMATION; import static com.android.launcher3.config.FeatureFlags.SEPARATE_RECENTS_ACTIVITY; import static com.android.launcher3.model.data.ItemInfo.NO_MATCHING_ID; +import static com.android.launcher3.testing.shared.TestProtocol.WALLPAPER_OPEN_ANIMATION_FINISHED_MESSAGE; import static com.android.launcher3.util.DisplayController.isTransientTaskbar; import static com.android.launcher3.util.Executors.ORDERED_BG_EXECUTOR; import static com.android.launcher3.util.MultiPropertyFactory.MULTI_PROPERTY_VALUE; @@ -120,6 +121,7 @@ import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener; import com.android.launcher3.LauncherAnimationRunner.RemoteAnimationFactory; import com.android.launcher3.anim.AnimationSuccessListener; import com.android.launcher3.anim.AnimatorListeners; +import com.android.launcher3.compat.AccessibilityManagerCompat; import com.android.launcher3.dragndrop.DragLayer; import com.android.launcher3.icons.FastBitmapDrawable; import com.android.launcher3.model.data.ItemInfo; @@ -1651,6 +1653,15 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener if (launcherIsForceInvisibleOrOpening) { addCujInstrumentation(anim, playFallBackAnimation ? CUJ_APP_CLOSE_TO_HOME_FALLBACK : CUJ_APP_CLOSE_TO_HOME); + + anim.addListener(new AnimationSuccessListener() { + @Override + public void onAnimationSuccess(Animator animator) { + AccessibilityManagerCompat.sendTestProtocolEventToTest( + mLauncher, WALLPAPER_OPEN_ANIMATION_FINISHED_MESSAGE); + } + }); + // Only register the content animation for cancellation when state changes mLauncher.getStateManager().setCurrentAnimation(anim); diff --git a/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java b/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java index d5a645ee46..7621acdc1a 100644 --- a/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java +++ b/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java @@ -30,6 +30,8 @@ public final class TestProtocol { public static final String FOLDER_OPENED_MESSAGE = "TAPL_FOLDER_OPENED"; public static final String SEARCH_RESULT_COMPLETE = "SEARCH_RESULT_COMPLETE"; public static final String LAUNCHER_ACTIVITY_STOPPED_MESSAGE = "TAPL_LAUNCHER_ACTIVITY_STOPPED"; + public static final String WALLPAPER_OPEN_ANIMATION_FINISHED_MESSAGE = + "TAPL_WALLPAPER_OPEN_ANIMATION_FINISHED"; public static final int NORMAL_STATE_ORDINAL = 0; public static final int SPRING_LOADED_STATE_ORDINAL = 1; public static final int OVERVIEW_STATE_ORDINAL = 2; diff --git a/tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java b/tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java index b2ce400d8d..cce4c5bc4e 100644 --- a/tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java +++ b/tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java @@ -113,9 +113,11 @@ public class AddConfigWidgetTest extends AbstractLauncherUiTest { } private void setResult(boolean success) { - getInstrumentation().getTargetContext().sendBroadcast( - WidgetConfigActivity.getCommandIntent(WidgetConfigActivity.class, - success ? "clickOK" : "clickCancel")); + mLauncher.executeAndWaitForWallpaperAnimation(() -> + getInstrumentation().getTargetContext().sendBroadcast( + WidgetConfigActivity.getCommandIntent(WidgetConfigActivity.class, + success ? "clickOK" : "clickCancel")), + "setting widget coinfig result"); } /** diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java index fb817007c3..f8e0f3d3ad 100644 --- a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java +++ b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java @@ -2313,4 +2313,14 @@ public final class LauncherInstrumentation { } return result; } + + /** Executes a runnable and waits for the wallpaper-open animation completion. */ + public void executeAndWaitForWallpaperAnimation(Runnable r, String actionName) { + executeAndWaitForLauncherEvent( + () -> r.run(), + event -> TestProtocol.WALLPAPER_OPEN_ANIMATION_FINISHED_MESSAGE + .equals(event.getClassName().toString()), + () -> "Didn't detect finishing wallpaper-open animation", + actionName); + } }