Index: chrome/browser/extensions/extension_process_manager.cc |
diff --git a/chrome/browser/extensions/extension_process_manager.cc b/chrome/browser/extensions/extension_process_manager.cc |
index d96c33aef9fb099e6578e513c02e1dc6b91258cf..dee66b1e0c38223e9a4085ed1c6212fd891814c4 100644 |
--- a/chrome/browser/extensions/extension_process_manager.cc |
+++ b/chrome/browser/extensions/extension_process_manager.cc |
@@ -312,21 +312,14 @@ ExtensionHost* ExtensionProcessManager::GetBackgroundHostForExtension( |
std::set<RenderViewHost*> |
ExtensionProcessManager::GetRenderViewHostsForExtension( |
const std::string& extension_id) { |
- std::set<RenderViewHost*> result; |
- |
- SiteInstance* site_instance = GetSiteInstanceForURL( |
- Extension::GetBaseURLFromExtensionId(extension_id)); |
- if (!site_instance) |
- return result; |
- |
- // Gather up all the views for that site. |
- for (ExtensionRenderViews::iterator view = all_extension_views_.begin(); |
- view != all_extension_views_.end(); ++view) { |
- if (view->first->GetSiteInstance() == site_instance) |
- result.insert(view->first); |
- } |
+ return DoGetRenderViewHostsForExtension( |
+ extension_id, false, chrome::VIEW_TYPE_INVALID); |
+} |
- return result; |
+std::set<RenderViewHost*> |
+ ExtensionProcessManager::GetRenderViewHostsWithTypeForExtension( |
+ const std::string& extension_id, chrome::ViewType view_type) { |
+ return DoGetRenderViewHostsForExtension(extension_id, true, view_type); |
} |
const Extension* ExtensionProcessManager::GetExtensionForRenderViewHost( |
@@ -680,6 +673,30 @@ void ExtensionProcessManager::ClearBackgroundPageData( |
} |
} |
+std::set<RenderViewHost*> |
+ ExtensionProcessManager::DoGetRenderViewHostsForExtension( |
+ const std::string& extension_id, |
+ bool restrict_to_type, |
+ chrome::ViewType view_type) { |
+ std::set<RenderViewHost*> result; |
+ |
+ SiteInstance* site_instance = GetSiteInstanceForURL( |
+ Extension::GetBaseURLFromExtensionId(extension_id)); |
+ if (!site_instance) |
+ return result; |
+ |
+ // Gather up all the views for that site. |
+ for (ExtensionRenderViews::iterator view = all_extension_views_.begin(); |
+ view != all_extension_views_.end(); ++view) { |
+ if (view->first->GetSiteInstance() == site_instance && |
+ (view->second == view_type || !restrict_to_type)) { |
+ result.insert(view->first); |
+ } |
+ } |
+ |
+ return result; |
+} |
+ |
// |
// IncognitoExtensionProcessManager |
// |