blob: c8374dc55ad69ba5d1d2b740c2d0a2f28b865a90 [file] [log] [blame] [edit]
// 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.
#ifndef CHROMEOS_COMPONENTS_WEBAUTHN_WEBAUTHN_REQUEST_REGISTRAR_H_
#define CHROMEOS_COMPONENTS_WEBAUTHN_WEBAUTHN_REQUEST_REGISTRAR_H_
#include <stdint.h>
#include <string>
#include "base/component_export.h"
#include "base/functional/callback_forward.h"
namespace aura {
class Window;
}
namespace chromeos {
namespace webauthn {
// Provides service to associate webauthn request ids with windows.
class COMPONENT_EXPORT(CHROMEOS_WEBAUTHN) WebAuthnRequestRegistrar {
public:
// Returns the singleton instance.
static WebAuthnRequestRegistrar* Get();
// Returns a callback to generate request id for |window|. The callback is
// not thread-safe, and must be invoked from the browser UI thread only.
using GenerateRequestIdCallback = base::RepeatingCallback<std::string()>;
virtual GenerateRequestIdCallback GetRegisterCallback(
aura::Window* window) = 0;
// Returns the window that was registered with |request_id|, or nullptr if no
// such window.
virtual aura::Window* GetWindowForRequestId(std::string request_id) = 0;
protected:
WebAuthnRequestRegistrar();
virtual ~WebAuthnRequestRegistrar();
};
} // namespace webauthn
} // namespace chromeos
#endif // CHROMEOS_COMPONENTS_WEBAUTHN_WEBAUTHN_REQUEST_REGISTRAR_H_