Merge \\"Test existence of wallpaper files before backing them up\\" into nyc-mr1-dev am: 8b08553e90
am: 4a74ffc1b5

Change-Id: I897aec4788c757ffdf1982f9b4c9dee3c29f2433
diff --git a/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java b/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java
index 97efed0..05207b9 100644
--- a/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java
+++ b/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java
@@ -114,13 +114,17 @@
                 imageStage.delete();
                 lockImageStage.delete();
 
-                Os.link(mWallpaperInfo.getCanonicalPath(), infoStage.getCanonicalPath());
-                fullBackupFile(infoStage, data);
-                Os.link(mWallpaperFile.getCanonicalPath(), imageStage.getCanonicalPath());
-                fullBackupFile(imageStage, data);
+                if (mWallpaperInfo.exists()) {
+                    Os.link(mWallpaperInfo.getCanonicalPath(), infoStage.getCanonicalPath());
+                    fullBackupFile(infoStage, data);
+                }
+                if (mWallpaperFile.exists()) {
+                    Os.link(mWallpaperFile.getCanonicalPath(), imageStage.getCanonicalPath());
+                    fullBackupFile(imageStage, data);
+                }
 
                 // Don't try to store the lock image if we overran our quota last time
-                if (!mQuotaExceeded) {
+                if (mLockWallpaperFile.exists() && !mQuotaExceeded) {
                     Os.link(mLockWallpaperFile.getCanonicalPath(), lockImageStage.getCanonicalPath());
                     fullBackupFile(lockImageStage, data);
                 }
@@ -130,7 +134,7 @@
                 }
             }
         } catch (Exception e) {
-            Slog.e(TAG, "Unable to back up wallpaper: " + e.getMessage());
+            Slog.e(TAG, "Unable to back up wallpaper", e);
         } finally {
             if (DEBUG) {
                 Slog.v(TAG, "Removing backup stage links");
@@ -173,6 +177,9 @@
         final File lockImageStage = new File (filesDir, LOCK_IMAGE_STAGE);
 
         try {
+            // First off, revert to the factory state
+            mWm.clear(WallpaperManager.FLAG_SYSTEM | WallpaperManager.FLAG_LOCK);
+
             // 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.