| Index: third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
|
| diff --git a/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp b/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
|
| index 391a19076b249945cbbde28e83e6f0102eb600ba..dc2378109cb185b8d9dd93a70140d28d0fb58657 100644
|
| --- a/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
|
| +++ b/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
|
| @@ -124,7 +124,7 @@ private:
|
| class PostMessageTimer final : public GarbageCollectedFinalized<PostMessageTimer>, public SuspendableTimer {
|
| USING_GARBAGE_COLLECTED_MIXIN(PostMessageTimer);
|
| public:
|
| - PostMessageTimer(LocalDOMWindow& window, MessageEvent* event, SecurityOrigin* targetOrigin, PassRefPtr<ScriptCallStack> stackTrace, UserGestureToken* userGestureToken)
|
| + PostMessageTimer(LocalDOMWindow& window, MessageEvent* event, PassRefPtr<SecurityOrigin> targetOrigin, PassRefPtr<ScriptCallStack> stackTrace, UserGestureToken* userGestureToken)
|
| : SuspendableTimer(window.document())
|
| , m_event(event)
|
| , m_window(&window)
|
| @@ -663,14 +663,19 @@ Navigator* LocalDOMWindow::navigator() const
|
| return m_navigator.get();
|
| }
|
|
|
| -void LocalDOMWindow::schedulePostMessage(MessageEvent* event, SecurityOrigin* target, PassRefPtr<ScriptCallStack> stackTrace)
|
| +void LocalDOMWindow::schedulePostMessage(MessageEvent* event, PassRefPtr<SecurityOrigin> target, Document* source)
|
| {
|
| // Allowing unbounded amounts of messages to build up for a suspended context
|
| // is problematic; consider imposing a limit or other restriction if this
|
| // surfaces often as a problem (see crbug.com/587012).
|
|
|
| + // Capture stack trace only when inspector front-end is loaded as it may be time consuming.
|
| + RefPtr<ScriptCallStack> stackTrace;
|
| + if (InspectorInstrumentation::consoleAgentEnabled(source))
|
| + stackTrace = ScriptCallStack::capture();
|
| +
|
| // Schedule the message.
|
| - PostMessageTimer* timer = new PostMessageTimer(*this, event, target, stackTrace, UserGestureIndicator::currentToken());
|
| + PostMessageTimer* timer = new PostMessageTimer(*this, event, target, stackTrace.release(), UserGestureIndicator::currentToken());
|
| timer->startOneShot(0, BLINK_FROM_HERE);
|
| timer->suspendIfNeeded();
|
| m_postMessageTimers.add(timer);
|
|
|