| // Copyright 2011 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include"base/pending_task.h" |
| |
| #include"base/task/task_features.h" |
| |
| namespace base{ |
| |
| TaskMetadata::TaskMetadata()=default; |
| |
| TaskMetadata::TaskMetadata(constLocation& posted_from, |
| TimeTicks queue_time, |
| TimeTicks delayed_run_time, |
| TimeDelta leeway, |
| subtle::DelayPolicy delay_policy) |
| : posted_from(posted_from), |
| queue_time(queue_time), |
| delayed_run_time(delayed_run_time), |
| leeway(leeway), |
| delay_policy(delay_policy){} |
| |
| TaskMetadata::TaskMetadata(TaskMetadata&& other)=default; |
| TaskMetadata::TaskMetadata(constTaskMetadata& other)=default; |
| |
| TaskMetadata::~TaskMetadata()=default; |
| |
| TaskMetadata&TaskMetadata::operator=(TaskMetadata&& other)=default; |
| TaskMetadata&TaskMetadata::operator=(constTaskMetadata& other)=default; |
| |
| PendingTask::PendingTask()=default; |
| |
| PendingTask::PendingTask(constLocation& posted_from, |
| OnceClosure task, |
| TimeTicks queue_time, |
| TimeTicks delayed_run_time, |
| TimeDelta leeway, |
| subtle::DelayPolicy delay_policy) |
| :TaskMetadata(posted_from, |
| queue_time, |
| delayed_run_time, |
| leeway, |
| delay_policy), |
| task(std::move(task)){} |
| |
| PendingTask::PendingTask(constTaskMetadata& metadata,OnceClosure task) |
| :TaskMetadata(metadata), task(std::move(task)){} |
| |
| PendingTask::PendingTask(PendingTask&& other)=default; |
| |
| PendingTask::~PendingTask()=default; |
| |
| PendingTask&PendingTask::operator=(PendingTask&& other)=default; |
| |
| TimeTicksTaskMetadata::GetDesiredExecutionTime()const{ |
| if(!delayed_run_time.is_null()){ |
| return delayed_run_time; |
| } |
| return queue_time; |
| } |
| |
| TimeTicksTaskMetadata::earliest_delayed_run_time()const{ |
| DCHECK(!delayed_run_time.is_null()); |
| if(delay_policy== subtle::DelayPolicy::kFlexiblePreferEarly){ |
| return delayed_run_time- leeway; |
| } |
| return delayed_run_time; |
| } |
| |
| TimeTicksTaskMetadata::latest_delayed_run_time()const{ |
| DCHECK(!delayed_run_time.is_null()); |
| if(delay_policy== subtle::DelayPolicy::kFlexibleNoSooner){ |
| return delayed_run_time+ leeway; |
| } |
| return delayed_run_time; |
| } |
| |
| }// namespace base |