// Copyright 2022 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/lacros/webauthn_request_registrar_lacros.h"
#include <string>
#include "base/check_op.h"
#include "base/functional/bind.h"
#include "base/notreached.h"
#include "ui/aura/window.h"
#include "ui/base/class_property.h"
#include "ui/platform_window/platform_window.h"
#include "ui/views/widget/desktop_aura/desktop_window_tree_host_lacros.h"
WebAuthnRequestRegistrarLacros::WebAuthnRequestRegistrarLacros() = default;
WebAuthnRequestRegistrarLacros::~WebAuthnRequestRegistrarLacros() = default;
WebAuthnRequestRegistrarLacros::GenerateRequestIdCallback
WebAuthnRequestRegistrarLacros::GetRegisterCallback(aura::Window* window) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
if (!window) {
return base::BindRepeating([] { return std::string(); });
}
auto* host = views::DesktopWindowTreeHostLacros::From(window->GetHost());
if (!host) {
return base::BindRepeating([] { return std::string(); });
}
auto* platform_window = host->platform_window();
if (!platform_window) {
return base::BindRepeating([] { return std::string(); });
}
std::string unique_id = platform_window->GetWindowUniqueId();
return base::BindRepeating(
[](const std::string& unique_id) { return unique_id; }, unique_id);
}
// GetWindowForRequestId is not used in Lacros's WebAuthnRequestRegistrar:
// WebAuthnRequestRegistrar is now in charge of two things: assigning ids to
// windows and getting windows by assigned ids. In lacros we only need the first
// because the logic of getting windows by assigned ids is only needed in ash
// where we summon the dialog.
aura::Window* WebAuthnRequestRegistrarLacros::GetWindowForRequestId(
std::string request_id) {
NOTREACHED_IN_MIGRATION();
return nullptr;
}