Index: chrome/browser/ui/passwords/manage_passwords_ui_controller.cc |
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc |
index 2f79b8736960f8a13c857fac51ce85343db017a5..e1b9ea854d6f7adaa73ff3ac7367cda3b2c261e0 100644 |
--- a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc |
+++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc |
@@ -244,12 +244,15 @@ void ManagePasswordsUIController::OnBubbleShown() { |
} |
void ManagePasswordsUIController::OnBubbleHidden() { |
+ bool update_icon = (bubble_status_ == SHOWN_PENDING_ICON_UPDATE); |
bubble_status_ = NOT_SHOWN; |
if (GetState() == password_manager::ui::CONFIRMATION_STATE || |
GetState() == password_manager::ui::AUTO_SIGNIN_STATE) { |
passwords_data_.TransitionToState(password_manager::ui::MANAGE_STATE); |
- UpdateBubbleAndIconVisibility(); |
+ update_icon = true; |
} |
+ if (update_icon) |
+ UpdateBubbleAndIconVisibility(); |
} |
void ManagePasswordsUIController::OnNoInteractionOnUpdate() { |
@@ -281,7 +284,9 @@ void ManagePasswordsUIController::SavePassword() { |
DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, GetState()); |
SavePasswordInternal(); |
passwords_data_.TransitionToState(password_manager::ui::MANAGE_STATE); |
- UpdateBubbleAndIconVisibility(); |
+ // The icon is to be updated after the bubble (either "Save password" or "Sign |
+ // in to Chrome") is closed. |
+ bubble_status_ = SHOWN_PENDING_ICON_UPDATE; |
} |
void ManagePasswordsUIController::UpdatePassword( |
@@ -327,6 +332,10 @@ void ManagePasswordsUIController::NavigateToPasswordManagerSettingsPage() { |
chrome::kPasswordManagerSubPage); |
} |
+void ManagePasswordsUIController::NavigateToChromeSignIn() { |
+ // TODO(http://crbug.com/615825): do the job. |
+} |
+ |
void ManagePasswordsUIController::OnDialogHidden() { |
dialog_controller_.reset(); |
if (GetState() == password_manager::ui::CREDENTIAL_REQUEST_STATE) { |
@@ -397,7 +406,7 @@ void ManagePasswordsUIController::DidNavigateMainFrame( |
// It is possible that the user was not able to interact with the password |
// bubble. |
- if (bubble_status_ == SHOWN) |
+ if (bubble_status_ == SHOWN || bubble_status_ == SHOWN_PENDING_ICON_UPDATE) |
return; |
// Otherwise, reset the password manager. |