| Index: Source/core/dom/MessagePort.cpp
|
| diff --git a/Source/core/dom/MessagePort.cpp b/Source/core/dom/MessagePort.cpp
|
| index b5e171446d784b353627a8ccaf637dd3deeab2eb..99aab7c6fdafd35bf9d9604958060477727b281f 100644
|
| --- a/Source/core/dom/MessagePort.cpp
|
| +++ b/Source/core/dom/MessagePort.cpp
|
| @@ -87,13 +87,33 @@ void MessagePort::postMessage(PassRefPtr<SerializedScriptValue> message, const M
|
| }
|
|
|
| blink::WebString messageString = message->toWireString();
|
| - blink::WebMessagePortChannelArray* webChannels = 0;
|
| + OwnPtr<blink::WebMessagePortChannelArray> webChannels = toWebMessagePortChannelArray(channels.release());
|
| + m_entangledChannel->postMessage(messageString, webChannels.leakPtr());
|
| +}
|
| +
|
| +// static
|
| +PassOwnPtr<blink::WebMessagePortChannelArray> MessagePort::toWebMessagePortChannelArray(PassOwnPtr<MessagePortChannelArray> channels)
|
| +{
|
| + OwnPtr<blink::WebMessagePortChannelArray> webChannels;
|
| if (channels && channels->size()) {
|
| - webChannels = new blink::WebMessagePortChannelArray(channels->size());
|
| + webChannels = adoptPtr(new blink::WebMessagePortChannelArray(channels->size()));
|
| for (size_t i = 0; i < channels->size(); ++i)
|
| (*webChannels)[i] = (*channels)[i].leakPtr();
|
| }
|
| - m_entangledChannel->postMessage(messageString, webChannels);
|
| + return webChannels.release();
|
| +}
|
| +
|
| +// static
|
| +PassOwnPtr<MessagePortArray> MessagePort::toMessagePortArray(ExecutionContext* context, const blink::WebMessagePortChannelArray& webChannels)
|
| +{
|
| + OwnPtr<MessagePortArray> ports;
|
| + if (!webChannels.isEmpty()) {
|
| + OwnPtr<MessagePortChannelArray> channels = adoptPtr(new MessagePortChannelArray(webChannels.size()));
|
| + for (size_t i = 0; i < webChannels.size(); ++i)
|
| + (*channels)[i] = adoptPtr(webChannels[i]);
|
| + ports = MessagePort::entanglePorts(*context, channels.release());
|
| + }
|
| + return ports.release();
|
| }
|
|
|
| PassOwnPtr<blink::WebMessagePortChannel> MessagePort::disentangle()
|
|
|