| Index: content/child/webmessageportchannel_impl.cc
|
| diff --git a/content/child/webmessageportchannel_impl.cc b/content/child/webmessageportchannel_impl.cc
|
| index 3c5e8d90ed75c5523c12f432d50589b24f897a5d..77ce5e065d08f6fcf19982aad4472419c27411f8 100644
|
| --- a/content/child/webmessageportchannel_impl.cc
|
| +++ b/content/child/webmessageportchannel_impl.cc
|
| @@ -16,6 +16,7 @@ using blink::WebMessagePortChannel;
|
| using blink::WebMessagePortChannelArray;
|
| using blink::WebMessagePortChannelClient;
|
| using blink::WebString;
|
| +using blink::WebVector;
|
|
|
| namespace content {
|
|
|
| @@ -94,7 +95,8 @@ void WebMessagePortChannelImpl::setClient(WebMessagePortChannelClient* client) {
|
|
|
| void WebMessagePortChannelImpl::postMessage(
|
| const WebString& encoded_message,
|
| - WebMessagePortChannelArray channels) {
|
| + WebMessagePortChannelArray channels,
|
| + WebVector<mojo::ScopedHandle> handles) {
|
| std::vector<MessagePort> ports;
|
| if (!channels.isEmpty()) {
|
| ports.resize(channels.size());
|
| @@ -103,15 +105,21 @@ void WebMessagePortChannelImpl::postMessage(
|
| ReleaseMessagePort();
|
| }
|
| }
|
| - port_.PostMessage(encoded_message.utf16(), std::move(ports));
|
| + std::vector<mojo::ScopedHandle> extra_handles;
|
| + for (size_t i = 0; i < handles.size(); ++i)
|
| + extra_handles.emplace_back(std::move(handles[i]));
|
| + port_.PostMessage(encoded_message.utf16(), std::move(ports),
|
| + std::move(extra_handles));
|
| }
|
|
|
| bool WebMessagePortChannelImpl::tryGetMessage(
|
| WebString* encoded_message,
|
| - WebMessagePortChannelArray& channels) {
|
| + WebMessagePortChannelArray& channels,
|
| + WebVector<mojo::ScopedHandle>& handles) {
|
| base::string16 buffer;
|
| std::vector<MessagePort> ports;
|
| - if (!port_.GetMessage(&buffer, &ports))
|
| + std::vector<mojo::ScopedHandle> extra_handles;
|
| + if (!port_.GetMessage(&buffer, &ports, &extra_handles))
|
| return false;
|
|
|
| *encoded_message = WebString::fromUTF16(buffer);
|
| @@ -121,6 +129,11 @@ bool WebMessagePortChannelImpl::tryGetMessage(
|
| for (size_t i = 0; i < ports.size(); ++i)
|
| channels[i] = base::MakeUnique<WebMessagePortChannelImpl>(ports[i]);
|
| }
|
| + if (!extra_handles.empty()) {
|
| + handles = WebVector<mojo::ScopedHandle>(extra_handles.size());
|
| + for (size_t i = 0; i < extra_handles.size(); ++i)
|
| + handles[i] = std::move(extra_handles[i]);
|
| + }
|
| return true;
|
| }
|
|
|
|
|