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

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: Add docs 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 NativeFieldType native_field_type = field_type.native_type(); 262 NativeFieldType native_field_type =
263 field_type.GetApproximateNativeFieldType();
263 FieldTypeGroup group(field_type.group()); 264 FieldTypeGroup group(field_type.group());
264 265
265 // There can be multiple email fields (e.g. in the case of 'confirm email' 266 // 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 267 // fields) but they must all contain the same value, else the profile is
267 // invalid. 268 // invalid.
268 if (native_field_type == EMAIL_ADDRESS) { 269 if (native_field_type == EMAIL_ADDRESS) {
269 if (types_seen.count(native_field_type) && 270 if (types_seen.count(native_field_type) &&
270 imported_profile->GetRawInfo(EMAIL_ADDRESS) != value) { 271 imported_profile->GetRawInfo(EMAIL_ADDRESS) != value) {
271 imported_profile.reset(); 272 imported_profile.reset();
272 break; 273 break;
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 if (multi_values[i].empty()) 611 if (multi_values[i].empty())
611 continue; 612 continue;
612 613
613 base::string16 profile_value_lower_case( 614 base::string16 profile_value_lower_case(
614 StringToLowerASCII(multi_values[i])); 615 StringToLowerASCII(multi_values[i]));
615 base::string16 field_value_lower_case( 616 base::string16 field_value_lower_case(
616 StringToLowerASCII(field_contents)); 617 StringToLowerASCII(field_contents));
617 // Phone numbers could be split in US forms, so field value could be 618 // Phone numbers could be split in US forms, so field value could be
618 // either prefix or suffix of the phone. 619 // either prefix or suffix of the phone.
619 bool matched_phones = false; 620 bool matched_phones = false;
620 if ((type.native_type() == PHONE_HOME_NUMBER || 621 if (type.GetEquivalentNativeType() == PHONE_HOME_NUMBER &&
621 type.native_type() == PHONE_BILLING_NUMBER) &&
622 !field_value_lower_case.empty() && 622 !field_value_lower_case.empty() &&
623 profile_value_lower_case.find(field_value_lower_case) != 623 profile_value_lower_case.find(field_value_lower_case) !=
624 base::string16::npos) { 624 base::string16::npos) {
625 matched_phones = true; 625 matched_phones = true;
626 } 626 }
627 627
628 // Suggest variants of the profile that's already been filled in. 628 // Suggest variants of the profile that's already been filled in.
629 if (matched_phones || 629 if (matched_phones ||
630 profile_value_lower_case == field_value_lower_case) { 630 profile_value_lower_case == field_value_lower_case) {
631 for (size_t j = 0; j < multi_values.size(); ++j) { 631 for (size_t j = 0; j < multi_values.size(); ++j) {
632 if (!multi_values[j].empty()) { 632 if (!multi_values[j].empty()) {
633 values->push_back(multi_values[j]); 633 values->push_back(multi_values[j]);
634 guid_pairs->push_back(GUIDPair(profile->guid(), j)); 634 guid_pairs->push_back(GUIDPair(profile->guid(), j));
635 } 635 }
636 } 636 }
637 637
638 // We've added all the values for this profile so move on to the 638 // We've added all the values for this profile so move on to the
639 // next. 639 // next.
640 break; 640 break;
641 } 641 }
642 } 642 }
643 } 643 }
644 } 644 }
645 645
646 if (!field_is_autofilled) { 646 if (!field_is_autofilled) {
647 AutofillProfile::CreateInferredLabels( 647 AutofillProfile::CreateInferredLabels(
648 &matched_profiles, &other_field_types, 648 &matched_profiles, &other_field_types,
649 type.native_type(), 1, labels); 649 type.GetApproximateNativeFieldType(), 1, labels);
650 } else { 650 } else {
651 // No sub-labels for previously filled fields. 651 // No sub-labels for previously filled fields.
652 labels->resize(values->size()); 652 labels->resize(values->size());
653 } 653 }
654 654
655 // No icons for profile suggestions. 655 // No icons for profile suggestions.
656 icons->resize(values->size()); 656 icons->resize(values->size());
657 } 657 }
658 658
659 void PersonalDataManager::GetCreditCardSuggestions( 659 void PersonalDataManager::GetCreditCardSuggestions(
(...skipping 11 matching lines...) Expand all
671 const std::vector<CreditCard*>& credit_cards = GetCreditCards(); 671 const std::vector<CreditCard*>& credit_cards = GetCreditCards();
672 for (std::vector<CreditCard*>::const_iterator iter = credit_cards.begin(); 672 for (std::vector<CreditCard*>::const_iterator iter = credit_cards.begin();
673 iter != credit_cards.end(); ++iter) { 673 iter != credit_cards.end(); ++iter) {
674 CreditCard* credit_card = *iter; 674 CreditCard* credit_card = *iter;
675 675
676 // The value of the stored data for this field type in the |credit_card|. 676 // The value of the stored data for this field type in the |credit_card|.
677 base::string16 creditcard_field_value = 677 base::string16 creditcard_field_value =
678 credit_card->GetInfo(type, app_locale_); 678 credit_card->GetInfo(type, app_locale_);
679 if (!creditcard_field_value.empty() && 679 if (!creditcard_field_value.empty() &&
680 StartsWith(creditcard_field_value, field_contents, false)) { 680 StartsWith(creditcard_field_value, field_contents, false)) {
681 if (type.native_type() == CREDIT_CARD_NUMBER) 681 if (type.GetEquivalentNativeType() == CREDIT_CARD_NUMBER)
682 creditcard_field_value = credit_card->ObfuscatedNumber(); 682 creditcard_field_value = credit_card->ObfuscatedNumber();
683 683
684 base::string16 label; 684 base::string16 label;
685 if (credit_card->number().empty()) { 685 if (credit_card->number().empty()) {
686 // If there is no CC number, return name to show something. 686 // If there is no CC number, return name to show something.
687 label = 687 label =
688 credit_card->GetInfo(AutofillType(CREDIT_CARD_NAME), app_locale_); 688 credit_card->GetInfo(AutofillType(CREDIT_CARD_NAME), app_locale_);
689 } else { 689 } else {
690 label = kCreditCardPrefix; 690 label = kCreditCardPrefix;
691 label.append(credit_card->LastFourDigits()); 691 label.append(credit_card->LastFourDigits());
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
1025 const AutofillMetrics* metric_logger) { 1025 const AutofillMetrics* metric_logger) {
1026 metric_logger_.reset(metric_logger); 1026 metric_logger_.reset(metric_logger);
1027 } 1027 }
1028 1028
1029 void PersonalDataManager::set_browser_context( 1029 void PersonalDataManager::set_browser_context(
1030 content::BrowserContext* context) { 1030 content::BrowserContext* context) {
1031 browser_context_ = context; 1031 browser_context_ = context;
1032 } 1032 }
1033 1033
1034 } // namespace autofill 1034 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698