diff options
author | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-28 03:09:53 +0000 |
---|---|---|
committer | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-28 03:09:53 +0000 |
commit | 6dfed102065bda2e23541a5bf871b97258174fe3 (patch) | |
tree | 4b182c22eb74adcdd4ede2315062b991946b1005 /chrome/browser/renderer_host | |
parent | 26e607f289bc2f5ca82ee804969572606e1c0738 (diff) | |
download | chromium_src-6dfed102065bda2e23541a5bf871b97258174fe3.zip chromium_src-6dfed102065bda2e23541a5bf871b97258174fe3.tar.gz chromium_src-6dfed102065bda2e23541a5bf871b97258174fe3.tar.bz2 |
Implement tabs.createWindow extension api call. Required: (a) new RVHDelegate & TabContentsDelegate method(s) CreateExtensionFunctionDispatcher() so that the dispatcher could be created with (an optional) browser attached to it, while avoiding having render_host depend on browser.h
BUG=11092:
R=aa,mpComplete,darin,pkasting
Review URL: http://codereview.chromium.org/79070
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14710 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r-- | chrome/browser/renderer_host/render_view_host.cc | 5 | ||||
-rw-r--r-- | chrome/browser/renderer_host/render_view_host_delegate.h | 11 |
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; } |