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

Unified Diff: chrome/browser/password_manager/password_form_manager.cc

Issue 133893004: Allow deleting autofill password suggestions on Shift+Delete (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleaning the code Created 6 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/password_manager/password_form_manager.cc
diff --git a/chrome/browser/password_manager/password_form_manager.cc b/chrome/browser/password_manager/password_form_manager.cc
index dd904cf7a61a884ef80945c96c8ae7eb122127df..05f24913ec3770916664988d9ba3e38c782c3886 100644
--- a/chrome/browser/password_manager/password_form_manager.cc
+++ b/chrome/browser/password_manager/password_form_manager.cc
@@ -35,6 +35,7 @@ PasswordFormManager::PasswordFormManager(Profile* profile,
observed_form_(observed_form),
is_new_login_(true),
has_generated_password_(false),
+ remover_(false),
password_manager_(password_manager),
preferred_match_(NULL),
state_(PRE_MATCHING_PHASE),
@@ -109,6 +110,24 @@ bool PasswordFormManager::DoesManage(const PasswordForm& form,
return true;
}
+void PasswordFormManager::RemoveAndUpdate(const string16& username_to_remove) {
vabr (Chromium) 2014/03/07 23:43:36 This is duplicated code: RemoveAndUpdate and Updat
riadh.chtara 2014/03/14 17:16:08 Done.
+ remover_ = true;
+ only_update_ = false;
+ username_to_remove_ = username_to_remove;
+
+ state_ = PRE_MATCHING_PHASE;
+ FetchMatchingLoginsFromPasswordStore();
+}
+
+void PasswordFormManager::Update(const string16& username_to_remove) {
+ remover_ = true;
+ only_update_ = true;
+ username_to_remove_ = username_to_remove;
+
+ state_ = PRE_MATCHING_PHASE;
+ FetchMatchingLoginsFromPasswordStore();
+}
+
bool PasswordFormManager::IsBlacklisted() {
DCHECK_EQ(state_, POST_MATCHING_PHASE);
if (preferred_match_ && preferred_match_->blacklisted_by_user)
@@ -263,7 +282,9 @@ void PasswordFormManager::FetchMatchingLoginsFromPasswordStore() {
NOTREACHED();
return;
}
- password_store->GetLogins(observed_form_, this);
+ PasswordForm f = observed_form_;
vabr (Chromium) 2014/03/07 23:43:36 Could you please explain to me why do we need to d
riadh.chtara 2014/03/14 18:06:18 I thought that using GetLogins with a PasswordForm
+ f.username_value = string16();
+ password_store->GetLogins(f, this);
}
bool PasswordFormManager::HasCompletedMatching() {
@@ -382,8 +403,37 @@ void PasswordFormManager::OnRequestDone(
manager_action_ = kManagerActionNone;
else
manager_action_ = kManagerActionAutofilled;
- password_manager_->Autofill(observed_form_, best_matches_,
- *preferred_match_, wait_for_username);
+
+ if (!remover_) {
+ password_manager_->Autofill(
+ observed_form_, best_matches_, *preferred_match_, wait_for_username);
+ } else {
+ remover_ = false;
+ PasswordStore* password_store = PasswordStoreFactory::GetForProfile(
+ profile_, Profile::EXPLICIT_ACCESS).get();
+ if (!password_store) {
+ NOTREACHED();
+ return;
+ }
+
+ PasswordFormMap::iterator it = best_matches_.find(username_to_remove_);
+
+ if (it != best_matches_.end()) {
+ if (!only_update_)
+ password_store->RemoveLogin(*(it->second));
+
+ best_matches_.erase(it);
+ if (best_matches_.size() > 0) {
+ preferred_match_ = best_matches_.begin()->second;
+ password_manager_->Autofill(observed_form_,
+ best_matches_,
+ *preferred_match_,
+ wait_for_username);
+ }
+
+ }
+
+ }
}
void PasswordFormManager::OnPasswordStoreRequestDone(

Powered by Google App Engine
This is Rietveld 408576698