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

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

Issue 256003003: Enable Automatic Passwords Saving (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 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 "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 16 matching lines...) Expand all
27 namespace { 27 namespace {
28 28
29 const char kSpdyProxyRealm[] = "/SpdyProxy"; 29 const char kSpdyProxyRealm[] = "/SpdyProxy";
30 30
31 // This routine is called when PasswordManagers are constructed. 31 // This routine is called when PasswordManagers are constructed.
32 // 32 //
33 // Currently we report metrics only once at startup. We require 33 // Currently we report metrics only once at startup. We require
34 // that this is only ever called from a single thread in order to 34 // that this is only ever called from a single thread in order to
35 // avoid needing to lock (a static boolean flag is then sufficient to 35 // avoid needing to lock (a static boolean flag is then sufficient to
36 // guarantee running only once). 36 // guarantee running only once).
37 void ReportMetrics(bool password_manager_enabled) { 37 void ReportMetrics(bool password_manager_enabled,
38 bool password_manager_enable_automatic_passwords_saving) {
vabr (Chromium) 2014/04/28 09:13:14 I don't think we need UMA metrics until we expose
rchtara 2014/04/28 11:28:29 Done.
38 static base::PlatformThreadId initial_thread_id = 39 static base::PlatformThreadId initial_thread_id =
39 base::PlatformThread::CurrentId(); 40 base::PlatformThread::CurrentId();
40 DCHECK(initial_thread_id == base::PlatformThread::CurrentId()); 41 DCHECK(initial_thread_id == base::PlatformThread::CurrentId());
41 42
43
vabr (Chromium) 2014/04/28 09:13:14 nit: Please remove this blank line.
rchtara 2014/04/28 11:28:29 Done.
42 static bool ran_once = false; 44 static bool ran_once = false;
43 if (ran_once) 45 if (ran_once)
44 return; 46 return;
45 ran_once = true; 47 ran_once = true;
46 48
47 UMA_HISTOGRAM_BOOLEAN("PasswordManager.Enabled", password_manager_enabled); 49 UMA_HISTOGRAM_BOOLEAN("PasswordManager.Enabled", password_manager_enabled);
50 UMA_HISTOGRAM_BOOLEAN("PasswordManager.EnableAutomaticPasswordsSaving",
51 password_manager_enable_automatic_passwords_saving);
48 } 52 }
49 53
50 } // namespace 54 } // namespace
51 55
52 const char PasswordManager::kOtherPossibleUsernamesExperiment[] = 56 const char PasswordManager::kOtherPossibleUsernamesExperiment[] =
53 "PasswordManagerOtherPossibleUsernames"; 57 "PasswordManagerOtherPossibleUsernames";
54 58
55 // static 59 // static
56 void PasswordManager::RegisterProfilePrefs( 60 void PasswordManager::RegisterProfilePrefs(
57 user_prefs::PrefRegistrySyncable* registry) { 61 user_prefs::PrefRegistrySyncable* registry) {
58 registry->RegisterBooleanPref( 62 registry->RegisterBooleanPref(
59 prefs::kPasswordManagerEnabled, 63 prefs::kPasswordManagerEnabled,
60 true, 64 true,
61 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 65 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
62 registry->RegisterBooleanPref( 66 registry->RegisterBooleanPref(
67 prefs::kPasswordManagerEnableAutomaticPasswordsSaving,
vabr (Chromium) 2014/04/28 09:13:14 As noted in one of the comments above, please remo
rchtara 2014/04/28 11:28:29 Done.
68 false,
69 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
70 registry->RegisterBooleanPref(
63 prefs::kPasswordManagerAllowShowPasswords, 71 prefs::kPasswordManagerAllowShowPasswords,
64 true, 72 true,
65 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 73 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
66 registry->RegisterListPref(prefs::kPasswordManagerGroupsForDomains, 74 registry->RegisterListPref(prefs::kPasswordManagerGroupsForDomains,
67 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 75 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
68 } 76 }
69 77
70 PasswordManager::PasswordManager(PasswordManagerClient* client) 78 PasswordManager::PasswordManager(PasswordManagerClient* client)
71 : client_(client), driver_(client->GetDriver()) { 79 : client_(client), driver_(client->GetDriver()) {
72 DCHECK(client_); 80 DCHECK(client_);
73 DCHECK(driver_); 81 DCHECK(driver_);
74 password_manager_enabled_.Init(prefs::kPasswordManagerEnabled, 82 password_manager_enabled_.Init(prefs::kPasswordManagerEnabled,
75 client_->GetPrefs()); 83 client_->GetPrefs());
76 84
77 ReportMetrics(*password_manager_enabled_); 85 BooleanPrefMember enable_automatic_passwords_saving_pref;
vabr (Chromium) 2014/04/28 09:13:14 Ditto: As noted in one of the comments above, plea
rchtara 2014/04/28 11:28:29 Done.
86 enable_automatic_passwords_saving_pref.Init(
87 prefs::kPasswordManagerEnableAutomaticPasswordsSaving,
88 client_->GetPrefs());
89 enable_automatic_passwords_saving_ = *enable_automatic_passwords_saving_pref;
90 if (client_->IsAutomaticPasswordsSavingEnabled())
91 enable_automatic_passwords_saving_ = true;
92
93 ReportMetrics(*password_manager_enabled_,
94 enable_automatic_passwords_saving_);
78 } 95 }
79 96
80 PasswordManager::~PasswordManager() { 97 PasswordManager::~PasswordManager() {
81 FOR_EACH_OBSERVER(LoginModelObserver, observers_, OnLoginModelDestroying()); 98 FOR_EACH_OBSERVER(LoginModelObserver, observers_, OnLoginModelDestroying());
82 } 99 }
83 100
84 void PasswordManager::SetFormHasGeneratedPassword(const PasswordForm& form) { 101 void PasswordManager::SetFormHasGeneratedPassword(const PasswordForm& form) {
85 for (ScopedVector<PasswordFormManager>::iterator iter = 102 for (ScopedVector<PasswordFormManager>::iterator iter =
86 pending_login_managers_.begin(); 103 pending_login_managers_.begin();
87 iter != pending_login_managers_.end(); ++iter) { 104 iter != pending_login_managers_.end(); ++iter) {
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 // password saving enabled. 280 // password saving enabled.
264 PasswordStore::AuthorizationPromptPolicy prompt_policy = 281 PasswordStore::AuthorizationPromptPolicy prompt_policy =
265 *password_manager_enabled_ ? PasswordStore::ALLOW_PROMPT 282 *password_manager_enabled_ ? PasswordStore::ALLOW_PROMPT
266 : PasswordStore::DISALLOW_PROMPT; 283 : PasswordStore::DISALLOW_PROMPT;
267 284
268 manager->FetchMatchingLoginsFromPasswordStore(prompt_policy); 285 manager->FetchMatchingLoginsFromPasswordStore(prompt_policy);
269 } 286 }
270 } 287 }
271 288
272 bool PasswordManager::ShouldPromptUserToSavePassword() const { 289 bool PasswordManager::ShouldPromptUserToSavePassword() const {
273 return provisional_save_manager_->IsNewLogin() && 290 return !enable_automatic_passwords_saving_ &&
291 provisional_save_manager_->IsNewLogin() &&
274 !provisional_save_manager_->HasGeneratedPassword() && 292 !provisional_save_manager_->HasGeneratedPassword() &&
275 !provisional_save_manager_->IsPendingCredentialsPublicSuffixMatch(); 293 !provisional_save_manager_->IsPendingCredentialsPublicSuffixMatch();
276 } 294 }
277 295
278 void PasswordManager::OnPasswordFormsRendered( 296 void PasswordManager::OnPasswordFormsRendered(
279 const std::vector<PasswordForm>& visible_forms) { 297 const std::vector<PasswordForm>& visible_forms) {
280 if (!provisional_save_manager_.get()) 298 if (!provisional_save_manager_.get())
281 return; 299 return;
282 300
283 DCHECK(IsSavingEnabled()); 301 DCHECK(IsSavingEnabled());
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 observers_, 405 observers_,
388 OnAutofillDataAvailable(preferred_match.username_value, 406 OnAutofillDataAvailable(preferred_match.username_value,
389 preferred_match.password_value)); 407 preferred_match.password_value));
390 break; 408 break;
391 } 409 }
392 410
393 client_->PasswordWasAutofilled(best_matches); 411 client_->PasswordWasAutofilled(best_matches);
394 } 412 }
395 413
396 } // namespace password_manager 414 } // namespace password_manager
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698