Index: third_party/WebKit/Source/core/inspector/MainThreadDebugger.cpp |
diff --git a/third_party/WebKit/Source/core/inspector/MainThreadDebugger.cpp b/third_party/WebKit/Source/core/inspector/MainThreadDebugger.cpp |
index e8c6b9cef55f53c4aa83f7746b3183af946e3c21..11826ccc1c70635cd670a4230ce289ffcdaa5a91 100644 |
--- a/third_party/WebKit/Source/core/inspector/MainThreadDebugger.cpp |
+++ b/third_party/WebKit/Source/core/inspector/MainThreadDebugger.cpp |
@@ -82,6 +82,8 @@ MainThreadDebugger* MainThreadDebugger::s_instance = nullptr; |
MainThreadDebugger::MainThreadDebugger(v8::Isolate* isolate) |
: ThreadDebugger(isolate) |
, m_taskRunner(wrapUnique(new InspectorTaskRunner())) |
+ , m_paused(false) |
+ , m_muteConsoleCount(0) |
{ |
MutexLocker locker(creationMutex()); |
ASSERT(!s_instance); |
@@ -125,9 +127,30 @@ void MainThreadDebugger::contextWillBeDestroyed(ScriptState* scriptState) |
void MainThreadDebugger::exceptionThrown(LocalFrame* frame, const String& errorMessage, std::unique_ptr<SourceLocation> location) |
{ |
+ if (m_muteConsoleCount) |
+ return; |
debugger()->exceptionThrown(contextGroupId(frame), errorMessage, location->url(), location->lineNumber(), location->columnNumber(), location->cloneStackTrace(), location->scriptId()); |
} |
+bool MainThreadDebugger::addConsoleMessage(LocalFrame* frame, ConsoleMessage* consoleMessage) |
+{ |
+ if (m_muteConsoleCount) |
+ return false; |
+ debugger()->addConsoleMessage( |
+ contextGroupId(frame), |
+ consoleMessage->source(), |
+ consoleMessage->level(), |
+ consoleMessage->message(), |
+ consoleMessage->location()->url(), |
+ consoleMessage->location()->lineNumber(), |
+ consoleMessage->location()->columnNumber(), |
+ consoleMessage->location()->cloneStackTrace(), |
+ consoleMessage->location()->scriptId(), |
+ IdentifiersFactory::requestId(consoleMessage->requestIdentifier()), |
+ consoleMessage->workerId()); |
+ return true; |
+} |
+ |
int MainThreadDebugger::contextGroupId(LocalFrame* frame) |
{ |
LocalFrame* localFrameRoot = frame->localFrameRoot(); |
@@ -158,6 +181,7 @@ void MainThreadDebugger::runMessageLoopOnPause(int contextGroupId) |
if (!pausedFrame) |
return; |
ASSERT(pausedFrame == pausedFrame->localFrameRoot()); |
+ m_paused = true; |
if (UserGestureToken* token = UserGestureIndicator::currentToken()) |
token->setPauseInDebugger(); |
@@ -168,6 +192,7 @@ void MainThreadDebugger::runMessageLoopOnPause(int contextGroupId) |
void MainThreadDebugger::quitMessageLoopOnPause() |
{ |
+ m_paused = false; |
if (m_clientMessageLoop) |
m_clientMessageLoop->quitNow(); |
} |
@@ -175,11 +200,13 @@ void MainThreadDebugger::quitMessageLoopOnPause() |
void MainThreadDebugger::muteWarningsAndDeprecations() |
{ |
UseCounter::muteForInspector(); |
+ m_muteConsoleCount++; |
} |
void MainThreadDebugger::unmuteWarningsAndDeprecations() |
{ |
UseCounter::unmuteForInspector(); |
+ m_muteConsoleCount--; |
} |
bool MainThreadDebugger::callingContextCanAccessContext(v8::Local<v8::Context> calling, v8::Local<v8::Context> target) |