diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-14 05:43:53 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-14 05:43:53 +0000 |
commit | 7b291f9c1394495724ddd81306e982e840075c08 (patch) | |
tree | fa2a2ef45f1b17018e716101395300da731d8599 /chrome/browser/extensions/extension_host.cc | |
parent | cc4219ad7dd27008da3db5f0e23da9a6ab2f0387 (diff) | |
download | chromium_src-7b291f9c1394495724ddd81306e982e840075c08.zip chromium_src-7b291f9c1394495724ddd81306e982e840075c08.tar.gz chromium_src-7b291f9c1394495724ddd81306e982e840075c08.tar.bz2 |
Implementation of getBackgroundPage(), getToolstrips(), and
getTabContentses().
This lands http://codereview.chromium.org/159067.
Raf, the only thing you need to look at is the changes to extensions_process_bindings.js and extension_api.json.
BUG=13577
TEST=Browser tests added
Review URL: http://codereview.chromium.org/164458
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23422 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_host.cc')
-rw-r--r-- | chrome/browser/extensions/extension_host.cc | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/chrome/browser/extensions/extension_host.cc b/chrome/browser/extensions/extension_host.cc index 898aeaa..e43df14 100644 --- a/chrome/browser/extensions/extension_host.cc +++ b/chrome/browser/extensions/extension_host.cc @@ -11,6 +11,7 @@ #include "chrome/browser/browser_list.h" #include "chrome/browser/debugger/devtools_manager.h" #include "chrome/browser/extensions/extension_message_service.h" +#include "chrome/browser/extensions/extension_tabs_module.h" #include "chrome/browser/profile.h" #include "chrome/browser/renderer_host/render_view_host.h" #include "chrome/browser/renderer_host/render_process_host.h" @@ -25,6 +26,7 @@ #include "chrome/common/notification_service.h" #include "chrome/common/pref_names.h" #include "chrome/common/pref_service.h" +#include "chrome/common/view_types.h" #include "chrome/common/render_messages.h" #include "chrome/common/url_constants.h" @@ -84,12 +86,13 @@ class CrashedExtensionInfobarDelegate : public ConfirmInfoBarDelegate { bool ExtensionHost::enable_dom_automation_ = false; ExtensionHost::ExtensionHost(Extension* extension, SiteInstance* site_instance, - const GURL& url) + const GURL& url, ViewType::Type host_type) : extension_(extension), profile_(site_instance->browsing_instance()->profile()), did_stop_loading_(false), document_element_available_(false), - url_(url) { + url_(url), + extension_host_type_(host_type) { render_view_host_ = new RenderViewHost( site_instance, this, MSG_ROUTING_NONE, NULL); render_view_host_->AllowBindings(BindingsPolicy::EXTENSION); @@ -385,6 +388,10 @@ Browser* ExtensionHost::GetBrowser() { return browser; } +ViewType::Type ExtensionHost::GetRenderViewType() const { + return extension_host_type_; +} + void ExtensionHost::RenderViewCreated(RenderViewHost* render_view_host) { // TODO(mpcomplete): This is duplicated in DidNavigate, which means that // we'll create 2 EFDs for the first navigation. We should try to find a @@ -393,3 +400,17 @@ void ExtensionHost::RenderViewCreated(RenderViewHost* render_view_host) { extension_function_dispatcher_.reset( new ExtensionFunctionDispatcher(render_view_host, this, url_)); } + +int ExtensionHost::GetBrowserWindowID() const { + int window_id = -1; + if (extension_host_type_ == ViewType::EXTENSION_TOOLSTRIP) { + window_id = ExtensionTabUtil::GetWindowId( + const_cast<ExtensionHost* >(this)->GetBrowser()); + } else if (extension_host_type_ == ViewType::EXTENSION_BACKGROUND_PAGE) { + // Background page is not attached to any browser window, so pass -1. + window_id = -1; + } else { + NOTREACHED(); + } + return window_id; +} |