Chromium Code Reviews| Index: components/autofill/content/renderer/autofill_agent.cc |
| diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components/autofill/content/renderer/autofill_agent.cc |
| index 8a9350e9304bc369045479377850335096a0421e..7e31aecef4012dc200de1eac93f93e3758fc3ee5 100644 |
| --- a/components/autofill/content/renderer/autofill_agent.cc |
| +++ b/components/autofill/content/renderer/autofill_agent.cc |
| @@ -663,7 +663,8 @@ void AutofillAgent::QueryAutofillSuggestions( |
| const WebFormControlElement& element, |
| bool display_warning_if_disabled, |
| bool datalist_only) { |
| - if (!element.document().frame()) |
| + blink::WebDocument document = element.document(); |
| + if (!document.frame()) |
| return; |
| DCHECK(toWebInputElement(&element) || IsTextAreaElement(element)); |
| @@ -690,9 +691,26 @@ void AutofillAgent::QueryAutofillSuggestions( |
| FormFieldData field; |
| if (!FindFormAndFieldForFormControlElement(element, &form, &field, |
|
Evan Stade
2014/12/12 19:59:35
hmmm, why doesn't the unowned form just go in the
Lei Zhang
2014/12/12 22:06:23
FindFormAndFieldForFormControlElement() works on t
|
| requirements)) { |
| - // If we didn't find the cached form, at least let autocomplete have a shot |
| - // at providing suggestions. |
| - WebFormControlElementToFormField(element, EXTRACT_VALUE, &field); |
| + // No associated form element, try the form for unowned form elements. |
|
Evan Stade
2014/12/12 19:59:35
nit: s/form for/synthetic form for/
Lei Zhang
2014/12/12 22:06:23
Done.
|
| + FormData unowned_form; |
| + FormFieldData unowned_field; |
| + std::vector<WebElement> fieldsets; |
| + std::vector<WebFormControlElement> control_elements = |
| + GetUnownedAutofillableFormFieldElements(document.all(), &fieldsets); |
| + const ExtractMask extract_mask = |
|
Evan Stade
2014/12/12 19:59:35
nit: dislike this variable because it makes it see
Lei Zhang
2014/12/12 22:06:23
Done.
|
| + static_cast<ExtractMask>(EXTRACT_VALUE | EXTRACT_OPTIONS); |
| + if (UnownedFormElementsAndFieldSetsToFormData(fieldsets, control_elements, |
| + &element, document.url(), |
| + requirements, extract_mask, |
| + &unowned_form, |
| + &unowned_field)) { |
| + form = unowned_form; |
| + field = unowned_field; |
| + } else { |
| + // If we didn't find the cached form, at least let autocomplete have a |
| + // shot at providing suggestions. |
| + WebFormControlElementToFormField(element, EXTRACT_VALUE, &field); |
| + } |
| } |
| if (datalist_only) |
| field.should_autocomplete = false; |