Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

// META: global=window,worker
// How long (in ms) these tests should wait before deciding no close event
// will be fired.
const time_to_wait_for_events = 100;
test(() => {
assert_false("onclose" in MessagePort.prototype, "MessagePort.prototype");
const c = new MessageChannel();
assert_false("onclose" in c.port1, "MessagePort instance");
}, "MessagePort should not have an onclose event handler IDL attribute");
async_test(t => {
const c = new MessageChannel();
c.port1.addEventListener("close", t.unreached_func("close event fired on port1"));
c.port2.addEventListener("close", t.unreached_func("close event fired on port2"));
c.port1.start();
c.port2.start();
c.port2.close();
t.step_timeout(() => t.done(), time_to_wait_for_events);
}, "No close event should be fired when an entangled port is closed");
async_test(t => {
const c = new MessageChannel();
c.port1.onmessage = () => {};
c.port1.addEventListener("close", t.unreached_func("close event fired on port1"));
c.port1.close();
t.step_timeout(() => t.done(), time_to_wait_for_events);
}, "No close event should be fired on a port when it is closed");