Index: content/renderer/browser_plugin/browser_plugin.cc |
diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin.cc |
index 44d452cc8eb6ea7b12c71c5d5df5b01e37781845..83584af332390f2d153d6757aef61c6b04701847 100644 |
--- a/content/renderer/browser_plugin/browser_plugin.cc |
+++ b/content/renderer/browser_plugin/browser_plugin.cc |
@@ -41,6 +41,7 @@ namespace content { |
namespace { |
const char kCrashEventName[] = "crash"; |
+const char kMessageEventName[] = "message"; |
nasko
2012/09/19 21:19:59
This doesn't seem to be used anywhere.
Fady Samuel
2012/09/20 15:24:28
Done.
|
const char kNavigationEventName[] = "navigation"; |
const char* kSrcAttribute = "src"; |
} |
@@ -240,6 +241,37 @@ void BrowserPlugin::AdvanceFocus(bool reverse) { |
render_view_->GetWebView()->advanceFocus(reverse); |
} |
+void BrowserPlugin::PostMessage(const string16& message, |
+ const string16& target_origin) { |
+ BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_RouteMessageEvent( |
+ render_view_->GetRoutingID(), |
+ instance_id_, |
+ message, |
+ target_origin)); |
+} |
+ |
+void BrowserPlugin::ReceiveMessage(int source_routing_id, |
+ const string16& source_origin, |
+ const string16& data) { |
+ // This is a swapped out RenderViewImpl for the guest in the embedder process. |
+ WebKit::WebFrame* source_frame = NULL; |
+ if (source_routing_id != MSG_ROUTING_NONE) { |
+ RenderViewImpl* source_render_view = static_cast<RenderViewImpl*>( |
+ ChildThread::current()->ResolveRoute(source_routing_id)); |
+ source_frame = source_render_view->webview()->mainFrame(); |
nasko
2012/09/19 21:19:59
It will be useful to put a comment that we only wo
Fady Samuel
2012/09/20 15:24:28
Done.
|
+ } |
+ WebKit::WebFrame* target_frame = render_view_->webview()->mainFrame(); |
+ WebKit::WebDOMEvent event = |
+ target_frame->document().createEvent("MessageEvent"); |
+ WebKit::WebDOMMessageEvent msg_event = event.to<WebKit::WebDOMMessageEvent>(); |
+ msg_event.initMessageEvent("message", |
+ // |canBubble| and |cancellable| are always false |
+ false, false, |
+ WebKit::WebSerializedScriptValue::fromString(data), |
+ source_origin, source_frame, ""); |
+ container()->element().dispatchEvent(msg_event); |
nasko
2012/09/19 21:19:59
Also, a comment why we are not doing an origin che
Fady Samuel
2012/09/20 15:24:28
Added. I posed it as a TODO/question.
|
+} |
+ |
bool BrowserPlugin::HasListeners(const std::string& event_name) { |
return event_listener_map_.find(event_name) != event_listener_map_.end(); |
} |