-
Notifications
You must be signed in to change notification settings - Fork 54
/
element-request-fullscreen-active-document.html
38 lines (35 loc) · 1.53 KB
/
element-request-fullscreen-active-document.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!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>