Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(158)

Unified Diff: Source/core/workers/WorkerGlobalScope.cpp

Issue 743153002: [DevTools] Show stack trace for exceptions in dedicated workers (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@worker-capture-stack
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/workers/WorkerGlobalScope.h ('k') | Source/core/workers/WorkerMessagingProxy.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/workers/WorkerGlobalScope.cpp
diff --git a/Source/core/workers/WorkerGlobalScope.cpp b/Source/core/workers/WorkerGlobalScope.cpp
index b355f28e92bcff44fba64c7b7b7406189f7e0b68..f59380694e896b4645ad6235d663c415a6d73cfb 100644
--- a/Source/core/workers/WorkerGlobalScope.cpp
+++ b/Source/core/workers/WorkerGlobalScope.cpp
@@ -62,6 +62,13 @@
namespace blink {
+static unsigned long s_workerExceptionUniqueIdentifier = 0;
vsevik 2014/11/24 09:51:34 Let's put these into an anonymous namespace.
kozy 2014/12/01 13:11:55 Done.
+
+unsigned long createWorkerExceptionUniqueIdentifier()
+{
+ return ++s_workerExceptionUniqueIdentifier;
+}
+
class CloseWorkerGlobalScopeTask : public ExecutionContextTask {
public:
static PassOwnPtr<CloseWorkerGlobalScopeTask> create()
@@ -267,9 +274,14 @@ EventTarget* WorkerGlobalScope::errorEventTarget()
return this;
}
-void WorkerGlobalScope::logExceptionToConsole(const String& errorMessage, int, const String& sourceURL, int lineNumber, int columnNumber, PassRefPtrWillBeRawPtr<ScriptCallStack>)
+void WorkerGlobalScope::logExceptionToConsole(const String& errorMessage, int, const String& sourceURL, int lineNumber, int columnNumber, PassRefPtrWillBeRawPtr<ScriptCallStack> callStack)
{
- thread()->workerReportingProxy().reportException(errorMessage, lineNumber, columnNumber, sourceURL);
+ unsigned long exceptionId = createWorkerExceptionUniqueIdentifier();
+ RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, errorMessage, sourceURL, lineNumber);
+ consoleMessage->setCallStack(callStack);
+ m_pendingMessages.set(exceptionId, consoleMessage);
+
+ thread()->workerReportingProxy().reportException(errorMessage, lineNumber, columnNumber, sourceURL, exceptionId);
}
void WorkerGlobalScope::reportBlockedScriptExecutionToInspector(const String& directiveText)
@@ -329,6 +341,15 @@ ConsoleMessageStorage* WorkerGlobalScope::messageStorage()
return m_messageStorage.get();
}
+void WorkerGlobalScope::exceptionHandled(int exceptionId, bool isHandled)
+{
+ RefPtr<ConsoleMessage> consoleMessage = m_pendingMessages.take(exceptionId);
+ if (!isHandled) {
+ thread()->workerReportingProxy().reportConsoleMessage(consoleMessage);
+ addMessageToWorkerConsole(consoleMessage.release());
+ }
+}
+
void WorkerGlobalScope::trace(Visitor* visitor)
{
#if ENABLE(OILPAN)
« no previous file with comments | « Source/core/workers/WorkerGlobalScope.h ('k') | Source/core/workers/WorkerMessagingProxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698