OLD | NEW |
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 <map> |
5 #include <memory> | 6 #include <memory> |
6 #include <utility> | 7 #include <utility> |
7 #include <vector> | 8 #include <vector> |
8 | 9 |
9 #include "base/bind.h" | 10 #include "base/bind.h" |
10 #include "base/macros.h" | 11 #include "base/macros.h" |
11 #include "base/memory/ptr_util.h" | 12 #include "base/memory/ptr_util.h" |
| 13 #include "base/strings/string16.h" |
12 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
13 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
14 #include "build/build_config.h" | 16 #include "build/build_config.h" |
15 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" | 17 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" |
16 #include "chrome/browser/ui/passwords/manage_passwords_icon_view.h" | 18 #include "chrome/browser/ui/passwords/manage_passwords_icon_view.h" |
17 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h" | 19 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h" |
18 #include "chrome/browser/ui/passwords/password_dialog_controller.h" | 20 #include "chrome/browser/ui/passwords/password_dialog_controller.h" |
19 #include "chrome/browser/ui/passwords/password_dialog_prompts.h" | 21 #include "chrome/browser/ui/passwords/password_dialog_prompts.h" |
20 #include "chrome/browser/ui/passwords/passwords_model_delegate.h" | 22 #include "chrome/browser/ui/passwords/passwords_model_delegate.h" |
21 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 23 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 270 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
269 if (state == password_manager::ui::PENDING_PASSWORD_STATE) | 271 if (state == password_manager::ui::PENDING_PASSWORD_STATE) |
270 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 272 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
271 else if (state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) | 273 else if (state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) |
272 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); | 274 controller()->OnUpdatePasswordSubmitted(std::move(test_form_manager)); |
273 else // password_manager::ui::CONFIRMATION_STATE | 275 else // password_manager::ui::CONFIRMATION_STATE |
274 controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); | 276 controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); |
275 ASSERT_EQ(state, controller()->GetState()); | 277 ASSERT_EQ(state, controller()->GetState()); |
276 | 278 |
277 // Autofill happens. | 279 // Autofill happens. |
278 std::unique_ptr<autofill::PasswordForm> test_form( | 280 std::map<base::string16, const autofill::PasswordForm*> map; |
279 new autofill::PasswordForm(test_local_form())); | |
280 autofill::PasswordFormMap map; | |
281 map.insert( | 281 map.insert( |
282 std::make_pair(test_local_form().username_value, std::move(test_form))); | 282 std::make_pair(test_local_form().username_value, &test_local_form())); |
283 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 283 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
284 | 284 |
285 // State shouldn't changed. | 285 // State shouldn't changed. |
286 EXPECT_EQ(state, controller()->GetState()); | 286 EXPECT_EQ(state, controller()->GetState()); |
287 ExpectIconStateIs(state); | 287 ExpectIconStateIs(state); |
288 } | 288 } |
289 | 289 |
290 TEST_F(ManagePasswordsUIControllerTest, DefaultState) { | 290 TEST_F(ManagePasswordsUIControllerTest, DefaultState) { |
291 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 291 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
292 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); | 292 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); |
293 | 293 |
294 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 294 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
295 } | 295 } |
296 | 296 |
297 TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) { | 297 TEST_F(ManagePasswordsUIControllerTest, PasswordAutofilled) { |
298 std::unique_ptr<autofill::PasswordForm> test_form( | 298 const autofill::PasswordForm* test_form_ptr = &test_local_form(); |
299 new autofill::PasswordForm(test_local_form())); | 299 base::string16 kTestUsername = test_form_ptr->username_value; |
300 autofill::PasswordForm* test_form_ptr = test_form.get(); | 300 std::map<base::string16, const autofill::PasswordForm*> map; |
301 base::string16 kTestUsername = test_form->username_value; | 301 map.insert(std::make_pair(kTestUsername, test_form_ptr)); |
302 autofill::PasswordFormMap map; | |
303 map.insert(std::make_pair(kTestUsername, std::move(test_form))); | |
304 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 302 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
305 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 303 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
306 | 304 |
307 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 305 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
308 EXPECT_EQ(test_form_ptr->origin, controller()->GetOrigin()); | 306 EXPECT_EQ(test_form_ptr->origin, controller()->GetOrigin()); |
309 ASSERT_EQ(1u, controller()->GetCurrentForms().size()); | 307 ASSERT_EQ(1u, controller()->GetCurrentForms().size()); |
310 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); | 308 EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); |
311 | 309 |
312 // Controller should store a separate copy of the form as it doesn't own it. | 310 // Controller should store a separate copy of the form as it doesn't own it. |
313 EXPECT_NE(test_form_ptr, controller()->GetCurrentForms()[0].get()); | 311 EXPECT_NE(test_form_ptr, controller()->GetCurrentForms()[0].get()); |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
480 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 478 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
481 controller()->OnPasswordSubmitted(std::move(test_form_manager)); | 479 controller()->OnPasswordSubmitted(std::move(test_form_manager)); |
482 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 480 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
483 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); | 481 EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); |
484 | 482 |
485 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); | 483 ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); |
486 } | 484 } |
487 | 485 |
488 TEST_F(ManagePasswordsUIControllerTest, BlacklistedElsewhere) { | 486 TEST_F(ManagePasswordsUIControllerTest, BlacklistedElsewhere) { |
489 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 487 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); |
490 autofill::PasswordFormMap map; | 488 std::map<base::string16, const autofill::PasswordForm*> map; |
491 map.insert(std::make_pair( | 489 map.insert(std::make_pair(kTestUsername, &test_local_form())); |
492 kTestUsername, | |
493 base::WrapUnique(new autofill::PasswordForm(test_local_form())))); | |
494 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 490 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
495 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 491 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
496 | 492 |
497 test_local_form().blacklisted_by_user = true; | 493 test_local_form().blacklisted_by_user = true; |
498 password_manager::PasswordStoreChange change( | 494 password_manager::PasswordStoreChange change( |
499 password_manager::PasswordStoreChange::ADD, test_local_form()); | 495 password_manager::PasswordStoreChange::ADD, test_local_form()); |
500 password_manager::PasswordStoreChangeList list(1, change); | 496 password_manager::PasswordStoreChangeList list(1, change); |
501 controller()->OnLoginsChanged(list); | 497 controller()->OnLoginsChanged(list); |
502 | 498 |
503 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 499 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
631 Return(&dialog_prompt())); | 627 Return(&dialog_prompt())); |
632 EXPECT_CALL(dialog_prompt(), ShowAutoSigninPrompt()); | 628 EXPECT_CALL(dialog_prompt(), ShowAutoSigninPrompt()); |
633 controller()->OnPromptEnableAutoSignin(); | 629 controller()->OnPromptEnableAutoSignin(); |
634 | 630 |
635 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 631 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
636 EXPECT_CALL(dialog_prompt(), ControllerGone()); | 632 EXPECT_CALL(dialog_prompt(), ControllerGone()); |
637 } | 633 } |
638 | 634 |
639 TEST_F(ManagePasswordsUIControllerTest, AutoSigninFirstRunAfterAutofill) { | 635 TEST_F(ManagePasswordsUIControllerTest, AutoSigninFirstRunAfterAutofill) { |
640 // Setup the managed state first. | 636 // Setup the managed state first. |
641 std::unique_ptr<autofill::PasswordForm> test_form( | 637 const autofill::PasswordForm* test_form_ptr = &test_local_form(); |
642 new autofill::PasswordForm(test_local_form())); | 638 const base::string16 kTestUsername = test_form_ptr->username_value; |
643 autofill::PasswordForm* test_form_ptr = test_form.get(); | 639 std::map<base::string16, const autofill::PasswordForm*> map; |
644 const base::string16 kTestUsername = test_form->username_value; | 640 map.insert(std::make_pair(kTestUsername, test_form_ptr)); |
645 autofill::PasswordFormMap map; | |
646 map.insert(std::make_pair(kTestUsername, std::move(test_form))); | |
647 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 641 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
648 controller()->OnPasswordAutofilled(map, test_form_ptr->origin, nullptr); | 642 controller()->OnPasswordAutofilled(map, test_form_ptr->origin, nullptr); |
649 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); | 643 EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); |
650 | 644 |
651 // Pop up the autosignin promo. The state should stay intact. | 645 // Pop up the autosignin promo. The state should stay intact. |
652 EXPECT_CALL(*controller(), CreateAutoSigninPrompt(_)).WillOnce( | 646 EXPECT_CALL(*controller(), CreateAutoSigninPrompt(_)).WillOnce( |
653 Return(&dialog_prompt())); | 647 Return(&dialog_prompt())); |
654 EXPECT_CALL(dialog_prompt(), ShowAutoSigninPrompt()); | 648 EXPECT_CALL(dialog_prompt(), ShowAutoSigninPrompt()); |
655 controller()->OnPromptEnableAutoSignin(); | 649 controller()->OnPromptEnableAutoSignin(); |
656 | 650 |
(...skipping 21 matching lines...) Expand all Loading... |
678 EXPECT_CALL(dialog_prompt(), ControllerGone()); | 672 EXPECT_CALL(dialog_prompt(), ControllerGone()); |
679 } | 673 } |
680 | 674 |
681 TEST_F(ManagePasswordsUIControllerTest, AutofillDuringAutoSignin) { | 675 TEST_F(ManagePasswordsUIControllerTest, AutofillDuringAutoSignin) { |
682 std::vector<std::unique_ptr<autofill::PasswordForm>> local_credentials; | 676 std::vector<std::unique_ptr<autofill::PasswordForm>> local_credentials; |
683 local_credentials.emplace_back(new autofill::PasswordForm(test_local_form())); | 677 local_credentials.emplace_back(new autofill::PasswordForm(test_local_form())); |
684 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 678 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
685 controller()->OnAutoSignin(std::move(local_credentials), | 679 controller()->OnAutoSignin(std::move(local_credentials), |
686 test_local_form().origin); | 680 test_local_form().origin); |
687 ExpectIconAndControllerStateIs(password_manager::ui::AUTO_SIGNIN_STATE); | 681 ExpectIconAndControllerStateIs(password_manager::ui::AUTO_SIGNIN_STATE); |
688 std::unique_ptr<autofill::PasswordForm> test_form( | 682 std::map<base::string16, const autofill::PasswordForm*> map; |
689 new autofill::PasswordForm(test_local_form())); | 683 base::string16 kTestUsername = test_local_form().username_value; |
690 autofill::PasswordFormMap map; | 684 map.insert(std::make_pair(kTestUsername, &test_local_form())); |
691 base::string16 kTestUsername = test_form->username_value; | |
692 map.insert(std::make_pair(kTestUsername, std::move(test_form))); | |
693 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 685 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
694 | 686 |
695 ExpectIconAndControllerStateIs(password_manager::ui::AUTO_SIGNIN_STATE); | 687 ExpectIconAndControllerStateIs(password_manager::ui::AUTO_SIGNIN_STATE); |
696 } | 688 } |
697 | 689 |
698 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { | 690 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { |
699 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 691 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); |
700 autofill::PasswordFormMap map; | 692 std::map<base::string16, const autofill::PasswordForm*> map; |
701 std::unique_ptr<autofill::PasswordForm> psl_matched_test_form( | 693 autofill::PasswordForm psl_matched_test_form(test_local_form()); |
702 new autofill::PasswordForm(test_local_form())); | 694 psl_matched_test_form.is_public_suffix_match = true; |
703 psl_matched_test_form->is_public_suffix_match = true; | 695 map.insert(std::make_pair(kTestUsername, &psl_matched_test_form)); |
704 map.insert(std::make_pair(kTestUsername, std::move(psl_matched_test_form))); | |
705 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 696 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
706 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); | 697 controller()->OnPasswordAutofilled(map, map.begin()->second->origin, nullptr); |
707 | 698 |
708 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); | 699 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); |
709 } | 700 } |
710 | 701 |
711 TEST_F(ManagePasswordsUIControllerTest, UpdatePasswordSubmitted) { | 702 TEST_F(ManagePasswordsUIControllerTest, UpdatePasswordSubmitted) { |
712 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( | 703 std::unique_ptr<password_manager::PasswordFormManager> test_form_manager( |
713 CreateFormManager()); | 704 CreateFormManager()); |
714 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 705 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
762 // Open the bubble again. | 753 // Open the bubble again. |
763 local_credentials.emplace_back(new autofill::PasswordForm(test_local_form())); | 754 local_credentials.emplace_back(new autofill::PasswordForm(test_local_form())); |
764 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); | 755 EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); |
765 controller()->OnAutoSignin(std::move(local_credentials), | 756 controller()->OnAutoSignin(std::move(local_credentials), |
766 test_local_form().origin); | 757 test_local_form().origin); |
767 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->GetState()); | 758 EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->GetState()); |
768 // Check the delegate is destroyed. Thus, the first bubble has no way to mess | 759 // Check the delegate is destroyed. Thus, the first bubble has no way to mess |
769 // up with the controller's state. | 760 // up with the controller's state. |
770 EXPECT_FALSE(proxy_delegate); | 761 EXPECT_FALSE(proxy_delegate); |
771 } | 762 } |
OLD | NEW |