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 d9516de0fdb8c3cca6668b850f7f317d60548daa..8327f008b8aacda540133c47b28dc6f4806e2704 100644 |
--- a/chrome/browser/ui/passwords/manage_passwords_bubble_ui_controller.cc |
+++ b/chrome/browser/ui/passwords/manage_passwords_bubble_ui_controller.cc |
@@ -10,6 +10,7 @@ |
#include "chrome/browser/ui/browser_window.h" |
#include "chrome/browser/ui/chrome_pages.h" |
#include "chrome/browser/ui/omnibox/location_bar.h" |
+#include "chrome/browser/ui/passwords/manage_passwords_icon.h" |
#include "chrome/common/url_constants.h" |
#include "components/password_manager/core/browser/password_store.h" |
#include "content/public/browser/notification_service.h" |
@@ -58,8 +59,11 @@ void ManagePasswordsBubbleUIController::UpdateBubbleAndIconVisibility() { |
void ManagePasswordsBubbleUIController::OnPasswordSubmitted( |
PasswordFormManager* form_manager) { |
- form_manager_.reset(form_manager); |
- password_form_map_ = form_manager_->best_matches(); |
+ // The |form_manager| might be NULL during testing. |
+ if (form_manager) { |
vabr (Chromium)
2014/04/24 12:56:12
nit: I'm always a bit uneasy about modifying produ
Mike West
2014/04/24 14:27:59
Naah, you're right. I shouldn't have taken the eas
|
+ form_manager_.reset(form_manager); |
+ password_form_map_ = form_manager_->best_matches(); |
+ } |
origin_ = PendingCredentials().origin; |
manage_passwords_icon_to_be_shown_ = true; |
password_to_be_saved_ = true; |
@@ -70,8 +74,11 @@ void ManagePasswordsBubbleUIController::OnPasswordSubmitted( |
void ManagePasswordsBubbleUIController::OnPasswordAutofilled( |
const PasswordFormMap& password_form_map) { |
- password_form_map_ = password_form_map; |
- origin_ = password_form_map_.begin()->second->origin; |
+ // An empty |password_form_map| might be provided during testing. |
+ if (!password_form_map_.empty()) { |
vabr (Chromium)
2014/04/24 12:56:12
Ditto about putting test-only provisions into prod
Mike West
2014/04/24 14:27:59
Done.
|
+ 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; |
@@ -115,10 +122,6 @@ void ManagePasswordsBubbleUIController::OnLoginsChanged( |
} |
} |
-void ManagePasswordsBubbleUIController::OnBubbleShown() { |
- unset_manage_passwords_bubble_needs_showing(); |
-} |
- |
void ManagePasswordsBubbleUIController:: |
NavigateToPasswordManagerSettingsPage() { |
// TODO(mkwst): chrome_pages.h is compiled out of Android. Need to figure out |
@@ -157,3 +160,23 @@ const autofill::PasswordForm& ManagePasswordsBubbleUIController:: |
DCHECK(form_manager_); |
return form_manager_->pending_credentials(); |
} |
+ |
+void ManagePasswordsBubbleUIController::UpdateIconAndBubbleState( |
+ ManagePasswordsIcon* icon) { |
+ ManagePasswordsIcon::State state = ManagePasswordsIcon::INACTIVE_STATE; |
+ |
+ if (autofill_blocked_) |
+ state = ManagePasswordsIcon::BLACKLISTED_STATE; |
+ else if (password_to_be_saved_) |
+ state = ManagePasswordsIcon::PENDING_STATE; |
+ else if (manage_passwords_icon_to_be_shown_) |
+ state = ManagePasswordsIcon::MANAGE_STATE; |
+ |
+ icon->SetState(state); |
+ |
+ if (manage_passwords_bubble_needs_showing_) { |
+ DCHECK(state == ManagePasswordsIcon::PENDING_STATE); |
+ icon->ShowBubbleWithoutUserInteraction(); |
+ manage_passwords_bubble_needs_showing_ = false; |
+ } |
+} |