Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(113)

Side by Side Diff: chrome/browser/task_management/sampling/task_manager_impl.cc

Issue 2178733002: Task manager should support Idle Wakeups on Windows (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Handling missing results in OnRefreshDone. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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_management/sampling/task_manager_impl.h" 5 #include "chrome/browser/task_management/sampling/task_manager_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <unordered_map> 9 #include <unordered_map>
10 #include <unordered_set> 10 #include <unordered_set>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/command_line.h" 13 #include "base/command_line.h"
14 #include "base/containers/adapters.h" 14 #include "base/containers/adapters.h"
15 #include "base/stl_util.h" 15 #include "base/stl_util.h"
16 #include "build/build_config.h" 16 #include "build/build_config.h"
17 #include "chrome/browser/task_management/providers/browser_process_task_provider .h" 17 #include "chrome/browser/task_management/providers/browser_process_task_provider .h"
18 #include "chrome/browser/task_management/providers/child_process_task_provider.h " 18 #include "chrome/browser/task_management/providers/child_process_task_provider.h "
19 #include "chrome/browser/task_management/providers/web_contents/web_contents_tas k_provider.h" 19 #include "chrome/browser/task_management/providers/web_contents/web_contents_tas k_provider.h"
20 #include "chrome/browser/task_management/sampling/shared_sampler.h"
20 #include "content/public/browser/browser_thread.h" 21 #include "content/public/browser/browser_thread.h"
21 #include "content/public/browser/gpu_data_manager.h" 22 #include "content/public/browser/gpu_data_manager.h"
22 23
23 #if defined(OS_CHROMEOS) 24 #if defined(OS_CHROMEOS)
24 #include "chrome/browser/task_management/providers/arc/arc_process_task_provider .h" 25 #include "chrome/browser/task_management/providers/arc/arc_process_task_provider .h"
25 #include "components/arc/arc_bridge_service.h" 26 #include "components/arc/arc_bridge_service.h"
26 #endif // defined(OS_CHROMEOS) 27 #endif // defined(OS_CHROMEOS)
27 28
28 namespace task_management { 29 namespace task_management {
29 30
30 namespace { 31 namespace {
31 32
32 scoped_refptr<base::SequencedTaskRunner> GetBlockingPoolRunner() { 33 scoped_refptr<base::SequencedTaskRunner> GetBlockingPoolRunner() {
33 base::SequencedWorkerPool* blocking_pool = 34 base::SequencedWorkerPool* blocking_pool =
34 content::BrowserThread::GetBlockingPool(); 35 content::BrowserThread::GetBlockingPool();
35 return blocking_pool->GetSequencedTaskRunner( 36 return blocking_pool->GetSequencedTaskRunner(
36 blocking_pool->GetSequenceToken()); 37 blocking_pool->GetSequenceToken());
37 } 38 }
38 39
39 base::LazyInstance<TaskManagerImpl> lazy_task_manager_instance = 40 base::LazyInstance<TaskManagerImpl> lazy_task_manager_instance =
40 LAZY_INSTANCE_INITIALIZER; 41 LAZY_INSTANCE_INITIALIZER;
41 42
42 } // namespace 43 } // namespace
43 44
44 TaskManagerImpl::TaskManagerImpl() 45 TaskManagerImpl::TaskManagerImpl()
45 : on_background_data_ready_callback_(base::Bind( 46 : on_background_data_ready_callback_(
46 &TaskManagerImpl::OnTaskGroupBackgroundCalculationsDone, 47 base::Bind(&TaskManagerImpl::OnTaskGroupBackgroundCalculationsDone,
47 base::Unretained(this))), 48 base::Unretained(this))),
48 blocking_pool_runner_(GetBlockingPoolRunner()), 49 blocking_pool_runner_(GetBlockingPoolRunner()),
50 shared_sampler_(new SharedSampler(blocking_pool_runner_)),
49 is_running_(false) { 51 is_running_(false) {
50 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 52 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
51 53
52 task_providers_.push_back(new BrowserProcessTaskProvider()); 54 task_providers_.push_back(new BrowserProcessTaskProvider());
53 task_providers_.push_back(new ChildProcessTaskProvider()); 55 task_providers_.push_back(new ChildProcessTaskProvider());
54 task_providers_.push_back(new WebContentsTaskProvider()); 56 task_providers_.push_back(new WebContentsTaskProvider());
55 #if defined(OS_CHROMEOS) 57 #if defined(OS_CHROMEOS)
56 if (arc::ArcBridgeService::GetEnabled( 58 if (arc::ArcBridgeService::GetEnabled(
57 base::CommandLine::ForCurrentProcess())) { 59 base::CommandLine::ForCurrentProcess())) {
58 task_providers_.push_back(new ArcProcessTaskProvider()); 60 task_providers_.push_back(new ArcProcessTaskProvider());
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 366
365 void TaskManagerImpl::TaskAdded(Task* task) { 367 void TaskManagerImpl::TaskAdded(Task* task) {
366 DCHECK(task); 368 DCHECK(task);
367 369
368 TaskGroup* task_group = nullptr; 370 TaskGroup* task_group = nullptr;
369 const base::ProcessId proc_id = task->process_id(); 371 const base::ProcessId proc_id = task->process_id();
370 const TaskId task_id = task->task_id(); 372 const TaskId task_id = task->task_id();
371 373
372 auto itr = task_groups_by_proc_id_.find(proc_id); 374 auto itr = task_groups_by_proc_id_.find(proc_id);
373 if (itr == task_groups_by_proc_id_.end()) { 375 if (itr == task_groups_by_proc_id_.end()) {
374 task_group = new TaskGroup(task->process_handle(), 376 task_group = new TaskGroup(task->process_handle(), proc_id,
375 proc_id,
376 on_background_data_ready_callback_, 377 on_background_data_ready_callback_,
377 blocking_pool_runner_); 378 shared_sampler_, blocking_pool_runner_);
378 task_groups_by_proc_id_[proc_id] = task_group; 379 task_groups_by_proc_id_[proc_id] = task_group;
379 } else { 380 } else {
380 task_group = itr->second; 381 task_group = itr->second;
381 } 382 }
382 383
383 task_group->AddTask(task); 384 task_group->AddTask(task);
384 385
385 task_groups_by_task_id_[task_id] = task_group; 386 task_groups_by_task_id_[task_id] = task_group;
386 387
387 // Invalidate the cached sorted IDs by clearing the list. 388 // Invalidate the cached sorted IDs by clearing the list.
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 groups_itr.second->AreBackgroundCalculationsDone(); 528 groups_itr.second->AreBackgroundCalculationsDone();
528 } 529 }
529 if (are_all_processes_data_ready) { 530 if (are_all_processes_data_ready) {
530 NotifyObserversOnRefreshWithBackgroundCalculations(GetTaskIdsList()); 531 NotifyObserversOnRefreshWithBackgroundCalculations(GetTaskIdsList());
531 for (const auto& groups_itr : task_groups_by_proc_id_) 532 for (const auto& groups_itr : task_groups_by_proc_id_)
532 groups_itr.second->ClearCurrentBackgroundCalculationsFlags(); 533 groups_itr.second->ClearCurrentBackgroundCalculationsFlags();
533 } 534 }
534 } 535 }
535 536
536 } // namespace task_management 537 } // namespace task_management
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698