| Index: Source/bindings/v8/custom/V8WindowCustom.cpp
|
| diff --git a/Source/bindings/v8/custom/V8WindowCustom.cpp b/Source/bindings/v8/custom/V8WindowCustom.cpp
|
| index af29c16a0551f0f5deb30f4e2ab572e23d049623..f61bd45326525c1a8c66e21af08f2ab173c4bfaf 100644
|
| --- a/Source/bindings/v8/custom/V8WindowCustom.cpp
|
| +++ b/Source/bindings/v8/custom/V8WindowCustom.cpp
|
| @@ -264,6 +264,7 @@ void V8Window::postMessageMethodCustom(const v8::FunctionCallbackInfo<v8::Value>
|
| return;
|
| }
|
|
|
| + ExceptionState exceptionState(ExceptionState::ExecutionContext, "postMessage", "Window", info.Holder(), info.GetIsolate());
|
| // This function has variable arguments and can be:
|
| // Per current spec:
|
| // postMessage(message, targetOrigin)
|
| @@ -279,22 +280,17 @@ void V8Window::postMessageMethodCustom(const v8::FunctionCallbackInfo<v8::Value>
|
| targetOriginArgIndex = 2;
|
| transferablesArgIndex = 1;
|
| }
|
| - bool notASequence = false;
|
| - if (!extractTransferables(info[transferablesArgIndex], portArray, arrayBufferArray, notASequence, info.GetIsolate())) {
|
| - if (notASequence)
|
| - throwTypeError(ExceptionMessages::failedToExecute("postMessage", "Window", ExceptionMessages::notAnArrayTypeArgumentOrValue(transferablesArgIndex + 1)), info.GetIsolate());
|
| + if (!extractTransferables(info[transferablesArgIndex], transferablesArgIndex, portArray, arrayBufferArray, exceptionState, info.GetIsolate())) {
|
| + exceptionState.throwIfNeeded();
|
| return;
|
| }
|
| }
|
| V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<WithUndefinedOrNullCheck>, targetOrigin, info[targetOriginArgIndex]);
|
|
|
| - bool didThrow = false;
|
| - RefPtr<SerializedScriptValue> message =
|
| - SerializedScriptValue::create(info[0], &portArray, &arrayBufferArray, didThrow, info.GetIsolate());
|
| - if (didThrow)
|
| + RefPtr<SerializedScriptValue> message = SerializedScriptValue::create(info[0], &portArray, &arrayBufferArray, exceptionState, info.GetIsolate());
|
| + if (exceptionState.throwIfNeeded())
|
| return;
|
|
|
| - ExceptionState exceptionState(ExceptionState::ExecutionContext, "postMessage", "Window", info.Holder(), info.GetIsolate());
|
| window->postMessage(message.release(), &portArray, targetOrigin, source, exceptionState);
|
| exceptionState.throwIfNeeded();
|
| }
|
|
|