Bug 1345991 - SVG Image Elements aren't displayed in the Page Info view media list. r?florian
MozReview-Commit-ID: LlHwl2Kn1Vk
--- a/browser/base/content/content.js
+++ b/browser/base/content/content.js
@@ -1250,18 +1250,20 @@ var PageInfoListener = {
// One swi^H^H^Hif-else to rule them all.
if (elem instanceof content.HTMLImageElement) {
addImage(elem.src, strings.mediaImg,
(elem.hasAttribute("alt")) ? elem.alt : strings.notSet, elem, false);
} else if (elem instanceof content.SVGImageElement) {
try {
// Note: makeURLAbsolute will throw if either the baseURI is not a valid URI
// or the URI formed from the baseURI and the URL is not a valid URI.
- let href = makeURLAbsolute(elem.baseURI, elem.href.baseVal);
- addImage(href, strings.mediaImg, "", elem, false);
+ if (elem.href.baseVal) {
+ let href = Services.io.newURI(elem.href.baseVal, null, Services.io.newURI(elem.baseURI)).spec;
+ addImage(href, strings.mediaImg, "", elem, false);
+ }
} catch (e) { }
} else if (elem instanceof content.HTMLVideoElement) {
addImage(elem.currentSrc, strings.mediaVideo, "", elem, false);
} else if (elem instanceof content.HTMLAudioElement) {
addImage(elem.currentSrc, strings.mediaAudio, "", elem, false);
} else if (elem instanceof content.HTMLLinkElement) {
if (elem.rel && /\bicon\b/i.test(elem.rel)) {
addImage(elem.href, strings.mediaLink, "", elem, false);
--- a/browser/base/content/test/pageinfo/browser.ini
+++ b/browser/base/content/test/pageinfo/browser.ini
@@ -1,8 +1,12 @@
[DEFAULT]
[browser_pageInfo.js]
support-files =
../general/feed_tab.html
[browser_pageinfo_images.js]
[browser_pageinfo_image_info.js]
skip-if = (os == 'linux' && e10s) # bug 1161699
+[browser_pageinfo_svg_image.js]
+support-files =
+ svg_image.html
+ ../general/title_test.svg
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/pageinfo/browser_pageinfo_svg_image.js
@@ -0,0 +1,37 @@
+function test() {
+ waitForExplicitFinish();
+
+ gBrowser.selectedTab = gBrowser.addTab();
+
+ gBrowser.selectedBrowser.addEventListener("load", function() {
+ var pageInfo = BrowserPageInfo(gBrowser.selectedBrowser.currentURI.spec,
+ "mediaTab");
+
+ pageInfo.addEventListener("load", function() {
+ pageInfo.onFinished.push(function() {
+ executeSoon(function() {
+ var imageTree = pageInfo.document.getElementById("imagetree");
+ var imageRowsNum = imageTree.view.rowCount;
+
+ ok(imageTree, "Image tree is null (media tab is broken)");
+
+ is(imageRowsNum, 1, "should have one image");
+
+ // Only bother running this if we've got the right number of rows.
+ if (imageRowsNum == 1) {
+ is(imageTree.view.getCellText(0, imageTree.columns[0]),
+ "https://example.com/browser/browser/base/content/test/pageinfo/title_test.svg",
+ "The URL should be the svg image.");
+ }
+
+ pageInfo.close();
+ gBrowser.removeCurrentTab();
+ finish();
+ });
+ });
+ }, {capture: true, once: true});
+ }, {capture: true, once: true});
+
+ content.location =
+ "https://example.com/browser/browser/base/content/test/pageinfo/svg_image.html";
+}
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/pageinfo/svg_image.html
@@ -0,0 +1,11 @@
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <title>Test for page info svg images</title>
+ </head>
+ <body>
+ <svg width="20" height="20">
+ <image xlink:href="title_test.svg" width="20" height="20">
+ </svg>
+ </body>
+</html>