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

Side by Side Diff: chrome/browser/ui/views/passwords/password_dialog_view_browsertest.cc

Issue 1686433002: Remove DialogDelegate::OnClosed() which is redundant with (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review Created 4 years, 10 months 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/strings/utf_string_conversions.h" 5 #include "base/strings/utf_string_conversions.h"
6 #include "chrome/browser/password_manager/chrome_password_manager_client.h" 6 #include "chrome/browser/password_manager/chrome_password_manager_client.h"
7 #include "chrome/browser/profiles/profile.h" 7 #include "chrome/browser/profiles/profile.h"
8 #include "chrome/browser/ui/browser.h" 8 #include "chrome/browser/ui/browser.h"
9 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h" 9 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h"
10 #include "chrome/browser/ui/tabs/tab_strip_model.h" 10 #include "chrome/browser/ui/tabs/tab_strip_model.h"
11 #include "chrome/browser/ui/views/frame/browser_view.h"
11 #include "chrome/browser/ui/views/passwords/account_chooser_dialog_view.h" 12 #include "chrome/browser/ui/views/passwords/account_chooser_dialog_view.h"
12 #include "chrome/browser/ui/views/passwords/auto_signin_first_run_dialog_view.h" 13 #include "chrome/browser/ui/views/passwords/auto_signin_first_run_dialog_view.h"
13 #include "chrome/test/base/in_process_browser_test.h" 14 #include "chrome/test/base/in_process_browser_test.h"
14 #include "chrome/test/base/ui_test_utils.h" 15 #include "chrome/test/base/ui_test_utils.h"
15 #include "components/password_manager/core/browser/password_bubble_experiment.h" 16 #include "components/password_manager/core/browser/password_bubble_experiment.h"
16 #include "components/password_manager/core/common/password_manager_pref_names.h" 17 #include "components/password_manager/core/common/password_manager_pref_names.h"
17 #include "components/prefs/pref_service.h" 18 #include "components/prefs/pref_service.h"
18 #include "net/url_request/test_url_fetcher_factory.h" 19 #include "net/url_request/test_url_fetcher_factory.h"
19 #include "testing/gmock/include/gmock/gmock.h" 20 #include "testing/gmock/include/gmock/gmock.h"
20 #include "ui/views/widget/widget.h" 21 #include "ui/views/widget/widget.h"
(...skipping 16 matching lines...) Expand all
37 url, d, response_data, response_code, status)); 38 url, d, response_data, response_code, status));
38 } 39 }
39 40
40 MOCK_METHOD1(OnRequestDone, void(const GURL&)); 41 MOCK_METHOD1(OnRequestDone, void(const GURL&));
41 }; 42 };
42 43
43 // ManagePasswordsUIController subclass to capture the dialog instance 44 // ManagePasswordsUIController subclass to capture the dialog instance
44 class TestManagePasswordsUIController : public ManagePasswordsUIController { 45 class TestManagePasswordsUIController : public ManagePasswordsUIController {
45 public: 46 public:
46 explicit TestManagePasswordsUIController(content::WebContents* web_contents); 47 explicit TestManagePasswordsUIController(content::WebContents* web_contents);
48 ~TestManagePasswordsUIController() override;
47 49
48 void OnDialogHidden() override; 50 void OnDialogHidden() override;
49 AccountChooserPrompt* CreateAccountChooser( 51 AccountChooserPrompt* CreateAccountChooser(
50 PasswordDialogController* controller) override; 52 PasswordDialogController* controller) override;
51 AutoSigninFirstRunPrompt* CreateAutoSigninPrompt( 53 AutoSigninFirstRunPrompt* CreateAutoSigninPrompt(
52 PasswordDialogController* controller) override; 54 PasswordDialogController* controller) override;
53 55
54 AccountChooserDialogView* current_account_chooser() const { 56 AccountChooserDialogView* current_account_chooser() const {
55 return static_cast<AccountChooserDialogView*>(current_account_chooser_); 57 return static_cast<AccountChooserDialogView*>(current_account_chooser_);
56 } 58 }
57 59
58 AutoSigninFirstRunDialogView* current_autosignin_prompt() const { 60 AutoSigninFirstRunDialogView* current_autosignin_prompt() const {
59 return static_cast<AutoSigninFirstRunDialogView*>( 61 return static_cast<AutoSigninFirstRunDialogView*>(
60 current_autosignin_prompt_); 62 current_autosignin_prompt_);
61 } 63 }
62 64
63 MOCK_METHOD0(OnDialogClosed, void()); 65 MOCK_METHOD0(OnDialogClosed, void());
64 66
65 private: 67 private:
66 AccountChooserPrompt* current_account_chooser_; 68 AccountChooserPrompt* current_account_chooser_;
67 AutoSigninFirstRunPrompt* current_autosignin_prompt_; 69 AutoSigninFirstRunPrompt* current_autosignin_prompt_;
70 bool dialog_closed_;
68 71
69 DISALLOW_COPY_AND_ASSIGN(TestManagePasswordsUIController); 72 DISALLOW_COPY_AND_ASSIGN(TestManagePasswordsUIController);
70 }; 73 };
71 74
72 TestManagePasswordsUIController::TestManagePasswordsUIController( 75 TestManagePasswordsUIController::TestManagePasswordsUIController(
73 content::WebContents* web_contents) 76 content::WebContents* web_contents)
74 : ManagePasswordsUIController(web_contents), 77 : ManagePasswordsUIController(web_contents),
75 current_account_chooser_(nullptr), 78 current_account_chooser_(nullptr),
76 current_autosignin_prompt_(nullptr) { 79 current_autosignin_prompt_(nullptr),
80 dialog_closed_(false) {
77 // Attach TestManagePasswordsUIController to |web_contents| so the default 81 // Attach TestManagePasswordsUIController to |web_contents| so the default
78 // ManagePasswordsUIController isn't created. 82 // ManagePasswordsUIController isn't created.
79 // Do not silently replace an existing ManagePasswordsUIController because it 83 // Do not silently replace an existing ManagePasswordsUIController because it
80 // unregisters itself in WebContentsDestroyed(). 84 // unregisters itself in WebContentsDestroyed().
81 EXPECT_FALSE(web_contents->GetUserData(UserDataKey())); 85 EXPECT_FALSE(web_contents->GetUserData(UserDataKey()));
82 web_contents->SetUserData(UserDataKey(), this); 86 web_contents->SetUserData(UserDataKey(), this);
83 } 87 }
84 88
89 TestManagePasswordsUIController::~TestManagePasswordsUIController() {
90 if (!dialog_closed_)
91 OnDialogHidden();
92 }
93
85 void TestManagePasswordsUIController::OnDialogHidden() { 94 void TestManagePasswordsUIController::OnDialogHidden() {
86 ManagePasswordsUIController::OnDialogHidden(); 95 ManagePasswordsUIController::OnDialogHidden();
87 OnDialogClosed(); 96 OnDialogClosed();
97 dialog_closed_ = true;
88 } 98 }
89 99
90 AccountChooserPrompt* TestManagePasswordsUIController::CreateAccountChooser( 100 AccountChooserPrompt* TestManagePasswordsUIController::CreateAccountChooser(
91 PasswordDialogController* controller) { 101 PasswordDialogController* controller) {
92 current_account_chooser_ = 102 current_account_chooser_ =
93 ManagePasswordsUIController::CreateAccountChooser(controller); 103 ManagePasswordsUIController::CreateAccountChooser(controller);
94 return current_account_chooser_; 104 return current_account_chooser_;
95 } 105 }
96 106
97 AutoSigninFirstRunPrompt* 107 AutoSigninFirstRunPrompt*
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 203
194 SetupChooseCredentials(std::move(local_credentials), 204 SetupChooseCredentials(std::move(local_credentials),
195 ScopedVector<autofill::PasswordForm>(), origin); 205 ScopedVector<autofill::PasswordForm>(), origin);
196 ASSERT_TRUE(controller()->current_account_chooser()); 206 ASSERT_TRUE(controller()->current_account_chooser());
197 AccountChooserDialogView* dialog = controller()->current_account_chooser(); 207 AccountChooserDialogView* dialog = controller()->current_account_chooser();
198 EXPECT_CALL(*this, 208 EXPECT_CALL(*this,
199 OnChooseCredential(Field( 209 OnChooseCredential(Field(
200 &password_manager::CredentialInfo::type, 210 &password_manager::CredentialInfo::type,
201 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY))); 211 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY)));
202 EXPECT_CALL(*controller(), OnDialogClosed()); 212 EXPECT_CALL(*controller(), OnDialogClosed());
203 EXPECT_TRUE(dialog->Close()); 213 dialog->GetWidget()->Close();
204 214
205 EXPECT_FALSE(controller()->current_autosignin_prompt()); 215 EXPECT_FALSE(controller()->current_autosignin_prompt());
206 } 216 }
207 217
208 IN_PROC_BROWSER_TEST_F( 218 IN_PROC_BROWSER_TEST_F(
209 PasswordDialogViewTest, 219 PasswordDialogViewTest,
210 PopupAccountChooserWithMultipleCredentialsReturnNonEmpty) { 220 PopupAccountChooserWithMultipleCredentialsReturnNonEmpty) {
211 GURL origin("https://example.com"); 221 GURL origin("https://example.com");
212 ScopedVector<autofill::PasswordForm> local_credentials; 222 ScopedVector<autofill::PasswordForm> local_credentials;
213 autofill::PasswordForm form; 223 autofill::PasswordForm form;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 SetupChooseCredentials(std::move(local_credentials), 264 SetupChooseCredentials(std::move(local_credentials),
255 ScopedVector<autofill::PasswordForm>(), origin); 265 ScopedVector<autofill::PasswordForm>(), origin);
256 266
257 EXPECT_TRUE(controller()->current_account_chooser()); 267 EXPECT_TRUE(controller()->current_account_chooser());
258 AccountChooserDialogView* dialog = controller()->current_account_chooser(); 268 AccountChooserDialogView* dialog = controller()->current_account_chooser();
259 EXPECT_CALL(*this, 269 EXPECT_CALL(*this,
260 OnChooseCredential(Field( 270 OnChooseCredential(Field(
261 &password_manager::CredentialInfo::type, 271 &password_manager::CredentialInfo::type,
262 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY))); 272 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY)));
263 EXPECT_CALL(*controller(), OnDialogClosed()); 273 EXPECT_CALL(*controller(), OnDialogClosed());
264 EXPECT_TRUE(dialog->Close()); 274 dialog->GetWidget()->Close();
265 EXPECT_FALSE(controller()->current_autosignin_prompt()); 275 EXPECT_FALSE(controller()->current_autosignin_prompt());
266 } 276 }
267 277
268 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest, 278 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest,
269 PopupAccountChooserWithSingleCredentialReturnNonEmpty) { 279 PopupAccountChooserWithSingleCredentialReturnNonEmpty) {
270 GURL origin("https://example.com"); 280 GURL origin("https://example.com");
271 ScopedVector<autofill::PasswordForm> local_credentials; 281 ScopedVector<autofill::PasswordForm> local_credentials;
272 autofill::PasswordForm form; 282 autofill::PasswordForm form;
273 form.origin = origin; 283 form.origin = origin;
274 form.display_name = base::ASCIIToUTF16("Peter"); 284 form.display_name = base::ASCIIToUTF16("Peter");
(...skipping 10 matching lines...) Expand all
285 EXPECT_CALL(*this, 295 EXPECT_CALL(*this,
286 OnChooseCredential(Field( 296 OnChooseCredential(Field(
287 &password_manager::CredentialInfo::type, 297 &password_manager::CredentialInfo::type,
288 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD))); 298 password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD)));
289 EXPECT_TRUE( 299 EXPECT_TRUE(
290 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience( 300 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience(
291 browser()->profile()->GetPrefs())); 301 browser()->profile()->GetPrefs()));
292 controller()->ChooseCredential( 302 controller()->ChooseCredential(
293 form, password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); 303 form, password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD);
294 304
305 EXPECT_TRUE(controller()->current_autosignin_prompt());
295 EXPECT_CALL(*controller(), OnDialogClosed()); 306 EXPECT_CALL(*controller(), OnDialogClosed());
296 EXPECT_TRUE(controller()->current_autosignin_prompt());
297 } 307 }
298 308
299 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest, 309 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest,
300 PopupAccountChooserWithDisabledAutoSignin) { 310 PopupAccountChooserWithDisabledAutoSignin) {
301 EXPECT_TRUE( 311 EXPECT_TRUE(
302 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience( 312 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience(
303 browser()->profile()->GetPrefs())); 313 browser()->profile()->GetPrefs()));
304 GURL origin("https://example.com"); 314 GURL origin("https://example.com");
305 ScopedVector<autofill::PasswordForm> local_credentials; 315 ScopedVector<autofill::PasswordForm> local_credentials;
306 autofill::PasswordForm form; 316 autofill::PasswordForm form;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 380
371 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest, PopupAutoSigninPrompt) { 381 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest, PopupAutoSigninPrompt) {
372 EXPECT_TRUE( 382 EXPECT_TRUE(
373 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience( 383 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience(
374 browser()->profile()->GetPrefs())); 384 browser()->profile()->GetPrefs()));
375 controller()->OnPromptEnableAutoSignin(); 385 controller()->OnPromptEnableAutoSignin();
376 ASSERT_TRUE(controller()->current_autosignin_prompt()); 386 ASSERT_TRUE(controller()->current_autosignin_prompt());
377 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); 387 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState());
378 AutoSigninFirstRunDialogView* dialog = 388 AutoSigninFirstRunDialogView* dialog =
379 controller()->current_autosignin_prompt(); 389 controller()->current_autosignin_prompt();
380 // This is the way how ESC is processed. It's important to reproduce it
381 // because of double AutoSigninFirstRunDialogView::OnClosed call due to a bug
382 // http://crbug.com/583330.
383 ui::Accelerator esc(ui::VKEY_ESCAPE, 0); 390 ui::Accelerator esc(ui::VKEY_ESCAPE, 0);
384 EXPECT_CALL(*controller(), OnDialogClosed()); 391 EXPECT_CALL(*controller(), OnDialogClosed());
385 EXPECT_TRUE(dialog->GetWidget()->client_view()->AcceleratorPressed(esc)); 392 EXPECT_TRUE(dialog->GetWidget()->client_view()->AcceleratorPressed(esc));
393 content::RunAllPendingInMessageLoop();
386 testing::Mock::VerifyAndClearExpectations(controller()); 394 testing::Mock::VerifyAndClearExpectations(controller());
387 EXPECT_TRUE( 395 EXPECT_TRUE(
388 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience( 396 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience(
389 browser()->profile()->GetPrefs())); 397 browser()->profile()->GetPrefs()));
390 } 398 }
391 399
392 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest, 400 IN_PROC_BROWSER_TEST_F(PasswordDialogViewTest,
393 PopupAutoSigninPromptAfterBlockedZeroclick) { 401 PopupAutoSigninPromptAfterBlockedZeroclick) {
394 EXPECT_TRUE( 402 EXPECT_TRUE(
395 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience( 403 password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience(
(...skipping 30 matching lines...) Expand all
426 client()->NotifyUserAutoSigninBlockedOnFirstRun(std::move(blocked_form)); 434 client()->NotifyUserAutoSigninBlockedOnFirstRun(std::move(blocked_form));
427 client()->NotifySuccessfulLoginWithExistingPassword(form); 435 client()->NotifySuccessfulLoginWithExistingPassword(form);
428 ASSERT_FALSE(controller()->current_autosignin_prompt()); 436 ASSERT_FALSE(controller()->current_autosignin_prompt());
429 browser()->profile()->GetPrefs()->SetBoolean( 437 browser()->profile()->GetPrefs()->SetBoolean(
430 password_manager::prefs::kCredentialsEnableAutosignin, true); 438 password_manager::prefs::kCredentialsEnableAutosignin, true);
431 439
432 // Successful login with the same form after block will prompt: 440 // Successful login with the same form after block will prompt:
433 blocked_form.reset(new autofill::PasswordForm(form)); 441 blocked_form.reset(new autofill::PasswordForm(form));
434 client()->NotifyUserAutoSigninBlockedOnFirstRun(std::move(blocked_form)); 442 client()->NotifyUserAutoSigninBlockedOnFirstRun(std::move(blocked_form));
435 client()->NotifySuccessfulLoginWithExistingPassword(form); 443 client()->NotifySuccessfulLoginWithExistingPassword(form);
444 ASSERT_TRUE(controller()->current_autosignin_prompt());
445
436 EXPECT_CALL(*controller(), OnDialogClosed()); 446 EXPECT_CALL(*controller(), OnDialogClosed());
437 ASSERT_TRUE(controller()->current_autosignin_prompt());
438 } 447 }
439 448
440 } // namespace 449 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698