| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "components/autofill/core/browser/autofill_field.h" | 5 #include "components/autofill/core/browser/autofill_field.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/metrics/field_trial.h" | 9 #include "base/metrics/field_trial.h" |
| 10 #include "base/sha1.h" | 10 #include "base/sha1.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 "Jan", "Feb", "Mar", "Apr", "May", "Jun", | 35 "Jan", "Feb", "Mar", "Apr", "May", "Jun", |
| 36 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", | 36 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", |
| 37 }; | 37 }; |
| 38 | 38 |
| 39 const char* const kMonthsFull[] = { | 39 const char* const kMonthsFull[] = { |
| 40 NULL, // Padding so index 1 = month 1 = January. | 40 NULL, // Padding so index 1 = month 1 = January. |
| 41 "January", "February", "March", "April", "May", "June", | 41 "January", "February", "March", "April", "May", "June", |
| 42 "July", "August", "September", "October", "November", "December", | 42 "July", "August", "September", "October", "November", "December", |
| 43 }; | 43 }; |
| 44 | 44 |
| 45 bool ShouldDisambiguateServerNameTypes() { | |
| 46 std::string group_name = | |
| 47 base::FieldTrialList::FindFullName("DisambiguateAutofillServerNameTypes"); | |
| 48 | |
| 49 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | |
| 50 switches::kDisambiguateAutofillServerNameTypes)) { | |
| 51 return true; | |
| 52 } | |
| 53 | |
| 54 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | |
| 55 switches::kTrustAutofillServerNameTypes)) { | |
| 56 return false; | |
| 57 } | |
| 58 | |
| 59 return group_name == "Enabled"; | |
| 60 } | |
| 61 | |
| 62 // Returns true if the value was successfully set, meaning |value| was found in | 45 // Returns true if the value was successfully set, meaning |value| was found in |
| 63 // the list of select options in |field|. | 46 // the list of select options in |field|. |
| 64 bool SetSelectControlValue(const base::string16& value, | 47 bool SetSelectControlValue(const base::string16& value, |
| 65 FormFieldData* field) { | 48 FormFieldData* field) { |
| 66 base::string16 value_lowercase = base::StringToLowerASCII(value); | 49 base::string16 value_lowercase = base::StringToLowerASCII(value); |
| 67 | 50 |
| 68 DCHECK_EQ(field->option_values.size(), field->option_contents.size()); | 51 DCHECK_EQ(field->option_values.size(), field->option_contents.size()); |
| 69 base::string16 best_match; | 52 base::string16 best_match; |
| 70 for (size_t i = 0; i < field->option_values.size(); ++i) { | 53 for (size_t i = 0; i < field->option_values.size(); ++i) { |
| 71 if (value == field->option_values[i] || | 54 if (value == field->option_values[i] || |
| (...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 467 phone_part_ = PHONE_SUFFIX; | 450 phone_part_ = PHONE_SUFFIX; |
| 468 else | 451 else |
| 469 phone_part_ = IGNORED; | 452 phone_part_ = IGNORED; |
| 470 } | 453 } |
| 471 | 454 |
| 472 AutofillType AutofillField::Type() const { | 455 AutofillType AutofillField::Type() const { |
| 473 if (html_type_ != HTML_TYPE_UNKNOWN) | 456 if (html_type_ != HTML_TYPE_UNKNOWN) |
| 474 return AutofillType(html_type_, html_mode_); | 457 return AutofillType(html_type_, html_mode_); |
| 475 | 458 |
| 476 if (server_type_ != NO_SERVER_DATA) { | 459 if (server_type_ != NO_SERVER_DATA) { |
| 477 bool believe_server = true; | 460 // See http://crbug.com/429236 for background on why we might not always |
| 478 if (ShouldDisambiguateServerNameTypes()) { | 461 // believe the server. |
| 479 believe_server = | 462 // See http://crbug.com/441488 for potential improvements to the server |
| 480 !(server_type_ == NAME_FULL && heuristic_type_ == CREDIT_CARD_NAME) && | 463 // which may obviate the need for this logic. |
| 481 !(server_type_ == CREDIT_CARD_NAME && heuristic_type_ == NAME_FULL); | 464 bool believe_server = |
| 482 } | 465 !(server_type_ == NAME_FULL && heuristic_type_ == CREDIT_CARD_NAME) && |
| 466 !(server_type_ == CREDIT_CARD_NAME && heuristic_type_ == NAME_FULL); |
| 483 if (believe_server) | 467 if (believe_server) |
| 484 return AutofillType(server_type_); | 468 return AutofillType(server_type_); |
| 485 } | 469 } |
| 486 | 470 |
| 487 return AutofillType(heuristic_type_); | 471 return AutofillType(heuristic_type_); |
| 488 } | 472 } |
| 489 | 473 |
| 490 bool AutofillField::IsEmpty() const { | 474 bool AutofillField::IsEmpty() const { |
| 491 return value.empty(); | 475 return value.empty(); |
| 492 } | 476 } |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 551 if (field.phone_part() == AutofillField::PHONE_SUFFIX || | 535 if (field.phone_part() == AutofillField::PHONE_SUFFIX || |
| 552 field_data.max_length == PhoneNumber::kSuffixLength) { | 536 field_data.max_length == PhoneNumber::kSuffixLength) { |
| 553 return | 537 return |
| 554 number.substr(PhoneNumber::kSuffixOffset, PhoneNumber::kSuffixLength); | 538 number.substr(PhoneNumber::kSuffixOffset, PhoneNumber::kSuffixLength); |
| 555 } | 539 } |
| 556 | 540 |
| 557 return number; | 541 return number; |
| 558 } | 542 } |
| 559 | 543 |
| 560 } // namespace autofill | 544 } // namespace autofill |
| OLD | NEW |