зеркало из https://github.com/mozilla/gecko-dev.git
93 строки
2.6 KiB
HTML
93 строки
2.6 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Test for delivering reports</title>
|
|
</head>
|
|
<body>
|
|
|
|
<script type="application/javascript">
|
|
|
|
function ok(a, msg) {
|
|
parent.postMessage({type: "test", check: !!a, msg }, "*");
|
|
}
|
|
|
|
function is(a, b, msg) {
|
|
ok(a === b, msg);
|
|
}
|
|
|
|
function finish() {
|
|
parent.postMessage({type: "finish" }, "*");
|
|
}
|
|
|
|
function checkReport() {
|
|
return new Promise(resolve => {
|
|
let id = setInterval(_ => {
|
|
fetch("delivering.sjs?task=check&min=3")
|
|
.then(r => r.text())
|
|
.then(text => {
|
|
if (text) {
|
|
resolve(JSON.parse(text));
|
|
clearInterval(id);
|
|
}
|
|
});
|
|
}, 1000);
|
|
});
|
|
}
|
|
|
|
function runTests(extraParams = "") {
|
|
// Call a deprecating operation.
|
|
for (let i = 0; i < 100; ++i) {
|
|
new TestingDeprecatedInterface();
|
|
}
|
|
ok(true, "Created a deprecated interface");
|
|
|
|
// Check if the report has been received.
|
|
return checkReport()
|
|
.then(reports => {
|
|
is(reports.length, 3, "We have 1 report");
|
|
|
|
let report = reports[0];
|
|
is(report.contentType, "application/reports+json", "Correct mime-type");
|
|
is(report.origin, "https://example.org", "Origin correctly set");
|
|
is(report.url, "https://example.org/tests/dom/reporting/tests/delivering.sjs" + extraParams, "URL is correctly set");
|
|
ok(!!report.body, "We have a report.body");
|
|
ok(report.body.age > 0, "Age is correctly set");
|
|
is(report.body.url, window.location.href, "URL is correctly set");
|
|
is(report.body.user_agent, navigator.userAgent, "User-agent matches");
|
|
ok(report.body.type, "deprecation", "Type is fine.");
|
|
ok(!!report.body.body, "We have the real report.body");
|
|
is(report.body.body.id, "DeprecatedTestingInterface", "Correct report.body.id");
|
|
is(report.body.body.message, "TestingDeprecatedInterface is a testing-only interface and this is its testing deprecation message.", "We have a report.body.message");
|
|
is(report.body.body.sourceFile, "https://example.org/tests/dom/reporting/tests/iframe_delivering.html", "report.body.sourceFile");
|
|
is(report.body.body.lineNumber, 40, "report.body.lineNumber");
|
|
is(report.body.body.columnNumber, 4, "report.body.columnNumber");
|
|
});
|
|
}
|
|
|
|
// Let's register a group + endpoint
|
|
fetch("delivering.sjs?task=header")
|
|
.then(r => r.text())
|
|
.then(text => {
|
|
is(text, "OK", "Report-to header sent");
|
|
})
|
|
.then(_ => {
|
|
return runTests();
|
|
})
|
|
|
|
// Let's register a group + endpoint from a worker
|
|
.then(_ => {
|
|
return new Promise(resolve => {
|
|
let w = new Worker("worker_delivering.js");
|
|
w.onmessage = e => resolve();
|
|
});
|
|
})
|
|
.then(_ => {
|
|
return runTests("&worker=true");
|
|
})
|
|
|
|
.then(finish);
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|