summaryrefslogtreecommitdiffstats
path: root/chrome/browser/memory_details.cc
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-09 06:45:46 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-09 06:45:46 +0000
commit6f37144dd7bbeded7d56dc37952342fa09e5a7bc (patch)
tree313f077bdd22d3e361d066753f7672ec77006d0c /chrome/browser/memory_details.cc
parent5790d92e12c225bfe1683c81cf223dcf64302d1d (diff)
downloadchromium_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.cc25
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) {