diff --git a/src/env_properties.h b/src/env_properties.h index 095094714aa400..54891b600df0d6 100644 --- a/src/env_properties.h +++ b/src/env_properties.h @@ -67,6 +67,10 @@ V(channel_string, "channel") \ V(chunks_sent_since_last_write_string, "chunksSentSinceLastWrite") \ V(clone_unsupported_type_str, "Cannot transfer object of unsupported type.") \ + V(clone_transfer_needed_str, \ + "Object that needs transfer was found in message but not listed in " \ + "transferList") \ + V(clone_untransferable_str, "Found invalid object in transferList.") \ V(code_string, "code") \ V(commonjs_string, "commonjs") \ V(config_string, "config") \ diff --git a/src/node_errors.h b/src/node_errors.h index ddb87df20ef4af..fe41963d303b32 100644 --- a/src/node_errors.h +++ b/src/node_errors.h @@ -72,11 +72,9 @@ void AppendExceptionLine(Environment* env, V(ERR_INVALID_MODULE, Error) \ V(ERR_INVALID_STATE, Error) \ V(ERR_INVALID_THIS, TypeError) \ - V(ERR_INVALID_TRANSFER_OBJECT, TypeError) \ V(ERR_MEMORY_ALLOCATION_FAILED, Error) \ V(ERR_MESSAGE_TARGET_CONTEXT_UNAVAILABLE, Error) \ V(ERR_MISSING_ARGS, TypeError) \ - V(ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST, TypeError) \ V(ERR_MISSING_PASSPHRASE, TypeError) \ V(ERR_MISSING_PLATFORM_FOR_WORKER, Error) \ V(ERR_NON_CONTEXT_AWARE_DISABLED, Error) \ @@ -162,15 +160,11 @@ ERRORS_WITH_CODE(V) V(ERR_INVALID_MODULE, "No such module") \ V(ERR_INVALID_STATE, "Invalid state") \ V(ERR_INVALID_THIS, "Value of \"this\" is the wrong type") \ - V(ERR_INVALID_TRANSFER_OBJECT, "Found invalid object in transferList") \ V(ERR_MEMORY_ALLOCATION_FAILED, "Failed to allocate memory") \ V(ERR_OSSL_EVP_INVALID_DIGEST, "Invalid digest used") \ V(ERR_MESSAGE_TARGET_CONTEXT_UNAVAILABLE, \ "A message object could not be deserialized successfully in the target " \ "vm.Context") \ - V(ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST, \ - "Object that needs transfer was found in message but not listed " \ - "in transferList") \ V(ERR_MISSING_PLATFORM_FOR_WORKER, \ "The V8 platform used by this instance of Node does not support " \ "creating Workers") \ diff --git a/src/node_messaging.cc b/src/node_messaging.cc index 2d126d98441bad..0fe702e2a3c801 100644 --- a/src/node_messaging.cc +++ b/src/node_messaging.cc @@ -406,7 +406,7 @@ class SerializerDelegate : public ValueSerializer::Delegate { } if (mode == BaseObject::TransferMode::kTransferable) { - THROW_ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST(env_); + ThrowDataCloneError(env_->clone_transfer_needed_str()); return Nothing(); } @@ -531,7 +531,7 @@ Maybe Message::Serialize(Environment* env, } } - THROW_ERR_INVALID_TRANSFER_OBJECT(env); + ThrowDataCloneException(context, env->clone_untransferable_str()); return Nothing(); } if (delegate.AddNestedHostObjects().IsNothing()) diff --git a/test/parallel/test-whatwg-webstreams-transfer.js b/test/parallel/test-whatwg-webstreams-transfer.js index 6abc2fe2a87f91..336beb7c8e90b1 100644 --- a/test/parallel/test-whatwg-webstreams-transfer.js +++ b/test/parallel/test-whatwg-webstreams-transfer.js @@ -105,7 +105,9 @@ const theData = 'hello'; }); assert.throws(() => port2.postMessage(readable), { - code: 'ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST', + constructor: DOMException, + name: 'DataCloneError', + code: 25, }); port2.postMessage(readable, [readable]); @@ -155,7 +157,9 @@ const theData = 'hello'; }); assert.throws(() => port2.postMessage(readable), { - code: 'ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST', + constructor: DOMException, + name: 'DataCloneError', + code: 25, }); port2.postMessage(readable, [readable]); @@ -206,7 +210,9 @@ const theData = 'hello'; }); assert.throws(() => port2.postMessage(writable), { - code: 'ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST', + constructor: DOMException, + name: 'DataCloneError', + code: 25, }); port2.postMessage(writable, [writable]); @@ -292,7 +298,9 @@ const theData = 'hello'; }); assert.throws(() => port2.postMessage(transform), { - code: 'ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST', + constructor: DOMException, + name: 'DataCloneError', + code: 25, }); port2.postMessage(transform, [transform]); diff --git a/test/parallel/test-worker-message-port-transfer-filehandle.js b/test/parallel/test-worker-message-port-transfer-filehandle.js index 9fabf01b604fc4..8e3082240cd2c7 100644 --- a/test/parallel/test-worker-message-port-transfer-filehandle.js +++ b/test/parallel/test-worker-message-port-transfer-filehandle.js @@ -14,7 +14,9 @@ const { once } = require('events'); assert.throws(() => { port1.postMessage(fh); }, { - code: 'ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST' + constructor: DOMException, + name: 'DataCloneError', + code: 25, }); // Check that transferring FileHandle instances works. diff --git a/test/parallel/test-worker-workerdata-messageport.js b/test/parallel/test-worker-workerdata-messageport.js index 18f05731e8f635..3e4770d9a12c34 100644 --- a/test/parallel/test-worker-workerdata-messageport.js +++ b/test/parallel/test-worker-workerdata-messageport.js @@ -54,7 +54,9 @@ const meowScript = () => 'meow'; workerData, transferList: [] }), { - code: 'ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST', + constructor: DOMException, + name: 'DataCloneError', + code: 25, message: 'Object that needs transfer was found in message but not ' + 'listed in transferList' });