Index: chrome/browser/resources/local_ntp/most_visited_single.js |
diff --git a/chrome/browser/resources/local_ntp/most_visited_single.js b/chrome/browser/resources/local_ntp/most_visited_single.js |
index 8590dca1fa174462c9bcac6e96c8ec4492db88e3..676098c8b6339151b1b2ef4c93bb83a637cc9f28 100644 |
--- a/chrome/browser/resources/local_ntp/most_visited_single.js |
+++ b/chrome/browser/resources/local_ntp/most_visited_single.js |
@@ -278,6 +278,7 @@ var addTile = function(args) { |
if (args.rid) { |
var data = chrome.embeddedSearch.searchBox.getMostVisitedItemData(args.rid); |
data.tid = data.rid; |
+ data.thumbnailUrl = [data.thumbnailUrl]; |
huangs
2015/05/11 20:31:16
This is hacky, please have:
data.thumbnailUrlLis
fserb
2015/05/11 20:39:56
Done.
|
data.faviconUrl = 'chrome-search://favicon/size/16@' + |
window.devicePixelRatio + 'x/' + data.renderViewId + '/' + data.tid; |
tiles.appendChild(renderTile(data)); |
@@ -356,26 +357,79 @@ var renderTile = function(data) { |
title.classList.add('multiline'); |
} |
- var hasIcon = USE_ICONS && data.largeIconUrl; |
- var hasThumb = !USE_ICONS && data.thumbnailUrl; |
- var thumb = tile.querySelector('.mv-thumb'); |
- if (hasIcon || hasThumb) { |
- var img = document.createElement('img'); |
- img.title = data.title; |
- if (hasIcon) { |
+ if (USE_ICONS) { |
+ var thumb = tile.querySelector('.mv-thumb'); |
+ if (data.largeIconUrl) { |
+ var img = document.createElement('img'); |
+ img.title = data.title; |
img.src = data.largeIconUrl; |
img.classList.add('large-icon'); |
- } else { // hasThumb |
- img.src = data.thumbnailUrl; |
- img.classList.add('thumbnail'); |
- } |
- loadedCounter += 1; |
- img.addEventListener('load', countLoad); |
- if (data.largeIconUrl) { |
+ loadedCounter += 1; |
+ img.addEventListener('load', countLoad); |
img.addEventListener('load', function(ev) { |
thumb.classList.add('large-icon-outer'); |
}); |
+ img.addEventListener('error', countLoad); |
+ img.addEventListener('error', function(ev) { |
+ thumb.classList.add('failed-img'); |
+ thumb.removeChild(img); |
+ logEvent(LOG_TYPE.NTP_THUMBNAIL_ERROR); |
+ }); |
+ thumb.appendChild(img); |
+ logEvent(LOG_TYPE.NTP_THUMBNAIL_TILE); |
+ } else { |
+ thumb.classList.add('failed-img'); |
} |
+ } else { // THUMBNAILS |
+ var thumb = tile.querySelector('.mv-thumb'); |
+ |
Mathieu
2015/05/11 20:27:24
nit: extra newline
fserb
2015/05/11 20:39:56
Done.
|
+ var img = document.createElement('img'); |
+ var loaded = false; |
+ var results = []; |
Mathieu
2015/05/11 20:27:24
Add a comment like: // Used to keep track of loadi
fserb
2015/05/11 20:39:56
Done.
|
+ |
+ var loadBestImage = function() { |
+ if (loaded) return; |
huangs
2015/05/11 20:31:16
Move return to next line.
fserb
2015/05/11 20:39:56
Done.
|
+ for (i = 0; i < results.length; ++i) { |
+ if (results[i] === null) return; |
huangs
2015/05/11 20:31:16
Move return to next line.
fserb
2015/05/11 20:39:56
Done.
|
+ if (results[i] != false) { |
+ img.src = results[i]; |
+ loaded = true; |
+ return; |
+ } |
+ } |
+ thumb.classList.add('failed-img'); |
+ thumb.removeChild(img); |
+ logEvent(LOG_TYPE.NTP_THUMBNAIL_ERROR); |
+ }; |
+ |
+ var acceptImage = function(idx, url) { |
+ return function(ev) { |
+ results[idx] = url; |
+ loadBestImage(); |
+ }; |
+ }; |
+ |
+ var rejectImage = function(i) { |
huangs
2015/05/11 20:31:16
This |i| is a number.
fserb
2015/05/11 20:39:56
Done.
|
+ return function(ev) { |
+ results[i] = false; |
+ loadBestImage(); |
+ }; |
+ }; |
+ |
+ var images = []; |
Mathieu
2015/05/11 20:27:24
remove
fserb
2015/05/11 20:39:56
Done.
|
+ |
+ for (var t = 0; t < data.thumbnailUrl.length; ++t) { |
Mathieu
2015/05/11 20:27:24
could you add a comment above saying that the best
fserb
2015/05/11 20:39:56
Done.
|
+ results.push(null); |
+ var i = new Image(); |
huangs
2015/05/11 20:31:16
This |i| is an Image, and |t| is now the index. P
fserb
2015/05/11 20:39:56
Done.
|
+ i.src = data.thumbnailUrl[t]; |
Mathieu
2015/05/11 20:28:58
does it completely poop out if data.thumbnailUrl i
fserb
2015/05/11 20:39:56
it does get an onerror for undefined. But I added
|
+ i.onload = acceptImage(t, data.thumbnailUrl[t]); |
+ i.onerror = rejectImage(t); |
+ } |
+ |
+ img.title = data.title; |
+ img.classList.add('thumbnail'); |
+ loadedCounter += 1; |
+ img.addEventListener('load', countLoad); |
img.addEventListener('error', countLoad); |
img.addEventListener('error', function(ev) { |
thumb.classList.add('failed-img'); |
@@ -384,11 +438,7 @@ var renderTile = function(data) { |
}); |
thumb.appendChild(img); |
logEvent(LOG_TYPE.NTP_THUMBNAIL_TILE); |
- } else { |
- thumb.classList.add('failed-img'); |
- } |
- if (!USE_ICONS) { |
var favicon = tile.querySelector('.mv-favicon'); |
if (data.faviconUrl) { |
var fi = document.createElement('img'); |