Chromium Code Reviews| Index: Source/core/frame/FrameConsole.cpp |
| diff --git a/Source/core/frame/FrameConsole.cpp b/Source/core/frame/FrameConsole.cpp |
| index 28dc4d3da49113cd0162f15067ff2b393264a289..f930c2ac8be600f720e6fa8077cc1b1eeac6336a 100644 |
| --- a/Source/core/frame/FrameConsole.cpp |
| +++ b/Source/core/frame/FrameConsole.cpp |
| @@ -65,14 +65,19 @@ void FrameConsole::addMessage(PassRefPtrWillBeRawPtr<ConsoleMessage> prpConsoleM |
| return; |
| RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = prpConsoleMessage; |
| - InspectorInstrumentation::addMessageToConsole(context, consoleMessage.get()); |
| + unsigned lineNumber = consoleMessage->lineNumber(); |
|
vsevik
2014/08/14 08:06:21
This one is worth a comment, or even a FIXME since
kozyatinskiy1
2014/08/20 13:44:18
It was moved to another patch.
|
| String messageURL; |
| - if (consoleMessage->callStack()) |
| + if (consoleMessage->callStack() && consoleMessage->callStack()->size()) |
| messageURL = consoleMessage->callStack()->at(0).sourceURL(); |
| else |
| messageURL = consoleMessage->url(); |
| + ConsoleMessageStorage* storage = messageStorage(); |
|
vsevik
2014/08/14 08:06:21
This method does two things
1) Report the message
kozyatinskiy1
2014/08/20 13:44:18
Done.
|
| + if (storage) |
|
vsevik
2014/08/14 08:06:21
Let's assume this is never null and move
Inspect
kozyatinskiy1
2014/08/20 13:44:18
Done.
|
| + storage->addMessage(consoleMessage); |
| + InspectorInstrumentation::addMessageToConsole(context, consoleMessage); |
| + |
| if (consoleMessage->source() == CSSMessageSource) |
| return; |
| @@ -80,7 +85,7 @@ void FrameConsole::addMessage(PassRefPtrWillBeRawPtr<ConsoleMessage> prpConsoleM |
| if (consoleMessage->callStack() && m_frame.chromeClient().shouldReportDetailedMessageForSource(consoleMessage->url())) |
| stackTrace = FrameConsole::formatStackTraceString(consoleMessage->message(), consoleMessage->callStack()); |
| - m_frame.chromeClient().addMessageToConsole(&m_frame, consoleMessage->source(), consoleMessage->level(), consoleMessage->message(), consoleMessage->lineNumber(), messageURL, stackTrace); |
| + m_frame.chromeClient().addMessageToConsole(&m_frame, consoleMessage->source(), consoleMessage->level(), consoleMessage->message(), lineNumber, messageURL, stackTrace); |
| } |
| String FrameConsole::formatStackTraceString(const String& originalMessage, PassRefPtrWillBeRawPtr<ScriptCallStack> callStack) |
| @@ -117,4 +122,26 @@ void FrameConsole::adoptWorkerConsoleMessages(WorkerGlobalScopeProxy* proxy) |
| InspectorInstrumentation::adoptWorkerConsoleMessages(m_frame.document(), proxy); |
| } |
| +ConsoleMessageStorage* FrameConsole::messageStorage() |
| +{ |
|
vsevik
2014/08/14 08:06:22
LocalFrame* localTopFrame = toLocalFrame(curFrame-
kozyatinskiy1
2014/08/20 13:44:18
Done.
|
| + LocalFrame* curFrame = &m_frame; |
| + // traversal to top frame |
| + while (curFrame && curFrame->tree().parent() && curFrame->tree().parent()->isLocalFrame()) |
| + curFrame = toLocalFrame(curFrame->tree().parent()); |
| + |
| + // if top is current - return storage |
| + if (curFrame == &m_frame) { |
| + if (m_consoleMessageStorage.get()) |
| + return m_consoleMessageStorage.get(); |
| + m_consoleMessageStorage = ConsoleMessageStorage::create(); |
| + return m_consoleMessageStorage.get(); |
| + } |
| + |
| + // if top is local - return storage |
| + if (curFrame->isLocalFrame()) |
| + return curFrame->console().messageStorage(); |
| + |
| + return nullptr; |
| +} |
| + |
| } // namespace blink |