Commit 45720118 authored by Mohamed Amir Yosef's avatar Mohamed Amir Yosef Committed by Commit Bot

[Passwords] Implement MultiStorePasswordSaveManager::Clone()

Bug: 1012203
Change-Id: I91eb4f454cc899e444fda0f3983341c239ad6867
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1943233Reviewed-by: default avatarVadym Doroshenko <dvadym@chromium.org>
Commit-Queue: Mohamed Amir Yosef <mamir@chromium.org>
Cr-Commit-Position: refs/heads/master@{#722433}
parent bc3854ab
...@@ -94,6 +94,13 @@ void MultiStorePasswordSaveManager::Unblacklist( ...@@ -94,6 +94,13 @@ void MultiStorePasswordSaveManager::Unblacklist(
} }
} }
std::unique_ptr<PasswordSaveManager> MultiStorePasswordSaveManager::Clone() {
auto result = std::make_unique<MultiStorePasswordSaveManager>(
form_saver_->Clone(), account_store_form_saver_->Clone());
CloneInto(result.get());
return result;
}
bool MultiStorePasswordSaveManager::IsAccountStoreActive() { bool MultiStorePasswordSaveManager::IsAccountStoreActive() {
return client_->GetPasswordSyncState() == return client_->GetPasswordSyncState() ==
password_manager::ACCOUNT_PASSWORDS_ACTIVE_NORMAL_ENCRYPTION; password_manager::ACCOUNT_PASSWORDS_ACTIVE_NORMAL_ENCRYPTION;
......
...@@ -41,6 +41,8 @@ class MultiStorePasswordSaveManager : public PasswordSaveManagerImpl { ...@@ -41,6 +41,8 @@ class MultiStorePasswordSaveManager : public PasswordSaveManagerImpl {
const PasswordStore::FormDigest& form_digest) override; const PasswordStore::FormDigest& form_digest) override;
void Unblacklist(const PasswordStore::FormDigest& form_digest) override; void Unblacklist(const PasswordStore::FormDigest& form_digest) override;
std::unique_ptr<PasswordSaveManager> Clone() override;
protected: protected:
FormSaver* GetFormSaverForGeneration() override; FormSaver* GetFormSaverForGeneration() override;
......
...@@ -351,12 +351,7 @@ bool PasswordSaveManagerImpl::HasGeneratedPassword() const { ...@@ -351,12 +351,7 @@ bool PasswordSaveManagerImpl::HasGeneratedPassword() const {
std::unique_ptr<PasswordSaveManager> PasswordSaveManagerImpl::Clone() { std::unique_ptr<PasswordSaveManager> PasswordSaveManagerImpl::Clone() {
auto result = std::make_unique<PasswordSaveManagerImpl>(form_saver_->Clone()); auto result = std::make_unique<PasswordSaveManagerImpl>(form_saver_->Clone());
CloneInto(result.get());
if (generation_manager_)
result->generation_manager_ = generation_manager_->Clone();
result->pending_credentials_ = pending_credentials_;
result->pending_credentials_state_ = pending_credentials_state_;
return result; return result;
} }
...@@ -459,4 +454,13 @@ void PasswordSaveManagerImpl::UpdateInternal( ...@@ -459,4 +454,13 @@ void PasswordSaveManagerImpl::UpdateInternal(
form_saver_->Update(pending_credentials_, matches, old_password); form_saver_->Update(pending_credentials_, matches, old_password);
} }
void PasswordSaveManagerImpl::CloneInto(PasswordSaveManagerImpl* clone) {
DCHECK(clone);
if (generation_manager_)
clone->generation_manager_ = generation_manager_->Clone();
clone->pending_credentials_ = pending_credentials_;
clone->pending_credentials_state_ = pending_credentials_state_;
}
} // namespace password_manager } // namespace password_manager
...@@ -86,6 +86,9 @@ class PasswordSaveManagerImpl : public PasswordSaveManager { ...@@ -86,6 +86,9 @@ class PasswordSaveManagerImpl : public PasswordSaveManager {
const std::vector<const autofill::PasswordForm*>& matches, const std::vector<const autofill::PasswordForm*>& matches,
const base::string16& old_password); const base::string16& old_password);
// Clones the current object into |clone|. |clone| must not be null.
void CloneInto(PasswordSaveManagerImpl* clone);
// FormSaver instance used by |this| to all tasks related to storing // FormSaver instance used by |this| to all tasks related to storing
// credentials. // credentials.
const std::unique_ptr<FormSaver> form_saver_; const std::unique_ptr<FormSaver> form_saver_;
......
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