Bug 1255773 - Account for multiple media elements per node for Page Info. r=florian

MozReview-Commit-ID: GwzIYVsLgue
This commit is contained in:
Mike Conley
2016-04-05 12:39:24 -04:00
parent c98f0fed59
commit 99c9000a61
2 changed files with 14 additions and 9 deletions

View File

@@ -1072,11 +1072,11 @@ var PageInfoListener = {
// Goes through all the elements on the doc. imageViewRows takes only the media elements.
while (iterator.nextNode()) {
let mediaNode = this.getMediaNode(document, strings, iterator.currentNode);
let mediaItems = this.getMediaItems(document, strings, iterator.currentNode);
if (mediaNode) {
if (mediaItems.length) {
sendAsyncMessage("PageInfo:mediaData",
{imageViewRow: mediaNode, isComplete: false});
{mediaItems, isComplete: false});
}
if (++nodeCount % 500 == 0) {
@@ -1089,15 +1089,17 @@ var PageInfoListener = {
sendAsyncMessage("PageInfo:mediaData", {isComplete: true});
},
getMediaNode: function(document, strings, elem)
getMediaItems: function(document, strings, elem)
{
// Check for images defined in CSS (e.g. background, borders), any node may have multiple.
// Check for images defined in CSS (e.g. background, borders)
let computedStyle = elem.ownerDocument.defaultView.getComputedStyle(elem, "");
let mediaElement = null;
// A node can have multiple media items associated with it - for example,
// multiple background images.
let mediaItems = [];
let addImage = (url, type, alt, elem, isBg) => {
let element = this.serializeElementInfo(document, url, type, alt, elem, isBg);
mediaElement = [url, type, alt, element, isBg];
mediaItems.push([url, type, alt, element, isBg]);
};
if (computedStyle) {
@@ -1165,7 +1167,7 @@ var PageInfoListener = {
addImage(elem.src, strings.mediaEmbed, "", elem, false);
}
return mediaElement;
return mediaItems;
},
/**