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

Commit 0df6befb authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add accessor methods for current wallpaper component" into main

parents 33c9f83a 21f0d639
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;
@@ -2310,7 +2309,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 =
@@ -2760,7 +2759,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());
        }
    }

@@ -2996,7 +2995,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
@@ -3190,7 +3189,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) {
@@ -3212,7 +3211,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
@@ -3243,7 +3242,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;
                    }
@@ -3324,7 +3323,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");
@@ -3461,7 +3460,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);
@@ -3586,7 +3585,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
    }

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

@@ -3831,7 +3830,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;
@@ -3907,7 +3906,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",