Chromium Code Reviews| Index: chrome/browser/password_manager/password_manager.cc |
| diff --git a/chrome/browser/password_manager/password_manager.cc b/chrome/browser/password_manager/password_manager.cc |
| index 80392991c52f996d95743a3daab91cdd69e6fb07..442d9d953fd396e0c9a558defb37353f4f3ec784 100644 |
| --- a/chrome/browser/password_manager/password_manager.cc |
| +++ b/chrome/browser/password_manager/password_manager.cc |
| @@ -14,6 +14,8 @@ |
| #include "chrome/browser/password_manager/password_form_manager.h" |
| #include "chrome/browser/password_manager/password_manager_delegate.h" |
| #include "chrome/browser/password_manager/password_manager_metrics_util.h" |
| +#include "chrome/browser/password_manager/password_store.h" |
| +#include "chrome/browser/password_manager/password_store_factory.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/ui/passwords/manage_passwords_bubble_ui_controller.h" |
| #include "chrome/common/chrome_switches.h" |
| @@ -263,6 +265,8 @@ bool PasswordManager::OnMessageReceived(const IPC::Message& message) { |
| OnPasswordFormsRendered) |
| IPC_MESSAGE_HANDLER(AutofillHostMsg_PasswordFormSubmitted, |
| OnPasswordFormSubmitted) |
| + IPC_MESSAGE_HANDLER(AutofillHostMsg_RemovePasswordSuggestion, |
| + OnRemovePasswordSuggestion) |
| IPC_MESSAGE_UNHANDLED(handled = false) |
| IPC_END_MESSAGE_MAP() |
| return handled; |
| @@ -302,6 +306,71 @@ void PasswordManager::OnPasswordFormsParsed( |
| } |
| } |
| +void PasswordManager::OnRemovePasswordSuggestion( |
| + const PasswordForm& password_form, |
| + std::vector<PasswordForm> updated_password_forms) { |
| + scoped_refptr<PasswordStore> password_store = |
| + PasswordStoreFactory::GetForProfile(delegate_->GetProfile(), |
| + Profile::EXPLICIT_ACCESS); |
| + |
| + ManagePasswordsBubbleUIController* manage_passwords_bubble_ui_controller = |
| + ManagePasswordsBubbleUIController::FromWebContents(web_contents()); |
| + if (manage_passwords_bubble_ui_controller) { |
| + manage_passwords_bubble_ui_controller->RemoveFromBestMatches(password_form); |
| + } |
| + |
| + // Deleting the PasswordFormManager for the current |password_form| to avoid |
| + // that we have two PasswordFormManager for it: |
| + // AutofillHostMsg_PasswordFormsParsed is going to be recived in the near |
|
vabr (Chromium)
2014/03/07 23:43:36
typos: recived, genrate
riadh.chtara
2014/03/14 17:16:08
Done.
|
| + // future to update the current form and this is going to genrate a new |
| + // PasswordFormManager |
|
vabr (Chromium)
2014/03/07 23:43:36
Please end sentences with a full stop.
riadh.chtara
2014/03/14 17:16:08
Done.
|
| + |
| + std::vector<PasswordFormManager*> not_yet_updated; |
| + bool removed = false; |
| + for (ScopedVector<PasswordFormManager>::iterator iter = |
| + pending_login_managers_.begin(); |
| + iter != pending_login_managers_.end(); |
| + iter++) { |
|
vabr (Chromium)
2014/03/07 23:43:36
nit: prefer prefix increment ++iter to postfix ite
riadh.chtara
2014/03/14 17:16:08
Done.
|
| + |
| + if ((*iter)->DoesManage(password_form, |
| + PasswordFormManager::ACTION_MATCH_REQUIRED)) { |
| + if (!removed) { |
| + (*iter)->RemoveAndUpdate(password_form.username_value); |
| + removed = true; |
| + } else { |
| + (*iter)->Update(password_form.username_value); |
| + } |
| + } else { |
| + not_yet_updated.push_back(*iter); |
| + } |
| + } |
| + |
| + if (removed) { |
| + for (std::vector<PasswordFormManager*>::iterator pfm = |
|
vabr (Chromium)
2014/03/07 23:43:36
Please do not use abbreviations like 'pfm' or 'pf'
riadh.chtara
2014/03/14 17:16:08
Done.
|
| + not_yet_updated.begin(); |
| + pfm != not_yet_updated.end(); |
| + pfm++) { |
| + for (std::vector<PasswordForm>::iterator pf = |
| + updated_password_forms.begin(); |
| + pf != updated_password_forms.end();) { |
| + if ((*pfm) |
| + ->DoesManage(*pf, PasswordFormManager::ACTION_MATCH_REQUIRED)) { |
| + |
| + (*pfm)->Update(password_form.username_value); |
| + pf = updated_password_forms.erase(pf); |
|
vabr (Chromium)
2014/03/07 23:43:36
Single element deleting in vector is most of the t
riadh.chtara
2014/03/14 17:16:08
Done.
|
| + |
|
vabr (Chromium)
2014/03/07 23:43:36
nit: remove blank line
riadh.chtara
2014/03/14 17:16:08
Done.
|
| + } else { |
| + pf++; |
| + |
| + } |
| + |
| + } |
| + } |
| + |
| + } |
| +} |
| + |
| + |
| bool PasswordManager::ShouldShowSavePasswordInfoBar() const { |
| return provisional_save_manager_->IsNewLogin() && |
| !provisional_save_manager_->HasGeneratedPassword() && |