50 lines
1.2 KiB
HTML
50 lines
1.2 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Test fetch() rejects when CSP blocks</title>
|
|
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
</head>
|
|
<body>
|
|
<script type="application/javascript">
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
function withFrame(url) {
|
|
return new Promise(resolve => {
|
|
let frame = document.createElement('iframe');
|
|
frame.addEventListener('load', _ => {
|
|
resolve(frame);
|
|
}, { once: true });
|
|
frame.src = url;
|
|
document.body.appendChild(frame);
|
|
});
|
|
}
|
|
|
|
function asyncTest(frame) {
|
|
return new Promise((resolve, reject) => {
|
|
addEventListener('message', evt => {
|
|
if (evt.data === 'REJECTED') {
|
|
resolve();
|
|
} else {
|
|
reject();
|
|
}
|
|
}, { once: true });
|
|
frame.contentWindow.postMessage('GO', '*');
|
|
});
|
|
}
|
|
|
|
withFrame('file_fetch_csp_block_frame.html').then(frame => {
|
|
asyncTest(frame).then(_ => {
|
|
ok(true, 'fetch rejected correctly');
|
|
}).catch(e => {
|
|
ok(false, 'fetch resolved when it should have been CSP blocked');
|
|
}).then(_ => {
|
|
frame.remove();
|
|
SimpleTest.finish();
|
|
});
|
|
});
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|