| 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 <algorithm> | 5 #include <algorithm> |
| 6 #include <map> | 6 #include <map> |
| 7 #include <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 588 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 599 EXPECT_TRUE(wallet_.hasFolder(folder)); | 599 EXPECT_TRUE(wallet_.hasFolder(folder)); |
| 600 std::vector<std::string> entries; | 600 std::vector<std::string> entries; |
| 601 EXPECT_TRUE(wallet_.entryList(folder, &entries)); | 601 EXPECT_TRUE(wallet_.entryList(folder, &entries)); |
| 602 EXPECT_EQ(sorted_expected.size(), entries.size()); | 602 EXPECT_EQ(sorted_expected.size(), entries.size()); |
| 603 std::sort(entries.begin(), entries.end()); | 603 std::sort(entries.begin(), entries.end()); |
| 604 for (size_t i = 0; i < entries.size() && i < sorted_expected.size(); ++i) { | 604 for (size_t i = 0; i < entries.size() && i < sorted_expected.size(); ++i) { |
| 605 EXPECT_EQ(sorted_expected[i].first, entries[i]); | 605 EXPECT_EQ(sorted_expected[i].first, entries[i]); |
| 606 TestKWallet::Blob value; | 606 TestKWallet::Blob value; |
| 607 EXPECT_TRUE(wallet_.readEntry(folder, entries[i], &value)); | 607 EXPECT_TRUE(wallet_.readEntry(folder, entries[i], &value)); |
| 608 Pickle pickle(reinterpret_cast<const char*>(value.data()), value.size()); | 608 Pickle pickle(reinterpret_cast<const char*>(value.data()), value.size()); |
| 609 ScopedVector<autofill::PasswordForm> forms; | 609 ScopedVector<autofill::PasswordForm> forms = |
| 610 NativeBackendKWalletStub::DeserializeValue(entries[i], pickle, &forms); | 610 NativeBackendKWalletStub::DeserializeValue(entries[i], pickle); |
| 611 const std::vector<const PasswordForm*>& expect = sorted_expected[i].second; | 611 const std::vector<const PasswordForm*>& expect = sorted_expected[i].second; |
| 612 EXPECT_EQ(expect.size(), forms.size()); | 612 EXPECT_EQ(expect.size(), forms.size()); |
| 613 for (size_t j = 0; j < forms.size() && j < expect.size(); ++j) | 613 for (size_t j = 0; j < forms.size() && j < expect.size(); ++j) |
| 614 CheckPasswordForm(*expect[j], *forms[j], true); | 614 CheckPasswordForm(*expect[j], *forms[j], true); |
| 615 } | 615 } |
| 616 } | 616 } |
| 617 | 617 |
| 618 TEST_F(NativeBackendKWalletTest, NotEnabled) { | 618 TEST_F(NativeBackendKWalletTest, NotEnabled) { |
| 619 NativeBackendKWalletStub kwallet(42); | 619 NativeBackendKWalletStub kwallet(42); |
| 620 kwallet_enabled_ = false; | 620 kwallet_enabled_ = false; |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 874 | 874 |
| 875 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data")); | 875 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data")); |
| 876 | 876 |
| 877 std::vector<const PasswordForm*> forms; | 877 std::vector<const PasswordForm*> forms; |
| 878 forms.push_back(&form_google_); | 878 forms.push_back(&form_google_); |
| 879 ExpectationArray expected; | 879 ExpectationArray expected; |
| 880 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); | 880 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); |
| 881 CheckPasswordForms("Chrome Form Data (42)", expected); | 881 CheckPasswordForms("Chrome Form Data (42)", expected); |
| 882 } | 882 } |
| 883 | 883 |
| 884 TEST_F(NativeBackendKWalletTest, ListLoginsAppends) { | |
| 885 NativeBackendKWalletStub backend(42); | |
| 886 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | |
| 887 | |
| 888 BrowserThread::PostTask( | |
| 889 BrowserThread::DB, FROM_HERE, | |
| 890 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), | |
| 891 base::Unretained(&backend), form_google_)); | |
| 892 | |
| 893 // Send the same request twice with the same list both times. | |
| 894 ScopedVector<autofill::PasswordForm> form_list; | |
| 895 BrowserThread::PostTask( | |
| 896 BrowserThread::DB, FROM_HERE, | |
| 897 base::Bind( | |
| 898 base::IgnoreResult(&NativeBackendKWalletStub::GetAutofillableLogins), | |
| 899 base::Unretained(&backend), &form_list)); | |
| 900 BrowserThread::PostTask( | |
| 901 BrowserThread::DB, FROM_HERE, | |
| 902 base::Bind( | |
| 903 base::IgnoreResult(&NativeBackendKWalletStub::GetAutofillableLogins), | |
| 904 base::Unretained(&backend), &form_list)); | |
| 905 | |
| 906 RunDBThread(); | |
| 907 | |
| 908 // Quick check that we got two results back. | |
| 909 EXPECT_EQ(2u, form_list.size()); | |
| 910 | |
| 911 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data")); | |
| 912 | |
| 913 std::vector<const PasswordForm*> forms; | |
| 914 forms.push_back(&form_google_); | |
| 915 ExpectationArray expected; | |
| 916 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); | |
| 917 CheckPasswordForms("Chrome Form Data (42)", expected); | |
| 918 } | |
| 919 | |
| 920 TEST_F(NativeBackendKWalletTest, AndroidCredentials) { | 884 TEST_F(NativeBackendKWalletTest, AndroidCredentials) { |
| 921 NativeBackendKWalletStub backend(42); | 885 NativeBackendKWalletStub backend(42); |
| 922 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 886 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
| 923 | 887 |
| 924 PasswordForm observed_android_form; | 888 PasswordForm observed_android_form; |
| 925 observed_android_form.scheme = PasswordForm::SCHEME_HTML; | 889 observed_android_form.scheme = PasswordForm::SCHEME_HTML; |
| 926 observed_android_form.signon_realm = | 890 observed_android_form.signon_realm = |
| 927 "android://7x7IDboo8u9YKraUsbmVkuf1-@net.rateflix.app/"; | 891 "android://7x7IDboo8u9YKraUsbmVkuf1-@net.rateflix.app/"; |
| 928 PasswordForm saved_android_form = observed_android_form; | 892 PasswordForm saved_android_form = observed_android_form; |
| 929 saved_android_form.username_value = base::UTF8ToUTF16("randomusername"); | 893 saved_android_form.username_value = base::UTF8ToUTF16("randomusername"); |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1078 else | 1042 else |
| 1079 pickle->WriteInt64(form.date_created.ToTimeT()); | 1043 pickle->WriteInt64(form.date_created.ToTimeT()); |
| 1080 } | 1044 } |
| 1081 | 1045 |
| 1082 void NativeBackendKWalletPickleTest::CheckVersion6Pickle() { | 1046 void NativeBackendKWalletPickleTest::CheckVersion6Pickle() { |
| 1083 Pickle pickle; | 1047 Pickle pickle; |
| 1084 PasswordForm form = form_google_; | 1048 PasswordForm form = form_google_; |
| 1085 form.generation_upload_status = PasswordForm::NEGATIVE_SIGNAL_SENT; | 1049 form.generation_upload_status = PasswordForm::NEGATIVE_SIGNAL_SENT; |
| 1086 CreateVersion6Pickle(form, &pickle); | 1050 CreateVersion6Pickle(form, &pickle); |
| 1087 | 1051 |
| 1088 ScopedVector<PasswordForm> form_list; | 1052 ScopedVector<PasswordForm> form_list = |
| 1089 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle, | 1053 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); |
| 1090 &form_list); | |
| 1091 | 1054 |
| 1092 EXPECT_EQ(1u, form_list.size()); | 1055 EXPECT_EQ(1u, form_list.size()); |
| 1093 if (form_list.size() > 0) | 1056 if (form_list.size() > 0) |
| 1094 CheckPasswordForm(form, *form_list[0], true); | 1057 CheckPasswordForm(form, *form_list[0], true); |
| 1095 | 1058 |
| 1096 } | 1059 } |
| 1097 | 1060 |
| 1098 void NativeBackendKWalletPickleTest::CheckVersion5Pickle() { | 1061 void NativeBackendKWalletPickleTest::CheckVersion5Pickle() { |
| 1099 Pickle pickle; | 1062 Pickle pickle; |
| 1100 PasswordForm form = form_google_; | 1063 PasswordForm form = form_google_; |
| 1101 CreateVersion5Pickle(form, &pickle); | 1064 CreateVersion5Pickle(form, &pickle); |
| 1102 | 1065 |
| 1103 ScopedVector<PasswordForm> form_list; | 1066 ScopedVector<PasswordForm> form_list = |
| 1104 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle, | 1067 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); |
| 1105 &form_list); | |
| 1106 | 1068 |
| 1107 EXPECT_EQ(1u, form_list.size()); | 1069 EXPECT_EQ(1u, form_list.size()); |
| 1108 if (form_list.size() > 0) | 1070 if (form_list.size() > 0) |
| 1109 CheckPasswordForm(form, *form_list[0], true); | 1071 CheckPasswordForm(form, *form_list[0], true); |
| 1110 } | 1072 } |
| 1111 | 1073 |
| 1112 void NativeBackendKWalletPickleTest::CheckVersion3Pickle() { | 1074 void NativeBackendKWalletPickleTest::CheckVersion3Pickle() { |
| 1113 Pickle pickle; | 1075 Pickle pickle; |
| 1114 PasswordForm form = form_google_; | 1076 PasswordForm form = form_google_; |
| 1115 // Remove the fields which were not present in version #3. | 1077 // Remove the fields which were not present in version #3. |
| 1116 form.display_name.clear(); | 1078 form.display_name.clear(); |
| 1117 form.avatar_url = GURL(); | 1079 form.avatar_url = GURL(); |
| 1118 form.federation_url = GURL(); | 1080 form.federation_url = GURL(); |
| 1119 form.skip_zero_click = false; | 1081 form.skip_zero_click = false; |
| 1120 CreateVersion3Pickle(form, &pickle); | 1082 CreateVersion3Pickle(form, &pickle); |
| 1121 | 1083 |
| 1122 ScopedVector<PasswordForm> form_list; | 1084 ScopedVector<PasswordForm> form_list = |
| 1123 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle, | 1085 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); |
| 1124 &form_list); | |
| 1125 | 1086 |
| 1126 EXPECT_EQ(1u, form_list.size()); | 1087 EXPECT_EQ(1u, form_list.size()); |
| 1127 if (form_list.size() > 0) | 1088 if (form_list.size() > 0) |
| 1128 CheckPasswordForm(form, *form_list[0], false); | 1089 CheckPasswordForm(form, *form_list[0], false); |
| 1129 } | 1090 } |
| 1130 | 1091 |
| 1131 void NativeBackendKWalletPickleTest::CheckVersion2Pickle() { | 1092 void NativeBackendKWalletPickleTest::CheckVersion2Pickle() { |
| 1132 Pickle pickle; | 1093 Pickle pickle; |
| 1133 PasswordForm form = old_form_google_; | 1094 PasswordForm form = old_form_google_; |
| 1134 form.times_used = form_google_.times_used; | 1095 form.times_used = form_google_.times_used; |
| 1135 form.type = form_google_.type; | 1096 form.type = form_google_.type; |
| 1136 form.form_data = form_google_.form_data; | 1097 form.form_data = form_google_.form_data; |
| 1137 CreateVersion2Pickle(form, &pickle); | 1098 CreateVersion2Pickle(form, &pickle); |
| 1138 | 1099 |
| 1139 ScopedVector<PasswordForm> form_list; | 1100 ScopedVector<PasswordForm> form_list = |
| 1140 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle, | 1101 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); |
| 1141 &form_list); | |
| 1142 | 1102 |
| 1143 EXPECT_EQ(1u, form_list.size()); | 1103 EXPECT_EQ(1u, form_list.size()); |
| 1144 if (form_list.size() > 0) | 1104 if (form_list.size() > 0) |
| 1145 CheckPasswordForm(form, *form_list[0], false); | 1105 CheckPasswordForm(form, *form_list[0], false); |
| 1146 } | 1106 } |
| 1147 | 1107 |
| 1148 // Make sure that we can still read version 1 pickles. | 1108 // Make sure that we can still read version 1 pickles. |
| 1149 void NativeBackendKWalletPickleTest::CheckVersion1Pickle() { | 1109 void NativeBackendKWalletPickleTest::CheckVersion1Pickle() { |
| 1150 Pickle pickle; | 1110 Pickle pickle; |
| 1151 PasswordForm form = form_google_; | 1111 PasswordForm form = form_google_; |
| 1152 CreateVersion1Pickle(form, &pickle); | 1112 CreateVersion1Pickle(form, &pickle); |
| 1153 | 1113 |
| 1154 ScopedVector<autofill::PasswordForm> form_list; | 1114 ScopedVector<autofill::PasswordForm> form_list = |
| 1155 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, | 1115 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); |
| 1156 pickle, &form_list); | |
| 1157 | 1116 |
| 1158 // This will match |old_form_google_| because not all the fields present in | 1117 // This will match |old_form_google_| because not all the fields present in |
| 1159 // |form_google_| will be deserialized. | 1118 // |form_google_| will be deserialized. |
| 1160 EXPECT_EQ(1u, form_list.size()); | 1119 EXPECT_EQ(1u, form_list.size()); |
| 1161 if (form_list.size() > 0) | 1120 if (form_list.size() > 0) |
| 1162 CheckPasswordForm(old_form_google_, *form_list[0], false); | 1121 CheckPasswordForm(old_form_google_, *form_list[0], false); |
| 1163 } | 1122 } |
| 1164 | 1123 |
| 1165 void NativeBackendKWalletPickleTest::CheckVersion0Pickle( | 1124 void NativeBackendKWalletPickleTest::CheckVersion0Pickle( |
| 1166 bool size_32, PasswordForm::Scheme scheme) { | 1125 bool size_32, PasswordForm::Scheme scheme) { |
| 1167 Pickle pickle; | 1126 Pickle pickle; |
| 1168 PasswordForm form = old_form_google_; | 1127 PasswordForm form = old_form_google_; |
| 1169 form.scheme = scheme; | 1128 form.scheme = scheme; |
| 1170 CreateVersion0Pickle(size_32, form, &pickle); | 1129 CreateVersion0Pickle(size_32, form, &pickle); |
| 1171 ScopedVector<autofill::PasswordForm> form_list; | 1130 ScopedVector<autofill::PasswordForm> form_list = |
| 1172 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, | 1131 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); |
| 1173 pickle, &form_list); | |
| 1174 EXPECT_EQ(1u, form_list.size()); | 1132 EXPECT_EQ(1u, form_list.size()); |
| 1175 if (form_list.size() > 0) | 1133 if (form_list.size() > 0) |
| 1176 CheckPasswordForm(form, *form_list[0], false); | 1134 CheckPasswordForm(form, *form_list[0], false); |
| 1177 } | 1135 } |
| 1178 | 1136 |
| 1179 // Check that if KWallet fails to respond, the backend propagates the error. | 1137 // Check that if KWallet fails to respond, the backend propagates the error. |
| 1180 TEST_F(NativeBackendKWalletTest, GetAllLoginsErrorHandling) { | 1138 TEST_F(NativeBackendKWalletTest, GetAllLoginsErrorHandling) { |
| 1181 NativeBackendKWalletStub backend(42); | 1139 NativeBackendKWalletStub backend(42); |
| 1182 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 1140 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
| 1183 // Make KWallet fail on calling readEntry. | 1141 // Make KWallet fail on calling readEntry. |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1234 CheckVersion3Pickle(); | 1192 CheckVersion3Pickle(); |
| 1235 } | 1193 } |
| 1236 | 1194 |
| 1237 TEST_F(NativeBackendKWalletPickleTest, CheckVersion5Pickle) { | 1195 TEST_F(NativeBackendKWalletPickleTest, CheckVersion5Pickle) { |
| 1238 CheckVersion5Pickle(); | 1196 CheckVersion5Pickle(); |
| 1239 } | 1197 } |
| 1240 | 1198 |
| 1241 TEST_F(NativeBackendKWalletPickleTest, CheckVersion6Pickle) { | 1199 TEST_F(NativeBackendKWalletPickleTest, CheckVersion6Pickle) { |
| 1242 CheckVersion6Pickle(); | 1200 CheckVersion6Pickle(); |
| 1243 } | 1201 } |
| OLD | NEW |