Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(99)

Unified Diff: chrome/browser/ui/passwords/manage_passwords_bubble_model.cc

Issue 733463003: Show user credentials chooser bubble. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 dd596716f4b297015f7051f80957d67a17fc3b4e..44759ad41889d65a31c2769d09c59451d9fad488 100644
--- a/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc
@@ -54,13 +54,7 @@ ManagePasswordsBubbleModel::ManagePasswordsBubbleModel(
ManagePasswordsUIController* controller =
ManagePasswordsUIController::FromWebContents(web_contents);
- // TODO(mkwst): Reverse this logic. The controller should populate the model
- // directly rather than the model pulling from the controller. Perhaps like
- // `controller->PopulateModel(this)`.
- state_ = controller->state();
- if (password_manager::ui::IsPendingState(state_))
- pending_credentials_ = controller->PendingCredentials();
- best_matches_ = controller->best_matches();
+ InitPasswordsModelFromController(controller, this);
if (password_manager::ui::IsPendingState(state_)) {
title_ = l10n_util::GetStringUTF16(IDS_SAVE_PASSWORD);
@@ -69,6 +63,9 @@ ManagePasswordsBubbleModel::ManagePasswordsBubbleModel(
} else if (state_ == password_manager::ui::CONFIRMATION_STATE) {
title_ =
l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TITLE);
+ } else if (state_ ==
+ password_manager::ui::PENDING_CREDENTIALS_AND_BUBBLE_STATE) {
+ title_ = l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CHOOSE_TITLE);
} else {
title_ = l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_TITLE);
}
@@ -102,6 +99,9 @@ void ManagePasswordsBubbleModel::OnBubbleShown(
if (state_ == password_manager::ui::CONFIRMATION_STATE) {
display_disposition_ =
metrics_util::AUTOMATIC_GENERATED_PASSWORD_CONFIRMATION;
+ } else if (state_ ==
+ password_manager::ui::PENDING_CREDENTIALS_AND_BUBBLE_STATE) {
+ display_disposition_ = metrics_util::AUTOMATIC_WITH_CREDENTIALS_PENDING;
} else {
display_disposition_ = metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING;
}
@@ -112,6 +112,10 @@ void ManagePasswordsBubbleModel::OnBubbleShown(
// with the button in such a way that it closes, we'll reset this value
// accordingly.
dismissal_reason_ = metrics_util::NO_DIRECT_INTERACTION;
+
+ ManagePasswordsUIController* controller =
+ ManagePasswordsUIController::FromWebContents(web_contents());
+ controller->OnBubbleShown();
}
void ManagePasswordsBubbleModel::OnBubbleHidden() {
@@ -189,6 +193,17 @@ void ManagePasswordsBubbleModel::OnPasswordAction(
password_store->AddLogin(password_form);
}
+void ManagePasswordsBubbleModel::OnChooseCredetials(
Mike West 2014/11/20 08:19:31 s/OnChooseCredetials/OnChooseCredentials/ (missing
vasilii 2014/11/20 15:08:05 Done.
+ bool was_chosen,
+ const autofill::PasswordForm& password_form) {
+ dismissal_reason_ = was_chosen ? metrics_util::CLICKED_CREDENTIAL :
+ metrics_util::CLICKED_NOPE;
+ RecordExperimentStatistics(web_contents(), dismissal_reason_);
+ ManagePasswordsUIController* manage_passwords_ui_controller =
+ ManagePasswordsUIController::FromWebContents(web_contents());
+ manage_passwords_ui_controller->ChooseCredential(was_chosen, password_form);
+}
+
// static
int ManagePasswordsBubbleModel::UsernameFieldWidth() {
return GetFieldWidth(USERNAME_FIELD);
@@ -198,3 +213,15 @@ int ManagePasswordsBubbleModel::UsernameFieldWidth() {
int ManagePasswordsBubbleModel::PasswordFieldWidth() {
return GetFieldWidth(PASSWORD_FIELD);
}
+
+void InitPasswordsModelFromController(ManagePasswordsUIController* controller,
+ ManagePasswordsBubbleModel* model) {
+ model->state_ = controller->state();
+ if (password_manager::ui::IsPendingState(model->state_))
+ model->pending_password_ = controller->PendingPassword();
+ if (model->state_ ==
+ password_manager::ui::PENDING_CREDENTIALS_AND_BUBBLE_STATE)
+ model->pending_credentials_.swap(controller->new_password_forms_);
+ else
+ model->best_matches_ = controller->best_matches();
+}

Powered by Google App Engine
This is Rietveld 408576698