diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-09 06:45:46 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-09 06:45:46 +0000 |
commit | 6f37144dd7bbeded7d56dc37952342fa09e5a7bc (patch) | |
tree | 313f077bdd22d3e361d066753f7672ec77006d0c /chrome/browser/memory_details.cc | |
parent | 5790d92e12c225bfe1683c81cf223dcf64302d1d (diff) | |
download | chromium_src-6f37144dd7bbeded7d56dc37952342fa09e5a7bc.zip chromium_src-6f37144dd7bbeded7d56dc37952342fa09e5a7bc.tar.gz chromium_src-6f37144dd7bbeded7d56dc37952342fa09e5a7bc.tar.bz2 |
Extract a ProcessMap class from ExtensionProcessManager. This is a dumb data class that can be used on both the IO and UI threads to test extension/process associations.
BUG=95111,102617
TEST=Already covered by tests
Review URL: http://codereview.chromium.org/8387061
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@109194 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/memory_details.cc')
-rw-r--r-- | chrome/browser/memory_details.cc | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/chrome/browser/memory_details.cc b/chrome/browser/memory_details.cc index 138a51d..3f5cb15 100644 --- a/chrome/browser/memory_details.cc +++ b/chrome/browser/memory_details.cc @@ -144,8 +144,8 @@ void MemoryDetails::CollectChildInfoOnUIThread() { Profile* profile = Profile::FromBrowserContext(render_process_host->browser_context()); ExtensionService* extension_service = profile->GetExtensionService(); - ExtensionProcessManager* extension_process_manager = - profile->GetExtensionProcessManager(); + extensions::ProcessMap* extension_process_map = + extension_service->process_map(); // The RenderProcessHost may host multiple TabContents. Any // of them which contain diagnostics information make the whole @@ -175,14 +175,25 @@ void MemoryDetails::CollectChildInfoOnUIThread() { process.renderer_type = ChildProcessInfo::RENDERER_DEVTOOLS; else process.renderer_type = ChildProcessInfo::RENDERER_CHROME; - } else if (extension_process_manager->AreBindingsEnabledForProcess( - host->process()->id())) { - process.renderer_type = ChildProcessInfo::RENDERER_EXTENSION; + } else if (extension_process_map->Contains(host->process()->id())) { + // For our purposes, don't count processes containing only hosted apps + // as extension processes. See also: crbug.com/102533. + std::set<std::string> extension_ids = + extension_process_map->GetExtensionsInProcess( + host->process()->id()); + for (std::set<std::string>::iterator iter = extension_ids.begin(); + iter != extension_ids.end(); ++iter) { + const Extension* extension = + extension_service->GetExtensionById(*iter, false); + if (extension && !extension->is_hosted_app()) { + process.renderer_type = ChildProcessInfo::RENDERER_EXTENSION; + break; + } + } } TabContents* contents = host_delegate->GetAsTabContents(); if (!contents) { - if (extension_process_manager->IsExtensionProcess( - host->process()->id())) { + if (extension_process_map->Contains(host->process()->id())) { const Extension* extension = extension_service->GetExtensionByURL(url); if (extension) { |