gecko-dev/dom/security/test/csp/file_main.js

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});
}