Index: chrome/browser/autofill/form_field.cc |
diff --git a/chrome/browser/autofill/form_field.cc b/chrome/browser/autofill/form_field.cc |
index 926d3409a746e8d02d2f319a3f2cb99da3cefb38..df0ef5bff196282f112ae89fa04d62a7d7a2b700 100644 |
--- a/chrome/browser/autofill/form_field.cc |
+++ b/chrome/browser/autofill/form_field.cc |
@@ -235,14 +235,14 @@ FormField* FormField::ParseFormField(AutofillScanner* scanner, bool is_ecml) { |
} |
// static |
-bool FormField::ParseText(AutofillScanner* scanner, const string16& pattern) { |
+bool FormField::ParseText(AutofillScanner* scanner, const Pattern& pattern) { |
const AutofillField* field; |
return ParseText(scanner, pattern, &field); |
} |
// static |
bool FormField::ParseText(AutofillScanner* scanner, |
- const string16& pattern, |
+ const Pattern& pattern, |
const AutofillField** dest) { |
return ParseText(scanner, pattern, dest, false); |
} |
@@ -250,26 +250,31 @@ bool FormField::ParseText(AutofillScanner* scanner, |
// static |
bool FormField::ParseEmptyText(AutofillScanner* scanner, |
const AutofillField** dest) { |
- return ParseLabelText(scanner, ASCIIToUTF16("^$"), dest); |
+ return ParseLabelText(scanner, Pattern(ASCIIToUTF16("^$")), dest); |
} |
// static |
bool FormField::ParseLabelText(AutofillScanner* scanner, |
- const string16& pattern, |
+ const Pattern& pattern, |
const AutofillField** dest) { |
return ParseText(scanner, pattern, dest, true); |
} |
// static |
bool FormField::ParseText(AutofillScanner* scanner, |
- const string16& pattern, |
+ const Pattern& pattern, |
const AutofillField** dest, |
bool match_label_only) { |
if (scanner->IsEnd()) |
return false; |
const AutofillField* field = scanner->Cursor(); |
- if (Match(field, pattern, match_label_only)) { |
+ |
+ if (!pattern.select_one_is_ok && |
+ field->form_control_type == ASCIIToUTF16("select-one")) |
+ return false; |
+ |
+ if (Match(field, pattern.pattern, match_label_only)) { |
if (dest) |
*dest = field; |
scanner->Advance(); |