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; |
} |
} |
} |