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

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

Issue 113871: Revert the password manager refactoring -- it failed reliability tests. (Closed)
Patch Set: Created 11 years, 6 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
OLDNEW
(Empty)
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/password_manager/password_form_manager.h"
6
7 #include "base/string_util.h"
8 #include "chrome/browser/password_manager/ie7_password.h"
9 #include "chrome/browser/password_manager/password_manager.h"
10 #include "chrome/browser/profile.h"
11
12 void PasswordFormManager::FetchMatchingIE7LoginFromWebDatabase() {
13 DCHECK_EQ(state_, PRE_MATCHING_PHASE);
14 DCHECK(!pending_login_query_);
15 state_ = MATCHING_PHASE;
16 WebDataService* web_data_service =
17 profile_->GetWebDataService(Profile::EXPLICIT_ACCESS);
18 if (!web_data_service) {
19 NOTREACHED();
20 return;
21 }
22
23 IE7PasswordInfo info;
24 std::wstring url = ASCIIToWide(observed_form_.origin.spec());
25 info.url_hash = ie7_password::GetUrlHash(url);
26 pending_login_query_ = web_data_service->GetIE7Login(info, this);
27 }
28
29 void PasswordFormManager::OnIE7RequestDone(WebDataService::Handle h,
30 const WDTypedResult* result) {
31 // Get the result from the database into a usable form.
32 const WDResult<IE7PasswordInfo>* r =
33 static_cast<const WDResult<IE7PasswordInfo>*>(result);
34 IE7PasswordInfo result_value = r->GetValue();
35
36 state_ = POST_MATCHING_PHASE;
37
38 if (!result_value.encrypted_data.empty()) {
39 // We got a result.
40 // Delete the entry. If it's good we will add it to the real saved password
41 // table.
42 WebDataService* web_data_service =
43 profile_->GetWebDataService(Profile::EXPLICIT_ACCESS);
44 if (!web_data_service) {
45 NOTREACHED();
46 return;
47 }
48 web_data_service->RemoveIE7Login(result_value);
49
50 std::wstring username;
51 std::wstring password;
52 std::wstring url = ASCIIToWide(observed_form_.origin.spec());
53 if (!ie7_password::DecryptPassword(url, result_value.encrypted_data,
54 &username, &password)) {
55 return;
56 }
57
58 PasswordForm* auto_fill = new PasswordForm(observed_form_);
59 auto_fill->username_value = username;
60 auto_fill->password_value = password;
61 auto_fill->preferred = true;
62 auto_fill->ssl_valid = observed_form_.origin.SchemeIsSecure();
63 auto_fill->date_created = result_value.date_created;
64 // Add this PasswordForm to the saved password table.
65 web_data_service->AddLogin(*auto_fill);
66
67 if (IgnoreResult(*auto_fill)) {
68 delete auto_fill;
69 return;
70 }
71
72 best_matches_[auto_fill->username_value] = auto_fill;
73 preferred_match_ = auto_fill;
74 password_manager_->Autofill(observed_form_, best_matches_,
75 preferred_match_);
76 }
77 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698