summaryrefslogtreecommitdiff
path: root/chromium/content/browser/message_port_provider.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/message_port_provider.cc')
-rw-r--r--chromium/content/browser/message_port_provider.cc56
1 files changed, 24 insertions, 32 deletions
diff --git a/chromium/content/browser/message_port_provider.cc b/chromium/content/browser/message_port_provider.cc
index 42a1f4417d3..2f6c6b1f72d 100644
--- a/chromium/content/browser/message_port_provider.cc
+++ b/chromium/content/browser/message_port_provider.cc
@@ -6,6 +6,8 @@
#include <utility>
+#include "base/optional.h"
+#include "base/unguessable_token.h"
#include "build/build_config.h"
#include "build/chromecast_buildflags.h"
#include "content/browser/renderer_host/render_process_host_impl.h"
@@ -17,7 +19,7 @@
#if defined(OS_ANDROID)
#include "base/android/jni_string.h"
-#include "content/browser/android/app_web_message_port.h"
+#include "content/public/browser/android/app_web_message_port.h"
#endif
using blink::MessagePortChannel;
@@ -25,22 +27,28 @@ using blink::MessagePortChannel;
namespace content {
namespace {
-void PostMessageToFrameInternal(WebContents* web_contents,
- const base::string16& source_origin,
- const base::string16& target_origin,
- const base::string16& data,
- std::vector<MessagePortChannel> channels) {
+void PostMessageToFrameInternal(
+ WebContents* web_contents,
+ const base::string16& source_origin,
+ const base::string16& target_origin,
+ const base::string16& data,
+ std::vector<blink::MessagePortDescriptor> ports) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ // TODO(chrisha): Kill off MessagePortChannel, as MessagePortDescriptor now
+ // plays that role.
+ std::vector<MessagePortChannel> channels;
+ for (auto& port : ports)
+ channels.emplace_back(MessagePortChannel(std::move(port)));
+
blink::TransferableMessage message;
message.owned_encoded_message = blink::EncodeStringMessage(data);
message.encoded_message = message.owned_encoded_message;
message.ports = std::move(channels);
- int32_t source_routing_id = MSG_ROUTING_NONE;
RenderFrameHostImpl* rfh =
static_cast<RenderFrameHostImpl*>(web_contents->GetMainFrame());
- rfh->PostMessageEvent(source_routing_id, source_origin, target_origin,
+ rfh->PostMessageEvent(base::nullopt, source_origin, target_origin,
std::move(message));
}
@@ -62,7 +70,7 @@ void MessagePortProvider::PostMessageToFrame(
const base::string16& target_origin,
const base::string16& data) {
PostMessageToFrameInternal(web_contents, source_origin, target_origin, data,
- std::vector<MessagePortChannel>());
+ std::vector<blink::MessagePortDescriptor>());
}
#if defined(OS_ANDROID)
@@ -81,37 +89,21 @@ void MessagePortProvider::PostMessageToFrame(
#endif
#if defined(OS_FUCHSIA) || BUILDFLAG(IS_CHROMECAST)
-// TODO(crbug.com/803242): Deprecated and will be shortly removed.
-// static
-void MessagePortProvider::PostMessageToFrame(
- WebContents* web_contents,
- const base::string16& source_origin,
- const base::Optional<base::string16>& target_origin,
- const base::string16& data,
- std::vector<mojo::ScopedMessagePipeHandle> channels) {
- std::vector<MessagePortChannel> channels_wrapped;
- for (mojo::ScopedMessagePipeHandle& handle : channels) {
- channels_wrapped.emplace_back(std::move(handle));
- }
- PostMessageToFrameInternal(web_contents, source_origin,
- target_origin.value_or(base::EmptyString16()),
- data, channels_wrapped);
-}
-
// static
void MessagePortProvider::PostMessageToFrame(
WebContents* web_contents,
const base::string16& source_origin,
const base::Optional<base::string16>& target_origin,
const base::string16& data,
- std::vector<blink::WebMessagePort> channels) {
- std::vector<MessagePortChannel> channels_wrapped;
- for (blink::WebMessagePort& port : channels) {
- channels_wrapped.emplace_back(port.PassHandle());
- }
+ std::vector<blink::WebMessagePort> ports) {
+ // Extract the underlying descriptors.
+ std::vector<blink::MessagePortDescriptor> descriptors;
+ descriptors.reserve(ports.size());
+ for (size_t i = 0; i < ports.size(); ++i)
+ descriptors.push_back(ports[i].PassPort());
PostMessageToFrameInternal(web_contents, source_origin,
target_origin.value_or(base::EmptyString16()),
- data, channels_wrapped);
+ data, std::move(descriptors));
}
#endif