Loading core/java/android/app/wallpaper.aconfig 0 → 100644 +8 −0 Original line number Diff line number Diff line package: "android.app" container: "system" flag { name: "remove_next_wallpaper_component" namespace: "systemui" description: "Remove deprecated field WallpaperData#nextWallpaperComponent. Only effective after rebooting." bug: "365991991" } services/core/java/com/android/server/wallpaper/WallpaperData.java +3 −0 Original line number Diff line number Diff line Loading @@ -80,8 +80,11 @@ class WallpaperData { */ ComponentName wallpaperComponent; // TODO(b/347235611) Remove this field /** * The component name of the wallpaper that should be set next. * * @deprecated */ ComponentName nextWallpaperComponent; Loading services/core/java/com/android/server/wallpaper/WallpaperDataParser.java +28 −10 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.wallpaper; import static android.app.Flags.removeNextWallpaperComponent; import static android.app.WallpaperManager.FLAG_LOCK; import static android.app.WallpaperManager.FLAG_SYSTEM; import static android.app.WallpaperManager.ORIENTATION_UNKNOWN; Loading Loading @@ -187,6 +188,16 @@ public class WallpaperDataParser { } String comp = parser.getAttributeValue(null, "component"); if (removeNextWallpaperComponent()) { wallpaperToParse.wallpaperComponent = comp != null ? ComponentName.unflattenFromString(comp) : null; if (wallpaperToParse.wallpaperComponent == null || "android".equals(wallpaperToParse.wallpaperComponent .getPackageName())) { wallpaperToParse.wallpaperComponent = mImageWallpaper; } } else { wallpaperToParse.nextWallpaperComponent = comp != null ? ComponentName.unflattenFromString(comp) : null; Loading @@ -195,6 +206,7 @@ public class WallpaperDataParser { .getPackageName())) { wallpaperToParse.nextWallpaperComponent = mImageWallpaper; } } if (multiCrop()) { parseWallpaperAttributes(parser, wallpaperToParse, keepDimensionHints); Loading @@ -206,11 +218,15 @@ public class WallpaperDataParser { Slog.v(TAG, "cropRect:" + wallpaper.cropHint); Slog.v(TAG, "primaryColors:" + wallpaper.primaryColors); Slog.v(TAG, "mName:" + wallpaper.name); if (removeNextWallpaperComponent()) { Slog.v(TAG, "mWallpaperComponent:" + wallpaper.wallpaperComponent); } else { Slog.v(TAG, "mNextWallpaperComponent:" + wallpaper.nextWallpaperComponent); } } } } } while (type != XmlPullParser.END_DOCUMENT); success = true; } catch (FileNotFoundException e) { Loading Loading @@ -324,7 +340,9 @@ public class WallpaperDataParser { getAttributeInt(parser, "totalCropTop", 0), getAttributeInt(parser, "totalCropRight", 0), getAttributeInt(parser, "totalCropBottom", 0)); if (multiCrop() && mImageWallpaper.equals(wallpaper.nextWallpaperComponent)) { ComponentName componentName = removeNextWallpaperComponent() ? wallpaper.wallpaperComponent : wallpaper.nextWallpaperComponent; if (multiCrop() && mImageWallpaper.equals(componentName)) { wallpaper.mCropHints = new SparseArray<>(); for (Pair<Integer, String> pair: screenDimensionPairs()) { Rect cropHint = new Rect( Loading services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +47 −26 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL; import static android.Manifest.permission.MANAGE_EXTERNAL_STORAGE; import static android.Manifest.permission.READ_WALLPAPER_INTERNAL; import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND; import static android.app.Flags.removeNextWallpaperComponent; import static android.app.WallpaperManager.COMMAND_REAPPLY; import static android.app.WallpaperManager.FLAG_LOCK; import static android.app.WallpaperManager.FLAG_SYSTEM; Loading Loading @@ -1474,6 +1475,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } } } if (!removeNextWallpaperComponent()) { if (wallpaper.nextWallpaperComponent != null) { int change = isPackageDisappearing(wallpaper.nextWallpaperComponent .getPackageName()); Loading @@ -1482,6 +1484,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub wallpaper.nextWallpaperComponent = null; } } } if (wallpaper.wallpaperComponent != null && isPackageModified(wallpaper.wallpaperComponent.getPackageName())) { try { Loading @@ -1494,16 +1497,19 @@ public class WallpaperManagerService extends IWallpaperManager.Stub clearWallpaperLocked(wallpaper.mWhich, wallpaper.userId, false, null); } } if (!removeNextWallpaperComponent()) { if (wallpaper.nextWallpaperComponent != null && isPackageModified(wallpaper.nextWallpaperComponent.getPackageName())) { try { mContext.getPackageManager().getServiceInfo(wallpaper.nextWallpaperComponent, mContext.getPackageManager().getServiceInfo( wallpaper.nextWallpaperComponent, PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE); } catch (NameNotFoundException e) { wallpaper.nextWallpaperComponent = null; } } } return changed; } } Loading Loading @@ -1628,7 +1634,14 @@ public class WallpaperManagerService extends IWallpaperManager.Stub WallpaperData wallpaper = mWallpaperMap.get(UserHandle.USER_SYSTEM); // If we think we're going to be using the system image wallpaper imagery, make // sure we have something to render if (mImageWallpaper.equals(wallpaper.nextWallpaperComponent)) { boolean isImageComponent; if (removeNextWallpaperComponent()) { isImageComponent = wallpaper.wallpaperComponent == null || mImageWallpaper.equals(wallpaper.wallpaperComponent); } else { isImageComponent = mImageWallpaper.equals(wallpaper.nextWallpaperComponent); } if (isImageComponent) { // No crop file? Make sure we've finished the processing sequence if necessary if (!wallpaper.cropExists()) { if (DEBUG) { Loading Loading @@ -1877,8 +1890,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub if ((wallpaper.mWhich & FLAG_SYSTEM) != 0) mHomeWallpaperWaitingForUnlock = false; if ((wallpaper.mWhich & FLAG_LOCK) != 0) mLockWallpaperWaitingForUnlock = false; final ComponentName cname = wallpaper.wallpaperComponent != null ? wallpaper.wallpaperComponent : wallpaper.nextWallpaperComponent; final ComponentName cname; if (removeNextWallpaperComponent()) { cname = wallpaper.wallpaperComponent; } else { cname = (wallpaper.wallpaperComponent != null) ? wallpaper.wallpaperComponent : wallpaper.nextWallpaperComponent; } if (!bindWallpaperComponentLocked(cname, true, false, wallpaper, reply)) { // We failed to bind the desired wallpaper, but that might // happen if the wallpaper isn't direct-boot aware Loading @@ -1905,10 +1923,12 @@ public class WallpaperManagerService extends IWallpaperManager.Stub return; } Slog.w(TAG, "Wallpaper isn't direct boot aware; using fallback until unlocked"); if (!removeNextWallpaperComponent()) { // 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; } final WallpaperData fallback = new WallpaperData(wallpaper.userId, wallpaper.mWhich); // files from the previous static wallpaper may still be stored in memory. Loading Loading @@ -3810,10 +3830,12 @@ public class WallpaperManagerService extends IWallpaperManager.Stub wallpaper = mWallpaperMap.get(UserHandle.USER_SYSTEM); wallpaper.wallpaperId = makeWallpaperIdLocked(); // always bump id at restore wallpaper.allowBackup = true; // by definition if it was restored if (wallpaper.nextWallpaperComponent != null && !wallpaper.nextWallpaperComponent.equals(mImageWallpaper)) { ComponentName componentName = removeNextWallpaperComponent() ? wallpaper.wallpaperComponent : wallpaper.nextWallpaperComponent; if (componentName != null && !componentName.equals(mImageWallpaper)) { wallpaper.mBindSource = BindSource.RESTORE_SETTINGS_LIVE_SUCCESS; if (!bindWallpaperComponentLocked(wallpaper.nextWallpaperComponent, false, false, if (!bindWallpaperComponentLocked(componentName, false, false, wallpaper, null)) { // No such live wallpaper or other failure; fall back to the default // live wallpaper (since the profile being restored indicated that the Loading @@ -3837,8 +3859,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub if (success) { mWallpaperCropper.generateCrop(wallpaper); // based on the new image + metadata wallpaper.mBindSource = BindSource.RESTORE_SETTINGS_STATIC; bindWallpaperComponentLocked(wallpaper.nextWallpaperComponent, true, false, wallpaper, null); bindWallpaperComponentLocked(componentName, true, false, wallpaper, null); } } } Loading Loading
core/java/android/app/wallpaper.aconfig 0 → 100644 +8 −0 Original line number Diff line number Diff line package: "android.app" container: "system" flag { name: "remove_next_wallpaper_component" namespace: "systemui" description: "Remove deprecated field WallpaperData#nextWallpaperComponent. Only effective after rebooting." bug: "365991991" }
services/core/java/com/android/server/wallpaper/WallpaperData.java +3 −0 Original line number Diff line number Diff line Loading @@ -80,8 +80,11 @@ class WallpaperData { */ ComponentName wallpaperComponent; // TODO(b/347235611) Remove this field /** * The component name of the wallpaper that should be set next. * * @deprecated */ ComponentName nextWallpaperComponent; Loading
services/core/java/com/android/server/wallpaper/WallpaperDataParser.java +28 −10 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.wallpaper; import static android.app.Flags.removeNextWallpaperComponent; import static android.app.WallpaperManager.FLAG_LOCK; import static android.app.WallpaperManager.FLAG_SYSTEM; import static android.app.WallpaperManager.ORIENTATION_UNKNOWN; Loading Loading @@ -187,6 +188,16 @@ public class WallpaperDataParser { } String comp = parser.getAttributeValue(null, "component"); if (removeNextWallpaperComponent()) { wallpaperToParse.wallpaperComponent = comp != null ? ComponentName.unflattenFromString(comp) : null; if (wallpaperToParse.wallpaperComponent == null || "android".equals(wallpaperToParse.wallpaperComponent .getPackageName())) { wallpaperToParse.wallpaperComponent = mImageWallpaper; } } else { wallpaperToParse.nextWallpaperComponent = comp != null ? ComponentName.unflattenFromString(comp) : null; Loading @@ -195,6 +206,7 @@ public class WallpaperDataParser { .getPackageName())) { wallpaperToParse.nextWallpaperComponent = mImageWallpaper; } } if (multiCrop()) { parseWallpaperAttributes(parser, wallpaperToParse, keepDimensionHints); Loading @@ -206,11 +218,15 @@ public class WallpaperDataParser { Slog.v(TAG, "cropRect:" + wallpaper.cropHint); Slog.v(TAG, "primaryColors:" + wallpaper.primaryColors); Slog.v(TAG, "mName:" + wallpaper.name); if (removeNextWallpaperComponent()) { Slog.v(TAG, "mWallpaperComponent:" + wallpaper.wallpaperComponent); } else { Slog.v(TAG, "mNextWallpaperComponent:" + wallpaper.nextWallpaperComponent); } } } } } while (type != XmlPullParser.END_DOCUMENT); success = true; } catch (FileNotFoundException e) { Loading Loading @@ -324,7 +340,9 @@ public class WallpaperDataParser { getAttributeInt(parser, "totalCropTop", 0), getAttributeInt(parser, "totalCropRight", 0), getAttributeInt(parser, "totalCropBottom", 0)); if (multiCrop() && mImageWallpaper.equals(wallpaper.nextWallpaperComponent)) { ComponentName componentName = removeNextWallpaperComponent() ? wallpaper.wallpaperComponent : wallpaper.nextWallpaperComponent; if (multiCrop() && mImageWallpaper.equals(componentName)) { wallpaper.mCropHints = new SparseArray<>(); for (Pair<Integer, String> pair: screenDimensionPairs()) { Rect cropHint = new Rect( Loading
services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +47 −26 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL; import static android.Manifest.permission.MANAGE_EXTERNAL_STORAGE; import static android.Manifest.permission.READ_WALLPAPER_INTERNAL; import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND; import static android.app.Flags.removeNextWallpaperComponent; import static android.app.WallpaperManager.COMMAND_REAPPLY; import static android.app.WallpaperManager.FLAG_LOCK; import static android.app.WallpaperManager.FLAG_SYSTEM; Loading Loading @@ -1474,6 +1475,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } } } if (!removeNextWallpaperComponent()) { if (wallpaper.nextWallpaperComponent != null) { int change = isPackageDisappearing(wallpaper.nextWallpaperComponent .getPackageName()); Loading @@ -1482,6 +1484,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub wallpaper.nextWallpaperComponent = null; } } } if (wallpaper.wallpaperComponent != null && isPackageModified(wallpaper.wallpaperComponent.getPackageName())) { try { Loading @@ -1494,16 +1497,19 @@ public class WallpaperManagerService extends IWallpaperManager.Stub clearWallpaperLocked(wallpaper.mWhich, wallpaper.userId, false, null); } } if (!removeNextWallpaperComponent()) { if (wallpaper.nextWallpaperComponent != null && isPackageModified(wallpaper.nextWallpaperComponent.getPackageName())) { try { mContext.getPackageManager().getServiceInfo(wallpaper.nextWallpaperComponent, mContext.getPackageManager().getServiceInfo( wallpaper.nextWallpaperComponent, PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE); } catch (NameNotFoundException e) { wallpaper.nextWallpaperComponent = null; } } } return changed; } } Loading Loading @@ -1628,7 +1634,14 @@ public class WallpaperManagerService extends IWallpaperManager.Stub WallpaperData wallpaper = mWallpaperMap.get(UserHandle.USER_SYSTEM); // If we think we're going to be using the system image wallpaper imagery, make // sure we have something to render if (mImageWallpaper.equals(wallpaper.nextWallpaperComponent)) { boolean isImageComponent; if (removeNextWallpaperComponent()) { isImageComponent = wallpaper.wallpaperComponent == null || mImageWallpaper.equals(wallpaper.wallpaperComponent); } else { isImageComponent = mImageWallpaper.equals(wallpaper.nextWallpaperComponent); } if (isImageComponent) { // No crop file? Make sure we've finished the processing sequence if necessary if (!wallpaper.cropExists()) { if (DEBUG) { Loading Loading @@ -1877,8 +1890,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub if ((wallpaper.mWhich & FLAG_SYSTEM) != 0) mHomeWallpaperWaitingForUnlock = false; if ((wallpaper.mWhich & FLAG_LOCK) != 0) mLockWallpaperWaitingForUnlock = false; final ComponentName cname = wallpaper.wallpaperComponent != null ? wallpaper.wallpaperComponent : wallpaper.nextWallpaperComponent; final ComponentName cname; if (removeNextWallpaperComponent()) { cname = wallpaper.wallpaperComponent; } else { cname = (wallpaper.wallpaperComponent != null) ? wallpaper.wallpaperComponent : wallpaper.nextWallpaperComponent; } if (!bindWallpaperComponentLocked(cname, true, false, wallpaper, reply)) { // We failed to bind the desired wallpaper, but that might // happen if the wallpaper isn't direct-boot aware Loading @@ -1905,10 +1923,12 @@ public class WallpaperManagerService extends IWallpaperManager.Stub return; } Slog.w(TAG, "Wallpaper isn't direct boot aware; using fallback until unlocked"); if (!removeNextWallpaperComponent()) { // 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; } final WallpaperData fallback = new WallpaperData(wallpaper.userId, wallpaper.mWhich); // files from the previous static wallpaper may still be stored in memory. Loading Loading @@ -3810,10 +3830,12 @@ public class WallpaperManagerService extends IWallpaperManager.Stub wallpaper = mWallpaperMap.get(UserHandle.USER_SYSTEM); wallpaper.wallpaperId = makeWallpaperIdLocked(); // always bump id at restore wallpaper.allowBackup = true; // by definition if it was restored if (wallpaper.nextWallpaperComponent != null && !wallpaper.nextWallpaperComponent.equals(mImageWallpaper)) { ComponentName componentName = removeNextWallpaperComponent() ? wallpaper.wallpaperComponent : wallpaper.nextWallpaperComponent; if (componentName != null && !componentName.equals(mImageWallpaper)) { wallpaper.mBindSource = BindSource.RESTORE_SETTINGS_LIVE_SUCCESS; if (!bindWallpaperComponentLocked(wallpaper.nextWallpaperComponent, false, false, if (!bindWallpaperComponentLocked(componentName, false, false, wallpaper, null)) { // No such live wallpaper or other failure; fall back to the default // live wallpaper (since the profile being restored indicated that the Loading @@ -3837,8 +3859,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub if (success) { mWallpaperCropper.generateCrop(wallpaper); // based on the new image + metadata wallpaper.mBindSource = BindSource.RESTORE_SETTINGS_STATIC; bindWallpaperComponentLocked(wallpaper.nextWallpaperComponent, true, false, wallpaper, null); bindWallpaperComponentLocked(componentName, true, false, wallpaper, null); } } } Loading