Index: Source/bindings/v8/V8Utilities.cpp |
diff --git a/Source/bindings/v8/V8Utilities.cpp b/Source/bindings/v8/V8Utilities.cpp |
index 6a70b502c3213f2eae85f46223165d2affe7e430..4476736a76ee5d9342564e133580e104cf80a50a 100644 |
--- a/Source/bindings/v8/V8Utilities.cpp |
+++ b/Source/bindings/v8/V8Utilities.cpp |
@@ -64,7 +64,7 @@ void createHiddenDependency(v8::Handle<v8::Object> object, v8::Local<v8::Value> |
cacheArray->Set(v8::Integer::New(cacheArray->Length(), isolate), value); |
} |
-bool extractTransferables(v8::Local<v8::Value> value, MessagePortArray& ports, ArrayBufferArray& arrayBuffers, bool& notASequence, v8::Isolate* isolate) |
+bool extractTransferables(v8::Local<v8::Value> value, int argumentIndex, MessagePortArray& ports, ArrayBufferArray& arrayBuffers, ExceptionState& exceptionState, v8::Isolate* isolate) |
{ |
if (isUndefinedOrNull(value)) { |
ports.resize(0); |
@@ -77,7 +77,7 @@ bool extractTransferables(v8::Local<v8::Value> value, MessagePortArray& ports, A |
v8::Local<v8::Array> array = v8::Local<v8::Array>::Cast(value); |
length = array->Length(); |
} else if (toV8Sequence(value, length, isolate).IsEmpty()) { |
- notASequence = true; |
+ exceptionState.throwTypeError(ExceptionMessages::notAnArrayTypeArgumentOrValue(argumentIndex + 1)); |
return false; |
} |
@@ -88,7 +88,7 @@ bool extractTransferables(v8::Local<v8::Value> value, MessagePortArray& ports, A |
v8::Local<v8::Value> transferrable = transferrables->Get(i); |
// Validation of non-null objects, per HTML5 spec 10.3.3. |
if (isUndefinedOrNull(transferrable)) { |
- setDOMException(DataCloneError, isolate); |
+ exceptionState.throwDOMException(DataCloneError, "Value at index " + String::number(i) + " is an untransferable " + (transferrable->IsUndefined() ? "'undefined'" : "'null'") + " value."); |
return false; |
} |
// Validation of Objects implementing an interface, per WebIDL spec 4.1.15. |
@@ -96,14 +96,14 @@ bool extractTransferables(v8::Local<v8::Value> value, MessagePortArray& ports, A |
RefPtr<MessagePort> port = V8MessagePort::toNative(v8::Handle<v8::Object>::Cast(transferrable)); |
// Check for duplicate MessagePorts. |
if (ports.contains(port)) { |
- setDOMException(DataCloneError, isolate); |
+ exceptionState.throwDOMException(DataCloneError, "Message port at index " + String::number(i) + " is a duplicate of an earlier port."); |
return false; |
} |
ports.append(port.release()); |
} else if (V8ArrayBuffer::hasInstance(transferrable, isolate, worldType(isolate))) |
arrayBuffers.append(V8ArrayBuffer::toNative(v8::Handle<v8::Object>::Cast(transferrable))); |
else { |
- setDOMException(DataCloneError, isolate); |
+ exceptionState.throwDOMException(DataCloneError, "Value at index " + String::number(i) + " does not have a transferable type."); |
return false; |
} |
} |