Merge "Prevent cropHint been overwrite by display size." into rvc-dev am: 418b5e7b8c am: 438d61b92b

Change-Id: I0f2e982748c05062b8d4600022f5693710cc3357
This commit is contained in:
Wei Sheng Shih
2020-04-06 04:52:55 +00:00
committed by Automerger Merge Worker

View File

@@ -1904,7 +1904,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
final WallpaperData fallback = final WallpaperData fallback =
new WallpaperData(wallpaper.userId, getWallpaperDir(wallpaper.userId), new WallpaperData(wallpaper.userId, getWallpaperDir(wallpaper.userId),
WALLPAPER_LOCK_ORIG, WALLPAPER_LOCK_CROP); WALLPAPER_LOCK_ORIG, WALLPAPER_LOCK_CROP);
ensureSaneWallpaperData(fallback, DEFAULT_DISPLAY); ensureSaneWallpaperData(fallback);
bindWallpaperComponentLocked(mImageWallpaper, true, false, fallback, reply); bindWallpaperComponentLocked(mImageWallpaper, true, false, fallback, reply);
mWaitingForUnlock = true; mWaitingForUnlock = true;
} }
@@ -2425,7 +2425,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
if (cropHint == null) { if (cropHint == null) {
cropHint = new Rect(0, 0, 0, 0); cropHint = new Rect(0, 0, 0, 0);
} else { } else {
if (cropHint.isEmpty() if (cropHint.width() < 0 || cropHint.height() < 0
|| cropHint.left < 0 || cropHint.left < 0
|| cropHint.top < 0) { || cropHint.top < 0) {
throw new IllegalArgumentException("Invalid crop rect supplied: " + cropHint); throw new IllegalArgumentException("Invalid crop rect supplied: " + cropHint);
@@ -3077,7 +3077,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
wallpaper = new WallpaperData(userId, getWallpaperDir(userId), wallpaper = new WallpaperData(userId, getWallpaperDir(userId),
WALLPAPER_LOCK_ORIG, WALLPAPER_LOCK_CROP); WALLPAPER_LOCK_ORIG, WALLPAPER_LOCK_CROP);
mLockWallpaperMap.put(userId, wallpaper); mLockWallpaperMap.put(userId, wallpaper);
ensureSaneWallpaperData(wallpaper, DEFAULT_DISPLAY); ensureSaneWallpaperData(wallpaper);
} else { } else {
// sanity fallback: we're in bad shape, but establishing a known // sanity fallback: we're in bad shape, but establishing a known
// valid system+lock WallpaperData will keep us from dying. // valid system+lock WallpaperData will keep us from dying.
@@ -3085,7 +3085,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
wallpaper = new WallpaperData(userId, getWallpaperDir(userId), wallpaper = new WallpaperData(userId, getWallpaperDir(userId),
WALLPAPER, WALLPAPER_CROP); WALLPAPER, WALLPAPER_CROP);
mWallpaperMap.put(userId, wallpaper); mWallpaperMap.put(userId, wallpaper);
ensureSaneWallpaperData(wallpaper, DEFAULT_DISPLAY); ensureSaneWallpaperData(wallpaper);
} }
} }
} }
@@ -3196,10 +3196,10 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
} }
ensureSaneWallpaperDisplaySize(wpdData, DEFAULT_DISPLAY); ensureSaneWallpaperDisplaySize(wpdData, DEFAULT_DISPLAY);
ensureSaneWallpaperData(wallpaper, DEFAULT_DISPLAY); ensureSaneWallpaperData(wallpaper);
WallpaperData lockWallpaper = mLockWallpaperMap.get(userId); WallpaperData lockWallpaper = mLockWallpaperMap.get(userId);
if (lockWallpaper != null) { if (lockWallpaper != null) {
ensureSaneWallpaperData(lockWallpaper, DEFAULT_DISPLAY); ensureSaneWallpaperData(lockWallpaper);
} }
} }
@@ -3215,15 +3215,11 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
} }
} }
private void ensureSaneWallpaperData(WallpaperData wallpaper, int displayId) { private void ensureSaneWallpaperData(WallpaperData wallpaper) {
final DisplayData size = getDisplayDataOrCreate(displayId); // Only overwrite cropHint if the rectangle is invalid.
if (wallpaper.cropHint.width() < 0
if (displayId == DEFAULT_DISPLAY) { || wallpaper.cropHint.height() < 0) {
// crop, if not previously specified wallpaper.cropHint.set(0, 0, 0, 0);
if (wallpaper.cropHint.width() <= 0
|| wallpaper.cropHint.height() <= 0) {
wallpaper.cropHint.set(0, 0, size.mWidth, size.mHeight);
}
} }
} }