140 lines
3.7 KiB
HTML
140 lines
3.7 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=700764
|
|
|
|
Verifies that cancelFullScreen() rolls back to have the previous full-screen
|
|
element full-screen.
|
|
|
|
Tests:
|
|
* Request full-screen in doc.
|
|
* Request full-screen in doc on element not descended from full-screen element.
|
|
* Cancel full-screen, FSE should rollback to previous FSE.
|
|
* Request full-screen in subdoc.
|
|
* Cancel full-screen in subdoc, doc should be full-screen.
|
|
* Request full-screen in subdoc.
|
|
* Removing FSE should fully-exit full-screen.
|
|
|
|
|
|
-->
|
|
<head>
|
|
<title>Test for Bug 700764</title>
|
|
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script src="/tests/SimpleTest/EventUtils.js"></script>
|
|
<script type="application/javascript" src="file_fullscreen-utils.js"></script>
|
|
</head>
|
|
<body>
|
|
|
|
<div id="fse">
|
|
<div id="fse-inner">
|
|
<iframe id="subdoc" allowfullscreen srcdoc="<html><body bgcolor='black'></body></html>"></iframe>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="non-fse"></div>
|
|
|
|
<script type="application/javascript">
|
|
|
|
/** Test for Bug 700764 **/
|
|
|
|
function ok(condition, msg) {
|
|
opener.ok(condition, "[rollback] " + msg);
|
|
if (!condition) {
|
|
opener.finish();
|
|
}
|
|
}
|
|
|
|
function is(a, b, msg) {
|
|
opener.is(a, b, "[rollback] " + msg);
|
|
if (a != b) {
|
|
opener.finish();
|
|
}
|
|
}
|
|
|
|
function enterFullscreen(element, callback) {
|
|
addFullscreenChangeContinuation("enter", callback);
|
|
element.focus();
|
|
element.requestFullscreen();
|
|
}
|
|
|
|
function revertFullscreen(doc, callback) {
|
|
ok(doc.fullscreenElement != null, "Should only exit fullscreen on a fullscreen doc");
|
|
addFullscreenChangeContinuation("exit", callback, doc);
|
|
doc.exitFullscreen();
|
|
}
|
|
|
|
function e(id) {
|
|
return document.getElementById(id);
|
|
}
|
|
|
|
function requestFullscreen(element) {
|
|
element.focus();
|
|
element.requestFullscreen();
|
|
}
|
|
|
|
function begin() {
|
|
enterFullscreen(e("fse"), change1);
|
|
}
|
|
|
|
function change1() {
|
|
is(document.fullscreenElement, e("fse"), "Body should be FSE");
|
|
// Request full-screen from element not descendent from current FSE.
|
|
enterFullscreen(e("non-fse"), change2);
|
|
}
|
|
|
|
function change2() {
|
|
is(document.fullscreenElement, e("non-fse"), "FSE should be e('non-fse')");
|
|
revertFullscreen(document, change3);
|
|
}
|
|
|
|
function change3() {
|
|
is(document.fullscreenElement, e("fse"), "FSE should rollback to FSE.");
|
|
var iframe = e("subdoc");
|
|
enterFullscreen(iframe.contentDocument.body, change4);
|
|
}
|
|
|
|
function change4() {
|
|
var iframe = e("subdoc");
|
|
is(document.fullscreenElement, iframe, "Subdoc container should be FSE.");
|
|
is(iframe.contentDocument.fullscreenElement, iframe.contentDocument.body, "Subdoc body should be FSE in subdoc");
|
|
revertFullscreen(document, change5);
|
|
}
|
|
|
|
function change5() {
|
|
is(document.fullscreenElement, e("fse"), "FSE should rollback to FSE.");
|
|
revertFullscreen(document, change6);
|
|
}
|
|
|
|
function change6() {
|
|
is(document.fullscreenElement, null, "Should have left full-screen entirely");
|
|
enterFullscreen(e("fse"), change7);
|
|
}
|
|
|
|
function change7() {
|
|
is(document.fullscreenElement, e("fse"), "FSE should be e('fse')");
|
|
enterFullscreen(e("fse-inner"), change8);
|
|
}
|
|
|
|
function change8() {
|
|
var element = e('fse-inner');
|
|
is(document.fullscreenElement, element, "FSE should be e('fse-inner')");
|
|
|
|
// We're breaking out of two levels of fullscreen by removing the
|
|
// fullscreenElement. To make our helper functions work correctly,
|
|
// we set the fullscreenChangeEnters value to 1. This is a hack, but
|
|
// it is a hack that supports the expected behavior.
|
|
setFullscreenChangeEnters(1);
|
|
addFullscreenChangeContinuation("exit", change9);
|
|
info(`Removing FSE should exit fullscreen.`);
|
|
element.remove();
|
|
}
|
|
|
|
function change9() {
|
|
is(document.fullscreenElement, null, "Should have fully exited full-screen mode when removed FSE from doc");
|
|
opener.nextTest();
|
|
}
|
|
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|