diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 2 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java | 16 |
2 files changed, 17 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index d7c85d4c7853..bcf05a6f8fe1 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -2082,7 +2082,7 @@ public class WindowManagerService extends IWindowManager.Stub if (win.mAttrs.type == TYPE_WALLPAPER) { dc.mWallpaperController.clearLastWallpaperTimeoutTime(); dc.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER; - } else if (win.hasWallpaper()) { + } else if (dc.mWallpaperController.isWallpaperTarget(win)) { dc.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER; } diff --git a/services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java index 996382782b84..fba4ff1f1c25 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java @@ -246,6 +246,22 @@ public class WallpaperControllerTests extends WindowTestsBase { assertEquals(otherWindowInitialZoom, wallpaperWindow.mWallpaperZoomOut, .01f); } + @Test + public void testUpdateWallpaperTarget() { + final DisplayContent dc = mDisplayContent; + final WindowState homeWin = createWallpaperTargetWindow(dc); + final WindowState appWin = createWindow(null, TYPE_BASE_APPLICATION, "app"); + final RecentsAnimationController recentsController = mock(RecentsAnimationController.class); + doReturn(true).when(recentsController).isWallpaperVisible(eq(appWin)); + mWm.setRecentsAnimationController(recentsController); + + dc.mWallpaperController.adjustWallpaperWindows(); + assertEquals(appWin, dc.mWallpaperController.getWallpaperTarget()); + // The wallpaper target is gone, so it should adjust to the next target. + appWin.removeImmediately(); + assertEquals(homeWin, dc.mWallpaperController.getWallpaperTarget()); + } + /** * Tests that the windowing mode of the wallpaper window must always be fullscreen. */ |