mirror of
https://github.com/servo/servo.git
synced 2025-08-17 03:15:34 +01:00
Update web-platform-tests to revision b'4a4653e088039aec186d6dc1d488120d77695c3a'
This commit is contained in:
parent
470a50ab60
commit
6337336fab
1043 changed files with 19705 additions and 6973 deletions
|
@ -1,78 +1,86 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<meta charset="utf-8" />
|
||||
<title>Recursive IFrame Fullscreen API success reporter</title>
|
||||
<body>
|
||||
<script>
|
||||
let child_frame = null;
|
||||
let fullscreen_events = [];
|
||||
document.onfullscreenchange = () => { fullscreen_events.push(true); };
|
||||
document.onfullscreenerror = () => { fullscreen_events.push(false); };
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="../../trusted-click.js"></script>
|
||||
<script>
|
||||
let child_frame = null;
|
||||
const events = [];
|
||||
|
||||
function send_report() {
|
||||
window.top.postMessage({"action": "report", "report": {
|
||||
"api": "fullscreen",
|
||||
"events": fullscreen_events,
|
||||
"frame": window.name,
|
||||
"fullscreenElementIsNull": document.fullscreenElement === null
|
||||
}}, "*");
|
||||
};
|
||||
|
||||
function create_child_frame({src, name, allow_fullscreen}) {
|
||||
child_frame = document.createElement("iframe");
|
||||
child_frame.allow = allow_fullscreen ? "fullscreen" : "";
|
||||
child_frame.name = name;
|
||||
child_frame.style.width = "100%";
|
||||
child_frame.style.height = "100%";
|
||||
child_frame.src = src;
|
||||
document.body.appendChild(child_frame);
|
||||
}
|
||||
|
||||
function trusted_click(callback, container)
|
||||
{
|
||||
let document = container.ownerDocument;
|
||||
let button = document.createElement("button");
|
||||
button.textContent = "click to continue test";
|
||||
button.style.display = "block";
|
||||
button.style.fontSize = "20px";
|
||||
button.style.padding = "10px";
|
||||
button.onclick = function() {
|
||||
callback();
|
||||
container.removeChild(button);
|
||||
document.onfullscreenchange = () => {
|
||||
events.push("fullscreenchange");
|
||||
};
|
||||
container.insertBefore(button, container.firstChild);
|
||||
}
|
||||
|
||||
function go_fullscreen() {
|
||||
trusted_click(() => {
|
||||
document.body.requestFullscreen().then(() => {
|
||||
window.top.postMessage({"action": "ready"}, "*");
|
||||
});
|
||||
}, document.body);
|
||||
}
|
||||
document.onfullscreenerror = () => {
|
||||
events.push("fullscreenerror");
|
||||
};
|
||||
|
||||
window.addEventListener('message', e => {
|
||||
switch (e.data.action) {
|
||||
case "requestReport":
|
||||
send_report();
|
||||
// If we have children tell them to report as well.
|
||||
if (child_frame) { child_frame.contentWindow.postMessage(e.data, "*"); }
|
||||
break;
|
||||
case "requestFullscreen":
|
||||
if (e.data.fullscreen.name == window.name) {
|
||||
go_fullscreen(e.data);
|
||||
} else if (child_frame) { child_frame.contentWindow.postMessage(e.data, "*"); }
|
||||
break;
|
||||
case "addIframe":
|
||||
if (child_frame) {
|
||||
child_frame.contentWindow.postMessage(e.data, "*");
|
||||
} else {
|
||||
create_child_frame(e.data.iframe);
|
||||
function send_report() {
|
||||
window.top.postMessage(
|
||||
{
|
||||
name: window.name,
|
||||
action: "report",
|
||||
report: {
|
||||
api: "fullscreen",
|
||||
frame: window.name,
|
||||
fullscreenElementIsNull: document.fullscreenElement === null,
|
||||
events,
|
||||
},
|
||||
},
|
||||
"*"
|
||||
);
|
||||
}
|
||||
|
||||
async function create_child_frame({ src, name, allow_fullscreen }) {
|
||||
child_frame = document.createElement("iframe");
|
||||
child_frame.allow = allow_fullscreen ? "fullscreen" : "";
|
||||
child_frame.name = name;
|
||||
child_frame.style.width = "100%";
|
||||
child_frame.style.height = "100%";
|
||||
document.body.appendChild(child_frame);
|
||||
await new Promise((resolve) => {
|
||||
child_frame.addEventListener("load", resolve, { once: true });
|
||||
child_frame.src = src;
|
||||
});
|
||||
window.top.postMessage({ action: "load", name }, "*");
|
||||
}
|
||||
|
||||
async function go_fullscreen() {
|
||||
await trusted_click(document.body);
|
||||
let error;
|
||||
try {
|
||||
await document.body.requestFullscreen();
|
||||
} catch (err) {
|
||||
error = err.name;
|
||||
} finally {
|
||||
window.top.postMessage(
|
||||
{ action: "requestFullscreen", name: window.name, error },
|
||||
"*"
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
window.onload = function () {
|
||||
window.top.postMessage({"action": "ready"}, "*")
|
||||
}
|
||||
</script>
|
||||
window.addEventListener("message", async (e) => {
|
||||
// Massage is not for us, try to pass it on...
|
||||
if (e.data.name !== window.name) {
|
||||
child_frame?.contentWindow.postMessage(e.data, "*");
|
||||
return;
|
||||
}
|
||||
switch (e.data.action) {
|
||||
case "requestReport":
|
||||
send_report();
|
||||
break;
|
||||
case "requestFullscreen":
|
||||
await go_fullscreen();
|
||||
break;
|
||||
case "addIframe":
|
||||
await create_child_frame(e.data.iframe);
|
||||
break;
|
||||
default:
|
||||
window.top.postMessage(e.data, "*");
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue