Chromium Code Reviews| 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(); |
| +} |