| Index: content/renderer/render_view_impl.cc
|
| diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
|
| index 6150165f7eb254e287167fc3336852a003a978e2..6df5967550fe3518b2807ccedac478d402a00dca 100644
|
| --- a/content/renderer/render_view_impl.cc
|
| +++ b/content/renderer/render_view_impl.cc
|
| @@ -3346,6 +3346,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(
|
| + frame->dataSource());
|
| + const content::PasswordForm* password_form_old =
|
| + 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()) {
|
|
|