summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chris Poultney <poultney@google.com> 2024-09-13 09:14:56 -0400
committer Chris Poultney <poultney@google.com> 2024-09-13 09:31:58 -0400
commitd720a4e372c11ec814a41007e9e9ef24f0814f06 (patch)
tree1758da64fade4b70775847fd0d8c72d5c0580664
parent23ff628d7f901965552a636cc60e816789d03b9e (diff)
Remove obsolete "next component" field from WallpaperData
Justification: b/365991991#comment2 Fixes: 365991991 Flag: android.app.remove_next_wallpaper_component Test: See b/365991991#comment3 Change-Id: I488c75349269b61817f0ac624c6c97b21e15866d
-rw-r--r--core/java/android/app/wallpaper.aconfig8
-rw-r--r--services/core/java/com/android/server/wallpaper/WallpaperData.java3
-rw-r--r--services/core/java/com/android/server/wallpaper/WallpaperDataParser.java38
-rw-r--r--services/core/java/com/android/server/wallpaper/WallpaperManagerService.java73
4 files changed, 86 insertions, 36 deletions
diff --git a/core/java/android/app/wallpaper.aconfig b/core/java/android/app/wallpaper.aconfig
new file mode 100644
index 000000000000..409162202b59
--- /dev/null
+++ b/core/java/android/app/wallpaper.aconfig
@@ -0,0 +1,8 @@
+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"
+}
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperData.java b/services/core/java/com/android/server/wallpaper/WallpaperData.java
index b792f7909fc8..a698429ff09e 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperData.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperData.java
@@ -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;
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperDataParser.java b/services/core/java/com/android/server/wallpaper/WallpaperDataParser.java
index 4aefb54889aa..b15facb2945c 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperDataParser.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperDataParser.java
@@ -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;
@@ -187,13 +188,24 @@ public class WallpaperDataParser {
}
String comp = parser.getAttributeValue(null, "component");
- wallpaperToParse.nextWallpaperComponent = comp != null
- ? ComponentName.unflattenFromString(comp)
- : null;
- if (wallpaperToParse.nextWallpaperComponent == null
- || "android".equals(wallpaperToParse.nextWallpaperComponent
- .getPackageName())) {
- wallpaperToParse.nextWallpaperComponent = mImageWallpaper;
+ 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;
+ if (wallpaperToParse.nextWallpaperComponent == null
+ || "android".equals(wallpaperToParse.nextWallpaperComponent
+ .getPackageName())) {
+ wallpaperToParse.nextWallpaperComponent = mImageWallpaper;
+ }
}
if (multiCrop()) {
@@ -206,8 +218,12 @@ public class WallpaperDataParser {
Slog.v(TAG, "cropRect:" + wallpaper.cropHint);
Slog.v(TAG, "primaryColors:" + wallpaper.primaryColors);
Slog.v(TAG, "mName:" + wallpaper.name);
- Slog.v(TAG, "mNextWallpaperComponent:"
- + wallpaper.nextWallpaperComponent);
+ if (removeNextWallpaperComponent()) {
+ Slog.v(TAG, "mWallpaperComponent:" + wallpaper.wallpaperComponent);
+ } else {
+ Slog.v(TAG, "mNextWallpaperComponent:"
+ + wallpaper.nextWallpaperComponent);
+ }
}
}
}
@@ -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(
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index 4dcc6e112ecc..9a6b90b9e423 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -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;
@@ -1474,12 +1475,14 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
}
}
}
- if (wallpaper.nextWallpaperComponent != null) {
- int change = isPackageDisappearing(wallpaper.nextWallpaperComponent
- .getPackageName());
- if (change == PACKAGE_PERMANENT_CHANGE
- || change == PACKAGE_TEMPORARY_CHANGE) {
- wallpaper.nextWallpaperComponent = null;
+ if (!removeNextWallpaperComponent()) {
+ if (wallpaper.nextWallpaperComponent != null) {
+ int change = isPackageDisappearing(wallpaper.nextWallpaperComponent
+ .getPackageName());
+ if (change == PACKAGE_PERMANENT_CHANGE
+ || change == PACKAGE_TEMPORARY_CHANGE) {
+ wallpaper.nextWallpaperComponent = null;
+ }
}
}
if (wallpaper.wallpaperComponent != null
@@ -1494,14 +1497,17 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
clearWallpaperLocked(wallpaper.mWhich, wallpaper.userId, false, null);
}
}
- if (wallpaper.nextWallpaperComponent != null
- && isPackageModified(wallpaper.nextWallpaperComponent.getPackageName())) {
- try {
- mContext.getPackageManager().getServiceInfo(wallpaper.nextWallpaperComponent,
- PackageManager.MATCH_DIRECT_BOOT_AWARE
- | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
- } catch (NameNotFoundException e) {
- wallpaper.nextWallpaperComponent = null;
+ if (!removeNextWallpaperComponent()) {
+ if (wallpaper.nextWallpaperComponent != null
+ && isPackageModified(wallpaper.nextWallpaperComponent.getPackageName())) {
+ try {
+ mContext.getPackageManager().getServiceInfo(
+ wallpaper.nextWallpaperComponent,
+ PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
+ } catch (NameNotFoundException e) {
+ wallpaper.nextWallpaperComponent = null;
+ }
}
}
return changed;
@@ -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) {
@@ -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
@@ -1905,10 +1923,12 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
return;
}
Slog.w(TAG, "Wallpaper isn't direct boot aware; using fallback until unlocked");
- // 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;
+ 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.
@@ -3788,10 +3808,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
@@ -3815,8 +3837,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);
}
}
}