| 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) {
|
|
|