Index: chrome/browser/task_manager/child_process_resource_provider.cc |
diff --git a/chrome/browser/task_manager/child_process_resource_provider.cc b/chrome/browser/task_manager/child_process_resource_provider.cc |
index d4714b35240ebf913439dbd3bff73c52ce9680c4..6016a5a3f9c779fefc94a073f7c908408bbd814a 100644 |
--- a/chrome/browser/task_manager/child_process_resource_provider.cc |
+++ b/chrome/browser/task_manager/child_process_resource_provider.cc |
@@ -15,6 +15,7 @@ |
#include "content/public/browser/browser_child_process_host_iterator.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/child_process_data.h" |
+#include "content/public/browser/process_resource.h" |
#include "grit/theme_resources.h" |
#include "ui/base/l10n/l10n_util.h" |
#include "ui/base/resource/resource_bundle.h" |
@@ -22,6 +23,7 @@ |
using content::BrowserChildProcessHostIterator; |
using content::BrowserThread; |
+using content::ProcessResource; |
using content::WebContents; |
namespace task_manager { |
@@ -31,7 +33,8 @@ class ChildProcessResource : public Resource { |
ChildProcessResource(int process_type, |
const base::string16& name, |
base::ProcessHandle handle, |
- int unique_process_id); |
+ int unique_process_id, |
+ const scoped_refptr<ProcessResource>& process_resource); |
~ChildProcessResource() override; |
// Resource methods: |
@@ -43,6 +46,10 @@ class ChildProcessResource : public Resource { |
Type GetType() const override; |
bool SupportNetworkUsage() const override; |
void SetSupportNetworkUsage() override; |
+ void Refresh() override; |
+ bool ReportsV8MemoryStats() const override; |
+ size_t GetV8MemoryAllocated() const override; |
+ size_t GetV8MemoryUsed() const override; |
// Returns the pid of the child process. |
int process_id() const { return pid_; } |
@@ -59,6 +66,7 @@ class ChildProcessResource : public Resource { |
int unique_process_id_; |
mutable base::string16 title_; |
bool network_usage_support_; |
+ scoped_refptr<ProcessResource> process_resource_; |
// The icon painted for the child processs. |
// TODO(jcampan): we should have plugin specific icons for well-known |
@@ -74,12 +82,14 @@ ChildProcessResource::ChildProcessResource( |
int process_type, |
const base::string16& name, |
base::ProcessHandle handle, |
- int unique_process_id) |
+ int unique_process_id, |
+ const scoped_refptr<ProcessResource>& process_resource) |
: process_type_(process_type), |
name_(name), |
handle_(handle), |
unique_process_id_(unique_process_id), |
- network_usage_support_(false) { |
+ network_usage_support_(false), |
+ process_resource_(process_resource) { |
// We cache the process id because it's not cheap to calculate, and it won't |
// be available when we get the plugin disconnected notification. |
pid_ = base::GetProcId(handle); |
@@ -200,6 +210,29 @@ base::string16 ChildProcessResource::GetLocalizedTitle() const { |
return title; |
} |
+void ChildProcessResource::Refresh() { |
+ if (process_resource_) |
+ process_resource_->Refresh(); |
+} |
+ |
+bool ChildProcessResource::ReportsV8MemoryStats() const { |
+ if (process_resource_) |
+ return process_resource_->ReportsV8MemoryStats(); |
+ return false; |
+} |
+ |
+size_t ChildProcessResource::GetV8MemoryAllocated() const { |
+ if (process_resource_) |
+ return process_resource_->GetV8MemoryAllocated(); |
+ return 0; |
+} |
+ |
+size_t ChildProcessResource::GetV8MemoryUsed() const { |
+ if (process_resource_) |
+ return process_resource_->GetV8MemoryUsed(); |
+ return 0; |
+} |
+ |
//////////////////////////////////////////////////////////////////////////////// |
// ChildProcessResourceProvider class |
//////////////////////////////////////////////////////////////////////////////// |
@@ -300,7 +333,8 @@ void ChildProcessResourceProvider::AddToTaskManager( |
child_process_data.process_type, |
child_process_data.name, |
child_process_data.handle, |
- child_process_data.id); |
+ child_process_data.id, |
+ child_process_data.process_resource); |
resources_[child_process_data.handle] = resource; |
pid_to_resources_[resource->process_id()] = resource; |
task_manager_->AddResource(resource); |