Fix missing "..." in the supervised user import dialog.
[chromium-blink-merge.git] / chrome / browser / resources / local_ntp / most_visited_thumbnail.js
blob2c3e770702b85e8ed2cd2d105182cce47b83cde9
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.
6 /**
7  * @fileoverview Rendering for iframed most visited thumbnails.
8  */
10 window.addEventListener('DOMContentLoaded', function() {
11   'use strict';
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.direction,
28           data.provider);
29       var domain = document.createElement('div');
30       domain.textContent = data.domain;
31       link.appendChild(domain);
32       displayLink(link);
33     }
34     // Called on intentionally empty tiles for which the visuals are handled
35     // externally by the page itself.
36     function showEmptyTile() {
37       displayLink(createMostVisitedLink(
38           params, data.url, data.title, undefined, data.direction,
39           data.provider));
40     }
41     // Creates and adds an image.
42     function createThumbnail(src) {
43       var image = document.createElement('img');
44       image.onload = function() {
45         var link = createMostVisitedLink(
46             params, data.url, data.title, undefined, data.direction,
47             data.provider);
48         // Use blocker to prevent context menu from showing image-related items.
49         var blocker = document.createElement('span');
50         blocker.className = 'blocker';
51         link.appendChild(blocker);
52         link.appendChild(image);
53         displayLink(link);
54       };
55       image.onerror = function() {
56         // If no external thumbnail fallback (etfb), and have domain.
57         if (!params.etfb && data.domain) {
58           showDomainElement();
59           logEvent(NTP_LOGGING_EVENT_TYPE.NTP_GRAY_TILE_FALLBACK);
60         } else {
61           showEmptyTile();
62           logEvent(NTP_LOGGING_EVENT_TYPE.NTP_EXTERNAL_TILE_FALLBACK);
63         }
64         logEvent(NTP_LOGGING_EVENT_TYPE.NTP_THUMBNAIL_ERROR);
65       };
66       image.src = src;
67     }
69     if (data.dummy) {
70       showEmptyTile();
71       logEvent(NTP_LOGGING_EVENT_TYPE.NTP_EXTERNAL_TILE);
72     } else if (data.thumbnailUrl) {
73       createThumbnail(data.thumbnailUrl);
74       logEvent(NTP_LOGGING_EVENT_TYPE.NTP_THUMBNAIL_TILE);
75     } else if (data.domain) {
76       showDomainElement();
77       logEvent(NTP_LOGGING_EVENT_TYPE.NTP_GRAY_TILE);
78     } else {
79       showEmptyTile();
80       logEvent(NTP_LOGGING_EVENT_TYPE.NTP_EXTERNAL_TILE);
81     }
82     logEvent(NTP_LOGGING_EVENT_TYPE.NTP_TILE);
84     // Log an impression if we know the position of the tile.
85     if (isFinite(params.pos) && data.provider) {
86       logMostVisitedImpression(parseInt(params.pos, 10), data.provider);
87     }
88   });
89 });