// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * @fileoverview Rendering for iframed most visited thumbnails. */ window.addEventListener('DOMContentLoaded', function() { 'use strict'; fillMostVisited(document.location, function(params, data) { function logEvent(eventName) { chrome.embeddedSearch.newTabPage.logEvent(eventName); } function logMostVisitedImpression(tileIndex, provider) { chrome.embeddedSearch.newTabPage.logMostVisitedImpression( tileIndex, provider); } function displayLink(link) { document.body.appendChild(link); window.parent.postMessage('linkDisplayed', '{{ORIGIN}}'); } function showDomainElement() { var link = createMostVisitedLink( params, data.url, data.title, undefined, data.direction, data.provider); var domain = document.createElement('div'); domain.textContent = data.domain; link.appendChild(domain); displayLink(link); } // Called on intentionally empty tiles for which the visuals are handled // externally by the page itself. function showEmptyTile() { displayLink(createMostVisitedLink( params, data.url, data.title, undefined, data.direction, data.provider)); } // Creates and adds an image. function createThumbnail(src) { var image = document.createElement('img'); image.onload = function() { var link = createMostVisitedLink( params, data.url, data.title, undefined, data.direction, data.provider); // Use blocker to prevent context menu from showing image-related items. var blocker = document.createElement('span'); blocker.className = 'blocker'; link.appendChild(blocker); link.appendChild(image); displayLink(link); }; image.onerror = function() { // If no external thumbnail fallback (etfb), and have domain. if (!params.etfb && data.domain) { showDomainElement(); logEvent(NTP_LOGGING_EVENT_TYPE.NTP_GRAY_TILE_FALLBACK); } else { showEmptyTile(); logEvent(NTP_LOGGING_EVENT_TYPE.NTP_EXTERNAL_TILE_FALLBACK); } logEvent(NTP_LOGGING_EVENT_TYPE.NTP_THUMBNAIL_ERROR); }; image.src = src; } if (data.dummy) { showEmptyTile(); logEvent(NTP_LOGGING_EVENT_TYPE.NTP_EXTERNAL_TILE); } else if (data.thumbnailUrl) { createThumbnail(data.thumbnailUrl); logEvent(NTP_LOGGING_EVENT_TYPE.NTP_THUMBNAIL_TILE); } else if (data.domain) { showDomainElement(); logEvent(NTP_LOGGING_EVENT_TYPE.NTP_GRAY_TILE); } else { showEmptyTile(); logEvent(NTP_LOGGING_EVENT_TYPE.NTP_EXTERNAL_TILE); } logEvent(NTP_LOGGING_EVENT_TYPE.NTP_TILE); // Log an impression if we know the position of the tile. if (isFinite(params.pos) && data.provider) { logMostVisitedImpression(parseInt(params.pos, 10), data.provider); } }); });