<!DOCTYPEHTML> <!-- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ -->
<html>
<head>
<title> Bug 446344 - Test Origin Header</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
</head>
<body>
function frameLoaded(test, check)
{
let frame = window.document.getElementById(check.frameID); frame.onload = null;
let result = SpecialPowers.wrap(frame).contentDocument.documentElement.textContent;
is(result, test.results[check.frameID], check.name + " with " + test.name);
}
function loadIframe(test, check)
{
return new Promise((resolve) => {
let frame = SpecialPowers.wrap(window.document.getElementById(check.frameID)); frame.onload = function () {
// Ignore the first load and wait for the submitted form instead.
let location = frame.contentWindow.location + "";
if (location.endsWith("origin_header.sjs")) {
frameLoaded(test, check);
resolve();
}
} frame.src = check.frameSrc;
});
}
function loadSrcDocFrame(test, check)
{
return new Promise((resolve) => {
let frame = SpecialPowers.wrap(window.document.getElementById(check.frameID)); frame.onload = function () {
// Ignore the first load and wait for the submitted form instead.
let location = frame.contentWindow.location + "";
if (location.endsWith("origin_header.sjs")) {
frameLoaded(test, check);
resolve();
}
}
fetch(check.srcdoc).then((response) => {
response.text().then((body) => { frame.srcdoc = body;
});;
});
});
}
function loadDataURIFrame(test, check)
{
return new Promise((resolve) => {
let frame = SpecialPowers.wrap(window.document.getElementById(check.frameID)); frame.onload = function () {
// Ignore the first load and wait for the submitted form instead.
let location = frame.contentWindow.location + "";
if (location.endsWith("origin_header.sjs")) {
frameLoaded(test, check);
resolve();
}
}
fetch(check.dataURI).then((response) => {
response.text().then((body) => { frame.src = "data:text/html," + encodeURIComponent(body);
});;
});
});
}
async function resetFrames()
{
let checkPromises = [];
for (let check of checksToRun) {
checkPromises.push(new Promise((resolve) => {
let frame = document.getElementById(check.frameID); frame.onload = () => resolve();
if (check.srcdoc) { frame.srcdoc = "";
} else { frame.src = "about:blank";
}
}));
}
await Promise.all(checkPromises);
}
async function runTests()
{
for (let test of testsToRun) {
await resetFrames();
await SpecialPowers.pushPrefEnv({"set": test.prefs});
let checkPromises = [];
for (let check of checksToRun) {
if (check.formID) {
checkPromises.push(submitForm(test, check));
} else if (check.frameSrc) {
checkPromises.push(loadIframe(test, check));
} else if (check.srcdoc) {
checkPromises.push(loadSrcDocFrame(test, check));
} else if (check.dataURI) {
checkPromises.push(loadDataURIFrame(test, check));
} else {
ok(false, "Unsupported check");
break;
}
}
await Promise.all(checkPromises);
};
SimpleTest.finish();
}
SimpleTest.waitForExplicitFinish();
SimpleTest.requestLongerTimeout(5); // work around Android timeouts
addLoadEvent(runTests);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.