Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/password_manager/core/browser/password_manager.h" | 5 #include "components/password_manager/core/browser/password_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <map> | 8 #include <map> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 130 } | 130 } |
| 131 | 131 |
| 132 return PreferredRealmIsFromAndroid(fill_data); | 132 return PreferredRealmIsFromAndroid(fill_data); |
| 133 } | 133 } |
| 134 | 134 |
| 135 bool AreAllFieldsEmpty(const PasswordForm& form) { | 135 bool AreAllFieldsEmpty(const PasswordForm& form) { |
| 136 return form.username_value.empty() && form.password_value.empty() && | 136 return form.username_value.empty() && form.password_value.empty() && |
| 137 form.new_password_value.empty(); | 137 form.new_password_value.empty(); |
| 138 } | 138 } |
| 139 | 139 |
| 140 bool IsPasswordUpdate(const PasswordFormManager& provisional_save_manager) { | |
|
vasilii
2017/07/21 12:48:20
Comment?
kolos1
2017/07/24 15:33:30
Done.
| |
| 141 return (!provisional_save_manager.best_matches().empty() && | |
| 142 provisional_save_manager | |
| 143 .is_possible_change_password_form_without_username()) || | |
| 144 provisional_save_manager.password_overridden() || | |
| 145 provisional_save_manager.retry_password_form_password_update(); | |
| 146 } | |
| 147 | |
| 140 } // namespace | 148 } // namespace |
| 141 | 149 |
| 142 // static | 150 // static |
| 143 void PasswordManager::RegisterProfilePrefs( | 151 void PasswordManager::RegisterProfilePrefs( |
| 144 user_prefs::PrefRegistrySyncable* registry) { | 152 user_prefs::PrefRegistrySyncable* registry) { |
| 145 #if defined(OS_IOS) || defined(OS_ANDROID) | 153 #if defined(OS_IOS) || defined(OS_ANDROID) |
| 146 uint32_t flags = PrefRegistry::NO_REGISTRATION_FLAGS; | 154 uint32_t flags = PrefRegistry::NO_REGISTRATION_FLAGS; |
| 147 #else | 155 #else |
| 148 uint32_t flags = user_prefs::PrefRegistrySyncable::SYNCABLE_PREF; | 156 uint32_t flags = user_prefs::PrefRegistrySyncable::SYNCABLE_PREF; |
| 149 #endif | 157 #endif |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 463 password_manager::PasswordManagerDriver* driver, | 471 password_manager::PasswordManagerDriver* driver, |
| 464 const PasswordForm& password_form) { | 472 const PasswordForm& password_form) { |
| 465 // TODO(msramek): This is just a sketch. We will need to show a custom bubble, | 473 // TODO(msramek): This is just a sketch. We will need to show a custom bubble, |
| 466 // mark the form as force saved, and recreate the pending login managers, | 474 // mark the form as force saved, and recreate the pending login managers, |
| 467 // because the password store might have changed. | 475 // because the password store might have changed. |
| 468 ProvisionallySavePassword(password_form, driver); | 476 ProvisionallySavePassword(password_form, driver); |
| 469 if (provisional_save_manager_) | 477 if (provisional_save_manager_) |
| 470 OnLoginSuccessful(); | 478 OnLoginSuccessful(); |
| 471 } | 479 } |
| 472 | 480 |
| 481 void PasswordManager::ShowManualFallback( | |
| 482 password_manager::PasswordManagerDriver* driver, | |
| 483 const PasswordForm& password_form) { | |
| 484 ProvisionallySavePassword(password_form, driver); | |
| 485 DCHECK(provisional_save_manager_); | |
| 486 DCHECK(provisional_save_manager_->form_fetcher()); | |
| 487 // TODO(crbug.com/741537): Process manual saving request even if there is | |
| 488 // still no response from the store. | |
| 489 if (provisional_save_manager_->form_fetcher()->GetState() != | |
|
vasilii
2017/07/21 12:48:20
== WAITING?
kolos1
2017/07/24 15:33:30
Done.
| |
| 490 FormFetcher::State::NOT_WAITING) { | |
| 491 return; | |
| 492 } | |
| 493 bool is_update = IsPasswordUpdate(*provisional_save_manager_); | |
| 494 client_->ShowManualFallback(std::move(provisional_save_manager_), is_update); | |
| 495 } | |
| 496 | |
| 497 void PasswordManager::HideManualFallback() { | |
| 498 client_->HideManualFallback(); | |
| 499 } | |
| 500 | |
| 473 void PasswordManager::OnPasswordFormsParsed( | 501 void PasswordManager::OnPasswordFormsParsed( |
| 474 password_manager::PasswordManagerDriver* driver, | 502 password_manager::PasswordManagerDriver* driver, |
| 475 const std::vector<PasswordForm>& forms) { | 503 const std::vector<PasswordForm>& forms) { |
| 476 CreatePendingLoginManagers(driver, forms); | 504 CreatePendingLoginManagers(driver, forms); |
| 477 } | 505 } |
| 478 | 506 |
| 479 void PasswordManager::CreatePendingLoginManagers( | 507 void PasswordManager::CreatePendingLoginManagers( |
| 480 password_manager::PasswordManagerDriver* driver, | 508 password_manager::PasswordManagerDriver* driver, |
| 481 const std::vector<PasswordForm>& forms) { | 509 const std::vector<PasswordForm>& forms) { |
| 482 std::unique_ptr<BrowserSavePasswordProgressLogger> logger; | 510 std::unique_ptr<BrowserSavePasswordProgressLogger> logger; |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 746 | 774 |
| 747 RecordWhetherTargetDomainDiffers(main_frame_url_, client_->GetMainFrameURL()); | 775 RecordWhetherTargetDomainDiffers(main_frame_url_, client_->GetMainFrameURL()); |
| 748 | 776 |
| 749 if (ShouldPromptUserToSavePassword()) { | 777 if (ShouldPromptUserToSavePassword()) { |
| 750 bool empty_password = | 778 bool empty_password = |
| 751 provisional_save_manager_->pending_credentials().username_value.empty(); | 779 provisional_save_manager_->pending_credentials().username_value.empty(); |
| 752 UMA_HISTOGRAM_BOOLEAN("PasswordManager.EmptyUsernames.OfferedToSave", | 780 UMA_HISTOGRAM_BOOLEAN("PasswordManager.EmptyUsernames.OfferedToSave", |
| 753 empty_password); | 781 empty_password); |
| 754 if (logger) | 782 if (logger) |
| 755 logger->LogMessage(Logger::STRING_DECISION_ASK); | 783 logger->LogMessage(Logger::STRING_DECISION_ASK); |
| 756 bool update_password = | 784 bool update_password = IsPasswordUpdate(*provisional_save_manager_); |
| 757 (!provisional_save_manager_->best_matches().empty() && | |
| 758 provisional_save_manager_ | |
| 759 ->is_possible_change_password_form_without_username()) || | |
| 760 provisional_save_manager_->password_overridden() || | |
| 761 provisional_save_manager_->retry_password_form_password_update(); | |
| 762 if (client_->PromptUserToSaveOrUpdatePassword( | 785 if (client_->PromptUserToSaveOrUpdatePassword( |
| 763 std::move(provisional_save_manager_), update_password)) { | 786 std::move(provisional_save_manager_), update_password)) { |
| 764 if (logger) | 787 if (logger) |
| 765 logger->LogMessage(Logger::STRING_SHOW_PASSWORD_PROMPT); | 788 logger->LogMessage(Logger::STRING_SHOW_PASSWORD_PROMPT); |
| 766 } | 789 } |
| 767 } else { | 790 } else { |
| 768 if (logger) | 791 if (logger) |
| 769 logger->LogMessage(Logger::STRING_DECISION_SAVE); | 792 logger->LogMessage(Logger::STRING_DECISION_SAVE); |
| 770 provisional_save_manager_->Save(); | 793 provisional_save_manager_->Save(); |
| 771 | 794 |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 928 current_match_result = result; | 951 current_match_result = result; |
| 929 } else if (result > current_match_result) { | 952 } else if (result > current_match_result) { |
| 930 matched_manager = login_manager.get(); | 953 matched_manager = login_manager.get(); |
| 931 current_match_result = result; | 954 current_match_result = result; |
| 932 } | 955 } |
| 933 } | 956 } |
| 934 return matched_manager; | 957 return matched_manager; |
| 935 } | 958 } |
| 936 | 959 |
| 937 } // namespace password_manager | 960 } // namespace password_manager |
| OLD | NEW |