| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/memory_details.h" | 5 #include "chrome/browser/memory_details.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/file_version_info.h" | 8 #include "base/file_version_info.h" |
| 9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
| 10 #include "base/process_util.h" | 10 #include "base/process_util.h" |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 // have to be. | 198 // have to be. |
| 199 content::RenderProcessHost::listeners_iterator iter( | 199 content::RenderProcessHost::listeners_iterator iter( |
| 200 render_process_host->ListenersIterator()); | 200 render_process_host->ListenersIterator()); |
| 201 for (; !iter.IsAtEnd(); iter.Advance()) { | 201 for (; !iter.IsAtEnd(); iter.Advance()) { |
| 202 const RenderWidgetHost* widget = | 202 const RenderWidgetHost* widget = |
| 203 RenderWidgetHost::FromIPCChannelListener(iter.GetCurrentValue()); | 203 RenderWidgetHost::FromIPCChannelListener(iter.GetCurrentValue()); |
| 204 DCHECK(widget); | 204 DCHECK(widget); |
| 205 if (!widget || !widget->IsRenderView()) | 205 if (!widget || !widget->IsRenderView()) |
| 206 continue; | 206 continue; |
| 207 | 207 |
| 208 const RenderViewHost* host = static_cast<const RenderViewHost*>(widget); | 208 const RenderViewHost* host = static_cast<const RenderViewHostImpl*>( |
| 209 content::RenderViewHostDelegate* host_delegate = host->delegate(); | 209 RenderWidgetHostImpl::From(const_cast<RenderWidgetHost*>(widget))); |
| 210 content::RenderViewHostDelegate* host_delegate = host->GetDelegate(); |
| 210 DCHECK(host_delegate); | 211 DCHECK(host_delegate); |
| 211 GURL url = host_delegate->GetURL(); | 212 GURL url = host_delegate->GetURL(); |
| 212 content::ViewType type = host_delegate->GetRenderViewType(); | 213 content::ViewType type = host_delegate->GetRenderViewType(); |
| 213 if (host->enabled_bindings() & content::BINDINGS_POLICY_WEB_UI) { | 214 if (host->GetEnabledBindings() & content::BINDINGS_POLICY_WEB_UI) { |
| 214 // TODO(erikkay) the type for devtools doesn't actually appear to | 215 // TODO(erikkay) the type for devtools doesn't actually appear to |
| 215 // be set. | 216 // be set. |
| 216 if (type == content::VIEW_TYPE_DEV_TOOLS_UI) | 217 if (type == content::VIEW_TYPE_DEV_TOOLS_UI) |
| 217 process.renderer_type = ProcessMemoryInformation::RENDERER_DEVTOOLS; | 218 process.renderer_type = ProcessMemoryInformation::RENDERER_DEVTOOLS; |
| 218 else | 219 else |
| 219 process.renderer_type = ProcessMemoryInformation::RENDERER_CHROME; | 220 process.renderer_type = ProcessMemoryInformation::RENDERER_CHROME; |
| 220 } else if (extension_process_map->Contains(host->process()->GetID())) { | 221 } else if (extension_process_map->Contains( |
| 222 host->GetProcess()->GetID())) { |
| 221 // For our purposes, don't count processes containing only hosted apps | 223 // For our purposes, don't count processes containing only hosted apps |
| 222 // as extension processes. See also: crbug.com/102533. | 224 // as extension processes. See also: crbug.com/102533. |
| 223 std::set<std::string> extension_ids = | 225 std::set<std::string> extension_ids = |
| 224 extension_process_map->GetExtensionsInProcess( | 226 extension_process_map->GetExtensionsInProcess( |
| 225 host->process()->GetID()); | 227 host->GetProcess()->GetID()); |
| 226 for (std::set<std::string>::iterator iter = extension_ids.begin(); | 228 for (std::set<std::string>::iterator iter = extension_ids.begin(); |
| 227 iter != extension_ids.end(); ++iter) { | 229 iter != extension_ids.end(); ++iter) { |
| 228 const Extension* extension = | 230 const Extension* extension = |
| 229 extension_service->GetExtensionById(*iter, false); | 231 extension_service->GetExtensionById(*iter, false); |
| 230 if (extension && !extension->is_hosted_app()) { | 232 if (extension && !extension->is_hosted_app()) { |
| 231 process.renderer_type = | 233 process.renderer_type = |
| 232 ProcessMemoryInformation::RENDERER_EXTENSION; | 234 ProcessMemoryInformation::RENDERER_EXTENSION; |
| 233 break; | 235 break; |
| 234 } | 236 } |
| 235 } | 237 } |
| 236 } | 238 } |
| 237 WebContents* contents = host_delegate->GetAsWebContents(); | 239 WebContents* contents = host_delegate->GetAsWebContents(); |
| 238 if (!contents) { | 240 if (!contents) { |
| 239 if (extension_process_map->Contains(host->process()->GetID())) { | 241 if (extension_process_map->Contains(host->GetProcess()->GetID())) { |
| 240 const Extension* extension = | 242 const Extension* extension = |
| 241 extension_service->extensions()->GetByID(url.host()); | 243 extension_service->extensions()->GetByID(url.host()); |
| 242 if (extension) { | 244 if (extension) { |
| 243 string16 title = UTF8ToUTF16(extension->name()); | 245 string16 title = UTF8ToUTF16(extension->name()); |
| 244 process.titles.push_back(title); | 246 process.titles.push_back(title); |
| 245 } | 247 } |
| 246 } else if (process.renderer_type == | 248 } else if (process.renderer_type == |
| 247 ProcessMemoryInformation::RENDERER_UNKNOWN) { | 249 ProcessMemoryInformation::RENDERER_UNKNOWN) { |
| 248 process.titles.push_back(UTF8ToUTF16(url.spec())); | 250 process.titles.push_back(UTF8ToUTF16(url.spec())); |
| 249 switch (type) { | 251 switch (type) { |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 425 UMA_HISTOGRAM_COUNTS_100("Memory.PepperPluginProcessCount", | 427 UMA_HISTOGRAM_COUNTS_100("Memory.PepperPluginProcessCount", |
| 426 pepper_plugin_count); | 428 pepper_plugin_count); |
| 427 UMA_HISTOGRAM_COUNTS_100("Memory.RendererProcessCount", renderer_count); | 429 UMA_HISTOGRAM_COUNTS_100("Memory.RendererProcessCount", renderer_count); |
| 428 UMA_HISTOGRAM_COUNTS_100("Memory.WorkerProcessCount", worker_count); | 430 UMA_HISTOGRAM_COUNTS_100("Memory.WorkerProcessCount", worker_count); |
| 429 // TODO(viettrungluu): Do we want separate counts for the other | 431 // TODO(viettrungluu): Do we want separate counts for the other |
| 430 // (platform-specific) process types? | 432 // (platform-specific) process types? |
| 431 | 433 |
| 432 int total_sample = static_cast<int>(aggregate_memory / 1000); | 434 int total_sample = static_cast<int>(aggregate_memory / 1000); |
| 433 UMA_HISTOGRAM_MEMORY_MB("Memory.Total", total_sample); | 435 UMA_HISTOGRAM_MEMORY_MB("Memory.Total", total_sample); |
| 434 } | 436 } |
| OLD | NEW |