Don't log an error if system wallpaper is applied to lock
Don't log an error if the lock image doesn't exist and the system image exists, since this is an intended behaviour. If the lockscreen was supposed to have an image but the image could not be backed up, we will see the error from the backup side. Adapt the test accordingly. Now, we only call either both restoreFromStage(FLAG_LOCK) and restoreFromStage(FLAG_SYSTEM), or call only restoreFromStage(FLAG_SYSTEM | FLAG_LOCK). Also, use this opportunity to make sure we only call file.exists() at most once, to reduce IO operations. Test: atest WallpaperBackupAgentTest Bug: 283091821 Change-Id: Ia19fcefc1676e8bd1fc0cf80c7a959c4d6f5839f
This commit is contained in:
@@ -359,11 +359,12 @@ public class WallpaperBackupAgent extends BackupAgent {
|
||||
final File infoStage = new File(filesDir, WALLPAPER_INFO_STAGE);
|
||||
final File imageStage = new File(filesDir, SYSTEM_WALLPAPER_STAGE);
|
||||
final File lockImageStage = new File(filesDir, LOCK_WALLPAPER_STAGE);
|
||||
boolean lockImageStageExists = lockImageStage.exists();
|
||||
|
||||
// If we restored separate lock imagery, the system wallpaper should be
|
||||
// applied as system-only; but if there's no separate lock image, make
|
||||
// sure to apply the restored system wallpaper as both.
|
||||
final int sysWhich = FLAG_SYSTEM | (lockImageStage.exists() ? 0 : FLAG_LOCK);
|
||||
final int sysWhich = FLAG_SYSTEM | (lockImageStageExists ? 0 : FLAG_LOCK);
|
||||
|
||||
try {
|
||||
// First parse the live component name so that we know for logging if we care about
|
||||
@@ -374,11 +375,14 @@ public class WallpaperBackupAgent extends BackupAgent {
|
||||
// It is valid for the imagery to be absent; it means that we were not permitted
|
||||
// to back up the original image on the source device, or there was no user-supplied
|
||||
// wallpaper image present.
|
||||
|
||||
restoreFromStage(imageStage, infoStage, "wp", sysWhich);
|
||||
restoreFromStage(lockImageStage, infoStage, "kwp", FLAG_LOCK);
|
||||
if (lockImageStageExists) {
|
||||
restoreFromStage(lockImageStage, infoStage, "kwp", FLAG_LOCK);
|
||||
}
|
||||
|
||||
// And reset to the wallpaper service we should be using
|
||||
updateWallpaperComponent(wpService, !lockImageStage.exists());
|
||||
updateWallpaperComponent(wpService, !lockImageStageExists);
|
||||
} catch (Exception e) {
|
||||
Slog.e(TAG, "Unable to restore wallpaper: " + e.getMessage());
|
||||
mEventLogger.onRestoreException(e);
|
||||
@@ -437,7 +441,8 @@ public class WallpaperBackupAgent extends BackupAgent {
|
||||
// And log the success
|
||||
if ((which & FLAG_SYSTEM) > 0) {
|
||||
mEventLogger.onSystemImageWallpaperRestored();
|
||||
} else {
|
||||
}
|
||||
if ((which & FLAG_LOCK) > 0) {
|
||||
mEventLogger.onLockImageWallpaperRestored();
|
||||
}
|
||||
}
|
||||
@@ -460,7 +465,8 @@ public class WallpaperBackupAgent extends BackupAgent {
|
||||
private void logRestoreError(int which, String error) {
|
||||
if ((which & FLAG_SYSTEM) == FLAG_SYSTEM) {
|
||||
mEventLogger.onSystemImageWallpaperRestoreFailed(error);
|
||||
} else if ((which & FLAG_LOCK) == FLAG_LOCK) {
|
||||
}
|
||||
if ((which & FLAG_LOCK) == FLAG_LOCK) {
|
||||
mEventLogger.onLockImageWallpaperRestoreFailed(error);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -649,19 +649,20 @@ public class WallpaperBackupAgentTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnRestore_lockWallpaperImgMissingAndNoLive_logsFailure() throws Exception {
|
||||
public void testOnRestore_wallpaperImgMissingAndNoLive_logsFailure() throws Exception {
|
||||
mockStagedWallpaperFile(WALLPAPER_INFO_STAGE);
|
||||
mockStagedWallpaperFile(SYSTEM_WALLPAPER_STAGE);
|
||||
mWallpaperBackupAgent.onCreate(USER_HANDLE, BackupAnnotations.BackupDestination.CLOUD,
|
||||
BackupAnnotations.OperationType.RESTORE);
|
||||
|
||||
mWallpaperBackupAgent.onRestoreFinished();
|
||||
|
||||
DataTypeResult result = getLoggingResult(WALLPAPER_IMG_LOCK,
|
||||
mWallpaperBackupAgent.getBackupRestoreEventLogger().getLoggingResults());
|
||||
assertThat(result).isNotNull();
|
||||
assertThat(result.getFailCount()).isEqualTo(1);
|
||||
assertThat(result.getErrors()).containsKey(ERROR_NO_WALLPAPER);
|
||||
for (String wallpaper: List.of(WALLPAPER_IMG_LOCK, WALLPAPER_IMG_SYSTEM)) {
|
||||
DataTypeResult result = getLoggingResult(wallpaper,
|
||||
mWallpaperBackupAgent.getBackupRestoreEventLogger().getLoggingResults());
|
||||
assertThat(result).isNotNull();
|
||||
assertThat(result.getFailCount()).isEqualTo(1);
|
||||
assertThat(result.getErrors()).containsKey(ERROR_NO_WALLPAPER);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user