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 | 8 |
9 #include <limits> | 9 #include <limits> |
10 #include <map> | 10 #include <map> |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 for (size_t i = 0; i < form_structure.field_count(); ++i) { | 80 for (size_t i = 0; i < form_structure.field_count(); ++i) { |
81 if (form_structure.field(i)->section() == section && | 81 if (form_structure.field(i)->section() == section && |
82 form.fields[i].is_autofilled) { | 82 form.fields[i].is_autofilled) { |
83 return true; | 83 return true; |
84 } | 84 } |
85 } | 85 } |
86 | 86 |
87 return false; | 87 return false; |
88 } | 88 } |
89 | 89 |
90 bool FormIsHTTPS(const FormStructure& form) { | |
91 return form.source_url().SchemeIs(url::kHttpsScheme); | |
92 } | |
93 | |
94 // Uses the existing personal data in |profiles| and |credit_cards| to determine | 90 // Uses the existing personal data in |profiles| and |credit_cards| to determine |
95 // possible field types for the |submitted_form|. This is potentially | 91 // possible field types for the |submitted_form|. This is potentially |
96 // expensive -- on the order of 50ms even for a small set of |stored_data|. | 92 // expensive -- on the order of 50ms even for a small set of |stored_data|. |
97 // Hence, it should not run on the UI thread -- to avoid locking up the UI -- | 93 // Hence, it should not run on the UI thread -- to avoid locking up the UI -- |
98 // nor on the IO thread -- to avoid blocking IPC calls. | 94 // nor on the IO thread -- to avoid blocking IPC calls. |
99 void DeterminePossibleFieldTypesForUpload( | 95 void DeterminePossibleFieldTypesForUpload( |
100 const std::vector<AutofillProfile>& profiles, | 96 const std::vector<AutofillProfile>& profiles, |
101 const std::vector<CreditCard>& credit_cards, | 97 const std::vector<CreditCard>& credit_cards, |
102 const std::string& app_locale, | 98 const std::string& app_locale, |
103 FormStructure* submitted_form) { | 99 FormStructure* submitted_form) { |
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
485 got_autofillable_form) { | 481 got_autofillable_form) { |
486 AutofillType type = autofill_field->Type(); | 482 AutofillType type = autofill_field->Type(); |
487 bool is_filling_credit_card = (type.group() == CREDIT_CARD); | 483 bool is_filling_credit_card = (type.group() == CREDIT_CARD); |
488 if (is_filling_credit_card) { | 484 if (is_filling_credit_card) { |
489 suggestions = GetCreditCardSuggestions(field, type); | 485 suggestions = GetCreditCardSuggestions(field, type); |
490 } else { | 486 } else { |
491 suggestions = | 487 suggestions = |
492 GetProfileSuggestions(*form_structure, field, *autofill_field); | 488 GetProfileSuggestions(*form_structure, field, *autofill_field); |
493 } | 489 } |
494 if (!suggestions.empty()) { | 490 if (!suggestions.empty()) { |
495 // Don't provide credit card suggestions for non-HTTPS pages. However, | 491 // Don't provide credit card suggestions for non-secure pages. However, |
496 // do provide a warning to the user. | 492 // do provide a warning to the user. This will generate warnings on pages |
497 if (is_filling_credit_card && !FormIsHTTPS(*form_structure)) { | 493 // with mixed content (which includes forms with an http target). |
| 494 if (is_filling_credit_card && |
| 495 !client_->IsContextSecure(form_structure->source_url())) { |
498 Suggestion warning_suggestion(l10n_util::GetStringUTF16( | 496 Suggestion warning_suggestion(l10n_util::GetStringUTF16( |
499 IDS_AUTOFILL_WARNING_INSECURE_CONNECTION)); | 497 IDS_AUTOFILL_WARNING_INSECURE_CONNECTION)); |
500 warning_suggestion.frontend_id = POPUP_ITEM_ID_WARNING_MESSAGE; | 498 warning_suggestion.frontend_id = POPUP_ITEM_ID_WARNING_MESSAGE; |
501 suggestions.assign(1, warning_suggestion); | 499 suggestions.assign(1, warning_suggestion); |
502 } else { | 500 } else { |
503 bool section_is_autofilled = | 501 bool section_is_autofilled = |
504 SectionIsAutofilled(*form_structure, form, | 502 SectionIsAutofilled(*form_structure, form, |
505 autofill_field->section()); | 503 autofill_field->section()); |
506 if (section_is_autofilled) { | 504 if (section_is_autofilled) { |
507 // If the relevant section is auto-filled and the renderer is querying | 505 // If the relevant section is auto-filled and the renderer is querying |
(...skipping 1055 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1563 | 1561 |
1564 bool is_from_address_book = | 1562 bool is_from_address_book = |
1565 profile->record_type() == AutofillProfile::AUXILIARY_PROFILE; | 1563 profile->record_type() == AutofillProfile::AUXILIARY_PROFILE; |
1566 UMA_HISTOGRAM_BOOLEAN( | 1564 UMA_HISTOGRAM_BOOLEAN( |
1567 "Autofill.MacAddressBook.AcceptedSuggestionIsFromAddressBook", | 1565 "Autofill.MacAddressBook.AcceptedSuggestionIsFromAddressBook", |
1568 is_from_address_book); | 1566 is_from_address_book); |
1569 } | 1567 } |
1570 #endif // defined(OS_MACOSX) && !defined(OS_IOS) | 1568 #endif // defined(OS_MACOSX) && !defined(OS_IOS) |
1571 | 1569 |
1572 } // namespace autofill | 1570 } // namespace autofill |
OLD | NEW |