summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_host.cc
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-14 05:43:53 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-14 05:43:53 +0000
commit7b291f9c1394495724ddd81306e982e840075c08 (patch)
treefa2a2ef45f1b17018e716101395300da731d8599 /chrome/browser/extensions/extension_host.cc
parentcc4219ad7dd27008da3db5f0e23da9a6ab2f0387 (diff)
downloadchromium_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.cc25
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;
+}