OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "base/message_loop/message_loop.h" | 6 #include "base/message_loop/message_loop.h" |
7 #include "base/prefs/pref_registry_simple.h" | 7 #include "base/prefs/pref_registry_simple.h" |
8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
9 #include "base/prefs/testing_pref_service.h" | 9 #include "base/prefs/testing_pref_service.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
586 credentials.password_value = saved_match()->password_value; | 586 credentials.password_value = saved_match()->password_value; |
587 | 587 |
588 // An alternate version of the form that also has a new_password_element. | 588 // An alternate version of the form that also has a new_password_element. |
589 PasswordForm new_credentials(*observed_form()); | 589 PasswordForm new_credentials(*observed_form()); |
590 new_credentials.new_password_element = ASCIIToUTF16("NewPasswd"); | 590 new_credentials.new_password_element = ASCIIToUTF16("NewPasswd"); |
591 new_credentials.new_password_value = ASCIIToUTF16("test1new"); | 591 new_credentials.new_password_value = ASCIIToUTF16("test1new"); |
592 | 592 |
593 // Form with both username_element and password_element. | 593 // Form with both username_element and password_element. |
594 PasswordFormManager manager1(NULL, NULL, NULL, credentials, false); | 594 PasswordFormManager manager1(NULL, NULL, NULL, credentials, false); |
595 SimulateMatchingPhase(&manager1, RESULT_NO_MATCH); | 595 SimulateMatchingPhase(&manager1, RESULT_NO_MATCH); |
| 596 EXPECT_TRUE(manager1.HasValidLogin()); |
596 EXPECT_TRUE(manager1.HasValidPasswordForm()); | 597 EXPECT_TRUE(manager1.HasValidPasswordForm()); |
597 | 598 |
598 // Form with username_element, password_element, and new_password_element. | 599 // Form with username_element, password_element, and new_password_element. |
599 PasswordFormManager manager2(NULL, NULL, NULL, new_credentials, false); | 600 PasswordFormManager manager2(NULL, NULL, NULL, new_credentials, false); |
600 SimulateMatchingPhase(&manager2, RESULT_NO_MATCH); | 601 SimulateMatchingPhase(&manager2, RESULT_NO_MATCH); |
| 602 EXPECT_TRUE(manager2.HasValidLogin()); |
601 EXPECT_TRUE(manager2.HasValidPasswordForm()); | 603 EXPECT_TRUE(manager2.HasValidPasswordForm()); |
602 | 604 |
603 // Form with username_element and only new_password_element. | 605 // Form with username_element and only new_password_element. |
604 new_credentials.password_element.clear(); | 606 new_credentials.password_element.clear(); |
605 PasswordFormManager manager3(NULL, NULL, NULL, new_credentials, false); | 607 PasswordFormManager manager3(NULL, NULL, NULL, new_credentials, false); |
606 SimulateMatchingPhase(&manager3, RESULT_NO_MATCH); | 608 SimulateMatchingPhase(&manager3, RESULT_NO_MATCH); |
| 609 EXPECT_TRUE(manager3.HasValidLogin()); |
607 EXPECT_TRUE(manager3.HasValidPasswordForm()); | 610 EXPECT_TRUE(manager3.HasValidPasswordForm()); |
608 | 611 |
609 // Form without a username_element but with a password_element. | 612 // Form without a username_element but with a password_element. |
610 credentials.username_element.clear(); | 613 credentials.username_element.clear(); |
611 PasswordFormManager manager4(NULL, NULL, NULL, credentials, false); | 614 PasswordFormManager manager4(NULL, NULL, NULL, credentials, false); |
612 SimulateMatchingPhase(&manager4, RESULT_NO_MATCH); | 615 SimulateMatchingPhase(&manager4, RESULT_NO_MATCH); |
613 EXPECT_FALSE(manager4.HasValidPasswordForm()); | 616 EXPECT_FALSE(manager4.HasValidLogin()); |
| 617 EXPECT_TRUE(manager4.HasValidPasswordForm()); |
614 | 618 |
615 // Form without a username_element but with a new_password_element. | 619 // Form without a username_element but with a new_password_element. |
616 new_credentials.username_element.clear(); | 620 new_credentials.username_element.clear(); |
617 PasswordFormManager manager5(NULL, NULL, NULL, new_credentials, false); | 621 PasswordFormManager manager5(NULL, NULL, NULL, new_credentials, false); |
618 SimulateMatchingPhase(&manager5, RESULT_NO_MATCH); | 622 SimulateMatchingPhase(&manager5, RESULT_NO_MATCH); |
619 EXPECT_FALSE(manager5.HasValidPasswordForm()); | 623 EXPECT_FALSE(manager5.HasValidLogin()); |
| 624 EXPECT_TRUE(manager5.HasValidPasswordForm()); |
620 | 625 |
621 // Form without a password_element but with a username_element. | 626 // Form without a password_element but with a username_element. |
622 credentials.username_element = saved_match()->username_element; | 627 credentials.username_element = saved_match()->username_element; |
623 credentials.password_element.clear(); | 628 credentials.password_element.clear(); |
624 PasswordFormManager manager6(NULL, NULL, NULL, credentials, false); | 629 PasswordFormManager manager6(NULL, NULL, NULL, credentials, false); |
625 SimulateMatchingPhase(&manager6, RESULT_NO_MATCH); | 630 SimulateMatchingPhase(&manager6, RESULT_NO_MATCH); |
626 EXPECT_FALSE(manager6.HasValidPasswordForm()); | 631 EXPECT_FALSE(manager6.HasValidPasswordForm()); |
627 | 632 |
628 // Form with neither a password_element nor a username_element. | 633 // Form with neither a password_element nor a username_element. |
629 credentials.username_element.clear(); | 634 credentials.username_element.clear(); |
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1081 retrieving_manager.FetchMatchingLoginsFromPasswordStore( | 1086 retrieving_manager.FetchMatchingLoginsFromPasswordStore( |
1082 PasswordStore::ALLOW_PROMPT); | 1087 PasswordStore::ALLOW_PROMPT); |
1083 RunAllPendingTasks(); | 1088 RunAllPendingTasks(); |
1084 | 1089 |
1085 // Make sure that the preferred match is updated appropriately. | 1090 // Make sure that the preferred match is updated appropriately. |
1086 EXPECT_EQ(ASCIIToUTF16("third"), | 1091 EXPECT_EQ(ASCIIToUTF16("third"), |
1087 retrieving_manager.preferred_match()->password_value); | 1092 retrieving_manager.preferred_match()->password_value); |
1088 password_store->Shutdown(); | 1093 password_store->Shutdown(); |
1089 } | 1094 } |
1090 | 1095 |
| 1096 TEST_F(PasswordFormManagerTest, CorrectlySavePasswordWithoutUsernameFields) { |
| 1097 // Need a MessageLoop for callbacks. |
| 1098 base::MessageLoop message_loop; |
| 1099 scoped_refptr<TestPasswordStore> password_store = new TestPasswordStore; |
| 1100 CHECK(password_store->Init(syncer::SyncableService::StartSyncFlare(), "")); |
| 1101 |
| 1102 TestPasswordManagerClient client_with_store(password_store.get()); |
| 1103 TestPasswordManager password_manager(&client_with_store); |
| 1104 EXPECT_CALL(*client_with_store.GetMockDriver(), |
| 1105 AllowPasswordGenerationForForm(_)).Times(2); |
| 1106 EXPECT_CALL(*client_with_store.GetMockDriver(), IsOffTheRecord()) |
| 1107 .WillRepeatedly(Return(false)); |
| 1108 |
| 1109 PasswordForm form(*observed_form()); |
| 1110 form.username_element.clear(); |
| 1111 form.password_value = ASCIIToUTF16("password"); |
| 1112 form.preferred = true; |
| 1113 |
| 1114 PasswordFormManager storing_manager(&password_manager, |
| 1115 &client_with_store, |
| 1116 client_with_store.GetDriver(), |
| 1117 *observed_form(), |
| 1118 false); |
| 1119 storing_manager.FetchMatchingLoginsFromPasswordStore( |
| 1120 PasswordStore::ALLOW_PROMPT); |
| 1121 RunAllPendingTasks(); |
| 1122 |
| 1123 storing_manager.ProvisionallySave( |
| 1124 form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 1125 |
| 1126 EXPECT_TRUE(storing_manager.IsNewLogin()); |
| 1127 storing_manager.Save(); |
| 1128 RunAllPendingTasks(); |
| 1129 |
| 1130 PasswordFormManager retrieving_manager(&password_manager, |
| 1131 &client_with_store, |
| 1132 client_with_store.GetDriver(), |
| 1133 *observed_form(), |
| 1134 false); |
| 1135 |
| 1136 retrieving_manager.FetchMatchingLoginsFromPasswordStore( |
| 1137 PasswordStore::ALLOW_PROMPT); |
| 1138 RunAllPendingTasks(); |
| 1139 |
| 1140 // Make sure that the preferred match is updated appropriately. |
| 1141 EXPECT_EQ(ASCIIToUTF16("password"), |
| 1142 retrieving_manager.preferred_match()->password_value); |
| 1143 password_store->Shutdown(); |
| 1144 } |
| 1145 |
1091 } // namespace password_manager | 1146 } // namespace password_manager |
OLD | NEW |