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

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

Properly send the reply in clearWallpaperComponentLocked

This fixes an error in ag/24482229, causing the callback not to be sent
in the case a clear is triggered because the wallpaper package does not
exist on the device anymore.

Bug: 273443374
Test: atest WallpaperManagerTest
Change-Id: Iafba8ac7dfbc2d85f45118a6ac4ff75b64bb5b85
parent 394d0694
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -2092,8 +2092,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                finalWhich = which;
            }

            boolean success = withCleanCallingIdentity(() -> setWallpaperComponent(
                    component, callingPackage, finalWhich, userId));
            boolean success = withCleanCallingIdentity(() -> setWallpaperComponentInternal(
                    component, callingPackage, finalWhich, userId, reply));
            if (success) return;
        } catch (IllegalArgumentException e1) {
            e = e1;
@@ -2105,6 +2105,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
        // wallpaper.
        Slog.e(TAG, "Default wallpaper component not found!", e);
        withCleanCallingIdentity(() -> clearWallpaperComponentLocked(wallpaper));
        if (reply != null) {
            try {
                reply.sendResult(null);
            } catch (RemoteException e1) {
                Slog.w(TAG, "Failed to notify callback after wallpaper clear", e1);
            }
        }
    }

    private void clearWallpaperLocked(int which, int userId, IRemoteCallback reply) {
@@ -3293,12 +3300,6 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
        }
    }

    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, IRemoteCallback reply) {
        if (DEBUG) {