OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 | 5 |
6 /** | 6 /** |
7 * @fileoverview Rendering for iframed most visited thumbnails. | 7 * @fileoverview Rendering for iframed most visited thumbnails. |
8 */ | 8 */ |
9 | 9 |
10 window.addEventListener('DOMContentLoaded', function() { | 10 window.addEventListener('DOMContentLoaded', function() { |
(...skipping 21 matching lines...) Expand all Loading... |
32 displayLink(link); | 32 displayLink(link); |
33 } | 33 } |
34 // Called on intentionally empty tiles for which the visuals are handled | 34 // Called on intentionally empty tiles for which the visuals are handled |
35 // externally by the page itself. | 35 // externally by the page itself. |
36 function showEmptyTile() { | 36 function showEmptyTile() { |
37 displayLink(createMostVisitedLink( | 37 displayLink(createMostVisitedLink( |
38 params, data.url, data.title, undefined, data.direction, | 38 params, data.url, data.title, undefined, data.direction, |
39 data.provider)); | 39 data.provider)); |
40 } | 40 } |
41 // Creates and adds an image. | 41 // Creates and adds an image. |
42 function createThumbnail(src) { | 42 function createThumbnail(src, imageClass) { |
43 var image = document.createElement('img'); | 43 var image = document.createElement('img'); |
| 44 if (imageClass) { |
| 45 image.classList.add(imageClass); |
| 46 } |
44 image.onload = function() { | 47 image.onload = function() { |
45 var link = createMostVisitedLink( | 48 var link = createMostVisitedLink( |
46 params, data.url, data.title, undefined, data.direction, | 49 params, data.url, data.title, undefined, data.direction, |
47 data.provider); | 50 data.provider); |
48 // Use blocker to prevent context menu from showing image-related items. | 51 // Use blocker to prevent context menu from showing image-related items. |
49 var blocker = document.createElement('span'); | 52 var blocker = document.createElement('span'); |
50 blocker.className = 'blocker'; | 53 blocker.className = 'blocker'; |
51 link.appendChild(blocker); | 54 link.appendChild(blocker); |
52 link.appendChild(image); | 55 link.appendChild(image); |
53 displayLink(link); | 56 displayLink(link); |
54 }; | 57 }; |
55 image.onerror = function() { | 58 image.onerror = function() { |
56 // If no external thumbnail fallback (etfb), and have domain. | 59 // If no external thumbnail fallback (etfb), and have domain. |
57 if (!params.etfb && data.domain) { | 60 if (!params.etfb && data.domain) { |
58 showDomainElement(); | 61 showDomainElement(); |
59 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_GRAY_TILE_FALLBACK); | 62 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_GRAY_TILE_FALLBACK); |
60 } else { | 63 } else { |
61 showEmptyTile(); | 64 showEmptyTile(); |
62 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_EXTERNAL_TILE_FALLBACK); | 65 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_EXTERNAL_TILE_FALLBACK); |
63 } | 66 } |
64 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_THUMBNAIL_ERROR); | 67 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_THUMBNAIL_ERROR); |
65 }; | 68 }; |
66 image.src = src; | 69 image.src = src; |
67 } | 70 } |
68 | 71 |
69 if (data.dummy) { | 72 if (data.dummy) { |
70 showEmptyTile(); | 73 showEmptyTile(); |
71 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_EXTERNAL_TILE); | 74 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_EXTERNAL_TILE); |
| 75 } else if (data.largeIconUrl) { |
| 76 createThumbnail(data.largeIconUrl, 'large-icon'); |
| 77 // TODO(huangs): Log event for large icons. |
72 } else if (data.thumbnailUrl) { | 78 } else if (data.thumbnailUrl) { |
73 createThumbnail(data.thumbnailUrl); | 79 createThumbnail(data.thumbnailUrl, 'thumbnail'); |
74 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_THUMBNAIL_TILE); | 80 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_THUMBNAIL_TILE); |
75 } else if (data.domain) { | 81 } else if (data.domain) { |
76 showDomainElement(); | 82 showDomainElement(); |
77 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_GRAY_TILE); | 83 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_GRAY_TILE); |
78 } else { | 84 } else { |
79 showEmptyTile(); | 85 showEmptyTile(); |
80 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_EXTERNAL_TILE); | 86 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_EXTERNAL_TILE); |
81 } | 87 } |
82 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_TILE); | 88 logEvent(NTP_LOGGING_EVENT_TYPE.NTP_TILE); |
83 | 89 |
84 // Log an impression if we know the position of the tile. | 90 // Log an impression if we know the position of the tile. |
85 if (isFinite(params.pos) && data.provider) { | 91 if (isFinite(params.pos) && data.provider) { |
86 logMostVisitedImpression(parseInt(params.pos, 10), data.provider); | 92 logMostVisitedImpression(parseInt(params.pos, 10), data.provider); |
87 } | 93 } |
88 }); | 94 }); |
89 }); | 95 }); |
OLD | NEW |