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 |