Index: Source/bindings/v8/SerializedScriptValue.cpp |
diff --git a/Source/bindings/v8/SerializedScriptValue.cpp b/Source/bindings/v8/SerializedScriptValue.cpp |
index 8f2a0f6ba6556e33b11869d003f47279de29b0ea..fe5aecd711fd957726f78cdd6fd73904c949f00e 100644 |
--- a/Source/bindings/v8/SerializedScriptValue.cpp |
+++ b/Source/bindings/v8/SerializedScriptValue.cpp |
@@ -2223,25 +2223,21 @@ private: |
} // namespace |
-PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(v8::Handle<v8::Value> value, MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers, bool& didThrow) |
-{ |
- return create(value, messagePorts, arrayBuffers, didThrow, v8::Isolate::GetCurrent()); |
-} |
- |
PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(v8::Handle<v8::Value> value, MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers, bool& didThrow, v8::Isolate* isolate) |
{ |
return adoptRef(new SerializedScriptValue(value, messagePorts, arrayBuffers, didThrow, isolate)); |
} |
-PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(v8::Handle<v8::Value> value) |
+PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(v8::Handle<v8::Value> value, v8::Isolate* isolate) |
{ |
- return create(value, v8::Isolate::GetCurrent()); |
+ bool didThrow; |
+ return adoptRef(new SerializedScriptValue(value, 0, 0, didThrow, isolate)); |
} |
-PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(v8::Handle<v8::Value> value, v8::Isolate* isolate) |
+PassRefPtr<SerializedScriptValue> SerializedScriptValue::createAndSwallowExceptions(v8::Handle<v8::Value> value, v8::Isolate* isolate) |
{ |
bool didThrow; |
- return adoptRef(new SerializedScriptValue(value, 0, 0, didThrow, isolate)); |
+ return adoptRef(new SerializedScriptValue(value, 0, 0, didThrow, isolate, DoNotThrowExceptions)); |
} |
PassRefPtr<SerializedScriptValue> SerializedScriptValue::createFromWire(const String& data) |
@@ -2425,7 +2421,7 @@ PassOwnPtr<SerializedScriptValue::ArrayBufferContentsArray> SerializedScriptValu |
return contents.release(); |
} |
-SerializedScriptValue::SerializedScriptValue(v8::Handle<v8::Value> value, MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers, bool& didThrow, v8::Isolate* isolate) |
+SerializedScriptValue::SerializedScriptValue(v8::Handle<v8::Value> value, MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers, bool& didThrow, v8::Isolate* isolate, ExceptionPolicy policy) |
: m_externallyAllocatedMemory(0) |
{ |
didThrow = false; |
@@ -2436,9 +2432,10 @@ SerializedScriptValue::SerializedScriptValue(v8::Handle<v8::Value> value, Messag |
Serializer serializer(writer, messagePorts, arrayBuffers, m_blobURLs, tryCatch, isolate); |
status = serializer.serialize(value); |
if (status == Serializer::JSException) { |
- // If there was a JS exception thrown, re-throw it. |
didThrow = true; |
- tryCatch.ReThrow(); |
+ // If there was a JS exception thrown, re-throw it. |
+ if (policy == ThrowExceptions) |
+ tryCatch.ReThrow(); |
return; |
} |
} |
@@ -2448,11 +2445,13 @@ SerializedScriptValue::SerializedScriptValue(v8::Handle<v8::Value> value, Messag |
// If there was an input error, throw a new exception outside |
// of the TryCatch scope. |
didThrow = true; |
- setDOMException(DataCloneError, isolate); |
+ if (policy == ThrowExceptions) |
+ setDOMException(DataCloneError, isolate); |
return; |
case Serializer::InvalidStateError: |
didThrow = true; |
- setDOMException(InvalidStateError, isolate); |
+ if (policy == ThrowExceptions) |
+ setDOMException(InvalidStateError, isolate); |
return; |
case Serializer::JSFailure: |
// If there was a JS failure (but no exception), there's not |