| Index: components/password_manager/core/browser/password_manager.cc
|
| diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc
|
| index 804aa5d4348ce113c20c7fc59ab3fa4754090ce6..df1208d08c74d832936efae8a6144c4fb80466b5 100644
|
| --- a/components/password_manager/core/browser/password_manager.cc
|
| +++ b/components/password_manager/core/browser/password_manager.cc
|
| @@ -238,7 +238,7 @@ void PasswordManager::SetGenerationElementAndReasonForForm(
|
| // If there is no corresponding PasswordFormManager, we create one. This is
|
| // not the common case, and should only happen when there is a bug in our
|
| // ability to detect forms.
|
| - auto manager = base::MakeUnique<PasswordFormManager>(
|
| + auto manager = base::MakeRefCounted<PasswordFormManager>(
|
| this, client_, driver->AsWeakPtr(), form,
|
| base::WrapUnique(new FormSaverImpl(client_->GetPasswordStore())),
|
| nullptr);
|
| @@ -349,11 +349,9 @@ void PasswordManager::ProvisionallySavePassword(
|
| return;
|
| }
|
|
|
| - std::unique_ptr<PasswordFormManager> manager;
|
| - // Transfer ownership of the manager from |pending_login_managers_| to
|
| + // Copy ownership of the manager from |pending_login_managers_| to
|
| // |manager|.
|
| - manager.swap(*matched_manager_it);
|
| - pending_login_managers_.erase(matched_manager_it);
|
| + scoped_refptr<PasswordFormManager> manager(*matched_manager_it);
|
|
|
| PasswordForm submitted_form(form);
|
| submitted_form.preferred = true;
|
| @@ -410,7 +408,7 @@ void PasswordManager::UpdateFormManagers() {
|
|
|
| void PasswordManager::DropFormManagers() {
|
| pending_login_managers_.clear();
|
| - provisional_save_manager_.reset();
|
| + provisional_save_manager_ = nullptr;
|
| all_visible_forms_.clear();
|
| }
|
|
|
| @@ -567,7 +565,7 @@ void PasswordManager::CreatePendingLoginManagers(
|
|
|
| if (logger)
|
| logger->LogFormSignatures(Logger::STRING_ADDING_SIGNATURE, *iter);
|
| - auto manager = base::MakeUnique<PasswordFormManager>(
|
| + auto manager = base::MakeRefCounted<PasswordFormManager>(
|
| this, client_,
|
| (driver ? driver->AsWeakPtr() : base::WeakPtr<PasswordManagerDriver>()),
|
| *iter, base::WrapUnique(new FormSaverImpl(client_->GetPasswordStore())),
|
| @@ -603,7 +601,7 @@ bool PasswordManager::CanProvisionalManagerSave() {
|
| RecordFailure(MATCHING_NOT_COMPLETE,
|
| provisional_save_manager_->observed_form().origin,
|
| logger.get());
|
| - provisional_save_manager_.reset();
|
| + provisional_save_manager_ = nullptr;
|
| return false;
|
| }
|
| return true;
|
| @@ -650,7 +648,7 @@ void PasswordManager::OnPasswordFormsRendered(
|
| if (logger)
|
| logger->LogMessage(Logger::STRING_DECISION_DROP);
|
| provisional_save_manager_->LogSubmitFailed();
|
| - provisional_save_manager_.reset();
|
| + provisional_save_manager_ = nullptr;
|
| return;
|
| }
|
|
|
| @@ -687,7 +685,7 @@ void PasswordManager::OnPasswordFormsRendered(
|
| all_visible_forms_[i]);
|
| logger->LogMessage(Logger::STRING_DECISION_DROP);
|
| }
|
| - provisional_save_manager_.reset();
|
| + provisional_save_manager_ = nullptr;
|
| // Clear all_visible_forms_ once we found the match.
|
| all_visible_forms_.clear();
|
| return;
|
| @@ -754,7 +752,7 @@ void PasswordManager::OnLoginSuccessful() {
|
| RecordFailure(SYNC_CREDENTIAL,
|
| provisional_save_manager_->observed_form().origin,
|
| logger.get());
|
| - provisional_save_manager_.reset();
|
| + provisional_save_manager_ = nullptr;
|
| return;
|
| }
|
| }
|
| @@ -794,7 +792,7 @@ void PasswordManager::OnLoginSuccessful() {
|
| if (provisional_save_manager_->has_generated_password()) {
|
| client_->AutomaticPasswordSave(std::move(provisional_save_manager_));
|
| } else {
|
| - provisional_save_manager_.reset();
|
| + provisional_save_manager_ = nullptr;
|
| }
|
| }
|
| }
|
|
|