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

Side by Side Diff: chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc

Issue 1702333002: Don't close the password bubble on implicit navigations. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <utility> 5 #include <utility>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 CreateFormManager()); 378 CreateFormManager());
379 test_form_manager->ProvisionallySave( 379 test_form_manager->ProvisionallySave(
380 test_local_form(), 380 test_local_form(),
381 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); 381 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
382 controller()->OnPasswordSubmitted(std::move(test_form_manager)); 382 controller()->OnPasswordSubmitted(std::move(test_form_manager));
383 383
384 controller()->NeverSavePassword(); 384 controller()->NeverSavePassword();
385 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); 385 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE);
386 } 386 }
387 387
388 TEST_F(ManagePasswordsUIControllerTest, RedirectNavigations) {
389 scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
390 CreateFormManager());
391 controller()->OnPasswordSubmitted(std::move(test_form_manager));
392 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE);
393
394 // Fake-redirect. We expect the bubble's state to persist so a user reasonably
395 // have been able to interact with the bubble. This happens on
396 // `accounts.google.com`, for instance.
397 content::FrameNavigateParams params;
398 params.transition = ui::PAGE_TRANSITION_SERVER_REDIRECT;
399 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), params);
400
401 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE);
402 }
403
404 TEST_F(ManagePasswordsUIControllerTest, NormalNavigations) { 388 TEST_F(ManagePasswordsUIControllerTest, NormalNavigations) {
405 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( 389 scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
406 CreateFormManager()); 390 CreateFormManager());
407 controller()->OnPasswordSubmitted(std::move(test_form_manager)); 391 controller()->OnPasswordSubmitted(std::move(test_form_manager));
408 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); 392 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE);
409 393
410 // Fake-navigate. We expect the bubble's state to be reset. 394 // Fake-navigate. We expect the bubble's state to persist so a user reasonably
395 // have been able to interact with the bubble. This happens on
vabr (Chromium) 2016/02/17 14:28:42 nit: have -> has
vasilii 2016/02/17 14:40:38 Done.
396 // `accounts.google.com`, for instance.
411 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), 397 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(),
412 content::FrameNavigateParams()); 398 content::FrameNavigateParams());
399 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE,
400 controller()->GetState());
401 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE);
402 }
413 403
404 TEST_F(ManagePasswordsUIControllerTest, NormalNavigationsClosedBubble) {
405 scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
406 CreateFormManager());
407 controller()->OnPasswordSubmitted(std::move(test_form_manager));
408 controller()->SavePassword();
409 controller()->OnBubbleHidden();
410 ExpectIconStateIs(password_manager::ui::MANAGE_STATE);
411
412 // Fake-navigate. There is no bubble, reset the state.
413 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(),
414 content::FrameNavigateParams());
415 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState());
414 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); 416 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE);
415 } 417 }
416 418
417 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) { 419 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmittedToNonWebbyURL) {
418 // Navigate to a non-webby URL, then see what happens! 420 // Navigate to a non-webby URL, then see what happens!
419 content::WebContentsTester::For(web_contents()) 421 content::WebContentsTester::For(web_contents())
420 ->NavigateAndCommit(GURL("chrome://sign-in")); 422 ->NavigateAndCommit(GURL("chrome://sign-in"));
421 423
422 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( 424 scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
423 CreateFormManager()); 425 CreateFormManager());
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
646 EXPECT_CALL(dialog_prompt(), ControllerGone()); 648 EXPECT_CALL(dialog_prompt(), ControllerGone());
647 } 649 }
648 650
649 TEST_F(ManagePasswordsUIControllerTest, AutoSigninFirstRunAfterNavigation) { 651 TEST_F(ManagePasswordsUIControllerTest, AutoSigninFirstRunAfterNavigation) {
650 // Pop up the autosignin promo. 652 // Pop up the autosignin promo.
651 EXPECT_CALL(*controller(), CreateAutoSigninPrompt(_)).WillOnce( 653 EXPECT_CALL(*controller(), CreateAutoSigninPrompt(_)).WillOnce(
652 Return(&dialog_prompt())); 654 Return(&dialog_prompt()));
653 EXPECT_CALL(dialog_prompt(), ShowAutoSigninPrompt()); 655 EXPECT_CALL(dialog_prompt(), ShowAutoSigninPrompt());
654 controller()->OnPromptEnableAutoSignin(); 656 controller()->OnPromptEnableAutoSignin();
655 657
658 // The dialog should survive any navigation.
656 EXPECT_CALL(dialog_prompt(), ControllerGone()).Times(0); 659 EXPECT_CALL(dialog_prompt(), ControllerGone()).Times(0);
657 content::FrameNavigateParams params; 660 content::FrameNavigateParams params;
658 params.transition = ui::PAGE_TRANSITION_LINK; 661 params.transition = ui::PAGE_TRANSITION_LINK;
659 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), params); 662 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), params);
660 ASSERT_TRUE(testing::Mock::VerifyAndClearExpectations(&dialog_prompt())); 663 ASSERT_TRUE(testing::Mock::VerifyAndClearExpectations(&dialog_prompt()));
661 EXPECT_CALL(dialog_prompt(), ControllerGone()); 664 EXPECT_CALL(dialog_prompt(), ControllerGone());
662 } 665 }
663 666
664 TEST_F(ManagePasswordsUIControllerTest, AutofillDuringAutoSignin) { 667 TEST_F(ManagePasswordsUIControllerTest, AutofillDuringAutoSignin) {
665 ScopedVector<autofill::PasswordForm> local_credentials; 668 ScopedVector<autofill::PasswordForm> local_credentials;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 CreateFormManager()); 706 CreateFormManager());
704 test_form_manager->ProvisionallySave( 707 test_form_manager->ProvisionallySave(
705 test_local_form(), 708 test_local_form(),
706 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); 709 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
707 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); 710 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager));
708 711
709 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); 712 ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE);
710 controller()->UpdatePassword(autofill::PasswordForm()); 713 controller()->UpdatePassword(autofill::PasswordForm());
711 ExpectIconStateIs(password_manager::ui::MANAGE_STATE); 714 ExpectIconStateIs(password_manager::ui::MANAGE_STATE);
712 } 715 }
713
714 TEST_F(ManagePasswordsUIControllerTest, NavigationWhenUpdateBubbleActive) {
715 scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
716 CreateFormManager());
717 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager));
718 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE,
719 controller()->GetState());
720 controller()->DidNavigateMainFrame(content::LoadCommittedDetails(),
721 content::FrameNavigateParams());
722 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState());
723 // The following line shouldn't crash browser.
724 controller()->OnNoInteractionOnUpdate();
725 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698