summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.html
blob: 284a15f2b2317c5f25f3449038870730704944c8 (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
<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script type="module" src="import-meta-url.any.js"></script>

<script type="module">
const base = location.href.slice(0, location.href.lastIndexOf('/'));

test(() => {
  assert_equals(import.meta.url, location.href);
}, "import.meta.url in a root inline script");

for (const workerType of ['DedicatedWorker', 'SharedWorker']) {
  promise_test(async t => {
      const worker_request_url =
        new URL(`postmessage-worker.js?${workerType}`, location);
      let w;
      let port;
      if (workerType === 'DedicatedWorker') {
        w = new Worker(worker_request_url.href, {type: 'module'});
        port = w;
      } else {
        w = new SharedWorker(worker_request_url.href, {type: 'module'});
        port = w.port;
        w.port.start();
      }
      w.onerror = t.unreached_func('Worker error');
      const url = await new Promise(resolve => {
        port.onmessage = evt => resolve(evt.data);
      });
      assert_equals(url, worker_request_url.href);
  }, `import.meta.url at top-level module ${workerType}`);
}
</script>