| 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/prefs/pref_registry_simple.h" | 6 #include "base/prefs/pref_registry_simple.h" |
| 7 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
| 8 #include "base/prefs/testing_pref_service.h" | 8 #include "base/prefs/testing_pref_service.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "base/test/histogram_tester.h" | 10 #include "base/test/histogram_tester.h" |
| (...skipping 864 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 875 | 875 |
| 876 form_manager()->Save(); | 876 form_manager()->Save(); |
| 877 | 877 |
| 878 // |other_possible_usernames| should also be empty, but username_value should | 878 // |other_possible_usernames| should also be empty, but username_value should |
| 879 // be changed to match |new_username|. | 879 // be changed to match |new_username|. |
| 880 EXPECT_EQ(saved_match()->other_possible_usernames[0], | 880 EXPECT_EQ(saved_match()->other_possible_usernames[0], |
| 881 saved_result.username_value); | 881 saved_result.username_value); |
| 882 EXPECT_TRUE(saved_result.other_possible_usernames.empty()); | 882 EXPECT_TRUE(saved_result.other_possible_usernames.empty()); |
| 883 } | 883 } |
| 884 | 884 |
| 885 TEST_F(PasswordFormManagerTest, TestValidForms) { | |
| 886 // User submits credentials for the observed form. | |
| 887 PasswordForm credentials = *observed_form(); | |
| 888 credentials.scheme = PasswordForm::SCHEME_HTML; | |
| 889 credentials.username_value = saved_match()->username_value; | |
| 890 credentials.password_value = saved_match()->password_value; | |
| 891 | |
| 892 // An alternate version of the form that also has a new_password_element. | |
| 893 PasswordForm new_credentials(*observed_form()); | |
| 894 new_credentials.new_password_element = ASCIIToUTF16("NewPasswd"); | |
| 895 new_credentials.new_password_value = ASCIIToUTF16("test1new"); | |
| 896 | |
| 897 // Form with both username_element and password_element. | |
| 898 PasswordFormManager manager1(password_manager(), client(), kNoDriver, | |
| 899 credentials, false); | |
| 900 SimulateMatchingPhase(&manager1, RESULT_NO_MATCH); | |
| 901 EXPECT_TRUE(manager1.HasValidPasswordForm()); | |
| 902 | |
| 903 // Form with username_element, password_element, and new_password_element. | |
| 904 PasswordFormManager manager2(password_manager(), client(), kNoDriver, | |
| 905 new_credentials, false); | |
| 906 SimulateMatchingPhase(&manager2, RESULT_NO_MATCH); | |
| 907 EXPECT_TRUE(manager2.HasValidPasswordForm()); | |
| 908 | |
| 909 // Form with username_element and only new_password_element. | |
| 910 new_credentials.password_element.clear(); | |
| 911 PasswordFormManager manager3(password_manager(), client(), kNoDriver, | |
| 912 new_credentials, false); | |
| 913 SimulateMatchingPhase(&manager3, RESULT_NO_MATCH); | |
| 914 EXPECT_TRUE(manager3.HasValidPasswordForm()); | |
| 915 | |
| 916 // Form without a username_element but with a password_element. | |
| 917 credentials.username_element.clear(); | |
| 918 PasswordFormManager manager4(password_manager(), client(), kNoDriver, | |
| 919 credentials, false); | |
| 920 SimulateMatchingPhase(&manager4, RESULT_NO_MATCH); | |
| 921 EXPECT_TRUE(manager4.HasValidPasswordForm()); | |
| 922 | |
| 923 // Form without a username_element but with a new_password_element. | |
| 924 new_credentials.username_element.clear(); | |
| 925 PasswordFormManager manager5(password_manager(), client(), kNoDriver, | |
| 926 new_credentials, false); | |
| 927 SimulateMatchingPhase(&manager5, RESULT_NO_MATCH); | |
| 928 EXPECT_TRUE(manager5.HasValidPasswordForm()); | |
| 929 | |
| 930 // Form without a password_element but with a username_element. | |
| 931 credentials.username_element = saved_match()->username_element; | |
| 932 credentials.password_element.clear(); | |
| 933 PasswordFormManager manager6(password_manager(), client(), kNoDriver, | |
| 934 credentials, false); | |
| 935 SimulateMatchingPhase(&manager6, RESULT_NO_MATCH); | |
| 936 EXPECT_FALSE(manager6.HasValidPasswordForm()); | |
| 937 | |
| 938 // Form with neither a password_element nor a username_element. | |
| 939 credentials.username_element.clear(); | |
| 940 credentials.password_element.clear(); | |
| 941 PasswordFormManager manager7(password_manager(), client(), kNoDriver, | |
| 942 credentials, false); | |
| 943 SimulateMatchingPhase(&manager7, RESULT_NO_MATCH); | |
| 944 EXPECT_FALSE(manager7.HasValidPasswordForm()); | |
| 945 } | |
| 946 | |
| 947 TEST_F(PasswordFormManagerTest, TestValidFormsBasic) { | |
| 948 // User submits credentials for the observed form. | |
| 949 PasswordForm credentials = *observed_form(); | |
| 950 credentials.scheme = PasswordForm::SCHEME_BASIC; | |
| 951 credentials.username_value = saved_match()->username_value; | |
| 952 credentials.password_value = saved_match()->password_value; | |
| 953 | |
| 954 // Form with both username_element and password_element. | |
| 955 PasswordFormManager manager1(password_manager(), client(), kNoDriver, | |
| 956 credentials, false); | |
| 957 SimulateMatchingPhase(&manager1, RESULT_NO_MATCH); | |
| 958 EXPECT_TRUE(manager1.HasValidPasswordForm()); | |
| 959 | |
| 960 // Form without a username_element but with a password_element. | |
| 961 credentials.username_element.clear(); | |
| 962 PasswordFormManager manager2(password_manager(), client(), kNoDriver, | |
| 963 credentials, false); | |
| 964 SimulateMatchingPhase(&manager2, RESULT_NO_MATCH); | |
| 965 EXPECT_TRUE(manager2.HasValidPasswordForm()); | |
| 966 | |
| 967 // Form without a password_element but with a username_element. | |
| 968 credentials.username_element = saved_match()->username_element; | |
| 969 credentials.password_element.clear(); | |
| 970 PasswordFormManager manager3(password_manager(), client(), kNoDriver, | |
| 971 credentials, false); | |
| 972 SimulateMatchingPhase(&manager3, RESULT_NO_MATCH); | |
| 973 EXPECT_TRUE(manager3.HasValidPasswordForm()); | |
| 974 | |
| 975 // Form with neither a password_element nor a username_element. | |
| 976 credentials.username_element.clear(); | |
| 977 credentials.password_element.clear(); | |
| 978 PasswordFormManager manager4(password_manager(), client(), kNoDriver, | |
| 979 credentials, false); | |
| 980 SimulateMatchingPhase(&manager4, RESULT_NO_MATCH); | |
| 981 EXPECT_TRUE(manager4.HasValidPasswordForm()); | |
| 982 } | |
| 983 | |
| 984 TEST_F(PasswordFormManagerTest, TestSendNotBlacklistedMessage_NoCredentials) { | 885 TEST_F(PasswordFormManagerTest, TestSendNotBlacklistedMessage_NoCredentials) { |
| 985 // First time sign-up attempt. Password store does not contain matching | 886 // First time sign-up attempt. Password store does not contain matching |
| 986 // credentials. AllowPasswordGenerationForForm should be called to send the | 887 // credentials. AllowPasswordGenerationForForm should be called to send the |
| 987 // "not blacklisted" message. | 888 // "not blacklisted" message. |
| 988 EXPECT_CALL(*(client()->mock_driver()), AllowPasswordGenerationForForm(_)) | 889 EXPECT_CALL(*(client()->mock_driver()), AllowPasswordGenerationForForm(_)) |
| 989 .Times(1); | 890 .Times(1); |
| 990 form_manager()->SimulateFetchMatchingLoginsFromPasswordStore(); | 891 form_manager()->SimulateFetchMatchingLoginsFromPasswordStore(); |
| 991 form_manager()->OnGetPasswordStoreResults(ScopedVector<PasswordForm>()); | 892 form_manager()->OnGetPasswordStoreResults(ScopedVector<PasswordForm>()); |
| 992 } | 893 } |
| 993 | 894 |
| (...skipping 1023 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2017 EXPECT_CALL(*mock_store(), UpdateLogin(_)) | 1918 EXPECT_CALL(*mock_store(), UpdateLogin(_)) |
| 2018 .WillOnce(testing::SaveArg<0>(&new_credentials)); | 1919 .WillOnce(testing::SaveArg<0>(&new_credentials)); |
| 2019 form_manager()->Save(); | 1920 form_manager()->Save(); |
| 2020 | 1921 |
| 2021 EXPECT_EQ(PasswordForm::TYPE_GENERATED, new_credentials.type); | 1922 EXPECT_EQ(PasswordForm::TYPE_GENERATED, new_credentials.type); |
| 2022 histogram_tester.ExpectBucketCount("PasswordGeneration.SubmissionEvent", | 1923 histogram_tester.ExpectBucketCount("PasswordGeneration.SubmissionEvent", |
| 2023 metrics_util::PASSWORD_USED, 1); | 1924 metrics_util::PASSWORD_USED, 1); |
| 2024 } | 1925 } |
| 2025 | 1926 |
| 2026 } // namespace password_manager | 1927 } // namespace password_manager |
| OLD | NEW |