Commit 44ba3db4 authored by Vadym Doroshenko's avatar Vadym Doroshenko Committed by Commit Bot

Implement updating FormManagers on Save/Update in NewPasswordFormManager.

This reproduces the same login in PasswordFormManager. As soon as a change
in PasswordStore happens we need to inform all form managers about it in
order to avoid strange behaviours - for example show save prompt when the
credentials were already saved.

Bug: 831123
Change-Id: Ie49d05e0fbea5d4dbe824220362d30a43e16809d
Reviewed-on: https://chromium-review.googlesource.com/c/1341917Reviewed-by: default avatarVaclav Brozek <vabr@chromium.org>
Commit-Queue: Vadym Doroshenko <dvadym@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609364}
parent f005a035
......@@ -280,7 +280,7 @@ void NewPasswordFormManager::Save() {
metrics_util::PASSWORD_USED);
}
// TODO(https://crbug.com/831123): Implement updating Password Form Managers.
client_->UpdateFormManagers();
}
void NewPasswordFormManager::Update(const PasswordForm& credentials_to_update) {
......@@ -308,6 +308,8 @@ void NewPasswordFormManager::Update(const PasswordForm& credentials_to_update) {
FindOtherCredentialsToUpdate();
form_saver_->Update(pending_credentials_, best_matches_,
&more_credentials_to_update, nullptr);
client_->UpdateFormManagers();
}
void NewPasswordFormManager::UpdateUsername(
......
......@@ -56,6 +56,14 @@ class MockPasswordManagerDriver : public StubPasswordManagerDriver {
MOCK_METHOD1(AllowPasswordGenerationForForm, void(const PasswordForm&));
};
class MockPasswordManagerClient : public StubPasswordManagerClient {
public:
MockPasswordManagerClient() = default;
~MockPasswordManagerClient() override = default;
MOCK_METHOD0(UpdateFormManagers, void());
};
void CheckPendingCredentials(const PasswordForm& expected,
const PasswordForm& actual) {
EXPECT_EQ(expected.signon_realm, actual.signon_realm);
......@@ -279,7 +287,7 @@ class NewPasswordFormManagerTest : public testing::Test {
PasswordForm blacklisted_match_;
PasswordForm parsed_observed_form_;
PasswordForm parsed_submitted_form_;
StubPasswordManagerClient client_;
MockPasswordManagerClient client_;
MockPasswordManagerDriver driver_;
scoped_refptr<TestMockTimeTaskRunner> task_runner_;
// Define |fetcher_| before |form_manager_|, because the former needs to
......@@ -715,6 +723,7 @@ TEST_F(NewPasswordFormManagerTest, SaveNewCredentials) {
std::map<base::string16, const PasswordForm*> best_matches;
EXPECT_CALL(form_saver, Save(_, _))
.WillOnce(DoAll(SaveArg<0>(&saved_form), SaveArg<1>(&best_matches)));
EXPECT_CALL(client_, UpdateFormManagers());
form_manager_->Save();
......@@ -1364,6 +1373,7 @@ TEST_F(NewPasswordFormManagerTest, Update) {
EXPECT_CALL(form_saver, Update(_, _, _, nullptr))
.WillOnce(DoAll(SaveArg<0>(&updated_form), SaveArg<1>(&best_matches),
SaveArgPointee<2>(&credentials_to_update)));
EXPECT_CALL(client_, UpdateFormManagers());
form_manager_->Update(saved_match_);
......
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