| OLD | NEW |
| 1 /* Copyright 2015 The Chromium Authors. All rights reserved. | 1 /* Copyright 2015 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 // Single iframe for NTP tiles. | 5 // Single iframe for NTP tiles. |
| 6 (function() { | 6 (function() { |
| 7 'use strict'; | 7 'use strict'; |
| 8 | 8 |
| 9 | 9 |
| 10 /** | 10 /** |
| 11 * The different types of events that are logged from the NTP. This enum is | 11 * The different types of events that are logged from the NTP. This enum is |
| 12 * used to transfer information from the NTP JavaScript to the renderer and is | 12 * used to transfer information from the NTP JavaScript to the renderer and is |
| 13 * not used as a UMA enum histogram's logged value. | 13 * not used as a UMA enum histogram's logged value. |
| 14 * Note: Keep in sync with common/ntp_logging_events.h | 14 * Note: Keep in sync with common/ntp_logging_events.h |
| 15 * @enum {number} | 15 * @enum {number} |
| 16 * @const | 16 * @const |
| 17 */ | 17 */ |
| 18 var LOG_TYPE = { | 18 var LOG_TYPE = { |
| 19 // The suggestion is coming from the server. | 19 // The suggestion is coming from the server. |
| 20 NTP_SERVER_SIDE_SUGGESTION: 0, | 20 NTP_SERVER_SIDE_SUGGESTION: 0, |
| 21 // The suggestion is coming from the client. | 21 // The suggestion is coming from the client. |
| 22 NTP_CLIENT_SIDE_SUGGESTION: 1, | 22 NTP_CLIENT_SIDE_SUGGESTION: 1, |
| 23 // Indicates a tile was rendered, no matter if it's a thumbnail, a gray tile | 23 // Indicates a tile was rendered, no matter if it's a thumbnail, a gray tile |
| 24 // or an external tile. | 24 // or an external tile. |
| 25 NTP_TILE: 2, | 25 NTP_TILE: 2, |
| 26 // The tile uses a local thumbnail image. | |
| 27 NTP_THUMBNAIL_TILE: 3, | |
| 28 // There was an error in loading both the thumbnail image and the fallback | |
| 29 // (if it was provided), resulting in a gray tile. | |
| 30 NTP_THUMBNAIL_ERROR: 6, | |
| 31 // A NTP Tile has finished loading (successfully or failing). | 26 // A NTP Tile has finished loading (successfully or failing). |
| 32 NTP_TILE_LOADED: 10, | 27 NTP_TILE_LOADED: 10, |
| 33 }; | 28 }; |
| 34 | 29 |
| 35 | 30 |
| 36 /** | 31 /** |
| 37 * The different sources that an NTP tile can have. | 32 * The different sources that an NTP tile can have. |
| 38 * Note: Keep in sync with common/ntp_logging_events.h | 33 * Note: Keep in sync with common/ntp_logging_events.h |
| 39 * @enum {number} | 34 * @enum {number} |
| 40 * @const | 35 * @const |
| (...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 463 img.classList.add('large-icon'); | 458 img.classList.add('large-icon'); |
| 464 loadedCounter += 1; | 459 loadedCounter += 1; |
| 465 img.addEventListener('load', countLoad); | 460 img.addEventListener('load', countLoad); |
| 466 img.addEventListener('load', function(ev) { | 461 img.addEventListener('load', function(ev) { |
| 467 thumb.classList.add('large-icon-outer'); | 462 thumb.classList.add('large-icon-outer'); |
| 468 }); | 463 }); |
| 469 img.addEventListener('error', countLoad); | 464 img.addEventListener('error', countLoad); |
| 470 img.addEventListener('error', function(ev) { | 465 img.addEventListener('error', function(ev) { |
| 471 thumb.classList.add('failed-img'); | 466 thumb.classList.add('failed-img'); |
| 472 thumb.removeChild(img); | 467 thumb.removeChild(img); |
| 473 logEvent(LOG_TYPE.NTP_THUMBNAIL_ERROR); | |
| 474 }); | 468 }); |
| 475 thumb.appendChild(img); | 469 thumb.appendChild(img); |
| 476 logEvent(LOG_TYPE.NTP_THUMBNAIL_TILE); | |
| 477 } else { | 470 } else { |
| 478 thumb.classList.add('failed-img'); | 471 thumb.classList.add('failed-img'); |
| 479 } | 472 } |
| 480 } else { // THUMBNAILS | 473 } else { // THUMBNAILS |
| 481 // We keep track of the outcome of loading possible thumbnails for this | 474 // We keep track of the outcome of loading possible thumbnails for this |
| 482 // tile. Possible values: | 475 // tile. Possible values: |
| 483 // - null: waiting for load/error | 476 // - null: waiting for load/error |
| 484 // - false: error | 477 // - false: error |
| 485 // - a string: URL that loaded correctly. | 478 // - a string: URL that loaded correctly. |
| 486 // This is populated by acceptImage/rejectImage and loadBestImage | 479 // This is populated by acceptImage/rejectImage and loadBestImage |
| (...skipping 12 matching lines...) Expand all Loading... |
| 499 return; | 492 return; |
| 500 } | 493 } |
| 501 if (results[i] != false) { | 494 if (results[i] != false) { |
| 502 img.src = results[i]; | 495 img.src = results[i]; |
| 503 loaded = true; | 496 loaded = true; |
| 504 return; | 497 return; |
| 505 } | 498 } |
| 506 } | 499 } |
| 507 thumb.classList.add('failed-img'); | 500 thumb.classList.add('failed-img'); |
| 508 thumb.removeChild(img); | 501 thumb.removeChild(img); |
| 509 logEvent(LOG_TYPE.NTP_THUMBNAIL_ERROR); | |
| 510 countLoad(); | 502 countLoad(); |
| 511 }; | 503 }; |
| 512 | 504 |
| 513 var acceptImage = function(idx, url) { | 505 var acceptImage = function(idx, url) { |
| 514 return function(ev) { | 506 return function(ev) { |
| 515 results[idx] = url; | 507 results[idx] = url; |
| 516 loadBestImage(); | 508 loadBestImage(); |
| 517 }; | 509 }; |
| 518 }; | 510 }; |
| 519 | 511 |
| 520 var rejectImage = function(idx) { | 512 var rejectImage = function(idx) { |
| 521 return function(ev) { | 513 return function(ev) { |
| 522 results[idx] = false; | 514 results[idx] = false; |
| 523 loadBestImage(); | 515 loadBestImage(); |
| 524 }; | 516 }; |
| 525 }; | 517 }; |
| 526 | 518 |
| 527 img.title = data.title; | 519 img.title = data.title; |
| 528 img.classList.add('thumbnail'); | 520 img.classList.add('thumbnail'); |
| 529 loadedCounter += 1; | 521 loadedCounter += 1; |
| 530 img.addEventListener('load', countLoad); | 522 img.addEventListener('load', countLoad); |
| 531 img.addEventListener('error', countLoad); | 523 img.addEventListener('error', countLoad); |
| 532 img.addEventListener('error', function(ev) { | 524 img.addEventListener('error', function(ev) { |
| 533 thumb.classList.add('failed-img'); | 525 thumb.classList.add('failed-img'); |
| 534 thumb.removeChild(img); | 526 thumb.removeChild(img); |
| 535 logEvent(LOG_TYPE.NTP_THUMBNAIL_ERROR); | |
| 536 }); | 527 }); |
| 537 thumb.appendChild(img); | 528 thumb.appendChild(img); |
| 538 logEvent(LOG_TYPE.NTP_THUMBNAIL_TILE); | |
| 539 | 529 |
| 540 if (data.thumbnailUrl) { | 530 if (data.thumbnailUrl) { |
| 541 img.src = data.thumbnailUrl; | 531 img.src = data.thumbnailUrl; |
| 542 } else { | 532 } else { |
| 543 // Get all thumbnailUrls for the tile. | 533 // Get all thumbnailUrls for the tile. |
| 544 // They are ordered from best one to be used to worst. | 534 // They are ordered from best one to be used to worst. |
| 545 for (var i = 0; i < data.thumbnailUrls.length; ++i) { | 535 for (var i = 0; i < data.thumbnailUrls.length; ++i) { |
| 546 results.push(null); | 536 results.push(null); |
| 547 } | 537 } |
| 548 for (var i = 0; i < data.thumbnailUrls.length; ++i) { | 538 for (var i = 0; i < data.thumbnailUrls.length; ++i) { |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 620 var html = document.querySelector('html'); | 610 var html = document.querySelector('html'); |
| 621 html.dir = 'rtl'; | 611 html.dir = 'rtl'; |
| 622 } | 612 } |
| 623 | 613 |
| 624 window.addEventListener('message', handlePostMessage); | 614 window.addEventListener('message', handlePostMessage); |
| 625 }; | 615 }; |
| 626 | 616 |
| 627 | 617 |
| 628 window.addEventListener('DOMContentLoaded', init); | 618 window.addEventListener('DOMContentLoaded', init); |
| 629 })(); | 619 })(); |
| OLD | NEW |