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

Side by Side Diff: components/autofill/core/browser/personal_data_manager.cc

Issue 22040002: [Autofill] Add a separate enumeration for HTML field type hints. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix browser test Created 7 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
OLDNEW
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/personal_data_manager.h" 5 #include "components/autofill/core/browser/personal_data_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <functional> 8 #include <functional>
9 #include <iterator> 9 #include <iterator>
10 10
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 for (size_t i = 0; i < form.field_count(); ++i) { 252 for (size_t i = 0; i < form.field_count(); ++i) {
253 const AutofillField* field = form.field(i); 253 const AutofillField* field = form.field(i);
254 base::string16 value = CollapseWhitespace(field->value, false); 254 base::string16 value = CollapseWhitespace(field->value, false);
255 255
256 // If we don't know the type of the field, or the user hasn't entered any 256 // If we don't know the type of the field, or the user hasn't entered any
257 // information into the field, then skip it. 257 // information into the field, then skip it.
258 if (!field->IsFieldFillable() || value.empty()) 258 if (!field->IsFieldFillable() || value.empty())
259 continue; 259 continue;
260 260
261 AutofillType field_type = field->Type(); 261 AutofillType field_type = field->Type();
262 ServerFieldType server_field_type = field_type.server_type(); 262 ServerFieldType server_field_type = field_type.GetStorableType();
263 FieldTypeGroup group(field_type.group()); 263 FieldTypeGroup group(field_type.group());
264 264
265 // There can be multiple email fields (e.g. in the case of 'confirm email' 265 // There can be multiple email fields (e.g. in the case of 'confirm email'
266 // fields) but they must all contain the same value, else the profile is 266 // fields) but they must all contain the same value, else the profile is
267 // invalid. 267 // invalid.
268 if (server_field_type == EMAIL_ADDRESS) { 268 if (server_field_type == EMAIL_ADDRESS) {
269 if (types_seen.count(server_field_type) && 269 if (types_seen.count(server_field_type) &&
270 imported_profile->GetRawInfo(EMAIL_ADDRESS) != value) { 270 imported_profile->GetRawInfo(EMAIL_ADDRESS) != value) {
271 imported_profile.reset(); 271 imported_profile.reset();
272 break; 272 break;
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 if (multi_values[i].empty()) 610 if (multi_values[i].empty())
611 continue; 611 continue;
612 612
613 base::string16 profile_value_lower_case( 613 base::string16 profile_value_lower_case(
614 StringToLowerASCII(multi_values[i])); 614 StringToLowerASCII(multi_values[i]));
615 base::string16 field_value_lower_case( 615 base::string16 field_value_lower_case(
616 StringToLowerASCII(field_contents)); 616 StringToLowerASCII(field_contents));
617 // Phone numbers could be split in US forms, so field value could be 617 // Phone numbers could be split in US forms, so field value could be
618 // either prefix or suffix of the phone. 618 // either prefix or suffix of the phone.
619 bool matched_phones = false; 619 bool matched_phones = false;
620 if ((type.server_type() == PHONE_HOME_NUMBER || 620 if (type.GetStorableType() == PHONE_HOME_NUMBER &&
621 type.server_type() == PHONE_BILLING_NUMBER) &&
622 !field_value_lower_case.empty() && 621 !field_value_lower_case.empty() &&
623 profile_value_lower_case.find(field_value_lower_case) != 622 profile_value_lower_case.find(field_value_lower_case) !=
624 base::string16::npos) { 623 base::string16::npos) {
625 matched_phones = true; 624 matched_phones = true;
626 } 625 }
627 626
628 // Suggest variants of the profile that's already been filled in. 627 // Suggest variants of the profile that's already been filled in.
629 if (matched_phones || 628 if (matched_phones ||
630 profile_value_lower_case == field_value_lower_case) { 629 profile_value_lower_case == field_value_lower_case) {
631 for (size_t j = 0; j < multi_values.size(); ++j) { 630 for (size_t j = 0; j < multi_values.size(); ++j) {
632 if (!multi_values[j].empty()) { 631 if (!multi_values[j].empty()) {
633 values->push_back(multi_values[j]); 632 values->push_back(multi_values[j]);
634 guid_pairs->push_back(GUIDPair(profile->guid(), j)); 633 guid_pairs->push_back(GUIDPair(profile->guid(), j));
635 } 634 }
636 } 635 }
637 636
638 // We've added all the values for this profile so move on to the 637 // We've added all the values for this profile so move on to the
639 // next. 638 // next.
640 break; 639 break;
641 } 640 }
642 } 641 }
643 } 642 }
644 } 643 }
645 644
646 if (!field_is_autofilled) { 645 if (!field_is_autofilled) {
647 AutofillProfile::CreateInferredLabels( 646 AutofillProfile::CreateInferredLabels(
648 &matched_profiles, &other_field_types, 647 &matched_profiles, &other_field_types,
649 type.server_type(), 1, labels); 648 type.GetStorableType(), 1, labels);
650 } else { 649 } else {
651 // No sub-labels for previously filled fields. 650 // No sub-labels for previously filled fields.
652 labels->resize(values->size()); 651 labels->resize(values->size());
653 } 652 }
654 653
655 // No icons for profile suggestions. 654 // No icons for profile suggestions.
656 icons->resize(values->size()); 655 icons->resize(values->size());
657 } 656 }
658 657
659 void PersonalDataManager::GetCreditCardSuggestions( 658 void PersonalDataManager::GetCreditCardSuggestions(
(...skipping 11 matching lines...) Expand all
671 const std::vector<CreditCard*>& credit_cards = GetCreditCards(); 670 const std::vector<CreditCard*>& credit_cards = GetCreditCards();
672 for (std::vector<CreditCard*>::const_iterator iter = credit_cards.begin(); 671 for (std::vector<CreditCard*>::const_iterator iter = credit_cards.begin();
673 iter != credit_cards.end(); ++iter) { 672 iter != credit_cards.end(); ++iter) {
674 CreditCard* credit_card = *iter; 673 CreditCard* credit_card = *iter;
675 674
676 // The value of the stored data for this field type in the |credit_card|. 675 // The value of the stored data for this field type in the |credit_card|.
677 base::string16 creditcard_field_value = 676 base::string16 creditcard_field_value =
678 credit_card->GetInfo(type, app_locale_); 677 credit_card->GetInfo(type, app_locale_);
679 if (!creditcard_field_value.empty() && 678 if (!creditcard_field_value.empty() &&
680 StartsWith(creditcard_field_value, field_contents, false)) { 679 StartsWith(creditcard_field_value, field_contents, false)) {
681 if (type.server_type() == CREDIT_CARD_NUMBER) 680 if (type.GetStorableType() == CREDIT_CARD_NUMBER)
682 creditcard_field_value = credit_card->ObfuscatedNumber(); 681 creditcard_field_value = credit_card->ObfuscatedNumber();
683 682
684 base::string16 label; 683 base::string16 label;
685 if (credit_card->number().empty()) { 684 if (credit_card->number().empty()) {
686 // If there is no CC number, return name to show something. 685 // If there is no CC number, return name to show something.
687 label = 686 label =
688 credit_card->GetInfo(AutofillType(CREDIT_CARD_NAME), app_locale_); 687 credit_card->GetInfo(AutofillType(CREDIT_CARD_NAME), app_locale_);
689 } else { 688 } else {
690 label = kCreditCardPrefix; 689 label = kCreditCardPrefix;
691 label.append(credit_card->LastFourDigits()); 690 label.append(credit_card->LastFourDigits());
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
1025 const AutofillMetrics* metric_logger) { 1024 const AutofillMetrics* metric_logger) {
1026 metric_logger_.reset(metric_logger); 1025 metric_logger_.reset(metric_logger);
1027 } 1026 }
1028 1027
1029 void PersonalDataManager::set_browser_context( 1028 void PersonalDataManager::set_browser_context(
1030 content::BrowserContext* context) { 1029 content::BrowserContext* context) {
1031 browser_context_ = context; 1030 browser_context_ = context;
1032 } 1031 }
1033 1032
1034 } // namespace autofill 1033 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/form_structure_unittest.cc ('k') | components/autofill/core/browser/phone_number.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698