diff options
Diffstat (limited to 'chromium/components/password_manager/core/browser/password_manager_unittest.cc')
-rw-r--r-- | chromium/components/password_manager/core/browser/password_manager_unittest.cc | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/chromium/components/password_manager/core/browser/password_manager_unittest.cc b/chromium/components/password_manager/core/browser/password_manager_unittest.cc index cd59471e765..18e357556d4 100644 --- a/chromium/components/password_manager/core/browser/password_manager_unittest.cc +++ b/chromium/components/password_manager/core/browser/password_manager_unittest.cc @@ -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(); @@ -2135,4 +2150,31 @@ TEST_F(PasswordManagerTest, ProcessAutofillPredictions) { manager()->ProcessAutofillPredictions(&driver_, forms); } +// 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 |