| OLD | NEW |
| 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/form_field.h" | 5 #include "chrome/browser/autofill/form_field.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 228 field = CreditCardField::Parse(scanner, is_ecml); | 228 field = CreditCardField::Parse(scanner, is_ecml); |
| 229 if (field) | 229 if (field) |
| 230 return field; | 230 return field; |
| 231 | 231 |
| 232 // We search for a |NameField| last since it matches the word "name", which is | 232 // We search for a |NameField| last since it matches the word "name", which is |
| 233 // relatively general. | 233 // relatively general. |
| 234 return NameField::Parse(scanner, is_ecml); | 234 return NameField::Parse(scanner, is_ecml); |
| 235 } | 235 } |
| 236 | 236 |
| 237 // static | 237 // static |
| 238 bool FormField::ParseText(AutofillScanner* scanner, const string16& pattern) { | 238 bool FormField::ParseText(AutofillScanner* scanner, const Pattern& pattern) { |
| 239 const AutofillField* field; | 239 const AutofillField* field; |
| 240 return ParseText(scanner, pattern, &field); | 240 return ParseText(scanner, pattern, &field); |
| 241 } | 241 } |
| 242 | 242 |
| 243 // static | 243 // static |
| 244 bool FormField::ParseText(AutofillScanner* scanner, | 244 bool FormField::ParseText(AutofillScanner* scanner, |
| 245 const string16& pattern, | 245 const Pattern& pattern, |
| 246 const AutofillField** dest) { | 246 const AutofillField** dest) { |
| 247 return ParseText(scanner, pattern, dest, false); | 247 return ParseText(scanner, pattern, dest, false); |
| 248 } | 248 } |
| 249 | 249 |
| 250 // static | 250 // static |
| 251 bool FormField::ParseEmptyText(AutofillScanner* scanner, | 251 bool FormField::ParseEmptyText(AutofillScanner* scanner, |
| 252 const AutofillField** dest) { | 252 const AutofillField** dest) { |
| 253 return ParseLabelText(scanner, ASCIIToUTF16("^$"), dest); | 253 return ParseLabelText(scanner, Pattern(ASCIIToUTF16("^$")), dest); |
| 254 } | 254 } |
| 255 | 255 |
| 256 // static | 256 // static |
| 257 bool FormField::ParseLabelText(AutofillScanner* scanner, | 257 bool FormField::ParseLabelText(AutofillScanner* scanner, |
| 258 const string16& pattern, | 258 const Pattern& pattern, |
| 259 const AutofillField** dest) { | 259 const AutofillField** dest) { |
| 260 return ParseText(scanner, pattern, dest, true); | 260 return ParseText(scanner, pattern, dest, true); |
| 261 } | 261 } |
| 262 | 262 |
| 263 // static | 263 // static |
| 264 bool FormField::ParseText(AutofillScanner* scanner, | 264 bool FormField::ParseText(AutofillScanner* scanner, |
| 265 const string16& pattern, | 265 const Pattern& pattern, |
| 266 const AutofillField** dest, | 266 const AutofillField** dest, |
| 267 bool match_label_only) { | 267 bool match_label_only) { |
| 268 if (scanner->IsEnd()) | 268 if (scanner->IsEnd()) |
| 269 return false; | 269 return false; |
| 270 | 270 |
| 271 const AutofillField* field = scanner->Cursor(); | 271 const AutofillField* field = scanner->Cursor(); |
| 272 if (Match(field, pattern, match_label_only)) { | 272 |
| 273 if (!pattern.select_one_is_ok && |
| 274 field->form_control_type == ASCIIToUTF16("select-one")) |
| 275 return false; |
| 276 |
| 277 if (Match(field, pattern.pattern, match_label_only)) { |
| 273 if (dest) | 278 if (dest) |
| 274 *dest = field; | 279 *dest = field; |
| 275 scanner->Advance(); | 280 scanner->Advance(); |
| 276 return true; | 281 return true; |
| 277 } | 282 } |
| 278 | 283 |
| 279 return false; | 284 return false; |
| 280 } | 285 } |
| 281 | 286 |
| 282 // static | 287 // static |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 string16 FormField::GetEcmlPattern(const char* ecml_name) { | 320 string16 FormField::GetEcmlPattern(const char* ecml_name) { |
| 316 return ASCIIToUTF16(std::string("^") + ecml_name); | 321 return ASCIIToUTF16(std::string("^") + ecml_name); |
| 317 } | 322 } |
| 318 | 323 |
| 319 string16 FormField::GetEcmlPattern(const char* ecml_name1, | 324 string16 FormField::GetEcmlPattern(const char* ecml_name1, |
| 320 const char* ecml_name2, | 325 const char* ecml_name2, |
| 321 char pattern_operator) { | 326 char pattern_operator) { |
| 322 return ASCIIToUTF16(StringPrintf("^%s%c^%s", | 327 return ASCIIToUTF16(StringPrintf("^%s%c^%s", |
| 323 ecml_name1, pattern_operator, ecml_name2)); | 328 ecml_name1, pattern_operator, ecml_name2)); |
| 324 } | 329 } |
| OLD | NEW |