| Index: chrome/browser/ui/views/passwords/password_dialog_view_browsertest.cc
|
| diff --git a/chrome/browser/ui/views/passwords/password_dialog_view_browsertest.cc b/chrome/browser/ui/views/passwords/password_dialog_view_browsertest.cc
|
| index 7209458707670660d2b9742f672b7f4c65888ee7..7ed9d1ff8b00fdb92ba8a4a7c305c5116fcc3db6 100644
|
| --- a/chrome/browser/ui/views/passwords/password_dialog_view_browsertest.cc
|
| +++ b/chrome/browser/ui/views/passwords/password_dialog_view_browsertest.cc
|
| @@ -8,6 +8,7 @@
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h"
|
| #include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| +#include "chrome/browser/ui/views/frame/browser_view.h"
|
| #include "chrome/browser/ui/views/passwords/account_chooser_dialog_view.h"
|
| #include "chrome/browser/ui/views/passwords/auto_signin_first_run_dialog_view.h"
|
| #include "chrome/test/base/in_process_browser_test.h"
|
| @@ -44,6 +45,7 @@ class TestURLFetcherCallback {
|
| class TestManagePasswordsUIController : public ManagePasswordsUIController {
|
| public:
|
| explicit TestManagePasswordsUIController(content::WebContents* web_contents);
|
| + ~TestManagePasswordsUIController() override;
|
|
|
| void OnDialogHidden() override;
|
| AccountChooserPrompt* CreateAccountChooser(
|
| @@ -65,6 +67,7 @@ class TestManagePasswordsUIController : public ManagePasswordsUIController {
|
| private:
|
| AccountChooserPrompt* current_account_chooser_;
|
| AutoSigninFirstRunPrompt* current_autosignin_prompt_;
|
| + bool dialog_closed_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(TestManagePasswordsUIController);
|
| };
|
| @@ -73,7 +76,8 @@ TestManagePasswordsUIController::TestManagePasswordsUIController(
|
| content::WebContents* web_contents)
|
| : ManagePasswordsUIController(web_contents),
|
| current_account_chooser_(nullptr),
|
| - current_autosignin_prompt_(nullptr) {
|
| + current_autosignin_prompt_(nullptr),
|
| + dialog_closed_(false) {
|
| // Attach TestManagePasswordsUIController to |web_contents| so the default
|
| // ManagePasswordsUIController isn't created.
|
| // Do not silently replace an existing ManagePasswordsUIController because it
|
| @@ -82,9 +86,15 @@ TestManagePasswordsUIController::TestManagePasswordsUIController(
|
| web_contents->SetUserData(UserDataKey(), this);
|
| }
|
|
|
| +TestManagePasswordsUIController::~TestManagePasswordsUIController() {
|
| + if (!dialog_closed_)
|
| + OnDialogHidden();
|
| +}
|
| +
|
| void TestManagePasswordsUIController::OnDialogHidden() {
|
| ManagePasswordsUIController::OnDialogHidden();
|
| OnDialogClosed();
|
| + dialog_closed_ = true;
|
| }
|
|
|
| AccountChooserPrompt* TestManagePasswordsUIController::CreateAccountChooser(
|
| @@ -200,7 +210,7 @@ IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest,
|
| &password_manager::CredentialInfo::type,
|
| password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY)));
|
| EXPECT_CALL(*controller(), OnDialogClosed());
|
| - EXPECT_TRUE(dialog->Close());
|
| + dialog->GetWidget()->Close();
|
|
|
| EXPECT_FALSE(controller()->current_autosignin_prompt());
|
| }
|
| @@ -261,7 +271,7 @@ IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest,
|
| &password_manager::CredentialInfo::type,
|
| password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY)));
|
| EXPECT_CALL(*controller(), OnDialogClosed());
|
| - EXPECT_TRUE(dialog->Close());
|
| + dialog->GetWidget()->Close();
|
| EXPECT_FALSE(controller()->current_autosignin_prompt());
|
| }
|
|
|
| @@ -292,8 +302,8 @@ IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest,
|
| controller()->ChooseCredential(
|
| form, password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD);
|
|
|
| - EXPECT_CALL(*controller(), OnDialogClosed());
|
| EXPECT_TRUE(controller()->current_autosignin_prompt());
|
| + EXPECT_CALL(*controller(), OnDialogClosed());
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest,
|
| @@ -377,12 +387,10 @@ IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest, PopupAutoSigninPrompt) {
|
| EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState());
|
| AutoSigninFirstRunDialogView* dialog =
|
| controller()->current_autosignin_prompt();
|
| - // This is the way how ESC is processed. It's important to reproduce it
|
| - // because of double AutoSigninFirstRunDialogView::OnClosed call due to a bug
|
| - // http://crbug.com/583330.
|
| ui::Accelerator esc(ui::VKEY_ESCAPE, 0);
|
| EXPECT_CALL(*controller(), OnDialogClosed());
|
| EXPECT_TRUE(dialog->GetWidget()->client_view()->AcceleratorPressed(esc));
|
| + content::RunAllPendingInMessageLoop();
|
| testing::Mock::VerifyAndClearExpectations(controller());
|
| EXPECT_TRUE(
|
| password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience(
|
| @@ -433,8 +441,9 @@ IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest,
|
| blocked_form.reset(new autofill::PasswordForm(form));
|
| client()->NotifyUserAutoSigninBlockedOnFirstRun(std::move(blocked_form));
|
| client()->NotifySuccessfulLoginWithExistingPassword(form);
|
| - EXPECT_CALL(*controller(), OnDialogClosed());
|
| ASSERT_TRUE(controller()->current_autosignin_prompt());
|
| +
|
| + EXPECT_CALL(*controller(), OnDialogClosed());
|
| }
|
|
|
| } // namespace
|
|
|