Index: chrome/browser/task_manager/task_manager_worker_resource_provider.cc |
=================================================================== |
--- chrome/browser/task_manager/task_manager_worker_resource_provider.cc (revision 119868) |
+++ chrome/browser/task_manager/task_manager_worker_resource_provider.cc (working copy) |
@@ -11,7 +11,6 @@ |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/debugger/devtools_window.h" |
#include "chrome/browser/profiles/profile_manager.h" |
-#include "content/browser/worker_host/worker_process_host.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/child_process_data.h" |
#include "content/public/browser/devtools_agent_host_registry.h" |
@@ -34,15 +33,18 @@ |
// only on the UI thread. Destructor may be called on any thread. |
class TaskManagerSharedWorkerResource : public TaskManager::Resource { |
public: |
- TaskManagerSharedWorkerResource(const content::ChildProcessData& process_data, |
- int routing_id, const GURL& url, |
- const string16& name); |
+ TaskManagerSharedWorkerResource(const GURL& url, |
+ const string16& name, |
+ int process_id, |
+ int routing_id, |
+ base::ProcessHandle process_handle); |
virtual ~TaskManagerSharedWorkerResource(); |
bool Matches(int process_id, int routing_id) const; |
- void UpdateProcessData(const content::ChildProcessData& process_data); |
- const content::ChildProcessData& process_data() { return process_data_; } |
+ void UpdateProcessHandle(base::ProcessHandle handle); |
+ base::ProcessHandle handle() const { return handle_; } |
+ int process_id() const { return process_id_; } |
private: |
// TaskManager::Resource methods: |
@@ -57,9 +59,10 @@ |
virtual bool SupportNetworkUsage() const OVERRIDE; |
virtual void SetSupportNetworkUsage() OVERRIDE; |
- content::ChildProcessData process_data_; |
+ int process_id_; |
int routing_id_; |
string16 title_; |
+ base::ProcessHandle handle_; |
static SkBitmap* default_icon_; |
@@ -69,12 +72,14 @@ |
SkBitmap* TaskManagerSharedWorkerResource::default_icon_ = NULL; |
TaskManagerSharedWorkerResource::TaskManagerSharedWorkerResource( |
- const content::ChildProcessData& process_data, |
+ const GURL& url, |
+ const string16& name, |
+ int process_id, |
int routing_id, |
- const GURL& url, |
- const string16& name) |
- : process_data_(process_data), |
- routing_id_(routing_id) { |
+ base::ProcessHandle process_handle) |
+ : process_id_(process_id), |
+ routing_id_(routing_id), |
+ handle_(process_handle) { |
title_ = UTF8ToUTF16(url.spec()); |
if (!name.empty()) |
title_ += ASCIIToUTF16(" (") + name + ASCIIToUTF16(")"); |
@@ -85,12 +90,12 @@ |
bool TaskManagerSharedWorkerResource::Matches(int process_id, |
int routing_id) const { |
- return process_data_.id == process_id && routing_id_ == routing_id; |
+ return process_id_ == process_id && routing_id_ == routing_id; |
} |
-void TaskManagerSharedWorkerResource::UpdateProcessData( |
- const content::ChildProcessData& process_data) { |
- process_data_ = process_data; |
+void TaskManagerSharedWorkerResource::UpdateProcessHandle( |
+ base::ProcessHandle handle) { |
+ handle_ = handle; |
} |
string16 TaskManagerSharedWorkerResource::GetTitle() const { |
@@ -111,7 +116,7 @@ |
} |
base::ProcessHandle TaskManagerSharedWorkerResource::GetProcess() const { |
- return process_data_.handle; |
+ return handle_; |
} |
TaskManager::Resource::Type TaskManagerSharedWorkerResource::GetType() const { |
@@ -130,8 +135,7 @@ |
return; |
DevToolsAgentHost* agent_host = |
DevToolsAgentHostRegistry::GetDevToolsAgentHostForWorker( |
- process_data_.id, |
- routing_id_); |
+ process_id_, routing_id_); |
DevToolsWindow::OpenDevToolsWindowForWorker(profile, agent_host); |
} |
@@ -214,25 +218,25 @@ |
} |
void TaskManagerWorkerResourceProvider::WorkerCreated( |
- WorkerProcessHost* process, |
- const WorkerProcessHost::WorkerInstance& instance) { |
+ const GURL& url, |
+ const string16& name, |
+ int process_id, |
+ int route_id) { |
TaskManagerSharedWorkerResource* resource = |
- new TaskManagerSharedWorkerResource(process->GetData(), |
- instance.worker_route_id(), |
- instance.url(), instance.name()); |
+ new TaskManagerSharedWorkerResource( |
+ url, name, process_id, route_id, base::kNullProcessHandle); |
BrowserThread::PostTask( |
BrowserThread::UI, FROM_HERE, |
base::Bind(&TaskManagerWorkerResourceProvider::NotifyWorkerCreated, |
this, base::Owned(new WorkerResourceHolder(resource)))); |
} |
-void TaskManagerWorkerResourceProvider::WorkerDestroyed( |
- WorkerProcessHost* process, |
- int worker_route_id) { |
+void TaskManagerWorkerResourceProvider::WorkerDestroyed(int process_id, |
+ int route_id) { |
BrowserThread::PostTask( |
BrowserThread::UI, FROM_HERE, base::Bind( |
&TaskManagerWorkerResourceProvider::NotifyWorkerDestroyed, |
- this, process->GetData().id, worker_route_id)); |
+ this, process_id, route_id)); |
} |
void TaskManagerWorkerResourceProvider::Observe( |
@@ -251,7 +255,7 @@ |
WorkerResourceList& resources = it->second; |
for (WorkerResourceList::iterator r = resources.begin(); |
r !=resources.end(); ++r) { |
- (*r)->UpdateProcessData(*process_data); |
+ (*r)->UpdateProcessHandle(process_data->handle); |
task_manager_->AddResource(*r); |
} |
launching_workers_.erase(it); |
@@ -262,7 +266,7 @@ |
// workers here when the worker process has been destroyed. |
for (WorkerResourceList::iterator it = resources_.begin(); |
it !=resources_.end();) { |
- if ((*it)->process_data().id == process_data->id) { |
+ if ((*it)->process_id() == process_data->id) { |
task_manager_->RemoveResource(*it); |
delete *it; |
it = resources_.erase(it); |
@@ -303,13 +307,13 @@ |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
scoped_ptr<WorkerResourceListHolder> holder(new WorkerResourceListHolder); |
- for (WorkerProcessHostIterator iter; !iter.Done(); ++iter) { |
- const WorkerProcessHost::Instances& instances = (*iter)->instances(); |
- for (WorkerProcessHost::Instances::const_iterator i = instances.begin(); |
- i != instances.end(); ++i) { |
- holder->resources()->push_back(new TaskManagerSharedWorkerResource( |
- iter.GetData(), i->worker_route_id(), i->url(), i->name())); |
- } |
+ std::vector<WorkerService::WorkerInfo> worker_info = |
+ WorkerService::GetInstance()->GetWorkers(); |
+ |
+ for (size_t i = 0; i < worker_info.size(); ++i) { |
+ holder->resources()->push_back(new TaskManagerSharedWorkerResource( |
+ worker_info[i].url, worker_info[i].name, worker_info[i].process_id, |
+ worker_info[i].route_id, worker_info[i].handle)); |
} |
BrowserThread::PostTask( |
@@ -342,8 +346,8 @@ |
TaskManagerSharedWorkerResource* resource) { |
DCHECK(updating_); |
resources_.push_back(resource); |
- if (resource->process_data().handle == base::kNullProcessHandle) { |
- int process_id = resource->process_data().id; |
+ if (resource->handle() == base::kNullProcessHandle) { |
+ int process_id = resource->process_id(); |
launching_workers_[process_id].push_back(resource); |
} else { |
task_manager_->AddResource(resource); |