Chromium Code Reviews| Index: chrome/browser/ui/passwords/manage_passwords_bubble_ui_controller.cc |
| diff --git a/chrome/browser/ui/passwords/manage_passwords_bubble_ui_controller.cc b/chrome/browser/ui/passwords/manage_passwords_bubble_ui_controller.cc |
| index bf79ffd7c1870e75c319d73a53d4297a233e7cd2..84c351e90b1903cc556fb9090463296fff7a065a 100644 |
| --- a/chrome/browser/ui/passwords/manage_passwords_bubble_ui_controller.cc |
| +++ b/chrome/browser/ui/passwords/manage_passwords_bubble_ui_controller.cc |
| @@ -5,6 +5,7 @@ |
| #include "chrome/browser/ui/passwords/manage_passwords_bubble_ui_controller.h" |
| #include "chrome/browser/chrome_notification_types.h" |
| +#include "chrome/browser/password_manager/password_store_factory.h" |
| #include "chrome/browser/ui/browser_finder.h" |
| #include "chrome/browser/ui/browser_window.h" |
| #include "chrome/browser/ui/omnibox/location_bar.h" |
| @@ -20,8 +21,12 @@ ManagePasswordsBubbleUIController::ManagePasswordsBubbleUIController( |
| manage_passwords_icon_to_be_shown_(false), |
| password_to_be_saved_(false), |
| manage_passwords_bubble_needs_showing_(false), |
| - password_submitted_(false), |
| - autofill_blocked_(false) {} |
| + autofill_blocked_(false), |
| + origin_(GURL()) { |
|
vabr (Chromium)
2014/04/08 13:08:34
This initializer is not necessary, origin_ will be
Mike West
2014/04/09 07:06:51
Done.
|
| + PasswordStore* password_store = GetPasswordStore(web_contents); |
| + if (password_store) |
| + password_store->AddObserver(this); |
| +} |
| ManagePasswordsBubbleUIController::~ManagePasswordsBubbleUIController() {} |
| @@ -40,10 +45,10 @@ void ManagePasswordsBubbleUIController::OnPasswordSubmitted( |
| PasswordFormManager* form_manager) { |
| form_manager_.reset(form_manager); |
| password_form_map_ = form_manager_->best_matches(); |
| + origin_ = pending_credentials().origin; |
| manage_passwords_icon_to_be_shown_ = true; |
| password_to_be_saved_ = true; |
| manage_passwords_bubble_needs_showing_ = true; |
| - password_submitted_ = true; |
| autofill_blocked_ = false; |
| UpdateBubbleAndIconVisibility(); |
| } |
| @@ -51,10 +56,10 @@ void ManagePasswordsBubbleUIController::OnPasswordSubmitted( |
| void ManagePasswordsBubbleUIController::OnPasswordAutofilled( |
| const PasswordFormMap& password_form_map) { |
| password_form_map_ = password_form_map; |
| + origin_ = password_form_map_.begin()->second->origin; |
| manage_passwords_icon_to_be_shown_ = true; |
| password_to_be_saved_ = false; |
| manage_passwords_bubble_needs_showing_ = false; |
| - password_submitted_ = false; |
| autofill_blocked_ = false; |
| UpdateBubbleAndIconVisibility(); |
| } |
| @@ -63,14 +68,34 @@ void ManagePasswordsBubbleUIController::OnBlacklistBlockedAutofill() { |
| manage_passwords_icon_to_be_shown_ = true; |
| password_to_be_saved_ = false; |
| manage_passwords_bubble_needs_showing_ = false; |
| - password_submitted_ = false; |
| autofill_blocked_ = true; |
| UpdateBubbleAndIconVisibility(); |
| } |
| -void ManagePasswordsBubbleUIController::RemoveFromBestMatches( |
| - autofill::PasswordForm password_form) { |
| - password_form_map_.erase(password_form.username_value); |
| +void ManagePasswordsBubbleUIController::WebContentsDestroyed( |
| + content::WebContents* web_contents) { |
| + PasswordStore* password_store = GetPasswordStore(web_contents); |
| + if (password_store) |
| + password_store->RemoveObserver(this); |
| +} |
| + |
| +void ManagePasswordsBubbleUIController::OnLoginsChanged( |
| + const PasswordStoreChangeList& changes) { |
| + for (PasswordStoreChangeList::const_iterator it = changes.begin(); |
| + it != changes.end(); |
| + it++) { |
| + const autofill::PasswordForm& changed_form = it->form(); |
| + if (changed_form.origin != origin_) |
| + continue; |
| + |
| + if (it->type() == PasswordStoreChange::REMOVE) { |
| + password_form_map_.erase(changed_form.username_value); |
| + } else { |
| + autofill::PasswordForm* new_form = |
| + new autofill::PasswordForm(changed_form); |
| + password_form_map_[changed_form.username_value] = new_form; |
| + } |
| + } |
| } |
| void ManagePasswordsBubbleUIController::OnBubbleShown() { |
| @@ -96,6 +121,12 @@ void ManagePasswordsBubbleUIController::DidNavigateMainFrame( |
| manage_passwords_icon_to_be_shown_ = false; |
| password_to_be_saved_ = false; |
| manage_passwords_bubble_needs_showing_ = false; |
| - password_submitted_ = false; |
| UpdateBubbleAndIconVisibility(); |
| } |
| + |
| +PasswordStore* ManagePasswordsBubbleUIController::GetPasswordStore( |
| + content::WebContents* web_contents) { |
| + return PasswordStoreFactory::GetForProfile( |
| + Profile::FromBrowserContext(web_contents->GetBrowserContext()), |
| + Profile::EXPLICIT_ACCESS).get(); |
| +} |