| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/web_applications/commands/internal/callback_command.h" |
| |
| #include <utility> |
| |
| #include "chrome/browser/web_applications/locks/all_apps_lock.h" |
| #include "chrome/browser/web_applications/locks/app_lock.h" |
| #include "chrome/browser/web_applications/locks/noop_lock.h" |
| #include "chrome/browser/web_applications/locks/shared_web_contents_lock.h" |
| #include "chrome/browser/web_applications/locks/shared_web_contents_with_app_lock.h" |
| |
| namespace web_app::internal { |
| |
| template <typename LockType> |
| CallbackCommand<LockType>::CallbackCommand( |
| const std::string& name, |
| DescriptionType lock_description, |
| CallbackType callback_closure, |
| CompletionCallbackType completion_callback) |
| : web_app::WebAppCommand<LockType>(name, |
| std::move(lock_description), |
| std::move(completion_callback)), |
| callback_(std::move(callback_closure)) {} |
| |
| template <typename LockType> |
| CallbackCommand<LockType>::~CallbackCommand() = default; |
| |
| template <typename LockType> |
| void CallbackCommand<LockType>::StartWithLock(std::unique_ptr<LockType> lock) { |
| std::move(callback_).Run(*lock, |
| internal::CommandBase::GetMutableDebugValue()); |
| WebAppCommand<LockType>::CompleteAndSelfDestruct(CommandResult::kSuccess); |
| return; |
| } |
| |
| template class CallbackCommand<NoopLock>; |
| template class CallbackCommand<SharedWebContentsLock>; |
| template class CallbackCommand<AppLock>; |
| template class CallbackCommand<SharedWebContentsWithAppLock>; |
| template class CallbackCommand<AllAppsLock>; |
| |
| } // namespace web_app::internal |