| 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_manager.h" | 5 #include "components/autofill/core/browser/autofill_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 598 if (is_autofill_possible && | 598 if (is_autofill_possible && |
| 599 driver_->RendererIsAvailable() && | 599 driver_->RendererIsAvailable() && |
| 600 got_autofillable_form) { | 600 got_autofillable_form) { |
| 601 // On desktop, don't return non credit card related suggestions for forms or | 601 // On desktop, don't return non credit card related suggestions for forms or |
| 602 // fields that have the "autocomplete" attribute set to off. | 602 // fields that have the "autocomplete" attribute set to off. |
| 603 if (IsDesktopPlatform() && !is_filling_credit_card && | 603 if (IsDesktopPlatform() && !is_filling_credit_card && |
| 604 !field.should_autocomplete) { | 604 !field.should_autocomplete) { |
| 605 return; | 605 return; |
| 606 } | 606 } |
| 607 if (is_filling_credit_card) { | 607 if (is_filling_credit_card) { |
| 608 suggestions = GetCreditCardSuggestions(field, autofill_field->Type()); | 608 suggestions = GetCreditCardSuggestions(field, *autofill_field); |
| 609 } else { | 609 } else { |
| 610 suggestions = | 610 suggestions = |
| 611 GetProfileSuggestions(*form_structure, field, *autofill_field); | 611 GetProfileSuggestions(*form_structure, field, *autofill_field); |
| 612 } | 612 } |
| 613 | 613 |
| 614 if (!suggestions.empty()) { | 614 if (!suggestions.empty()) { |
| 615 if (is_filling_credit_card) | 615 if (is_filling_credit_card) |
| 616 AutofillMetrics::LogIsQueriedCreditCardFormSecure(is_context_secure); | 616 AutofillMetrics::LogIsQueriedCreditCardFormSecure(is_context_secure); |
| 617 | 617 |
| 618 // Don't provide credit card suggestions for non-secure pages, but do | 618 // Don't provide credit card suggestions for non-secure pages, but do |
| (...skipping 1237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1856 // Annotate the updated form with its predicted types. | 1856 // Annotate the updated form with its predicted types. |
| 1857 driver_->SendAutofillTypePredictionsToRenderer({*updated_form}); | 1857 driver_->SendAutofillTypePredictionsToRenderer({*updated_form}); |
| 1858 | 1858 |
| 1859 return true; | 1859 return true; |
| 1860 } | 1860 } |
| 1861 | 1861 |
| 1862 std::vector<Suggestion> AutofillManager::GetProfileSuggestions( | 1862 std::vector<Suggestion> AutofillManager::GetProfileSuggestions( |
| 1863 const FormStructure& form, | 1863 const FormStructure& form, |
| 1864 const FormFieldData& field, | 1864 const FormFieldData& field, |
| 1865 const AutofillField& autofill_field) const { | 1865 const AutofillField& autofill_field) const { |
| 1866 address_form_event_logger_->OnDidPollSuggestions(field); | 1866 address_form_event_logger_->OnDidPollSuggestions(field, autofill_field); |
| 1867 | 1867 |
| 1868 std::vector<ServerFieldType> field_types(form.field_count()); | 1868 std::vector<ServerFieldType> field_types(form.field_count()); |
| 1869 for (size_t i = 0; i < form.field_count(); ++i) { | 1869 for (size_t i = 0; i < form.field_count(); ++i) { |
| 1870 field_types.push_back(form.field(i)->Type().GetStorableType()); | 1870 field_types.push_back(form.field(i)->Type().GetStorableType()); |
| 1871 } | 1871 } |
| 1872 | 1872 |
| 1873 std::vector<Suggestion> suggestions = personal_data_->GetProfileSuggestions( | 1873 std::vector<Suggestion> suggestions = personal_data_->GetProfileSuggestions( |
| 1874 autofill_field.Type(), field.value, field.is_autofilled, field_types); | 1874 autofill_field.Type(), field.value, field.is_autofilled, field_types); |
| 1875 | 1875 |
| 1876 // Adjust phone number to display in prefix/suffix case. | 1876 // Adjust phone number to display in prefix/suffix case. |
| 1877 if (autofill_field.Type().GetStorableType() == PHONE_HOME_NUMBER) { | 1877 if (autofill_field.Type().GetStorableType() == PHONE_HOME_NUMBER) { |
| 1878 for (size_t i = 0; i < suggestions.size(); ++i) { | 1878 for (size_t i = 0; i < suggestions.size(); ++i) { |
| 1879 suggestions[i].value = AutofillField::GetPhoneNumberValue( | 1879 suggestions[i].value = AutofillField::GetPhoneNumberValue( |
| 1880 autofill_field, suggestions[i].value, field); | 1880 autofill_field, suggestions[i].value, field); |
| 1881 } | 1881 } |
| 1882 } | 1882 } |
| 1883 | 1883 |
| 1884 for (size_t i = 0; i < suggestions.size(); ++i) { | 1884 for (size_t i = 0; i < suggestions.size(); ++i) { |
| 1885 suggestions[i].frontend_id = | 1885 suggestions[i].frontend_id = |
| 1886 MakeFrontendID(std::string(), suggestions[i].backend_id); | 1886 MakeFrontendID(std::string(), suggestions[i].backend_id); |
| 1887 } | 1887 } |
| 1888 return suggestions; | 1888 return suggestions; |
| 1889 } | 1889 } |
| 1890 | 1890 |
| 1891 std::vector<Suggestion> AutofillManager::GetCreditCardSuggestions( | 1891 std::vector<Suggestion> AutofillManager::GetCreditCardSuggestions( |
| 1892 const FormFieldData& field, | 1892 const FormFieldData& field, |
| 1893 const AutofillType& type) const { | 1893 const AutofillField& autofill_field) const { |
| 1894 credit_card_form_event_logger_->OnDidPollSuggestions(field); | 1894 credit_card_form_event_logger_->OnDidPollSuggestions(field, autofill_field); |
| 1895 | 1895 |
| 1896 // The field value is sanitized before attempting to match it to the user's | 1896 // The field value is sanitized before attempting to match it to the user's |
| 1897 // data. | 1897 // data. |
| 1898 std::vector<Suggestion> suggestions = | 1898 std::vector<Suggestion> suggestions = |
| 1899 personal_data_->GetCreditCardSuggestions( | 1899 personal_data_->GetCreditCardSuggestions( |
| 1900 type, SanitizeCreditCardFieldValue(field.value)); | 1900 autofill_field.Type(), SanitizeCreditCardFieldValue(field.value)); |
| 1901 for (size_t i = 0; i < suggestions.size(); i++) { | 1901 for (size_t i = 0; i < suggestions.size(); i++) { |
| 1902 suggestions[i].frontend_id = | 1902 suggestions[i].frontend_id = |
| 1903 MakeFrontendID(suggestions[i].backend_id, std::string()); | 1903 MakeFrontendID(suggestions[i].backend_id, std::string()); |
| 1904 suggestions[i].is_value_bold = IsCreditCardPopupValueBold(); | 1904 suggestions[i].is_value_bold = IsCreditCardPopupValueBold(); |
| 1905 } | 1905 } |
| 1906 return suggestions; | 1906 return suggestions; |
| 1907 } | 1907 } |
| 1908 | 1908 |
| 1909 void AutofillManager::ParseForms(const std::vector<FormData>& forms) { | 1909 void AutofillManager::ParseForms(const std::vector<FormData>& forms) { |
| 1910 if (forms.empty()) | 1910 if (forms.empty()) |
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2259 } | 2259 } |
| 2260 #endif // ENABLE_FORM_DEBUG_DUMP | 2260 #endif // ENABLE_FORM_DEBUG_DUMP |
| 2261 | 2261 |
| 2262 void AutofillManager::LogCardUploadDecisionUkm( | 2262 void AutofillManager::LogCardUploadDecisionUkm( |
| 2263 AutofillMetrics::CardUploadDecisionMetric upload_decision) { | 2263 AutofillMetrics::CardUploadDecisionMetric upload_decision) { |
| 2264 AutofillMetrics::LogCardUploadDecisionUkm( | 2264 AutofillMetrics::LogCardUploadDecisionUkm( |
| 2265 client_->GetUkmService(), pending_upload_request_url_, upload_decision); | 2265 client_->GetUkmService(), pending_upload_request_url_, upload_decision); |
| 2266 } | 2266 } |
| 2267 | 2267 |
| 2268 } // namespace autofill | 2268 } // namespace autofill |
| OLD | NEW |