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