| Index: components/autofill/renderer/autofill_agent.cc
|
| diff --git a/components/autofill/renderer/autofill_agent.cc b/components/autofill/renderer/autofill_agent.cc
|
| index 2c717832c1929d9ff7387596d5d395a9e27154b8..f169bfba4786fa446ad32708a5d71db37dff6c11 100644
|
| --- a/components/autofill/renderer/autofill_agent.cc
|
| +++ b/components/autofill/renderer/autofill_agent.cc
|
| @@ -216,7 +216,8 @@ void AutofillAgent::DidFinishDocumentLoad(WebFrame* frame) {
|
| if (!forms.empty() || !frame->parent()) {
|
| Send(new AutofillHostMsg_FormsSeen(routing_id(), forms,
|
| forms_seen_timestamp_,
|
| - has_more_forms));
|
| + has_more_forms,
|
| + false /* is_post_document_load */));
|
| }
|
| }
|
|
|
| @@ -731,7 +732,7 @@ void AutofillAgent::OnGetAllForms() {
|
|
|
| // Report to AutofillManager that all forms are being sent.
|
| Send(new AutofillHostMsg_FormsSeen(routing_id(), forms,
|
| - forms_seen_timestamp_, false));
|
| + forms_seen_timestamp_, false, false));
|
| }
|
|
|
| void AutofillAgent::OnRequestAutocompleteResult(
|
| @@ -775,6 +776,20 @@ void AutofillAgent::OnFillFormsAndClick(
|
|
|
| void AutofillAgent::OnWhitelistedForAutocheckout() {
|
| is_whitelisted_for_autocheckout_ = true;
|
| + if (forms_have_changed_since_load_) {
|
| + forms_have_changed_since_load_ = false;
|
| + bool has_more_forms = false;
|
| + std::vector<FormData> forms;
|
| + form_elements_.clear();
|
| + has_more_forms = form_cache_.ExtractFormsAndFormElements(
|
| + *topmost_frame_, kRequiredAutofillFields, &forms, &form_elements_);
|
| + if (!forms.empty()) {
|
| + Send(new AutofillHostMsg_FormsSeen(routing_id(), forms,
|
| + base::TimeTicks::Now(),
|
| + has_more_forms,
|
| + true /* is_post_document_load */));
|
| + }
|
| + }
|
| }
|
|
|
| void AutofillAgent::ClickFailed() {
|
| @@ -932,4 +947,28 @@ void AutofillAgent::HideHostAutofillUi() {
|
| Send(new AutofillHostMsg_HideAutofillUi(routing_id()));
|
| }
|
|
|
| +void AutofillAgent::didAssociateFormControls(const WebKit::WebVector<WebKit::WebNode>& nodes) {
|
| + for (size_t i = 0; i < nodes.size(); ++i) {
|
| + WebKit::WebNode node = nodes[i];
|
| + if (node.document().frame() == topmost_frame_) {
|
| + forms_have_changed_since_load_ = true;
|
| + if (is_whitelisted_for_autocheckout_) {
|
| + forms_have_changed_since_load_ = false;
|
| + bool has_more_forms = false;
|
| + std::vector<FormData> forms;
|
| + form_elements_.clear();
|
| + has_more_forms = form_cache_.ExtractFormsAndFormElements(
|
| + *topmost_frame_, kRequiredAutofillFields, &forms, &form_elements_);
|
| + if (!forms.empty()) {
|
| + Send(new AutofillHostMsg_FormsSeen(routing_id(), forms,
|
| + base::TimeTicks::Now(),
|
| + has_more_forms,
|
| + true /* is_post_document_load */));
|
| + }
|
| + }
|
| + return;
|
| + }
|
| + }
|
| +}
|
| +
|
| } // namespace autofill
|
|
|