Index: third_party/WebKit/Source/core/frame/FrameConsole.cpp |
diff --git a/third_party/WebKit/Source/core/frame/FrameConsole.cpp b/third_party/WebKit/Source/core/frame/FrameConsole.cpp |
index 03d0c1296ffdcf1ce5507e613b3041e7ef1bf159..0bd2317dddc9ecb72a938cf453777b95b4905d7a 100644 |
--- a/third_party/WebKit/Source/core/frame/FrameConsole.cpp |
+++ b/third_party/WebKit/Source/core/frame/FrameConsole.cpp |
@@ -28,24 +28,40 @@ |
#include "core/frame/FrameConsole.h" |
+#include <memory> |
#include "bindings/core/v8/SourceLocation.h" |
#include "core/frame/FrameHost.h" |
#include "core/frame/LocalFrame.h" |
#include "core/inspector/ConsoleMessage.h" |
#include "core/inspector/ConsoleMessageStorage.h" |
#include "core/inspector/MainThreadDebugger.h" |
+#include "core/loader/DocumentLoader.h" |
#include "core/page/ChromeClient.h" |
#include "core/page/Page.h" |
#include "platform/network/ResourceError.h" |
#include "platform/network/ResourceResponse.h" |
#include "wtf/text/StringBuilder.h" |
-#include <memory> |
namespace blink { |
FrameConsole::FrameConsole(LocalFrame& frame) : m_frame(&frame) {} |
void FrameConsole::addMessage(ConsoleMessage* consoleMessage) { |
+ // PlzNavigate: when trying to commit a navigation, the SourceLocation |
+ // information for how the request was triggered has been stored in the |
+ // provisional DocumentLoader. Use it instead. |
+ DocumentLoader* provisionalLoader = |
+ m_frame->loader().provisionalDocumentLoader(); |
+ if (provisionalLoader) { |
+ std::unique_ptr<SourceLocation> sourceLocation = |
+ provisionalLoader->copySourceLocation(); |
+ if (sourceLocation) { |
+ consoleMessage = ConsoleMessage::create( |
+ consoleMessage->source(), consoleMessage->level(), |
+ consoleMessage->message(), std::move(sourceLocation)); |
+ } |
+ } |
+ |
if (addMessageToStorage(consoleMessage)) |
reportMessageToClient(consoleMessage->source(), consoleMessage->level(), |
consoleMessage->message(), |