Commit 1bfaa08c authored by Eriko Kurimoto's avatar Eriko Kurimoto Committed by Commit Bot

SharedWorker: Modernize WPT in workers/constructors/SharedWorker

This CL modernize WPT for cleanup.
This doesn't change the test behavior.

Change-Id: Ic9213ec517ac50601805a69d38d5a6c02db6310c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2016522
Commit-Queue: Eriko Kurimoto <elkurin@google.com>
Reviewed-by: default avatarHiroki Nakagawa <nhiroki@chromium.org>
Cr-Commit-Position: refs/heads/master@{#735781}
parent 6b34bdc2
onconnect = function(e) {
onconnect = e => {
e.ports[0].postMessage(['1', self.name]);
}
\ No newline at end of file
};
......@@ -4,28 +4,27 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
setup({ single_test: true });
var counter = 0
function maybeDone() {
let counter = 0
const maybeDone = () => {
if(counter) {
done()
}
counter++
}
var worker = new SharedWorker('shared-worker.js', 'name');
const worker = new SharedWorker('shared-worker.js', 'name');
worker.port.postMessage("trigger a response")
worker.port.onmessage = (e) => {
worker.port.onmessage = e => {
assert_equals(e.data, "ping")
maybeDone()
}
// This used to throw "URLMismatchError", but the standard changed
var worker2 = new SharedWorker('1', 'name');
worker2.port.onmessage = (e) => {
const worker2 = new SharedWorker('1', 'name');
worker2.port.onmessage = e => {
assert_array_equals(e.data, ["1", "name"])
maybeDone()
}
......
This is a testharness.js-based test.
FAIL connect event assert_true: e.data === '' expected true got false
FAIL Test connect event for a shared worker assert_true: e.data === '' expected true got false
Harness: the test ran to completion.
......@@ -2,16 +2,13 @@
<title>connect event</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var worker = new SharedWorker('connect-event.js');
worker.port.addEventListener('message', this.step_func(function(e) {
async_test(t => {
const worker = new SharedWorker('connect-event.js');
worker.port.onmessage = t.step_func_done(e => {
assert_true(e.data[0], "e.data === ''");
assert_true(e.data[1], "e instanceof MessageEvent");
assert_true(e.data[2], "e.ports.length == 1");
this.done();
}), false);
worker.port.start();
});
</script>
\ No newline at end of file
});
}, 'Test connect event for a shared worker');
</script>
onconnect = function(e) {
onconnect = e => {
e.ports[0].postMessage([e.data === '', e instanceof MessageEvent, e.ports.length == 1]);
};
\ No newline at end of file
};
......@@ -3,9 +3,8 @@
<link rel=help href="http://www.whatwg.org/html/#dom-sharedworker">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
var worker = new SharedWorker('empty.js', 'foo');
test(() => {
const worker = new SharedWorker('empty.js', 'foo');
});
</script>
......@@ -3,9 +3,8 @@
<link rel=help href="http://www.whatwg.org/html/#dom-sharedworker">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
var worker = new SharedWorker('dummy-shared-worker.js');
test(() => {
const worker = new SharedWorker('dummy-shared-worker.js');
});
</script>
\ No newline at end of file
</script>
......@@ -3,9 +3,8 @@
<link rel=help href="http://www.whatwg.org/html/#dom-sharedworker">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
var worker = new SharedWorker('empty.js', '');
test(() => {
const worker = new SharedWorker('empty.js', '');
});
</script>
......@@ -2,14 +2,11 @@
<title>members of SharedWorkerGlobalScope</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var worker = new SharedWorker('global-members.js');
worker.port.addEventListener('message', this.step_func(function(e) {
async_test(t => {
const worker = new SharedWorker('global-members.js');
worker.port.onmessage = t.step_func_done(e => {
assert_equals(e.data, '');
this.done();
}), false);
worker.port.start();
});
</script>
\ No newline at end of file
});
}, 'Test if global members exist in a shared worker');
</script>
var expected = 'self location close onerror importScripts navigator addEventListener removeEventListener dispatchEvent name onconnect setTimeout clearTimeout setInterval clearInterval'.split(' ');
var log = '';
for (var i = 0; i < expected.length; ++i) {
const expected = 'self location close onerror importScripts navigator addEventListener removeEventListener dispatchEvent name onconnect setTimeout clearTimeout setInterval clearInterval'.split(' ');
let log = '';
for (let i = 0; i < expected.length; ++i) {
if (!(expected[i] in self))
log += expected[i] + ' did not exist\n';
}
onconnect = function(e) {
onconnect = e => {
e.ports[0].postMessage(log);
};
\ No newline at end of file
};
This is a testharness.js-based test.
FAIL expected interface objects/constructors assert_equals: expected "" but got "These were missing: Worker, SharedWorker"
FAIL Test if interface objects exist in a shared worker assert_equals: expected "" but got "These were missing: Worker, SharedWorker"
Harness: the test ran to completion.
......@@ -2,21 +2,19 @@
<title>expected interface objects/constructors</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var expected = 'XMLHttpRequest WebSocket EventSource MessageChannel Worker SharedWorker ApplicationCache'.split(' ');
var supported = [];
for (var i = 0; i < expected.length; ++i) {
async_test(t => {
const expected = 'XMLHttpRequest WebSocket EventSource MessageChannel Worker SharedWorker ApplicationCache'.split(' ');
const supported = [];
for (let i = 0; i < expected.length; ++i) {
if (expected[i] in window)
supported.push(expected[i]);
}
var worker = new SharedWorker('interface-objects.js');
const worker = new SharedWorker('interface-objects.js');
worker.port.start();
worker.port.postMessage(supported);
worker.port.addEventListener('message', this.step_func(function(e) {
worker.port.onmessage = t.step_func_done(e => {
assert_equals(e.data, '');
this.done();
}), false);
});
</script>
\ No newline at end of file
});
}, 'Test if interface objects exist in a shared worker');
</script>
var prt;
function handleCall(e) {
var log = [];
for (var i = 0; i < e.data.length; ++i) {
let prt;
const handleCall = e => {
const log = [];
for (let i = 0; i < e.data.length; ++i) {
if (!(e.data[i] in self))
log.push(e.data[i]);
}
prt.postMessage('These were missing: '+log.join(', '));
}
onconnect = function(e) {
};
onconnect = e => {
prt = e.ports[0];
prt.onmessage = handleCall;
};
\ No newline at end of file
};
......@@ -2,14 +2,11 @@
<title>self.name</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var worker = new SharedWorker('name.js', 'hello');
worker.port.addEventListener('message', this.step_func(function(e) {
async_test(t => {
const worker = new SharedWorker('name.js', 'hello');
worker.port.onmessage = t.step_func_done(e => {
assert_equals(e.data, 'hello');
this.done();
}), false);
worker.port.start();
});
});
}, 'Test self.name in a shared worker');
</script>
onconnect = function(e) {
onconnect = e => {
e.ports[0].postMessage(self.name);
}
};
<!--
/*
-->
<!doctype html>
<title>no arguments</title>
<link rel=help href="http://www.whatwg.org/html/#sharedworker">
<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#es-interface-call">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
assert_throws_js(TypeError, function() {
var worker = new SharedWorker();
test(() => {
assert_throws_js(TypeError, () => {
const worker = new SharedWorker();
});
});
</script>
<!--
*/
//-->
onconnect = function(e) {
onconnect = e => {
e.ports[0].postMessage(['null', self.name]);
}
\ No newline at end of file
};
<!--
onconnect = function(e) {
e.ports[0].postMessage(['FAIL', self.name]);
}
/*
-->
<!doctype html>
<title>null as arguments</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var worker = new SharedWorker(null, null);
worker.port.addEventListener('message', this.step_func(function(e) {
assert_equals(e.data[0], 'null', 'first arg');
assert_equals(e.data[1], '', 'second arg');
this.done();
}), false);
worker.port.start();
});
async_test(t => {
const worker = new SharedWorker(null, null);
worker.port.onmessage = t.step_func_done(e => {
assert_equals(e.data[0], 'null', 'first arg (script name)');
assert_equals(e.data[1], '', 'second arg (worker name)');
});
}, 'Test constructing a shared worker with null');
</script>
<!--
*/
//-->
<!--
onconnect = function(e) {
e.ports[0].postMessage(['FAIL', self.name]);
}
/*
-->
<!doctype html>
<title>1 as arguments</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var worker = new SharedWorker(1, 1);
worker.port.addEventListener('message', this.step_func(function(e) {
assert_equals(e.data[0], '1', 'first arg');
assert_equals(e.data[1], '1', 'second arg');
this.done();
}), false);
worker.port.start();
});
async_test(t => {
const worker = new SharedWorker(1, 1);
worker.port.onmessage = t.step_func_done(e => {
assert_equals(e.data[0], '1', 'first arg (script name)');
assert_equals(e.data[1], '1', 'second arg (worker name)');
});
}, 'Test constructing a shared worker with 1');
</script>
<!--
*/
//-->
\ No newline at end of file
......@@ -2,13 +2,11 @@
<title>worker.port.onmessage</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var worker = new SharedWorker('port-onmessage.js', '');
worker.port.onmessage = this.step_func(function(e) {
async_test(t => {
const worker = new SharedWorker('port-onmessage.js', '');
worker.port.onmessage = t.step_func_done(e => {
assert_true(e.data);
this.done();
});
});
}, 'Test SharedWorker.port.onmessage');
</script>
onconnect = function(e) {
onconnect = e => {
e.ports[0].postMessage(true);
}
};
......@@ -4,10 +4,9 @@
<link rel=help href="http://www.whatwg.org/html/#messageport">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
var worker = new SharedWorker('empty.js', '');
test(() => {
const worker = new SharedWorker('empty.js', '');
assert_true('port' in worker, "port");
assert_true('postMessage' in worker.port, "postMessage");
assert_true('start' in worker.port, "start");
......
......@@ -4,11 +4,10 @@
<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#dfn-attribute-setter">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
var worker = new SharedWorker('empty.js', '');
var x = worker.port;
test(() => {
const worker = new SharedWorker('empty.js', '');
const x = worker.port;
worker.port = 1;
assert_equals(worker.port, x);
});
......
<!--
/*
-->
<!doctype html>
<title>same-origin checks</title>
<meta name="timeout" content="long">
<link rel=help href="https://html.spec.whatwg.org/multipage/workers.html#dom-sharedworker">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
// Needed to prevent a race condition if a worker throws an exception that may or may
// not propogate to the window before the tests finish
setup({allow_uncaught_exception: true});
function testSharedWorkerHelper(t, script) {
testSharedWorkerHelper = (t, script) => {
try {
var worker = new SharedWorker(script, '');
worker.onerror = t.step_func_done(function(e) {
const worker = new SharedWorker(script, '');
worker.onerror = t.step_func_done(e => {
assert_true(e instanceof Event);
});
} catch (e) {
......@@ -25,45 +21,42 @@ function testSharedWorkerHelper(t, script) {
}
}
test(function() {
assert_throws_dom("SecurityError", function() { new SharedWorker('unsupported:', ''); });
test(() => {
assert_throws_dom("SecurityError", () => { new SharedWorker('unsupported:', ''); });
}, "unsupported_scheme");
async_test(function() {
var worker = new SharedWorker('data:,onconnect = function(e) { e.ports[0].postMessage(1); }', '');
worker.port.onmessage = this.step_func_done(function(e) {
async_test(t => {
const worker = new SharedWorker('data:,onconnect = e => { e.ports[0].postMessage(1); }', '');
worker.port.onmessage = t.step_func_done(e => {
assert_equals(e.data, 1);
});
}, "data_url");
async_test(function(t) {
testSharedWorkerHelper(this, 'javascript:""');
async_test(t => {
testSharedWorkerHelper(t, 'javascript:""');
}, "javascript_url");
async_test(function(t) {
testSharedWorkerHelper(this, 'about:blank');
async_test(t => {
testSharedWorkerHelper(t, 'about:blank');
}, "about_blank");
async_test(function(t) {
testSharedWorkerHelper(this, 'http://www.opera.com/');
async_test(t => {
testSharedWorkerHelper(t, 'http://www.opera.com/');
}, "opera_com");
async_test(function(t) {
testSharedWorkerHelper(this, location.protocol+'//'+location.hostname+':81/');
async_test(t => {
testSharedWorkerHelper(t, location.protocol+'//'+location.hostname+':81/');
}, "port_81");
async_test(function(t) {
testSharedWorkerHelper(this, 'https://'+location.hostname+':80/');
async_test(t => {
testSharedWorkerHelper(t, 'https://'+location.hostname+':80/');
}, "https_port_80");
async_test(function(t) {
testSharedWorkerHelper(this, 'https://'+location.hostname+':8000/');
async_test(t => {
testSharedWorkerHelper(t, 'https://'+location.hostname+':8000/');
}, "https_port_8000");
async_test(function(t) {
testSharedWorkerHelper(this, 'http://'+location.hostname+':8012/');
async_test(t => {
testSharedWorkerHelper(t, 'http://'+location.hostname+':8012/');
}, "http_port_8012");
</script>
<!--
*/
//-->
......@@ -2,7 +2,7 @@ This is a testharness.js-based test.
PASS postMessage
PASS start
PASS close
FAIL onmessage assert_equals: {handleEvent:function(){}} expected null but got object "[object Object]"
FAIL onmessage assert_equals: {handleEvent:() => {}} expected null but got object "[object Object]"
PASS addEventListener
PASS removeEventListener
PASS despatchEvent
......
<!--
/*
-->
<!doctype html>
<title>setting members of worker.port</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
setup(function() {
setup(() => {
window.worker = new SharedWorker('#', '');
});
test(function() {
test(() => {
worker.port.postMessage = 1;
assert_equals(worker.port.postMessage, 1);
}, 'postMessage');
test(function() {
test(() => {
worker.port.start = 1;
assert_equals(worker.port.start, 1);
}, 'start');
test(function() {
test(() => {
worker.port.close = 1;
assert_equals(worker.port.close, 1);
}, 'close');
test(function() {
var f = function(){};
test(() => {
const f = () => {};
worker.port.onmessage = f;
assert_equals(worker.port.onmessage, f, 'function(){}');
assert_equals(worker.port.onmessage, f, '() => {}');
worker.port.onmessage = 1;
assert_equals(worker.port.onmessage, null, '1');
worker.port.onmessage = f;
worker.port.onmessage = ';';
assert_equals(worker.port.onmessage, null, '";"');
worker.port.onmessage = f;
worker.port.onmessage = {handleEvent:function(){}};
assert_equals(worker.port.onmessage, null, '{handleEvent:function(){}}');
worker.port.onmessage = {handleEvent:() => {}};
assert_equals(worker.port.onmessage, null, '{handleEvent:() => {}}');
worker.port.onmessage = f;
worker.port.onmessage = null;
assert_equals(worker.port.onmessage, null, 'null');
......@@ -41,19 +37,16 @@ test(function() {
worker.port.onmessage = undefined;
assert_equals(worker.port.onmessage, null, 'undefined');
}, 'onmessage');
test(function() {
test(() => {
worker.port.addEventListener = 1;
assert_equals(worker.port.addEventListener, 1);
}, 'addEventListener');
test(function() {
test(() => {
worker.port.removeEventListener = 1;
assert_equals(worker.port.removeEventListener, 1);
}, 'removeEventListener');
test(function() {
test(() => {
worker.port.despatchEvent = 1;
assert_equals(worker.port.despatchEvent, 1);
}, 'despatchEvent');
</script>
<!--
*/
//-->
onconnect = function(e) {
var port = e.ports[0];
port.onmessage = function(e) {
onconnect = e => {
const port = e.ports[0];
port.onmessage = e => {
port.postMessage('ping');
}
}
onconnect = function(e) {
onconnect = e => {
e.ports[0].postMessage(['undefined', self.name]);
}
\ No newline at end of file
};
<!--
onconnect = function(e) {
e.ports[0].postMessage(['FAIL', self.name]);
}
/*
-->
<!doctype html>
<title>undefined as arguments</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var worker = new SharedWorker(undefined, undefined);
worker.port.addEventListener('message', this.step_func(function(e) {
assert_equals(e.data[0], 'undefined', 'first arg');
assert_equals(e.data[1], '', 'second arg');
this.done();
}), false);
worker.port.start();
});
async_test(t => {
const worker = new SharedWorker(undefined, undefined);
worker.port.onmessage = t.step_func_done(e => {
assert_equals(e.data[0], 'undefined', 'first arg (script name)');
assert_equals(e.data[1], '', 'second arg (worker name)');
});
}, 'Test constructing a shared worker with undefined');
</script>
<!--
*/
//-->
......@@ -2,14 +2,11 @@
<title>unexpected members/interface objects/constructors</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var worker = new SharedWorker('unexpected-global-properties.js');
worker.port.addEventListener('message', this.step_func(function(e) {
async_test(t => {
const worker = new SharedWorker('unexpected-global-properties.js');
worker.port.onmessage = t.step_func_done(e => {
assert_equals(e.data, '');
this.done();
}), false);
worker.port.start();
});
</script>
\ No newline at end of file
});
}, 'Test unexpected properties are not in global scope');
</script>
var unexpected = 'open print stop getComputedStyle getSelection releaseEvents captureEvents alert confirm prompt addEventStream removeEventStream back forward attachEvent detachEvent navigate DOMParser XMLSerializer XPathEvaluator XSLTProcessor opera Image Option frames Audio SVGUnitTypes SVGZoomAndPan java netscape sun Packages ByteArray closed defaultStatus document event frameElement history innerHeight innerWidth opener outerHeight outerWidth pageXOffset pageYOffset parent screen screenLeft screenTop screenX screenY status top window length'.split(' '); // iterated window in opera and removed expected ones
var log = '';
for (var i = 0; i < unexpected.length; ++i) {
const unexpected = 'open print stop getComputedStyle getSelection releaseEvents captureEvents alert confirm prompt addEventStream removeEventStream back forward attachEvent detachEvent navigate DOMParser XMLSerializer XPathEvaluator XSLTProcessor opera Image Option frames Audio SVGUnitTypes SVGZoomAndPan java netscape sun Packages ByteArray closed defaultStatus document event frameElement history innerHeight innerWidth opener outerHeight outerWidth pageXOffset pageYOffset parent screen screenLeft screenTop screenX screenY status top window length'.split(' '); // iterated window in opera and removed expected ones
let log = '';
for (let i = 0; i < unexpected.length; ++i) {
if (unexpected[i] in self)
log += unexpected[i] + ' ';
}
onconnect = function(e) {
onconnect = e => {
e.ports[0].postMessage(log);
};
\ No newline at end of file
};
This is a testharness.js-based test.
FAIL resolving broken url assert_throws_dom: function "function() {
var worker = new SharedWorker('http://foo bar');
FAIL resolving broken url assert_throws_dom: function "() => {
const worker = new SharedWorker('http://foo bar');
}" threw object "SecurityError: Failed to construct 'SharedWorker': Script at 'http://foo%20bar/' cannot be accessed from origin 'http://web-platform.test:8001'." that is not a DOMException SyntaxError: property "code" is equal to 18, expected 12
Harness: the test ran to completion.
<!--
/*
-->
<!doctype html>
<title>resolving broken url</title>
<link rel=help href="http://www.whatwg.org/html/#dom-sharedworker">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
assert_throws_dom("SyntaxError", function() {
var worker = new SharedWorker('http://foo bar');
test(() => {
assert_throws_dom("SyntaxError", () => {
const worker = new SharedWorker('http://foo bar');
});
});
</script>
<!--
*/
//-->
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment