Revision 1a8c195a98225c947458a5fd45606d181eaf273b authored by Hiroki Nakagawa on 22 March 2018, 05:53:36 UTC, committed by Blink WPT Bot on 22 March 2018, 06:21:57 UTC
This CL supports ES Modules on DedicatedWorker behind the ModuleDedicatedWorker
flag and adds WPT tests.

With the flag, you can specify 'type' option on the constructor of
DedicatedWorker (i.e., new Worker) to start a dedicated worker as a module
script. On DedicatedWorkerGlobalScope, static import is available, but dynamic
import() hasn't been implemented yet.

Bug: 680046
Change-Id: I3aca350228ec07be7884c7a2eb8cd351e7fd6b6e
Reviewed-on: https://chromium-review.googlesource.com/967908
Commit-Queue: Hiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: Kouhei Ueno <kouhei@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544983}
1 parent 14f1aec
Raw File
basic-shared-worker.html
<!doctype html>
<html>
  <head>
    <meta charset=utf-8>
    <title>Test SharedWorkerGlobalScope.isSecureContext for HTTP creator</title>
    <meta name="help" href="https://w3c.github.io/webappsec-secure-contexts/#monkey-patching-global-object">
    <script src=/resources/testharness.js></script>
    <script src=/resources/testharnessreport.js></script>
    <script src="server-locations.sub.js"></script>
  </head>
  <body>
    <script>
      var t1 = async_test("Shared worker");
      var t2 = async_test("Nested worker in shared worker");
      var t3 = async_test("Shared worker from https subframe");
      var t4 = async_test("Nested worker from shared worker from https subframe");
      // Tests for SharedWorkers used from other workers (not supported right
      // now) would go here.

      t1.step(function() {
        var w = new SharedWorker("support/shared-worker-script.js");
        w.port.onmessage = t1.step_func_done(function(e) {
          assert_false(e.data);
        });
        w.port.start();
      });

      t2.step(function() {
        var w = new SharedWorker("support/parent-shared-worker-script.js");
        w.port.onmessage = t2.step_func_done(function(e) {
          assert_false(e.data);
        });
        w.port.start();
      });

      onmessage = function(e) {
        var data = e.data;
        if (data.type == "shared") {
          t3.step(function() {
            assert_false(data.exception);
            assert_false(data.error);
            assert_false(data.isSecureContext);
          });
          t3.done();
        } else if (data.type == "nested") {
          t4.step(function() {
            assert_false(data.exception);
            assert_false(data.error);
            assert_false(data.isSecureContext);
          });
          t4.done();
        } else {
          t3.step(function() {
            assert_unreached("Unknown message");
          });
          t3.done();
          t4.step(function() {
            assert_unreached("Unknown message");
          });
          t4.done();
        }
      }

      var ifr = document.createElement("iframe");
      ifr.src = https_dir2 + "support/https-subframe-shared.html";
      document.body.appendChild(ifr);
    </script>
  </body>
</html>
back to top