Index: third_party/WebKit/Source/core/workers/WorkerGlobalScope.cpp |
diff --git a/third_party/WebKit/Source/core/workers/WorkerGlobalScope.cpp b/third_party/WebKit/Source/core/workers/WorkerGlobalScope.cpp |
index 49a7d26973c4beb0402699acc36bf3163c1826ac..d76f730b68bfb11ee44035afc1829faf923c8a76 100644 |
--- a/third_party/WebKit/Source/core/workers/WorkerGlobalScope.cpp |
+++ b/third_party/WebKit/Source/core/workers/WorkerGlobalScope.cpp |
@@ -134,10 +134,12 @@ void WorkerGlobalScope::dispose() |
m_thread = nullptr; |
} |
-void WorkerGlobalScope::exceptionUnhandled(const String& errorMessage, std::unique_ptr<SourceLocation> location) |
+void WorkerGlobalScope::exceptionUnhandled(int exceptionId) |
{ |
+ ErrorEvent* event = m_pendingErrorEvents.take(exceptionId); |
+ DCHECK(event); |
if (WorkerThreadDebugger* debugger = WorkerThreadDebugger::from(thread()->isolate())) |
- debugger->exceptionThrown(errorMessage, std::move(location)); |
+ debugger->exceptionThrown(event); |
} |
void WorkerGlobalScope::registerEventListener(V8AbstractEventListener* eventListener) |
@@ -299,6 +301,7 @@ WorkerGlobalScope::WorkerGlobalScope(const KURL& url, const String& userAgent, W |
, m_timers(Platform::current()->currentThread()->scheduler()->timerTaskRunner()->clone()) |
, m_timeOrigin(timeOrigin) |
, m_consoleMessageStorage(new ConsoleMessageStorage()) |
+ , m_lastPendingErrorEventId(0) |
{ |
setSecurityOrigin(SecurityOrigin::create(url)); |
if (starterOriginPrivilageData) |
@@ -330,9 +333,11 @@ void WorkerGlobalScope::addMessageToWorkerConsole(ConsoleMessage* consoleMessage |
m_consoleMessageStorage->addConsoleMessage(this, consoleMessage); |
} |
-void WorkerGlobalScope::exceptionThrown(const String& errorMessage, std::unique_ptr<SourceLocation> location) |
+void WorkerGlobalScope::exceptionThrown(ErrorEvent* event) |
{ |
- thread()->workerReportingProxy().reportException(errorMessage, std::move(location)); |
+ int nextId = ++m_lastPendingErrorEventId; |
+ m_pendingErrorEvents.set(nextId, event); |
+ thread()->workerReportingProxy().reportException(event->messageForConsole(), event->location()->clone(), nextId); |
} |
void WorkerGlobalScope::removeURLFromMemoryCache(const KURL& url) |
@@ -371,6 +376,7 @@ DEFINE_TRACE(WorkerGlobalScope) |
visitor->trace(m_timers); |
visitor->trace(m_consoleMessageStorage); |
visitor->trace(m_eventListeners); |
+ visitor->trace(m_pendingErrorEvents); |
ExecutionContext::trace(visitor); |
EventTargetWithInlineData::trace(visitor); |
SecurityContext::trace(visitor); |