From ffbf37e61141d0694d47565e60ff713f72c19532 Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Fri, 2 Mar 2018 12:18:50 -0800 Subject: [PATCH] WallpaperColors.fromDrawable Drawable mutation WallpaperColors.fromDrawable should never mutate Drawable bounds Test: tests/app/src/android/app/cts/WallpaperColorsTest.java Change-Id: I7467033c6a4e587b04e60423ceec3404b980cdf2 Fixes: 73506557 --- core/java/android/app/WallpaperColors.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/java/android/app/WallpaperColors.java b/core/java/android/app/WallpaperColors.java index a2864b9d83af..60e8a121dc45 100644 --- a/core/java/android/app/WallpaperColors.java +++ b/core/java/android/app/WallpaperColors.java @@ -21,6 +21,7 @@ import android.annotation.Nullable; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; +import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Parcel; import android.os.Parcelable; @@ -107,6 +108,11 @@ public final class WallpaperColors implements Parcelable { * @param drawable Source where to extract from. */ public static WallpaperColors fromDrawable(Drawable drawable) { + if (drawable == null) { + throw new IllegalArgumentException("Drawable cannot be null"); + } + + Rect initialBounds = drawable.copyBounds(); int width = drawable.getIntrinsicWidth(); int height = drawable.getIntrinsicHeight(); @@ -126,6 +132,7 @@ public final class WallpaperColors implements Parcelable { final WallpaperColors colors = WallpaperColors.fromBitmap(bitmap); bitmap.recycle(); + drawable.setBounds(initialBounds); return colors; } -- 2.11.0