blob: 0151c8757dc6fbcf49ded248ea60ebf7e9fcceb6 [file] [log] [blame]
// Copyright 2017 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 <utility>
#include "chrome/browser/installable/installable_task_queue.h"
InstallableTask::InstallableTask() = default;
InstallableTask::InstallableTask(const InstallableParams& params,
InstallableCallback callback)
: params(params), callback(std::move(callback)) {}
InstallableTask::~InstallableTask() = default;
InstallableTask::InstallableTask(InstallableTask&& other) = default;
InstallableTask& InstallableTask::operator=(InstallableTask&& other) = default;
InstallableTaskQueue::InstallableTaskQueue() = default;
InstallableTaskQueue::~InstallableTaskQueue() = default;
void InstallableTaskQueue::Add(InstallableTask task) {
tasks_.push_back(std::move(task));
}
void InstallableTaskQueue::PauseCurrent() {
DCHECK(HasCurrent());
paused_tasks_.push_back(std::move(Current()));
Next();
}
void InstallableTaskQueue::UnpauseAll() {
while (!paused_tasks_.empty()) {
Add(std::move(paused_tasks_.front()));
paused_tasks_.pop_front();
}
}
bool InstallableTaskQueue::HasCurrent() const {
return !tasks_.empty();
}
bool InstallableTaskQueue::HasPaused() const {
return !paused_tasks_.empty();
}
InstallableTask& InstallableTaskQueue::Current() {
DCHECK(HasCurrent());
return tasks_.front();
}
void InstallableTaskQueue::Next() {
DCHECK(HasCurrent());
tasks_.pop_front();
}
void InstallableTaskQueue::Reset() {
tasks_.clear();
paused_tasks_.clear();
}