Merge "Only link rotation transform of visible activity to wallpaper" into rvc-dev
This commit is contained in:
@@ -123,19 +123,20 @@ class WallpaperWindowToken extends WindowToken {
|
||||
}
|
||||
|
||||
final WallpaperController wallpaperController = mDisplayContent.mWallpaperController;
|
||||
final WindowState wallpaperTarget = wallpaperController.getWallpaperTarget();
|
||||
|
||||
if (visible) {
|
||||
final WindowState wallpaperTarget = wallpaperController.getWallpaperTarget();
|
||||
if (visible && wallpaperTarget != null) {
|
||||
final RecentsAnimationController recentsAnimationController =
|
||||
mWmService.getRecentsAnimationController();
|
||||
if (wallpaperTarget != null
|
||||
&& recentsAnimationController != null
|
||||
if (recentsAnimationController != null
|
||||
&& recentsAnimationController.isAnimatingTask(wallpaperTarget.getTask())) {
|
||||
// If the Recents animation is running, and the wallpaper target is the animating
|
||||
// task we want the wallpaper to be rotated in the same orientation as the
|
||||
// RecentsAnimation's target (e.g the launcher)
|
||||
recentsAnimationController.linkFixedRotationTransformIfNeeded(this);
|
||||
} else if (wallpaperTarget != null
|
||||
} else if ((wallpaperTarget.mActivityRecord == null
|
||||
// Ignore invisible activity because it may be moving to background.
|
||||
|| wallpaperTarget.mActivityRecord.mVisibleRequested)
|
||||
&& wallpaperTarget.mToken.hasFixedRotationTransform()) {
|
||||
// If the wallpaper target has a fixed rotation, we want the wallpaper to follow its
|
||||
// rotation
|
||||
|
||||
@@ -271,6 +271,29 @@ public class WallpaperControllerTests extends WindowTestsBase {
|
||||
assertEquals(WINDOWING_MODE_FULLSCREEN, token.getWindowingMode());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFixedRotationRecentsAnimatingTask() {
|
||||
final RecentsAnimationController recentsController = mock(RecentsAnimationController.class);
|
||||
doReturn(true).when(recentsController).isWallpaperVisible(eq(mAppWindow));
|
||||
mWm.setRecentsAnimationController(recentsController);
|
||||
|
||||
mAppWindow.mActivityRecord.applyFixedRotationTransform(mDisplayContent.getDisplayInfo(),
|
||||
mDisplayContent.mDisplayFrames, mDisplayContent.getConfiguration());
|
||||
mAppWindow.mActivityRecord.mVisibleRequested = true;
|
||||
mDisplayContent.mWallpaperController.adjustWallpaperWindows();
|
||||
|
||||
assertEquals(mAppWindow, mDisplayContent.mWallpaperController.getWallpaperTarget());
|
||||
// Wallpaper should link the transform of its target.
|
||||
assertTrue(mAppWindow.mActivityRecord.hasFixedRotationTransform());
|
||||
|
||||
mAppWindow.mActivityRecord.finishFixedRotationTransform();
|
||||
// Invisible requested activity should not share its rotation transform.
|
||||
mAppWindow.mActivityRecord.mVisibleRequested = false;
|
||||
mDisplayContent.mWallpaperController.adjustWallpaperWindows();
|
||||
|
||||
assertFalse(mAppWindow.mActivityRecord.hasFixedRotationTransform());
|
||||
}
|
||||
|
||||
private WindowState createWallpaperTargetWindow(DisplayContent dc) {
|
||||
final ActivityRecord homeActivity = new ActivityTestsBase.ActivityBuilder(mWm.mAtmService)
|
||||
.setStack(dc.getDefaultTaskDisplayArea().getRootHomeTask())
|
||||
|
||||
Reference in New Issue
Block a user