11cb0ef41Sopenharmony_ci'use strict'; 21cb0ef41Sopenharmony_ciconst common = require('../common'); 31cb0ef41Sopenharmony_ciconst assert = require('assert'); 41cb0ef41Sopenharmony_ciconst { MessageChannel, moveMessagePortToContext } = require('worker_threads'); 51cb0ef41Sopenharmony_ci 61cb0ef41Sopenharmony_ci// Make sure that .start() and .stop() do not throw on closing/closed 71cb0ef41Sopenharmony_ci// MessagePorts. 81cb0ef41Sopenharmony_ci// Refs: https://github.com/nodejs/node/issues/26463 91cb0ef41Sopenharmony_ci 101cb0ef41Sopenharmony_cifunction dummy() {} 111cb0ef41Sopenharmony_ci 121cb0ef41Sopenharmony_ci{ 131cb0ef41Sopenharmony_ci const { port1, port2 } = new MessageChannel(); 141cb0ef41Sopenharmony_ci port1.close(common.mustCall(() => { 151cb0ef41Sopenharmony_ci port1.on('message', dummy); 161cb0ef41Sopenharmony_ci port1.off('message', dummy); 171cb0ef41Sopenharmony_ci port2.on('message', dummy); 181cb0ef41Sopenharmony_ci port2.off('message', dummy); 191cb0ef41Sopenharmony_ci })); 201cb0ef41Sopenharmony_ci port1.on('message', dummy); 211cb0ef41Sopenharmony_ci port1.off('message', dummy); 221cb0ef41Sopenharmony_ci port2.on('message', dummy); 231cb0ef41Sopenharmony_ci port2.off('message', dummy); 241cb0ef41Sopenharmony_ci} 251cb0ef41Sopenharmony_ci 261cb0ef41Sopenharmony_ci{ 271cb0ef41Sopenharmony_ci const { port1 } = new MessageChannel(); 281cb0ef41Sopenharmony_ci port1.on('message', dummy); 291cb0ef41Sopenharmony_ci port1.close(common.mustCall(() => { 301cb0ef41Sopenharmony_ci port1.off('message', dummy); 311cb0ef41Sopenharmony_ci })); 321cb0ef41Sopenharmony_ci} 331cb0ef41Sopenharmony_ci 341cb0ef41Sopenharmony_ci{ 351cb0ef41Sopenharmony_ci const { port2 } = new MessageChannel(); 361cb0ef41Sopenharmony_ci port2.close(); 371cb0ef41Sopenharmony_ci assert.throws(() => moveMessagePortToContext(port2, {}), { 381cb0ef41Sopenharmony_ci code: 'ERR_CLOSED_MESSAGE_PORT', 391cb0ef41Sopenharmony_ci message: 'Cannot send data on closed MessagePort' 401cb0ef41Sopenharmony_ci }); 411cb0ef41Sopenharmony_ci} 421cb0ef41Sopenharmony_ci 431cb0ef41Sopenharmony_ci// Refs: https://github.com/nodejs/node/issues/42296 441cb0ef41Sopenharmony_ci{ 451cb0ef41Sopenharmony_ci const ch = new MessageChannel(); 461cb0ef41Sopenharmony_ci ch.port1.onmessage = common.mustNotCall(); 471cb0ef41Sopenharmony_ci ch.port2.close(); 481cb0ef41Sopenharmony_ci ch.port2.postMessage('fhqwhgads'); 491cb0ef41Sopenharmony_ci} 50