1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // Copyright 2020 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef ASH_PUBLIC_CPP_WEBAUTHN_DIALOG_CONTROLLER_H_
- #define ASH_PUBLIC_CPP_WEBAUTHN_DIALOG_CONTROLLER_H_
- #include "ash/public/cpp/ash_public_export.h"
- #include "ash/public/cpp/in_session_auth_dialog_client.h"
- namespace aura {
- class Window;
- }
- namespace ash {
- // WebAuthNDialogController manages the webauthn auth dialog.
- class ASH_PUBLIC_EXPORT WebAuthNDialogController {
- public:
- // Callback for authentication checks. |success| true/false if auth
- // succeeded/failed, and |can_use_pin| indicates whether PIN can still be used
- // (not locked out) after the previous authentication.
- using OnAuthenticateCallback =
- base::OnceCallback<void(bool success, bool can_use_pin)>;
- // Callback for overall authentication flow result.
- using FinishCallback = base::OnceCallback<void(bool success)>;
- // Return the singleton instance.
- static WebAuthNDialogController* Get();
- // Sets the client that will handle authentication.
- virtual void SetClient(InSessionAuthDialogClient* client) = 0;
- // Displays the authentication dialog for the website/app name in |app_id|.
- virtual void ShowAuthenticationDialog(aura::Window* source_window,
- const std::string& origin_name,
- FinishCallback finish_callback) = 0;
- // Destroys the authentication dialog.
- virtual void DestroyAuthenticationDialog() = 0;
- // Takes a password or PIN and sends it to InSessionAuthDialogClient to
- // authenticate. The InSessionAuthDialogClient should already know the current
- // session's active user, so the user account is not provided here.
- virtual void AuthenticateUserWithPasswordOrPin(
- const std::string& password,
- bool authenticated_by_pin,
- OnAuthenticateCallback callback) = 0;
- // Requests ChromeOS to report fingerprint scan result through |callback|.
- virtual void AuthenticateUserWithFingerprint(
- base::OnceCallback<void(bool, FingerprintState)> callback) = 0;
- // Opens a help article in Chrome.
- virtual void OpenInSessionAuthHelpPage() = 0;
- // Cancels all operations and destroys the dialog.
- virtual void Cancel() = 0;
- // Checks whether there's at least one authentication method.
- virtual void CheckAvailability(
- FinishCallback on_availability_checked) const = 0;
- protected:
- WebAuthNDialogController();
- virtual ~WebAuthNDialogController();
- };
- } // namespace ash
- #endif // ASH_PUBLIC_CPP_WEBAUTHN_DIALOG_CONTROLLER_H_
|