Index: chrome/browser/autofill/form_field.cc |
diff --git a/chrome/browser/autofill/form_field.cc b/chrome/browser/autofill/form_field.cc |
index b8f941bbace5e5027199d471979a97d707da5a15..acf72aeed1a46b999f409d1a431bb839e928dd4b 100644 |
--- a/chrome/browser/autofill/form_field.cc |
+++ b/chrome/browser/autofill/form_field.cc |
@@ -45,6 +45,10 @@ bool IsSelectField(const std::string& type) { |
return type == "select-one"; |
} |
+bool IsCheckable(const AutofillField* field) { |
+ return field->is_checkable; |
+} |
+ |
} // namespace |
// static |
@@ -54,6 +58,13 @@ void FormField::ParseFormFields(const std::vector<AutofillField*>& fields, |
std::vector<const AutofillField*> remaining_fields(fields.size()); |
std::copy(fields.begin(), fields.end(), remaining_fields.begin()); |
+ // Ignore checkable fields as they interfere with parsers assuming context. |
+ // Eg., while parsing address, "Is PO box" checkbox after ADDRESS_LINE1 |
+ // interferes with correctly understanding ADDRESS_LINE2. |
+ remaining_fields.erase( |
+ remove_if(remaining_fields.begin(), remaining_fields.end(), IsCheckable), |
+ remaining_fields.end()); |
+ |
const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
bool parse_new_field_types = |
command_line.HasSwitch(switches::kEnableNewAutofillHeuristics); |