Index: chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js |
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js b/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js |
index eba94a343e034ee748bf9ae6095796fde5995a08..4a5a310c02d1b80959bf0d64a6f6e39026d7d934 100644 |
--- a/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js |
+++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js |
@@ -320,6 +320,16 @@ chrome.storage.onChanged.addListener(function(changes, namespace) { |
} |
} |
+ if (changes[Constants.AccessLocalWallpaperInfoKey]) { |
+ // If the old wallpaper is a third party wallpaper we should remove it |
+ // from the local & sync file system to free space. |
+ var oldInfo = changes[Constants.AccessLocalWallpaperInfoKey].oldValue; |
+ if (oldInfo.url.indexOf(Constants.ThirdPartyWallpaperPrefix) != -1) { |
+ WallpaperUtil.deleteWallpaperFromLocalFS(oldInfo.url); |
+ WallpaperUtil.deleteWallpaperFromSyncFS(oldInfo.url); |
+ } |
+ } |
+ |
if (changes[Constants.AccessSyncWallpaperInfoKey]) { |
var syncInfo = changes[Constants.AccessSyncWallpaperInfoKey].newValue; |
@@ -368,6 +378,15 @@ chrome.storage.onChanged.addListener(function(changes, namespace) { |
Constants.WallpaperSourceEnum.Default) { |
chrome.wallpaperPrivate.resetWallpaper(); |
} |
+ |
+ // If the old wallpaper is a third party wallpaper we should |
+ // remove it from the local & sync file system to free space. |
+ if (localInfo && localInfo.url.indexOf( |
+ Constants.ThirdPartyWallpaperPrefix) != -1) { |
+ WallpaperUtil.deleteWallpaperFromLocalFS(localInfo.url); |
+ WallpaperUtil.deleteWallpaperFromSyncFS(localInfo.url); |
+ } |
+ |
WallpaperUtil.saveToLocalStorage( |
Constants.AccessLocalWallpaperInfoKey, syncInfo); |
} |
@@ -394,11 +413,21 @@ chrome.alarms.onAlarm.addListener(function() { |
SurpriseWallpaper.getInstance().next(); |
}); |
-chrome.wallpaperPrivate.onWallpaperChangedBy3rdParty.addListener(function() { |
+chrome.wallpaperPrivate.onWallpaperChangedBy3rdParty.addListener(function( |
+ wallpaper, thumbnail, layout) { |
WallpaperUtil.saveToLocalStorage( |
Constants.AccessLocalSurpriseMeEnabledKey, false, function() { |
WallpaperUtil.saveToSyncStorage(Constants.AccessSyncSurpriseMeEnabledKey, |
false); |
}); |
SurpriseWallpaper.getInstance().disable(); |
+ |
+ // Make third party wallpaper syncable through different devices. |
+ // TODO(xdai): also sync the third party app name. |
+ var filename = Constants.ThirdPartyWallpaperPrefix + new Date().getTime(); |
+ var thumbnailFilename = filename + Constants.CustomWallpaperThumbnailSuffix; |
+ WallpaperUtil.storeWallpaperToSyncFS(filename, wallpaper); |
+ WallpaperUtil.storeWallpaperToSyncFS(thumbnailFilename, thumbnail); |
+ WallpaperUtil.saveWallpaperInfo(filename, layout, |
+ Constants.WallpaperSourceEnum.Custom); |
}); |