| // Copyright 2017 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/webapps/browser/installable/installable_task_queue.h" |
| |
| #include <map> |
| #include <utility> |
| |
| #include "components/webapps/browser/installable/installable_data.h" |
| #include "third_party/blink/public/mojom/manifest/manifest.mojom.h" |
| |
| namespace webapps { |
| |
| InstallableTaskQueue::InstallableTaskQueue() = default; |
| |
| InstallableTaskQueue::~InstallableTaskQueue() = default; |
| |
| void InstallableTaskQueue::Add(std::unique_ptr<InstallableTask> task) { |
| tasks_.push_back(std::move(task)); |
| } |
| |
| bool InstallableTaskQueue::HasCurrent() const { |
| return !tasks_.empty(); |
| } |
| |
| InstallableTask& InstallableTaskQueue::Current() { |
| DCHECK(HasCurrent()); |
| return *tasks_.front().get(); |
| } |
| |
| void InstallableTaskQueue::Next() { |
| DCHECK(HasCurrent()); |
| tasks_.pop_front(); |
| } |
| |
| void InstallableTaskQueue::ResetWithError(InstallableStatusCode code) { |
| auto tasks = std::move(tasks_); |
| for (auto& task : tasks) { |
| task->ResetWithError(code); |
| } |
| } |
| |
| } // namespace webapps |