Chromium Code Reviews| 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 3546bfe79bfb3e55ab159168001b38cc0d95608c..d137543a6cb4f342bdc3d107c47b82b90a2fd14c 100644 |
| --- a/components/password_manager/core/browser/password_manager.cc |
| +++ b/components/password_manager/core/browser/password_manager.cc |
| @@ -137,6 +137,14 @@ bool AreAllFieldsEmpty(const PasswordForm& form) { |
| form.new_password_value.empty(); |
| } |
| +bool IsPasswordUpdate(const PasswordFormManager& provisional_save_manager) { |
|
vasilii
2017/07/21 12:48:20
Comment?
kolos1
2017/07/24 15:33:30
Done.
|
| + return (!provisional_save_manager.best_matches().empty() && |
| + provisional_save_manager |
| + .is_possible_change_password_form_without_username()) || |
| + provisional_save_manager.password_overridden() || |
| + provisional_save_manager.retry_password_form_password_update(); |
| +} |
| + |
| } // namespace |
| // static |
| @@ -470,6 +478,26 @@ void PasswordManager::OnPasswordFormForceSaveRequested( |
| OnLoginSuccessful(); |
| } |
| +void PasswordManager::ShowManualFallback( |
| + password_manager::PasswordManagerDriver* driver, |
| + const PasswordForm& password_form) { |
| + ProvisionallySavePassword(password_form, driver); |
| + DCHECK(provisional_save_manager_); |
| + DCHECK(provisional_save_manager_->form_fetcher()); |
| + // TODO(crbug.com/741537): Process manual saving request even if there is |
| + // still no response from the store. |
| + if (provisional_save_manager_->form_fetcher()->GetState() != |
|
vasilii
2017/07/21 12:48:20
== WAITING?
kolos1
2017/07/24 15:33:30
Done.
|
| + FormFetcher::State::NOT_WAITING) { |
| + return; |
| + } |
| + bool is_update = IsPasswordUpdate(*provisional_save_manager_); |
| + client_->ShowManualFallback(std::move(provisional_save_manager_), is_update); |
| +} |
| + |
| +void PasswordManager::HideManualFallback() { |
| + client_->HideManualFallback(); |
| +} |
| + |
| void PasswordManager::OnPasswordFormsParsed( |
| password_manager::PasswordManagerDriver* driver, |
| const std::vector<PasswordForm>& forms) { |
| @@ -753,12 +781,7 @@ void PasswordManager::OnLoginSuccessful() { |
| empty_password); |
| if (logger) |
| logger->LogMessage(Logger::STRING_DECISION_ASK); |
| - bool update_password = |
| - (!provisional_save_manager_->best_matches().empty() && |
| - provisional_save_manager_ |
| - ->is_possible_change_password_form_without_username()) || |
| - provisional_save_manager_->password_overridden() || |
| - provisional_save_manager_->retry_password_form_password_update(); |
| + bool update_password = IsPasswordUpdate(*provisional_save_manager_); |
| if (client_->PromptUserToSaveOrUpdatePassword( |
| std::move(provisional_save_manager_), update_password)) { |
| if (logger) |