Allow low resolution wallpaper crop
If launcher sets desired dimensions smaller than display size,
don't expand them to match display.
Wallpaper will be scaled to fill display (ag/4867989).
Old bugs: b/11332853 and b/11606952
Bug: 113651690
Bug: 74517029
Test: Needs launcher that sets desired dimensions lower than display size (eg. new TVLauncher).
Flash & wipe, after first boot /data/system/users/0/wallpaper
and /data/system/users/0/wallpaper_orig should be 1x1px black bitmaps.
CTS WallpaperManagerTest
Change-Id: Ic54c3cc5986c37cef8eefc4be99a951c1f952460
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index c8bd211..479f427 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -55,7 +55,6 @@
import android.graphics.BitmapFactory;
import android.graphics.BitmapRegionDecoder;
import android.graphics.Color;
-import android.graphics.Point;
import android.graphics.Rect;
import android.os.Binder;
import android.os.Bundle;
@@ -99,7 +98,6 @@
import com.android.server.FgThread;
import com.android.server.SystemService;
-import java.lang.reflect.InvocationTargetException;
import libcore.io.IoUtils;
import org.xmlpull.v1.XmlPullParser;
@@ -120,7 +118,6 @@
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
-import com.android.internal.R;
public class WallpaperManagerService extends IWallpaperManager.Stub
implements IWallpaperManagerService {
@@ -1544,14 +1541,6 @@
return false;
}
- private Point getDefaultDisplaySize() {
- Point p = new Point();
- WindowManager wm = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE);
- Display d = wm.getDefaultDisplay();
- d.getRealSize(p);
- return p;
- }
-
public void setDimensionHints(int width, int height, String callingPackage)
throws RemoteException {
checkPermission(android.Manifest.permission.SET_WALLPAPER_HINTS);
@@ -1564,10 +1553,6 @@
if (width <= 0 || height <= 0) {
throw new IllegalArgumentException("width and height must be > 0");
}
- // Make sure it is at least as large as the display.
- Point displaySize = getDefaultDisplaySize();
- width = Math.max(width, displaySize.x);
- height = Math.max(height, displaySize.y);
if (width != wallpaper.width || height != wallpaper.height) {
wallpaper.width = width;