gecko-dev/layout/style/test/test_mq_changes_in_iframe.html
Emilio Cobos Álvarez 7b19f0d6d4 Bug 1609024 - Remove cache mechanism which is not very useful. r=hiro,snorp,mccr8
I don't think all this complexity is worth it for having a
marginally-more-realistic testing story. Using the pref just works and we should
do that, I think.

Differential Revision: https://phabricator.services.mozilla.com/D59980
2020-05-21 17:02:06 +00:00

55 lines
1.6 KiB
HTML

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Media feature value change propagation in an iframe</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<p id="display"></p>
<div id="content" style="display: none"></div>
<iframe id="iframe"></iframe>
<pre id="test"></pre>
<script>
add_task(async () => {
const mqString = "(prefers-reduced-motion: reduce)";
await SpecialPowers.pushPrefEnv({ set: [['ui.prefersReducedMotion', 0]]});
iframe.src = SimpleTest.getTestFileURL("mq_changes_child.html")
.replace("mochi.test:8888", "example.com");
await new Promise(resolve => window.addEventListener("message", event => {
if (event.data == "ready") {
resolve();
}
}, { once: true } ));
const mql = matchMedia(mqString);
ok(!mql.matches, `Doesn't matches ${mqString}`);
const changedInThisDocument = new Promise(resolve => {
mql.addEventListener("change", event => { resolve(event.matches); });
});
const changedInIFrame = new Promise(resolve => {
window.addEventListener("message", event => {
if ("matches" in event.data) {
resolve(event.data.matches);
}
}, { once: true });
});
await SpecialPowers.pushPrefEnv({ set: [['ui.prefersReducedMotion', 1]]});
const results =
await Promise.allSettled([ changedInThisDocument, changedInIFrame ]);
results.forEach(result => {
is(result.status, "fulfilled");
ok(result.value, `Matches ${mqString}`);
});
});
</script>
</body>
</html>