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

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

Issue 23980003: Save password functionality added to the save password bubble (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 3 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
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 21 matching lines...) Expand all
32 observed_form_(observed_form), 32 observed_form_(observed_form),
33 is_new_login_(true), 33 is_new_login_(true),
34 has_generated_password_(false), 34 has_generated_password_(false),
35 password_manager_(password_manager), 35 password_manager_(password_manager),
36 preferred_match_(NULL), 36 preferred_match_(NULL),
37 state_(PRE_MATCHING_PHASE), 37 state_(PRE_MATCHING_PHASE),
38 profile_(profile), 38 profile_(profile),
39 web_contents_(web_contents), 39 web_contents_(web_contents),
40 manager_action_(kManagerActionNone), 40 manager_action_(kManagerActionNone),
41 user_action_(kUserActionNone), 41 user_action_(kUserActionNone),
42 submit_result_(kSubmitResultNotSubmitted) { 42 submit_result_(kSubmitResultNotSubmitted),
43 should_save_password_(false),
44 should_blacklist_password_(false) {
43 DCHECK(profile_); 45 DCHECK(profile_);
44 if (observed_form_.origin.is_valid()) 46 if (observed_form_.origin.is_valid())
45 base::SplitString(observed_form_.origin.path(), '/', &form_path_tokens_); 47 base::SplitString(observed_form_.origin.path(), '/', &form_path_tokens_);
46 observed_form_.ssl_valid = ssl_valid; 48 observed_form_.ssl_valid = ssl_valid;
47 } 49 }
48 50
49 PasswordFormManager::~PasswordFormManager() { 51 PasswordFormManager::~PasswordFormManager() {
50 UMA_HISTOGRAM_ENUMERATION("PasswordManager.ActionsTaken", 52 UMA_HISTOGRAM_ENUMERATION("PasswordManager.ActionsTaken",
51 GetActionsTaken(), 53 GetActionsTaken(),
52 kMaxNumActionsTaken); 54 kMaxNumActionsTaken);
55 // In case the tab is closed before the next navigation occurs this will
56 // apply outstanding changes.
57 if (should_save_password_ || should_blacklist_password_)
58 ApplyChange();
53 } 59 }
54 60
55 int PasswordFormManager::GetActionsTaken() { 61 int PasswordFormManager::GetActionsTaken() {
56 return user_action_ + kUserActionMax * (manager_action_ + 62 return user_action_ + kUserActionMax * (manager_action_ +
57 kManagerActionMax * submit_result_); 63 kManagerActionMax * submit_result_);
58 }; 64 };
59 65
60 // TODO(timsteele): use a hash of some sort in the future? 66 // TODO(timsteele): use a hash of some sort in the future?
61 bool PasswordFormManager::DoesManage(const PasswordForm& form, 67 bool PasswordFormManager::DoesManage(const PasswordForm& form,
62 ActionMatch action_match) const { 68 ActionMatch action_match) const {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 form.origin.spec().end(), 105 form.origin.spec().end(),
100 after_scheme2, 106 after_scheme2,
101 observed_form_.origin.spec().end()) 107 observed_form_.origin.spec().end())
102 != form.origin.spec().end(); 108 != form.origin.spec().end();
103 } 109 }
104 return false; 110 return false;
105 } 111 }
106 return true; 112 return true;
107 } 113 }
108 114
115 void PasswordFormManager::ApplyChange() {
116 DCHECK(!should_blacklist_password_ || !should_save_password_);
Peter Kasting 2013/09/09 18:19:02 Nit: Given that these two bools are not set to tru
npentrel 2013/09/09 22:08:34 Done.
117 if (should_save_password_)
118 Save();
119 else if (should_blacklist_password_)
120 PermanentlyBlacklist();
121 should_blacklist_password_ = false;
122 should_save_password_ = false;
123 }
124
125 void PasswordFormManager::SavePassword() {
126 should_blacklist_password_ = false;
127 should_save_password_ = true;
128 }
129
130 void PasswordFormManager::BlacklistPassword() {
131 should_save_password_ = false;
132 should_blacklist_password_ = true;
133 }
134
109 bool PasswordFormManager::IsBlacklisted() { 135 bool PasswordFormManager::IsBlacklisted() {
110 DCHECK_EQ(state_, POST_MATCHING_PHASE); 136 DCHECK_EQ(state_, POST_MATCHING_PHASE);
111 if (preferred_match_ && preferred_match_->blacklisted_by_user) 137 if (preferred_match_ && preferred_match_->blacklisted_by_user)
112 return true; 138 return true;
113 return false; 139 return false;
114 } 140 }
115 141
116 void PasswordFormManager::PermanentlyBlacklist() { 142 void PasswordFormManager::PermanentlyBlacklist() {
117 DCHECK_EQ(state_, POST_MATCHING_PHASE); 143 DCHECK_EQ(state_, POST_MATCHING_PHASE);
118 144
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 616
591 void PasswordFormManager::SubmitFailed() { 617 void PasswordFormManager::SubmitFailed() {
592 submit_result_ = kSubmitResultFailed; 618 submit_result_ = kSubmitResultFailed;
593 } 619 }
594 620
595 void PasswordFormManager::SendNotBlacklistedToRenderer() { 621 void PasswordFormManager::SendNotBlacklistedToRenderer() {
596 content::RenderViewHost* host = web_contents_->GetRenderViewHost(); 622 content::RenderViewHost* host = web_contents_->GetRenderViewHost();
597 host->Send(new AutofillMsg_FormNotBlacklisted(host->GetRoutingID(), 623 host->Send(new AutofillMsg_FormNotBlacklisted(host->GetRoutingID(),
598 observed_form_)); 624 observed_form_));
599 } 625 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698