| Index: third_party/WebKit/LayoutTests/external/wpt/workers/data-url-shared.html
|
| diff --git a/third_party/WebKit/LayoutTests/external/wpt/workers/data-url-shared.html b/third_party/WebKit/LayoutTests/external/wpt/workers/data-url-shared.html
|
| index 64aacf26527887a5147276c343dbe06657af45da..05d3b5138b99d7949d04b088ef42b61e741d89d4 100644
|
| --- a/third_party/WebKit/LayoutTests/external/wpt/workers/data-url-shared.html
|
| +++ b/third_party/WebKit/LayoutTests/external/wpt/workers/data-url-shared.html
|
| @@ -4,10 +4,33 @@
|
| <script src="/resources/testharnessreport.js"></script>
|
| <div id=log></div>
|
| <script>
|
| -async_test(t => {
|
| - var worker = new SharedWorker("data:,onconnect = (e) => { fetch('/').then(() => e.ports[0].postMessage('fail'), () => e.ports[0].postMessage('pass')) }") // not same-origin
|
| - worker.port.onmessage = t.step_func_done(e => {
|
| - assert_equals(e.data, "pass")
|
| - })
|
| -})
|
| +function assert_worker_sends_pass(test_desc, mime_type, worker_code) {
|
| + async_test(function(t) {
|
| + var w = new SharedWorker(`data:${mime_type},onconnect = function(e) { port = e.ports[0]; ${worker_code}}`);
|
| + w.port.onmessage = t.step_func_done(function(e) {
|
| + assert_equals(e.data, 'PASS');
|
| + });
|
| + w.port.postMessage('SEND_PASS');
|
| + }, test_desc);
|
| +}
|
| +
|
| +function assert_worker_throws(test_desc, worker_code, before_connect_worker_code) {
|
| + assert_worker_sends_pass(test_desc, '', `try { ${worker_code}; port.postMessage("FAIL"); } catch (e) { port.postMessage("PASS"); }`, before_connect_worker_code);
|
| +}
|
| +
|
| +// Any MIME type allowed
|
| +assert_worker_sends_pass('application/javascript MIME allowed', 'application/javascript', 'port.postMessage("PASS")');
|
| +assert_worker_sends_pass('text/plain MIME allowed', 'text/plain', 'port.postMessage("PASS")');
|
| +assert_worker_sends_pass('empty MIME allowed', '', 'port.postMessage("PASS")');
|
| +
|
| +// Communications goes both ways
|
| +assert_worker_sends_pass('communication goes both ways', 'application/javascript', 'port.onmessage = function(e) { port.postMessage("PASS"); }');
|
| +
|
| +// 'data:' workers are cross-origin
|
| +assert_worker_throws('indexedDB inaccessible', 'self.indexedDB.open("someDBName")');
|
| +assert_worker_throws('localStorage inaccessible', 'self.localStorage.testItem');
|
| +assert_worker_sends_pass('cross-origin worker', '', 'fetch("/").then(() => port.postMessage("FAIL"), () => port.postMessage("PASS"))');
|
| +
|
| +// 'data:' workers have opaque origin
|
| +assert_worker_sends_pass('worker has opaque origin', 'application/javascript', 'if (self.location.origin == "null") port.postMessage("PASS"); else port.postMessage("FAIL");');
|
| </script>
|
|
|