Chromium Code Reviews| 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 5ec69b88d2485a9de43e94bffae11de52d22eb6e..4a7aa0bc17416a3c86763817e0041e44f53b0b8b 100644 |
| --- a/chrome/browser/resources/local_ntp/most_visited_single.js |
| +++ b/chrome/browser/resources/local_ntp/most_visited_single.js |
| @@ -16,8 +16,13 @@ |
| * @const |
| */ |
| var LOG_TYPE = { |
| - // All NTP Tiles have finished loading (successfully or failing). |
| + // All NTP tiles have finished loading (successfully or failing). |
| NTP_ALL_TILES_LOADED: 11, |
| + // The data for all NTP tiles (title, URL, etc, but not the thumbnail image) |
| + // has been received. In contrast to NTP_ALL_TILES_LOADED, this is recorded |
| + // before the actual DOM elements have loaded (in particular the thumbnail |
| + // images). |
| + NTP_ALL_TILES_RECEIVED: 12, |
| }; |
| @@ -116,7 +121,7 @@ function logMostVisitedNavigation(tileIndex, tileSource) { |
| var countLoad = function() { |
| loadedCounter -= 1; |
| if (loadedCounter <= 0) { |
| - showTiles(); |
| + swapInNewTiles(); |
| logEvent(LOG_TYPE.NTP_ALL_TILES_LOADED); |
| window.parent.postMessage({cmd: 'loaded'}, DOMAIN_ORIGIN); |
| // TODO(treib): Why do we reset to 1 here? |
| @@ -151,8 +156,7 @@ var handleCommand = function(data) { |
| if (cmd == 'tile') { |
| addTile(data); |
| } else if (cmd == 'show') { |
| - countLoad(); |
| - hideOverflowTiles(data); |
| + showTiles(data); |
| } else if (cmd == 'updateTheme') { |
| updateTheme(data); |
| } else if (cmd == 'tilesVisible') { |
| @@ -163,6 +167,21 @@ var handleCommand = function(data) { |
| }; |
| +/** |
| + * Handler for the 'show' message from the host page. |
| + * @param {object} info Data received in the message. |
| + */ |
| +var showTiles = function(info) { |
|
Marc Treib
2017/02/16 13:09:28
The old "showTiles" was renamed to "swapInNewTiles
|
| + logEvent(LOG_TYPE.NTP_ALL_TILES_RECEIVED); |
| + countLoad(); |
| + hideOverflowTiles(info); |
| +} |
| + |
| + |
| +/** |
| + * Handler for the 'updateTheme' message from the host page. |
| + * @param {object} info Data received in the message. |
| + */ |
| var updateTheme = function(info) { |
| var themeStyle = []; |
| @@ -203,7 +222,8 @@ var updateTheme = function(info) { |
| /** |
| - * Hides extra tiles that don't fit on screen. |
| + * Hides extra tiles that don't fit on screen. Called in response to the 'show' |
| + * and 'tilesVisible' messages from the host page. |
| */ |
| var hideOverflowTiles = function(data) { |
| var tileAndEmptyTileList = document.querySelectorAll( |
| @@ -227,10 +247,11 @@ var removeAllOldTiles = function() { |
| /** |
| - * Called when the host page has finished sending us tile information and |
| - * we are ready to show the new tiles and drop the old ones. |
| + * Called when all tiles have finished loading (successfully or not), including |
| + * their thumbnail images, and we are ready to show the new tiles and drop the |
| + * old ones. |
| */ |
| -var showTiles = function() { |
| +var swapInNewTiles = function() { |
| // Store the tiles on the current closure. |
| var cur = tiles; |
| @@ -267,20 +288,22 @@ var showTiles = function() { |
| } |
| cur.style.opacity = 1.0; |
| - // Make sure the tiles variable contain the next tileset we may use. |
| + // Make sure the tiles variable contain the next tileset we'll use if the host |
| + // page sends us an updated set of tiles. |
| tiles = document.createElement('div'); |
| }; |
| /** |
| - * Called when the host page wants to add a suggestion tile. |
| - * For Most Visited, it grabs the data from Chrome and pass on. |
| - * For host page generated it just passes the data. |
| + * Handler for the 'show' message from the host page, called when it wants to |
| + * add a suggestion tile. |
| + * It's also used to fill up our tiles to NUMBER_OF_TILES if necessary. |
| * @param {object} args Data for the tile to be rendered. |
| */ |
| var addTile = function(args) { |
| if (isFinite(args.rid)) { |
| - // If a valid number passed in |args.rid|: a local chrome suggestion. |
| + // If a valid number passed in |args.rid|: a local Chrome suggestion. Grab |
| + // the data from the embeddedSearch API. |
| var data = |
| chrome.embeddedSearch.newTabPage.getMostVisitedItemData(args.rid); |
| if (!data) |
| @@ -535,7 +558,7 @@ var renderTile = function(data) { |
| var init = function() { |
| // Create a new DOM element to hold the tiles. The tiles will be added |
| // one-by-one via addTile, and the whole thing will be inserted into the page |
| - // in showTiles, after the parent has sent us the 'show' message, and all |
| + // in swapInNewTiles, after the parent has sent us the 'show' message, and all |
| // thumbnails and favicons have loaded. |
| tiles = document.createElement('div'); |