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

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

Issue 7014011: Change heuristic regex and order to match grabber-continental. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Created 9 years, 7 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
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..437d413ebf3c1b6caf7e8c7d68acdc6a5a23751f 100644
--- a/chrome/browser/autofill/address_field.cc
+++ b/chrome/browser/autofill/address_field.cc
@@ -13,6 +13,8 @@
#include "base/utf_string_conversions.h"
#include "chrome/browser/autofill/autofill_field.h"
#include "chrome/browser/autofill/autofill_scanner.h"
+#include "chrome/browser/autofill/email_field.h"
+#include "chrome/browser/autofill/phone_field.h"
#include "grit/autofill_resources.h"
#include "ui/base/l10n/l10n_util.h"
@@ -78,6 +80,22 @@ AddressField* AddressField::Parse(AutofillScanner* scanner, bool is_ecml) {
// Allow address fields to appear in any order.
while (!scanner->IsEnd()) {
+ // Every loop, we have to parse email and phone, and if we find it, we
+ // break the loop even while continuing address. Because we want to give
+ // email and phone more priority than address. We have to rewind |scanner|
+ // position after the email and phone parsing.
+ size_t cursor_position = scanner->SaveCursor();
+ bool is_email = EmailField::Parse(scanner, is_ecml);
+ scanner->RewindTo(cursor_position);
+ if (is_email)
+ break;
+
+ cursor_position = scanner->SaveCursor();
+ bool is_phone = PhoneField::Parse(scanner, is_ecml);
+ scanner->RewindTo(cursor_position);
+ if (is_phone)
+ break;
Ilya Sherman 2011/05/14 06:59:12 David and I discussed this a bit offline today --
Ilya Sherman 2011/05/14 07:01:33 Whoops, didn't mean to send this comment out -- wa
honten.org 2011/05/14 07:41:20 I see, it might be better idea. But, at first, I
+
if (ParseCompany(scanner, is_ecml, address_field.get()) ||
ParseAddressLines(scanner, is_ecml, address_field.get()) ||
ParseCity(scanner, is_ecml, address_field.get()) ||
@@ -246,7 +264,8 @@ bool AddressField::ParseCountry(AutofillScanner* scanner,
else
pattern = l10n_util::GetStringUTF16(IDS_AUTOFILL_COUNTRY_RE);
- return ParseText(scanner, pattern, &address_field->country_);
+ return ParseText(scanner, FormField::Pattern(pattern, true),
+ &address_field->country_);
}
// static
@@ -315,7 +334,8 @@ bool AddressField::ParseCity(AutofillScanner* scanner,
else
pattern = l10n_util::GetStringUTF16(IDS_AUTOFILL_CITY_RE);
- return ParseText(scanner, pattern, &address_field->city_);
+ return ParseText(scanner, FormField::Pattern(pattern, true),
+ &address_field->city_);
}
// static
@@ -331,7 +351,8 @@ bool AddressField::ParseState(AutofillScanner* scanner,
else
pattern = l10n_util::GetStringUTF16(IDS_AUTOFILL_STATE_RE);
- return ParseText(scanner, pattern, &address_field->state_);
+ return ParseText(scanner, FormField::Pattern(pattern, true),
+ &address_field->state_);
}
AddressType AddressField::AddressTypeFromText(const string16 &text) {
« no previous file with comments | « no previous file | chrome/browser/autofill/autofill_resources.grd » ('j') | chrome/browser/autofill/autofill_scanner.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698