Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e93cab7 authored by Gen (Daniel) Li's avatar Gen (Daniel) Li Committed by Android (Google) Code Review
Browse files

Merge changes I40cbe107,I8fe43c16 into main

* changes:
  Complete DisabledWallpaperManager's stub APIs.
  Check for wallpaper support before using APIs
parents 7c3ca93d a068f0f2
Loading
Loading
Loading
Loading
+159 −26
Original line number Diff line number Diff line
@@ -15,11 +15,16 @@
 */
package android.app;

import android.annotation.FloatRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.ComponentName;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
@@ -27,9 +32,12 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.ParcelFileDescriptor;
import android.util.Log;
import android.util.SparseArray;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;

/**
 * A no-op implementation of {@link WallpaperManager}.
@@ -54,29 +62,19 @@ final class DisabledWallpaperManager extends WallpaperManager {
    private DisabledWallpaperManager() {
    }

    @Override
    public boolean isWallpaperSupported() {
        return false;
    @UnsupportedAppUsage
    public IWallpaperManager getIWallpaperManager() {
        return unsupported();
    }

    @Override
    public boolean isSetWallpaperAllowed() {
        return false;
    }

    private static <T> T unsupported() {
        if (DEBUG) Log.w(TAG, "unsupported method called; returning null", new Exception());
        return null;
    }

    private static boolean unsupportedBoolean() {
        if (DEBUG) Log.w(TAG, "unsupported method called; returning false", new Exception());
        return false;
    public boolean isLockscreenLiveWallpaperEnabled() {
        return unsupportedBoolean();
    }

    private static int unsupportedInt() {
        if (DEBUG) Log.w(TAG, "unsupported method called; returning -1", new Exception());
        return -1;
    @Override
    public boolean shouldEnableWideColorGamut() {
        return unsupportedBoolean();
    }

    @Override
@@ -121,6 +119,11 @@ final class DisabledWallpaperManager extends WallpaperManager {
        return unsupported();
    }

    @Override
    public boolean wallpaperSupportsWcg(int which) {
        return unsupportedBoolean();
    }

    @Override
    public Bitmap getBitmap() {
        return unsupported();
@@ -131,11 +134,60 @@ final class DisabledWallpaperManager extends WallpaperManager {
        return unsupported();
    }

    @Nullable
    public Bitmap getBitmap(boolean hardware, @SetWallpaperFlags int which) {
        return unsupported();
    }

    @Override
    public Bitmap getBitmapAsUser(int userId, boolean hardware) {
        return unsupported();
    }

    @Override
    public Bitmap getBitmapAsUser(int userId, boolean hardware, @SetWallpaperFlags int which) {
        return unsupported();
    }

    @Override
    public Bitmap getBitmapAsUser(int userId, boolean hardware,
            @SetWallpaperFlags int which, boolean returnDefault) {
        return unsupported();
    }

    @Override
    public Rect peekBitmapDimensions() {
        return unsupported();
    }

    @Override
    public Rect peekBitmapDimensions(@SetWallpaperFlags int which) {
        return unsupported();
    }

    @Nullable
    public Rect peekBitmapDimensions(@SetWallpaperFlags int which, boolean returnDefault) {
        return unsupported();
    }

    @Override
    public List<Rect> getBitmapCrops(@NonNull List<Point> displaySizes,
            @SetWallpaperFlags int which, boolean originalBitmap) {
        return unsupported();
    }

    @Override
    public List<Rect> getBitmapCrops(@NonNull Point bitmapSize, @NonNull List<Point> displaySizes,
            @Nullable Map<Point, Rect> cropHints) {
        return unsupported();
    }

    @Override
    public WallpaperColors getWallpaperColors(@NonNull Bitmap bitmap,
            @Nullable Map<Point, Rect> cropHints) {
        return unsupported();
    }

    @Override
    public ParcelFileDescriptor getWallpaperFile(int which) {
        return unsupported();
@@ -172,6 +224,17 @@ final class DisabledWallpaperManager extends WallpaperManager {
        return unsupported();
    }

    @Override
    public void addOnColorsChangedListener(@NonNull LocalWallpaperColorConsumer callback,
            List<RectF> regions, int which) throws IllegalArgumentException {
        unsupported();
    }

    @Override
    public void removeOnColorsChangedListener(@NonNull LocalWallpaperColorConsumer callback) {
        unsupported();
    }

    @Override
    public ParcelFileDescriptor getWallpaperFile(int which, int userId) {
        return unsupported();
@@ -192,23 +255,22 @@ final class DisabledWallpaperManager extends WallpaperManager {
        return unsupported();
    }

    @Override
    public ParcelFileDescriptor getWallpaperInfoFile() {
    public WallpaperInfo getWallpaperInfoForUser(int userId) {
        return unsupported();
    }

    @Override
    public WallpaperInfo getWallpaperInfoForUser(int userId) {
    public WallpaperInfo getWallpaperInfo(@SetWallpaperFlags int which) {
        return unsupported();
    }

    @Override
    public WallpaperInfo getWallpaperInfo(@SetWallpaperFlags int which) {
    public WallpaperInfo getWallpaperInfo(@SetWallpaperFlags int which, int userId) {
        return unsupported();
    }

    @Override
    public WallpaperInfo getWallpaperInfo(@SetWallpaperFlags int which, int userId) {
    public ParcelFileDescriptor getWallpaperInfoFile() {
        return unsupported();
    }

@@ -264,6 +326,11 @@ final class DisabledWallpaperManager extends WallpaperManager {
        return 0;
    }

    public int setBitmapWithCrops(@Nullable Bitmap fullImage, @NonNull Map<Point, Rect> cropHints,
            boolean allowBackup, @SetWallpaperFlags int which) throws IOException {
        return unsupportedInt();
    }

    @Override
    public void setStream(InputStream bitmapData) throws IOException {
        unsupported();
@@ -283,6 +350,19 @@ final class DisabledWallpaperManager extends WallpaperManager {
        return 0;
    }

    @Override
    public int setStreamWithCrops(InputStream bitmapData, @NonNull Map<Point, Rect> cropHints,
            boolean allowBackup, @SetWallpaperFlags int which) throws IOException {
        return unsupportedInt();
    }


    @Override
    public int setStreamWithCrops(InputStream bitmapData, @NonNull SparseArray<Rect> cropHints,
            boolean allowBackup, @SetWallpaperFlags int which) throws IOException {
        return unsupportedInt();
    }

    @Override
    public boolean hasResourceWallpaper(int resid) {
        return unsupportedBoolean();
@@ -328,11 +408,39 @@ final class DisabledWallpaperManager extends WallpaperManager {
        return unsupportedBoolean();
    }


    @Override
    public void setWallpaperDimAmount(@FloatRange(from = 0f, to = 1f) float dimAmount) {
        unsupported();
    }

    @Override
    public @FloatRange(from = 0f, to = 1f) float getWallpaperDimAmount() {
        return unsupportedInt();
    }

    @Override
    public boolean lockScreenWallpaperExists() {
        return unsupportedBoolean();
    }

    @Override
    public boolean setWallpaperComponent(ComponentName name, int userId) {
        return unsupportedBoolean();
    }

    @Override
    public boolean setWallpaperComponentWithFlags(@NonNull ComponentName name,
            @SetWallpaperFlags int which) {
        return unsupportedBoolean();
    }

    @Override
    public boolean setWallpaperComponentWithFlags(@NonNull ComponentName name,
            @SetWallpaperFlags int which, int userId) {
        return unsupportedBoolean();
    }

    @Override
    public void setWallpaperOffsets(IBinder windowToken, float xOffset, float yOffset) {
        unsupported();
@@ -349,6 +457,21 @@ final class DisabledWallpaperManager extends WallpaperManager {
        unsupported();
    }

    @Override
    public void setWallpaperZoomOut(@NonNull IBinder windowToken, float zoom) {
        unsupported();
    }

    @Override
    public boolean isWallpaperSupported() {
        return false;
    }

    @Override
    public boolean isSetWallpaperAllowed() {
        return false;
    }

    @Override
    public void clearWallpaperOffsets(IBinder windowToken) {
        unsupported();
@@ -369,8 +492,18 @@ final class DisabledWallpaperManager extends WallpaperManager {
        return unsupportedBoolean();
    }

    @Override
    public boolean wallpaperSupportsWcg(int which) {
        return unsupportedBoolean();
    private static <T> T unsupported() {
        if (DEBUG) Log.w(TAG, "unsupported method called; returning null", new Exception());
        return null;
    }

    private static boolean unsupportedBoolean() {
        if (DEBUG) Log.w(TAG, "unsupported method called; returning false", new Exception());
        return false;
    }

    private static int unsupportedInt() {
        if (DEBUG) Log.w(TAG, "unsupported method called; returning -1", new Exception());
        return -1;
    }
}
+2 −0
Original line number Diff line number Diff line
@@ -123,6 +123,8 @@ import java.util.concurrent.TimeUnit;
 * <p> An app can check whether wallpapers are supported for the current user, by calling
 * {@link #isWallpaperSupported()}, and whether setting of wallpapers is allowed, by calling
 * {@link #isSetWallpaperAllowed()}.
 * Any public APIs added to WallpaperManager should have a corresponding stub in
 * {@link DisabledWallpaperManager}.
 */
@SystemService(Context.WALLPAPER_SERVICE)
public class WallpaperManager {
+4 −1
Original line number Diff line number Diff line
@@ -2269,7 +2269,10 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
        // applying the dimming effect twice.
        mUiBgExecutor.execute(() -> {
            float dimAmount = 0f;
            if (mWallpaperManager.lockScreenWallpaperExists()) {
            // Note that access to WallpaperManager APIs should be guarded by a check into
            // WallpaperManager#isWallpaperSupported. Form factors that do not use wallpaper
            // may crash SysUI during improper access. ref: b/355307617
            if (!mWallpaperSupported || mWallpaperManager.lockScreenWallpaperExists()) {
                dimAmount = mWallpaperManager.getWallpaperDimAmount();
            }
            final float scrimDimAmount = dimAmount;