Index: chrome/browser/task_manager/sampling/task_group.cc |
diff --git a/chrome/browser/task_manager/sampling/task_group.cc b/chrome/browser/task_manager/sampling/task_group.cc |
index ce8460050d72812df030d2c1fdee2f683bb1718a..ba4d286110eb553ff1b74f3e20000e8ae14fd93d 100644 |
--- a/chrome/browser/task_manager/sampling/task_group.cc |
+++ b/chrome/browser/task_manager/sampling/task_group.cc |
@@ -108,32 +108,33 @@ TaskGroup::TaskGroup( |
gpu_memory_has_duplicates_(false), |
is_backgrounded_(false), |
weak_ptr_factory_(this) { |
- scoped_refptr<TaskGroupSampler> sampler( |
- new TaskGroupSampler(base::Process::Open(proc_id), |
- blocking_pool_runner, |
- base::Bind(&TaskGroup::OnCpuRefreshDone, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&TaskGroup::OnMemoryUsageRefreshDone, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&TaskGroup::OnIdleWakeupsRefreshDone, |
- weak_ptr_factory_.GetWeakPtr()), |
+ if (process_id_ != base::kNullProcessId) { |
+ worker_thread_sampler_ = base::MakeRefCounted<TaskGroupSampler>( |
+ base::Process::Open(process_id_), blocking_pool_runner, |
+ base::Bind(&TaskGroup::OnCpuRefreshDone, |
+ weak_ptr_factory_.GetWeakPtr()), |
+ base::Bind(&TaskGroup::OnMemoryUsageRefreshDone, |
+ weak_ptr_factory_.GetWeakPtr()), |
+ base::Bind(&TaskGroup::OnIdleWakeupsRefreshDone, |
+ weak_ptr_factory_.GetWeakPtr()), |
#if defined(OS_LINUX) |
- base::Bind(&TaskGroup::OnOpenFdCountRefreshDone, |
- weak_ptr_factory_.GetWeakPtr()), |
+ base::Bind(&TaskGroup::OnOpenFdCountRefreshDone, |
+ weak_ptr_factory_.GetWeakPtr()), |
#endif // defined(OS_LINUX) |
- base::Bind(&TaskGroup::OnProcessPriorityDone, |
- weak_ptr_factory_.GetWeakPtr()))); |
- worker_thread_sampler_.swap(sampler); |
- |
- shared_sampler_->RegisterCallbacks( |
- process_id_, base::Bind(&TaskGroup::OnIdleWakeupsRefreshDone, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&TaskGroup::OnPhysicalMemoryUsageRefreshDone, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&TaskGroup::OnStartTimeRefreshDone, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&TaskGroup::OnCpuTimeRefreshDone, |
- weak_ptr_factory_.GetWeakPtr())); |
+ base::Bind(&TaskGroup::OnProcessPriorityDone, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ |
+ shared_sampler_->RegisterCallbacks( |
+ process_id_, |
+ base::Bind(&TaskGroup::OnIdleWakeupsRefreshDone, |
+ weak_ptr_factory_.GetWeakPtr()), |
+ base::Bind(&TaskGroup::OnPhysicalMemoryUsageRefreshDone, |
+ weak_ptr_factory_.GetWeakPtr()), |
+ base::Bind(&TaskGroup::OnStartTimeRefreshDone, |
+ weak_ptr_factory_.GetWeakPtr()), |
+ base::Bind(&TaskGroup::OnCpuTimeRefreshDone, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ } |
} |
TaskGroup::~TaskGroup() { |
@@ -223,7 +224,8 @@ void TaskGroup::Refresh(const gpu::VideoMemoryUsageStats& gpu_memory_stats, |
// 9- Idle Wakeups per second. |
// 10- (Linux and ChromeOS only) The number of file descriptors current open. |
// 11- Process priority (foreground vs. background). |
- worker_thread_sampler_->Refresh(refresh_flags); |
+ if (worker_thread_sampler_) |
+ worker_thread_sampler_->Refresh(refresh_flags); |
} |
Task* TaskGroup::GetTaskById(TaskId task_id) const { |