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

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: Move TaskTimeTracker to public interface, expose to WebThread. 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..ca32dd893eefe3c966d0a01ca7e45ccb447c4588 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
@@ -14,9 +14,9 @@
#include "platform/scheduler/base/task_queue_impl.h"
#include "platform/scheduler/base/task_queue_manager_delegate.h"
#include "platform/scheduler/base/task_queue_selector.h"
-#include "platform/scheduler/base/task_time_tracker.h"
#include "platform/scheduler/base/work_queue.h"
#include "platform/scheduler/base/work_queue_sets.h"
+#include "public/platform/scheduler/base/task_time_tracker.h"
namespace blink {
namespace scheduler {
@@ -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() /
alph 2016/08/22 23:51:07 nit: (timeTicks - base::TimeTicks()).InSecondsF()
panicker 2016/08/25 23:11:52 Done.
+ static_cast<double>(base::Time::kMicrosecondsPerSecond));
+}
}
TaskQueueManager::TaskQueueManager(
@@ -46,7 +51,6 @@ TaskQueueManager::TaskQueueManager(
task_was_run_on_quiescence_monitored_queue_(false),
work_batch_size_(1),
task_count_(0),
- task_time_tracker_(nullptr),
tracing_category_(tracing_category),
disabled_by_default_tracing_category_(
disabled_by_default_tracing_category),
@@ -197,7 +201,7 @@ void TaskQueueManager::DoWork(base::TimeTicks run_time, bool from_main_thread) {
LazyNow lazy_now(real_time_domain()->CreateLazyNow());
base::TimeTicks task_start_time;
- if (!delegate_->IsNested() && task_time_tracker_)
+ if (!delegate_->IsNested() && task_time_trackers_.might_have_observers())
task_start_time = lazy_now.Now();
// Pass false and nullptr to UpdateWorkQueues here to prevent waking up a
@@ -228,10 +232,12 @@ void TaskQueueManager::DoWork(base::TimeTicks run_time, bool from_main_thread) {
}
lazy_now = real_time_domain()->CreateLazyNow();
- if (!delegate_->IsNested() && task_time_tracker_) {
+ if (!delegate_->IsNested() && task_time_trackers_.might_have_observers()) {
// Only report top level task durations.
base::TimeTicks task_end_time = lazy_now.Now();
- task_time_tracker_->ReportTaskTime(task_start_time, task_end_time);
+ FOR_EACH_OBSERVER(TaskTimeTracker, task_time_trackers_,
+ ReportTaskTime(MonotonicTimeInSeconds(task_start_time),
+ MonotonicTimeInSeconds(task_end_time)));
task_start_time = task_end_time;
alph 2016/08/22 23:51:07 Looks like the first time the observer will get a
panickercorp 2016/08/23 17:43:31 There can be an issue if there are 0 observers at
panicker 2016/08/25 23:11:52 I'm leaving this as is, as this is not worse than
Sami 2016/08/26 11:03:56 Sorry, I missed this question earlier. I think it
}
@@ -374,6 +380,17 @@ void TaskQueueManager::RemoveTaskObserver(
task_observers_.RemoveObserver(task_observer);
}
+void TaskQueueManager::AddTaskTimeTracker(TaskTimeTracker* task_time_tracker) {
+ DCHECK(main_thread_checker_.CalledOnValidThread());
+ task_time_trackers_.AddObserver(task_time_tracker);
+}
+
+void TaskQueueManager::RemoveTaskTimeTracker(
+ TaskTimeTracker* task_time_tracker) {
+ DCHECK(main_thread_checker_.CalledOnValidThread());
+ task_time_trackers_.RemoveObserver(task_time_tracker);
+}
+
bool TaskQueueManager::GetAndClearSystemIsQuiescentBit() {
bool task_was_run = task_was_run_on_quiescence_monitored_queue_;
task_was_run_on_quiescence_monitored_queue_ = false;

Powered by Google App Engine
This is Rietveld 408576698