Bug 1402930 - Added Unit Test for Image's srcset scenario; r=bradwerth
MozReview-Commit-ID: CrTtkEKOkuW
--- 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;