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

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

Issue 208453002: Add "previewing on hover" support for password field. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Improve rebased code. Created 6 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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/strings/string_split.h" 10 #include "base/strings/string_split.h"
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 OnFieldTypePredictionsAvailable) 155 OnFieldTypePredictionsAvailable)
156 IPC_MESSAGE_HANDLER(AutofillMsg_ClearForm, OnClearForm) 156 IPC_MESSAGE_HANDLER(AutofillMsg_ClearForm, OnClearForm)
157 IPC_MESSAGE_HANDLER(AutofillMsg_ClearPreviewedForm, OnClearPreviewedForm) 157 IPC_MESSAGE_HANDLER(AutofillMsg_ClearPreviewedForm, OnClearPreviewedForm)
158 IPC_MESSAGE_HANDLER(AutofillMsg_FillFieldWithValue, OnFillFieldWithValue) 158 IPC_MESSAGE_HANDLER(AutofillMsg_FillFieldWithValue, OnFillFieldWithValue)
159 IPC_MESSAGE_HANDLER(AutofillMsg_PreviewFieldWithValue, 159 IPC_MESSAGE_HANDLER(AutofillMsg_PreviewFieldWithValue,
160 OnPreviewFieldWithValue) 160 OnPreviewFieldWithValue)
161 IPC_MESSAGE_HANDLER(AutofillMsg_AcceptDataListSuggestion, 161 IPC_MESSAGE_HANDLER(AutofillMsg_AcceptDataListSuggestion,
162 OnAcceptDataListSuggestion) 162 OnAcceptDataListSuggestion)
163 IPC_MESSAGE_HANDLER(AutofillMsg_AcceptPasswordAutofillSuggestion, 163 IPC_MESSAGE_HANDLER(AutofillMsg_AcceptPasswordAutofillSuggestion,
164 OnAcceptPasswordAutofillSuggestion) 164 OnAcceptPasswordAutofillSuggestion)
165 IPC_MESSAGE_HANDLER(AutofillMsg_PreviewPasswordAutofillSuggestion,
166 OnPreviewPasswordAutofillSuggestion)
165 IPC_MESSAGE_HANDLER(AutofillMsg_RequestAutocompleteResult, 167 IPC_MESSAGE_HANDLER(AutofillMsg_RequestAutocompleteResult,
166 OnRequestAutocompleteResult) 168 OnRequestAutocompleteResult)
167 IPC_MESSAGE_UNHANDLED(handled = false) 169 IPC_MESSAGE_UNHANDLED(handled = false)
168 IPC_END_MESSAGE_MAP() 170 IPC_END_MESSAGE_MAP()
169 return handled; 171 return handled;
170 } 172 }
171 173
172 void AutofillAgent::DidFinishDocumentLoad(WebLocalFrame* frame) { 174 void AutofillAgent::DidFinishDocumentLoad(WebLocalFrame* frame) {
173 // Record timestamp on document load. This is used to record overhead of 175 // Record timestamp on document load. This is used to record overhead of
174 // Autofill feature. 176 // Autofill feature.
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 481
480 void AutofillAgent::OnClearForm() { 482 void AutofillAgent::OnClearForm() {
481 form_cache_.ClearFormWithElement(element_); 483 form_cache_.ClearFormWithElement(element_);
482 } 484 }
483 485
484 void AutofillAgent::OnClearPreviewedForm() { 486 void AutofillAgent::OnClearPreviewedForm() {
485 if (!element_.isNull()) { 487 if (!element_.isNull()) {
486 if (password_autofill_agent_->DidClearAutofillSelection(element_)) 488 if (password_autofill_agent_->DidClearAutofillSelection(element_))
487 return; 489 return;
488 490
489 ClearPreviewedFormWithElement(element_, was_query_node_autofilled_); 491 ClearPreviewedFormWithElement(
492 element_,
493 was_query_node_autofilled_,
494 password_autofill_agent_->WasPasswordAutofilled());
Ilya Sherman 2014/05/13 00:44:05 This call site should not need to change as a resu
ziran.sun 2014/05/14 15:35:12 Done.
490 } else { 495 } else {
491 // TODO(isherman): There seem to be rare cases where this code *is* 496 // TODO(isherman): There seem to be rare cases where this code *is*
492 // reachable: see [ http://crbug.com/96321#c6 ]. Ideally we would 497 // reachable: see [ http://crbug.com/96321#c6 ]. Ideally we would
493 // understand those cases and fix the code to avoid them. However, so far I 498 // understand those cases and fix the code to avoid them. However, so far I
494 // have been unable to reproduce such a case locally. If you hit this 499 // have been unable to reproduce such a case locally. If you hit this
495 // NOTREACHED(), please file a bug against me. 500 // NOTREACHED(), please file a bug against me.
496 NOTREACHED(); 501 NOTREACHED();
497 } 502 }
498 } 503 }
499 504
(...skipping 16 matching lines...) Expand all
516 void AutofillAgent::OnAcceptPasswordAutofillSuggestion( 521 void AutofillAgent::OnAcceptPasswordAutofillSuggestion(
517 const base::string16& username, 522 const base::string16& username,
518 const base::string16& password) { 523 const base::string16& password) {
519 bool handled = password_autofill_agent_->AcceptSuggestion( 524 bool handled = password_autofill_agent_->AcceptSuggestion(
520 element_, 525 element_,
521 username, 526 username,
522 password); 527 password);
523 DCHECK(handled); 528 DCHECK(handled);
524 } 529 }
525 530
531 void AutofillAgent::OnPreviewPasswordAutofillSuggestion(
532 const base::string16& username,
533 const base::string16& password) {
534 was_query_node_autofilled_ = element_.isAutofilled();
Ilya Sherman 2014/05/13 00:44:05 This should be tracked internally to the PasswordA
ziran.sun 2014/05/14 15:35:12 Done.
535 bool handled = password_autofill_agent_->SelectSuggestion(
536 element_,
537 username,
538 password);
539 DCHECK(handled);
540 }
541
526 void AutofillAgent::OnRequestAutocompleteResult( 542 void AutofillAgent::OnRequestAutocompleteResult(
527 WebFormElement::AutocompleteResult result, 543 WebFormElement::AutocompleteResult result,
528 const base::string16& message, 544 const base::string16& message,
529 const FormData& form_data) { 545 const FormData& form_data) {
530 if (in_flight_request_form_.isNull()) 546 if (in_flight_request_form_.isNull())
531 return; 547 return;
532 548
533 if (result == WebFormElement::AutocompleteResultSuccess) { 549 if (result == WebFormElement::AutocompleteResultSuccess) {
534 FillFormIncludingNonFocusableElements(form_data, in_flight_request_form_); 550 FillFormIncludingNonFocusableElements(form_data, in_flight_request_form_);
535 if (!in_flight_request_form_.checkValidity()) 551 if (!in_flight_request_form_.checkValidity())
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 // Only monitors dynamic forms created in the top frame. Dynamic forms 716 // Only monitors dynamic forms created in the top frame. Dynamic forms
701 // inserted in iframes are not captured yet. 717 // inserted in iframes are not captured yet.
702 if (frame && !frame->parent()) { 718 if (frame && !frame->parent()) {
703 password_autofill_agent_->OnDynamicFormsSeen(frame); 719 password_autofill_agent_->OnDynamicFormsSeen(frame);
704 return; 720 return;
705 } 721 }
706 } 722 }
707 } 723 }
708 724
709 } // namespace autofill 725 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698