Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(125)

Unified Diff: chrome/browser/autofill/address_field.cc

Issue 6026010: Autofill heuristics regular expressions should be stored in external data files. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Nits Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/autofill/autofill_resources.grd » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/autofill/address_field.cc
diff --git a/chrome/browser/autofill/address_field.cc b/chrome/browser/autofill/address_field.cc
index ea7dea72236054ea4dfd7ba6ea1ace1b19823329..b2bef046f337c2f998b89fe3ab1e39a5689d6af3 100644
--- a/chrome/browser/autofill/address_field.cc
+++ b/chrome/browser/autofill/address_field.cc
@@ -4,12 +4,14 @@
#include "chrome/browser/autofill/address_field.h"
+#include "app/l10n_util.h"
#include "base/logging.h"
#include "base/scoped_ptr.h"
#include "base/string16.h"
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/autofill/autofill_field.h"
+#include "grit/autofill_resources.h"
bool AddressField::GetFieldInfo(FieldTypeMap* field_type_map) const {
AutoFillFieldType address_company;
@@ -90,6 +92,11 @@ AddressField* AddressField::Parse(
// it out.
address_field->is_ecml_ = is_ecml;
+ string16 attention_ignored =
+ l10n_util::GetStringUTF16(IDS_AUTOFILL_ATTENTION_IGNORED_RE);
+ string16 region_ignored =
+ l10n_util::GetStringUTF16(IDS_AUTOFILL_REGION_IGNORED_RE);
+
// Allow address fields to appear in any order.
while (true) {
if (ParseCompany(&q, is_ecml, address_field.get()) ||
@@ -99,8 +106,8 @@ AddressField* AddressField::Parse(
ParseZipCode(&q, is_ecml, address_field.get()) ||
ParseCountry(&q, is_ecml, address_field.get())) {
continue;
- } else if (ParseText(&q, ASCIIToUTF16("attention|attn.")) ||
- ParseText(&q, ASCIIToUTF16("province|region|other"))) {
+ } else if (ParseText(&q, attention_ignored) ||
+ ParseText(&q, region_ignored)) {
// We ignore the following:
// * Attention.
// * Province/Region/Other.
@@ -173,7 +180,7 @@ bool AddressField::ParseCompany(
pattern = GetEcmlPattern(kEcmlShipToCompanyName,
kEcmlBillToCompanyName, '|');
else
- pattern = ASCIIToUTF16("company|business name");
+ pattern = l10n_util::GetStringUTF16(IDS_AUTOFILL_COMPANY_RE);
if (!ParseText(iter, pattern, &address_field->company_))
return false;
@@ -198,14 +205,13 @@ bool AddressField::ParseAddressLines(
string16 pattern;
if (is_ecml) {
- pattern = GetEcmlPattern(kEcmlShipToAddress1,
- kEcmlBillToAddress1, '|');
+ pattern = GetEcmlPattern(kEcmlShipToAddress1, kEcmlBillToAddress1, '|');
if (!ParseText(iter, pattern, &address_field->address1_))
return false;
} else {
- pattern =
- ASCIIToUTF16("address.?line|address1|addr1|street");
- string16 label_pattern = ASCIIToUTF16("address");
+ 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(iter, pattern, &address_field->address1_))
if (!ParseLabelText(iter, label_pattern, &address_field->address1_))
@@ -216,13 +222,13 @@ bool AddressField::ParseAddressLines(
// Some pages have 3 address lines (eg SharperImageModifyAccount.html)
// Some pages even have 4 address lines (e.g. uk/ShoesDirect2.html)!
if (is_ecml) {
- pattern = GetEcmlPattern(kEcmlShipToAddress2,
- kEcmlBillToAddress2, '|');
+ pattern = GetEcmlPattern(kEcmlShipToAddress2, kEcmlBillToAddress2, '|');
if (!ParseEmptyText(iter, &address_field->address2_))
ParseText(iter, pattern, &address_field->address2_);
} else {
- pattern = ASCIIToUTF16("address.?line2|address2|addr2|street|suite|unit");
- string16 label_pattern = ASCIIToUTF16("address");
+ 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(iter, &address_field->address2_))
if (!ParseText(iter, pattern, &address_field->address2_))
ParseLabelText(iter, label_pattern, &address_field->address2_);
@@ -231,11 +237,10 @@ bool AddressField::ParseAddressLines(
// Try for a third line, which we will promptly discard.
if (address_field->address2_ != NULL) {
if (is_ecml) {
- pattern = GetEcmlPattern(kEcmlShipToAddress3,
- kEcmlBillToAddress3, '|');
+ pattern = GetEcmlPattern(kEcmlShipToAddress3, kEcmlBillToAddress3, '|');
ParseText(iter, pattern);
} else {
- pattern = ASCIIToUTF16("address.?line3|address3|addr3|street|line3");
+ pattern = l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_LINE_3_RE);
if (!ParseEmptyText(iter, NULL))
ParseText(iter, pattern, NULL);
}
@@ -258,7 +263,7 @@ bool AddressField::ParseCountry(
if (is_ecml)
pattern = GetEcmlPattern(kEcmlShipToCountry, kEcmlBillToCountry, '|');
else
- pattern = ASCIIToUTF16("country|location");
+ pattern = l10n_util::GetStringUTF16(IDS_AUTOFILL_COUNTRY_RE);
if (!ParseText(iter, pattern, &address_field->country_))
return false;
@@ -286,10 +291,9 @@ bool AddressField::ParseZipCode(
string16 pattern;
if (is_ecml) {
- pattern = GetEcmlPattern(kEcmlShipToPostalCode,
- kEcmlBillToPostalCode, '|');
+ pattern = GetEcmlPattern(kEcmlShipToPostalCode, kEcmlBillToPostalCode, '|');
} else {
- pattern = ASCIIToUTF16("zip|postal|post code|pcode|^1z$");
+ pattern = l10n_util::GetStringUTF16(IDS_AUTOFILL_ZIP_CODE_RE);
}
AddressType tempType;
@@ -314,7 +318,9 @@ bool AddressField::ParseZipCode(
if (!is_ecml) {
// Look for a zip+4, whose field name will also often contain
// the substring "zip".
- ParseText(iter, ASCIIToUTF16("zip|^-$"), &address_field->zip4_);
+ ParseText(iter,
+ l10n_util::GetStringUTF16(IDS_AUTOFILL_ZIP_4_RE),
+ &address_field->zip4_);
}
return true;
@@ -333,7 +339,7 @@ bool AddressField::ParseCity(
if (is_ecml)
pattern = GetEcmlPattern(kEcmlShipToCity, kEcmlBillToCity, '|');
else
- pattern = ASCIIToUTF16("city|town");
+ pattern = l10n_util::GetStringUTF16(IDS_AUTOFILL_CITY_RE);
if (!ParseText(iter, pattern, &address_field->city_))
return false;
@@ -352,7 +358,7 @@ bool AddressField::ParseState(
if (is_ecml)
pattern = GetEcmlPattern(kEcmlShipToStateProv, kEcmlBillToStateProv, '|');
else
- pattern = ASCIIToUTF16("state|county");
+ pattern = l10n_util::GetStringUTF16(IDS_AUTOFILL_STATE_RE);
if (!ParseText(iter, pattern, &address_field->state_))
return false;
@@ -361,8 +367,10 @@ bool AddressField::ParseState(
}
AddressType AddressField::AddressTypeFromText(const string16 &text) {
- if (text.find(ASCIIToUTF16("same as")) != string16::npos ||
- text.find(ASCIIToUTF16("use my")) != string16::npos)
+ if (text.find(l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_TYPE_SAME_AS_RE))
+ != string16::npos ||
+ text.find(l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_TYPE_USE_MY_RE))
+ != string16::npos)
// This text could be a checkbox label such as "same as my billing
// address" or "use my shipping address".
// ++ It would help if we generally skipped all text that appears
@@ -372,8 +380,10 @@ AddressType AddressField::AddressTypeFromText(const string16 &text) {
// Not all pages say "billing address" and "shipping address" explicitly;
// for example, Craft Catalog1.html has "Bill-to Address" and
// "Ship-to Address".
- size_t bill = text.rfind(ASCIIToUTF16("bill"));
- size_t ship = text.rfind(ASCIIToUTF16("ship"));
+ size_t bill = text.rfind(
+ l10n_util::GetStringUTF16(IDS_AUTOFILL_BILLING_DESIGNATOR_RE));
+ size_t ship = text.rfind(
+ l10n_util::GetStringUTF16(IDS_AUTOFILL_SHIPPING_DESIGNATOR_RE));
if (bill == string16::npos && ship == string16::npos)
return kGenericAddress;
« no previous file with comments | « no previous file | chrome/browser/autofill/autofill_resources.grd » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698