summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/AppTransitionController.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java65
2 files changed, 67 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/AppTransitionController.java b/services/core/java/com/android/server/wm/AppTransitionController.java
index 3dea68625e8d..c869ec67776d 100644
--- a/services/core/java/com/android/server/wm/AppTransitionController.java
+++ b/services/core/java/com/android/server/wm/AppTransitionController.java
@@ -362,8 +362,10 @@ public class AppTransitionController {
ProtoLog.v(WM_DEBUG_APP_TRANSITIONS, "Wallpaper animation!");
switch (firstTransit) {
case TRANSIT_OPEN:
+ case TRANSIT_TO_FRONT:
return TRANSIT_OLD_WALLPAPER_INTRA_OPEN;
case TRANSIT_CLOSE:
+ case TRANSIT_TO_BACK:
return TRANSIT_OLD_WALLPAPER_INTRA_CLOSE;
}
} else if (oldWallpaper != null && !openingApps.isEmpty()
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java
index c555612fef23..3a6aac9d03d5 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java
@@ -19,6 +19,7 @@ package com.android.server.wm;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
+import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
import static android.view.WindowManager.TRANSIT_CHANGE;
import static android.view.WindowManager.TRANSIT_CLOSE;
@@ -27,6 +28,7 @@ import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_UNOCCLUDE;
import static android.view.WindowManager.TRANSIT_OLD_TASK_CHANGE_WINDOWING_MODE;
import static android.view.WindowManager.TRANSIT_OLD_TASK_OPEN;
import static android.view.WindowManager.TRANSIT_OPEN;
+import static android.view.WindowManager.TRANSIT_TO_FRONT;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -167,6 +169,69 @@ public class AppTransitionControllerTest extends WindowTestsBase {
assertFalse(mAppTransitionController.isTransitWithinTask(TRANSIT_OLD_TASK_OPEN, task));
}
+
+ @Test
+ public void testIntraWallpaper_open() {
+ final ActivityRecord opening = createActivityRecord(mDisplayContent,
+ WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
+ opening.setVisible(false);
+ final WindowManager.LayoutParams attrOpening = new WindowManager.LayoutParams(
+ TYPE_BASE_APPLICATION);
+ attrOpening.setTitle("WallpaperOpening");
+ attrOpening.flags |= FLAG_SHOW_WALLPAPER;
+ final TestWindowState appWindowOpening = createWindowState(attrOpening, opening);
+ opening.addWindow(appWindowOpening);
+
+ final ActivityRecord closing = createActivityRecord(mDisplayContent,
+ WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
+ final WindowManager.LayoutParams attrClosing = new WindowManager.LayoutParams(
+ TYPE_BASE_APPLICATION);
+ attrOpening.setTitle("WallpaperClosing");
+ attrClosing.flags |= FLAG_SHOW_WALLPAPER;
+ final TestWindowState appWindowClosing = createWindowState(attrClosing, closing);
+ closing.addWindow(appWindowClosing);
+
+ mDisplayContent.prepareAppTransition(TRANSIT_OPEN);
+ mDisplayContent.mOpeningApps.add(opening);
+ mDisplayContent.mClosingApps.add(closing);
+
+ assertEquals(WindowManager.TRANSIT_OLD_WALLPAPER_INTRA_OPEN,
+ AppTransitionController.getTransitCompatType(mDisplayContent.mAppTransition,
+ mDisplayContent.mOpeningApps, mDisplayContent.mClosingApps,
+ appWindowClosing, null, false));
+ }
+
+ @Test
+ public void testIntraWallpaper_toFront() {
+ final ActivityRecord opening = createActivityRecord(mDisplayContent,
+ WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
+ opening.setVisible(false);
+ final WindowManager.LayoutParams attrOpening = new WindowManager.LayoutParams(
+ TYPE_BASE_APPLICATION);
+ attrOpening.setTitle("WallpaperOpening");
+ attrOpening.flags |= FLAG_SHOW_WALLPAPER;
+ final TestWindowState appWindowOpening = createWindowState(attrOpening, opening);
+ opening.addWindow(appWindowOpening);
+
+ final ActivityRecord closing = createActivityRecord(mDisplayContent,
+ WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
+ final WindowManager.LayoutParams attrClosing = new WindowManager.LayoutParams(
+ TYPE_BASE_APPLICATION);
+ attrOpening.setTitle("WallpaperClosing");
+ attrClosing.flags |= FLAG_SHOW_WALLPAPER;
+ final TestWindowState appWindowClosing = createWindowState(attrClosing, closing);
+ closing.addWindow(appWindowClosing);
+
+ mDisplayContent.prepareAppTransition(TRANSIT_TO_FRONT);
+ mDisplayContent.mOpeningApps.add(opening);
+ mDisplayContent.mClosingApps.add(closing);
+
+ assertEquals(WindowManager.TRANSIT_OLD_WALLPAPER_INTRA_OPEN,
+ AppTransitionController.getTransitCompatType(mDisplayContent.mAppTransition,
+ mDisplayContent.mOpeningApps, mDisplayContent.mClosingApps,
+ appWindowClosing, null, false));
+ }
+
@Test
public void testGetAnimationTargets_visibilityAlreadyUpdated() {
// [DisplayContent] -+- [Task1] - [ActivityRecord1] (opening, visible)