| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/child/webmessageportchannel_impl.h" | 5 #include "content/child/webmessageportchannel_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 base::Unretained(client))); | 93 base::Unretained(client))); |
| 94 } else { | 94 } else { |
| 95 port_.ClearCallback(); | 95 port_.ClearCallback(); |
| 96 } | 96 } |
| 97 } | 97 } |
| 98 | 98 |
| 99 void WebMessagePortChannelImpl::postMessage( | 99 void WebMessagePortChannelImpl::postMessage( |
| 100 const WebString& encoded_message, | 100 const WebString& encoded_message, |
| 101 WebMessagePortChannelArray channels) { | 101 WebMessagePortChannelArray channels) { |
| 102 std::vector<MessagePort> ports; | 102 std::vector<MessagePort> ports; |
| 103 if (!channels.isEmpty()) { | 103 if (!channels.empty()) { |
| 104 ports.resize(channels.size()); | 104 ports.resize(channels.size()); |
| 105 for (size_t i = 0; i < channels.size(); ++i) { | 105 for (size_t i = 0; i < channels.size(); ++i) { |
| 106 ports[i] = static_cast<WebMessagePortChannelImpl*>(channels[i].get())-> | 106 ports[i] = static_cast<WebMessagePortChannelImpl*>(channels[i].get())-> |
| 107 ReleaseMessagePort(); | 107 ReleaseMessagePort(); |
| 108 } | 108 } |
| 109 } | 109 } |
| 110 port_.PostMessage(encoded_message.utf16(), std::move(ports)); | 110 port_.PostMessage(encoded_message.utf16(), std::move(ports)); |
| 111 } | 111 } |
| 112 | 112 |
| 113 bool WebMessagePortChannelImpl::tryGetMessage( | 113 bool WebMessagePortChannelImpl::tryGetMessage( |
| 114 WebString* encoded_message, | 114 WebString* encoded_message, |
| 115 WebMessagePortChannelArray& channels) { | 115 WebMessagePortChannelArray& channels) { |
| 116 base::string16 buffer; | 116 base::string16 buffer; |
| 117 std::vector<MessagePort> ports; | 117 std::vector<MessagePort> ports; |
| 118 if (!port_.GetMessage(&buffer, &ports)) | 118 if (!port_.GetMessage(&buffer, &ports)) |
| 119 return false; | 119 return false; |
| 120 | 120 |
| 121 *encoded_message = WebString::fromUTF16(buffer); | 121 *encoded_message = WebString::fromUTF16(buffer); |
| 122 | 122 |
| 123 if (!ports.empty()) { | 123 if (!ports.empty()) { |
| 124 channels = WebMessagePortChannelArray(ports.size()); | 124 channels = WebMessagePortChannelArray(ports.size()); |
| 125 for (size_t i = 0; i < ports.size(); ++i) | 125 for (size_t i = 0; i < ports.size(); ++i) |
| 126 channels[i] = base::MakeUnique<WebMessagePortChannelImpl>(ports[i]); | 126 channels[i] = base::MakeUnique<WebMessagePortChannelImpl>(ports[i]); |
| 127 } | 127 } |
| 128 return true; | 128 return true; |
| 129 } | 129 } |
| 130 | 130 |
| 131 } // namespace content | 131 } // namespace content |
| OLD | NEW |