Index: chrome/browser/autofill/address_field.cc |
diff --git a/chrome/browser/autofill/address_field.cc b/chrome/browser/autofill/address_field.cc |
index 4624fa515ce2e8279e9cb88e09c9506e71942716..af5ee7843f1f607fb9dbbd0c0f9afd3cf5ac4a5f 100644 |
--- a/chrome/browser/autofill/address_field.cc |
+++ b/chrome/browser/autofill/address_field.cc |
@@ -85,8 +85,10 @@ AddressField* AddressField::Parse(AutofillScanner* scanner, bool is_ecml) { |
ParseZipCode(scanner, is_ecml, address_field.get()) || |
ParseCountry(scanner, is_ecml, address_field.get())) { |
continue; |
- } else if (ParseText(scanner, attention_ignored) || |
- ParseText(scanner, region_ignored)) { |
+ } else if (ParseText(scanner, attention_ignored, |
+ MATCH_NAME | MATCH_LABEL | MATCH_TEXT) || |
+ ParseText(scanner, region_ignored, |
+ MATCH_NAME | MATCH_LABEL | MATCH_TEXT)) { |
// We ignore the following: |
// * Attention. |
// * Province/Region/Other. |
@@ -166,7 +168,8 @@ bool AddressField::ParseCompany(AutofillScanner* scanner, |
pattern = l10n_util::GetStringUTF16(IDS_AUTOFILL_COMPANY_RE); |
} |
- return ParseText(scanner, pattern, &address_field->company_); |
+ return ParseText(scanner, pattern, MATCH_NAME | MATCH_LABEL | MATCH_TEXT, |
+ &address_field->company_); |
} |
// static |
@@ -187,15 +190,18 @@ bool AddressField::ParseAddressLines(AutofillScanner* scanner, |
string16 pattern; |
if (is_ecml) { |
pattern = GetEcmlPattern(kEcmlShipToAddress1, kEcmlBillToAddress1, '|'); |
- if (!ParseText(scanner, pattern, &address_field->address1_)) |
+ if (!ParseText(scanner, pattern, MATCH_NAME | MATCH_LABEL | MATCH_TEXT, |
+ &address_field->address1_)) |
return false; |
} else { |
pattern = l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_LINE_1_RE); |
string16 label_pattern = |
l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_LINE_1_LABEL_RE); |
- if (!ParseText(scanner, pattern, &address_field->address1_) && |
- !ParseLabelText(scanner, label_pattern, &address_field->address1_)) |
+ if (!ParseText(scanner, pattern, MATCH_NAME | MATCH_LABEL | MATCH_TEXT, |
+ &address_field->address1_) && |
+ !ParseText(scanner, label_pattern, MATCH_LABEL | MATCH_TEXT, |
+ &address_field->address1_)) |
return false; |
} |
@@ -205,25 +211,29 @@ bool AddressField::ParseAddressLines(AutofillScanner* scanner, |
if (is_ecml) { |
pattern = GetEcmlPattern(kEcmlShipToAddress2, kEcmlBillToAddress2, '|'); |
if (!ParseEmptyText(scanner, &address_field->address2_)) |
- ParseText(scanner, pattern, &address_field->address2_); |
+ ParseText(scanner, pattern, MATCH_NAME | MATCH_LABEL | MATCH_TEXT, |
+ &address_field->address2_); |
} else { |
pattern = l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_LINE_2_RE); |
string16 label_pattern = |
l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_LINE_1_LABEL_RE); |
if (!ParseEmptyText(scanner, &address_field->address2_) && |
- !ParseText(scanner, pattern, &address_field->address2_)) |
- ParseLabelText(scanner, label_pattern, &address_field->address2_); |
+ !ParseText(scanner, pattern, MATCH_NAME | MATCH_LABEL | MATCH_TEXT, |
+ &address_field->address2_)) |
+ ParseText(scanner, label_pattern, MATCH_LABEL | MATCH_TEXT, |
+ &address_field->address2_); |
} |
// Try for a third line, which we will promptly discard. |
if (address_field->address2_ != NULL) { |
if (is_ecml) { |
pattern = GetEcmlPattern(kEcmlShipToAddress3, kEcmlBillToAddress3, '|'); |
- ParseText(scanner, pattern); |
+ ParseText(scanner, pattern, MATCH_NAME | MATCH_LABEL | MATCH_TEXT); |
} else { |
pattern = l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_LINE_3_RE); |
if (!ParseEmptyText(scanner, NULL)) |
- ParseText(scanner, pattern, NULL); |
+ ParseText(scanner, pattern, |
+ MATCH_NAME | MATCH_LABEL | MATCH_TEXT, NULL); |
} |
} |
@@ -246,7 +256,9 @@ bool AddressField::ParseCountry(AutofillScanner* scanner, |
else |
pattern = l10n_util::GetStringUTF16(IDS_AUTOFILL_COUNTRY_RE); |
- return ParseText(scanner, pattern, &address_field->country_); |
+ return ParseText(scanner, pattern, |
+ MATCH_NAME | MATCH_LABEL | MATCH_TEXT | MATCH_SELECT, |
+ &address_field->country_); |
} |
// static |
@@ -285,7 +297,8 @@ bool AddressField::ParseZipCode(AutofillScanner* scanner, |
tempType = kGenericAddress; |
} |
- if (!ParseText(scanner, pattern, &address_field->zip_)) |
+ if (!ParseText(scanner, pattern, MATCH_NAME | MATCH_LABEL | MATCH_TEXT, |
+ &address_field->zip_)) |
return false; |
address_field->type_ = tempType; |
@@ -294,6 +307,7 @@ bool AddressField::ParseZipCode(AutofillScanner* scanner, |
// the substring "zip". |
ParseText(scanner, |
l10n_util::GetStringUTF16(IDS_AUTOFILL_ZIP_4_RE), |
+ MATCH_NAME | MATCH_LABEL | MATCH_TEXT, |
&address_field->zip4_); |
} |
@@ -315,7 +329,9 @@ bool AddressField::ParseCity(AutofillScanner* scanner, |
else |
pattern = l10n_util::GetStringUTF16(IDS_AUTOFILL_CITY_RE); |
- return ParseText(scanner, pattern, &address_field->city_); |
+ return ParseText(scanner, pattern, |
+ MATCH_NAME | MATCH_LABEL | MATCH_TEXT | MATCH_SELECT, |
+ &address_field->city_); |
} |
// static |
@@ -331,7 +347,9 @@ bool AddressField::ParseState(AutofillScanner* scanner, |
else |
pattern = l10n_util::GetStringUTF16(IDS_AUTOFILL_STATE_RE); |
- return ParseText(scanner, pattern, &address_field->state_); |
+ return ParseText(scanner, pattern, |
+ MATCH_NAME | MATCH_LABEL | MATCH_TEXT | MATCH_SELECT, |
+ &address_field->state_); |
} |
AddressType AddressField::AddressTypeFromText(const string16 &text) { |