diff options
Diffstat (limited to 'chrome/renderer/render_view.cc')
-rw-r--r-- | chrome/renderer/render_view.cc | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index 0257927..22dd829 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -358,6 +358,7 @@ void RenderView::OnMessageReceived(const IPC::Message& message) { IPC_MESSAGE_HANDLER(ViewMsg_ShouldClose, OnMsgShouldClose) IPC_MESSAGE_HANDLER(ViewMsg_ClosePage, OnClosePage) IPC_MESSAGE_HANDLER(ViewMsg_ThemeChanged, OnThemeChanged) + IPC_MESSAGE_HANDLER(ViewMsg_PostMessage, OnPostMessage) // Have the super handle all other messages. IPC_MESSAGE_UNHANDLED(RenderWidget::OnMessageReceived(message)) IPC_END_MESSAGE_MAP() @@ -2490,6 +2491,30 @@ void RenderView::OnThemeChanged() { DidInvalidateRect(webwidget_, view_rect); } +void RenderView::OnPostMessage(const std::string& target, + const std::string& message) { + if (message.empty()) + return; + + WebFrame* main_frame = webview()->GetMainFrame(); + if (!main_frame) + return; + + std::string script = "javascript:"; + script += target; + script += "("; + script += "'"; + script += message; + script += "'"; + script += ");void(0);"; + + GURL script_url(script); + scoped_ptr<WebRequest> request(WebRequest::Create(script_url)); + // TODO(iyengar) + // Need a mechanism to send results back. + main_frame->LoadRequest(request.get()); +} + std::string RenderView::GetAltHTMLForTemplate( const DictionaryValue& error_strings, int template_resource_id) const { const StringPiece template_html( |