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 100059e601498f4e2641b8fea7b1cb9ce85c0d54..e76bec48b565c841d8073e47b065a4065a469255 100644 |
--- a/chrome/browser/extensions/extension_process_manager.cc |
+++ b/chrome/browser/extensions/extension_process_manager.cc |
@@ -10,6 +10,7 @@ |
#include "chrome/browser/extensions/extension_host.h" |
#include "chrome/browser/extensions/extension_info_map.h" |
#include "chrome/browser/extensions/extension_service.h" |
+#include "chrome/browser/extensions/extension_system.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_window.h" |
@@ -316,6 +317,14 @@ std::set<RenderViewHost*> |
return result; |
} |
+const Extension* ExtensionProcessManager::GetExtensionForRenderViewHost( |
+ content::RenderViewHost* render_view_host) { |
+ ExtensionService* service = |
+ ExtensionSystem::Get(GetProfile())->extension_service(); |
+ return service->extensions()->GetByID( |
+ render_view_host->GetSiteInstance()->GetSite().host()); |
Charlie Reis
2012/04/23 20:21:49
I think this is correct for extensions. A SiteIns
benwells
2012/04/24 04:31:27
OK, SiteInstance is checked here and in GetExtensi
|
+} |
+ |
void ExtensionProcessManager::RegisterRenderViewHost( |
RenderViewHost* render_view_host, |
const Extension* extension) { |
@@ -369,10 +378,6 @@ SiteInstance* ExtensionProcessManager::GetSiteInstanceForURL(const GURL& url) { |
return site_instance_->GetRelatedSiteInstance(url); |
} |
-bool ExtensionProcessManager::HasExtensionHost(ExtensionHost* host) const { |
- return all_hosts_.find(host) != all_hosts_.end(); |
-} |
- |
bool ExtensionProcessManager::IsBackgroundHostClosing( |
const std::string& extension_id) { |
ExtensionHost* host = GetBackgroundHostForExtension(extension_id); |
@@ -511,9 +516,9 @@ void ExtensionProcessManager::Observe( |
case chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED: { |
ExtensionHost* host = content::Details<ExtensionHost>(details).ptr(); |
- all_hosts_.erase(host); |
if (background_hosts_.erase(host)) |
background_page_data_.erase(host->extension()->id()); |
+ platform_app_hosts_.erase(host); |
break; |
} |
@@ -584,10 +589,10 @@ Profile* ExtensionProcessManager::GetProfile() const { |
void ExtensionProcessManager::OnExtensionHostCreated(ExtensionHost* host, |
bool is_background) { |
DCHECK_EQ(site_instance_->GetBrowserContext(), host->profile()); |
- |
- all_hosts_.insert(host); |
if (is_background) |
background_hosts_.insert(host); |
+ if (host->extension()->is_platform_app()) |
+ platform_app_hosts_.insert(host); |
} |
void ExtensionProcessManager::CloseBackgroundHost(ExtensionHost* host) { |
@@ -621,6 +626,17 @@ IncognitoExtensionProcessManager::IncognitoExtensionProcessManager( |
content::NotificationService::AllSources()); |
} |
+const ExtensionProcessManager::ViewSet |
+ExtensionProcessManager::GetAllViews() const { |
+ ViewSet result; |
+ for (ExtensionRenderViews::const_iterator iter = |
+ all_extension_views_.begin(); |
+ iter != all_extension_views_.end(); ++iter) { |
+ result.insert(iter->first); |
+ } |
+ return result; |
+} |
+ |
ExtensionHost* IncognitoExtensionProcessManager::CreateViewHost( |
const Extension* extension, |
const GURL& url, |