Bug 1402930 - Added Unit Test for Image's srcset scenario; r=bradwerth draft
authorZER0 <zer0.kaos@gmail.com>
Mon, 25 Sep 2017 20:05:30 +0200
changeset 670732 aac71b7ff929fff6fc9d9dd0da0f56bbc5aac296
parent 670731 e97a48bd18e2080d72e4e0856bf1a0a796c9d8b6
child 733291 2b61c4dd763f0e2fd7643c6ea6d8ad1ad1163538
push id81692
push userbmo:zer0@mozilla.com
push dateTue, 26 Sep 2017 18:58:59 +0000
reviewersbradwerth
bugs1402930
milestone58.0a1
Bug 1402930 - Added Unit Test for Image's srcset scenario; r=bradwerth MozReview-Commit-ID: CrTtkEKOkuW
dom/tests/mochitest/general/test_contentViewer_overrideDPPX.html
--- a/dom/tests/mochitest/general/test_contentViewer_overrideDPPX.html
+++ b/dom/tests/mochitest/general/test_contentViewer_overrideDPPX.html
@@ -1,32 +1,46 @@
-<!DOCTYPE HTML>
+ <!DOCTYPE HTML>
 <html>
 <head>
   <title>nsIContentViewer::overrideDPPX test</title>
   <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
 </head>
 
 <body>
 
 <iframe></iframe>
+<img>
 
 <script type="application/javascript">
 
 SimpleTest.waitForExplicitFinish();
 
 const frameWindow = document.querySelector("iframe").contentWindow;
+const image = document.querySelector("img");
 
 const originalDPR = window.devicePixelRatio;
 const originalZoom = SpecialPowers.getFullZoom(window);
 const dppx = originalDPR * 1.5;
 const zoom = originalZoom * 0.5;
 
+const imageSets = {
+  "1x"  : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA" +
+          "GUlEQVQ4jWP4z8DwnxLMMGrAqAGjBgwXAwAwxP4QWURl4wAAAABJRU5ErkJggg==",
+  "1.5x": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA" +
+          "GElEQVQ4jWNgaGD4TxEeNWDUgFEDhosBAOsIfxAZ/CYXAAAAAElFTkSuQmCC",
+  "2x"  : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA" +
+          "GElEQVQ4jWNgYPj/nzI8asCoAaMGDBMDADKm/hBZaHKGAAAAAElFTkSuQmCC"
+};
+
+image.srcset = Object.entries(imageSets).map(v => v[1] + " " + v[0]).join(", ");
+image.src = imageSets["1x"];
+
 const setOverrideDPPX = (value) => {
   if (value > 0) {
     info(`override window's dppx to ${value}`);
   } else {
     info(`restore window's dppx to default value`);
   }
 
   SpecialPowers.setOverrideDPPX(window, value);
@@ -321,16 +335,48 @@ const gTests = {
       frameStyle.remove();
 
       setOverrideDPPX(0);
 
       done();
     }, {once: true});
 
     frameWindow.location.reload(true);
+  },
+
+  "test overrideDPPX with srcset": async function (done) {
+    assertValuesAreInitial();
+
+    let originalSrc = image.src;
+
+    setOverrideDPPX(1);
+    await new Promise(resolve => image.onload = resolve);
+
+    is(image.currentSrc, imageSets["1x"],
+      "Image url is properly set for 1dppx.");
+
+    setOverrideDPPX(1.5);
+    await new Promise(resolve => image.onload = resolve);
+
+    is(image.currentSrc, imageSets["1.5x"],
+      "Image url is properly set for 1.5dppx.");
+
+    setOverrideDPPX(2);
+    await new Promise(resolve => image.onload = resolve);
+
+    is(image.currentSrc, imageSets["2x"],
+      "Image is properly set for 2dppx.");
+
+    setOverrideDPPX(0);
+    await new Promise(resolve => image.onload = resolve);
+
+    is(image.currentSrc, originalSrc,
+      "Image is properly restored to the default value.");
+
+    done();
   }
 };
 
 function* runner(tests) {
   for (let name of Object.keys(tests)) {
     info(name);
     tests[name](next);
     yield undefined;