summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Marzia Favaro <marziana@google.com> 2023-06-05 13:50:48 +0000
committer Marzia Favaro <marziana@google.com> 2023-06-23 14:00:52 +0000
commitde56d35db1a04587b32b76cfe6dc3721253d25bd (patch)
treef1622dfda72653ff526af9e221d52c02ca7f2afa
parentf5bb534eccb8034a635c0ab2999f9ace0e44a61a (diff)
Correct behaviour of update function to handle multiple wallpapers
Fix: 285843200 Test: manual: open secure camera, take a picture and open it without unlocking; verify that when going back to lockscreen, the home wallpaper is never visible (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:a4eb5d06541c9de432346fb96a58e725a184fb78) Change-Id: Ibe199a6678a27b4c8cbd38cb8085c9296e0a6e13
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java2
-rw-r--r--services/core/java/com/android/server/wm/WallpaperController.java30
2 files changed, 12 insertions, 20 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 2dc133f060ff..e1132db54479 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -1065,7 +1065,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
if (obscuredChanged && w.isVisible() && mWallpaperController.isWallpaperTarget(w)) {
// This is the wallpaper target and its obscured state changed... make sure the
// current wallpaper's visibility has been updated accordingly.
- mWallpaperController.updateWallpaperVisibility();
+ mWallpaperController.updateWallpaperTokens(mDisplayContent.isKeyguardLocked());
}
w.handleWindowMovedIfNeeded();
diff --git a/services/core/java/com/android/server/wm/WallpaperController.java b/services/core/java/com/android/server/wm/WallpaperController.java
index 0cf4e89571b5..00bedcd6d45e 100644
--- a/services/core/java/com/android/server/wm/WallpaperController.java
+++ b/services/core/java/com/android/server/wm/WallpaperController.java
@@ -308,29 +308,12 @@ class WallpaperController {
}
}
- private boolean shouldWallpaperBeVisible(WindowState wallpaperTarget) {
- if (DEBUG_WALLPAPER) {
- Slog.v(TAG, "Wallpaper vis: target " + wallpaperTarget + " prev="
- + mPrevWallpaperTarget);
- }
- return wallpaperTarget != null || mPrevWallpaperTarget != null;
- }
-
boolean isWallpaperTargetAnimating() {
return mWallpaperTarget != null && mWallpaperTarget.isAnimating(TRANSITION | PARENTS)
&& (mWallpaperTarget.mActivityRecord == null
|| !mWallpaperTarget.mActivityRecord.isWaitingForTransitionStart());
}
- void updateWallpaperVisibility() {
- final boolean visible = shouldWallpaperBeVisible(mWallpaperTarget);
-
- for (int curTokenNdx = mWallpaperTokens.size() - 1; curTokenNdx >= 0; curTokenNdx--) {
- final WallpaperWindowToken token = mWallpaperTokens.get(curTokenNdx);
- token.setVisibility(visible);
- }
- }
-
/**
* Make one wallpaper visible, according to {@attr showHome}.
* This is called during the keyguard unlocking transition
@@ -801,11 +784,20 @@ class WallpaperController {
result.setWallpaperTarget(wallpaperTarget);
}
+ public void updateWallpaperTokens(boolean keyguardLocked) {
+ if (DEBUG_WALLPAPER) {
+ Slog.v(TAG, "Wallpaper vis: target " + mWallpaperTarget + " prev="
+ + mPrevWallpaperTarget);
+ }
+ updateWallpaperTokens(mWallpaperTarget != null || mPrevWallpaperTarget != null,
+ keyguardLocked);
+ }
+
/**
* Change the visibility of the top wallpaper to {@param visibility} and hide all the others.
*/
- private void updateWallpaperTokens(boolean visibility, boolean locked) {
- WindowState topWallpaper = mFindResults.getTopWallpaper(locked);
+ private void updateWallpaperTokens(boolean visibility, boolean keyguardLocked) {
+ WindowState topWallpaper = mFindResults.getTopWallpaper(keyguardLocked);
WallpaperWindowToken topWallpaperToken =
topWallpaper == null ? null : topWallpaper.mToken.asWallpaperToken();
for (int curTokenNdx = mWallpaperTokens.size() - 1; curTokenNdx >= 0; curTokenNdx--) {