Chromium Code Reviews| 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..585a62e8a93cc62d018f3660e5e6696b9803de4c 100644 |
| --- a/chrome/browser/autofill/form_field.cc |
| +++ b/chrome/browser/autofill/form_field.cc |
| @@ -235,40 +235,48 @@ FormField* FormField::ParseFormField(AutofillScanner* scanner, bool is_ecml) { |
| } |
| // static |
| -bool FormField::ParseText(AutofillScanner* scanner, const string16& pattern) { |
| +bool FormField::ParseText(AutofillScanner* scanner, |
| + const string16& pattern, |
| + int match_type) { |
| const AutofillField* field; |
| - return ParseText(scanner, pattern, &field); |
| + return ParseText(scanner, pattern, match_type, &field); |
| } |
| // static |
| bool FormField::ParseText(AutofillScanner* scanner, |
| const string16& pattern, |
| + int match_type, |
| const AutofillField** dest) { |
| - return ParseText(scanner, pattern, dest, false); |
| + return ParseText(scanner, pattern, dest, match_type); |
| } |
| // static |
| bool FormField::ParseEmptyText(AutofillScanner* scanner, |
| const AutofillField** dest) { |
| - return ParseLabelText(scanner, ASCIIToUTF16("^$"), dest); |
| -} |
| - |
| -// static |
| -bool FormField::ParseLabelText(AutofillScanner* scanner, |
| - const string16& pattern, |
| - const AutofillField** dest) { |
| - return ParseText(scanner, pattern, dest, true); |
| + return ParseText(scanner, ASCIIToUTF16("^$"), |
| + MATCH_LABEL | MATCH_TEXT | MATCH_SELECT, dest); |
| } |
| // static |
| bool FormField::ParseText(AutofillScanner* scanner, |
| const string16& pattern, |
| const AutofillField** dest, |
| - bool match_label_only) { |
| + int match_type) { |
| if (scanner->IsEnd()) |
| return false; |
| const AutofillField* field = scanner->Cursor(); |
| + |
| + if (!(match_type & MATCH_SELECT) && |
| + field->form_control_type == ASCIIToUTF16("select-one")) |
| + return false; |
| + |
| + if (!(match_type & MATCH_TEXT) && |
| + field->form_control_type == ASCIIToUTF16("text")) |
|
Ilya Sherman
2011/05/14 06:59:12
What about 'email', 'tel', and so on? Are there a
honten.org
2011/05/14 07:30:05
Yeah, you are right.
I completely forgot HTML5 ta
honten.org
2011/05/14 07:41:20
As I used to did in form_manager, maybe we should
|
| + return false; |
| + |
| + bool match_label_only = (match_type & MATCH_LABEL) && |
| + !(match_type & MATCH_NAME); |
|
Ilya Sherman
2011/05/14 06:59:12
This computation doesn't seem right to me -- if MA
honten.org
2011/05/14 07:30:05
Actually, I wanted to refactor Match(), but it is
|
| if (Match(field, pattern, match_label_only)) { |
| if (dest) |
| *dest = field; |
| @@ -280,13 +288,11 @@ bool FormField::ParseText(AutofillScanner* scanner, |
| } |
| // static |
| -bool FormField::ParseLabelAndName(AutofillScanner* scanner, |
| - const string16& pattern, |
| - const AutofillField** dest) { |
| +bool FormField::ParseEmpty(AutofillScanner* scanner) { |
| + // TODO(jhawkins): Handle select fields. |
| + const string16 pattern(ASCIIToUTF16("^$")); |
| const AutofillField* field = scanner->Cursor(); |
| if (MatchLabel(field, pattern) && MatchName(field, pattern)) { |
| - if (dest) |
| - *dest = field; |
| scanner->Advance(); |
| return true; |
| } |
| @@ -295,12 +301,6 @@ bool FormField::ParseLabelAndName(AutofillScanner* scanner, |
| } |
| // static |
| -bool FormField::ParseEmpty(AutofillScanner* scanner) { |
| - // TODO(jhawkins): Handle select fields. |
| - return ParseLabelAndName(scanner, ASCIIToUTF16("^$"), NULL); |
| -} |
| - |
| -// static |
| bool FormField::Add(FieldTypeMap* field_type_map, |
| const AutofillField* field, |
| AutofillFieldType type) { |