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

Unified Diff: third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc

Issue 2259013003: Move and rename TaskTimeTracker to public interface exposed to WebThread, use in WebPerf Agent. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remaining fixes for remove observer 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc
index 31adb7257af790faa8ed72b0ed0487afd98a3768..b945da63b78e027c5284e1f8ff18011582cd8be9 100644
--- a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc
+++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc
@@ -34,6 +34,11 @@ void RecordImmediateTaskQueueingDuration(tracked_objects::Duration duration) {
"RendererScheduler.TaskQueueManager.ImmediateTaskQueueingDuration",
base::TimeDelta::FromMilliseconds(duration.InMilliseconds()));
}
+
+double MonotonicTimeInSeconds(base::TimeTicks timeTicks) {
+ return (timeTicks.ToInternalValue() / static_cast<double>(
+ base::Time::kMicrosecondsPerSecond));
+}
}
TaskQueueManager::TaskQueueManager(
@@ -47,6 +52,7 @@ TaskQueueManager::TaskQueueManager(
work_batch_size_(1),
task_count_(0),
task_time_tracker_(nullptr),
+ task_time_observer_(nullptr),
tracing_category_(tracing_category),
disabled_by_default_tracing_category_(
disabled_by_default_tracing_category),
@@ -215,7 +221,14 @@ void TaskQueueManager::DoWork(base::TimeTicks run_time, bool from_main_thread) {
bool should_trigger_wakeup = work_queue->task_queue()->wakeup_policy() ==
TaskQueue::WakeupPolicy::CAN_WAKE_OTHER_QUEUES;
- switch (ProcessTaskFromWorkQueue(work_queue, &previous_task)) {
+ if (!delegate_->IsNested() && task_time_observer_)
+ task_time_observer_->willProcessTask();
+ TaskQueueManager::ProcessTaskResult result = ProcessTaskFromWorkQueue(
+ work_queue, &previous_task);
+ if (!delegate_->IsNested() && task_time_observer_)
+ task_time_observer_->didProcessTask();
+
+ switch (result) {
case ProcessTaskResult::DEFERRED:
// If a task was deferred, try again with another task. Note that this
// means deferred tasks (i.e. non-nestable tasks) will never trigger
@@ -232,6 +245,10 @@ void TaskQueueManager::DoWork(base::TimeTicks run_time, bool from_main_thread) {
// Only report top level task durations.
base::TimeTicks task_end_time = lazy_now.Now();
task_time_tracker_->ReportTaskTime(task_start_time, task_end_time);
+ if (task_time_observer_)
+ task_time_observer_->reportTaskTime(
+ MonotonicTimeInSeconds(task_start_time),
+ MonotonicTimeInSeconds(task_end_time));
task_start_time = task_end_time;
}

Powered by Google App Engine
This is Rietveld 408576698