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 |