Chromium Code Reviews| Index: components/autofill/content/renderer/autofill_agent.cc |
| diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components/autofill/content/renderer/autofill_agent.cc |
| index 4d22a4c1b1524bf6c8390b4678cd64c7d7c27c38..b18332e747fa43e3644b4857ab7f634ee5a8bb01 100644 |
| --- a/components/autofill/content/renderer/autofill_agent.cc |
| +++ b/components/autofill/content/renderer/autofill_agent.cc |
| @@ -14,7 +14,6 @@ |
| #include "components/autofill/content/renderer/form_autofill_util.h" |
| #include "components/autofill/content/renderer/page_click_tracker.h" |
| #include "components/autofill/content/renderer/password_autofill_agent.h" |
| -#include "components/autofill/core/common/autocheckout_status.h" |
| #include "components/autofill/core/common/autofill_constants.h" |
| #include "components/autofill/core/common/autofill_messages.h" |
| #include "components/autofill/core/common/autofill_switches.h" |
| @@ -248,8 +247,10 @@ void AutofillAgent::DidFailProvisionalLoad(WebFrame* frame, |
| void AutofillAgent::DidCommitProvisionalLoad(WebFrame* frame, |
| bool is_new_navigation) { |
| in_flight_request_form_.reset(); |
| - if (!frame->parent()) |
| + if (!frame->parent() && autocheckout_click_in_progress_) { |
| autocheckout_click_in_progress_ = false; |
| + CompleteAutocheckoutPage(SUCCESS); |
| + } |
| } |
| void AutofillAgent::FrameDetached(WebFrame* frame) { |
| @@ -685,8 +686,7 @@ void AutofillAgent::OnFillFormsAndClick( |
| for (size_t i = 0; i < click_elements_before_form_fill.size(); ++i) { |
| if (!ClickElement(topmost_frame_->document(), |
| click_elements_before_form_fill[i])) { |
| - Send(new AutofillHostMsg_ClickFailed(routing_id(), |
| - MISSING_CLICK_ELEMENT_BEFORE_FORM_FILLING)); |
| + CompleteAutocheckoutPage(MISSING_CLICK_ELEMENT_BEFORE_FORM_FILLING); |
| return; |
| } |
| } |
| @@ -699,15 +699,16 @@ void AutofillAgent::OnFillFormsAndClick( |
| for (size_t i = 0; i < click_elements_after_form_fill.size(); ++i) { |
| if (!ClickElement(topmost_frame_->document(), |
| click_elements_after_form_fill[i])) { |
| - Send(new AutofillHostMsg_ClickFailed(routing_id(), |
| - MISSING_CLICK_ELEMENT_AFTER_FORM_FILLING)); |
| + CompleteAutocheckoutPage(MISSING_CLICK_ELEMENT_AFTER_FORM_FILLING); |
| return; |
| } |
| } |
| // Exit early if there is nothing to click. |
| - if (click_element_descriptor.retrieval_method == WebElementDescriptor::NONE) |
| + if (click_element_descriptor.retrieval_method == WebElementDescriptor::NONE) { |
| + CompleteAutocheckoutPage(SUCCESS); |
| return; |
| + } |
| // It's possible that clicking the element to proceed in an Autocheckout |
| // flow will not actually proceed to the next step in the flow, e.g. there |
| @@ -721,9 +722,7 @@ void AutofillAgent::OnFillFormsAndClick( |
| &AutofillAgent::ClickFailed); |
| if (!ClickElement(topmost_frame_->document(), |
| click_element_descriptor)) { |
| - click_timer_.Stop(); |
| - Send(new AutofillHostMsg_ClickFailed(routing_id(), |
| - MISSING_ADVANCE)); |
| + CompleteAutocheckoutPage(MISSING_ADVANCE); |
| } |
| } |
| @@ -734,9 +733,15 @@ void AutofillAgent::OnAutocheckoutSupported() { |
| MaybeShowAutocheckoutBubble(); |
| } |
| +void AutofillAgent::CompleteAutocheckoutPage( |
| + autofill::AutocheckoutStatus status) { |
| + click_timer_.Stop(); |
| + Send(new AutofillHostMsg_AutocheckoutPageCompleted(routing_id(), |
| + status)); |
|
Ilya Sherman
2013/07/16 22:56:26
nit: Looks like this fits on the previous line.
benquan
2013/07/17 00:28:57
Done.
|
| +} |
| + |
| void AutofillAgent::ClickFailed() { |
| - Send(new AutofillHostMsg_ClickFailed(routing_id(), |
| - CANNOT_PROCEED)); |
| + CompleteAutocheckoutPage(CANNOT_PROCEED); |
| } |
| void AutofillAgent::ShowSuggestions(const WebInputElement& element, |