summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html
blob: 22b28b3e35ef5f05d18b4013798d6513c59c1700 (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
<!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>