summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc5
-rw-r--r--chrome/browser/renderer_host/render_view_host_delegate.h11
2 files changed, 14 insertions, 2 deletions
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index 21b8d34..bd4f092 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -890,8 +890,8 @@ void RenderViewHost::OnMsgNavigate(const IPC::Message& msg) {
if (PageTransition::IsMainFrame(validated_params.transition)) {
ExtensionFunctionDispatcher* new_efd = NULL;
if (validated_params.url.SchemeIs(chrome::kExtensionScheme)) {
- new_efd = new ExtensionFunctionDispatcher(this,
- validated_params.url.host());
+ new_efd = delegate()->CreateExtensionFunctionDispatcher(this,
+ validated_params.url.host());
}
extension_function_dispatcher_.reset(new_efd);
}
@@ -1352,6 +1352,7 @@ void RenderViewHost::OnExtensionRequest(const std::string& name,
int callback_id) {
// TODO(aa): Here is where we can check that this renderer was supposed to be
// able to call extension APIs.
+ DCHECK(extension_function_dispatcher_.get());
extension_function_dispatcher_->HandleRequest(name, args, callback_id);
}
diff --git a/chrome/browser/renderer_host/render_view_host_delegate.h b/chrome/browser/renderer_host/render_view_host_delegate.h
index ba69b03..18b1f38 100644
--- a/chrome/browser/renderer_host/render_view_host_delegate.h
+++ b/chrome/browser/renderer_host/render_view_host_delegate.h
@@ -19,7 +19,10 @@
#include "webkit/glue/webpreferences.h"
#include "webkit/glue/window_open_disposition.h"
+#include "chrome/browser/extensions/extension_function_dispatcher.h"
+
class AutofillForm;
+class ExtensionFunctionDispatcher;
class NavigationEntry;
class Profile;
class RenderProcessHost;
@@ -147,6 +150,14 @@ class RenderViewHostDelegate {
// Retrieves the profile to be used.
virtual Profile* GetProfile() const = 0;
+ // Create a new browser window to be sized, shown and contents managed
+ // by the caller.
+ virtual ExtensionFunctionDispatcher *CreateExtensionFunctionDispatcher(
+ RenderViewHost* render_view_host,
+ const std::string& extension_id) {
+ return NULL;
+ }
+
// Return this object cast to a WebContents, if it is one.
virtual WebContents* GetAsWebContents() { return NULL; }