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 aa34b081868f9a498321839ebfa00c7354fed784..2cdc2c1c90c9a0ab87cb33903dfc1f7cc222fc6c 100644 |
--- a/third_party/WebKit/Source/core/inspector/MainThreadDebugger.cpp |
+++ b/third_party/WebKit/Source/core/inspector/MainThreadDebugger.cpp |
@@ -42,10 +42,12 @@ |
#include "core/dom/ExecutionContext.h" |
#include "core/dom/StaticNodeList.h" |
#include "core/frame/FrameConsole.h" |
+#include "core/frame/FrameHost.h" |
#include "core/frame/LocalDOMWindow.h" |
#include "core/frame/LocalFrame.h" |
#include "core/frame/UseCounter.h" |
#include "core/inspector/ConsoleMessage.h" |
+#include "core/inspector/ConsoleMessageStorage.h" |
#include "core/inspector/IdentifiersFactory.h" |
#include "core/inspector/InspectedFrames.h" |
#include "core/inspector/InspectorTaskRunner.h" |
@@ -75,6 +77,17 @@ Mutex& creationMutex() |
return mutex; |
} |
+LocalFrame* toFrame(ExecutionContext* context) |
+{ |
+ if (!context) |
+ return nullptr; |
+ if (context->isDocument()) |
+ return toDocument(context)->frame(); |
+ if (context->isMainThreadWorkletGlobalScope()) |
+ return toMainThreadWorkletGlobalScope(context)->frame(); |
+ return nullptr; |
+} |
+ |
} |
MainThreadDebugger* MainThreadDebugger::s_instance = nullptr; |
@@ -83,7 +96,6 @@ MainThreadDebugger::MainThreadDebugger(v8::Isolate* isolate) |
: ThreadDebugger(isolate) |
, m_taskRunner(wrapUnique(new InspectorTaskRunner())) |
, m_paused(false) |
- , m_muteConsoleCount(0) |
{ |
MutexLocker locker(creationMutex()); |
ASSERT(!s_instance); |
@@ -99,17 +111,16 @@ MainThreadDebugger::~MainThreadDebugger() |
void MainThreadDebugger::reportConsoleMessage(ExecutionContext* context, ConsoleMessage* message) |
{ |
- if (!context) |
- return; |
- LocalFrame* frame = nullptr; |
- if (context->isDocument()) |
- frame = toDocument(context)->frame(); |
- if (context->isMainThreadWorkletGlobalScope()) |
- frame = toMainThreadWorkletGlobalScope(context)->frame(); |
- if (frame) |
+ if (LocalFrame* frame = toFrame(context)) |
frame->console().reportMessageToClient(message); |
} |
+int MainThreadDebugger::contextGroupId(ExecutionContext* context) |
+{ |
+ LocalFrame* frame = toFrame(context); |
+ return frame ? contextGroupId(frame) : 0; |
+} |
+ |
void MainThreadDebugger::setClientMessageLoop(std::unique_ptr<ClientMessageLoop> clientMessageLoop) |
{ |
ASSERT(!m_clientMessageLoop); |
@@ -140,31 +151,12 @@ void MainThreadDebugger::contextWillBeDestroyed(ScriptState* scriptState) |
void MainThreadDebugger::exceptionThrown(LocalFrame* frame, const String& errorMessage, std::unique_ptr<SourceLocation> location) |
{ |
- if (m_muteConsoleCount) |
+ if (frame->host() && frame->host()->consoleMessageStorage().isMuted()) |
return; |
debugger()->exceptionThrown(contextGroupId(frame), errorMessage, location->url(), location->lineNumber(), location->columnNumber(), location->cloneStackTrace(), location->scriptId()); |
frame->console().reportMessageToClient(ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, errorMessage, std::move(location))); |
} |
-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(); |
@@ -211,16 +203,20 @@ void MainThreadDebugger::quitMessageLoopOnPause() |
m_clientMessageLoop->quitNow(); |
} |
-void MainThreadDebugger::muteWarningsAndDeprecations() |
+void MainThreadDebugger::muteWarningsAndDeprecations(int contextGroupId) |
{ |
UseCounter::muteForInspector(); |
- m_muteConsoleCount++; |
+ LocalFrame* frame = WeakIdentifierMap<LocalFrame>::lookup(contextGroupId); |
+ if (frame && frame->host()) |
+ frame->host()->consoleMessageStorage().mute(); |
} |
-void MainThreadDebugger::unmuteWarningsAndDeprecations() |
+void MainThreadDebugger::unmuteWarningsAndDeprecations(int contextGroupId) |
{ |
UseCounter::unmuteForInspector(); |
- m_muteConsoleCount--; |
+ LocalFrame* frame = WeakIdentifierMap<LocalFrame>::lookup(contextGroupId); |
+ if (frame && frame->host()) |
+ frame->host()->consoleMessageStorage().unmute(); |
} |
bool MainThreadDebugger::callingContextCanAccessContext(v8::Local<v8::Context> calling, v8::Local<v8::Context> target) |