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

Side by Side Diff: components/password_manager/core/browser/password_form_manager_unittest.cc

Issue 548953002: [Password Manager] Modified to support saving passwords on forms without username fields. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added unit-tests and fixed lint errors. Created 6 years, 3 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 (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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698