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

Commit 21f0d639 authored by Chris Poultney's avatar Chris Poultney
Browse files

Add accessor methods for current wallpaper component

Bug: 347235611
Test: TBD
Flag: EXEMPT refactor
Change-Id: Iae9fd794f1e068ed742f95d19ff695c758f64a8b
parent d720a4e3
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -78,7 +78,7 @@ class WallpaperData {
    /**
     * The component name of the currently set live wallpaper.
     */
    ComponentName wallpaperComponent;
    private ComponentName mWallpaperComponent;

    // TODO(b/347235611) Remove this field
    /**
@@ -195,7 +195,7 @@ class WallpaperData {
     */
    WallpaperData(WallpaperData source) {
        this.userId = source.userId;
        this.wallpaperComponent = source.wallpaperComponent;
        this.mWallpaperComponent = source.mWallpaperComponent;
        this.mWhich = source.mWhich;
        this.wallpaperId = source.wallpaperId;
        this.cropHint.set(source.cropHint);
@@ -230,6 +230,14 @@ class WallpaperData {
        return result;
    }

    ComponentName getComponent() {
        return mWallpaperComponent;
    }

    void setComponent(ComponentName componentName) {
        this.mWallpaperComponent = componentName;
    }

    @Override
    public String toString() {
        StringBuilder out = new StringBuilder(defaultString(this));
+11 −11
Original line number Diff line number Diff line
@@ -189,13 +189,13 @@ public class WallpaperDataParser {

                        String comp = parser.getAttributeValue(null, "component");
                        if (removeNextWallpaperComponent()) {
                            wallpaperToParse.wallpaperComponent = comp != null
                            wallpaperToParse.setComponent(comp != null
                                    ? ComponentName.unflattenFromString(comp)
                                    : null;
                            if (wallpaperToParse.wallpaperComponent == null
                                    || "android".equals(wallpaperToParse.wallpaperComponent
                                    : null);
                            if (wallpaperToParse.getComponent() == null
                                    || "android".equals(wallpaperToParse.getComponent()
                                    .getPackageName())) {
                                wallpaperToParse.wallpaperComponent = mImageWallpaper;
                                wallpaperToParse.setComponent(mImageWallpaper);
                            }
                        } else {
                            wallpaperToParse.nextWallpaperComponent = comp != null
@@ -219,7 +219,7 @@ public class WallpaperDataParser {
                            Slog.v(TAG, "primaryColors:" + wallpaper.primaryColors);
                            Slog.v(TAG, "mName:" + wallpaper.name);
                            if (removeNextWallpaperComponent()) {
                                Slog.v(TAG, "mWallpaperComponent:" + wallpaper.wallpaperComponent);
                                Slog.v(TAG, "mWallpaperComponent:" + wallpaper.getComponent());
                            } else {
                                Slog.v(TAG, "mNextWallpaperComponent:"
                                        + wallpaper.nextWallpaperComponent);
@@ -340,7 +340,7 @@ public class WallpaperDataParser {
                getAttributeInt(parser, "totalCropTop", 0),
                getAttributeInt(parser, "totalCropRight", 0),
                getAttributeInt(parser, "totalCropBottom", 0));
        ComponentName componentName = removeNextWallpaperComponent() ? wallpaper.wallpaperComponent
        ComponentName componentName = removeNextWallpaperComponent() ? wallpaper.getComponent()
                : wallpaper.nextWallpaperComponent;
        if (multiCrop() && mImageWallpaper.equals(componentName)) {
            wallpaper.mCropHints = new SparseArray<>();
@@ -480,7 +480,7 @@ public class WallpaperDataParser {
        out.startTag(null, tag);
        out.attributeInt(null, "id", wallpaper.wallpaperId);

        if (multiCrop() && mImageWallpaper.equals(wallpaper.wallpaperComponent)) {
        if (multiCrop() && mImageWallpaper.equals(wallpaper.getComponent())) {
            if (wallpaper.mCropHints == null) {
                Slog.e(TAG, "cropHints should not be null when saved");
                wallpaper.mCropHints = new SparseArray<>();
@@ -580,10 +580,10 @@ public class WallpaperDataParser {
        }

        out.attribute(null, "name", wallpaper.name);
        if (wallpaper.wallpaperComponent != null
                && !wallpaper.wallpaperComponent.equals(mImageWallpaper)) {
        if (wallpaper.getComponent() != null
                && !wallpaper.getComponent().equals(mImageWallpaper)) {
            out.attribute(null, "component",
                    wallpaper.wallpaperComponent.flattenToShortString());
                    wallpaper.getComponent().flattenToShortString());
        }

        if (wallpaper.allowBackup) {
+46 −47
Original line number Diff line number Diff line
@@ -276,7 +276,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
            final boolean isMigration = moved && lockWallpaperChanged;
            final boolean isRestore = moved && !isMigration;
            final boolean isAppliedToLock = (wallpaper.mWhich & FLAG_LOCK) != 0;
            final boolean needsUpdate = wallpaper.wallpaperComponent == null
            final boolean needsUpdate = wallpaper.getComponent() == null
                    || event != CLOSE_WRITE // includes the MOVED_TO case
                    || wallpaper.imageWallpaperPending;

@@ -527,7 +527,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
     * @return true unless the wallpaper changed during the color computation
     */
    private boolean extractColors(WallpaperData wallpaper) {
        if (offloadColorExtraction()) return !mImageWallpaper.equals(wallpaper.wallpaperComponent);
        if (offloadColorExtraction()) return !mImageWallpaper.equals(wallpaper.getComponent());
        String cropFile = null;
        boolean defaultImageWallpaper = false;
        int wallpaperId;
@@ -550,8 +550,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub

        synchronized (mLock) {
            // Not having a wallpaperComponent means it's a lock screen wallpaper.
            final boolean imageWallpaper = mImageWallpaper.equals(wallpaper.wallpaperComponent)
                    || wallpaper.wallpaperComponent == null;
            final boolean imageWallpaper = mImageWallpaper.equals(wallpaper.getComponent())
                    || wallpaper.getComponent() == null;
            if (imageWallpaper && wallpaper.getCropFile().exists()) {
                cropFile = wallpaper.getCropFile().getAbsolutePath();
            } else if (imageWallpaper && !wallpaper.cropExists() && !wallpaper.sourceExists()) {
@@ -824,13 +824,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                return;
            }
            TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG);
            t.traceBegin("WPMS.connectLocked-" + wallpaper.wallpaperComponent);
            t.traceBegin("WPMS.connectLocked-" + wallpaper.getComponent());
            if (DEBUG) Slog.v(TAG, "Adding window token: " + mToken);
            mWindowManagerInternal.addWindowToken(mToken, TYPE_WALLPAPER, mDisplayId,
                    null /* options */);
            mWindowManagerInternal.setWallpaperShowWhenLocked(
                    mToken, (wallpaper.mWhich & FLAG_LOCK) != 0);
            if (multiCrop() && mImageWallpaper.equals(wallpaper.wallpaperComponent)) {
            if (multiCrop() && mImageWallpaper.equals(wallpaper.getComponent())) {
                mWindowManagerInternal.setWallpaperCropHints(mToken,
                        mWallpaperCropper.getRelativeCropHints(wallpaper));
            } else {
@@ -906,7 +906,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                }

                if (!mWallpaper.wallpaperUpdating && mWallpaper.userId == mCurrentUserId) {
                    Slog.w(TAG, "Wallpaper reconnect timed out for " + mWallpaper.wallpaperComponent
                    Slog.w(TAG, "Wallpaper reconnect timed out for " + mWallpaper.getComponent()
                            + ", reverting to built-in wallpaper!");
                    clearWallpaperLocked(mWallpaper.mWhich, mWallpaper.userId, false, null);
                }
@@ -1035,9 +1035,9 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
        public void onServiceDisconnected(ComponentName name) {
            synchronized (mLock) {
                Slog.w(TAG, "Wallpaper service gone: " + name);
                if (!Objects.equals(name, mWallpaper.wallpaperComponent)) {
                if (!Objects.equals(name, mWallpaper.getComponent())) {
                    Slog.e(TAG, "Does not match expected wallpaper component "
                            + mWallpaper.wallpaperComponent);
                            + mWallpaper.getComponent());
                }
                mService = null;
                forEachDisplayConnector(connector -> connector.mEngine = null);
@@ -1065,7 +1065,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
            fgHandler.postDelayed(mResetRunnable, WALLPAPER_RECONNECT_TIMEOUT_MS);
            if (DEBUG_LIVE) {
                Slog.i(TAG,
                        "Started wallpaper reconnect timeout for " + mWallpaper.wallpaperComponent);
                        "Started wallpaper reconnect timeout for " + mWallpaper.getComponent());
            }
        }

@@ -1081,7 +1081,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                    return;
                }

                final ComponentName wpService = mWallpaper.wallpaperComponent;
                final ComponentName wpService = mWallpaper.getComponent();
                // The broadcast of package update could be delayed after service disconnected. Try
                // to re-bind the service for 10 seconds.
                mWallpaper.mBindSource = BindSource.CONNECTION_TRY_TO_REBIND;
@@ -1110,7 +1110,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                // The wallpaper disappeared.  If this isn't a system-default one, track
                // crashes and fall back to default if it continues to misbehave.
                if (this == mWallpaper.connection) {
                    final ComponentName wpService = mWallpaper.wallpaperComponent;
                    final ComponentName wpService = mWallpaper.getComponent();
                    if (!mWallpaper.wallpaperUpdating
                            && mWallpaper.userId == mCurrentUserId
                            && !Objects.equals(mDefaultWallpaperComponent, wpService)
@@ -1188,7 +1188,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
            synchronized (mLock) {
                // Do not broadcast changes on ImageWallpaper since it's handled
                // internally by this class.
                boolean isImageWallpaper = mImageWallpaper.equals(mWallpaper.wallpaperComponent);
                boolean isImageWallpaper = mImageWallpaper.equals(mWallpaper.getComponent());
                if (isImageWallpaper && (!offloadColorExtraction() || primaryColors == null)) {
                    return;
                }
@@ -1303,7 +1303,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                if (mNewWallpaper.mWhich == FLAG_SYSTEM) {
                    // New wp is system only, so old system+lock is now lock only
                    final boolean originalIsStatic = mImageWallpaper.equals(
                            mOriginalSystem.wallpaperComponent);
                            mOriginalSystem.getComponent());
                    if (originalIsStatic) {
                        // Static wp: image file rename has already been tried via
                        // migrateStaticSystemToLockWallpaperLocked() and added to the lock wp map
@@ -1314,8 +1314,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                            if (DEBUG) {
                                Slog.v(TAG, "static system+lock to system success");
                            }
                            lockWp.wallpaperComponent =
                                    mOriginalSystem.wallpaperComponent;
                            lockWp.setComponent(mOriginalSystem.getComponent());
                            lockWp.connection = mOriginalSystem.connection;
                            lockWp.connection.mWallpaper = lockWp;
                            mOriginalSystem.mWhich = FLAG_LOCK;
@@ -1376,7 +1375,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                    return;
                }
                for (WallpaperData wallpaper: getWallpapers()) {
                    final ComponentName wpService = wallpaper.wallpaperComponent;
                    final ComponentName wpService = wallpaper.getComponent();
                    if (wpService != null && wpService.getPackageName().equals(packageName)) {
                        if (DEBUG_LIVE) {
                            Slog.i(TAG, "Wallpaper " + wpService + " update has finished");
@@ -1402,8 +1401,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                    return;
                }
                for (WallpaperData wallpaper: getWallpapers()) {
                    if (wallpaper.wallpaperComponent != null
                            && wallpaper.wallpaperComponent.getPackageName().equals(packageName)) {
                    if (wallpaper.getComponent() != null
                            && wallpaper.getComponent().getPackageName().equals(packageName)) {
                        doPackagesChangedLocked(true, wallpaper);
                    }
                }
@@ -1417,10 +1416,10 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                    return;
                }
                for (WallpaperData wallpaper: getWallpapers()) {
                    if (wallpaper.wallpaperComponent != null
                            && wallpaper.wallpaperComponent.getPackageName().equals(packageName)) {
                    if (wallpaper.getComponent() != null
                            && wallpaper.getComponent().getPackageName().equals(packageName)) {
                        if (DEBUG_LIVE) {
                            Slog.i(TAG, "Wallpaper service " + wallpaper.wallpaperComponent
                            Slog.i(TAG, "Wallpaper service " + wallpaper.getComponent()
                                    + " is updating");
                        }
                        wallpaper.wallpaperUpdating = true;
@@ -1462,15 +1461,15 @@ public class WallpaperManagerService extends IWallpaperManager.Stub

        boolean doPackagesChangedLocked(boolean doit, WallpaperData wallpaper) {
            boolean changed = false;
            if (wallpaper.wallpaperComponent != null) {
                int change = isPackageDisappearing(wallpaper.wallpaperComponent
            if (wallpaper.getComponent() != null) {
                int change = isPackageDisappearing(wallpaper.getComponent()
                        .getPackageName());
                if (change == PACKAGE_PERMANENT_CHANGE
                        || change == PACKAGE_TEMPORARY_CHANGE) {
                    changed = true;
                    if (doit) {
                        Slog.w(TAG, "Wallpaper uninstalled, removing: "
                                + wallpaper.wallpaperComponent);
                                + wallpaper.getComponent());
                        clearWallpaperLocked(wallpaper.mWhich, wallpaper.userId, false, null);
                    }
                }
@@ -1485,15 +1484,15 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                    }
                }
            }
            if (wallpaper.wallpaperComponent != null
                    && isPackageModified(wallpaper.wallpaperComponent.getPackageName())) {
            if (wallpaper.getComponent() != null
                    && isPackageModified(wallpaper.getComponent().getPackageName())) {
                try {
                    mContext.getPackageManager().getServiceInfo(wallpaper.wallpaperComponent,
                    mContext.getPackageManager().getServiceInfo(wallpaper.getComponent(),
                            PackageManager.MATCH_DIRECT_BOOT_AWARE
                                    | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
                } catch (NameNotFoundException e) {
                    Slog.w(TAG, "Wallpaper component gone, removing: "
                            + wallpaper.wallpaperComponent);
                            + wallpaper.getComponent());
                    clearWallpaperLocked(wallpaper.mWhich, wallpaper.userId, false, null);
                }
            }
@@ -1636,8 +1635,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
        // sure we have something to render
        boolean isImageComponent;
        if (removeNextWallpaperComponent()) {
            isImageComponent = wallpaper.wallpaperComponent == null
                    || mImageWallpaper.equals(wallpaper.wallpaperComponent);
            isImageComponent = wallpaper.getComponent() == null
                    || mImageWallpaper.equals(wallpaper.getComponent());
        } else {
            isImageComponent = mImageWallpaper.equals(wallpaper.nextWallpaperComponent);
        }
@@ -1892,10 +1891,10 @@ public class WallpaperManagerService extends IWallpaperManager.Stub

            final ComponentName cname;
            if (removeNextWallpaperComponent()) {
                cname = wallpaper.wallpaperComponent;
                cname = wallpaper.getComponent();
            } else {
                cname = (wallpaper.wallpaperComponent != null)
                        ? wallpaper.wallpaperComponent : wallpaper.nextWallpaperComponent;
                cname = (wallpaper.getComponent() != null)
                        ? wallpaper.getComponent() : wallpaper.nextWallpaperComponent;
            }
            if (!bindWallpaperComponentLocked(cname, true, false, wallpaper, reply)) {
                // We failed to bind the desired wallpaper, but that might
@@ -1927,7 +1926,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
            // We might end up persisting the current wallpaper data
            // while locked, so pretend like the component was actually
            // bound into place
            wallpaper.wallpaperComponent = wallpaper.nextWallpaperComponent;
            wallpaper.setComponent(wallpaper.nextWallpaperComponent);
        }
        final WallpaperData fallback = new WallpaperData(wallpaper.userId, wallpaper.mWhich);

@@ -2004,7 +2003,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub

            // lock only case: set the system wallpaper component to both screens
            if (which == FLAG_LOCK) {
                component = wallpaper.wallpaperComponent;
                component = wallpaper.getComponent();
                finalWhich = FLAG_LOCK | FLAG_SYSTEM;
            } else {
                component = null;
@@ -2304,7 +2303,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
            checkPermission(READ_WALLPAPER_INTERNAL);
            WallpaperData wallpaper = (which == FLAG_LOCK) ? mLockWallpaperMap.get(userId)
                    : mWallpaperMap.get(userId);
            if (wallpaper == null || !mImageWallpaper.equals(wallpaper.wallpaperComponent)) {
            if (wallpaper == null || !mImageWallpaper.equals(wallpaper.getComponent())) {
                return null;
            }
            SparseArray<Rect> relativeSuggestedCrops =
@@ -2738,7 +2737,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
            WallpaperData wallpaperData = (which == FLAG_LOCK ? mLockWallpaperMap : mWallpaperMap)
                    .get(mCurrentUserId);
            if (wallpaperData == null) return false;
            return mImageWallpaper.equals(wallpaperData.wallpaperComponent);
            return mImageWallpaper.equals(wallpaperData.getComponent());
        }
    }

@@ -2974,7 +2973,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
            final WallpaperData originalSystemWallpaper = mWallpaperMap.get(userId);
            final boolean systemIsStatic =
                    originalSystemWallpaper != null && mImageWallpaper.equals(
                            originalSystemWallpaper.wallpaperComponent);
                            originalSystemWallpaper.getComponent());
            final boolean systemIsBoth = mLockWallpaperMap.get(userId) == null;

            /* If we're setting system but not lock, and lock is currently sharing the system
@@ -3168,7 +3167,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                throw new IllegalStateException("Wallpaper not yet initialized for user " + userId);
            }
            final boolean systemIsStatic = mImageWallpaper.equals(
                    originalSystemWallpaper.wallpaperComponent);
                    originalSystemWallpaper.getComponent());
            final boolean systemIsBoth = mLockWallpaperMap.get(userId) == null;

            if (which == FLAG_SYSTEM && systemIsBoth && systemIsStatic) {
@@ -3190,7 +3189,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                        liveSync = new WallpaperDestinationChangeHandler(
                        newWallpaper);
                boolean same = changingToSame(name, newWallpaper.connection,
                        newWallpaper.wallpaperComponent);
                        newWallpaper.getComponent());

                /*
                 * If we have a shared system+lock wallpaper, and we reapply the same wallpaper
@@ -3221,7 +3220,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                        }
                    }
                    boolean lockBitmapCleared = false;
                    if (!mImageWallpaper.equals(newWallpaper.wallpaperComponent)) {
                    if (!mImageWallpaper.equals(newWallpaper.getComponent())) {
                        clearWallpaperBitmaps(newWallpaper);
                        lockBitmapCleared = newWallpaper.mWhich == FLAG_LOCK;
                    }
@@ -3302,7 +3301,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
        }
        // Has the component changed?
        if (!force && changingToSame(componentName, wallpaper.connection,
                wallpaper.wallpaperComponent)) {
                wallpaper.getComponent())) {
            try {
                if (DEBUG_LIVE) {
                    Slog.v(TAG, "Changing to the same component, ignoring");
@@ -3439,7 +3438,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
                return false;
            }
            maybeDetachLastWallpapers(wallpaper);
            wallpaper.wallpaperComponent = componentName;
            wallpaper.setComponent(componentName);
            wallpaper.connection = newConn;
            newConn.mReply = reply;
            updateCurrentWallpapers(wallpaper);
@@ -3564,7 +3563,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
    }

    private void clearWallpaperComponentLocked(WallpaperData wallpaper) {
        wallpaper.wallpaperComponent = null;
        wallpaper.setComponent(null);
        detachWallpaperLocked(wallpaper);
    }

@@ -3809,7 +3808,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
            wallpaper.wallpaperId = makeWallpaperIdLocked();    // always bump id at restore
            wallpaper.allowBackup = true;   // by definition if it was restored
            ComponentName componentName =
                    removeNextWallpaperComponent() ? wallpaper.wallpaperComponent
                    removeNextWallpaperComponent() ? wallpaper.getComponent()
                            : wallpaper.nextWallpaperComponent;
            if (componentName != null && !componentName.equals(mImageWallpaper)) {
                wallpaper.mBindSource = BindSource.RESTORE_SETTINGS_LIVE_SUCCESS;
@@ -3885,7 +3884,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
        if (multiCrop()) pw.print("  mCropHints="); pw.println(wallpaper.mCropHints);
        pw.print("  mName=");  pw.println(wallpaper.name);
        pw.print("  mAllowBackup="); pw.println(wallpaper.allowBackup);
        pw.print("  mWallpaperComponent="); pw.println(wallpaper.wallpaperComponent);
        pw.print("  mWallpaperComponent="); pw.println(wallpaper.getComponent());
        pw.print("  mWallpaperDimAmount="); pw.println(wallpaper.mWallpaperDimAmount);
        pw.print("  isColorExtracted="); pw.println(wallpaper.mIsColorExtractedFromDim);
        pw.println("  mUidToDimAmount:");
+2 −2
Original line number Diff line number Diff line
@@ -290,7 +290,7 @@ public class WallpaperManagerServiceTests {

        final WallpaperData fallbackData = mService.mFallbackWallpaper;
        assertEquals("Fallback wallpaper component should be ImageWallpaper.",
                sImageWallpaperComponentName, fallbackData.wallpaperComponent);
                sImageWallpaperComponentName, fallbackData.getComponent());

        verifyLastWallpaperData(USER_SYSTEM, sDefaultWallpaperComponent);
        verifyDisplayData();
@@ -580,7 +580,7 @@ public class WallpaperManagerServiceTests {
        final WallpaperData lastData = mService.mLastWallpaper;
        assertNotNull("Last wallpaper must not be null", lastData);
        assertEquals("Last wallpaper component must be equals.", expectedComponent,
                lastData.wallpaperComponent);
                lastData.getComponent());
        assertEquals("The user id in last wallpaper should be the last switched user",
                lastUserId, lastData.userId);
        assertNotNull("Must exist user data connection on last wallpaper data",