Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1361)

Unified Diff: components/autofill/content/renderer/autofill_agent.cc

Issue 23033016: Remove autocheckout code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Even more deletes, and Ilya review. Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 ca4c46b50743b51f7420c01019f6aa948ad89096..f7ba62e38e59a4003a99ae88e34a5ed21f365911 100644
--- a/components/autofill/content/renderer/autofill_agent.cc
+++ b/components/autofill/content/renderer/autofill_agent.cc
@@ -63,8 +63,6 @@ const size_t kMaximumTextSizeForAutofill = 1000;
// via IPC (to prevent long IPC messages).
const size_t kMaximumDataListSizeForAutofill = 30;
-const int kAutocheckoutClickTimeout = 3;
-
// Gets all the data list values (with corresponding label) for the given
// element.
@@ -130,14 +128,11 @@ AutofillAgent::AutofillAgent(content::RenderView* render_view,
password_autofill_agent_(password_autofill_agent),
autofill_query_id_(0),
autofill_action_(AUTOFILL_NONE),
- topmost_frame_(NULL),
web_view_(render_view->GetWebView()),
display_warning_if_disabled_(false),
was_query_node_autofilled_(false),
has_shown_autofill_popup_for_current_edit_(false),
did_set_node_text_(false),
- autocheckout_click_in_progress_(false),
- is_autocheckout_supported_(false),
has_new_forms_for_browser_(false),
ignore_text_changes_(false),
weak_ptr_factory_(this) {
@@ -153,7 +148,6 @@ AutofillAgent::~AutofillAgent() {}
bool AutofillAgent::OnMessageReceived(const IPC::Message& message) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(AutofillAgent, message)
- IPC_MESSAGE_HANDLER(AutofillMsg_GetAllForms, OnGetAllForms)
IPC_MESSAGE_HANDLER(AutofillMsg_FormDataFilled, OnFormDataFilled)
IPC_MESSAGE_HANDLER(AutofillMsg_FieldTypePredictionsAvailable,
OnFieldTypePredictionsAvailable)
@@ -173,10 +167,6 @@ bool AutofillAgent::OnMessageReceived(const IPC::Message& message) {
OnAcceptPasswordAutofillSuggestion)
IPC_MESSAGE_HANDLER(AutofillMsg_RequestAutocompleteResult,
OnRequestAutocompleteResult)
- IPC_MESSAGE_HANDLER(AutofillMsg_FillFormsAndClick,
- OnFillFormsAndClick)
- IPC_MESSAGE_HANDLER(AutofillMsg_AutocheckoutSupported,
- OnAutocheckoutSupported)
IPC_MESSAGE_HANDLER(AutofillMsg_PageShown,
OnPageShown)
IPC_MESSAGE_UNHANDLED(handled = false)
@@ -194,7 +184,6 @@ void AutofillAgent::DidFinishDocumentLoad(WebFrame* frame) {
std::vector<FormData> forms;
bool has_more_forms = false;
if (!frame->parent()) {
- topmost_frame_ = frame;
form_elements_.clear();
has_more_forms = form_cache_.ExtractFormsAndFormElements(
*frame, kRequiredAutofillFields, &forms, &form_elements_);
@@ -213,41 +202,13 @@ void AutofillAgent::DidFinishDocumentLoad(WebFrame* frame) {
}
}
-void AutofillAgent::DidStartProvisionalLoad(WebFrame* frame) {
- if (!frame->parent()) {
- is_autocheckout_supported_ = false;
- topmost_frame_ = NULL;
- if (click_timer_.IsRunning()) {
- click_timer_.Stop();
- autocheckout_click_in_progress_ = true;
- }
- }
-}
-
-void AutofillAgent::DidFailProvisionalLoad(WebFrame* frame,
- const WebKit::WebURLError& error) {
- if (!frame->parent() && autocheckout_click_in_progress_) {
- autocheckout_click_in_progress_ = false;
- ClickFailed();
- }
-}
-
void AutofillAgent::DidCommitProvisionalLoad(WebFrame* frame,
bool is_new_navigation) {
in_flight_request_form_.reset();
- if (!frame->parent() && autocheckout_click_in_progress_) {
- autocheckout_click_in_progress_ = false;
- CompleteAutocheckoutPage(SUCCESS);
- }
}
void AutofillAgent::FrameDetached(WebFrame* frame) {
form_cache_.ResetFrame(*frame);
- if (!frame->parent()) {
- // |frame| is about to be destroyed so we need to clear |top_most_frame_|.
- topmost_frame_ = NULL;
- click_timer_.Stop();
- }
}
void AutofillAgent::WillSubmitForm(WebFrame* frame,
@@ -288,30 +249,12 @@ void AutofillAgent::FocusedNodeChanged(const WebKit::WebNode& node) {
return;
element_ = *element;
-
- MaybeShowAutocheckoutBubble();
}
void AutofillAgent::OrientationChangeEvent(int orientation) {
HideAutofillUI();
}
-void AutofillAgent::MaybeShowAutocheckoutBubble() {
- if (element_.isNull() || !element_.focused())
- return;
-
- FormData form;
- FormFieldData field;
- // This must be called to short circuit this method if it fails.
- if (!FindFormAndFieldForInputElement(element_, &form, &field, REQUIRE_NONE))
- return;
-
- Send(new AutofillHostMsg_MaybeShowAutocheckoutBubble(
- routing_id(),
- form,
- GetScaledBoundingBox(web_view_->pageScaleFactor(), &element_)));
-}
-
void AutofillAgent::DidChangeScrollOffset(WebKit::WebFrame*) {
HideAutofillUI();
}
@@ -528,24 +471,6 @@ void AutofillAgent::OnAcceptPasswordAutofillSuggestion(
DCHECK(handled);
}
-void AutofillAgent::OnGetAllForms() {
- form_elements_.clear();
-
- // Force fetch all non empty forms.
- std::vector<FormData> forms;
- form_cache_.ExtractFormsAndFormElements(
- *topmost_frame_, 0, &forms, &form_elements_);
-
- // OnGetAllForms should only be called if AutofillAgent reported to
- // AutofillManager that there are more forms
- DCHECK(!forms.empty());
-
- // Report to AutofillManager that all forms are being sent.
- Send(new AutofillHostMsg_FormsSeen(routing_id(), forms,
- forms_seen_timestamp_,
- NO_SPECIAL_FORMS_SEEN));
-}
-
void AutofillAgent::OnRequestAutocompleteResult(
WebFormElement::AutocompleteResult result, const FormData& form_data) {
if (in_flight_request_form_.isNull())
@@ -561,77 +486,7 @@ void AutofillAgent::OnRequestAutocompleteResult(
in_flight_request_form_.reset();
}
-void AutofillAgent::OnFillFormsAndClick(
- const std::vector<FormData>& forms,
- const std::vector<WebElementDescriptor>& click_elements_before_form_fill,
- const std::vector<WebElementDescriptor>& click_elements_after_form_fill,
- const WebElementDescriptor& click_element_descriptor) {
- DCHECK_EQ(forms.size(), form_elements_.size());
-
- // Click elements in click_elements_before_form_fill.
- for (size_t i = 0; i < click_elements_before_form_fill.size(); ++i) {
- if (!ClickElement(topmost_frame_->document(),
- click_elements_before_form_fill[i])) {
- CompleteAutocheckoutPage(MISSING_CLICK_ELEMENT_BEFORE_FORM_FILLING);
- return;
- }
- }
-
- // Fill the form.
- for (size_t i = 0; i < forms.size(); ++i)
- FillFormForAllElements(forms[i], form_elements_[i]);
-
- // Click elements in click_elements_after_form_fill.
- for (size_t i = 0; i < click_elements_after_form_fill.size(); ++i) {
- if (!ClickElement(topmost_frame_->document(),
- click_elements_after_form_fill[i])) {
- CompleteAutocheckoutPage(MISSING_CLICK_ELEMENT_AFTER_FORM_FILLING);
- return;
- }
- }
-
- // Exit early if there is nothing to click.
- 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
- // is a new required field that Autocheckout does not know how to fill. In
- // order to capture this case and present the user with an error a timer is
- // set that informs the browser of the error. |click_timer_| has to be started
- // before clicking so it can start before DidStartProvisionalLoad started.
- click_timer_.Start(FROM_HERE,
- base::TimeDelta::FromSeconds(kAutocheckoutClickTimeout),
- this,
- &AutofillAgent::ClickFailed);
- if (!ClickElement(topmost_frame_->document(),
- click_element_descriptor)) {
- CompleteAutocheckoutPage(MISSING_ADVANCE);
- }
-}
-
-void AutofillAgent::OnAutocheckoutSupported() {
- is_autocheckout_supported_ = true;
- if (has_new_forms_for_browser_)
- MaybeSendDynamicFormsSeen();
- MaybeShowAutocheckoutBubble();
-}
-
void AutofillAgent::OnPageShown() {
- if (is_autocheckout_supported_)
- MaybeShowAutocheckoutBubble();
-}
-
-void AutofillAgent::CompleteAutocheckoutPage(
- autofill::AutocheckoutStatus status) {
- click_timer_.Stop();
- Send(new AutofillHostMsg_AutocheckoutPageCompleted(routing_id(), status));
-}
-
-void AutofillAgent::ClickFailed() {
- CompleteAutocheckoutPage(CANNOT_PROCEED);
}
void AutofillAgent::ShowSuggestions(const WebInputElement& element,
@@ -752,38 +607,9 @@ void AutofillAgent::HideAutofillUI() {
Send(new AutofillHostMsg_HideAutofillUI(routing_id()));
}
+// TODO(isherman): Decide if we want to support autofill with AJAX.
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_seen_timestamp_ = base::TimeTicks::Now();
- has_new_forms_for_browser_ = true;
- break;
- }
- }
-
- if (has_new_forms_for_browser_ && is_autocheckout_supported_)
- MaybeSendDynamicFormsSeen();
-}
-
-void AutofillAgent::MaybeSendDynamicFormsSeen() {
- has_new_forms_for_browser_ = false;
- form_elements_.clear();
- std::vector<FormData> forms;
- // This will only be called for Autocheckout flows, so send all forms to
- // save an IPC.
- form_cache_.ExtractFormsAndFormElements(
- *topmost_frame_, 0, &forms, &form_elements_);
- autofill::FormsSeenState state = autofill::DYNAMIC_FORMS_SEEN;
-
- if (!forms.empty()) {
- if (click_timer_.IsRunning())
- click_timer_.Stop();
- Send(new AutofillHostMsg_FormsSeen(routing_id(), forms,
- forms_seen_timestamp_,
- state));
- }
}
} // namespace autofill

Powered by Google App Engine
This is Rietveld 408576698