Bug 1345991 - SVG Image Elements aren't displayed in the Page Info view media list. r?florian draft
authorMark Banner <standard8@mozilla.com>
Mon, 20 Mar 2017 23:40:44 +0100
changeset 502971 4977104bd97207d06d1f031377eb0e432eca7a00
parent 502661 201231223cd4354a450c3e5d80959f35b8e4cf0c
child 550295 495183eb353ef0d9ab52403989ae5887670991dd
push id50435
push userbmo:standard8@mozilla.com
push dateWed, 22 Mar 2017 14:50:35 +0000
reviewersflorian
bugs1345991
milestone55.0a1
Bug 1345991 - SVG Image Elements aren't displayed in the Page Info view media list. r?florian MozReview-Commit-ID: LlHwl2Kn1Vk
browser/base/content/content.js
browser/base/content/test/pageinfo/browser.ini
browser/base/content/test/pageinfo/browser_pageinfo_svg_image.js
browser/base/content/test/pageinfo/svg_image.html
--- 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>