| 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 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 driver_->GetBlockingPool()->PostTaskAndReply( | 296 driver_->GetBlockingPool()->PostTaskAndReply( |
| 297 FROM_HERE, | 297 FROM_HERE, |
| 298 base::Bind(&DeterminePossibleFieldTypesForUpload, | 298 base::Bind(&DeterminePossibleFieldTypesForUpload, |
| 299 copied_profiles, | 299 copied_profiles, |
| 300 copied_credit_cards, | 300 copied_credit_cards, |
| 301 app_locale_, | 301 app_locale_, |
| 302 raw_submitted_form), | 302 raw_submitted_form), |
| 303 base::Bind(&AutofillManager::UploadFormDataAsyncCallback, | 303 base::Bind(&AutofillManager::UploadFormDataAsyncCallback, |
| 304 weak_ptr_factory_.GetWeakPtr(), | 304 weak_ptr_factory_.GetWeakPtr(), |
| 305 base::Owned(submitted_form.release()), | 305 base::Owned(submitted_form.release()), |
| 306 forms_loaded_timestamps_[form], | 306 forms_loaded_timestamp_, |
| 307 initial_interaction_timestamp_, | 307 initial_interaction_timestamp_, |
| 308 timestamp)); | 308 timestamp)); |
| 309 } | 309 } |
| 310 | 310 |
| 311 return true; | 311 return true; |
| 312 } | 312 } |
| 313 | 313 |
| 314 void AutofillManager::OnFormsSeen(const std::vector<FormData>& forms, | 314 void AutofillManager::OnFormsSeen(const std::vector<FormData>& forms, |
| 315 const TimeTicks& timestamp) { | 315 const TimeTicks& timestamp, |
| 316 autofill::FormsSeenState state) { |
| 316 if (!IsValidFormDataVector(forms)) | 317 if (!IsValidFormDataVector(forms)) |
| 317 return; | 318 return; |
| 318 | 319 |
| 320 bool is_post_document_load = state == autofill::DYNAMIC_FORMS_SEEN; |
| 321 // If new forms were added dynamically, treat as a new page. |
| 322 if (is_post_document_load) |
| 323 Reset(); |
| 324 |
| 319 if (!driver_->RendererIsAvailable()) | 325 if (!driver_->RendererIsAvailable()) |
| 320 return; | 326 return; |
| 321 | 327 |
| 322 bool enabled = IsAutofillEnabled(); | 328 bool enabled = IsAutofillEnabled(); |
| 323 if (!has_logged_autofill_enabled_) { | 329 if (!has_logged_autofill_enabled_) { |
| 324 metric_logger_->LogIsAutofillEnabledAtPageLoad(enabled); | 330 metric_logger_->LogIsAutofillEnabledAtPageLoad(enabled); |
| 325 has_logged_autofill_enabled_ = true; | 331 has_logged_autofill_enabled_ = true; |
| 326 } | 332 } |
| 327 | 333 |
| 328 if (!enabled) | 334 if (!enabled) |
| 329 return; | 335 return; |
| 330 | 336 |
| 331 for (size_t i = 0; i < forms.size(); ++i) { | 337 forms_loaded_timestamp_ = timestamp; |
| 332 forms_loaded_timestamps_[forms[i]] = timestamp; | |
| 333 } | |
| 334 | |
| 335 ParseForms(forms); | 338 ParseForms(forms); |
| 336 } | 339 } |
| 337 | 340 |
| 338 void AutofillManager::OnTextFieldDidChange(const FormData& form, | 341 void AutofillManager::OnTextFieldDidChange(const FormData& form, |
| 339 const FormFieldData& field, | 342 const FormFieldData& field, |
| 340 const TimeTicks& timestamp) { | 343 const TimeTicks& timestamp) { |
| 341 if (!IsValidFormData(form) || !IsValidFormFieldData(field)) | 344 if (!IsValidFormData(form) || !IsValidFormFieldData(field)) |
| 342 return; | 345 return; |
| 343 | 346 |
| 344 FormStructure* form_structure = NULL; | 347 FormStructure* form_structure = NULL; |
| (...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 813 } | 816 } |
| 814 | 817 |
| 815 void AutofillManager::Reset() { | 818 void AutofillManager::Reset() { |
| 816 form_structures_.clear(); | 819 form_structures_.clear(); |
| 817 has_logged_autofill_enabled_ = false; | 820 has_logged_autofill_enabled_ = false; |
| 818 has_logged_address_suggestions_count_ = false; | 821 has_logged_address_suggestions_count_ = false; |
| 819 did_show_suggestions_ = false; | 822 did_show_suggestions_ = false; |
| 820 user_did_type_ = false; | 823 user_did_type_ = false; |
| 821 user_did_autofill_ = false; | 824 user_did_autofill_ = false; |
| 822 user_did_edit_autofilled_field_ = false; | 825 user_did_edit_autofilled_field_ = false; |
| 823 forms_loaded_timestamps_.clear(); | 826 forms_loaded_timestamp_ = TimeTicks(); |
| 824 initial_interaction_timestamp_ = TimeTicks(); | 827 initial_interaction_timestamp_ = TimeTicks(); |
| 825 external_delegate_->Reset(); | 828 external_delegate_->Reset(); |
| 826 } | 829 } |
| 827 | 830 |
| 828 AutofillManager::AutofillManager(AutofillDriver* driver, | 831 AutofillManager::AutofillManager(AutofillDriver* driver, |
| 829 autofill::AutofillManagerDelegate* delegate, | 832 autofill::AutofillManagerDelegate* delegate, |
| 830 PersonalDataManager* personal_data) | 833 PersonalDataManager* personal_data) |
| 831 : driver_(driver), | 834 : driver_(driver), |
| 832 manager_delegate_(delegate), | 835 manager_delegate_(delegate), |
| 833 app_locale_("en-US"), | 836 app_locale_("en-US"), |
| (...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1164 return false; | 1167 return false; |
| 1165 | 1168 |
| 1166 // Disregard forms that we wouldn't ever autofill in the first place. | 1169 // Disregard forms that we wouldn't ever autofill in the first place. |
| 1167 if (!form.ShouldBeParsed(true)) | 1170 if (!form.ShouldBeParsed(true)) |
| 1168 return false; | 1171 return false; |
| 1169 | 1172 |
| 1170 return true; | 1173 return true; |
| 1171 } | 1174 } |
| 1172 | 1175 |
| 1173 } // namespace autofill | 1176 } // namespace autofill |
| OLD | NEW |