Index: components/autofill/core/browser/autofill_manager.cc |
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc |
index 55f2cf32b9414dfdcbb31c6adc3e258c9fa0b655..95126de421d1ca79cdc115bb0cad82cb4401f1e1 100644 |
--- a/components/autofill/core/browser/autofill_manager.cc |
+++ b/components/autofill/core/browser/autofill_manager.cc |
@@ -303,7 +303,7 @@ |
base::Bind(&AutofillManager::UploadFormDataAsyncCallback, |
weak_ptr_factory_.GetWeakPtr(), |
base::Owned(submitted_form.release()), |
- forms_loaded_timestamps_[form], |
+ forms_loaded_timestamp_, |
initial_interaction_timestamp_, |
timestamp)); |
} |
@@ -312,9 +312,15 @@ |
} |
void AutofillManager::OnFormsSeen(const std::vector<FormData>& forms, |
- const TimeTicks& timestamp) { |
+ const TimeTicks& timestamp, |
+ autofill::FormsSeenState state) { |
if (!IsValidFormDataVector(forms)) |
return; |
+ |
+ bool is_post_document_load = state == autofill::DYNAMIC_FORMS_SEEN; |
+ // If new forms were added dynamically, treat as a new page. |
+ if (is_post_document_load) |
+ Reset(); |
if (!driver_->RendererIsAvailable()) |
return; |
@@ -328,10 +334,7 @@ |
if (!enabled) |
return; |
- for (size_t i = 0; i < forms.size(); ++i) { |
- forms_loaded_timestamps_[forms[i]] = timestamp; |
- } |
- |
+ forms_loaded_timestamp_ = timestamp; |
ParseForms(forms); |
} |
@@ -820,7 +823,7 @@ |
user_did_type_ = false; |
user_did_autofill_ = false; |
user_did_edit_autofilled_field_ = false; |
- forms_loaded_timestamps_.clear(); |
+ forms_loaded_timestamp_ = TimeTicks(); |
initial_interaction_timestamp_ = TimeTicks(); |
external_delegate_->Reset(); |
} |