OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/task_manager/task_manager_worker_resource_provider.h" | 5 #include "chrome/browser/task_manager/task_manager_worker_resource_provider.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
11 #include "chrome/browser/browser_process.h" | 11 #include "chrome/browser/browser_process.h" |
12 #include "chrome/browser/debugger/devtools_window.h" | 12 #include "chrome/browser/debugger/devtools_window.h" |
13 #include "chrome/browser/profiles/profile_manager.h" | 13 #include "chrome/browser/profiles/profile_manager.h" |
14 #include "content/browser/browser_child_process_host.h" | |
15 #include "content/browser/worker_host/worker_process_host.h" | 14 #include "content/browser/worker_host/worker_process_host.h" |
16 #include "content/public/browser/browser_thread.h" | 15 #include "content/public/browser/browser_thread.h" |
17 #include "content/public/browser/child_process_data.h" | 16 #include "content/public/browser/child_process_data.h" |
18 #include "content/public/browser/devtools_agent_host_registry.h" | 17 #include "content/public/browser/devtools_agent_host_registry.h" |
19 #include "content/public/browser/notification_service.h" | 18 #include "content/public/browser/notification_service.h" |
20 #include "content/public/browser/notification_types.h" | 19 #include "content/public/browser/notification_types.h" |
21 #include "content/public/browser/worker_service.h" | 20 #include "content/public/browser/worker_service.h" |
22 #include "grit/generated_resources.h" | 21 #include "grit/generated_resources.h" |
23 #include "grit/theme_resources_standard.h" | 22 #include "grit/theme_resources_standard.h" |
24 #include "third_party/skia/include/core/SkBitmap.h" | 23 #include "third_party/skia/include/core/SkBitmap.h" |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 BrowserThread::PostTask( | 210 BrowserThread::PostTask( |
212 BrowserThread::IO, FROM_HERE, base::Bind( | 211 BrowserThread::IO, FROM_HERE, base::Bind( |
213 &TaskManagerWorkerResourceProvider::StopObservingWorkers, | 212 &TaskManagerWorkerResourceProvider::StopObservingWorkers, |
214 this)); | 213 this)); |
215 } | 214 } |
216 | 215 |
217 void TaskManagerWorkerResourceProvider::WorkerCreated( | 216 void TaskManagerWorkerResourceProvider::WorkerCreated( |
218 WorkerProcessHost* process, | 217 WorkerProcessHost* process, |
219 const WorkerProcessHost::WorkerInstance& instance) { | 218 const WorkerProcessHost::WorkerInstance& instance) { |
220 TaskManagerSharedWorkerResource* resource = | 219 TaskManagerSharedWorkerResource* resource = |
221 new TaskManagerSharedWorkerResource(process->data(), | 220 new TaskManagerSharedWorkerResource(process->GetData(), |
222 instance.worker_route_id(), | 221 instance.worker_route_id(), |
223 instance.url(), instance.name()); | 222 instance.url(), instance.name()); |
224 BrowserThread::PostTask( | 223 BrowserThread::PostTask( |
225 BrowserThread::UI, FROM_HERE, | 224 BrowserThread::UI, FROM_HERE, |
226 base::Bind(&TaskManagerWorkerResourceProvider::NotifyWorkerCreated, | 225 base::Bind(&TaskManagerWorkerResourceProvider::NotifyWorkerCreated, |
227 this, base::Owned(new WorkerResourceHolder(resource)))); | 226 this, base::Owned(new WorkerResourceHolder(resource)))); |
228 } | 227 } |
229 | 228 |
230 void TaskManagerWorkerResourceProvider::WorkerDestroyed( | 229 void TaskManagerWorkerResourceProvider::WorkerDestroyed( |
231 WorkerProcessHost* process, | 230 WorkerProcessHost* process, |
232 int worker_route_id) { | 231 int worker_route_id) { |
233 BrowserThread::PostTask( | 232 BrowserThread::PostTask( |
234 BrowserThread::UI, FROM_HERE, base::Bind( | 233 BrowserThread::UI, FROM_HERE, base::Bind( |
235 &TaskManagerWorkerResourceProvider::NotifyWorkerDestroyed, | 234 &TaskManagerWorkerResourceProvider::NotifyWorkerDestroyed, |
236 this, process->data().id, worker_route_id)); | 235 this, process->GetData().id, worker_route_id)); |
237 } | 236 } |
238 | 237 |
239 void TaskManagerWorkerResourceProvider::Observe( | 238 void TaskManagerWorkerResourceProvider::Observe( |
240 int type, | 239 int type, |
241 const content::NotificationSource& source, | 240 const content::NotificationSource& source, |
242 const content::NotificationDetails& details) { | 241 const content::NotificationDetails& details) { |
243 content::ChildProcessData* process_data = | 242 content::ChildProcessData* process_data = |
244 content::Details<content::ChildProcessData>(details).ptr(); | 243 content::Details<content::ChildProcessData>(details).ptr(); |
245 if (process_data->type != content::PROCESS_TYPE_WORKER) | 244 if (process_data->type != content::PROCESS_TYPE_WORKER) |
246 return; | 245 return; |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
297 resources_.erase(it); | 296 resources_.erase(it); |
298 return; | 297 return; |
299 } | 298 } |
300 } | 299 } |
301 } | 300 } |
302 | 301 |
303 void TaskManagerWorkerResourceProvider::StartObservingWorkers() { | 302 void TaskManagerWorkerResourceProvider::StartObservingWorkers() { |
304 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 303 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
305 | 304 |
306 scoped_ptr<WorkerResourceListHolder> holder(new WorkerResourceListHolder); | 305 scoped_ptr<WorkerResourceListHolder> holder(new WorkerResourceListHolder); |
307 BrowserChildProcessHost::Iterator iter(content::PROCESS_TYPE_WORKER); | 306 for (WorkerProcessHostIterator iter; !iter.Done(); ++iter) { |
308 for (; !iter.Done(); ++iter) { | 307 const WorkerProcessHost::Instances& instances = (*iter)->instances(); |
309 WorkerProcessHost* worker = static_cast<WorkerProcessHost*>(*iter); | |
310 const WorkerProcessHost::Instances& instances = worker->instances(); | |
311 for (WorkerProcessHost::Instances::const_iterator i = instances.begin(); | 308 for (WorkerProcessHost::Instances::const_iterator i = instances.begin(); |
312 i != instances.end(); ++i) { | 309 i != instances.end(); ++i) { |
313 holder->resources()->push_back(new TaskManagerSharedWorkerResource( | 310 holder->resources()->push_back(new TaskManagerSharedWorkerResource( |
314 (*iter)->data(), i->worker_route_id(), i->url(), i->name())); | 311 iter.GetData(), i->worker_route_id(), i->url(), i->name())); |
315 } | 312 } |
316 } | 313 } |
317 | 314 |
318 BrowserThread::PostTask( | 315 BrowserThread::PostTask( |
319 BrowserThread::UI, FROM_HERE, | 316 BrowserThread::UI, FROM_HERE, |
320 base::Bind( | 317 base::Bind( |
321 &TaskManagerWorkerResourceProvider::AddWorkerResourceList, | 318 &TaskManagerWorkerResourceProvider::AddWorkerResourceList, |
322 this, base::Owned(holder.release()))); | 319 this, base::Owned(holder.release()))); |
323 | 320 |
324 WorkerService::GetInstance()->AddObserver(this); | 321 WorkerService::GetInstance()->AddObserver(this); |
(...skipping 24 matching lines...) Expand all Loading... |
349 int process_id = resource->process_data().id; | 346 int process_id = resource->process_data().id; |
350 launching_workers_[process_id].push_back(resource); | 347 launching_workers_[process_id].push_back(resource); |
351 } else { | 348 } else { |
352 task_manager_->AddResource(resource); | 349 task_manager_->AddResource(resource); |
353 } | 350 } |
354 } | 351 } |
355 | 352 |
356 void TaskManagerWorkerResourceProvider::DeleteAllResources() { | 353 void TaskManagerWorkerResourceProvider::DeleteAllResources() { |
357 STLDeleteElements(&resources_); | 354 STLDeleteElements(&resources_); |
358 } | 355 } |
OLD | NEW |