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

Commit d997a7d9 authored by Aurélien Pomini's avatar Aurélien Pomini
Browse files

Reland "use new clearWallpaperLocked method everywhere"

Reland of ag/23728650

The old clear method had a lot of references. Replace these references
with a call to the new clear method. Now, everything that tries to clear
the wallpaper will call setWallpaperComponent(..) and not directly
bindWallpaperComponentLocked.

Flag: lockscreen live wallpaper
Bug: 273443374
Test: atest WallpaperManagerTest
Change-Id: I7c9f9a902d57205b5f54d005c014fdbe00cfc9bd
parent 3315016c
Loading
Loading
Loading
Loading
+20 −11
Original line number Diff line number Diff line
@@ -2000,12 +2000,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
            WallpaperData wallpaper, IRemoteCallback reply, ServiceInfo serviceInfo) {

        if (serviceInfo == null) {
            if (wallpaper.mWhich == (FLAG_LOCK | FLAG_SYSTEM)) {
                clearWallpaperLocked(FLAG_SYSTEM, wallpaper.userId, null);
                clearWallpaperLocked(FLAG_LOCK, wallpaper.userId, reply);
            } else {
            clearWallpaperLocked(wallpaper.mWhich, wallpaper.userId, reply);
            }
            return;
        }
        Slog.w(TAG, "Wallpaper isn't direct boot aware; using fallback until unlocked");
@@ -2037,7 +2032,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
        WallpaperData data = null;
        synchronized (mLock) {
            if (mIsLockscreenLiveWallpaperEnabled) {
                clearWallpaperLocked(callingPackage, which, userId);
                clearWallpaperLocked(callingPackage, which, userId, null);
            } else {
                clearWallpaperLocked(which, userId, null);
            }
@@ -2057,7 +2052,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
        }
    }

    private void clearWallpaperLocked(String callingPackage, int which, int userId) {
    private void clearWallpaperLocked(String callingPackage, int which, int userId,
            IRemoteCallback reply) {

        // Might need to bring it in the first time to establish our rewrite
        if (!mWallpaperMap.contains(userId)) {
@@ -2111,8 +2107,14 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
        withCleanCallingIdentity(() -> clearWallpaperComponentLocked(wallpaper));
    }

    // TODO(b/266818039) remove this version of the method
    private void clearWallpaperLocked(int which, int userId, IRemoteCallback reply) {

        if (mIsLockscreenLiveWallpaperEnabled) {
            String callingPackage = mPackageManagerInternal.getNameForUid(getCallingUid());
            clearWallpaperLocked(callingPackage, which, userId, reply);
            return;
        }

        if (which != FLAG_SYSTEM && which != FLAG_LOCK) {
            throw new IllegalArgumentException("Must specify exactly one kind of wallpaper to clear");
        }
@@ -3284,15 +3286,21 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
    boolean setWallpaperComponent(ComponentName name, String callingPackage,
            @SetWallpaperFlags int which, int userId) {
        if (mIsLockscreenLiveWallpaperEnabled) {
            return setWallpaperComponentInternal(name, callingPackage, which, userId);
            return setWallpaperComponentInternal(name, callingPackage, which, userId, null);
        } else {
            setWallpaperComponentInternalLegacy(name, callingPackage, which, userId);
            return true;
        }
    }

    private boolean setWallpaperComponent(ComponentName name, @SetWallpaperFlags int which,
            int userId) {
        String callingPackage = mPackageManagerInternal.getNameForUid(getCallingUid());
        return setWallpaperComponentInternal(name, callingPackage, which, userId, null);
    }

    private boolean setWallpaperComponentInternal(ComponentName name, String callingPackage,
            @SetWallpaperFlags int which, int userIdIn) {
            @SetWallpaperFlags int which, int userIdIn, IRemoteCallback reply) {
        if (DEBUG) {
            Slog.v(TAG, "Setting new live wallpaper: which=" + which + ", component: " + name);
        }
@@ -3341,6 +3349,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                            Slog.d(TAG, "publish system wallpaper changed!");
                        }
                        liveSync.complete();
                        if (reply != null) reply.sendResult(null);
                    }
                };