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 #include "components/autofill/content/renderer/password_form_conversion_utils.h" | 5 #include "components/autofill/content/renderer/password_form_conversion_utils.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/i18n/case_conversion.h" | 9 #include "base/i18n/case_conversion.h" |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 } | 131 } |
132 | 132 |
133 void PopulateSyntheticFormFromWebForm(const WebFormElement& web_form, | 133 void PopulateSyntheticFormFromWebForm(const WebFormElement& web_form, |
134 SyntheticForm* synthetic_form) { | 134 SyntheticForm* synthetic_form) { |
135 synthetic_form->control_elements = ExtractAutofillableElementsInForm( | 135 synthetic_form->control_elements = ExtractAutofillableElementsInForm( |
136 web_form); | 136 web_form); |
137 synthetic_form->action = web_form.action(); | 137 synthetic_form->action = web_form.action(); |
138 synthetic_form->document = web_form.document(); | 138 synthetic_form->document = web_form.document(); |
139 } | 139 } |
140 | 140 |
141 // Checks in a case-insensitive way if the autocomplete attribute for the given | |
142 // |element| is present and has the specified |value_in_lowercase|. | |
143 bool HasAutocompleteAttributeValue(const WebInputElement& element, | |
144 const char* value_in_lowercase) { | |
145 return base::LowerCaseEqualsASCII( | |
146 base::StringPiece16(element.getAttribute("autocomplete")), | |
147 value_in_lowercase); | |
148 } | |
149 | |
150 // Helper to determine which password is the main (current) one, and which is | 141 // Helper to determine which password is the main (current) one, and which is |
151 // the new password (e.g., on a sign-up or change password form), if any. | 142 // the new password (e.g., on a sign-up or change password form), if any. |
152 bool LocateSpecificPasswords(std::vector<WebInputElement> passwords, | 143 bool LocateSpecificPasswords(std::vector<WebInputElement> passwords, |
153 WebInputElement* current_password, | 144 WebInputElement* current_password, |
154 WebInputElement* new_password) { | 145 WebInputElement* new_password) { |
155 DCHECK(current_password && current_password->isNull()); | 146 DCHECK(current_password && current_password->isNull()); |
156 DCHECK(new_password && new_password->isNull()); | 147 DCHECK(new_password && new_password->isNull()); |
157 | 148 |
158 // First, look for elements marked with either autocomplete='current-password' | 149 // First, look for elements marked with either autocomplete='current-password' |
159 // or 'new-password' -- if we find any, take the hint, and treat the first of | 150 // or 'new-password' -- if we find any, take the hint, and treat the first of |
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
658 if (!GetPasswordForm(synthetic_form, password_form.get(), | 649 if (!GetPasswordForm(synthetic_form, password_form.get(), |
659 nonscript_modified_values, form_predictions)) | 650 nonscript_modified_values, form_predictions)) |
660 return scoped_ptr<PasswordForm>(); | 651 return scoped_ptr<PasswordForm>(); |
661 | 652 |
662 // No actual action on the form, so use the the origin as the action. | 653 // No actual action on the form, so use the the origin as the action. |
663 password_form->action = password_form->origin; | 654 password_form->action = password_form->origin; |
664 | 655 |
665 return password_form.Pass(); | 656 return password_form.Pass(); |
666 } | 657 } |
667 | 658 |
| 659 bool HasAutocompleteAttributeValue(const blink::WebInputElement& element, |
| 660 const char* value_in_lowercase) { |
| 661 return base::LowerCaseEqualsASCII( |
| 662 base::StringPiece16(element.getAttribute("autocomplete")), |
| 663 value_in_lowercase); |
| 664 } |
| 665 |
668 } // namespace autofill | 666 } // namespace autofill |
OLD | NEW |