pending_task.cc 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright (c) 2011 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "base/pending_task.h"
  5. namespace base {
  6. PendingTask::PendingTask() = default;
  7. PendingTask::PendingTask(const Location& posted_from,
  8. OnceClosure task,
  9. TimeTicks queue_time,
  10. TimeTicks delayed_run_time,
  11. TimeDelta leeway,
  12. subtle::DelayPolicy delay_policy)
  13. : task(std::move(task)),
  14. posted_from(posted_from),
  15. queue_time(queue_time),
  16. delayed_run_time(delayed_run_time),
  17. leeway(leeway),
  18. delay_policy(delay_policy) {}
  19. PendingTask::PendingTask(PendingTask&& other) = default;
  20. PendingTask::~PendingTask() = default;
  21. PendingTask& PendingTask::operator=(PendingTask&& other) = default;
  22. TimeTicks PendingTask::GetDesiredExecutionTime() const {
  23. if (!delayed_run_time.is_null())
  24. return delayed_run_time;
  25. return queue_time;
  26. }
  27. TimeTicks PendingTask::earliest_delayed_run_time() const {
  28. DCHECK(!delayed_run_time.is_null());
  29. if (delay_policy == subtle::DelayPolicy::kFlexiblePreferEarly)
  30. return delayed_run_time - leeway;
  31. return delayed_run_time;
  32. }
  33. TimeTicks PendingTask::latest_delayed_run_time() const {
  34. DCHECK(!delayed_run_time.is_null());
  35. if (delay_policy == subtle::DelayPolicy::kFlexibleNoSooner)
  36. return delayed_run_time + leeway;
  37. return delayed_run_time;
  38. }
  39. } // namespace base