Chromium Code Reviews| Index: content/renderer/render_view_impl.cc |
| diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
| index 103160696c375713aa5a66f2b7eb577c31e21628..b6fb20d784ee46b4024b978d3add69bacbcb8830 100644 |
| --- a/content/renderer/render_view_impl.cc |
| +++ b/content/renderer/render_view_impl.cc |
| @@ -3357,6 +3357,23 @@ void RenderViewImpl::didStartProvisionalLoad(WebFrame* frame) { |
| navigation_gesture_ = WebUserGestureIndicator::isProcessingUserGesture() ? |
| NavigationGestureUser : NavigationGestureAuto; |
| + // If the navigation is not triggered by a user gesture, e.g. by some ajax |
| + // callback, then inherit the submitted password form from the previous |
| + // state. This fixes the no password save issue for ajax login, tracked in |
| + // [http://crbug/43219]. Note that there are still some sites that this |
| + // fails for because they use some element other than a submit button to |
| + // trigger submission. |
| + if (navigation_gesture_ == NavigationGestureAuto) { |
| + DocumentState* document_state_old = DocumentState::FromDataSource( |
|
Charlie Reis
2013/03/27 05:15:04
nit: old_document_state (more consistent with othe
Garrett Casto
2013/03/27 18:59:44
Done.
|
| + frame->dataSource()); |
| + const content::PasswordForm* password_form_old = |
|
Charlie Reis
2013/03/27 05:15:04
nit: old_password_form
Garrett Casto
2013/03/27 18:59:44
Done.
|
| + document_state_old->password_form_data(); |
| + if (password_form_old) { |
| + document_state->set_password_form_data( |
| + make_scoped_ptr(new content::PasswordForm(*password_form_old))); |
| + } |
| + } |
| + |
| // Make sure redirect tracking state is clear for the new load. |
| completed_client_redirect_src_ = Referrer(); |
| } else if (frame->parent()->isLoading()) { |