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 756416e142dbe5008711b3f87b56d4b43bd8dd7c..30c022e6ee0f5a92676c7376c4e4ee646ff4406f 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 |
@@ -218,9 +218,10 @@ |
void TaskQueueManager::MaybeScheduleDelayedWork( |
const tracked_objects::Location& from_here, |
- LazyNow* lazy_now, |
- base::TimeTicks run_time) { |
- DCHECK(main_thread_checker_.CalledOnValidThread()); |
+ base::TimeTicks now, |
+ base::TimeDelta delay) { |
+ DCHECK(main_thread_checker_.CalledOnValidThread()); |
+ DCHECK_GE(delay, base::TimeDelta()); |
{ |
base::AutoLock lock(any_thread_lock_); |
@@ -235,29 +236,17 @@ |
} |
// De-duplicate DoWork posts. |
+ base::TimeTicks run_time = now + delay; |
if (next_delayed_do_work_ <= run_time && !next_delayed_do_work_.is_null()) |
return; |
- cancelable_delayed_do_work_closure_.Reset(delayed_do_work_closure_); |
- |
- base::TimeDelta delay = |
- std::max(base::TimeDelta(), run_time - lazy_now->Now()); |
- next_delayed_do_work_ = lazy_now->Now() + delay; |
- |
TRACE_EVENT1(tracing_category_, "MaybeScheduleDelayedWorkInternal", |
"delay_ms", delay.InMillisecondsF()); |
+ cancelable_delayed_do_work_closure_.Reset(delayed_do_work_closure_); |
+ next_delayed_do_work_ = run_time; |
delegate_->PostDelayedTask( |
from_here, cancelable_delayed_do_work_closure_.callback(), delay); |
-} |
- |
-void TaskQueueManager::CancelDelayedWork(base::TimeTicks run_time) { |
- DCHECK(main_thread_checker_.CalledOnValidThread()); |
- if (next_delayed_do_work_ != run_time) |
- return; |
- |
- cancelable_delayed_do_work_closure_.Cancel(); |
- next_delayed_do_work_ = base::TimeTicks(); |
} |
void TaskQueueManager::DoWork(bool delayed) { |