// Copyright 2015 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_UI_PASSWORDS_PASSWORDS_MODEL_DELEGATE_H_ #define CHROME_BROWSER_UI_PASSWORDS_PASSWORDS_MODEL_DELEGATE_H_ #include <vector> #include "components/password_manager/core/common/credential_manager_types.h" #include "components/password_manager/core/common/password_manager_ui.h" namespace autofill { struct PasswordForm; } namespace content { class WebContents; } namespace password_manager { struct InteractionsStats; } class GURL; // An interface for ManagePasswordsBubbleModel implemented by // ManagePasswordsUIController. Allows to retrieve the current state of the tab // and notify about user actions. class PasswordsModelDelegate { public: // Returns the URL of the site the current forms are retrieved for. virtual const GURL& GetOrigin() const = 0; // Returns the current tab state. virtual password_manager::ui::State GetState() const = 0; // Returns the pending password in PENDING_PASSWORD_STATE and // PENDING_PASSWORD_UPDATE_STATE, the saved password in CONFIRMATION_STATE, // the returned credential in AUTO_SIGNIN_STATE. virtual const autofill::PasswordForm& GetPendingPassword() const = 0; // True if the password for previously stored account was overridden, i.e. in // newly submitted form the password is different from stored one. virtual bool IsPasswordOverridden() const = 0; // Returns current local forms for the current page. virtual const std::vector<const autofill::PasswordForm*>& GetCurrentForms() const = 0; // Returns possible identity provider's credentials for the current site. virtual const std::vector<const autofill::PasswordForm*>& GetFederatedForms() const = 0; // For PENDING_PASSWORD_STATE state returns the current statistics for // the pending username. virtual password_manager::InteractionsStats* GetCurrentInteractionStats() const = 0; // Called from the model when the bubble is displayed. virtual void OnBubbleShown() = 0; // Called from the model when the bubble is hidden. virtual void OnBubbleHidden() = 0; // Called when the user didn't interact with the Update UI. virtual void OnNoInteractionOnUpdate() = 0; // Called when the user chose not to update password. virtual void OnNopeUpdateClicked() = 0; // Called from the model when the user chooses to never save passwords. virtual void NeverSavePassword() = 0; // Called from the model when the user chooses to save a password. virtual void SavePassword() = 0; // Called from the model when the user chooses to update a password. virtual void UpdatePassword(const autofill::PasswordForm& password_form) = 0; // Called from the dialog controller when the user chooses a credential. // Everything is passed by value because the controller can be destroyed // inside the method. virtual void ChooseCredential( autofill::PasswordForm form, password_manager::CredentialType credential_type) = 0; // Open a new tab pointing to passwords.google.com. virtual void NavigateToExternalPasswordManager() = 0; // Open a new tab, pointing to the Smart Lock help article. virtual void NavigateToSmartLockHelpPage() = 0; // Open a new tab, pointing to the password manager settings page. virtual void NavigateToPasswordManagerSettingsPage() = 0; // Called from the dialog controller when the dialog is hidden. virtual void OnDialogHidden() = 0; protected: virtual ~PasswordsModelDelegate() = default; }; // Returns ManagePasswordsUIController instance for |contents| PasswordsModelDelegate* PasswordsModelDelegateFromWebContents( content::WebContents* web_contents); #endif // CHROME_BROWSER_UI_PASSWORDS_PASSWORDS_MODEL_DELEGATE_H_