diff options
author | 2024-08-29 12:27:41 +0000 | |
---|---|---|
committer | 2024-08-29 12:27:41 +0000 | |
commit | 44c2a9ffd05627f4161d65a5146588e3fa4382fb (patch) | |
tree | a87cb46c4bb80e2458e310bd96a85d0339f0e2ca | |
parent | dde5de7103f3c9f01be85e8a3a46232802cc9d48 (diff) | |
parent | 1d4ddacc96170091f2e13c6f974610aa517813e0 (diff) |
Merge "Stop WPMS from trying to rebind to a disconnected wallpaper service" into main
-rw-r--r-- | core/java/android/window/flags/wallpaper_manager.aconfig | 10 | ||||
-rw-r--r-- | services/core/java/com/android/server/wallpaper/WallpaperManagerService.java | 14 |
2 files changed, 24 insertions, 0 deletions
diff --git a/core/java/android/window/flags/wallpaper_manager.aconfig b/core/java/android/window/flags/wallpaper_manager.aconfig index 8c6721a7e96a..efacc346ac0a 100644 --- a/core/java/android/window/flags/wallpaper_manager.aconfig +++ b/core/java/android/window/flags/wallpaper_manager.aconfig @@ -49,3 +49,13 @@ flag { purpose: PURPOSE_BUGFIX } } + +flag { + name: "avoid_rebinding_intentionally_disconnected_wallpaper" + namespace: "systemui" + description: "Prevents rebinding with intentionally disconnected wallpaper services." + bug: "332871851" + metadata { + purpose: PURPOSE_BUGFIX + } +} diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java index ba2594abd4d4..f53dda6ee35b 100644 --- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java @@ -42,6 +42,7 @@ import static com.android.server.wallpaper.WallpaperUtils.WALLPAPER_INFO; import static com.android.server.wallpaper.WallpaperUtils.WALLPAPER_LOCK_ORIG; import static com.android.server.wallpaper.WallpaperUtils.getWallpaperDir; import static com.android.server.wallpaper.WallpaperUtils.makeWallpaperIdLocked; +import static com.android.window.flags.Flags.avoidRebindingIntentionallyDisconnectedWallpaper; import static com.android.window.flags.Flags.multiCrop; import static com.android.window.flags.Flags.offloadColorExtraction; @@ -897,6 +898,12 @@ public class WallpaperManagerService extends IWallpaperManager.Stub return; } + if (avoidRebindingIntentionallyDisconnectedWallpaper() + && mWallpaper.connection == null) { + Slog.w(TAG, "Trying to reset an intentionally disconnected wallpaper!"); + return; + } + if (!mWallpaper.wallpaperUpdating && mWallpaper.userId == mCurrentUserId) { Slog.w(TAG, "Wallpaper reconnect timed out for " + mWallpaper.wallpaperComponent + ", reverting to built-in wallpaper!"); @@ -1066,6 +1073,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub if (mWallpaper.wallpaperUpdating) { return; } + + if (avoidRebindingIntentionallyDisconnectedWallpaper() + && mWallpaper.connection == null) { + Slog.w(TAG, "Trying to rebind an intentionally disconnected wallpaper!"); + return; + } + final ComponentName wpService = mWallpaper.wallpaperComponent; // The broadcast of package update could be delayed after service disconnected. Try // to re-bind the service for 10 seconds. |