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 "base/string_util.h" | 7 #include "base/string_util.h" |
8 #include "chrome/browser/profile.h" | 8 #include "chrome/browser/profile.h" |
9 #include "chrome/browser/tab_contents/web_contents.h" | 9 #include "chrome/browser/tab_contents/web_contents.h" |
10 #include "chrome/common/l10n_util.h" | 10 #include "chrome/common/l10n_util.h" |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 new SavePasswordInfoBarDelegate(web_contents_, | 174 new SavePasswordInfoBarDelegate(web_contents_, |
175 provisional_save_manager_.release())); | 175 provisional_save_manager_.release())); |
176 } else { | 176 } else { |
177 // If the save is not a new username entry, then we just want to save this | 177 // If the save is not a new username entry, then we just want to save this |
178 // data (since the user already has related data saved), so don't prompt. | 178 // data (since the user already has related data saved), so don't prompt. |
179 provisional_save_manager_->Save(); | 179 provisional_save_manager_->Save(); |
180 provisional_save_manager_.reset(); | 180 provisional_save_manager_.reset(); |
181 } | 181 } |
182 } | 182 } |
183 | 183 |
184 void PasswordManager::PasswordFormsSeen(const std::vector<PasswordForm>& forms)
{ | 184 void PasswordManager::PasswordFormsSeen( |
| 185 const std::vector<PasswordForm>& forms) { |
185 if (!web_contents_->profile() || | 186 if (!web_contents_->profile() || |
186 !web_contents_->profile()->GetWebDataService(Profile::EXPLICIT_ACCESS)) | 187 !web_contents_->profile()->GetWebDataService(Profile::EXPLICIT_ACCESS)) |
187 return; | 188 return; |
188 if (!web_contents_->controller()) | 189 if (!web_contents_->controller()) |
189 return; | 190 return; |
190 if (!*password_manager_enabled_) | 191 if (!*password_manager_enabled_) |
191 return; | 192 return; |
192 | 193 |
193 // Ask the SSLManager for current security. | 194 // Ask the SSLManager for current security. |
194 bool had_ssl_error = web_contents_->controller()->ssl_manager()-> | 195 bool had_ssl_error = web_contents_->controller()->ssl_manager()-> |
(...skipping 14 matching lines...) Expand all Loading... |
209 bool ssl_valid = iter->origin.SchemeIsSecure() && !had_ssl_error; | 210 bool ssl_valid = iter->origin.SchemeIsSecure() && !had_ssl_error; |
210 PasswordFormManager* manager = | 211 PasswordFormManager* manager = |
211 new PasswordFormManager(web_contents_->profile(), | 212 new PasswordFormManager(web_contents_->profile(), |
212 this, *iter, ssl_valid); | 213 this, *iter, ssl_valid); |
213 pending_login_managers_.push_back(manager); | 214 pending_login_managers_.push_back(manager); |
214 manager->FetchMatchingLoginsFromWebDatabase(); | 215 manager->FetchMatchingLoginsFromWebDatabase(); |
215 } | 216 } |
216 } | 217 } |
217 } | 218 } |
218 | 219 |
219 void PasswordManager::Autofill(const PasswordForm& form_for_autofill, | 220 void PasswordManager::Autofill( |
220 const PasswordFormMap& best_matches, | 221 const PasswordForm& form_for_autofill, |
221 const PasswordForm* const preferred_match) const
{ | 222 const PasswordFormMap& best_matches, |
| 223 const PasswordForm* const preferred_match) const { |
222 DCHECK(web_contents_); | 224 DCHECK(web_contents_); |
223 DCHECK(preferred_match); | 225 DCHECK(preferred_match); |
224 switch (form_for_autofill.scheme) { | 226 switch (form_for_autofill.scheme) { |
225 case PasswordForm::SCHEME_HTML: { | 227 case PasswordForm::SCHEME_HTML: { |
226 // Note the check above is required because the observer_ for a non-HTML | 228 // Note the check above is required because the observer_ for a non-HTML |
227 // schemed password form may have been freed, so we need to distinguish. | 229 // schemed password form may have been freed, so we need to distinguish. |
228 bool action_mismatch = form_for_autofill.action.GetWithEmptyPath() != | 230 bool action_mismatch = form_for_autofill.action.GetWithEmptyPath() != |
229 preferred_match->action.GetWithEmptyPath(); | 231 preferred_match->action.GetWithEmptyPath(); |
230 PasswordFormDomManager::FillData fill_data; | 232 PasswordFormDomManager::FillData fill_data; |
231 PasswordFormDomManager::InitFillData(form_for_autofill, | 233 PasswordFormDomManager::InitFillData(form_for_autofill, |
232 best_matches, preferred_match, | 234 best_matches, preferred_match, |
233 action_mismatch, | 235 action_mismatch, |
234 &fill_data); | 236 &fill_data); |
235 web_contents_->render_view_host()->FillPasswordForm(fill_data); | 237 web_contents_->render_view_host()->FillPasswordForm(fill_data); |
236 return; | 238 return; |
237 } | 239 } |
238 default: | 240 default: |
239 if (observer_) | 241 if (observer_) |
240 observer_->OnAutofillDataAvailable(preferred_match->username_value, | 242 observer_->OnAutofillDataAvailable(preferred_match->username_value, |
241 preferred_match->password_value); | 243 preferred_match->password_value); |
242 } | 244 } |
243 } | 245 } |
244 | 246 |
OLD | NEW |