// Copyright 2023 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/web_kiosk_service_ash.h"
#include <optional>
#include "base/logging.h"
#include "chromeos/crosapi/mojom/web_kiosk_service.mojom.h"
namespace crosapi {
WebKioskServiceAsh::WebKioskServiceAsh() = default;
WebKioskServiceAsh::~WebKioskServiceAsh() = default;
void WebKioskServiceAsh::BindReceiver(
mojo::PendingReceiver<mojom::WebKioskService> pending_receiver) {
receivers_.Add(this, std::move(pending_receiver));
}
void WebKioskServiceAsh::BindInstaller(
mojo::PendingRemote<mojom::WebKioskInstaller> installer) {
installers_.Add(std::move(installer));
}
void WebKioskServiceAsh::GetWebKioskInstallState(
const GURL& url,
mojom::WebKioskInstaller::GetWebKioskInstallStateCallback callback) {
if (!GetInstaller()) {
LOG(WARNING) << "WebKioskInstallController not present";
std::move(callback).Run(mojom::WebKioskInstallState::kUnknown, "");
return;
}
GetInstaller()->GetWebKioskInstallState(url, std::move(callback));
}
void WebKioskServiceAsh::InstallWebKiosk(
const GURL& url,
mojom::WebKioskInstaller::InstallWebKioskCallback callback) {
if (!GetInstaller()) {
LOG(WARNING) << "WebKioskInstallController not present";
std::move(callback).Run(std::nullopt);
return;
}
GetInstaller()->InstallWebKiosk(url, std::move(callback));
}
mojom::WebKioskInstaller* WebKioskServiceAsh::GetInstaller() {
if (installers_.empty()) {
LOG(WARNING) << "Lacros installer has not been bound";
return nullptr;
}
return installers_.begin()->get();
}
} // namespace crosapi