blob: 7396330bdfecfcd0abd675fb49a444951fda8bc6 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/gcm_driver/gcm_delayed_task_controller.h"
#include <stddef.h>
#include "base/logging.h"
namespace gcm {
GCMDelayedTaskController::GCMDelayedTaskController() : ready_(false) {
}
GCMDelayedTaskController::~GCMDelayedTaskController() = default;
void GCMDelayedTaskController::AddTask(base::OnceClosure task) {
delayed_tasks_.push_back(std::move(task));
}
void GCMDelayedTaskController::SetReady() {
ready_ = true;
RunTasks();
}
bool GCMDelayedTaskController::CanRunTaskWithoutDelay() const {
return ready_;
}
void GCMDelayedTaskController::RunTasks() {
DCHECK(ready_);
for (size_t i = 0; i < delayed_tasks_.size(); ++i)
std::move(delayed_tasks_[i]).Run();
delayed_tasks_.clear();
}
} // namespace gcm