// Copyright 2013 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_AUTOFILL_CORE_BROWSER_PASSWORD_AUTOFILL_MANAGER_H_ #define COMPONENTS_AUTOFILL_CORE_BROWSER_PASSWORD_AUTOFILL_MANAGER_H_ // This file was contains some repeated code from // chrome/renderer/autofill/password_autofill_manager because as we move to the // new Autofill UI we needs these functions in both the browser and renderer. // Once the move is completed the repeated code in the renderer half should be // removed. // http://crbug.com/51644 #include <map> #include "components/autofill/core/common/password_form_fill_data.h" namespace autofill { class AutofillDriver; // This class is responsible for filling password forms. class PasswordAutofillManager { public: explicit PasswordAutofillManager(AutofillDriver* autofill_driver); virtual ~PasswordAutofillManager(); // Fills the password associated with user name |username|. Returns true if // the username and password fields were filled, false otherwise. bool DidAcceptAutofillSuggestion(const FormFieldData& field, const base::string16& username); // Invoked when a password mapping is added. void AddPasswordFormMapping( const FormFieldData& username_element, const PasswordFormFillData& password); // Invoked to clear any page specific cached values. void Reset(); private: // TODO(csharp): Modify the AutofillExternalDeletegate code so that it can // figure out if a entry is a password one without using this mapping. // crbug.com/118601 typedef std::map<FormFieldData, PasswordFormFillData> LoginToPasswordInfoMap; // Returns true if |current_username| matches a username for one of the // login mappings in |password|. bool WillFillUserNameAndPassword( const base::string16& current_username, const PasswordFormFillData& password); // Finds login information for a |node| that was previously filled. bool FindLoginInfo(const FormFieldData& field, PasswordFormFillData* found_password); // The logins we have filled so far with their associated info. LoginToPasswordInfoMap login_to_password_info_; // Provides driver-level context to the shared code of the component. Must // outlive |this|. AutofillDriver* const autofill_driver_; // weak DISALLOW_COPY_AND_ASSIGN(PasswordAutofillManager); }; } // namespace autofill #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_PASSWORD_AUTOFILL_MANAGER_H_