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 9e693e4c5843be3f6589941d6df2b8dcbe520418..a6f44c5bc3ef2e963f6dd3af688bd788e8cbaecb 100644 |
--- a/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js |
+++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js |
@@ -115,11 +115,8 @@ SurpriseWallpaper.prototype.updateRandomWallpaper_ = function() { |
var self = this; |
Constants.WallpaperSyncStorage.get( |
Constants.AccessLastSurpriseWallpaperChangedDate, function(items) { |
- var dateString = new Date().toDateString(); |
- // At most one random wallpaper per day. |
- if (items[Constants.AccessLastSurpriseWallpaperChangedDate] != dateString) { |
- self.setRandomWallpaper_(dateString); |
- } |
+ var today = new Date().toDateString(); |
+ self.setRandomWallpaper_(today); |
}); |
}; |
@@ -150,6 +147,8 @@ SurpriseWallpaper.prototype.setRandomWallpaper_ = function(dateString) { |
Constants.AccessLastSurpriseWallpaperChangedDate, |
dateString, |
true); |
+ WallpaperUtil.saveWallpaperInfo(wallpaperURL, wallpaper.default_layout, |
+ Constants.WallpaperSourceEnum.Online); |
bshe
2015/03/04 19:45:39
nit: 4 spaces indention for new line.
xdai1
2015/03/04 21:32:39
Done.
|
}; |
WallpaperUtil.setOnlineWallpaper(wallpaperURL, wallpaper.default_layout, |
onSuccess, self.retryLater_.bind(self)); |
@@ -194,13 +193,22 @@ SurpriseWallpaper.prototype.disable = function() { |
}; |
/** |
- * Changes current wallpaper and sets up an alarm to schedule next change around |
- * midnight. |
+ * Changes current wallpaper once a day and sets up an alarm to schedule next |
+ * change around midnight. If the surprise wallpaper was already set toady, |
+ * then don't change it any more. |
*/ |
SurpriseWallpaper.prototype.next = function() { |
var nextUpdate = this.nextUpdateTime(new Date()); |
chrome.alarms.create({when: nextUpdate}); |
- this.tryChangeWallpaper(); |
+ |
+ var self = this; |
+ Constants.WallpaperSyncStorage.get( |
bshe
2015/03/04 19:45:39
why do you want to move the check to here? Looks l
xdai1
2015/03/04 21:32:39
Since when surprise me is enabled, we only change
bshe
2015/03/05 14:53:19
Rss wallpaper is not saved to sync storage and we
|
+ Constants.AccessLastSurpriseWallpaperChangedDate, function(items) { |
+ var today = new Date().toDateString(); |
+ if (items[Constants.AccessLastSurpriseWallpaperChangedDate] != today) { |
+ self.tryChangeWallpaper(); |
+ } |
+ }); |
}; |
/** |
@@ -277,33 +285,57 @@ chrome.storage.onChanged.addListener(function(changes, namespace) { |
} |
if (changes[Constants.AccessSyncWallpaperInfoKey]) { |
- var newValue = changes[Constants.AccessSyncWallpaperInfoKey].newValue; |
- Constants.WallpaperLocalStorage.get(Constants.AccessLocalWallpaperInfoKey, |
- function(items) { |
- // Normally, the wallpaper info saved in local storage and sync storage |
- // are the same. If the synced value changed by sync service, they may |
- // different. In that case, change wallpaper to the one saved in sync |
- // storage and update the local value. |
- var localValue = items[Constants.AccessLocalWallpaperInfoKey]; |
- if (localValue == undefined || |
- localValue.url != newValue.url || |
- localValue.layout != newValue.layout || |
- localValue.source != newValue.source) { |
- if (newValue.source == Constants.WallpaperSourceEnum.Online) { |
- // TODO(bshe): Consider schedule an alarm to set online wallpaper |
- // later when failed. Note that we need to cancel the retry if user |
- // set another wallpaper before retry alarm invoked. |
- WallpaperUtil.setOnlineWallpaper(newValue.url, newValue.layout, |
- function() {}, function() {}); |
- } else if (newValue.source == Constants.WallpaperSourceEnum.Custom) { |
- WallpaperUtil.setCustomWallpaperFromSyncFS(newValue.url, |
- newValue.layout); |
- } else if (newValue.source == Constants.WallpaperSourceEnum.Default) { |
- chrome.wallpaperPrivate.resetWallpaper(); |
+ var syncInfo = changes[Constants.AccessSyncWallpaperInfoKey].newValue; |
+ |
+ Constants.WallpaperSyncStorage.get(Constants.AccessSurpriseMeEnabledKey, |
+ function(enabledItems) { |
+ var syncSurpriseMeEnabled = |
+ enabledItems[Constants.AccessSurpriseMeEnabledKey]; |
bshe
2015/03/04 19:45:39
nit: 4 spaces indention
xdai1
2015/03/04 21:32:39
Done.
|
+ |
+ Constants.WallpaperSyncStorage.get( |
+ Constants.AccessLastSurpriseWallpaperChangedDate, function(items) { |
bshe
2015/03/04 19:45:39
ditto
xdai1
2015/03/04 21:32:39
Done.
|
+ var syncLastSurpriseMeChangedDate = |
bshe
2015/03/04 19:45:39
nit: function implementation should have 2 space i
xdai1
2015/03/04 21:32:39
I think it already has 2 space indention?
|
+ items[Constants.AccessLastSurpriseWallpaperChangedDate]; |
+ |
+ var today = new Date().toDateString(); |
+ // If SurpriseMe is enabled and surprise wallpaper hasn't been changed |
+ // today, we should not sync the change, instead onAlarm() will be |
+ // triggered to update a surprise me wallpaper. |
+ if (!syncSurpriseMeEnabled || (syncSurpriseMeEnabled && |
+ syncLastSurpriseMeChangedDate == today)) { |
bshe
2015/03/04 19:45:39
nit: indention is off. Consider this:
if (!syncSur
xdai1
2015/03/04 21:32:39
Done.
|
+ Constants.WallpaperLocalStorage.get( |
+ Constants.AccessLocalWallpaperInfoKey, function(infoItems) { |
+ var localInfo = |
+ infoItems[Constants.AccessLocalWallpaperInfoKey]; |
bshe
2015/03/04 19:45:39
nit: 4 space indention
xdai1
2015/03/04 21:32:39
Done.
|
+ // Normally, the wallpaper info saved in local storage and sync |
+ // storage are the same. If the synced value changed by sync |
+ // service, they may different. In that case, change wallpaper |
+ // to the one saved in sync storage and update the local value. |
+ if (localInfo == undefined || |
+ localInfo.url != syncInfo.url || |
+ localInfo.layout != syncInfo.layout || |
+ localInfo.source != syncInfo.source) { |
+ if (syncInfo.source == Constants.WallpaperSourceEnum.Online) { |
+ // TODO(bshe): Consider schedule an alarm to set online |
+ // wallpaper later when failed. Note that we need to cancel |
+ // the retry if user set another wallpaper before retry |
+ // alarm invoked. |
+ WallpaperUtil.setOnlineWallpaper(syncInfo.url, |
+ syncInfo.layout, function() {}, function() {}); |
+ } else if (syncInfo.source == |
+ Constants.WallpaperSourceEnum.Custom) { |
+ WallpaperUtil.setCustomWallpaperFromSyncFS(syncInfo.url, |
+ syncInfo.layout); |
+ } else if (syncInfo.source == |
+ Constants.WallpaperSourceEnum.Default) { |
+ chrome.wallpaperPrivate.resetWallpaper(); |
+ } |
+ WallpaperUtil.saveToStorage( |
+ Constants.AccessLocalWallpaperInfoKey, syncInfo, false); |
+ } |
+ }); |
} |
- WallpaperUtil.saveToStorage(Constants.AccessLocalWallpaperInfoKey, |
- newValue, false); |
- } |
+ }); |
}); |
} |
}); |