diff options
Diffstat (limited to 'chromium/components/password_manager/core/browser/credential_manager_impl.h')
-rw-r--r-- | chromium/components/password_manager/core/browser/credential_manager_impl.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/chromium/components/password_manager/core/browser/credential_manager_impl.h b/chromium/components/password_manager/core/browser/credential_manager_impl.h new file mode 100644 index 00000000000..24b45bdb099 --- /dev/null +++ b/chromium/components/password_manager/core/browser/credential_manager_impl.h @@ -0,0 +1,90 @@ +// Copyright 2017 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 COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_CREDENTIAL_MANAGER_IMPL_H_ +#define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_CREDENTIAL_MANAGER_IMPL_H_ + +#include "components/password_manager/core/browser/credential_manager_password_form_manager.h" +#include "components/password_manager/core/browser/credential_manager_pending_prevent_silent_access_task.h" +#include "components/password_manager/core/browser/credential_manager_pending_request_task.h" +#include "components/password_manager/core/common/credential_manager_types.h" +#include "components/prefs/pref_member.h" + +namespace password_manager { + +using StoreCallback = base::OnceCallback<void()>; +using PreventSilentAccessCallback = base::OnceCallback<void()>; +using GetCallback = + base::OnceCallback<void(CredentialManagerError, + const base::Optional<CredentialInfo>&)>; + +// Class implementing Credential Manager methods Store, PreventSilentAccess +// and Get in a platform independent way. Each method takes a callback as an +// argument and runs the callback with the result. Platform specific code +// and UI invocations are performed by PasswordManagerClient taken in +// constructor. +class CredentialManagerImpl + : public CredentialManagerPendingPreventSilentAccessTaskDelegate, + public CredentialManagerPendingRequestTaskDelegate, + public CredentialManagerPasswordFormManagerDelegate { + public: + explicit CredentialManagerImpl(PasswordManagerClient* client); + ~CredentialManagerImpl() override; + + void Store(const CredentialInfo& credential, StoreCallback callback); + void PreventSilentAccess(PreventSilentAccessCallback callback); + void Get(CredentialMediationRequirement mediation, + bool include_passwords, + const std::vector<GURL>& federations, + GetCallback callback); + + // CredentialManagerPendingRequestTaskDelegate: + // Exposed publicly for testing. + bool IsZeroClickAllowed() const override; + + // Returns FormDigest for the current URL. + // Exposed publicly for testing. + PasswordStore::FormDigest GetSynthesizedFormForOrigin() const; + + private: + // CredentialManagerPendingRequestTaskDelegate: + GURL GetOrigin() const override; + void SendCredential(const SendCredentialCallback& send_callback, + const CredentialInfo& info) override; + void SendPasswordForm(const SendCredentialCallback& send_callback, + CredentialMediationRequirement mediation, + const autofill::PasswordForm* form) override; + PasswordManagerClient* client() const override; + + // CredentialManagerPendingPreventSilentAccessTaskDelegate: + PasswordStore* GetPasswordStore() override; + void DoneRequiringUserMediation() override; + + // CredentialManagerPasswordFormManagerDelegate: + void OnProvisionalSaveComplete() override; + + GURL GetLastCommittedURL() const; + + PasswordManagerClient* client_; + + // Set to false to disable automatic signing in. + BooleanPrefMember auto_signin_enabled_; + + // Used to store or update a credential. Calls OnProvisionalSaveComplete + // on this delegate. + std::unique_ptr<CredentialManagerPasswordFormManager> form_manager_; + // Retrieves credentials from the PasswordStore and calls + // SendCredential on this delegate. SendCredential then runs a callback + // which was passed as an argument to Get(). + std::unique_ptr<CredentialManagerPendingRequestTask> pending_request_; + // Notifies the PasswordStore that the origin requires user mediation. + // Calls DoneRequiringUserMediation on this delegate. + std::unique_ptr<CredentialManagerPendingPreventSilentAccessTask> + pending_require_user_mediation_; + + DISALLOW_COPY_AND_ASSIGN(CredentialManagerImpl); +}; + +} // namespace password_manager + +#endif // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_CREDENTIAL_MANAGER_IMPL_H_ |