Index: Source/core/frame/DOMWindow.cpp |
diff --git a/Source/core/frame/DOMWindow.cpp b/Source/core/frame/DOMWindow.cpp |
index a434de1d2d37a0ed6051b47d50956119411da6a8..ec6d2b26d15bbce32978104d8e9d542768147c89 100644 |
--- a/Source/core/frame/DOMWindow.cpp |
+++ b/Source/core/frame/DOMWindow.cpp |
@@ -117,10 +117,10 @@ public: |
{ |
} |
- PassRefPtr<MessageEvent> event(ExecutionContext* context) |
+ PassRefPtr<MessageEvent> event() |
{ |
- OwnPtr<MessagePortArray> messagePorts = MessagePort::entanglePorts(*context, m_channels.release()); |
- return MessageEvent::create(messagePorts.release(), m_message, m_origin, String(), m_source); |
+ return MessageEvent::create(m_channels.release(), m_message, m_origin, String(), m_source); |
+ |
} |
SecurityOrigin* targetOrigin() const { return m_targetOrigin.get(); } |
ScriptCallStack* stackTrace() const { return m_stackTrace.get(); } |
@@ -783,7 +783,7 @@ void DOMWindow::postMessageTimerFired(PassOwnPtr<PostMessageTimer> t) |
if (!document() || !isCurrentlyDisplayedInFrame()) |
return; |
- RefPtr<MessageEvent> event = timer->event(document()); |
+ RefPtr<MessageEvent> event = timer->event(); |
// Give the embedder a chance to intercept this postMessage because this |
// DOMWindow might be a proxy for another in browsers that support |
@@ -791,6 +791,7 @@ void DOMWindow::postMessageTimerFired(PassOwnPtr<PostMessageTimer> t) |
if (m_frame->loader()->client()->willCheckAndDispatchMessageEvent(timer->targetOrigin(), event.get())) |
return; |
+ event->entangleMessagePorts(document()); |
dispatchMessageEventWithOriginCheck(timer->targetOrigin(), event, timer->stackTrace()); |
} |