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", "mediaListArgument");
26 shouldBe("mediaList.matches", expectedValue);
30 mediaList.addListener(listener);
32 shouldBe("mediaList.matches", "true");
35 iframe.style.width = "200px";
36 expectedValue = "false";
38 tests.push(function() {
40 iframe.style.width = "250px";
41 expectedValue = "false";
43 setTimeout(runNextTest, 20);
46 tests.push(function() {
48 iframe.style.width = "80px";
49 expectedValue = "true";
52 tests.push(function() {
54 mediaList.removeListener(listener);
55 iframe.style.width = "200px";
57 shouldBe("mediaList.matches", "false");
59 setTimeout(finishJSTest, 20);