OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef COMPONENTS_AUTOFILL_COMMON_PASSWORD_FORM_FILL_DATA_H_ | 5 #ifndef COMPONENTS_AUTOFILL_COMMON_PASSWORD_FORM_FILL_DATA_H_ |
6 #define COMPONENTS_AUTOFILL_COMMON_PASSWORD_FORM_FILL_DATA_H_ | 6 #define COMPONENTS_AUTOFILL_COMMON_PASSWORD_FORM_FILL_DATA_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 | 9 |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
11 #include "components/autofill/common/form_data.h" | 11 #include "components/autofill/common/form_data.h" |
12 #include "content/public/common/password_form.h" | 12 #include "content/public/common/password_form.h" |
13 | 13 |
14 namespace autofill { | 14 namespace autofill { |
15 | 15 |
16 // Helper struct for PasswordFormFillData | 16 // Helper struct for PasswordFormFillData |
17 struct UsernamesCollectionKey { | 17 struct UsernamesCollectionKey { |
18 UsernamesCollectionKey(); | 18 UsernamesCollectionKey(); |
19 ~UsernamesCollectionKey(); | 19 ~UsernamesCollectionKey(); |
20 | 20 |
21 // Defined so that this struct can be used as a key in a std::map. | 21 // Defined so that this struct can be used as a key in a std::map. |
22 bool operator<(const UsernamesCollectionKey& other) const; | 22 bool operator<(const UsernamesCollectionKey& other) const; |
23 | 23 |
24 base::string16 username; | 24 base::string16 username; |
25 base::string16 password; | 25 base::string16 password; |
26 }; | 26 }; |
27 | 27 |
| 28 struct PasswordAndRealm { |
| 29 base::string16 password; |
| 30 base::string16 realm; |
| 31 }; |
| 32 |
28 // Structure used for autofilling password forms. | 33 // Structure used for autofilling password forms. |
29 // basic_data identifies the HTML form on the page and preferred username/ | 34 // basic_data identifies the HTML form on the page and preferred username/ |
30 // password for login, while | 35 // password for login, while |
31 // additional_logins is a list of other matching user/pass pairs for the form. | 36 // preferred_realm the signon realm of the preferred user/pass pair. |
| 37 // additional_logins is a list of other matching username->PasswordAndRealm |
| 38 // pairs for the form. |
32 // other_possible_usernames is a list of possible usernames in the case where we | 39 // other_possible_usernames is a list of possible usernames in the case where we |
33 // aren't completely sure that the original saved username is correct. | 40 // aren't completely sure that the original saved username is correct. |
34 // This data is keyed by the saved username/password to ensure uniqueness, | 41 // This data is keyed by the saved username/password to ensure uniqueness, |
35 // though the username is not used. | 42 // though the username is not used. |
36 // wait_for_username tells us whether we need to wait for the user to enter | 43 // wait_for_username tells us whether we need to wait for the user to enter |
37 // a valid username before we autofill the password. By default, this is off | 44 // a valid username before we autofill the password. By default, this is off |
38 // unless the PasswordManager determined there is an additional risk | 45 // unless the PasswordManager determined there is an additional risk |
39 // associated with this form. This can happen, for example, if action URI's | 46 // associated with this form. This can happen, for example, if action URI's |
40 // of the observed form and our saved representation don't match up. | 47 // of the observed form and our saved representation don't match up. |
41 struct PasswordFormFillData { | 48 struct PasswordFormFillData { |
42 typedef std::map<base::string16, base::string16> LoginCollection; | 49 typedef std::map<base::string16, PasswordAndRealm> LoginCollection; |
43 typedef std::map<UsernamesCollectionKey, | 50 typedef std::map<UsernamesCollectionKey, |
44 std::vector<base::string16> > UsernamesCollection; | 51 std::vector<base::string16> > UsernamesCollection; |
45 | 52 |
46 FormData basic_data; | 53 FormData basic_data; |
| 54 base::string16 preferred_realm; |
47 LoginCollection additional_logins; | 55 LoginCollection additional_logins; |
48 UsernamesCollection other_possible_usernames; | 56 UsernamesCollection other_possible_usernames; |
49 bool wait_for_username; | 57 bool wait_for_username; |
50 PasswordFormFillData(); | 58 PasswordFormFillData(); |
51 ~PasswordFormFillData(); | 59 ~PasswordFormFillData(); |
52 }; | 60 }; |
53 | 61 |
54 // Create a FillData structure in preparation for autofilling a form, | 62 // Create a FillData structure in preparation for autofilling a form, |
55 // from basic_data identifying which form to fill, and a collection of | 63 // from basic_data identifying which form to fill, and a collection of |
56 // matching stored logins to use as username/password values. | 64 // matching stored logins to use as username/password values. |
57 // |preferred_match| should equal (address) one of matches. | 65 // |preferred_match| should equal (address) one of matches. |
58 // |wait_for_username_before_autofill| is true if we should not autofill | 66 // |wait_for_username_before_autofill| is true if we should not autofill |
59 // anything until the user typed in a valid username and blurred the field. | 67 // anything until the user typed in a valid username and blurred the field. |
60 // If |enable_possible_usernames| is true, we will populate possible_usernames | 68 // If |enable_possible_usernames| is true, we will populate possible_usernames |
61 // in |result|. | 69 // in |result|. |
62 void InitPasswordFormFillData( | 70 void InitPasswordFormFillData( |
63 const content::PasswordForm& form_on_page, | 71 const content::PasswordForm& form_on_page, |
64 const content::PasswordFormMap& matches, | 72 const content::PasswordFormMap& matches, |
65 const content::PasswordForm* const preferred_match, | 73 const content::PasswordForm* const preferred_match, |
66 bool wait_for_username_before_autofill, | 74 bool wait_for_username_before_autofill, |
67 bool enable_other_possible_usernames, | 75 bool enable_other_possible_usernames, |
68 PasswordFormFillData* result); | 76 PasswordFormFillData* result); |
69 | 77 |
70 } // namespace autofill | 78 } // namespace autofill |
71 | 79 |
72 #endif // COMPONENTS_AUTOFILL_COMMON_PASSWORD_FORM_FILL_DATA_H__ | 80 #endif // COMPONENTS_AUTOFILL_COMMON_PASSWORD_FORM_FILL_DATA_H__ |
OLD | NEW |