gcm_delayed_task_controller.cc 913 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. // Copyright 2014 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 "components/gcm_driver/gcm_delayed_task_controller.h"
  5. #include <stddef.h>
  6. #include "base/check.h"
  7. namespace gcm {
  8. GCMDelayedTaskController::GCMDelayedTaskController() : ready_(false) {
  9. }
  10. GCMDelayedTaskController::~GCMDelayedTaskController() = default;
  11. void GCMDelayedTaskController::AddTask(base::OnceClosure task) {
  12. delayed_tasks_.push_back(std::move(task));
  13. }
  14. void GCMDelayedTaskController::SetReady() {
  15. ready_ = true;
  16. RunTasks();
  17. }
  18. bool GCMDelayedTaskController::CanRunTaskWithoutDelay() const {
  19. return ready_;
  20. }
  21. void GCMDelayedTaskController::RunTasks() {
  22. DCHECK(ready_);
  23. for (size_t i = 0; i < delayed_tasks_.size(); ++i)
  24. std::move(delayed_tasks_[i]).Run();
  25. delayed_tasks_.clear();
  26. }
  27. } // namespace gcm