|  | // Copyright 2021 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/ash/crosapi/chrome_app_kiosk_service_ash.h" | 
|  |  | 
|  | #include "base/logging.h" | 
|  | #include "chromeos/crosapi/mojom/chrome_app_kiosk_service.mojom.h" | 
|  |  | 
|  | namespace crosapi { | 
|  |  | 
|  | ChromeAppKioskServiceAsh::ChromeAppKioskServiceAsh() = default; | 
|  | ChromeAppKioskServiceAsh::~ChromeAppKioskServiceAsh() = default; | 
|  |  | 
|  | void ChromeAppKioskServiceAsh::BindReceiver( | 
|  | mojo::PendingReceiver<mojom::ChromeAppKioskService> pending_receiver) { | 
|  | receivers_.Add(this, std::move(pending_receiver)); | 
|  | } | 
|  |  | 
|  | void ChromeAppKioskServiceAsh::BindLaunchController( | 
|  | mojo::PendingRemote<mojom::ChromeKioskLaunchController> launch_controller) { | 
|  | launch_controllers_.Add(std::move(launch_controller)); | 
|  | } | 
|  |  | 
|  | void ChromeAppKioskServiceAsh::InstallKioskApp( | 
|  | const mojom::AppInstallParams& params, | 
|  | mojom::ChromeKioskLaunchController::InstallKioskAppCallback callback) { | 
|  | if (!GetController()) { | 
|  | std::move(callback).Run(mojom::ChromeKioskInstallResult::kUnknown); | 
|  | return; | 
|  | } | 
|  |  | 
|  | GetController()->InstallKioskApp(params.Clone(), std::move(callback)); | 
|  | } | 
|  |  | 
|  | void ChromeAppKioskServiceAsh::LaunchKioskApp( | 
|  | std::string app_id, | 
|  | bool is_network_ready, | 
|  | mojom::ChromeKioskLaunchController::LaunchKioskAppCallback callback) { | 
|  | if (!GetController()) { | 
|  | std::move(callback).Run(mojom::ChromeKioskLaunchResult::kUnknown); | 
|  | return; | 
|  | } | 
|  |  | 
|  | GetController()->LaunchKioskApp(app_id, is_network_ready, | 
|  | std::move(callback)); | 
|  | } | 
|  |  | 
|  | mojom::ChromeKioskLaunchController* ChromeAppKioskServiceAsh::GetController() { | 
|  | if (launch_controllers_.empty()) { | 
|  | LOG(WARNING) << "Lacros installer has not been bound"; | 
|  | return nullptr; | 
|  | } | 
|  |  | 
|  | return launch_controllers_.begin()->get(); | 
|  | } | 
|  |  | 
|  | }  // namespace crosapi |