| OLD | NEW |
| 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/password_autofill_agent.h" | 5 #include "components/autofill/content/renderer/password_autofill_agent.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 // PasswordAutofillAgent, public: | 225 // PasswordAutofillAgent, public: |
| 226 | 226 |
| 227 PasswordAutofillAgent::PasswordAutofillAgent(content::RenderView* render_view) | 227 PasswordAutofillAgent::PasswordAutofillAgent(content::RenderView* render_view) |
| 228 : content::RenderViewObserver(render_view), | 228 : content::RenderViewObserver(render_view), |
| 229 usernames_usage_(NOTHING_TO_AUTOFILL), | 229 usernames_usage_(NOTHING_TO_AUTOFILL), |
| 230 web_view_(render_view->GetWebView()), | 230 web_view_(render_view->GetWebView()), |
| 231 logging_state_active_(false), | 231 logging_state_active_(false), |
| 232 was_username_autofilled_(false), | 232 was_username_autofilled_(false), |
| 233 was_password_autofilled_(false), | 233 was_password_autofilled_(false), |
| 234 username_selection_start_(0), | 234 username_selection_start_(0), |
| 235 did_stop_loading_(false), |
| 235 weak_ptr_factory_(this) { | 236 weak_ptr_factory_(this) { |
| 236 Send(new AutofillHostMsg_PasswordAutofillAgentConstructed(routing_id())); | 237 Send(new AutofillHostMsg_PasswordAutofillAgentConstructed(routing_id())); |
| 237 } | 238 } |
| 238 | 239 |
| 239 PasswordAutofillAgent::~PasswordAutofillAgent() { | 240 PasswordAutofillAgent::~PasswordAutofillAgent() { |
| 240 } | 241 } |
| 241 | 242 |
| 242 PasswordAutofillAgent::PasswordValueGatekeeper::PasswordValueGatekeeper() | 243 PasswordAutofillAgent::PasswordValueGatekeeper::PasswordValueGatekeeper() |
| 243 : was_user_gesture_seen_(false) { | 244 : was_user_gesture_seen_(false) { |
| 244 } | 245 } |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 528 | 529 |
| 529 if (password_forms.empty() && !only_visible) { | 530 if (password_forms.empty() && !only_visible) { |
| 530 // We need to send the PasswordFormsRendered message regardless of whether | 531 // We need to send the PasswordFormsRendered message regardless of whether |
| 531 // there are any forms visible, as this is also the code path that triggers | 532 // there are any forms visible, as this is also the code path that triggers |
| 532 // showing the infobar. | 533 // showing the infobar. |
| 533 return; | 534 return; |
| 534 } | 535 } |
| 535 | 536 |
| 536 if (only_visible) { | 537 if (only_visible) { |
| 537 Send(new AutofillHostMsg_PasswordFormsRendered(routing_id(), | 538 Send(new AutofillHostMsg_PasswordFormsRendered(routing_id(), |
| 538 password_forms)); | 539 password_forms, |
| 540 did_stop_loading_)); |
| 539 } else { | 541 } else { |
| 540 Send(new AutofillHostMsg_PasswordFormsParsed(routing_id(), password_forms)); | 542 Send(new AutofillHostMsg_PasswordFormsParsed(routing_id(), password_forms)); |
| 541 } | 543 } |
| 542 } | 544 } |
| 543 | 545 |
| 544 bool PasswordAutofillAgent::OnMessageReceived(const IPC::Message& message) { | 546 bool PasswordAutofillAgent::OnMessageReceived(const IPC::Message& message) { |
| 545 bool handled = true; | 547 bool handled = true; |
| 546 IPC_BEGIN_MESSAGE_MAP(PasswordAutofillAgent, message) | 548 IPC_BEGIN_MESSAGE_MAP(PasswordAutofillAgent, message) |
| 547 IPC_MESSAGE_HANDLER(AutofillMsg_FillPasswordForm, OnFillPasswordForm) | 549 IPC_MESSAGE_HANDLER(AutofillMsg_FillPasswordForm, OnFillPasswordForm) |
| 548 IPC_MESSAGE_HANDLER(AutofillMsg_SetLoggingState, OnSetLoggingState) | 550 IPC_MESSAGE_HANDLER(AutofillMsg_SetLoggingState, OnSetLoggingState) |
| 549 IPC_MESSAGE_UNHANDLED(handled = false) | 551 IPC_MESSAGE_UNHANDLED(handled = false) |
| 550 IPC_END_MESSAGE_MAP() | 552 IPC_END_MESSAGE_MAP() |
| 551 return handled; | 553 return handled; |
| 552 } | 554 } |
| 553 | 555 |
| 554 void PasswordAutofillAgent::DidStartLoading() { | 556 void PasswordAutofillAgent::DidStartLoading() { |
| 557 did_stop_loading_ = false; |
| 555 if (usernames_usage_ != NOTHING_TO_AUTOFILL) { | 558 if (usernames_usage_ != NOTHING_TO_AUTOFILL) { |
| 556 UMA_HISTOGRAM_ENUMERATION("PasswordManager.OtherPossibleUsernamesUsage", | 559 UMA_HISTOGRAM_ENUMERATION("PasswordManager.OtherPossibleUsernamesUsage", |
| 557 usernames_usage_, | 560 usernames_usage_, |
| 558 OTHER_POSSIBLE_USERNAMES_MAX); | 561 OTHER_POSSIBLE_USERNAMES_MAX); |
| 559 usernames_usage_ = NOTHING_TO_AUTOFILL; | 562 usernames_usage_ = NOTHING_TO_AUTOFILL; |
| 560 } | 563 } |
| 561 } | 564 } |
| 562 | 565 |
| 563 void PasswordAutofillAgent::DidFinishDocumentLoad(blink::WebLocalFrame* frame) { | 566 void PasswordAutofillAgent::DidFinishDocumentLoad(blink::WebLocalFrame* frame) { |
| 564 // The |frame| contents have been parsed, but not yet rendered. Let the | 567 // The |frame| contents have been parsed, but not yet rendered. Let the |
| 565 // PasswordManager know that forms are loaded, even though we can't yet tell | 568 // PasswordManager know that forms are loaded, even though we can't yet tell |
| 566 // whether they're visible. | 569 // whether they're visible. |
| 567 SendPasswordForms(frame, false); | 570 SendPasswordForms(frame, false); |
| 568 } | 571 } |
| 569 | 572 |
| 570 void PasswordAutofillAgent::DidFinishLoad(blink::WebLocalFrame* frame) { | 573 void PasswordAutofillAgent::DidFinishLoad(blink::WebLocalFrame* frame) { |
| 571 // The |frame| contents have been rendered. Let the PasswordManager know | 574 // The |frame| contents have been rendered. Let the PasswordManager know |
| 572 // which of the loaded frames are actually visible to the user. This also | 575 // which of the loaded frames are actually visible to the user. This also |
| 573 // triggers the "Save password?" infobar if the user just submitted a password | 576 // triggers the "Save password?" infobar if the user just submitted a password |
| 574 // form. | 577 // form. |
| 575 SendPasswordForms(frame, true); | 578 SendPasswordForms(frame, true); |
| 576 } | 579 } |
| 577 | 580 |
| 581 void PasswordAutofillAgent::DidStopLoading() { |
| 582 did_stop_loading_ = true; |
| 583 } |
| 584 |
| 578 void PasswordAutofillAgent::FrameDetached(blink::WebFrame* frame) { | 585 void PasswordAutofillAgent::FrameDetached(blink::WebFrame* frame) { |
| 579 FrameClosing(frame); | 586 FrameClosing(frame); |
| 580 } | 587 } |
| 581 | 588 |
| 582 void PasswordAutofillAgent::FrameWillClose(blink::WebFrame* frame) { | 589 void PasswordAutofillAgent::FrameWillClose(blink::WebFrame* frame) { |
| 583 FrameClosing(frame); | 590 FrameClosing(frame); |
| 584 } | 591 } |
| 585 | 592 |
| 586 void PasswordAutofillAgent::WillSendSubmitEvent( | 593 void PasswordAutofillAgent::WillSendSubmitEvent( |
| 587 blink::WebLocalFrame* frame, | 594 blink::WebLocalFrame* frame, |
| (...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1067 username->setSelectionRange(username_selection_start_, | 1074 username->setSelectionRange(username_selection_start_, |
| 1068 username->value().length()); | 1075 username->value().length()); |
| 1069 } | 1076 } |
| 1070 if (!password->suggestedValue().isEmpty()) { | 1077 if (!password->suggestedValue().isEmpty()) { |
| 1071 password->setSuggestedValue(blink::WebString()); | 1078 password->setSuggestedValue(blink::WebString()); |
| 1072 password->setAutofilled(was_password_autofilled_); | 1079 password->setAutofilled(was_password_autofilled_); |
| 1073 } | 1080 } |
| 1074 } | 1081 } |
| 1075 | 1082 |
| 1076 } // namespace autofill | 1083 } // namespace autofill |
| OLD | NEW |