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
5#include "components/gcm_driver/gcm_delayed_task_controller.h"
6
7#include "base/logging.h"
8
9namespace gcm {
10
11GCMDelayedTaskController::GCMDelayedTaskController() : ready_(false) {
12}
13
14GCMDelayedTaskController::~GCMDelayedTaskController() {
15}
16
17void GCMDelayedTaskController::AddTask(const base::Closure& task) {
18  delayed_tasks_.push_back(task);
19}
20
21void GCMDelayedTaskController::SetReady() {
22  ready_ = true;
23  RunTasks();
24}
25
26bool GCMDelayedTaskController::CanRunTaskWithoutDelay() const {
27  return ready_;
28}
29
30void GCMDelayedTaskController::RunTasks() {
31  DCHECK(ready_);
32
33  for (size_t i = 0; i < delayed_tasks_.size(); ++i)
34    delayed_tasks_[i].Run();
35  delayed_tasks_.clear();
36}
37
38}  // namespace gcm
39