Chromium Code Reviews| Index: components/autofill/content/renderer/form_autofill_util.cc |
| diff --git a/components/autofill/content/renderer/form_autofill_util.cc b/components/autofill/content/renderer/form_autofill_util.cc |
| index c6175c9f22729eb75d442d0be697a370eb8cfbb7..3d012094f99f628e8cc4e16cc99b08ad1282ac03 100644 |
| --- a/components/autofill/content/renderer/form_autofill_util.cc |
| +++ b/components/autofill/content/renderer/form_autofill_util.cc |
| @@ -60,11 +60,18 @@ enum FieldFilterMask { |
| FILTER_DISABLED_ELEMENTS = 1 << 0, |
| FILTER_READONLY_ELEMENTS = 1 << 1, |
| FILTER_NON_FOCUSABLE_ELEMENTS = 1 << 2, |
| - FILTER_ALL_NON_EDITIABLE_ELEMENTS = FILTER_DISABLED_ELEMENTS | |
| + FILTER_ALL_NON_EDITABLE_ELEMENTS = FILTER_DISABLED_ELEMENTS | |
|
Ilya Sherman
2014/10/22 00:00:39
nit: Please keep the equals signs aligned, and upd
Evan Stade
2014/10/22 21:52:33
Done.
|
| FILTER_READONLY_ELEMENTS | |
| FILTER_NON_FOCUSABLE_ELEMENTS, |
| }; |
| +RequirementsMask ExtractionRequirements() { |
| + return base::CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kIgnoreAutocompleteOffForAutofill) |
| + ? REQUIRE_NONE |
| + : REQUIRE_AUTOCOMPLETE; |
| +} |
| + |
| bool IsOptionElement(const WebElement& element) { |
| CR_DEFINE_STATIC_LOCAL(WebString, kOption, ("option")); |
| return element.hasHTMLTagName(kOption); |
| @@ -480,8 +487,8 @@ void ForEachMatchingFormField(const WebFormElement& form_element, |
| bool force_override, |
| Callback callback) { |
| std::vector<WebFormControlElement> control_elements; |
| - ExtractAutofillableElements(form_element, REQUIRE_AUTOCOMPLETE, |
| - &control_elements); |
| + ExtractAutofillableElements( |
| + form_element, ExtractionRequirements(), &control_elements); |
| if (control_elements.size() != data.fields.size()) { |
| // This case should be reachable only for pathological websites and tests, |
| @@ -1001,7 +1008,7 @@ void FillForm(const FormData& form, const WebFormControlElement& element) { |
| ForEachMatchingFormField(form_element, |
| element, |
| form, |
| - FILTER_ALL_NON_EDITIABLE_ELEMENTS, |
| + FILTER_ALL_NON_EDITABLE_ELEMENTS, |
| false, /* dont force override */ |
| &FillFormField); |
| } |
| @@ -1042,7 +1049,7 @@ void PreviewForm(const FormData& form, const WebFormControlElement& element) { |
| ForEachMatchingFormField(form_element, |
| element, |
| form, |
| - FILTER_ALL_NON_EDITIABLE_ELEMENTS, |
| + FILTER_ALL_NON_EDITABLE_ELEMENTS, |
| false, /* dont force override */ |
| &PreviewFormField); |
| } |
| @@ -1054,8 +1061,8 @@ bool ClearPreviewedFormWithElement(const WebFormControlElement& element, |
| return false; |
| std::vector<WebFormControlElement> control_elements; |
| - ExtractAutofillableElements(form_element, REQUIRE_AUTOCOMPLETE, |
| - &control_elements); |
| + ExtractAutofillableElements( |
| + form_element, ExtractionRequirements(), &control_elements); |
| for (size_t i = 0; i < control_elements.size(); ++i) { |
| // There might be unrelated elements in this form which have already been |
| // auto-filled. For example, the user might have already filled the address |
| @@ -1114,8 +1121,8 @@ bool FormWithElementIsAutofilled(const WebInputElement& element) { |
| return false; |
| std::vector<WebFormControlElement> control_elements; |
| - ExtractAutofillableElements(form_element, REQUIRE_AUTOCOMPLETE, |
| - &control_elements); |
| + ExtractAutofillableElements( |
| + form_element, ExtractionRequirements(), &control_elements); |
| for (size_t i = 0; i < control_elements.size(); ++i) { |
| WebInputElement* input_element = toWebInputElement(&control_elements[i]); |
| if (!IsAutofillableInputElement(input_element)) |