Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(201)

Side by Side Diff: components/password_manager/core/browser/password_manager.cc

Issue 2915763003: [Password Manager] Show omnibox icon and anchored prompt once user start typing password (Closed)
Patch Set: Sent For Review Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698