| // 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. | |
| #ifndef COMPONENTS_WEBAPPS_BROWSER_INSTALLABLE_INSTALLABLE_TASK_QUEUE_H_ | |
| #define COMPONENTS_WEBAPPS_BROWSER_INSTALLABLE_INSTALLABLE_TASK_QUEUE_H_ | |
| #include <deque> | |
| #include "components/webapps/browser/installable/installable_data.h" | |
| #include "components/webapps/browser/installable/installable_params.h" | |
| #include "components/webapps/browser/installable/installable_task.h" | |
| namespace webapps { | |
| // InstallableTaskQueue keeps track of pending tasks. | |
| class InstallableTaskQueue { | |
| public: | |
| InstallableTaskQueue(); | |
| ~InstallableTaskQueue(); | |
| // Adds task to the end of the active list of tasks to be processed. | |
| void Add(std::unique_ptr<InstallableTask> task); | |
| // Reports whether there are any tasks in the main list. | |
| bool HasCurrent() const; | |
| // Returns the currently active task. | |
| InstallableTask& Current(); | |
| // Advances to the next task. | |
| void Next(); | |
| // Clears all tasks from the main and paused list, and then calls the callback | |
| // on all of them with the given status code. | |
| void ResetWithError(InstallableStatusCode code); | |
| private: | |
| friend class InstallableManagerBrowserTest; | |
| friend class InstallableManagerOfflineCapabilityBrowserTest; | |
| // The list of <params, callback> pairs that have come from a call to | |
| // InstallableManager::GetData. | |
| std::deque<std::unique_ptr<InstallableTask>> tasks_; | |
| }; | |
| } // namespace webapps | |
| #endif // COMPONENTS_WEBAPPS_BROWSER_INSTALLABLE_INSTALLABLE_TASK_QUEUE_H_ |