Index: chrome/browser/ui/passwords/manage_passwords_bubble_model.cc |
diff --git a/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc b/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc |
index 84b46b29aec5fc42aa81faf975939dd2605d20ad..c1e6f4a507ce1abe39c72780d791e782c486c84f 100644 |
--- a/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc |
+++ b/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc |
@@ -4,6 +4,7 @@ |
#include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" |
+#include "base/strings/utf_string_conversions.h" |
#include "chrome/browser/password_manager/password_store_factory.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/browser.h" |
@@ -124,11 +125,18 @@ ManagePasswordsBubbleModel::ManagePasswordsBubbleModel( |
pending_password_ = controller->PendingPassword(); |
best_matches_ = controller->best_matches(); |
} else if (state_ == password_manager::ui::CREDENTIAL_REQUEST_STATE) { |
+ // TODO(vasilii): stealing the credential is a bad idea if we decide to |
+ // be in MANAGE_ACCOUNTS_STATE after showing the credential chooser UI. |
local_pending_credentials_.swap(controller->local_credentials_forms()); |
federated_pending_credentials_.swap( |
controller->federated_credentials_forms()); |
} else if (state_ == password_manager::ui::AUTO_SIGNIN_STATE) { |
pending_password_ = *controller->local_credentials_forms()[0]; |
+ } else if (state_ == password_manager::ui::MANAGE_ACCOUNTS_STATE) { |
+ const auto& forms = controller->local_credentials_forms(); |
+ local_pending_credentials_.reserve(forms.size()); |
+ for (autofill::PasswordForm* form : forms) |
+ local_pending_credentials_.push_back(new autofill::PasswordForm(*form)); |
} else { |
best_matches_ = controller->best_matches(); |
} |
@@ -144,6 +152,9 @@ ManagePasswordsBubbleModel::ManagePasswordsBubbleModel( |
title_ = l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CHOOSE_TITLE); |
} else if (state_ == password_manager::ui::AUTO_SIGNIN_STATE) { |
// There is no title. |
+ } else if (state_ == password_manager::ui::MANAGE_ACCOUNTS_STATE) { |
+ title_ = l10n_util::GetStringFUTF16(IDS_MANAGE_ACCOUNTS_TITLE, |
+ base::UTF8ToUTF16(origin_.spec())); |
} else if (password_manager::ui::IsAskSubmitURLState(state_)) { |
title_ = |
l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_ASK_TO_SUBMIT_URL_TITLE); |
@@ -321,6 +332,14 @@ void ManagePasswordsBubbleModel::OnAutoSignInToastTimeout() { |
dismissal_reason_ = metrics_util::AUTO_SIGNIN_TOAST_TIMEOUT; |
} |
+void ManagePasswordsBubbleModel::OnAutoSignInClicked() { |
+ dismissal_reason_ = metrics_util::AUTO_SIGNIN_TOAST_CLICKED; |
+ ManagePasswordsUIController* manage_passwords_ui_controller = |
+ ManagePasswordsUIController::FromWebContents(web_contents()); |
+ manage_passwords_ui_controller->ManageAccounts(); |
+ state_ = password_manager::ui::MANAGE_ACCOUNTS_STATE; |
+} |
+ |
void ManagePasswordsBubbleModel::OnPasswordAction( |
const autofill::PasswordForm& password_form, |
PasswordAction action) { |