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 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 | 181 |
182 AutofillManager::AutofillManager( | 182 AutofillManager::AutofillManager( |
183 AutofillDriver* driver, | 183 AutofillDriver* driver, |
184 autofill::AutofillManagerDelegate* delegate, | 184 autofill::AutofillManagerDelegate* delegate, |
185 const std::string& app_locale, | 185 const std::string& app_locale, |
186 AutofillDownloadManagerState enable_download_manager) | 186 AutofillDownloadManagerState enable_download_manager) |
187 : driver_(driver), | 187 : driver_(driver), |
188 manager_delegate_(delegate), | 188 manager_delegate_(delegate), |
189 app_locale_(app_locale), | 189 app_locale_(app_locale), |
190 personal_data_(delegate->GetPersonalDataManager()), | 190 personal_data_(delegate->GetPersonalDataManager()), |
191 autocomplete_history_manager_(driver), | 191 autocomplete_history_manager_( |
| 192 new AutocompleteHistoryManager(driver, delegate)), |
192 autocheckout_manager_(this), | 193 autocheckout_manager_(this), |
193 metric_logger_(new AutofillMetrics), | 194 metric_logger_(new AutofillMetrics), |
194 has_logged_autofill_enabled_(false), | 195 has_logged_autofill_enabled_(false), |
195 has_logged_address_suggestions_count_(false), | 196 has_logged_address_suggestions_count_(false), |
196 did_show_suggestions_(false), | 197 did_show_suggestions_(false), |
197 user_did_type_(false), | 198 user_did_type_(false), |
198 user_did_autofill_(false), | 199 user_did_autofill_(false), |
199 user_did_edit_autofilled_field_(false), | 200 user_did_edit_autofilled_field_(false), |
200 external_delegate_(NULL), | 201 external_delegate_(NULL), |
201 test_delegate_(NULL), | 202 test_delegate_(NULL), |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 prefs::kAutofillNegativeUploadRate, | 236 prefs::kAutofillNegativeUploadRate, |
236 kAutofillNegativeUploadRateDefaultValue, | 237 kAutofillNegativeUploadRateDefaultValue, |
237 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 238 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
238 } | 239 } |
239 | 240 |
240 void AutofillManager::SetExternalDelegate(AutofillExternalDelegate* delegate) { | 241 void AutofillManager::SetExternalDelegate(AutofillExternalDelegate* delegate) { |
241 // TODO(jrg): consider passing delegate into the ctor. That won't | 242 // TODO(jrg): consider passing delegate into the ctor. That won't |
242 // work if the delegate has a pointer to the AutofillManager, but | 243 // work if the delegate has a pointer to the AutofillManager, but |
243 // future directions may not need such a pointer. | 244 // future directions may not need such a pointer. |
244 external_delegate_ = delegate; | 245 external_delegate_ = delegate; |
245 autocomplete_history_manager_.SetExternalDelegate(delegate); | 246 autocomplete_history_manager_->SetExternalDelegate(delegate); |
246 } | 247 } |
247 | 248 |
248 bool AutofillManager::IsNativeUiEnabled() { | 249 bool AutofillManager::IsNativeUiEnabled() { |
249 return external_delegate_ != NULL; | 250 return external_delegate_ != NULL; |
250 } | 251 } |
251 | 252 |
252 bool AutofillManager::OnFormSubmitted(const FormData& form, | 253 bool AutofillManager::OnFormSubmitted(const FormData& form, |
253 const TimeTicks& timestamp) { | 254 const TimeTicks& timestamp) { |
254 // Let AutoComplete know as well. | 255 // Let Autocomplete know as well. |
255 autocomplete_history_manager_.OnFormSubmitted(form); | 256 autocomplete_history_manager_->OnFormSubmitted(form); |
256 | 257 |
257 if (!IsAutofillEnabled()) | 258 if (!IsAutofillEnabled()) |
258 return false; | 259 return false; |
259 | 260 |
260 if (driver_->GetWebContents()->GetBrowserContext()->IsOffTheRecord()) | 261 if (driver_->GetWebContents()->GetBrowserContext()->IsOffTheRecord()) |
261 return false; | 262 return false; |
262 | 263 |
263 // Don't save data that was submitted through JavaScript. | 264 // Don't save data that was submitted through JavaScript. |
264 if (!form.user_submitted) | 265 if (!form.user_submitted) |
265 return false; | 266 return false; |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 metric_logger_->LogAddressSuggestionsCount(values.size()); | 480 metric_logger_->LogAddressSuggestionsCount(values.size()); |
480 has_logged_address_suggestions_count_ = true; | 481 has_logged_address_suggestions_count_ = true; |
481 } | 482 } |
482 } | 483 } |
483 } | 484 } |
484 } | 485 } |
485 | 486 |
486 // Add the results from AutoComplete. They come back asynchronously, so we | 487 // Add the results from AutoComplete. They come back asynchronously, so we |
487 // hand off what we generated and they will send the results back to the | 488 // hand off what we generated and they will send the results back to the |
488 // renderer. | 489 // renderer. |
489 autocomplete_history_manager_.OnGetAutocompleteSuggestions( | 490 autocomplete_history_manager_->OnGetAutocompleteSuggestions( |
490 query_id, field.name, field.value, values, labels, icons, unique_ids); | 491 query_id, field.name, field.value, values, labels, icons, unique_ids); |
491 } | 492 } |
492 | 493 |
493 void AutofillManager::OnFillAutofillFormData(int query_id, | 494 void AutofillManager::OnFillAutofillFormData(int query_id, |
494 const FormData& form, | 495 const FormData& form, |
495 const FormFieldData& field, | 496 const FormFieldData& field, |
496 int unique_id) { | 497 int unique_id) { |
497 RenderViewHost* host = NULL; | 498 RenderViewHost* host = NULL; |
498 const AutofillDataModel* data_model = NULL; | 499 const AutofillDataModel* data_model = NULL; |
499 size_t variant = 0; | 500 size_t variant = 0; |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
633 // be deleted, instead of doing nothing. | 634 // be deleted, instead of doing nothing. |
634 // http://crbug.com/124211 | 635 // http://crbug.com/124211 |
635 if (variant != 0) | 636 if (variant != 0) |
636 return; | 637 return; |
637 | 638 |
638 personal_data_->RemoveByGUID(data_model->guid()); | 639 personal_data_->RemoveByGUID(data_model->guid()); |
639 } | 640 } |
640 | 641 |
641 void AutofillManager::RemoveAutocompleteEntry(const base::string16& name, | 642 void AutofillManager::RemoveAutocompleteEntry(const base::string16& name, |
642 const base::string16& value) { | 643 const base::string16& value) { |
643 autocomplete_history_manager_.OnRemoveAutocompleteEntry(name, value); | 644 autocomplete_history_manager_->OnRemoveAutocompleteEntry(name, value); |
644 } | 645 } |
645 | 646 |
646 content::WebContents* AutofillManager::GetWebContents() const { | 647 content::WebContents* AutofillManager::GetWebContents() const { |
647 return driver_->GetWebContents(); | 648 return driver_->GetWebContents(); |
648 } | 649 } |
649 | 650 |
650 const std::vector<FormStructure*>& AutofillManager::GetFormStructures() { | 651 const std::vector<FormStructure*>& AutofillManager::GetFormStructures() { |
651 return form_structures_.get(); | 652 return form_structures_.get(); |
652 } | 653 } |
653 | 654 |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
779 autocheckout_manager_.OnClickFailed(status); | 780 autocheckout_manager_.OnClickFailed(status); |
780 } | 781 } |
781 | 782 |
782 std::string AutofillManager::GetAutocheckoutURLPrefix() const { | 783 std::string AutofillManager::GetAutocheckoutURLPrefix() const { |
783 if (!driver_->GetWebContents()) | 784 if (!driver_->GetWebContents()) |
784 return std::string(); | 785 return std::string(); |
785 | 786 |
786 autofill::autocheckout::WhitelistManager* whitelist_manager = | 787 autofill::autocheckout::WhitelistManager* whitelist_manager = |
787 manager_delegate_->GetAutocheckoutWhitelistManager(); | 788 manager_delegate_->GetAutocheckoutWhitelistManager(); |
788 | 789 |
789 return whitelist_manager->GetMatchedURLPrefix( | 790 return whitelist_manager ? whitelist_manager->GetMatchedURLPrefix( |
790 driver_->GetWebContents()->GetURL()); | 791 driver_->GetWebContents()->GetURL()) : std::string(); |
791 } | 792 } |
792 | 793 |
793 bool AutofillManager::IsAutofillEnabled() const { | 794 bool AutofillManager::IsAutofillEnabled() const { |
794 return manager_delegate_->GetPrefs()->GetBoolean(prefs::kAutofillEnabled); | 795 return manager_delegate_->GetPrefs()->GetBoolean(prefs::kAutofillEnabled); |
795 } | 796 } |
796 | 797 |
797 void AutofillManager::SendAutofillTypePredictions( | 798 void AutofillManager::SendAutofillTypePredictions( |
798 const std::vector<FormStructure*>& forms) const { | 799 const std::vector<FormStructure*>& forms) const { |
799 if (!CommandLine::ForCurrentProcess()->HasSwitch( | 800 if (!CommandLine::ForCurrentProcess()->HasSwitch( |
800 switches::kShowAutofillTypePredictions)) | 801 switches::kShowAutofillTypePredictions)) |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
905 external_delegate_->Reset(); | 906 external_delegate_->Reset(); |
906 } | 907 } |
907 | 908 |
908 AutofillManager::AutofillManager(AutofillDriver* driver, | 909 AutofillManager::AutofillManager(AutofillDriver* driver, |
909 autofill::AutofillManagerDelegate* delegate, | 910 autofill::AutofillManagerDelegate* delegate, |
910 PersonalDataManager* personal_data) | 911 PersonalDataManager* personal_data) |
911 : driver_(driver), | 912 : driver_(driver), |
912 manager_delegate_(delegate), | 913 manager_delegate_(delegate), |
913 app_locale_("en-US"), | 914 app_locale_("en-US"), |
914 personal_data_(personal_data), | 915 personal_data_(personal_data), |
915 autocomplete_history_manager_(driver), | 916 autocomplete_history_manager_( |
| 917 new AutocompleteHistoryManager(driver, delegate)), |
916 autocheckout_manager_(this), | 918 autocheckout_manager_(this), |
917 metric_logger_(new AutofillMetrics), | 919 metric_logger_(new AutofillMetrics), |
918 has_logged_autofill_enabled_(false), | 920 has_logged_autofill_enabled_(false), |
919 has_logged_address_suggestions_count_(false), | 921 has_logged_address_suggestions_count_(false), |
920 did_show_suggestions_(false), | 922 did_show_suggestions_(false), |
921 user_did_type_(false), | 923 user_did_type_(false), |
922 user_did_autofill_(false), | 924 user_did_autofill_(false), |
923 user_did_edit_autofilled_field_(false), | 925 user_did_edit_autofilled_field_(false), |
924 external_delegate_(NULL), | 926 external_delegate_(NULL), |
925 test_delegate_(NULL), | 927 test_delegate_(NULL), |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1240 | 1242 |
1241 void AutofillManager::UpdateInitialInteractionTimestamp( | 1243 void AutofillManager::UpdateInitialInteractionTimestamp( |
1242 const TimeTicks& interaction_timestamp) { | 1244 const TimeTicks& interaction_timestamp) { |
1243 if (initial_interaction_timestamp_.is_null() || | 1245 if (initial_interaction_timestamp_.is_null() || |
1244 interaction_timestamp < initial_interaction_timestamp_) { | 1246 interaction_timestamp < initial_interaction_timestamp_) { |
1245 initial_interaction_timestamp_ = interaction_timestamp; | 1247 initial_interaction_timestamp_ = interaction_timestamp; |
1246 } | 1248 } |
1247 } | 1249 } |
1248 | 1250 |
1249 } // namespace autofill | 1251 } // namespace autofill |
OLD | NEW |