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

Side by Side Diff: chrome/browser/password_manager/password_manager.cc

Issue 151413008: Move ownership of Password(Generation)Manager to ContentPasswordDriver. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Handle WebContents having no PasswordManagerDelegateImpl attached Created 6 years, 10 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 | Annotate | Revision Log
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 "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
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
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/password_manager/password_manager.h ('k') | chrome/browser/password_manager/password_manager_delegate_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698