| Index: chrome/renderer/render_view.cc
|
| diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
|
| index 5b62f3286cc07b0cef81413654b3bbc9cfd2cc74..63472d2c0223906200219eabc5a6ef084a936f68 100644
|
| --- a/chrome/renderer/render_view.cc
|
| +++ b/chrome/renderer/render_view.cc
|
| @@ -2676,7 +2676,7 @@ void RenderView::didFinishDocumentLoad(WebFrame* frame) {
|
| // TODO(jhawkins): Make these use the FormManager.
|
| form_manager_.ExtractForms(frame);
|
| SendForms(frame);
|
| - SendPasswordForms(frame);
|
| + SendPasswordForms(frame, false);
|
|
|
| // Check whether we have new encoding name.
|
| UpdateEncoding(frame, frame->view()->pageEncoding().utf8());
|
| @@ -2720,6 +2720,9 @@ void RenderView::didFinishLoad(WebFrame* frame) {
|
| DCHECK(navigation_state);
|
| navigation_state->set_finish_load_time(Time::Now());
|
| navigation_state->user_script_idle_scheduler()->DidFinishLoad();
|
| +
|
| + // Let the password manager know which password forms are actually visible.
|
| + SendPasswordForms(frame, true);
|
| }
|
|
|
| void RenderView::didNavigateWithinPage(
|
| @@ -4709,7 +4712,7 @@ void RenderView::didChangeAccessibilityObjectState(
|
| #endif
|
| }
|
|
|
| -void RenderView::SendPasswordForms(WebFrame* frame) {
|
| +void RenderView::SendPasswordForms(WebFrame* frame, bool only_visible) {
|
| WebVector<WebFormElement> forms;
|
| frame->forms(forms);
|
|
|
| @@ -4718,16 +4721,22 @@ void RenderView::SendPasswordForms(WebFrame* frame) {
|
| const WebFormElement& form = forms[i];
|
|
|
| // Respect autocomplete=off.
|
| - if (form.autoComplete()) {
|
| - scoped_ptr<PasswordForm> password_form(
|
| - PasswordFormDomManager::CreatePasswordForm(form));
|
| - if (password_form.get())
|
| - password_forms.push_back(*password_form);
|
| - }
|
| + if (!form.autoComplete())
|
| + continue;
|
| + if (only_visible && !form.hasNonEmptyBoundingBox())
|
| + continue;
|
| + scoped_ptr<PasswordForm> password_form(
|
| + PasswordFormDomManager::CreatePasswordForm(form));
|
| + if (password_form.get())
|
| + password_forms.push_back(*password_form);
|
| }
|
|
|
| - if (!password_forms.empty())
|
| - Send(new ViewHostMsg_PasswordFormsSeen(routing_id_, password_forms));
|
| + if (password_forms.empty())
|
| + return;
|
| + if (only_visible)
|
| + Send(new ViewHostMsg_PasswordFormsVisible(routing_id_, password_forms));
|
| + else
|
| + Send(new ViewHostMsg_PasswordFormsFound(routing_id_, password_forms));
|
| }
|
|
|
| void RenderView::Print(WebFrame* frame, bool script_initiated) {
|
|
|