diff options
author | Anna Henningsen <anna@addaleax.net> | 2019-06-02 16:46:13 +0200 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2019-06-10 15:22:54 +0200 |
commit | 7bd2a3fcb407970babc88650ff030526ccf79f9f (patch) | |
tree | 3ab4bfd93ed57c3894f3680fbdbb7d734c6c1277 /test | |
parent | 55de20999b8b60a7ef889ea0d9573e9f271e1d17 (diff) | |
download | android-node-v8-7bd2a3fcb407970babc88650ff030526ccf79f9f.tar.gz android-node-v8-7bd2a3fcb407970babc88650ff030526ccf79f9f.tar.bz2 android-node-v8-7bd2a3fcb407970babc88650ff030526ccf79f9f.zip |
worker: use DataCloneError for unknown native objects
This aligns the behaviour better with the web.
PR-URL: https://github.com/nodejs/node/pull/28025
Reviewed-By: Michaƫl Zasso <targos@protonmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/parallel/test-worker-message-port-transfer-native.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/test/parallel/test-worker-message-port-transfer-native.js b/test/parallel/test-worker-message-port-transfer-native.js new file mode 100644 index 0000000000..eb51b2b01a --- /dev/null +++ b/test/parallel/test-worker-message-port-transfer-native.js @@ -0,0 +1,37 @@ +// Flags: --expose-internals +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const { MessageChannel } = require('worker_threads'); +const { internalBinding } = require('internal/test/binding'); + +// Test that passing native objects and functions to .postMessage() throws +// DataCloneError exceptions. + +{ + const { port1, port2 } = new MessageChannel(); + port2.once('message', common.mustNotCall()); + + assert.throws(() => { + port1.postMessage(function foo() {}); + }, { + name: 'DataCloneError', + message: /function foo\(\) \{\} could not be cloned\.$/ + }); + port1.close(); +} + +{ + const { port1, port2 } = new MessageChannel(); + port2.once('message', common.mustNotCall()); + + const nativeObject = new (internalBinding('js_stream').JSStream)(); + + assert.throws(() => { + port1.postMessage(nativeObject); + }, { + name: 'DataCloneError', + message: /Cannot transfer object of unsupported type\.$/ + }); + port1.close(); +} |