| 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/personal_data_manager.h" | 5 #include "components/autofill/core/browser/personal_data_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <list> | 10 #include <list> |
| (...skipping 957 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 968 return !a_is_expired; | 968 return !a_is_expired; |
| 969 | 969 |
| 970 return a->CompareFrecency(b, comparison_time); | 970 return a->CompareFrecency(b, comparison_time); |
| 971 }); | 971 }); |
| 972 | 972 |
| 973 return cards_to_suggest; | 973 return cards_to_suggest; |
| 974 } | 974 } |
| 975 | 975 |
| 976 std::vector<Suggestion> PersonalDataManager::GetCreditCardSuggestions( | 976 std::vector<Suggestion> PersonalDataManager::GetCreditCardSuggestions( |
| 977 const AutofillType& type, | 977 const AutofillType& type, |
| 978 const base::string16& field_contents) { | 978 const base::string16& field_contents, |
| 979 bool& isBankNameAvailable) { |
| 979 if (IsInAutofillSuggestionsDisabledExperiment()) | 980 if (IsInAutofillSuggestionsDisabledExperiment()) |
| 980 return std::vector<Suggestion>(); | 981 return std::vector<Suggestion>(); |
| 981 | 982 |
| 982 return GetSuggestionsForCards(type, field_contents, | 983 return GetSuggestionsForCards(type, field_contents, GetCreditCardsToSuggest(), |
| 983 GetCreditCardsToSuggest()); | 984 isBankNameAvailable); |
| 984 } | 985 } |
| 985 | 986 |
| 986 bool PersonalDataManager::IsAutofillEnabled() const { | 987 bool PersonalDataManager::IsAutofillEnabled() const { |
| 987 return ::autofill::IsAutofillEnabled(pref_service_); | 988 return ::autofill::IsAutofillEnabled(pref_service_); |
| 988 } | 989 } |
| 989 | 990 |
| 990 std::string PersonalDataManager::CountryCodeForCurrentTimezone() const { | 991 std::string PersonalDataManager::CountryCodeForCurrentTimezone() const { |
| 991 return base::CountryCodeForCurrentTimezone(); | 992 return base::CountryCodeForCurrentTimezone(); |
| 992 } | 993 } |
| 993 | 994 |
| (...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1635 bool record_metrics) const { | 1636 bool record_metrics) const { |
| 1636 profiles_.clear(); | 1637 profiles_.clear(); |
| 1637 for (const auto& profile : web_profiles_) | 1638 for (const auto& profile : web_profiles_) |
| 1638 profiles_.push_back(profile.get()); | 1639 profiles_.push_back(profile.get()); |
| 1639 return profiles_; | 1640 return profiles_; |
| 1640 } | 1641 } |
| 1641 | 1642 |
| 1642 std::vector<Suggestion> PersonalDataManager::GetSuggestionsForCards( | 1643 std::vector<Suggestion> PersonalDataManager::GetSuggestionsForCards( |
| 1643 const AutofillType& type, | 1644 const AutofillType& type, |
| 1644 const base::string16& field_contents, | 1645 const base::string16& field_contents, |
| 1645 const std::vector<CreditCard*>& cards_to_suggest) const { | 1646 const std::vector<CreditCard*>& cards_to_suggest, |
| 1647 bool& isBankNameAvailable) const { |
| 1646 std::vector<Suggestion> suggestions; | 1648 std::vector<Suggestion> suggestions; |
| 1647 base::string16 field_contents_lower = base::i18n::ToLower(field_contents); | 1649 base::string16 field_contents_lower = base::i18n::ToLower(field_contents); |
| 1650 isBankNameAvailable = false; |
| 1648 for (const CreditCard* credit_card : cards_to_suggest) { | 1651 for (const CreditCard* credit_card : cards_to_suggest) { |
| 1649 // The value of the stored data for this field type in the |credit_card|. | 1652 // The value of the stored data for this field type in the |credit_card|. |
| 1650 base::string16 creditcard_field_value = | 1653 base::string16 creditcard_field_value = |
| 1651 credit_card->GetInfo(type, app_locale_); | 1654 credit_card->GetInfo(type, app_locale_); |
| 1652 if (creditcard_field_value.empty()) | 1655 if (creditcard_field_value.empty()) |
| 1653 continue; | 1656 continue; |
| 1654 base::string16 creditcard_field_lower = | 1657 base::string16 creditcard_field_lower = |
| 1655 base::i18n::ToLower(creditcard_field_value); | 1658 base::i18n::ToLower(creditcard_field_value); |
| 1656 | 1659 |
| 1657 bool prefix_matched_suggestion; | 1660 bool prefix_matched_suggestion; |
| 1658 if (IsValidSuggestionForFieldContents( | 1661 if (IsValidSuggestionForFieldContents( |
| 1659 creditcard_field_lower, field_contents_lower, type, | 1662 creditcard_field_lower, field_contents_lower, type, |
| 1660 credit_card->record_type() == CreditCard::MASKED_SERVER_CARD, | 1663 credit_card->record_type() == CreditCard::MASKED_SERVER_CARD, |
| 1661 &prefix_matched_suggestion)) { | 1664 &prefix_matched_suggestion)) { |
| 1662 // Make a new suggestion. | 1665 // Make a new suggestion. |
| 1663 suggestions.push_back(Suggestion()); | 1666 suggestions.push_back(Suggestion()); |
| 1664 Suggestion* suggestion = &suggestions.back(); | 1667 Suggestion* suggestion = &suggestions.back(); |
| 1665 | 1668 |
| 1666 suggestion->value = credit_card->GetInfo(type, app_locale_); | 1669 suggestion->value = credit_card->GetInfo(type, app_locale_); |
| 1667 suggestion->icon = base::UTF8ToUTF16(credit_card->network()); | 1670 suggestion->icon = base::UTF8ToUTF16(credit_card->network()); |
| 1668 suggestion->backend_id = credit_card->guid(); | 1671 suggestion->backend_id = credit_card->guid(); |
| 1669 suggestion->match = prefix_matched_suggestion | 1672 suggestion->match = prefix_matched_suggestion |
| 1670 ? Suggestion::PREFIX_MATCH | 1673 ? Suggestion::PREFIX_MATCH |
| 1671 : Suggestion::SUBSTRING_MATCH; | 1674 : Suggestion::SUBSTRING_MATCH; |
| 1672 | 1675 |
| 1673 // If the value is the card number, the label is the expiration date. | 1676 // If the value is the card number, the label is the expiration date. |
| 1674 // Otherwise the label is the card number, or if that is empty the | 1677 // Otherwise the label is the card number, or if that is empty the |
| 1675 // cardholder name. The label should never repeat the value. | 1678 // cardholder name. The label should never repeat the value. |
| 1676 if (type.GetStorableType() == CREDIT_CARD_NUMBER) { | 1679 if (type.GetStorableType() == CREDIT_CARD_NUMBER) { |
| 1677 suggestion->value = credit_card->NetworkAndLastFourDigits(); | 1680 if (!credit_card->bank_name().empty()) { |
| 1681 isBankNameAvailable = true; |
| 1682 } |
| 1683 if (IsAutofillCreditCardBankNameDisplayExperimentEnabled() && |
| 1684 !credit_card->bank_name().empty()) { |
| 1685 suggestion->value = credit_card->BankNameAndLastFourDigits(); |
| 1686 } else { |
| 1687 suggestion->value = credit_card->NetworkAndLastFourDigits(); |
| 1688 } |
| 1678 if (IsAutofillCreditCardLastUsedDateDisplayExperimentEnabled()) { | 1689 if (IsAutofillCreditCardLastUsedDateDisplayExperimentEnabled()) { |
| 1679 suggestion->label = | 1690 suggestion->label = |
| 1680 credit_card->GetLastUsedDateForDisplay(app_locale_); | 1691 credit_card->GetLastUsedDateForDisplay(app_locale_); |
| 1681 } else { | 1692 } else { |
| 1682 suggestion->label = credit_card->GetInfo( | 1693 suggestion->label = credit_card->GetInfo( |
| 1683 AutofillType(CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR), app_locale_); | 1694 AutofillType(CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR), app_locale_); |
| 1684 } | 1695 } |
| 1685 if (IsAutofillCreditCardPopupLayoutExperimentEnabled()) | 1696 if (IsAutofillCreditCardPopupLayoutExperimentEnabled()) |
| 1686 ModifyAutofillCreditCardSuggestion(suggestion); | 1697 ModifyAutofillCreditCardSuggestion(suggestion); |
| 1687 } else if (credit_card->number().empty()) { | 1698 } else if (credit_card->number().empty()) { |
| (...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2076 existing_profiles->back().SetRawInfo(EMAIL_ADDRESS, email); | 2087 existing_profiles->back().SetRawInfo(EMAIL_ADDRESS, email); |
| 2077 | 2088 |
| 2078 AutofillMetrics::LogWalletAddressConversionType( | 2089 AutofillMetrics::LogWalletAddressConversionType( |
| 2079 AutofillMetrics::CONVERTED_ADDRESS_ADDED); | 2090 AutofillMetrics::CONVERTED_ADDRESS_ADDED); |
| 2080 } | 2091 } |
| 2081 | 2092 |
| 2082 return guid; | 2093 return guid; |
| 2083 } | 2094 } |
| 2084 | 2095 |
| 2085 } // namespace autofill | 2096 } // namespace autofill |
| OLD | NEW |