|  | <!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"); | 
|  | var t5 = async_test("Shared worker from data URL"); | 
|  |  | 
|  | t1.step(function() { | 
|  | var w = new SharedWorker("support/shared-worker-script.js"); | 
|  | w.port.onmessage = t1.step_func_done(function(e) { | 
|  | assert_true(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_true(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_true(data.isSecureContext); | 
|  | }); | 
|  | t3.done(); | 
|  | } else if (data.type == "nested") { | 
|  | t4.step(function() { | 
|  | assert_false(data.exception); | 
|  | assert_false(data.error); | 
|  | assert_true(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_dir3 + "support/https-subframe-shared.html"; | 
|  | document.body.appendChild(ifr); | 
|  |  | 
|  | t5.step(function() { | 
|  | var w = new SharedWorker( | 
|  | `data:text/javascript,addEventListener("connect", function (e) { | 
|  | var port = e.ports[0]; | 
|  | port.start(); | 
|  | port.postMessage(isSecureContext); | 
|  | });` | 
|  | ); | 
|  | w.port.onmessage = t5.step_func_done(function(e) { | 
|  | assert_true(e.data); | 
|  | }); | 
|  | w.port.start(); | 
|  | }); | 
|  | </script> | 
|  | </body> | 
|  | </html> |