| Index: components/autofill/core/browser/form_field.cc
|
| diff --git a/components/autofill/core/browser/form_field.cc b/components/autofill/core/browser/form_field.cc
|
| index 5ed4be60433deec6bd0dd63f201ee07d6890c971..7ea3ce4311ad4d409f71abbb872b0a801b2fbe44 100644
|
| --- a/components/autofill/core/browser/form_field.cc
|
| +++ b/components/autofill/core/browser/form_field.cc
|
| @@ -106,6 +106,40 @@ bool FormField::ParseFieldSpecifics(AutofillScanner* scanner,
|
| }
|
|
|
| // static
|
| +FormField::ParseNameLabelResult FormField::ParseNameAndLabelSeparately(
|
| + AutofillScanner* scanner,
|
| + const base::string16& pattern,
|
| + int match_type,
|
| + AutofillField** match) {
|
| + if (scanner->IsEnd())
|
| + return RESULT_MATCH_NONE;
|
| +
|
| + AutofillField* cur_match = nullptr;
|
| + size_t saved_cursor = scanner->SaveCursor();
|
| + bool parsed_name = ParseFieldSpecifics(scanner,
|
| + pattern,
|
| + match_type & ~MATCH_LABEL,
|
| + &cur_match);
|
| + scanner->RewindTo(saved_cursor);
|
| + bool parsed_label = ParseFieldSpecifics(scanner,
|
| + pattern,
|
| + match_type & ~MATCH_NAME,
|
| + &cur_match);
|
| + if (parsed_name && parsed_label) {
|
| + if (match)
|
| + *match = cur_match;
|
| + return RESULT_MATCH_NAME_LABEL;
|
| + }
|
| +
|
| + scanner->RewindTo(saved_cursor);
|
| + if (parsed_name)
|
| + return RESULT_MATCH_NAME;
|
| + if (parsed_label)
|
| + return RESULT_MATCH_LABEL;
|
| + return RESULT_MATCH_NONE;
|
| +}
|
| +
|
| +// static
|
| bool FormField::ParseEmptyLabel(AutofillScanner* scanner,
|
| AutofillField** match) {
|
| return ParseFieldSpecifics(scanner,
|
|
|