| OLD | NEW |
| (Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 goog.require('image.collections.extension.domextractor.DocumentImageExtractor'); |
| 6 |
| 7 /* |
| 8 * Examines the DOM to find the image that is the most representative of the |
| 9 * webpage. |
| 10 */ |
| 11 var GetSalientImageUrl = function() { |
| 12 // Extract the referrer policy from the page. |
| 13 var referrerPolicy = 'default'; |
| 14 var metaTags = document.getElementsByTagName('meta'); |
| 15 for (var i = 0; i < metaTags.length; i++) { |
| 16 if (metaTags[i].name.toLowerCase() == 'referrer') { |
| 17 referrerPolicy = metaTags[i].content.toLowerCase(); |
| 18 break; |
| 19 } |
| 20 } |
| 21 |
| 22 // Determine which JSON method (stringify or encode) to use for encoding. |
| 23 // Some pages use a library that overrides JSON, so JSON['stringify'] is not |
| 24 // always available. |
| 25 var jsonEncoder = JSON['stringify']; |
| 26 if (!jsonEncoder) |
| 27 jsonEncoder = JSON['encode']; |
| 28 |
| 29 var context = new |
| 30 image.collections.extension.domextractor.DocumentImageExtractor.Context(); |
| 31 var documentImageExtractor = |
| 32 new image.collections.extension.domextractor.DocumentImageExtractor(); |
| 33 var images = documentImageExtractor.extractFromNodeList( |
| 34 document.querySelectorAll('img,link,meta'), context); |
| 35 |
| 36 var maxImage = null; |
| 37 var maxRelevance = 0; |
| 38 for (var i = 0; i < images.length; i++) { |
| 39 var currentImage = images[i]; |
| 40 var imageSize = currentImage.getSize(); |
| 41 if (!imageSize) |
| 42 continue; |
| 43 |
| 44 if (currentImage.getRelevance() > maxRelevance) { |
| 45 maxImage = currentImage; |
| 46 maxRelevance = currentImage.getRelevance(); |
| 47 } |
| 48 } |
| 49 |
| 50 if (maxImage === null) |
| 51 return ''; |
| 52 |
| 53 var result = jsonEncoder({ |
| 54 'imageUrl': maxImage.getUrl(), |
| 55 'referrerPolicy': referrerPolicy |
| 56 }); |
| 57 |
| 58 return result; |
| 59 }; |
| OLD | NEW |