Merge "WallpaperColors hint computation" into pi-dev

This commit is contained in:
TreeHugger Robot
2018-03-06 22:16:50 +00:00
committed by Android (Google) Code Review
3 changed files with 24 additions and 2 deletions

View File

@@ -144,6 +144,13 @@ public final class WallpaperColors implements Parcelable {
* @param bitmap Source where to extract from.
*/
public static WallpaperColors fromBitmap(@NonNull Bitmap bitmap) {
return fromBitmap(bitmap, false /* computeHints */);
}
/**
* @hide
*/
public static WallpaperColors fromBitmap(@NonNull Bitmap bitmap, boolean computeHints) {
if (bitmap == null) {
throw new IllegalArgumentException("Bitmap can't be null");
}
@@ -193,7 +200,7 @@ public final class WallpaperColors implements Parcelable {
}
}
int hints = calculateDarkHints(bitmap);
int hints = computeHints ? calculateDarkHints(bitmap) : 0;
if (shouldRecycle) {
bitmap.recycle();

View File

@@ -458,7 +458,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
if (cropFile != null) {
Bitmap bitmap = BitmapFactory.decodeFile(cropFile);
if (bitmap != null) {
colors = WallpaperColors.fromBitmap(bitmap);
colors = WallpaperColors.fromBitmap(bitmap, true /* computeHints */);
bitmap.recycle();
}
}

View File

@@ -20,6 +20,8 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import android.app.WallpaperColors;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
@@ -85,4 +87,17 @@ public class WallpaperServiceTests {
assertEquals("OnComputeColors should have been deferred.",
0, eventCountdown.getCount());
}
@Test
public void testFromDrawableTest_doesntComputeHints() {
WallpaperColors wallpaperColors = WallpaperColors.fromDrawable(
new ColorDrawable(Color.BLACK));
assertEquals("WallpaperColors should not support dark theme.", 0,
wallpaperColors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_THEME);
wallpaperColors = WallpaperColors.fromDrawable(
new ColorDrawable(Color.WHITE));
assertEquals("WallpaperColors should not support dark text.", 0,
wallpaperColors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_TEXT);
}
}