Commit 88c5d987 authored by Jialiu Lin's avatar Jialiu Lin Committed by Commit Bot

Save new_password_value hash upon change password

Bug: 767621
Change-Id: I18aa2d13d2a255692adeee28e0319540358c3f31
Reviewed-on: https://chromium-review.googlesource.com/782799
Commit-Queue: Jialiu Lin <jialiul@chromium.org>
Reviewed-by: default avatarVadym Doroshenko <dvadym@chromium.org>
Cr-Commit-Position: refs/heads/master@{#518457}
parent 70decc91
......@@ -839,7 +839,10 @@ void PasswordManager::OnLoginSuccessful() {
? metrics_util::SyncPasswordHashChange::CHANGED_IN_CONTENT_AREA
: metrics_util::SyncPasswordHashChange::SAVED_IN_CONTENT_AREA);
store->SaveSyncPasswordHash(
provisional_save_manager_->submitted_form()->password_value);
is_sync_password_change
? provisional_save_manager_->submitted_form()
->new_password_value
: provisional_save_manager_->submitted_form()->password_value);
}
}
#endif
......
......@@ -16,6 +16,7 @@
#include "base/strings/utf_string_conversions.h"
#include "base/test/histogram_tester.h"
#include "base/test/scoped_feature_list.h"
#include "build/build_config.h"
#include "components/password_manager/core/browser/form_fetcher_impl.h"
#include "components/password_manager/core/browser/mock_password_store.h"
#include "components/password_manager/core/browser/password_autofill_manager.h"
......@@ -185,6 +186,20 @@ class PasswordManagerTest : public testing::Test {
return form;
}
PasswordForm MakeGAIAChangePasswordForm() {
PasswordForm form;
form.origin = GURL("https://accounts.google.com");
form.action = GURL("http://www.google.com/a/Login");
form.username_element = ASCIIToUTF16("Email");
form.new_password_element = ASCIIToUTF16("NewPasswd");
form.username_value = ASCIIToUTF16("googleuser");
form.new_password_value = ASCIIToUTF16("n3wp4ssword");
form.submit_element = ASCIIToUTF16("changePassword");
form.signon_realm = form.origin.spec();
form.form_data.name = ASCIIToUTF16("the-form-name");
return form;
}
// Create a sign-up form that only has a new password field.
PasswordForm MakeFormWithOnlyNewPasswordField() {
PasswordForm form = MakeSimpleForm();
......@@ -2172,4 +2187,31 @@ TEST_F(PasswordManagerTest, EntryToCheck_HTTP_auth) {
manager()->entry_to_check());
}
// Sync password hash should be updated upon submission of change password page.
TEST_F(PasswordManagerTest, SaveSyncPasswordHashOnChangePasswordPage) {
PasswordForm form(MakeGAIAChangePasswordForm());
EXPECT_CALL(*store_, GetLogins(_, _))
.WillRepeatedly(WithArg<1>(InvokeEmptyConsumerWithForms()));
std::vector<PasswordForm> observed;
observed.push_back(form);
manager()->OnPasswordFormsParsed(&driver_, observed);
manager()->OnPasswordFormsRendered(&driver_, observed, true);
// Submit form and finish navigation.
EXPECT_CALL(client_, IsSavingAndFillingEnabledForCurrentPage())
.WillRepeatedly(Return(true));
EXPECT_CALL(client_, GetPrefs()).WillRepeatedly(Return(nullptr));
#if defined(OS_WIN) || (defined(OS_MACOSX) && !defined(OS_IOS)) || \
(defined(OS_LINUX) && !defined(OS_CHROMEOS))
EXPECT_CALL(*store_, SaveSyncPasswordHash(form.new_password_value));
#endif
client_.FilterAllResultsForSaving();
OnPasswordFormSubmitted(form);
observed.clear();
manager()->OnPasswordFormsParsed(&driver_, observed);
manager()->OnPasswordFormsRendered(&driver_, observed, true);
}
} // namespace password_manager
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment