@@ -186,27 +186,30 @@ uint32_t Message::AddWASMModule(WasmModuleObject::TransferrableModule&& mod) {
186
186
187
187
namespace {
188
188
189
- void ThrowDataCloneException (Local<Context> context, Local<String> message ) {
189
+ MaybeLocal<Function> GetDOMException (Local<Context> context) {
190
190
Isolate* isolate = context->GetIsolate ();
191
- Local<Value> argv[] = {
192
- message,
193
- FIXED_ONE_BYTE_STRING (isolate, " DataCloneError" )
194
- };
195
- Local<Value> exception ;
196
-
197
191
Local<Object> per_context_bindings;
198
192
Local<Value> domexception_ctor_val;
199
193
if (!GetPerContextExports (context).ToLocal (&per_context_bindings) ||
200
194
!per_context_bindings->Get (context,
201
195
FIXED_ONE_BYTE_STRING (isolate, " DOMException" ))
202
196
.ToLocal (&domexception_ctor_val)) {
203
- return ;
197
+ return MaybeLocal<Function>() ;
204
198
}
205
-
206
199
CHECK (domexception_ctor_val->IsFunction ());
207
200
Local<Function> domexception_ctor = domexception_ctor_val.As <Function>();
208
- if (!domexception_ctor->NewInstance (context, arraysize (argv), argv)
209
- .ToLocal (&exception )) {
201
+ return domexception_ctor;
202
+ }
203
+
204
+ void ThrowDataCloneException (Local<Context> context, Local<String> message) {
205
+ Isolate* isolate = context->GetIsolate ();
206
+ Local<Value> argv[] = {message,
207
+ FIXED_ONE_BYTE_STRING (isolate, " DataCloneError" )};
208
+ Local<Value> exception ;
209
+ Local<Function> domexception_ctor;
210
+ if (!GetDOMException (context).ToLocal (&domexception_ctor) ||
211
+ !domexception_ctor->NewInstance (context, arraysize (argv), argv)
212
+ .ToLocal (&exception )) {
210
213
return ;
211
214
}
212
215
isolate->ThrowException (exception );
@@ -900,6 +903,15 @@ static void InitMessaging(Local<Object> target,
900
903
env->SetMethod (target, " receiveMessageOnPort" , MessagePort::ReceiveMessage);
901
904
env->SetMethod (target, " moveMessagePortToContext" ,
902
905
MessagePort::MoveToContext);
906
+
907
+ {
908
+ Local<Function> domexception = GetDOMException (context).ToLocalChecked ();
909
+ target
910
+ ->Set (context,
911
+ FIXED_ONE_BYTE_STRING (env->isolate (), " DOMException" ),
912
+ domexception)
913
+ .Check ();
914
+ }
903
915
}
904
916
905
917
} // anonymous namespace
0 commit comments