<!DOCTYPE html> <script src="../../resources/js-test.js"></script> <script> window.jsTestIsAsync = true; function runTest() { document.querySelector("iframe").style.width = "500px"; shouldBe("getComputedStyle(document.querySelector('iframe').contentDocument.querySelector('.cssom')).backgroundColor", "\"rgb(0, 128, 0)\""); shouldBe("getComputedStyle(document.querySelector('iframe').contentDocument.querySelector('.cssom-import')).backgroundColor", "\"rgb(0, 128, 0)\""); finishJSTest(); } </script> <iframe style="width: 300px; height: 300px;" srcdoc=' <style> .cssom-import, .cssom, .std { background: green; } @media (max-width: 400px) { .std { background-color: green; } } </style> <style id="media-rule"></style> <style id="import-rule"></style> Tests that dynamically inserted media rules apply. The boxes below should be green. <br> <div class="std">The styles for this box are handled in standard CSS.</div> <div class="cssom">The styles for this box are handled via CSS created dynamically.</div> <div class="cssom-import">The styles for this box are handled via CSS created dynamically with an import rule.</div> <script> document.getElementById("media-rule").sheet.insertRule("@media (max-width: 400px) { .cssom { background: red; display: block; }}", 0); document.getElementById("import-rule").sheet.insertRule("@import url(resources/media-query-insert-rule.css) (max-width: 400px)", 0); function hasImportLoaded() { return document.getElementById("import-rule").sheet.rules[0].styleSheet; } function runTestOnImportLoad() { if (hasImportLoaded()) top.runTest(); else setTimeout(runTestOnImportLoad); } document.documentElement.offsetTop; runTestOnImportLoad(); </script>'></iframe>