1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 6 /** 7 * @fileoverview Rendering for iframed most visited thumbnails. 8 */ 9 10 window.addEventListener('DOMContentLoaded', function() { 11 'use strict'; 12 13 fillMostVisited(document.location, function(params, data) { 14 function logEvent(eventName) { 15 chrome.embeddedSearch.newTabPage.logEvent(eventName); 16 } 17 function logMostVisitedImpression(tileIndex, provider) { 18 chrome.embeddedSearch.newTabPage.logMostVisitedImpression( 19 tileIndex, provider); 20 } 21 function displayLink(link) { 22 document.body.appendChild(link); 23 window.parent.postMessage('linkDisplayed', '{{ORIGIN}}'); 24 } 25 function showDomainElement() { 26 var link = createMostVisitedLink( 27 params, data.url, data.title, undefined, data.provider); 28 var domain = document.createElement('div'); 29 domain.textContent = data.domain; 30 link.appendChild(domain); 31 displayLink(link); 32 } 33 // Called on intentionally empty tiles for which the visuals are handled 34 // externally by the page itself. 35 function showEmptyTile() { 36 displayLink(createMostVisitedLink( 37 params, data.url, data.title, undefined, data.provider)); 38 } 39 // Creates and adds an image. 40 function createThumbnail(src) { 41 var image = document.createElement('img'); 42 image.onload = function() { 43 var shadow = document.createElement('span'); 44 shadow.className = 'shadow'; 45 var link = createMostVisitedLink( 46 params, data.url, data.title, undefined, data.provider); 47 link.appendChild(shadow); 48 link.appendChild(image); 49 displayLink(link); 50 }; 51 image.onerror = function() { 52 if (data.domain) { 53 showDomainElement(); 54 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_GRAY_TILE_FALLBACK); 55 } else { 56 showEmptyTile(); 57 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_EXTERNAL_TILE_FALLBACK); 58 } 59 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_THUMBNAIL_ERROR); 60 }; 61 image.src = src; 62 } 63 64 if (data.thumbnailUrl) { 65 createThumbnail(data.thumbnailUrl); 66 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_THUMBNAIL_TILE); 67 } else if (data.domain) { 68 showDomainElement(); 69 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_GRAY_TILE); 70 } else { 71 showEmptyTile(); 72 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_EXTERNAL_TILE); 73 } 74 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_TILE); 75 76 // Log an impression if we know the position of the tile. 77 if (isFinite(params.pos) && data.provider) { 78 logMostVisitedImpression(parseInt(params.pos, 10), data.provider); 79 } 80 }); 81 }); 82