• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_PASSWORD_AUTOFILL_MANAGER_H_
6 #define COMPONENTS_AUTOFILL_CORE_BROWSER_PASSWORD_AUTOFILL_MANAGER_H_
7 
8 // This file was contains some repeated code from
9 // chrome/renderer/autofill/password_autofill_manager because as we move to the
10 // new Autofill UI we needs these functions in both the browser and renderer.
11 // Once the move is completed the repeated code in the renderer half should be
12 // removed.
13 // http://crbug.com/51644
14 
15 #include <map>
16 
17 #include "components/autofill/core/common/password_form_fill_data.h"
18 
19 namespace autofill {
20 
21 class AutofillDriver;
22 
23 // This class is responsible for filling password forms.
24 class PasswordAutofillManager {
25  public:
26   explicit PasswordAutofillManager(AutofillDriver* autofill_driver);
27   virtual ~PasswordAutofillManager();
28 
29   // Fills the password associated with user name |username|. Returns true if
30   // the username and password fields were filled, false otherwise.
31   bool DidAcceptAutofillSuggestion(const FormFieldData& field,
32                                    const base::string16& username);
33 
34   // Invoked when a password mapping is added.
35   void AddPasswordFormMapping(
36       const FormFieldData& username_element,
37       const PasswordFormFillData& password);
38 
39   // Invoked to clear any page specific cached values.
40   void Reset();
41 
42  private:
43   // TODO(csharp): Modify the AutofillExternalDeletegate code so that it can
44   // figure out if a entry is a password one without using this mapping.
45   // crbug.com/118601
46   typedef std::map<FormFieldData,
47                    PasswordFormFillData>
48       LoginToPasswordInfoMap;
49 
50   // Returns true if |current_username| matches a username for one of the
51   // login mappings in |password|.
52   bool WillFillUserNameAndPassword(
53       const base::string16& current_username,
54       const PasswordFormFillData& password);
55 
56   // Finds login information for a |node| that was previously filled.
57   bool FindLoginInfo(const FormFieldData& field,
58                      PasswordFormFillData* found_password);
59 
60   // The logins we have filled so far with their associated info.
61   LoginToPasswordInfoMap login_to_password_info_;
62 
63   // Provides driver-level context to the shared code of the component. Must
64   // outlive |this|.
65   AutofillDriver* const autofill_driver_;  // weak
66 
67   DISALLOW_COPY_AND_ASSIGN(PasswordAutofillManager);
68 };
69 
70 }  // namespace autofill
71 
72 #endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_PASSWORD_AUTOFILL_MANAGER_H_
73