summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/chrome_render_view_observer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/renderer/chrome_render_view_observer.cc')
-rw-r--r--chrome/renderer/chrome_render_view_observer.cc23
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,