forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			51 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});
 | |
| }
 | 
