Index: chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js |
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js |
index 74e65edeb9fc9c2b4a371ab4b433d8541d606e78..130bc42c59523e63d97496441d4fd0eca9cf87be 100644 |
--- a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js |
+++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js |
@@ -32,19 +32,36 @@ cr.define('wallpapers', function() { |
decorate: function() { |
GridItem.prototype.decorate.call(this); |
var imageEl = cr.doc.createElement('img'); |
- var xhr = new XMLHttpRequest(); |
- xhr.open('GET', this.dataItem.baseURL + ThumbnailSuffix, true); |
- xhr.responseType = 'blob'; |
- xhr.send(null); |
var self = this; |
- xhr.addEventListener('load', function(e) { |
- if (xhr.status === 200) { |
- self.textContent = ''; |
- imageEl.src = window.URL.createObjectURL(xhr.response); |
+ chrome.wallpaperPrivate.getThumbnail(this.dataItem.baseURL, |
+ function(data) { |
+ if (data) { |
+ var blob = new Blob([new Int8Array(data)]); |
+ imageEl.src = window.URL.createObjectURL(blob); |
imageEl.addEventListener('load', function(e) { |
window.URL.revokeObjectURL(this.src); |
}); |
self.appendChild(imageEl); |
+ } else { |
+ var xhr = new XMLHttpRequest(); |
+ xhr.open('GET', self.dataItem.baseURL + ThumbnailSuffix, true); |
+ xhr.responseType = 'arraybuffer'; |
+ xhr.send(null); |
+ xhr.addEventListener('load', function(e) { |
+ if (xhr.status === 200) { |
+ self.textContent = ''; |
+ chrome.wallpaperPrivate.saveThumbnail(self.dataItem.baseURL, |
+ xhr.response); |
+ var blob = new Blob([new Int8Array(xhr.response)]); |
+ imageEl.src = window.URL.createObjectURL(blob); |
+ // TODO(bshe): We currently use empty div to reserve space for |
+ // thumbnail. Use a placeholder like "loading" image may better. |
+ imageEl.addEventListener('load', function(e) { |
+ window.URL.revokeObjectURL(this.src); |
+ }); |
+ self.appendChild(imageEl); |
+ } |
+ }); |
} |
}); |
}, |