| 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 |