blob: afdaf4571286b534453c194362f27848e7311238 [file] [log] [blame]
<!DOCTYPE html>
<title>Element#requestFullscreen() when the document is not the active document</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<iframe allowfullscreen></iframe>
<script>
var t = async_test();
onload = t.step_func(() => {
var iframe = document.querySelector("iframe");
var documentBeforeNav = iframe.contentDocument;
documentBeforeNav.onfullscreenchange = t.unreached_func('fullscreenchange event');
documentBeforeNav.onfullscreenerror = t.unreached_func('fullscreenerror event');
iframe.onload = t.step_func(() => {
var p = documentBeforeNav.documentElement.requestFullscreen();
// If a promise was returned, it should already be rejected, so its reject
// callback should be invoked before a second promise's callback.
// This test does not fail if promises aren't implemented.
if (p) {
var rejected = false;
p.catch(t.step_func(() => rejected = true));
Promise.resolve().then(t.step_func(() => assert_true(rejected)));
}
// Per spec the fullscreenerror event should be fired at the next animtion
// frame, but at least Gecko and WebKit will instead effectively do "queue a
// task to fire ...". Use both rAF and setTimeout to fail even if the timing
// of the (unexpected) event isn't as expected.
requestAnimationFrame(t.step_func(() => {
step_timeout(t.step_func_done());
}));
});
// Navigate the iframe
window[0].location.href = '/common/blank.html';
});
</script>