| Index: Source/core/frame/FrameConsole.cpp
 | 
| diff --git a/Source/core/frame/FrameConsole.cpp b/Source/core/frame/FrameConsole.cpp
 | 
| index ba05c78164929afe0b995721fbb353325abaae43..42238f5934604a69d1d68afad8e02491cec77a7c 100644
 | 
| --- a/Source/core/frame/FrameConsole.cpp
 | 
| +++ b/Source/core/frame/FrameConsole.cpp
 | 
| @@ -66,14 +66,9 @@ void FrameConsole::addMessage(PassRefPtrWillBeRawPtr<ConsoleMessage> prpConsoleM
 | 
|      if (!context)
 | 
|          return;
 | 
|  
 | 
| -    InspectorInstrumentation::addMessageToConsole(context, consoleMessage.get());
 | 
| -
 | 
| -    if (consoleMessage->source() == CSSMessageSource)
 | 
| -        return;
 | 
| -
 | 
|      String messageURL;
 | 
|      unsigned lineNumber = 0;
 | 
| -    if (consoleMessage->callStack()) {
 | 
| +    if (consoleMessage->callStack() && consoleMessage->callStack()->size()) {
 | 
|          lineNumber = consoleMessage->callStack()->at(0).lineNumber();
 | 
|          messageURL = consoleMessage->callStack()->at(0).sourceURL();
 | 
|      } else {
 | 
| @@ -81,6 +76,11 @@ void FrameConsole::addMessage(PassRefPtrWillBeRawPtr<ConsoleMessage> prpConsoleM
 | 
|          messageURL = consoleMessage->url();
 | 
|      }
 | 
|  
 | 
| +    messageStorage()->reportMessage(consoleMessage);
 | 
| +
 | 
| +    if (consoleMessage->source() == CSSMessageSource)
 | 
| +        return;
 | 
| +
 | 
|      RefPtrWillBeRawPtr<ScriptCallStack> reportedCallStack = nullptr;
 | 
|      if (consoleMessage->source() != ConsoleAPIMessageSource) {
 | 
|          if (consoleMessage->callStack() && m_frame.chromeClient().shouldReportDetailedMessageForSource(messageURL))
 | 
| @@ -132,6 +132,19 @@ void FrameConsole::unmute()
 | 
|      muteCount--;
 | 
|  }
 | 
|  
 | 
| +ConsoleMessageStorage* FrameConsole::messageStorage()
 | 
| +{
 | 
| +    LocalFrame* curFrame = &m_frame;
 | 
| +    Frame* topFrame = curFrame->tree().top();
 | 
| +    ASSERT(topFrame->isLocalFrame());
 | 
| +    LocalFrame* localTopFrame = toLocalFrame(topFrame);
 | 
| +    if (localTopFrame != curFrame)
 | 
| +        return localTopFrame->console().messageStorage();
 | 
| +    if (!m_consoleMessageStorage)
 | 
| +        m_consoleMessageStorage = ConsoleMessageStorage::create(&m_frame);
 | 
| +    return m_consoleMessageStorage.get();
 | 
| +}
 | 
| +
 | 
|  void FrameConsole::adoptWorkerConsoleMessages(WorkerGlobalScopeProxy* proxy)
 | 
|  {
 | 
|      InspectorInstrumentation::adoptWorkerConsoleMessages(m_frame.document(), proxy);
 | 
| 
 |