diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-01 08:46:25 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-01 08:46:25 +0000 |
commit | 811bfe371c3518e58664fb5191a6962314f8f05f (patch) | |
tree | 6dc3cb4264f9d87c93a2313fa856c1ea7e6e23e8 /chrome/browser/extensions/extensions_ui.cc | |
parent | 20fdbc31d0e998ba81d8337259b43e57e2ff02b7 (diff) | |
download | chromium_src-811bfe371c3518e58664fb5191a6962314f8f05f.zip chromium_src-811bfe371c3518e58664fb5191a6962314f8f05f.tar.gz chromium_src-811bfe371c3518e58664fb5191a6962314f8f05f.tar.bz2 |
In this episode, we implement the DOMUI interface for extension views that are rendered in the main tab contents area. This gets us loaded and unloaded at the right place and removes many special cases for extensions from the RenderViewHost and RenderViewHostDelegate hierarchy.
BUG=13936
Review URL: http://codereview.chromium.org/126137
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19717 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extensions_ui.cc')
-rw-r--r-- | chrome/browser/extensions/extensions_ui.cc | 33 |
1 files changed, 10 insertions, 23 deletions
diff --git a/chrome/browser/extensions/extensions_ui.cc b/chrome/browser/extensions/extensions_ui.cc index 7ad40cc..62fb559 100644 --- a/chrome/browser/extensions/extensions_ui.cc +++ b/chrome/browser/extensions/extensions_ui.cc @@ -226,29 +226,16 @@ DictionaryValue* ExtensionsDOMHandler::CreateExtensionDetailValue( std::vector<ExtensionPage> ExtensionsDOMHandler::GetActivePagesForExtension( const std::string& extension_id) { std::vector<ExtensionPage> result; - - ExtensionMessageService* ems = ExtensionMessageService::GetInstance( - dom_ui_->GetProfile()->GetOriginalProfile()->GetRequestContext()); - RenderProcessHost* process_host = ems->GetProcessForExtension(extension_id); - if (!process_host) - return result; - - RenderProcessHost::listeners_iterator iter; - for (iter = process_host->listeners_begin(); - iter != process_host->listeners_end(); ++iter) { - // NOTE: This is a bit dangerous. We know that for now, listeners are - // always RenderWidgetHosts. But in theory, they don't have to be. - RenderWidgetHost* widget = static_cast<RenderWidgetHost*>(iter->second); - if (!widget->IsRenderView()) - continue; - - RenderViewHost* view = static_cast<RenderViewHost*>(widget); - ExtensionFunctionDispatcher* efd = view->extension_function_dispatcher(); - if (efd && efd->extension_id() == extension_id) { - ExtensionPage page(view->delegate()->GetURL(), - process_host->pid(), - view->routing_id()); - result.push_back(page); + std::set<ExtensionFunctionDispatcher*>* all_instances = + ExtensionFunctionDispatcher::all_instances(); + + for (std::set<ExtensionFunctionDispatcher*>::iterator iter = + all_instances->begin(); iter != all_instances->end(); ++iter) { + RenderViewHost* view = (*iter)->render_view_host(); + if ((*iter)->extension_id() == extension_id && view) { + result.push_back(ExtensionPage((*iter)->url(), + view->process()->pid(), + view->routing_id())); } } |