diff options
Diffstat (limited to 'chrome/renderer/chrome_render_view_observer.cc')
-rw-r--r-- | chrome/renderer/chrome_render_view_observer.cc | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/chrome/renderer/chrome_render_view_observer.cc b/chrome/renderer/chrome_render_view_observer.cc index 76f951c..711d418 100644 --- a/chrome/renderer/chrome_render_view_observer.cc +++ b/chrome/renderer/chrome_render_view_observer.cc @@ -218,6 +218,7 @@ ChromeRenderViewObserver::~ChromeRenderViewObserver() { bool ChromeRenderViewObserver::OnMessageReceived(const IPC::Message& message) { bool handled = true; IPC_BEGIN_MESSAGE_MAP(ChromeRenderViewObserver, message) + IPC_MESSAGE_HANDLER(ViewMsg_WebUIJavaScript, OnWebUIJavaScript) IPC_MESSAGE_HANDLER(ViewMsg_CaptureSnapshot, OnCaptureSnapshot) IPC_MESSAGE_HANDLER(ViewMsg_HandleMessageFromExternalHost, OnHandleMessageFromExternalHost) @@ -243,6 +244,18 @@ bool ChromeRenderViewObserver::OnMessageReceived(const IPC::Message& message) { return handled; } +void ChromeRenderViewObserver::OnWebUIJavaScript( + const string16& frame_xpath, + const string16& jscript, + int id, + bool notify_result) { + webui_javascript_.reset(new WebUIJavaScript()); + webui_javascript_->frame_xpath = frame_xpath; + webui_javascript_->jscript = jscript; + webui_javascript_->id = id; + webui_javascript_->notify_result = notify_result; +} + void ChromeRenderViewObserver::OnCaptureSnapshot() { SkBitmap snapshot; bool error = false; @@ -602,6 +615,16 @@ void ChromeRenderViewObserver::OnSetIsPrerendering(bool is_prerendering) { } } +void ChromeRenderViewObserver::DidStartLoading() { + if (BindingsPolicy::is_web_ui_enabled(render_view()->enabled_bindings()) && + webui_javascript_.get()) { + render_view()->EvaluateScript(webui_javascript_->frame_xpath, + webui_javascript_->jscript, + webui_javascript_->id, + webui_javascript_->notify_result); + } +} + void ChromeRenderViewObserver::DidStopLoading() { MessageLoop::current()->PostDelayedTask( FROM_HERE, |