blob: d5afe580f1b518b65d5ed65b370df7f84cc6bd2d (
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
function doXHR(uri, callback) {
try {
var xhr = new XMLHttpRequest();
xhr.open("GET", uri);
xhr.responseType = "blob";
xhr.send();
xhr.onload = function () {
if (callback) callback(xhr.response);
}
} catch(ex) {}
}
doXHR("http://mochi.test:8888/tests/dom/security/test/csp/file_CSP.sjs?testid=xhr_good");
doXHR("http://example.com/tests/dom/security/test/csp/file_CSP.sjs?testid=xhr_bad");
fetch("http://mochi.test:8888/tests/dom/security/test/csp/file_CSP.sjs?testid=fetch_good");
fetch("http://example.com/tests/dom/security/test/csp/file_CSP.sjs?testid=fetch_bad");
navigator.sendBeacon("http://mochi.test:8888/tests/dom/security/test/csp/file_CSP.sjs?testid=beacon_good");
navigator.sendBeacon("http://example.com/tests/dom/security/test/csp/file_CSP.sjs?testid=beacon_bad");
var topWorkerBlob;
var nestedWorkerBlob;
doXHR("file_main_worker.js", function (topResponse) {
topWorkerBlob = URL.createObjectURL(topResponse);
doXHR("file_child_worker.js", function (response) {
nestedWorkerBlob = URL.createObjectURL(response);
runWorker();
});
});
function runWorker() {
// Top level worker, no subworker
// Worker does not inherit CSP from owner document
new Worker("file_main_worker.js").postMessage({inherited : "none"});
// Top level worker, no subworker
// Worker inherits CSP from owner document
new Worker(topWorkerBlob).postMessage({inherited : "document"});
// Subworker
// Worker does not inherit CSP from parent worker
new Worker("file_main_worker.js").postMessage({inherited : "none", nested : nestedWorkerBlob});
// Subworker
// Worker inherits CSP from parent worker
new Worker("file_main_worker.js").postMessage({inherited : "parent", nested : nestedWorkerBlob});
// Subworker
// Worker inherits CSP from owner document -> parent worker -> subworker
new Worker(topWorkerBlob).postMessage({inherited : "document", nested : nestedWorkerBlob});
}
|