Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Unified Diff: components/autofill/content/renderer/form_autofill_util.cc

Issue 667043002: Add a flag to ignore autocomplete="off" for Autofill. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git/+/master
Patch Set: about:flags Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 |
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))

Powered by Google App Engine
This is Rietveld 408576698