summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_function_dispatcher.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions/extension_function_dispatcher.cc')
-rw-r--r--chrome/browser/extensions/extension_function_dispatcher.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_function_dispatcher.cc b/chrome/browser/extensions/extension_function_dispatcher.cc
index 1f67979..cb77169 100644
--- a/chrome/browser/extensions/extension_function_dispatcher.cc
+++ b/chrome/browser/extensions/extension_function_dispatcher.cc
@@ -11,6 +11,7 @@
#include "chrome/browser/extensions/extension_bookmarks_module.h"
#include "chrome/browser/extensions/extension_bookmarks_module_constants.h"
#include "chrome/browser/extensions/extension_browser_actions_api.h"
+#include "chrome/browser/extensions/extension_dom_ui.h"
#include "chrome/browser/extensions/extension_function.h"
#include "chrome/browser/extensions/extension_history_api.h"
#include "chrome/browser/extensions/extension_i18n_api.h"
@@ -239,10 +240,26 @@ Browser* ExtensionFunctionDispatcher::GetBrowser() {
return delegate_->GetBrowser();
}
+ExtensionPopupHost* ExtensionFunctionDispatcher::GetPopupHost() {
+ ExtensionHost* extension_host = GetExtensionHost();
+ if (extension_host) {
+ DCHECK(!GetExtensionDOMUI()) <<
+ "Function dispatcher registered in too many environments.";
+ return extension_host->popup_host();
+ } else {
+ ExtensionDOMUI* dom_ui = GetExtensionDOMUI();
+ return dom_ui->popup_host();
+ }
+}
+
ExtensionHost* ExtensionFunctionDispatcher::GetExtensionHost() {
return delegate_->GetExtensionHost();
}
+ExtensionDOMUI* ExtensionFunctionDispatcher::GetExtensionDOMUI() {
+ return delegate_->GetExtensionDOMUI();
+}
+
Extension* ExtensionFunctionDispatcher::GetExtension() {
ExtensionsService* service = profile()->GetExtensionsService();
DCHECK(service);