blob: b32ddaecfcb5ed7a2cc67411b6c588f4e47ebc4d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
// META: title=FetchLater: blocked by CSP
// META: script=/common/utils.js
// META: script=/common/get-host-info.sub.js
// META: script=/pending-beacon/resources/pending_beacon-helper.js
'use strict';
const {
HTTPS_NOTSAMESITE_ORIGIN,
} = get_host_info();
// FetchLater requests blocked by Content Security Policy are rejected.
// https://w3c.github.io/webappsec-csp/#should-block-request
const meta = document.createElement('meta');
meta.setAttribute('http-equiv', 'Content-Security-Policy');
meta.setAttribute('content', 'connect-src \'self\'');
document.head.appendChild(meta);
promise_test(async t => {
const uuid = token();
const cspViolationUrl =
generateSetBeaconURL(uuid, {host: HTTPS_NOTSAMESITE_ORIGIN});
fetchLater(cspViolationUrl, {activateAfter: 0});
await new Promise(
resolve => window.addEventListener('securitypolicyviolation', e => {
assert_equals(e.violatedDirective, 'connect-src');
resolve();
}));
t.done();
}, 'FetchLater blocked by CSP should reject');
|