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 "chrome/browser/password_manager/password_manager.h" | 5 #include "chrome/browser/password_manager/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 19 matching lines...) Expand all Loading... |
30 #include "content/public/browser/web_contents.h" | 30 #include "content/public/browser/web_contents.h" |
31 #include "content/public/common/frame_navigate_params.h" | 31 #include "content/public/common/frame_navigate_params.h" |
32 #include "grit/generated_resources.h" | 32 #include "grit/generated_resources.h" |
33 | 33 |
34 using autofill::PasswordForm; | 34 using autofill::PasswordForm; |
35 using autofill::PasswordFormMap; | 35 using autofill::PasswordFormMap; |
36 using base::UserMetricsAction; | 36 using base::UserMetricsAction; |
37 using content::BrowserThread; | 37 using content::BrowserThread; |
38 using content::WebContents; | 38 using content::WebContents; |
39 | 39 |
40 DEFINE_WEB_CONTENTS_USER_DATA_KEY(PasswordManager); | |
41 | |
42 namespace { | 40 namespace { |
43 | 41 |
44 const char kSpdyProxyRealm[] = "/SpdyProxy"; | 42 const char kSpdyProxyRealm[] = "/SpdyProxy"; |
45 const char kOtherPossibleUsernamesExperiment[] = | 43 const char kOtherPossibleUsernamesExperiment[] = |
46 "PasswordManagerOtherPossibleUsernames"; | 44 "PasswordManagerOtherPossibleUsernames"; |
47 | 45 |
48 void ReportOsPassword() { | 46 void ReportOsPassword() { |
49 password_manager_util::OsPasswordStatus status = | 47 password_manager_util::OsPasswordStatus status = |
50 password_manager_util::GetOsPasswordStatus(); | 48 password_manager_util::GetOsPasswordStatus(); |
51 | 49 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 true, | 88 true, |
91 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); | 89 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); |
92 registry->RegisterBooleanPref( | 90 registry->RegisterBooleanPref( |
93 prefs::kPasswordManagerAllowShowPasswords, | 91 prefs::kPasswordManagerAllowShowPasswords, |
94 true, | 92 true, |
95 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 93 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
96 registry->RegisterListPref(prefs::kPasswordManagerGroupsForDomains, | 94 registry->RegisterListPref(prefs::kPasswordManagerGroupsForDomains, |
97 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 95 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
98 } | 96 } |
99 | 97 |
100 // static | |
101 void PasswordManager::CreateForWebContentsAndDelegate( | |
102 content::WebContents* contents, | |
103 PasswordManagerDelegate* delegate) { | |
104 if (FromWebContents(contents)) { | |
105 DCHECK_EQ(delegate, FromWebContents(contents)->delegate_); | |
106 return; | |
107 } | |
108 | |
109 contents->SetUserData(UserDataKey(), | |
110 new PasswordManager(contents, delegate)); | |
111 } | |
112 | |
113 PasswordManager::PasswordManager(WebContents* web_contents, | 98 PasswordManager::PasswordManager(WebContents* web_contents, |
114 PasswordManagerDelegate* delegate) | 99 PasswordManagerDelegate* delegate) |
115 : content::WebContentsObserver(web_contents), | 100 : content::WebContentsObserver(web_contents), |
116 delegate_(delegate), | 101 delegate_(delegate), |
117 driver_(delegate->GetDriver()) { | 102 driver_(delegate->GetDriver()) { |
118 DCHECK(delegate_); | 103 DCHECK(delegate_); |
119 DCHECK(driver_); | 104 DCHECK(driver_); |
120 password_manager_enabled_.Init(prefs::kPasswordManagerEnabled, | 105 password_manager_enabled_.Init(prefs::kPasswordManagerEnabled, |
121 delegate_->GetProfile()->GetPrefs()); | 106 delegate_->GetProfile()->GetPrefs()); |
122 | 107 |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 // Chrome to manage such passwords. For other passwords, respect the | 214 // Chrome to manage such passwords. For other passwords, respect the |
230 // autocomplete attribute if autocomplete='off' is not ignored. | 215 // autocomplete attribute if autocomplete='off' is not ignored. |
231 if (!autofill::ShouldIgnoreAutocompleteOffForPasswordFields() && | 216 if (!autofill::ShouldIgnoreAutocompleteOffForPasswordFields() && |
232 !manager->HasGeneratedPassword() && | 217 !manager->HasGeneratedPassword() && |
233 !form.password_autocomplete_set) { | 218 !form.password_autocomplete_set) { |
234 RecordFailure(AUTOCOMPLETE_OFF, form.origin.host()); | 219 RecordFailure(AUTOCOMPLETE_OFF, form.origin.host()); |
235 return; | 220 return; |
236 } | 221 } |
237 | 222 |
238 PasswordForm provisionally_saved_form(form); | 223 PasswordForm provisionally_saved_form(form); |
239 provisionally_saved_form.ssl_valid = form.origin.SchemeIsSecure() && | 224 provisionally_saved_form.ssl_valid = |
| 225 form.origin.SchemeIsSecure() && |
240 !driver_->DidLastPageLoadEncounterSSLErrors(); | 226 !driver_->DidLastPageLoadEncounterSSLErrors(); |
241 provisionally_saved_form.preferred = true; | 227 provisionally_saved_form.preferred = true; |
242 PasswordFormManager::OtherPossibleUsernamesAction action = | 228 PasswordFormManager::OtherPossibleUsernamesAction action = |
243 PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES; | 229 PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES; |
244 if (OtherPossibleUsernamesEnabled()) | 230 if (OtherPossibleUsernamesEnabled()) |
245 action = PasswordFormManager::ALLOW_OTHER_POSSIBLE_USERNAMES; | 231 action = PasswordFormManager::ALLOW_OTHER_POSSIBLE_USERNAMES; |
246 manager->ProvisionallySave(provisionally_saved_form, action); | 232 manager->ProvisionallySave(provisionally_saved_form, action); |
247 provisional_save_manager_.swap(manager); | 233 provisional_save_manager_.swap(manager); |
248 } | 234 } |
249 | 235 |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
468 } | 454 } |
469 | 455 |
470 ManagePasswordsBubbleUIController* manage_passwords_bubble_ui_controller = | 456 ManagePasswordsBubbleUIController* manage_passwords_bubble_ui_controller = |
471 ManagePasswordsBubbleUIController::FromWebContents(web_contents()); | 457 ManagePasswordsBubbleUIController::FromWebContents(web_contents()); |
472 if (manage_passwords_bubble_ui_controller && | 458 if (manage_passwords_bubble_ui_controller && |
473 CommandLine::ForCurrentProcess()->HasSwitch( | 459 CommandLine::ForCurrentProcess()->HasSwitch( |
474 switches::kEnableSavePasswordBubble)) { | 460 switches::kEnableSavePasswordBubble)) { |
475 manage_passwords_bubble_ui_controller->OnPasswordAutofilled(best_matches); | 461 manage_passwords_bubble_ui_controller->OnPasswordAutofilled(best_matches); |
476 } | 462 } |
477 } | 463 } |
OLD | NEW |