Chromium Code Reviews| Index: Source/bindings/v8/V8Initializer.cpp |
| diff --git a/Source/bindings/v8/V8Initializer.cpp b/Source/bindings/v8/V8Initializer.cpp |
| index d521b34126f8e733ce1ee598f5ea7df1b29e7677..f9381c07fb088f69d980b2b8052b6c945bc3ddaa 100644 |
| --- a/Source/bindings/v8/V8Initializer.cpp |
| +++ b/Source/bindings/v8/V8Initializer.cpp |
| @@ -26,13 +26,16 @@ |
| #include "config.h" |
| #include "bindings/v8/V8Initializer.h" |
| +#include "V8ErrorEvent.h" |
| #include "V8History.h" |
| #include "V8Location.h" |
| #include "V8Window.h" |
| +#include "bindings/v8/DOMWrapperWorld.h" |
| #include "bindings/v8/ScriptCallStackFactory.h" |
| #include "bindings/v8/ScriptProfiler.h" |
| #include "bindings/v8/V8Binding.h" |
| #include "bindings/v8/V8GCController.h" |
| +#include "bindings/v8/V8HiddenPropertyName.h" |
| #include "bindings/v8/V8PerContextData.h" |
| #include "core/dom/Document.h" |
| #include "core/dom/ExceptionCode.h" |
| @@ -94,7 +97,11 @@ static void messageHandlerInMainThread(v8::Handle<v8::Message> message, v8::Hand |
| v8::Handle<v8::Value> resourceName = message->GetScriptResourceName(); |
| bool shouldUseDocumentURL = resourceName.IsEmpty() || !resourceName->IsString(); |
| String resource = shouldUseDocumentURL ? firstWindow->document()->url() : toWebCoreString(resourceName); |
| - firstWindow->document()->reportException(errorMessage, message->GetLineNumber(), message->GetStartColumn(), resource, callStack); |
| + RefPtr<ErrorEvent> event = ErrorEvent::create(errorMessage, resource, message->GetLineNumber(), message->GetStartColumn()); |
| + v8::Local<v8::Value> wrappedEvent = toV8(event.get(), v8::Handle<v8::Object>(), v8::Isolate::GetCurrent()); |
| + if (!wrappedEvent.IsEmpty() && wrappedEvent->IsObject()) |
|
adamk
2013/07/31 16:37:30
wrappedEvent->IsObject() can just be an ASSERT, I
Mike West
2013/08/01 07:52:15
Done.
|
| + wrappedEvent->ToObject()->SetHiddenValue(V8HiddenPropertyName::error(), data); |
|
adamk
2013/07/31 16:37:30
Rather than ToObject, I think this should be v8::L
Mike West
2013/08/01 07:52:15
Done.
|
| + firstWindow->document()->reportException(event.release(), callStack); |
| } |
| static void failedAccessCheckCallbackInMainThread(v8::Local<v8::Object> host, v8::AccessType type, v8::Local<v8::Value> data) |
| @@ -162,10 +169,12 @@ static void messageHandlerInWorker(v8::Handle<v8::Message> message, v8::Handle<v |
| // During the frame teardown, there may not be a valid context. |
| if (ScriptExecutionContext* context = getScriptExecutionContext()) { |
| String errorMessage = toWebCoreString(message->Get()); |
| - int lineNumber = message->GetLineNumber(); |
| - int columnNumber = message->GetStartColumn(); |
| String sourceURL = toWebCoreString(message->GetScriptResourceName()); |
| - context->reportException(errorMessage, lineNumber, columnNumber, sourceURL, 0); |
| + RefPtr<ErrorEvent> event = ErrorEvent::create(errorMessage, sourceURL, message->GetLineNumber(), message->GetStartColumn()); |
| + v8::Local<v8::Value> wrappedEvent = toV8(event.get(), v8::Handle<v8::Object>(), v8::Isolate::GetCurrent()); |
| + if (!wrappedEvent.IsEmpty() && wrappedEvent->IsObject()) |
|
adamk
2013/07/31 16:37:30
Same here as above
Mike West
2013/08/01 07:52:15
Done.
|
| + wrappedEvent->ToObject()->SetHiddenValue(V8HiddenPropertyName::error(), data); |
|
adamk
2013/07/31 16:37:30
and here too
Mike West
2013/08/01 07:52:15
Done.
|
| + context->reportException(event.release(), 0); |
| } |
| isReportingException = false; |