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

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

Issue 7891020: Make autofill regular expressions unicode again. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove extra gyp change Created 9 years, 3 months 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 | « chrome/browser/autofill/autofill_regex_constants.cc.utf8 ('k') | chrome/browser/autofill/email_field.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/autofill/credit_card_field.cc
diff --git a/chrome/browser/autofill/credit_card_field.cc b/chrome/browser/autofill/credit_card_field.cc
index 690fb1631d2cb3fdb7ed2e2dd7510ef8fc481890..3f3bb5991b55c62ff853e58dde18e1bd55a9e710 100644
--- a/chrome/browser/autofill/credit_card_field.cc
+++ b/chrome/browser/autofill/credit_card_field.cc
@@ -12,134 +12,11 @@
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/autofill/autofill_field.h"
+#include "chrome/browser/autofill/autofill_regex_constants.h"
#include "chrome/browser/autofill/autofill_scanner.h"
#include "chrome/browser/autofill/field_types.h"
#include "ui/base/l10n/l10n_util.h"
-namespace {
-
-// The UTF-8 version of these regular expressions are in
-// regular_expressions.txt.
-const char kNameOnCardRe[] =
- "card.?holder|name.?on.?card|ccname|ccfullname|owner"
- // de-DE
- "|karteninhaber"
- // es
- "|nombre.*tarjeta"
- // fr-FR
- "|nom.*carte"
- // it-IT
- "|nome.*cart"
- // ja-JP
- "|\xe5\x90\x8d\xe5\x89\x8d"
- // ru
- "|\xd0\x98\xd0\xbc\xd1\x8f.*\xd0\xba\xd0\xb0\xd1\x80\xd1\x82\xd1\x8b"
- // zh-CN
- "|\xe4\xbf\xa1\xe7\x94\xa8\xe5\x8d\xa1\xe5\xbc\x80\xe6\x88\xb7\xe5\x90\x8d"
- "|\xe5\xbc\x80\xe6\x88\xb7\xe5\x90\x8d|\xe6\x8c\x81\xe5\x8d\xa1\xe4"
- "\xba\xba\xe5\xa7\x93\xe5\x90\x8d"
- // zh-TW
- "|\xe6\x8c\x81\xe5\x8d\xa1\xe4\xba\xba\xe5\xa7\x93\xe5\x90\x8d";
-const char kNameOnCardContextualRe[] =
- "name";
-const char kCardNumberRe[] =
- "card.?number|card.?#|card.?no|ccnum|acctnum"
- // de-DE
- "|nummer"
- // es
- "|credito|numero|n\xc3\xbamero"
- // fr-FR
- "|num\xc3\xa9ro"
- // ja-JP
- "|\xe3\x82\xab\xe3\x83\xbc\xe3\x83\x89\xe7\x95\xaa\xe5\x8f\xb7"
- // ru
- "|\xd0\x9d\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x80.*\xd0\xba\xd0\xb0\xd1\x80\xd1"
- "\x82\xd1\x8b"
- // zh-CN
- "|\xe4\xbf\xa1\xe7\x94\xa8\xe5\x8d\xa1\xe5\x8f\xb7|\xe4\xbf\xa1\xe7\x94"
- "\xa8\xe5\x8d\xa1\xe5\x8f\xb7\xe7\xa0\x81"
- // zh-TW
- "|\xe4\xbf\xa1\xe7\x94\xa8\xe5\x8d\xa1\xe5\x8d\xa1\xe8\x99\x9f"
- // ko-KR
- "|\xec\xb9\xb4\xeb\x93\x9c";
-const char kCardCvcRe[] =
- "verification|card identification|security code|cvn|cvv|cvc|csc";
-
-// "Expiration date" is the most common label here, but some pages have
-// "Expires", "exp. date" or "exp. month" and "exp. year". We also look
-// for the field names ccmonth and ccyear, which appear on at least 4 of
-// our test pages.
-
-// On at least one page (The China Shop2.html) we find only the labels
-// "month" and "year". So for now we match these words directly; we'll
-// see if this turns out to be too general.
-
-// Toolbar Bug 51451: indeed, simply matching "month" is too general for
-// https://rps.fidelity.com/ftgw/rps/RtlCust/CreatePIN/Init.
-// Instead, we match only words beginning with "month".
-const char kExpirationMonthRe[] =
- "expir|exp.*mo|exp.*date|ccmonth"
- // de-DE
- "|gueltig|g\xc3\xbcltig|monat"
- // es
- "|fecha"
- // fr-FR
- "|date.*exp"
- // it-IT
- "|scadenza"
- // ja-JP
- "|\xe6\x9c\x89\xe5\x8a\xb9\xe6\x9c\x9f\xe9\x99\x90"
- // pt-BR, pt-PT
- "|validade"
- // ru
- "|\xd0\xa1\xd1\x80\xd0\xbe\xd0\xba \xd0\xb4\xd0\xb5\xd0\xb9\xd1\x81\xd1"
- "\x82\xd0\xb2\xd0\xb8\xd1\x8f \xd0\xba\xd0\xb0\xd1\x80\xd1\x82\xd1\x8b"
- // zh-CN
- "|\xe6\x9c\x88";
-const char kExpirationYearRe[] =
- "exp|^/|year"
- // de-DE
- "|ablaufdatum|gueltig|g\xc3\xbcltig|yahr"
- // es
- "|fecha"
- // it-IT
- "|scadenza"
- // ja-JP
- "|\xe6\x9c\x89\xe5\x8a\xb9\xe6\x9c\x9f\xe9\x99\x90"
- // pt-BR, pt-PT
- "|validade"
- // ru
- "|\xd0\xa1\xd1\x80\xd0\xbe\xd0\xba \xd0\xb4\xd0\xb5\xd0\xb9\xd1\x81\xd1"
- "\x82\xd0\xb2\xd0\xb8\xd1\x8f \xd0\xba\xd0\xb0\xd1\x80\xd1\x82\xd1\x8b"
- // zh-CN
- "|\xe5\xb9\xb4|\xe6\x9c\x89\xe6\x95\x88\xe6\x9c\x9f";
-
-// This regex is a little bit nasty, but it is simply requiring exactly two
-// adjacent y's.
-const char kExpirationDate2DigitYearRe[] =
- "exp.*date.*[^y]yy([^y]|$)";
-const char kExpirationDateRe[] =
- "expir|exp.*date"
- // de-DE
- "|gueltig|g\xc3\xbcltig"
- // es
- "|fecha"
- // fr-FR
- "|date.*exp"
- // it-IT
- "|scadenza"
- // ja-JP
- "|\xe6\x9c\x89\xe5\x8a\xb9\xe6\x9c\x9f\xe9\x99\x90"
- // pt-BR, pt-PT
- "|validade"
- // ru
- "|\xd0\xa1\xd1\x80\xd0\xbe\xd0\xba \xd0\xb4\xd0\xb5\xd0\xb9\xd1\x81\xd1"
- "\x82\xd0\xb2\xd0\xb8\xd1\x8f\xd0\xba\xd0\xb0\xd1\x80\xd1\x82\xd1\x8b";
-const char kCardIgnoredRe[] =
- "^card";
-
-} // namespace
-
// static
FormField* CreditCardField::Parse(AutofillScanner* scanner) {
if (scanner->IsEnd())
@@ -162,9 +39,9 @@ FormField* CreditCardField::Parse(AutofillScanner* scanner) {
string16 name_pattern;
if (fields == 0 || credit_card_field->expiration_month_) {
// at beginning or end
- name_pattern = UTF8ToUTF16(kNameOnCardRe);
+ name_pattern = UTF8ToUTF16(autofill::kNameOnCardRe);
} else {
- name_pattern = UTF8ToUTF16(kNameOnCardContextualRe);
+ name_pattern = UTF8ToUTF16(autofill::kNameOnCardContextualRe);
}
if (ParseField(scanner, name_pattern, &credit_card_field->cardholder_))
@@ -190,14 +67,14 @@ FormField* CreditCardField::Parse(AutofillScanner* scanner) {
// has a plethora of names; we've seen "verification #",
// "verification number", "card identification number" and others listed
// in the |pattern| below.
- string16 pattern = UTF8ToUTF16(kCardCvcRe);
+ string16 pattern = UTF8ToUTF16(autofill::kCardCvcRe);
if (!credit_card_field->verification_ &&
ParseField(scanner, pattern, &credit_card_field->verification_)) {
continue;
}
// TODO(jhawkins): Parse the type select control.
- pattern = UTF8ToUTF16(kCardNumberRe);
+ pattern = UTF8ToUTF16(autofill::kCardNumberRe);
if (!credit_card_field->number_ &&
ParseField(scanner, pattern, &credit_card_field->number_)) {
continue;
@@ -209,11 +86,11 @@ FormField* CreditCardField::Parse(AutofillScanner* scanner) {
} else {
// First try to parse split month/year expiration fields.
scanner->SaveCursor();
- pattern = UTF8ToUTF16(kExpirationMonthRe);
+ pattern = UTF8ToUTF16(autofill::kExpirationMonthRe);
if (!credit_card_field->expiration_month_ &&
ParseFieldSpecifics(scanner, pattern, MATCH_DEFAULT | MATCH_SELECT,
&credit_card_field->expiration_month_)) {
- pattern = UTF8ToUTF16(kExpirationYearRe);
+ pattern = UTF8ToUTF16(autofill::kExpirationYearRe);
if (ParseFieldSpecifics(scanner, pattern, MATCH_DEFAULT | MATCH_SELECT,
&credit_card_field->expiration_year_)) {
continue;
@@ -224,7 +101,7 @@ FormField* CreditCardField::Parse(AutofillScanner* scanner) {
if (!credit_card_field->expiration_date_) {
// Look for a 2-digit year first.
scanner->Rewind();
- pattern = UTF8ToUTF16(kExpirationDate2DigitYearRe);
+ pattern = UTF8ToUTF16(autofill::kExpirationDate2DigitYearRe);
if (ParseFieldSpecifics(scanner, pattern,
MATCH_LABEL | MATCH_VALUE | MATCH_TEXT,
&credit_card_field->expiration_date_)) {
@@ -232,7 +109,7 @@ FormField* CreditCardField::Parse(AutofillScanner* scanner) {
continue;
}
- pattern = UTF8ToUTF16(kExpirationDateRe);
+ pattern = UTF8ToUTF16(autofill::kExpirationDateRe);
if (ParseFieldSpecifics(scanner, pattern,
MATCH_LABEL | MATCH_VALUE | MATCH_TEXT,
&credit_card_field->expiration_date_)) {
@@ -254,7 +131,7 @@ FormField* CreditCardField::Parse(AutofillScanner* scanner) {
// We also ignore any other fields within a credit card block that
// start with "card", under the assumption that they are related to
// the credit card section being processed but are uninteresting to us.
- if (ParseField(scanner, UTF8ToUTF16(kCardIgnoredRe), NULL)) {
+ if (ParseField(scanner, UTF8ToUTF16(autofill::kCardIgnoredRe), NULL)) {
continue;
}
« no previous file with comments | « chrome/browser/autofill/autofill_regex_constants.cc.utf8 ('k') | chrome/browser/autofill/email_field.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698