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

Side by Side Diff: components/autofill/content/renderer/autofill_agent.cc

Issue 1931043002: Remove requestAutocomplete (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 7 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 unified diff | Download patch
OLDNEW
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/content/renderer/autofill_agent.h" 5 #include "components/autofill/content/renderer/autofill_agent.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <tuple> 9 #include <tuple>
10 10
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 IPC_MESSAGE_HANDLER(AutofillMsg_ClearPreviewedForm, OnClearPreviewedForm) 213 IPC_MESSAGE_HANDLER(AutofillMsg_ClearPreviewedForm, OnClearPreviewedForm)
214 IPC_MESSAGE_HANDLER(AutofillMsg_FillFieldWithValue, OnFillFieldWithValue) 214 IPC_MESSAGE_HANDLER(AutofillMsg_FillFieldWithValue, OnFillFieldWithValue)
215 IPC_MESSAGE_HANDLER(AutofillMsg_PreviewFieldWithValue, 215 IPC_MESSAGE_HANDLER(AutofillMsg_PreviewFieldWithValue,
216 OnPreviewFieldWithValue) 216 OnPreviewFieldWithValue)
217 IPC_MESSAGE_HANDLER(AutofillMsg_AcceptDataListSuggestion, 217 IPC_MESSAGE_HANDLER(AutofillMsg_AcceptDataListSuggestion,
218 OnAcceptDataListSuggestion) 218 OnAcceptDataListSuggestion)
219 IPC_MESSAGE_HANDLER(AutofillMsg_FillPasswordSuggestion, 219 IPC_MESSAGE_HANDLER(AutofillMsg_FillPasswordSuggestion,
220 OnFillPasswordSuggestion) 220 OnFillPasswordSuggestion)
221 IPC_MESSAGE_HANDLER(AutofillMsg_PreviewPasswordSuggestion, 221 IPC_MESSAGE_HANDLER(AutofillMsg_PreviewPasswordSuggestion,
222 OnPreviewPasswordSuggestion) 222 OnPreviewPasswordSuggestion)
223 IPC_MESSAGE_HANDLER(AutofillMsg_RequestAutocompleteResult,
224 OnRequestAutocompleteResult)
225 IPC_MESSAGE_UNHANDLED(handled = false) 223 IPC_MESSAGE_UNHANDLED(handled = false)
226 IPC_END_MESSAGE_MAP() 224 IPC_END_MESSAGE_MAP()
227 return handled; 225 return handled;
228 } 226 }
229 227
230 void AutofillAgent::DidCommitProvisionalLoad(bool is_new_navigation, 228 void AutofillAgent::DidCommitProvisionalLoad(bool is_new_navigation,
231 bool is_same_page_navigation) { 229 bool is_same_page_navigation) {
232 blink::WebFrame* frame = render_frame()->GetWebFrame(); 230 blink::WebFrame* frame = render_frame()->GetWebFrame();
233 // TODO(dvadym): check if we need to check if it is main frame navigation 231 // TODO(dvadym): check if we need to check if it is main frame navigation
234 // http://crbug.com/443155 232 // http://crbug.com/443155
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 if (!doc.isNull()) 333 if (!doc.isNull())
336 focused_element = doc.focusedElement(); 334 focused_element = doc.focusedElement();
337 335
338 if (!focused_element.isNull() && password_generation_agent_ && 336 if (!focused_element.isNull() && password_generation_agent_ &&
339 password_generation_agent_->FocusedNodeHasChanged(focused_element)) { 337 password_generation_agent_->FocusedNodeHasChanged(focused_element)) {
340 is_generation_popup_possibly_visible_ = true; 338 is_generation_popup_possibly_visible_ = true;
341 is_popup_possibly_visible_ = true; 339 is_popup_possibly_visible_ = true;
342 } 340 }
343 } 341 }
344 342
345 void AutofillAgent::didRequestAutocomplete(
346 const WebFormElement& form) {
347 DCHECK_EQ(form.document().frame(), render_frame()->GetWebFrame());
348
349 // Disallow the dialog over non-https or broken https, except when the
350 // ignore SSL flag is passed. See http://crbug.com/272512.
351 // TODO(palmer): this should be moved to the browser process after frames
352 // get their own processes.
353 GURL url(form.document().url());
354 content::SSLStatus ssl_status =
355 render_frame()->GetRenderView()->GetSSLStatusOfFrame(
356 form.document().frame());
357 bool is_safe = url.SchemeIsCryptographic() &&
358 !net::IsCertStatusError(ssl_status.cert_status);
359 bool allow_unsafe = base::CommandLine::ForCurrentProcess()->HasSwitch(
360 ::switches::kReduceSecurityForTesting);
361 FormData form_data;
362 std::string error_message;
363 if (!in_flight_request_form_.isNull()) {
364 error_message = "already active.";
365 } else if (!is_safe && !allow_unsafe) {
366 error_message =
367 "must use a secure connection or --reduce-security-for-testing.";
368 } else if (!WebFormElementToFormData(
369 form, WebFormControlElement(),
370 static_cast<form_util::ExtractMask>(
371 form_util::EXTRACT_VALUE | form_util::EXTRACT_OPTION_TEXT |
372 form_util::EXTRACT_OPTIONS),
373 &form_data, NULL)) {
374 error_message = "failed to parse form.";
375 }
376
377 if (!error_message.empty()) {
378 WebConsoleMessage console_message = WebConsoleMessage(
379 WebConsoleMessage::LevelLog,
380 WebString(base::ASCIIToUTF16("requestAutocomplete: ") +
381 base::ASCIIToUTF16(error_message)));
382 form.document().frame()->addMessageToConsole(console_message);
383 WebFormElement(form).finishRequestAutocomplete(
384 WebFormElement::AutocompleteResultErrorDisabled);
385 return;
386 }
387
388 // Cancel any pending Autofill requests and hide any currently showing popups.
389 ++autofill_query_id_;
390 HidePopup();
391
392 in_flight_request_form_ = form;
393 Send(new AutofillHostMsg_RequestAutocomplete(routing_id(), form_data));
394 }
395
396 void AutofillAgent::setIgnoreTextChanges(bool ignore) { 343 void AutofillAgent::setIgnoreTextChanges(bool ignore) {
397 ignore_text_changes_ = ignore; 344 ignore_text_changes_ = ignore;
398 } 345 }
399 346
400 void AutofillAgent::FormControlElementClicked( 347 void AutofillAgent::FormControlElementClicked(
401 const WebFormControlElement& element, 348 const WebFormControlElement& element,
402 bool was_focused) { 349 bool was_focused) {
403 // TODO(estade): Remove this check when PageClickTracker is per-frame. 350 // TODO(estade): Remove this check when PageClickTracker is per-frame.
404 if (element.document().frame() != render_frame()->GetWebFrame()) 351 if (element.document().frame() != render_frame()->GetWebFrame())
405 return; 352 return;
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 // removed from the DOM. 604 // removed from the DOM.
658 if (form_util::AreFormContentsVisible(last_interacted_form_)) 605 if (form_util::AreFormContentsVisible(last_interacted_form_))
659 return; 606 return;
660 607
661 // Could not find a visible form equal to our saved form, assume submission. 608 // Could not find a visible form equal to our saved form, assume submission.
662 WillSendSubmitEvent(last_interacted_form_); 609 WillSendSubmitEvent(last_interacted_form_);
663 WillSubmitForm(last_interacted_form_); 610 WillSubmitForm(last_interacted_form_);
664 last_interacted_form_.reset(); 611 last_interacted_form_.reset();
665 } 612 }
666 613
667 void AutofillAgent::OnRequestAutocompleteResult(
668 WebFormElement::AutocompleteResult result,
669 const base::string16& message,
670 const FormData& form_data) {
671 if (in_flight_request_form_.isNull())
672 return;
673
674 if (result == WebFormElement::AutocompleteResultSuccess) {
675 form_util::FillFormIncludingNonFocusableElements(form_data,
676 in_flight_request_form_);
677 if (!in_flight_request_form_.checkValidity())
678 result = WebFormElement::AutocompleteResultErrorInvalid;
679 }
680
681 in_flight_request_form_.finishRequestAutocomplete(result);
682
683 if (!message.empty()) {
684 const base::string16 prefix(base::ASCIIToUTF16("requestAutocomplete: "));
685 WebConsoleMessage console_message = WebConsoleMessage(
686 WebConsoleMessage::LevelLog, WebString(prefix + message));
687 in_flight_request_form_.document().frame()->addMessageToConsole(
688 console_message);
689 }
690
691 in_flight_request_form_.reset();
692 }
693
694 void AutofillAgent::ShowSuggestions(const WebFormControlElement& element, 614 void AutofillAgent::ShowSuggestions(const WebFormControlElement& element,
695 const ShowSuggestionsOptions& options) { 615 const ShowSuggestionsOptions& options) {
696 if (!element.isEnabled() || element.isReadOnly()) 616 if (!element.isEnabled() || element.isReadOnly())
697 return; 617 return;
698 if (!element.suggestedValue().isEmpty()) 618 if (!element.suggestedValue().isEmpty())
699 return; 619 return;
700 620
701 const WebInputElement* input_element = toWebInputElement(&element); 621 const WebInputElement* input_element = toWebInputElement(&element);
702 if (input_element) { 622 if (input_element) {
703 if (!input_element->isTextField()) 623 if (!input_element->isTextField())
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
879 void AutofillAgent::LegacyAutofillAgent::OnDestruct() { 799 void AutofillAgent::LegacyAutofillAgent::OnDestruct() {
880 // No-op. Don't delete |this|. 800 // No-op. Don't delete |this|.
881 } 801 }
882 802
883 void AutofillAgent::LegacyAutofillAgent::FocusChangeComplete() { 803 void AutofillAgent::LegacyAutofillAgent::FocusChangeComplete() {
884 if (agent_) 804 if (agent_)
885 agent_->FocusChangeComplete(); 805 agent_->FocusChangeComplete();
886 } 806 }
887 807
888 } // namespace autofill 808 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/content/renderer/autofill_agent.h ('k') | components/autofill/core/browser/autofill_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698