mirror of
https://github.com/servo/servo.git
synced 2025-10-16 00:10:23 +01:00
Update web-platform-tests to revision b'56123c260eff2131bc355b66530d6f0b18b20b2c'
This commit is contained in:
parent
ba48966934
commit
82db1c49ad
136 changed files with 1358 additions and 1444 deletions
|
@ -0,0 +1,57 @@
|
|||
const params = new URLSearchParams(location.search);
|
||||
|
||||
// Take a key used for storing a test result in the server.
|
||||
const key = params.get('key');
|
||||
|
||||
// Speculation rules injection is not blocked in the csp-script-src 'self' test.
|
||||
const block = location.pathname.endsWith('csp-script-src-self.html');
|
||||
|
||||
// The main test page (csp-script-src-*.html) in the parent directory) will load
|
||||
// this page only with the "key" parameter. This page will then try prerendering
|
||||
// itself with the "run-test" parameter. When "run-test" is in the URL we'll
|
||||
// actually start the test process and record the results to send back to the
|
||||
// main test page. We do this because the main test page cannot navigate itself
|
||||
// but it also cannot open a popup to a prerendered browsing context so the
|
||||
// prerender triggering and activation must both happen in this popup.
|
||||
const run_test = params.has('run-test');
|
||||
if (!run_test) {
|
||||
// Generate a new stash key so we can communicate with the prerendered page
|
||||
// about when to close the popup.
|
||||
const done_key = token();
|
||||
const url = new URL(document.URL);
|
||||
url.searchParams.append('run-test', '');
|
||||
url.searchParams.append('done-key', done_key);
|
||||
|
||||
if (block) {
|
||||
// Observe `securitypolicyviolation` event that will be triggered by
|
||||
// startPrerendering().
|
||||
document.addEventListener('securitypolicyviolation', e => {
|
||||
if (e.effectiveDirective != 'script-src' &&
|
||||
e.effectiveDirective != 'script-src-elem') {
|
||||
const message = 'unexpected effective directive: ' + e.effectiveDirective;
|
||||
writeValueToServer(key, message).then(() => { window.close(); });
|
||||
} else {
|
||||
const message = 'blocked by ' + e.effectiveDirective;
|
||||
writeValueToServer(key, message).then(() => { window.close(); });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
startPrerendering(url.toString());
|
||||
|
||||
// Wait until the prerendered page signals us it's ready to close.
|
||||
nextValueFromServer(done_key).then(() => {
|
||||
window.close();
|
||||
});
|
||||
} else {
|
||||
if (block) {
|
||||
writeValueToServer(key, 'unexpected prerendering');
|
||||
} else {
|
||||
// Tell the harness the initial document.prerendering value.
|
||||
writeValueToServer(key, document.prerendering);
|
||||
|
||||
// Tell the prerendering initiating page test being finished.
|
||||
const done_key = params.get('done-key');
|
||||
writeValueToServer(done_key, "done");
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue