Chromium Code Reviews| 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(); |
| } |