| 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 058a50b047549e2acb62fe936ece23554ba3c44b..ebed5e98e332a63c38d0cb84554b0b88d1f0939e 100644
|
| --- a/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js
|
| +++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js
|
| @@ -9,8 +9,7 @@ var wallpaperPickerWindow = null;
|
|
|
| var surpriseWallpaper = null;
|
|
|
| -function SurpriseWallpaper() {
|
| -}
|
| +function SurpriseWallpaper() {}
|
|
|
| /**
|
| * Gets SurpriseWallpaper instance. In case it hasn't been initialized, a new
|
| @@ -40,7 +39,8 @@ SurpriseWallpaper.prototype.tryChangeWallpaper = function() {
|
| // wallpaper picker. If any other error occurs, proceed with local copy of
|
| // rss.
|
| WallpaperUtil.fetchURL(Constants.WallpaperRssURL, 'document', function(xhr) {
|
| - WallpaperUtil.saveToLocalStorage(Constants.AccessLocalRssKey,
|
| + WallpaperUtil.saveToLocalStorage(
|
| + Constants.AccessLocalRssKey,
|
| new XMLSerializer().serializeToString(xhr.responseXML));
|
| self.updateSurpriseWallpaper(xhr.responseXML);
|
| }, onFailure);
|
| @@ -62,16 +62,16 @@ SurpriseWallpaper.prototype.retryLater_ = function() {
|
| */
|
| SurpriseWallpaper.prototype.fallbackToLocalRss_ = function() {
|
| var self = this;
|
| - Constants.WallpaperLocalStorage.get(Constants.AccessLocalRssKey,
|
| - function(items) {
|
| - var rssString = items[Constants.AccessLocalRssKey];
|
| - if (rssString) {
|
| - self.updateSurpriseWallpaper(new DOMParser().parseFromString(rssString,
|
| - 'text/xml'));
|
| - } else {
|
| - self.updateSurpriseWallpaper();
|
| - }
|
| - });
|
| + Constants.WallpaperLocalStorage.get(
|
| + Constants.AccessLocalRssKey, function(items) {
|
| + var rssString = items[Constants.AccessLocalRssKey];
|
| + if (rssString) {
|
| + self.updateSurpriseWallpaper(
|
| + new DOMParser().parseFromString(rssString, 'text/xml'));
|
| + } else {
|
| + self.updateSurpriseWallpaper();
|
| + }
|
| + });
|
| };
|
|
|
| /**
|
| @@ -85,26 +85,31 @@ SurpriseWallpaper.prototype.updateSurpriseWallpaper = function(opt_rss) {
|
| var date = new Date(new Date().toDateString()).getTime();
|
| for (var i = 0; i < items.length; i++) {
|
| item = items[i];
|
| - var disableDate = new Date(item.getElementsByTagNameNS(
|
| - Constants.WallpaperNameSpaceURI, 'disableDate')[0].textContent).
|
| - getTime();
|
| - var enableDate = new Date(item.getElementsByTagNameNS(
|
| - Constants.WallpaperNameSpaceURI, 'enableDate')[0].textContent).
|
| - getTime();
|
| + var disableDate =
|
| + new Date(item.getElementsByTagNameNS(
|
| + Constants.WallpaperNameSpaceURI, 'disableDate')[0]
|
| + .textContent)
|
| + .getTime();
|
| + var enableDate =
|
| + new Date(item.getElementsByTagNameNS(
|
| + Constants.WallpaperNameSpaceURI, 'enableDate')[0]
|
| + .textContent)
|
| + .getTime();
|
| var regionsString = item.getElementsByTagNameNS(
|
| - Constants.WallpaperNameSpaceURI, 'regions')[0].textContent;
|
| + Constants.WallpaperNameSpaceURI, 'regions')[0]
|
| + .textContent;
|
| var regions = regionsString.split(', ');
|
| if (enableDate <= date && disableDate > date &&
|
| regions.indexOf(navigator.language) != -1) {
|
| var self = this;
|
| - this.setWallpaperFromRssItem_(item,
|
| - function() {},
|
| - function(status) {
|
| - if (status != 404)
|
| - self.retryLater_();
|
| - else
|
| - self.updateRandomWallpaper_();
|
| - });
|
| + this.setWallpaperFromRssItem_(
|
| + item, function() {},
|
| + function(status) {
|
| + if (status != 404)
|
| + self.retryLater_();
|
| + else
|
| + self.updateRandomWallpaper_();
|
| + });
|
| return;
|
| }
|
| }
|
| @@ -147,34 +152,37 @@ SurpriseWallpaper.prototype.updateRandomWallpaper_ = function() {
|
| */
|
| SurpriseWallpaper.prototype.setRandomWallpaper_ = function(dateString) {
|
| var self = this;
|
| - Constants.WallpaperLocalStorage.get(Constants.AccessLocalManifestKey,
|
| - function(items) {
|
| - var manifest = items[Constants.AccessLocalManifestKey];
|
| - if (manifest && manifest.wallpaper_list) {
|
| - var filtered = manifest.wallpaper_list.filter(function(element) {
|
| - // Older version manifest do not have available_for_surprise_me field.
|
| - // In this case, no wallpaper should be filtered out.
|
| - return element.available_for_surprise_me ||
|
| - element.available_for_surprise_me == undefined;
|
| + Constants.WallpaperLocalStorage.get(
|
| + Constants.AccessLocalManifestKey, function(items) {
|
| + var manifest = items[Constants.AccessLocalManifestKey];
|
| + if (manifest && manifest.wallpaper_list) {
|
| + var filtered = manifest.wallpaper_list.filter(function(element) {
|
| + // Older version manifest do not have available_for_surprise_me
|
| + // field. In this case, no wallpaper should be filtered out.
|
| + return element.available_for_surprise_me ||
|
| + element.available_for_surprise_me == undefined;
|
| + });
|
| + var index = Math.floor(Math.random() * filtered.length);
|
| + var wallpaper = filtered[index];
|
| + var wallpaperURL =
|
| + wallpaper.base_url + Constants.HighResolutionSuffix;
|
| + var onSuccess = function() {
|
| + WallpaperUtil.saveWallpaperInfo(
|
| + wallpaperURL, wallpaper.default_layout,
|
| + Constants.WallpaperSourceEnum.Daily, '');
|
| + WallpaperUtil.saveToLocalStorage(
|
| + Constants.AccessLastSurpriseWallpaperChangedDate, dateString,
|
| + function() {
|
| + WallpaperUtil.saveToSyncStorage(
|
| + Constants.AccessLastSurpriseWallpaperChangedDate,
|
| + dateString);
|
| + });
|
| + };
|
| + WallpaperUtil.setOnlineWallpaper(
|
| + wallpaperURL, wallpaper.default_layout, onSuccess,
|
| + self.retryLater_.bind(self));
|
| + }
|
| });
|
| - var index = Math.floor(Math.random() * filtered.length);
|
| - var wallpaper = filtered[index];
|
| - var wallpaperURL = wallpaper.base_url + Constants.HighResolutionSuffix;
|
| - var onSuccess = function() {
|
| - WallpaperUtil.saveWallpaperInfo(wallpaperURL, wallpaper.default_layout,
|
| - Constants.WallpaperSourceEnum.Daily, '');
|
| - WallpaperUtil.saveToLocalStorage(
|
| - Constants.AccessLastSurpriseWallpaperChangedDate,
|
| - dateString, function() {
|
| - WallpaperUtil.saveToSyncStorage(
|
| - Constants.AccessLastSurpriseWallpaperChangedDate,
|
| - dateString);
|
| - });
|
| - };
|
| - WallpaperUtil.setOnlineWallpaper(wallpaperURL, wallpaper.default_layout,
|
| - onSuccess, self.retryLater_.bind(self));
|
| - }
|
| - });
|
| };
|
|
|
| /**
|
| @@ -185,26 +193,25 @@ SurpriseWallpaper.prototype.setRandomWallpaper_ = function(dateString) {
|
| * @param {function} onFailure Failure callback.
|
| * @private
|
| */
|
| -SurpriseWallpaper.prototype.setWallpaperFromRssItem_ = function(item,
|
| - onSuccess,
|
| - onFailure) {
|
| +SurpriseWallpaper.prototype.setWallpaperFromRssItem_ = function(
|
| + item, onSuccess, onFailure) {
|
| var url = item.querySelector('link').textContent;
|
| - var layout = item.getElementsByTagNameNS(
|
| - Constants.WallpaperNameSpaceURI, 'layout')[0].textContent;
|
| + var layout =
|
| + item.getElementsByTagNameNS(Constants.WallpaperNameSpaceURI, 'layout')[0]
|
| + .textContent;
|
| var self = this;
|
| WallpaperUtil.fetchURL(url, 'arraybuffer', function(xhr) {
|
| if (xhr.response != null) {
|
| - chrome.wallpaperPrivate.setCustomWallpaper(xhr.response, layout, false,
|
| - 'surprise_wallpaper',
|
| - onSuccess);
|
| - WallpaperUtil.saveWallpaperInfo(url, layout,
|
| - Constants.WallpaperSourceEnum.Daily, '');
|
| + chrome.wallpaperPrivate.setCustomWallpaper(
|
| + xhr.response, layout, false, 'surprise_wallpaper', onSuccess);
|
| + WallpaperUtil.saveWallpaperInfo(
|
| + url, layout, Constants.WallpaperSourceEnum.Daily, '');
|
| var dateString = new Date().toDateString();
|
| WallpaperUtil.saveToLocalStorage(
|
| - Constants.AccessLastSurpriseWallpaperChangedDate,
|
| - dateString, function() {
|
| + Constants.AccessLastSurpriseWallpaperChangedDate, dateString,
|
| + function() {
|
| WallpaperUtil.saveToSyncStorage(
|
| - Constants.AccessLastSurpriseWallpaperChangedDate, dataString);
|
| + Constants.AccessLastSurpriseWallpaperChangedDate, dataString);
|
| });
|
| } else {
|
| self.updateRandomWallpaper_();
|
| @@ -220,9 +227,9 @@ SurpriseWallpaper.prototype.disable = function() {
|
| // Makes last changed date invalid.
|
| WallpaperUtil.saveToLocalStorage(
|
| Constants.AccessLastSurpriseWallpaperChangedDate, '', function() {
|
| - WallpaperUtil.saveToSyncStorage(
|
| - Constants.AccessLastSurpriseWallpaperChangedDate, '');
|
| - });
|
| + WallpaperUtil.saveToSyncStorage(
|
| + Constants.AccessLastSurpriseWallpaperChangedDate, '');
|
| + });
|
| };
|
|
|
| /**
|
| @@ -252,21 +259,23 @@ chrome.app.runtime.onLaunched.addListener(function() {
|
| return;
|
| }
|
|
|
| - chrome.app.window.create('main.html', {
|
| - frame: 'none',
|
| - width: WALLPAPER_PICKER_WIDTH,
|
| - height: WALLPAPER_PICKER_HEIGHT,
|
| - resizable: false,
|
| - alphaEnabled: true
|
| - }, function(w) {
|
| - wallpaperPickerWindow = w;
|
| - chrome.wallpaperPrivate.minimizeInactiveWindows();
|
| - w.onClosed.addListener(function() {
|
| - wallpaperPickerWindow = null;
|
| - chrome.wallpaperPrivate.restoreMinimizedWindows();
|
| - });
|
| - WallpaperUtil.testSendMessage('wallpaper-window-created');
|
| - });
|
| + chrome.app.window.create(
|
| + 'main.html', {
|
| + frame: 'none',
|
| + width: WALLPAPER_PICKER_WIDTH,
|
| + height: WALLPAPER_PICKER_HEIGHT,
|
| + resizable: false,
|
| + alphaEnabled: true
|
| + },
|
| + function(w) {
|
| + wallpaperPickerWindow = w;
|
| + chrome.wallpaperPrivate.minimizeInactiveWindows();
|
| + w.onClosed.addListener(function() {
|
| + wallpaperPickerWindow = null;
|
| + chrome.wallpaperPrivate.restoreMinimizedWindows();
|
| + });
|
| + WallpaperUtil.testSendMessage('wallpaper-window-created');
|
| + });
|
| });
|
|
|
| chrome.syncFileSystem.onFileStatusChanged.addListener(function(detail) {
|
| @@ -284,18 +293,17 @@ chrome.syncFileSystem.onFileStatusChanged.addListener(function(detail) {
|
| // custom wallpaper is set.
|
| Constants.WallpaperLocalStorage.get(
|
| Constants.AccessLocalWallpaperInfoKey, function(items) {
|
| - var localData = items[Constants.AccessLocalWallpaperInfoKey];
|
| - if (localData &&
|
| - localData.url == detail.fileEntry.name &&
|
| - localData.source == Constants.WallpaperSourceEnum.Custom) {
|
| - WallpaperUtil.setCustomWallpaperFromSyncFS(localData.url,
|
| - localData.layout);
|
| - }
|
| - });
|
| + var localData = items[Constants.AccessLocalWallpaperInfoKey];
|
| + if (localData && localData.url == detail.fileEntry.name &&
|
| + localData.source == Constants.WallpaperSourceEnum.Custom) {
|
| + WallpaperUtil.setCustomWallpaperFromSyncFS(
|
| + localData.url, localData.layout);
|
| + }
|
| + });
|
| // We only need to store the custom wallpaper if it was set by the
|
| // built-in wallpaper picker.
|
| if (!detail.fileEntry.name.startsWith(
|
| - Constants.ThirdPartyWallpaperPrefix)) {
|
| + Constants.ThirdPartyWallpaperPrefix)) {
|
| WallpaperUtil.storeWallpaperFromSyncFSToLocalFS(detail.fileEntry);
|
| }
|
| } else if (detail.action == 'deleted') {
|
| @@ -344,19 +352,23 @@ chrome.storage.onChanged.addListener(function(changes, namespace) {
|
| wpDocument.querySelector('#wallpaper-grid').classList.remove('small');
|
| Constants.WallpaperSyncStorage.get(
|
| Constants.AccessSyncSurpriseMeEnabledKey, function(item) {
|
| - var enable = item[Constants.AccessSyncSurpriseMeEnabledKey];
|
| - if (enable) {
|
| - wpDocument.querySelector('#checkbox').classList.add('checked');
|
| - if (wpDocument.querySelector('.check'))
|
| - wpDocument.querySelector('.check').style.visibility = 'hidden';
|
| - } else {
|
| - wpDocument.querySelector('#checkbox').classList.remove('checked');
|
| - if (wpDocument.querySelector('.check'))
|
| - wpDocument.querySelector('.check').style.visibility = 'visible';
|
| - }
|
| - wpDocument.querySelector('#categories-list').disabled = enable;
|
| - wpDocument.querySelector('#wallpaper-grid').disabled = enable;
|
| - });
|
| + var enable = item[Constants.AccessSyncSurpriseMeEnabledKey];
|
| + if (enable) {
|
| + wpDocument.querySelector('#checkbox')
|
| + .classList.add('checked');
|
| + if (wpDocument.querySelector('.check'))
|
| + wpDocument.querySelector('.check').style.visibility =
|
| + 'hidden';
|
| + } else {
|
| + wpDocument.querySelector('#checkbox')
|
| + .classList.remove('checked');
|
| + if (wpDocument.querySelector('.check'))
|
| + wpDocument.querySelector('.check').style.visibility =
|
| + 'visible';
|
| + }
|
| + wpDocument.querySelector('#categories-list').disabled = enable;
|
| + wpDocument.querySelector('#wallpaper-grid').disabled = enable;
|
| + });
|
| }
|
| };
|
|
|
| @@ -380,68 +392,84 @@ chrome.storage.onChanged.addListener(function(changes, namespace) {
|
|
|
| Constants.WallpaperSyncStorage.get(
|
| Constants.AccessSyncSurpriseMeEnabledKey, function(enabledItems) {
|
| - var syncSurpriseMeEnabled =
|
| - enabledItems[Constants.AccessSyncSurpriseMeEnabledKey];
|
| -
|
| - Constants.WallpaperSyncStorage.get(
|
| - Constants.AccessLastSurpriseWallpaperChangedDate,
|
| - function(items) {
|
| - var syncLastSurpriseMeChangedDate =
|
| - 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)) {
|
| - Constants.WallpaperLocalStorage.get(
|
| - Constants.AccessLocalWallpaperInfoKey, function(infoItems) {
|
| - var localInfo =
|
| - infoItems[Constants.AccessLocalWallpaperInfoKey];
|
| - // 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 ||
|
| - 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();
|
| - }
|
| -
|
| - // 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);
|
| - }
|
| -
|
| - if (syncInfo && syncInfo.hasOwnProperty('appName'))
|
| - updateCheckMarkAndAppNameIfAppliable(syncInfo.appName);
|
| -
|
| - WallpaperUtil.saveToLocalStorage(
|
| - Constants.AccessLocalWallpaperInfoKey, syncInfo);
|
| - }
|
| - });
|
| - }
|
| - });
|
| - });
|
| + var syncSurpriseMeEnabled =
|
| + enabledItems[Constants.AccessSyncSurpriseMeEnabledKey];
|
| +
|
| + Constants.WallpaperSyncStorage.get(
|
| + Constants.AccessLastSurpriseWallpaperChangedDate,
|
| + function(items) {
|
| + var syncLastSurpriseMeChangedDate =
|
| + 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)) {
|
| + Constants.WallpaperLocalStorage.get(
|
| + Constants.AccessLocalWallpaperInfoKey,
|
| + function(infoItems) {
|
| + var localInfo =
|
| + infoItems[Constants
|
| + .AccessLocalWallpaperInfoKey];
|
| + // 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 || 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();
|
| + }
|
| +
|
| + // 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);
|
| + }
|
| +
|
| + if (syncInfo &&
|
| + syncInfo.hasOwnProperty('appName'))
|
| + updateCheckMarkAndAppNameIfAppliable(
|
| + syncInfo.appName);
|
| +
|
| + WallpaperUtil.saveToLocalStorage(
|
| + Constants.AccessLocalWallpaperInfoKey,
|
| + syncInfo);
|
| + }
|
| + });
|
| + }
|
| + });
|
| + });
|
| }
|
| } else {
|
| // If sync theme is disabled, use values from chrome.storage.local to
|
| @@ -465,9 +493,9 @@ chrome.wallpaperPrivate.onWallpaperChangedBy3rdParty.addListener(function(
|
| wallpaper, thumbnail, layout, appName) {
|
| WallpaperUtil.saveToLocalStorage(
|
| Constants.AccessLocalSurpriseMeEnabledKey, false, function() {
|
| - WallpaperUtil.saveToSyncStorage(Constants.AccessSyncSurpriseMeEnabledKey,
|
| - false);
|
| - });
|
| + WallpaperUtil.saveToSyncStorage(
|
| + Constants.AccessSyncSurpriseMeEnabledKey, false);
|
| + });
|
| SurpriseWallpaper.getInstance().disable();
|
|
|
| // Make third party wallpaper syncable through different devices.
|
|
|