OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 <vector> | 7 #include <vector> |
8 | 8 |
9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" |
10 #include "app/resource_bundle.h" | 10 #include "app/resource_bundle.h" |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 if (provisional_save_manager_->IsNewLogin()) { | 109 if (provisional_save_manager_->IsNewLogin()) { |
110 delegate_->AddSavePasswordInfoBar(provisional_save_manager_.release()); | 110 delegate_->AddSavePasswordInfoBar(provisional_save_manager_.release()); |
111 } else { | 111 } else { |
112 // If the save is not a new username entry, then we just want to save this | 112 // If the save is not a new username entry, then we just want to save this |
113 // data (since the user already has related data saved), so don't prompt. | 113 // data (since the user already has related data saved), so don't prompt. |
114 provisional_save_manager_->Save(); | 114 provisional_save_manager_->Save(); |
115 provisional_save_manager_.reset(); | 115 provisional_save_manager_.reset(); |
116 } | 116 } |
117 } | 117 } |
118 | 118 |
119 void PasswordManager::PasswordFormsSeen( | 119 void PasswordManager::PasswordFormsFound( |
120 const std::vector<PasswordForm>& forms) { | 120 const std::vector<PasswordForm>& forms) { |
121 if (!delegate_->GetProfileForPasswordManager()) | 121 if (!delegate_->GetProfileForPasswordManager()) |
122 return; | 122 return; |
123 if (!*password_manager_enabled_) | 123 if (!*password_manager_enabled_) |
124 return; | 124 return; |
125 | 125 |
126 // Ask the SSLManager for current security. | 126 // Ask the SSLManager for current security. |
127 bool had_ssl_error = delegate_->DidLastPageLoadEncounterSSLErrors(); | 127 bool had_ssl_error = delegate_->DidLastPageLoadEncounterSSLErrors(); |
128 | 128 |
129 std::vector<PasswordForm>::const_iterator iter; | 129 std::vector<PasswordForm>::const_iterator iter; |
130 for (iter = forms.begin(); iter != forms.end(); iter++) { | 130 for (iter = forms.begin(); iter != forms.end(); iter++) { |
131 if (provisional_save_manager_.get() && | 131 bool ssl_valid = iter->origin.SchemeIsSecure() && !had_ssl_error; |
132 provisional_save_manager_->DoesManage(*iter)) { | 132 PasswordFormManager* manager = |
133 // The form trying to be saved has immediately re-appeared. Assume | 133 new PasswordFormManager(delegate_->GetProfileForPasswordManager(), |
134 // login failure and abort this save. Fallback to pending login state | 134 this, *iter, ssl_valid); |
135 // since the user may try again. | 135 pending_login_managers_.push_back(manager); |
136 pending_login_managers_.push_back(provisional_save_manager_.release()); | 136 manager->FetchMatchingLoginsFromWebDatabase(); |
| 137 } |
| 138 } |
| 139 |
| 140 void PasswordManager::PasswordFormsVisible( |
| 141 const std::vector<PasswordForm>& visible_forms) { |
| 142 if (!provisional_save_manager_.get()) |
| 143 return; |
| 144 std::vector<PasswordForm>::const_iterator iter; |
| 145 for (iter = visible_forms.begin(); iter != visible_forms.end(); iter++) { |
| 146 if (provisional_save_manager_->DoesManage(*iter)) { |
| 147 // The form trying to be saved has immediately re-appeared. Assume login |
| 148 // failure and abort this save, by clearing provisional_save_manager_. |
137 // Don't delete the login managers since the user may try again | 149 // Don't delete the login managers since the user may try again |
138 // and we want to be able to save in that case. | 150 // and we want to be able to save in that case. |
| 151 provisional_save_manager_.release(); |
139 break; | 152 break; |
140 } else { | |
141 bool ssl_valid = iter->origin.SchemeIsSecure() && !had_ssl_error; | |
142 PasswordFormManager* manager = | |
143 new PasswordFormManager(delegate_->GetProfileForPasswordManager(), | |
144 this, *iter, ssl_valid); | |
145 pending_login_managers_.push_back(manager); | |
146 manager->FetchMatchingLoginsFromWebDatabase(); | |
147 } | 153 } |
148 } | 154 } |
149 } | 155 } |
150 | 156 |
151 void PasswordManager::Autofill( | 157 void PasswordManager::Autofill( |
152 const PasswordForm& form_for_autofill, | 158 const PasswordForm& form_for_autofill, |
153 const PasswordFormMap& best_matches, | 159 const PasswordFormMap& best_matches, |
154 const PasswordForm* const preferred_match) const { | 160 const PasswordForm* const preferred_match) const { |
155 DCHECK(preferred_match); | 161 DCHECK(preferred_match); |
156 switch (form_for_autofill.scheme) { | 162 switch (form_for_autofill.scheme) { |
(...skipping 12 matching lines...) Expand all Loading... |
169 return; | 175 return; |
170 } | 176 } |
171 default: | 177 default: |
172 if (observer_) { | 178 if (observer_) { |
173 observer_->OnAutofillDataAvailable( | 179 observer_->OnAutofillDataAvailable( |
174 UTF16ToWideHack(preferred_match->username_value), | 180 UTF16ToWideHack(preferred_match->username_value), |
175 UTF16ToWideHack(preferred_match->password_value)); | 181 UTF16ToWideHack(preferred_match->password_value)); |
176 } | 182 } |
177 } | 183 } |
178 } | 184 } |
OLD | NEW |