mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-06 09:05:45 +00:00
52 lines
1.9 KiB
JavaScript
52 lines
1.9 KiB
JavaScript
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});
|
|
}
|