| 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_form_manager.h" | 5 #include "chrome/browser/password_manager/password_form_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
| 10 #include "base/strings/string_split.h" | 10 #include "base/strings/string_split.h" |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 pending_credentials_.preferred = true; | 120 pending_credentials_.preferred = true; |
| 121 pending_credentials_.blacklisted_by_user = true; | 121 pending_credentials_.blacklisted_by_user = true; |
| 122 pending_credentials_.username_value.clear(); | 122 pending_credentials_.username_value.clear(); |
| 123 pending_credentials_.password_value.clear(); | 123 pending_credentials_.password_value.clear(); |
| 124 | 124 |
| 125 // Retroactively forget existing matches for this form, so we NEVER prompt or | 125 // Retroactively forget existing matches for this form, so we NEVER prompt or |
| 126 // autofill it again. | 126 // autofill it again. |
| 127 if (!best_matches_.empty()) { | 127 if (!best_matches_.empty()) { |
| 128 PasswordFormMap::const_iterator iter; | 128 PasswordFormMap::const_iterator iter; |
| 129 PasswordStore* password_store = PasswordStoreFactory::GetForProfile( | 129 PasswordStore* password_store = PasswordStoreFactory::GetForProfile( |
| 130 profile_, Profile::EXPLICIT_ACCESS); | 130 profile_, Profile::EXPLICIT_ACCESS).get(); |
| 131 if (!password_store) { | 131 if (!password_store) { |
| 132 NOTREACHED(); | 132 NOTREACHED(); |
| 133 return; | 133 return; |
| 134 } | 134 } |
| 135 for (iter = best_matches_.begin(); iter != best_matches_.end(); ++iter) { | 135 for (iter = best_matches_.begin(); iter != best_matches_.end(); ++iter) { |
| 136 // We want to remove existing matches for this form so that the exact | 136 // We want to remove existing matches for this form so that the exact |
| 137 // origin match with |blackisted_by_user == true| is the only result that | 137 // origin match with |blackisted_by_user == true| is the only result that |
| 138 // shows up in the future for this origin URL. However, we don't want to | 138 // shows up in the future for this origin URL. However, we don't want to |
| 139 // delete logins that were actually saved on a different page (hence with | 139 // delete logins that were actually saved on a different page (hence with |
| 140 // different origin URL) and just happened to match this form because of | 140 // different origin URL) and just happened to match this form because of |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 if (IsNewLogin()) | 233 if (IsNewLogin()) |
| 234 SaveAsNewLogin(true); | 234 SaveAsNewLogin(true); |
| 235 else | 235 else |
| 236 UpdateLogin(); | 236 UpdateLogin(); |
| 237 } | 237 } |
| 238 | 238 |
| 239 void PasswordFormManager::FetchMatchingLoginsFromPasswordStore() { | 239 void PasswordFormManager::FetchMatchingLoginsFromPasswordStore() { |
| 240 DCHECK_EQ(state_, PRE_MATCHING_PHASE); | 240 DCHECK_EQ(state_, PRE_MATCHING_PHASE); |
| 241 state_ = MATCHING_PHASE; | 241 state_ = MATCHING_PHASE; |
| 242 PasswordStore* password_store = PasswordStoreFactory::GetForProfile( | 242 PasswordStore* password_store = PasswordStoreFactory::GetForProfile( |
| 243 profile_, Profile::EXPLICIT_ACCESS); | 243 profile_, Profile::EXPLICIT_ACCESS).get(); |
| 244 if (!password_store) { | 244 if (!password_store) { |
| 245 NOTREACHED(); | 245 NOTREACHED(); |
| 246 return; | 246 return; |
| 247 } | 247 } |
| 248 password_store->GetLogins(observed_form_, this); | 248 password_store->GetLogins(observed_form_, this); |
| 249 } | 249 } |
| 250 | 250 |
| 251 bool PasswordFormManager::HasCompletedMatching() { | 251 bool PasswordFormManager::HasCompletedMatching() { |
| 252 return state_ == POST_MATCHING_PHASE; | 252 return state_ == POST_MATCHING_PHASE; |
| 253 } | 253 } |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 391 DCHECK_EQ(state_, POST_MATCHING_PHASE); | 391 DCHECK_EQ(state_, POST_MATCHING_PHASE); |
| 392 DCHECK(IsNewLogin()); | 392 DCHECK(IsNewLogin()); |
| 393 // The new_form is being used to sign in, so it is preferred. | 393 // The new_form is being used to sign in, so it is preferred. |
| 394 DCHECK(pending_credentials_.preferred); | 394 DCHECK(pending_credentials_.preferred); |
| 395 // new_form contains the same basic data as observed_form_ (because its the | 395 // new_form contains the same basic data as observed_form_ (because its the |
| 396 // same form), but with the newly added credentials. | 396 // same form), but with the newly added credentials. |
| 397 | 397 |
| 398 DCHECK(!profile_->IsOffTheRecord()); | 398 DCHECK(!profile_->IsOffTheRecord()); |
| 399 | 399 |
| 400 PasswordStore* password_store = PasswordStoreFactory::GetForProfile( | 400 PasswordStore* password_store = PasswordStoreFactory::GetForProfile( |
| 401 profile_, Profile::IMPLICIT_ACCESS); | 401 profile_, Profile::IMPLICIT_ACCESS).get(); |
| 402 if (!password_store) { | 402 if (!password_store) { |
| 403 NOTREACHED(); | 403 NOTREACHED(); |
| 404 return; | 404 return; |
| 405 } | 405 } |
| 406 | 406 |
| 407 pending_credentials_.date_created = Time::Now(); | 407 pending_credentials_.date_created = Time::Now(); |
| 408 SanitizePossibleUsernames(&pending_credentials_); | 408 SanitizePossibleUsernames(&pending_credentials_); |
| 409 password_store->AddLogin(pending_credentials_); | 409 password_store->AddLogin(pending_credentials_); |
| 410 | 410 |
| 411 if (reset_preferred_login) { | 411 if (reset_preferred_login) { |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 DCHECK_EQ(state_, POST_MATCHING_PHASE); | 449 DCHECK_EQ(state_, POST_MATCHING_PHASE); |
| 450 DCHECK(preferred_match_); | 450 DCHECK(preferred_match_); |
| 451 // If we're doing an Update, we either autofilled correctly and need to | 451 // If we're doing an Update, we either autofilled correctly and need to |
| 452 // update the stats, or the user typed in a new password for autofilled | 452 // update the stats, or the user typed in a new password for autofilled |
| 453 // username, or the user selected one of the non-preferred matches, | 453 // username, or the user selected one of the non-preferred matches, |
| 454 // thus requiring a swap of preferred bits. | 454 // thus requiring a swap of preferred bits. |
| 455 DCHECK(!IsNewLogin() && pending_credentials_.preferred); | 455 DCHECK(!IsNewLogin() && pending_credentials_.preferred); |
| 456 DCHECK(!profile_->IsOffTheRecord()); | 456 DCHECK(!profile_->IsOffTheRecord()); |
| 457 | 457 |
| 458 PasswordStore* password_store = PasswordStoreFactory::GetForProfile( | 458 PasswordStore* password_store = PasswordStoreFactory::GetForProfile( |
| 459 profile_, Profile::IMPLICIT_ACCESS); | 459 profile_, Profile::IMPLICIT_ACCESS).get(); |
| 460 if (!password_store) { | 460 if (!password_store) { |
| 461 NOTREACHED(); | 461 NOTREACHED(); |
| 462 return; | 462 return; |
| 463 } | 463 } |
| 464 | 464 |
| 465 // Update metadata. | 465 // Update metadata. |
| 466 ++pending_credentials_.times_used; | 466 ++pending_credentials_.times_used; |
| 467 | 467 |
| 468 UpdatePreferredLoginState(password_store); | 468 UpdatePreferredLoginState(password_store); |
| 469 | 469 |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 577 | 577 |
| 578 void PasswordFormManager::SubmitFailed() { | 578 void PasswordFormManager::SubmitFailed() { |
| 579 submit_result_ = kSubmitResultFailed; | 579 submit_result_ = kSubmitResultFailed; |
| 580 } | 580 } |
| 581 | 581 |
| 582 void PasswordFormManager::SendNotBlacklistedToRenderer() { | 582 void PasswordFormManager::SendNotBlacklistedToRenderer() { |
| 583 content::RenderViewHost* host = web_contents_->GetRenderViewHost(); | 583 content::RenderViewHost* host = web_contents_->GetRenderViewHost(); |
| 584 host->Send(new AutofillMsg_FormNotBlacklisted(host->GetRoutingID(), | 584 host->Send(new AutofillMsg_FormNotBlacklisted(host->GetRoutingID(), |
| 585 observed_form_)); | 585 observed_form_)); |
| 586 } | 586 } |
| OLD | NEW |