| // Copyright 2018 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 CHROME_BROWSER_WEBAUTHN_OBSERVABLE_AUTHENTICATOR_LIST_H_ |
| #define CHROME_BROWSER_WEBAUTHN_OBSERVABLE_AUTHENTICATOR_LIST_H_ |
| |
| #include <stddef.h> |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/macros.h" |
| #include "base/strings/string_piece.h" |
| #include "chrome/browser/webauthn/authenticator_reference.h" |
| |
| class AuthenticatorListObserver; |
| |
| // List of AuthenticatorReference maintained by AuthenticatorRequestDialogModel |
| // that BleDeviceHoverListModel observes to add views to WebAuthN UI modal |
| // dialog views. |
| class ObservableAuthenticatorList { |
| public: |
| ObservableAuthenticatorList(); |
| ~ObservableAuthenticatorList(); |
| |
| void AddAuthenticator(AuthenticatorReference authenticator); |
| void RemoveAuthenticator(base::StringPiece authenticator_id); |
| void ChangeAuthenticatorId(base::StringPiece previous_id, std::string new_id); |
| void ChangeAuthenticatorPairingMode(base::StringPiece authenticator_id, |
| bool is_in_pairing_mode); |
| AuthenticatorReference* GetAuthenticator(base::StringPiece authenticator_id); |
| |
| void SetObserver(AuthenticatorListObserver* observer); |
| void RemoveObserver(); |
| |
| std::vector<AuthenticatorReference>& authenticator_list() { |
| return authenticator_list_; |
| } |
| |
| size_t size() const { return authenticator_list_.size(); } |
| |
| private: |
| using AuthenticatorListIterator = |
| std::vector<AuthenticatorReference>::iterator; |
| |
| AuthenticatorListIterator GetAuthenticatorIterator( |
| base::StringPiece authenticator_id); |
| |
| std::vector<AuthenticatorReference> authenticator_list_; |
| AuthenticatorListObserver* observer_ = nullptr; |
| |
| DISALLOW_COPY_AND_ASSIGN(ObservableAuthenticatorList); |
| }; |
| |
| #endif // CHROME_BROWSER_WEBAUTHN_OBSERVABLE_AUTHENTICATOR_LIST_H_ |