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 "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/metrics/field_trial.h" | 8 #include "base/metrics/field_trial.h" |
9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 | 55 |
56 } // namespace | 56 } // namespace |
57 | 57 |
58 const char PasswordManager::kOtherPossibleUsernamesExperiment[] = | 58 const char PasswordManager::kOtherPossibleUsernamesExperiment[] = |
59 "PasswordManagerOtherPossibleUsernames"; | 59 "PasswordManagerOtherPossibleUsernames"; |
60 | 60 |
61 // static | 61 // static |
62 void PasswordManager::RegisterProfilePrefs( | 62 void PasswordManager::RegisterProfilePrefs( |
63 user_prefs::PrefRegistrySyncable* registry) { | 63 user_prefs::PrefRegistrySyncable* registry) { |
64 registry->RegisterBooleanPref( | 64 registry->RegisterBooleanPref( |
65 prefs::kPasswordManagerEnabled, | 65 prefs::kPasswordManagerSavingEnabled, |
66 true, | 66 true, |
67 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); | 67 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); |
68 registry->RegisterBooleanPref( | 68 registry->RegisterBooleanPref( |
69 prefs::kPasswordManagerAllowShowPasswords, | 69 prefs::kPasswordManagerAllowShowPasswords, |
70 true, | 70 true, |
71 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 71 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
72 registry->RegisterListPref(prefs::kPasswordManagerGroupsForDomains, | 72 registry->RegisterListPref(prefs::kPasswordManagerGroupsForDomains, |
73 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 73 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
74 } | 74 } |
75 | 75 |
76 PasswordManager::PasswordManager(PasswordManagerClient* client) | 76 PasswordManager::PasswordManager(PasswordManagerClient* client) |
77 : client_(client), driver_(client->GetDriver()) { | 77 : client_(client), driver_(client->GetDriver()) { |
78 DCHECK(client_); | 78 DCHECK(client_); |
79 DCHECK(driver_); | 79 DCHECK(driver_); |
80 password_manager_enabled_.Init(prefs::kPasswordManagerEnabled, | 80 saving_password_enabled_.Init(prefs::kPasswordManagerSavingEnabled, |
81 client_->GetPrefs()); | 81 client_->GetPrefs()); |
82 | 82 |
83 ReportMetrics(*password_manager_enabled_); | 83 ReportMetrics(*saving_password_enabled_); |
84 } | 84 } |
85 | 85 |
86 PasswordManager::~PasswordManager() { | 86 PasswordManager::~PasswordManager() { |
87 FOR_EACH_OBSERVER(LoginModelObserver, observers_, OnLoginModelDestroying()); | 87 FOR_EACH_OBSERVER(LoginModelObserver, observers_, OnLoginModelDestroying()); |
88 } | 88 } |
89 | 89 |
90 void PasswordManager::SetFormHasGeneratedPassword(const PasswordForm& form) { | 90 void PasswordManager::SetFormHasGeneratedPassword(const PasswordForm& form) { |
91 DCHECK(IsSavingEnabledForCurrentPage()); | 91 DCHECK(IsSavingEnabledForCurrentPage()); |
92 | 92 |
93 for (ScopedVector<PasswordFormManager>::iterator iter = | 93 for (ScopedVector<PasswordFormManager>::iterator iter = |
(...skipping 11 matching lines...) Expand all Loading... |
105 // ability to detect forms. | 105 // ability to detect forms. |
106 bool ssl_valid = form.origin.SchemeIsSecure(); | 106 bool ssl_valid = form.origin.SchemeIsSecure(); |
107 PasswordFormManager* manager = | 107 PasswordFormManager* manager = |
108 new PasswordFormManager(this, client_, driver_, form, ssl_valid); | 108 new PasswordFormManager(this, client_, driver_, form, ssl_valid); |
109 pending_login_managers_.push_back(manager); | 109 pending_login_managers_.push_back(manager); |
110 manager->SetHasGeneratedPassword(); | 110 manager->SetHasGeneratedPassword(); |
111 // TODO(gcasto): Add UMA stats to track this. | 111 // TODO(gcasto): Add UMA stats to track this. |
112 } | 112 } |
113 | 113 |
114 bool PasswordManager::IsSavingEnabledForCurrentPage() const { | 114 bool PasswordManager::IsSavingEnabledForCurrentPage() const { |
115 return *password_manager_enabled_ && !driver_->IsOffTheRecord() && | 115 return *saving_password_enabled_ && !driver_->IsOffTheRecord() && |
116 !driver_->DidLastPageLoadEncounterSSLErrors(); | 116 !driver_->DidLastPageLoadEncounterSSLErrors(); |
117 } | 117 } |
118 | 118 |
119 void PasswordManager::ProvisionallySavePassword(const PasswordForm& form) { | 119 void PasswordManager::ProvisionallySavePassword(const PasswordForm& form) { |
120 bool is_saving_enabled = IsSavingEnabledForCurrentPage(); | 120 bool is_saving_enabled = IsSavingEnabledForCurrentPage(); |
121 | 121 |
122 scoped_ptr<BrowserSavePasswordProgressLogger> logger; | 122 scoped_ptr<BrowserSavePasswordProgressLogger> logger; |
123 if (client_->IsLoggingActive()) { | 123 if (client_->IsLoggingActive()) { |
124 logger.reset(new BrowserSavePasswordProgressLogger(client_)); | 124 logger.reset(new BrowserSavePasswordProgressLogger(client_)); |
125 logger->LogMessage(Logger::STRING_PROVISIONALLY_SAVE_PASSWORD_METHOD); | 125 logger->LogMessage(Logger::STRING_PROVISIONALLY_SAVE_PASSWORD_METHOD); |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 continue; // The current form is already managed. | 345 continue; // The current form is already managed. |
346 | 346 |
347 bool ssl_valid = iter->origin.SchemeIsSecure(); | 347 bool ssl_valid = iter->origin.SchemeIsSecure(); |
348 PasswordFormManager* manager = | 348 PasswordFormManager* manager = |
349 new PasswordFormManager(this, client_, driver_, *iter, ssl_valid); | 349 new PasswordFormManager(this, client_, driver_, *iter, ssl_valid); |
350 pending_login_managers_.push_back(manager); | 350 pending_login_managers_.push_back(manager); |
351 | 351 |
352 // Avoid prompting the user for access to a password if they don't have | 352 // Avoid prompting the user for access to a password if they don't have |
353 // password saving enabled. | 353 // password saving enabled. |
354 PasswordStore::AuthorizationPromptPolicy prompt_policy = | 354 PasswordStore::AuthorizationPromptPolicy prompt_policy = |
355 *password_manager_enabled_ ? PasswordStore::ALLOW_PROMPT | 355 *saving_password_enabled_ ? PasswordStore::ALLOW_PROMPT |
356 : PasswordStore::DISALLOW_PROMPT; | 356 : PasswordStore::DISALLOW_PROMPT; |
357 | 357 |
358 manager->FetchMatchingLoginsFromPasswordStore(prompt_policy); | 358 manager->FetchMatchingLoginsFromPasswordStore(prompt_policy); |
359 } | 359 } |
360 } | 360 } |
361 | 361 |
362 bool PasswordManager::ShouldPromptUserToSavePassword() const { | 362 bool PasswordManager::ShouldPromptUserToSavePassword() const { |
363 return !client_->IsAutomaticPasswordSavingEnabled() && | 363 return !client_->IsAutomaticPasswordSavingEnabled() && |
364 provisional_save_manager_->IsNewLogin() && | 364 provisional_save_manager_->IsNewLogin() && |
365 !provisional_save_manager_->HasGeneratedPassword() && | 365 !provisional_save_manager_->HasGeneratedPassword() && |
366 !provisional_save_manager_->IsPendingCredentialsPublicSuffixMatch(); | 366 !provisional_save_manager_->IsPendingCredentialsPublicSuffixMatch(); |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
518 observers_, | 518 observers_, |
519 OnAutofillDataAvailable(preferred_match.username_value, | 519 OnAutofillDataAvailable(preferred_match.username_value, |
520 preferred_match.password_value)); | 520 preferred_match.password_value)); |
521 break; | 521 break; |
522 } | 522 } |
523 | 523 |
524 client_->PasswordWasAutofilled(best_matches); | 524 client_->PasswordWasAutofilled(best_matches); |
525 } | 525 } |
526 | 526 |
527 } // namespace password_manager | 527 } // namespace password_manager |
OLD | NEW |