blob: 7396330bdfecfcd0abd675fb49a444951fda8bc6 [file] [log] [blame]
fgorski05d507c2014-09-10 17:28:101// 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
5#include "components/gcm_driver/gcm_delayed_task_controller.h"
6
avi26062922015-12-26 00:14:187#include <stddef.h>
8
fgorski05d507c2014-09-10 17:28:109#include "base/logging.h"
10
11namespace gcm {
12
13GCMDelayedTaskController::GCMDelayedTaskController() : ready_(false) {
14}
15
danakjb534bf72019-05-02 17:10:1416GCMDelayedTaskController::~GCMDelayedTaskController() = default;
fgorski05d507c2014-09-10 17:28:1017
danakjb534bf72019-05-02 17:10:1418void GCMDelayedTaskController::AddTask(base::OnceClosure task) {
19 delayed_tasks_.push_back(std::move(task));
fgorski05d507c2014-09-10 17:28:1020}
21
22void GCMDelayedTaskController::SetReady() {
23 ready_ = true;
24 RunTasks();
25}
26
27bool GCMDelayedTaskController::CanRunTaskWithoutDelay() const {
28 return ready_;
29}
30
31void GCMDelayedTaskController::RunTasks() {
32 DCHECK(ready_);
33
34 for (size_t i = 0; i < delayed_tasks_.size(); ++i)
danakjb534bf72019-05-02 17:10:1435 std::move(delayed_tasks_[i]).Run();
fgorski05d507c2014-09-10 17:28:1036 delayed_tasks_.clear();
37}
38
39} // namespace gcm