| Index: chrome/browser/password_manager/password_form_manager.cc
|
| ===================================================================
|
| --- chrome/browser/password_manager/password_form_manager.cc (revision 17245)
|
| +++ chrome/browser/password_manager/password_form_manager.cc (working copy)
|
| @@ -21,7 +21,7 @@
|
| observed_form_(observed_form),
|
| is_new_login_(true),
|
| password_manager_(password_manager),
|
| - pending_login_query_(NULL),
|
| + pending_login_query_(0),
|
| preferred_match_(NULL),
|
| state_(PRE_MATCHING_PHASE),
|
| profile_(profile) {
|
| @@ -168,25 +168,21 @@
|
| DCHECK_EQ(state_, PRE_MATCHING_PHASE);
|
| DCHECK(!pending_login_query_);
|
| state_ = MATCHING_PHASE;
|
| - WebDataService* web_data_service =
|
| - profile_->GetWebDataService(Profile::EXPLICIT_ACCESS);
|
| - if (!web_data_service) {
|
| + PasswordStore* password_store =
|
| + profile_->GetPasswordStore(Profile::EXPLICIT_ACCESS);
|
| + if (!password_store) {
|
| NOTREACHED();
|
| return;
|
| }
|
| - pending_login_query_ = web_data_service->GetLogins(observed_form_, this);
|
| + pending_login_query_ = password_store->GetLogins(observed_form_, this);
|
| }
|
|
|
| bool PasswordFormManager::HasCompletedMatching() {
|
| return state_ == POST_MATCHING_PHASE;
|
| }
|
|
|
| -void PasswordFormManager::OnRequestDone(WebDataService::Handle h,
|
| - const WDTypedResult* result) {
|
| - // Get the result from the database into a usable form.
|
| - const WDResult<std::vector<PasswordForm*> >* r =
|
| - static_cast<const WDResult<std::vector<PasswordForm*> >*>(result);
|
| - std::vector<PasswordForm*> logins_result = r->GetValue();
|
| +void PasswordFormManager::OnRequestDone(int handle,
|
| + const std::vector<PasswordForm*>& logins_result) {
|
| // Note that the result gets deleted after this call completes, but we own
|
| // the PasswordForm objects pointed to by the result vector, thus we keep
|
| // copies to a minimum here.
|
| @@ -239,14 +235,6 @@
|
| // We're done matching now.
|
| state_ = POST_MATCHING_PHASE;
|
|
|
| - if (best_score <= 0) {
|
| -#if defined(OS_WIN)
|
| - state_ = PRE_MATCHING_PHASE;
|
| - FetchMatchingIE7LoginFromWebDatabase();
|
| -#endif
|
| - return;
|
| - }
|
| -
|
| for (std::vector<PasswordForm>::const_iterator it = empties.begin();
|
| it != empties.end(); ++it) {
|
| // If we don't already have a result with the same username, add the
|
| @@ -272,30 +260,17 @@
|
| }
|
| }
|
|
|
| -void PasswordFormManager::OnWebDataServiceRequestDone(WebDataService::Handle h,
|
| - const WDTypedResult* result) {
|
| +void PasswordFormManager::OnPasswordStoreRequestDone(
|
| + int handle, const std::vector<PasswordForm*>& result) {
|
| DCHECK_EQ(state_, MATCHING_PHASE);
|
| - DCHECK_EQ(pending_login_query_, h);
|
| - DCHECK(result);
|
| - pending_login_query_ = NULL;
|
| + DCHECK_EQ(pending_login_query_, handle);
|
|
|
| - if (!result)
|
| + if (result.empty()) {
|
| + state_ = POST_MATCHING_PHASE;
|
| return;
|
| -
|
| - switch (result->GetType()) {
|
| - case PASSWORD_RESULT: {
|
| - OnRequestDone(h, result);
|
| - break;
|
| - }
|
| -#if defined(OS_WIN)
|
| - case PASSWORD_IE7_RESULT: {
|
| - OnIE7RequestDone(h, result);
|
| - break;
|
| - }
|
| -#endif
|
| - default:
|
| - NOTREACHED();
|
| }
|
| +
|
| + OnRequestDone(handle, result);
|
| }
|
|
|
| bool PasswordFormManager::IgnoreResult(const PasswordForm& form) const {
|
| @@ -322,14 +297,15 @@
|
|
|
| DCHECK(!profile_->IsOffTheRecord());
|
|
|
| - WebDataService* web_data_service =
|
| - profile_->GetWebDataService(Profile::IMPLICIT_ACCESS);
|
| - if (!web_data_service) {
|
| + PasswordStore* password_store =
|
| + profile_->GetPasswordStore(Profile::IMPLICIT_ACCESS);
|
| + if (!password_store) {
|
| NOTREACHED();
|
| return;
|
| }
|
| +
|
| pending_credentials_.date_created = Time::Now();
|
| - web_data_service->AddLogin(pending_credentials_);
|
| + password_store->AddLogin(pending_credentials_);
|
| }
|
|
|
| void PasswordFormManager::UpdateLogin() {
|
| @@ -341,9 +317,9 @@
|
| DCHECK(!IsNewLogin() && pending_credentials_.preferred);
|
| DCHECK(!profile_->IsOffTheRecord());
|
|
|
| - WebDataService* web_data_service =
|
| - profile_->GetWebDataService(Profile::IMPLICIT_ACCESS);
|
| - if (!web_data_service) {
|
| + PasswordStore* password_store =
|
| + profile_->GetPasswordStore(Profile::IMPLICIT_ACCESS);
|
| + if (!password_store) {
|
| NOTREACHED();
|
| return;
|
| }
|
| @@ -355,7 +331,7 @@
|
| iter->second->preferred) {
|
| // This wasn't the selected login but it used to be preferred.
|
| iter->second->preferred = false;
|
| - web_data_service->UpdateLogin(*iter->second);
|
| + password_store->UpdateLogin(*iter->second);
|
| }
|
| }
|
| // Update the new preferred login.
|
| @@ -380,23 +356,20 @@
|
| PasswordForm copy(pending_credentials_);
|
| copy.origin = observed_form_.origin;
|
| copy.action = observed_form_.action;
|
| - web_data_service->AddLogin(copy);
|
| + password_store->AddLogin(copy);
|
| } else {
|
| - web_data_service->UpdateLogin(pending_credentials_);
|
| + password_store->UpdateLogin(pending_credentials_);
|
| }
|
| }
|
|
|
| void PasswordFormManager::CancelLoginsQuery() {
|
| - if (!pending_login_query_)
|
| + PasswordStore* password_store =
|
| + profile_->GetPasswordStore(Profile::IMPLICIT_ACCESS);
|
| + if (!password_store) {
|
| + // Can be NULL in unit tests.
|
| return;
|
| - WebDataService* web_data_service =
|
| - profile_->GetWebDataService(Profile::EXPLICIT_ACCESS);
|
| - if (!web_data_service) {
|
| - NOTREACHED();
|
| - return;
|
| }
|
| - web_data_service->CancelRequest(pending_login_query_);
|
| - pending_login_query_ = NULL;
|
| + password_store->CancelLoginsQuery(pending_login_query_);
|
| }
|
|
|
| int PasswordFormManager::ScoreResult(const PasswordForm& candidate) const {
|
|
|