summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Issei Suzuki <issei@google.com> 2021-07-21 08:39:32 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-07-21 08:39:32 +0000
commit398b9a8173f52d8025f010bbbce4ac07db5072dd (patch)
tree5b59c588620d22abdc0fec6529eb383e389acdfc
parent607cadc918bb82985f86693fe66a1d0ac65bb6b9 (diff)
parent0247eefe9d56990ba0e801dbf385eaa395b51dfd (diff)
Merge "Use intra wallaper transition animation for move to front/back transition." into sc-dev
-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)