summaryrefslogtreecommitdiffstats
path: root/dom/tests/mochitest/fetch/test_fetch_csp_block.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/tests/mochitest/fetch/test_fetch_csp_block.html')
-rw-r--r--dom/tests/mochitest/fetch/test_fetch_csp_block.html50
1 files changed, 50 insertions, 0 deletions
diff --git a/dom/tests/mochitest/fetch/test_fetch_csp_block.html b/dom/tests/mochitest/fetch/test_fetch_csp_block.html
new file mode 100644
index 0000000000..0347c7319e
--- /dev/null
+++ b/dom/tests/mochitest/fetch/test_fetch_csp_block.html
@@ -0,0 +1,50 @@
+<!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>