| <!DOCTYPE html> |
| <meta charset=utf-8> |
| <title>Test workers self.origin</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id="log"></div> |
| <script> |
| function assertOriginWorker(workerSource, expectedOrigin, testName) { |
| async_test(function(t) { |
| w = new Worker(workerSource); |
| w.onmessage = t.step_func(function(e) { |
| assert_equals(e.data, expectedOrigin); |
| t.done(); |
| }); |
| }, testName + ' Worker'); |
| } |
| |
| function assertOriginSharedWorker(workerSource, expectedOrigin, testName) { |
| async_test(function(t) { |
| w = new SharedWorker(workerSource); |
| w.port.start(); |
| w.port.onmessage = t.step_func(function(e) { |
| assert_equals(e.data, expectedOrigin); |
| t.done(); |
| }); |
| }, testName + ' SharedWorker'); |
| } |
| |
| // Test same-origin workers |
| assertOriginWorker("./support/WorkerSelfOriginWorker.js", self.origin, "Same Origin"); |
| assertOriginSharedWorker("./support/WorkerSelfOriginSharedWorker.js", self.origin, "Same Origin"); |
| |
| // Test data url workers have opaque origin |
| assertOriginWorker("data:application/javascript,postMessage(self.origin);", "null", "Data Url"); |
| assertOriginSharedWorker("data:application/javascript,onconnect = function(e) { e.ports[0].postMessage(self.origin); }", "null", "Data Url"); |
| |
| // Test blob url workers |
| blob = new Blob(["postMessage(self.origin);"]); |
| blobUrl = URL.createObjectURL(blob); |
| assertOriginWorker(blobUrl, self.origin, "Blob Url"); |
| |
| blob = new Blob(["onconnect = function(e) { e.ports[0].postMessage(self.origin); }"]); |
| blobUrl = URL.createObjectURL(blob); |
| assertOriginSharedWorker(blobUrl, self.origin, "Blob Url"); |
| </script> |