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

Unified Diff: components/scheduler/renderer/renderer_scheduler_impl.cc

Issue 1411843008: Make blink platform time consistent with the timer virtual time (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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: components/scheduler/renderer/renderer_scheduler_impl.cc
diff --git a/components/scheduler/renderer/renderer_scheduler_impl.cc b/components/scheduler/renderer/renderer_scheduler_impl.cc
index 95a043c13f1c584e526e3fb97725f550118329f4..4384ffee34d752cc3bc2f131f202ef941a4073f8 100644
--- a/components/scheduler/renderer/renderer_scheduler_impl.cc
+++ b/components/scheduler/renderer/renderer_scheduler_impl.cc
@@ -49,7 +49,8 @@ RendererSchedulerImpl::RendererSchedulerImpl(
base::Bind(&RendererSchedulerImpl::UpdatePolicy,
base::Unretained(this)),
helper_.ControlTaskRunner()),
- main_thread_only_(compositor_task_runner_, helper_.tick_clock()),
+ main_thread_only_(compositor_task_runner_,
+ helper_.task_queue_manager_delegate()),
policy_may_need_update_(&any_thread_lock_),
weak_factory_(this) {
update_policy_closure_ = base::Bind(&RendererSchedulerImpl::UpdatePolicy,
@@ -250,7 +251,7 @@ void RendererSchedulerImpl::DidCommitFrameToCompositor() {
if (helper_.IsShutdown())
return;
- base::TimeTicks now(helper_.tick_clock()->NowTicks());
+ base::TimeTicks now(helper_.task_queue_manager_delegate()->NowTicks());
if (now < MainThreadOnly().estimated_next_frame_begin) {
// TODO(rmcilroy): Consider reducing the idle period based on the runtime of
// the next pending delayed tasks (as currently done in for long idle times)
@@ -307,7 +308,7 @@ void RendererSchedulerImpl::SetAllRenderWidgetsHidden(bool hidden) {
// TODO(alexclarke): Should we update policy here?
TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID(
TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), "RendererScheduler",
- this, AsValue(helper_.tick_clock()->NowTicks()));
+ this, AsValue(helper_.task_queue_manager_delegate()->NowTicks()));
}
void RendererSchedulerImpl::SetHasVisibleRenderWidgetWithTouchHandler(
@@ -407,7 +408,7 @@ void RendererSchedulerImpl::UpdateForInputEventOnCompositorThread(
blink::WebInputEvent::Type type,
InputEventState input_event_state) {
base::AutoLock lock(any_thread_lock_);
- base::TimeTicks now = helper_.tick_clock()->NowTicks();
+ base::TimeTicks now = helper_.task_queue_manager_delegate()->NowTicks();
// TODO(alexclarke): Move WebInputEventTraits where we can access it from here
// and record the name rather than the integer representation.
@@ -476,7 +477,7 @@ void RendererSchedulerImpl::DidHandleInputEventOnMainThread(
if (ShouldPrioritizeInputEvent(web_input_event)) {
base::AutoLock lock(any_thread_lock_);
AnyThread().user_model.DidFinishProcessingInputEvent(
- helper_.tick_clock()->NowTicks());
+ helper_.task_queue_manager_delegate()->NowTicks());
}
}
@@ -567,7 +568,7 @@ void RendererSchedulerImpl::UpdatePolicyLocked(UpdateType update_type) {
if (helper_.IsShutdown())
return;
- base::TimeTicks now = helper_.tick_clock()->NowTicks();
+ base::TimeTicks now = helper_.task_queue_manager_delegate()->NowTicks();
policy_may_need_update_.SetWhileLocked(false);
base::TimeDelta expected_use_case_duration;
@@ -826,7 +827,7 @@ RendererSchedulerImpl::AsValueLocked(base::TimeTicks optional_now) const {
any_thread_lock_.AssertAcquired();
if (optional_now.is_null())
- optional_now = helper_.tick_clock()->NowTicks();
+ optional_now = helper_.task_queue_manager_delegate()->NowTicks();
scoped_refptr<base::trace_event::TracedValue> state =
new base::trace_event::TracedValue();
@@ -898,7 +899,8 @@ void RendererSchedulerImpl::OnIdlePeriodStarted() {
void RendererSchedulerImpl::OnIdlePeriodEnded() {
base::AutoLock lock(any_thread_lock_);
- AnyThread().last_idle_period_end_time = helper_.tick_clock()->NowTicks();
+ AnyThread().last_idle_period_end_time =
+ helper_.task_queue_manager_delegate()->NowTicks();
AnyThread().in_idle_period = false;
UpdatePolicyLocked(UpdateType::MAY_EARLY_OUT_IF_POLICY_UNCHANGED);
}
@@ -922,7 +924,7 @@ void RendererSchedulerImpl::OnNavigationStarted() {
"RendererSchedulerImpl::OnNavigationStarted");
base::AutoLock lock(any_thread_lock_);
AnyThread().rails_loading_priority_deadline =
- helper_.tick_clock()->NowTicks() +
+ helper_.task_queue_manager_delegate()->NowTicks() +
base::TimeDelta::FromMilliseconds(
kRailsInitialLoadingPrioritizationMillis);
ResetForNavigationLocked();
@@ -958,9 +960,19 @@ void RendererSchedulerImpl::ResetForNavigationLocked() {
MainThreadOnly().loading_task_cost_estimator.Clear();
MainThreadOnly().timer_task_cost_estimator.Clear();
MainThreadOnly().idle_time_estimator.Clear();
- AnyThread().user_model.Reset(helper_.tick_clock()->NowTicks());
+ AnyThread().user_model.Reset(
+ helper_.task_queue_manager_delegate()->NowTicks());
MainThreadOnly().have_seen_a_begin_main_frame = false;
UpdatePolicyLocked(UpdateType::MAY_EARLY_OUT_IF_POLICY_UNCHANGED);
}
+double RendererSchedulerImpl::currentTime() const {
+ return helper_.task_queue_manager_delegate()->currentTime();
+}
+
+double RendererSchedulerImpl::monotonicallyIncreasingTime() const {
+ return helper_.task_queue_manager_delegate()->NowTicks().ToInternalValue() /
+ static_cast<double>(base::Time::kMicrosecondsPerSecond);
+}
+
} // namespace scheduler

Powered by Google App Engine
This is Rietveld 408576698