Index: components/scheduler/base/task_time_tracker.cc |
diff --git a/components/scheduler/base/task_time_tracker.cc b/components/scheduler/base/task_time_tracker.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d4957730f20dabf26d2bc5dd335486dfa63c5d09 |
--- /dev/null |
+++ b/components/scheduler/base/task_time_tracker.cc |
@@ -0,0 +1,37 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "components/scheduler/base/task_time_tracker.h" |
+ |
+#include "base/metrics/histogram_macros.h" |
+#include "base/trace_event/trace_event.h" |
+ |
+namespace scheduler { |
+ |
+TaskTimeTracker::TaskTimeTracker() |
+ : task_time_observer_(nullptr), |
+ queueing_time_estimator_(this, base::TimeDelta::FromSeconds(1)) {} |
+ |
+TaskTimeTracker::~TaskTimeTracker() {} |
+ |
+void TaskTimeTracker::SetObserver(TaskTimeObserver* task_time_observer) { |
+ task_time_observer_ = task_time_observer; |
+} |
+ |
+void TaskTimeTracker::OnQueueingTimeForWindowEstimated( |
+ base::TimeDelta queueing_time) { |
+ UMA_HISTOGRAM_TIMES("RendererScheduler.ExpectedTaskQueueingDuration", |
+ queueing_time); |
+ TRACE_COUNTER1(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), |
+ "estimated_queueing_time_for_window", |
+ queueing_time.InMillisecondsF()); |
+} |
+ |
+void TaskTimeTracker::ReportTaskTime( |
+ base::TimeTicks task_start_time, base::TimeTicks task_end_time) { |
+ queueing_time_estimator_.OnToplevelTaskCompleted(task_start_time, |
+ task_end_time); |
+} |
+ |
+} // scheduler |