2 <script src="../../resources/js-test.js"></script>
4 <div id="sandbox"></div>
7 description("Media query listeners should fire on changes to matches status.");
8 var jsTestIsAsync = true;
10 var sandbox = document.getElementById("sandbox");
11 var iframe = document.createElement("iframe");
12 sandbox.appendChild(iframe);
14 var matchMedia = iframe.contentWindow.matchMedia;
15 var mediaList = matchMedia("(max-width: 100px)");
16 var expectedValue = "";
20 function runNextTest() {
21 tests[currentTest++]();
23 function listener(list) {
24 window.mediaListArgument = list;
25 shouldBe("mediaList.matches", "mediaListArgument.matches");
26 shouldBe("mediaList.media", "mediaListArgument.media");
27 shouldBe("mediaList.matches", expectedValue);
31 mediaList.addListener(listener);
33 shouldBe("mediaList.matches", "true");
36 iframe.style.width = "200px";
37 expectedValue = "false";
39 tests.push(function() {
41 iframe.style.width = "250px";
42 expectedValue = "false";
44 setTimeout(runNextTest, 20);
47 tests.push(function() {
49 iframe.style.width = "80px";
50 expectedValue = "true";
53 tests.push(function() {
55 mediaList.removeListener(listener);
56 iframe.style.width = "200px";
58 shouldBe("mediaList.matches", "false");
60 setTimeout(finishJSTest, 20);