diff options
Diffstat (limited to 'src/3rdparty/webkit/WebCore/workers/Worker.cpp')
-rw-r--r-- | src/3rdparty/webkit/WebCore/workers/Worker.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/3rdparty/webkit/WebCore/workers/Worker.cpp b/src/3rdparty/webkit/WebCore/workers/Worker.cpp index a810dda..2e03e3d 100644 --- a/src/3rdparty/webkit/WebCore/workers/Worker.cpp +++ b/src/3rdparty/webkit/WebCore/workers/Worker.cpp @@ -77,9 +77,18 @@ Worker::~Worker() m_contextProxy->workerObjectDestroyed(); } -void Worker::postMessage(const String& message) +void Worker::postMessage(const String& message, ExceptionCode& ec) { - m_contextProxy->postMessageToWorkerContext(message); + postMessage(message, 0, ec); +} + +void Worker::postMessage(const String& message, MessagePort* messagePort, ExceptionCode& ec) +{ + // Disentangle the port in preparation for sending it to the remote context. + OwnPtr<MessagePortChannel> channel = messagePort ? messagePort->disentangle(ec) : 0; + if (ec) + return; + m_contextProxy->postMessageToWorkerContext(message, channel.release()); } void Worker::terminate() @@ -180,9 +189,9 @@ bool Worker::dispatchEvent(PassRefPtr<Event> event, ExceptionCode& ec) return !event->defaultPrevented(); } -void Worker::dispatchMessage(const String& message) +void Worker::dispatchMessage(const String& message, PassRefPtr<MessagePort> port) { - RefPtr<Event> evt = MessageEvent::create(message, "", "", 0, 0); + RefPtr<Event> evt = MessageEvent::create(message, "", "", 0, port); if (m_onMessageListener.get()) { evt->setTarget(this); |