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

Side by Side Diff: chrome/browser/autofill/name_field.cc

Issue 7585020: Remove Autofill support for the ECML standard, as it is virtually unused. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove ECML files from the repository Created 9 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/autofill/name_field.h ('k') | chrome/browser/autofill/name_field_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/autofill/name_field.h" 5 #include "chrome/browser/autofill/name_field.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
11 #include "chrome/browser/autofill/autofill_ecml.h"
12 #include "chrome/browser/autofill/autofill_scanner.h" 11 #include "chrome/browser/autofill/autofill_scanner.h"
13 #include "chrome/browser/autofill/autofill_type.h" 12 #include "chrome/browser/autofill/autofill_type.h"
14 #include "grit/autofill_resources.h" 13 #include "grit/autofill_resources.h"
15 #include "ui/base/l10n/l10n_util.h" 14 #include "ui/base/l10n/l10n_util.h"
16 15
17 using autofill::GetEcmlPattern;
18
19 namespace { 16 namespace {
20 17
21 // A form field that can parse a full name field. 18 // A form field that can parse a full name field.
22 class FullNameField : public NameField { 19 class FullNameField : public NameField {
23 public: 20 public:
24 static FullNameField* Parse(AutofillScanner* scanner); 21 static FullNameField* Parse(AutofillScanner* scanner);
25 22
26 protected: 23 protected:
27 // FormField: 24 // FormField:
28 virtual bool ClassifyField(FieldTypeMap* map) const OVERRIDE; 25 virtual bool ClassifyField(FieldTypeMap* map) const OVERRIDE;
29 26
30 private: 27 private:
31 explicit FullNameField(const AutofillField* field); 28 explicit FullNameField(const AutofillField* field);
32 29
33 const AutofillField* field_; 30 const AutofillField* field_;
34 31
35 DISALLOW_COPY_AND_ASSIGN(FullNameField); 32 DISALLOW_COPY_AND_ASSIGN(FullNameField);
36 }; 33 };
37 34
38 // A form field that can parse a first and last name field. 35 // A form field that can parse a first and last name field.
39 class FirstLastNameField : public NameField { 36 class FirstLastNameField : public NameField {
40 public: 37 public:
41 static FirstLastNameField* ParseSpecificName(AutofillScanner* scanner); 38 static FirstLastNameField* ParseSpecificName(AutofillScanner* scanner);
42 static FirstLastNameField* ParseComponentNames(AutofillScanner* scanner); 39 static FirstLastNameField* ParseComponentNames(AutofillScanner* scanner);
43 static FirstLastNameField* ParseEcmlName(AutofillScanner* scanner); 40 static FirstLastNameField* Parse(AutofillScanner* scanner);
44 static FirstLastNameField* Parse(AutofillScanner* scanner, bool is_ecml);
45 41
46 protected: 42 protected:
47 // FormField: 43 // FormField:
48 virtual bool ClassifyField(FieldTypeMap* map) const OVERRIDE; 44 virtual bool ClassifyField(FieldTypeMap* map) const OVERRIDE;
49 45
50 private: 46 private:
51 FirstLastNameField(); 47 FirstLastNameField();
52 48
53 const AutofillField* first_name_; 49 const AutofillField* first_name_;
54 const AutofillField* middle_name_; // Optional. 50 const AutofillField* middle_name_; // Optional.
55 const AutofillField* last_name_; 51 const AutofillField* last_name_;
56 bool middle_initial_; // True if middle_name_ is a middle initial. 52 bool middle_initial_; // True if middle_name_ is a middle initial.
57 53
58 DISALLOW_COPY_AND_ASSIGN(FirstLastNameField); 54 DISALLOW_COPY_AND_ASSIGN(FirstLastNameField);
59 }; 55 };
60 56
61 } // namespace 57 } // namespace
62 58
63 FormField* NameField::Parse(AutofillScanner* scanner, bool is_ecml) { 59 FormField* NameField::Parse(AutofillScanner* scanner) {
64 if (scanner->IsEnd()) 60 if (scanner->IsEnd())
65 return NULL; 61 return NULL;
66 62
67 // Try FirstLastNameField first since it's more specific. 63 // Try FirstLastNameField first since it's more specific.
68 NameField* field = FirstLastNameField::Parse(scanner, is_ecml); 64 NameField* field = FirstLastNameField::Parse(scanner);
69 if (!field && !is_ecml) 65 if (!field)
70 field = FullNameField::Parse(scanner); 66 field = FullNameField::Parse(scanner);
71 return field; 67 return field;
72 } 68 }
73 69
74 // This is overriden in concrete subclasses. 70 // This is overriden in concrete subclasses.
75 bool NameField::ClassifyField(FieldTypeMap* map) const { 71 bool NameField::ClassifyField(FieldTypeMap* map) const {
76 return false; 72 return false;
77 } 73 }
78 74
79 FullNameField* FullNameField::Parse(AutofillScanner* scanner) { 75 FullNameField* FullNameField::Parse(AutofillScanner* scanner) {
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 191
196 // Consider the match to be successful if we detected both first and last name 192 // Consider the match to be successful if we detected both first and last name
197 // fields. 193 // fields.
198 if (v->first_name_ && v->last_name_) 194 if (v->first_name_ && v->last_name_)
199 return v.release(); 195 return v.release();
200 196
201 scanner->Rewind(); 197 scanner->Rewind();
202 return NULL; 198 return NULL;
203 } 199 }
204 200
205 FirstLastNameField* FirstLastNameField::ParseEcmlName( 201 FirstLastNameField* FirstLastNameField::Parse(AutofillScanner* scanner) {
206 AutofillScanner* scanner) {
207 scoped_ptr<FirstLastNameField> field(new FirstLastNameField);
208 scanner->SaveCursor();
209
210 string16 pattern = GetEcmlPattern(kEcmlShipToFirstName,
211 kEcmlBillToFirstName, '|');
212 if (!ParseField(scanner, pattern, &field->first_name_))
213 return NULL;
214
215 pattern = GetEcmlPattern(kEcmlShipToMiddleName, kEcmlBillToMiddleName, '|');
216 ParseField(scanner, pattern, &field->middle_name_);
217
218 pattern = GetEcmlPattern(kEcmlShipToLastName, kEcmlBillToLastName, '|');
219 if (ParseField(scanner, pattern, &field->last_name_))
220 return field.release();
221
222 scanner->Rewind();
223 return NULL;
224 }
225
226 FirstLastNameField* FirstLastNameField::Parse(AutofillScanner* scanner,
227 bool is_ecml) {
228 if (is_ecml)
229 return ParseEcmlName(scanner);
230
231 FirstLastNameField* field = ParseSpecificName(scanner); 202 FirstLastNameField* field = ParseSpecificName(scanner);
232 if (!field) 203 if (!field)
233 field = ParseComponentNames(scanner); 204 field = ParseComponentNames(scanner);
234 return field; 205 return field;
235 } 206 }
236 207
237 FirstLastNameField::FirstLastNameField() 208 FirstLastNameField::FirstLastNameField()
238 : first_name_(NULL), 209 : first_name_(NULL),
239 middle_name_(NULL), 210 middle_name_(NULL),
240 last_name_(NULL), 211 last_name_(NULL),
241 middle_initial_(false) { 212 middle_initial_(false) {
242 } 213 }
243 214
244 bool FirstLastNameField::ClassifyField(FieldTypeMap* map) const { 215 bool FirstLastNameField::ClassifyField(FieldTypeMap* map) const {
245 bool ok = AddClassification(first_name_, NAME_FIRST, map); 216 bool ok = AddClassification(first_name_, NAME_FIRST, map);
246 ok = ok && AddClassification(last_name_, NAME_LAST, map); 217 ok = ok && AddClassification(last_name_, NAME_LAST, map);
247 AutofillFieldType type = middle_initial_ ? NAME_MIDDLE_INITIAL : NAME_MIDDLE; 218 AutofillFieldType type = middle_initial_ ? NAME_MIDDLE_INITIAL : NAME_MIDDLE;
248 ok = ok && AddClassification(middle_name_, type, map); 219 ok = ok && AddClassification(middle_name_, type, map);
249 return ok; 220 return ok;
250 } 221 }
OLDNEW
« no previous file with comments | « chrome/browser/autofill/name_field.h ('k') | chrome/browser/autofill/name_field_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698