| 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 <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 | 7 |
| 8 #include <algorithm> | 8 #include <algorithm> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 // legacy shared passwords in these tests, for testing the migration code. | 130 // legacy shared passwords in these tests, for testing the migration code. |
| 131 bool reject_local_folders_; | 131 bool reject_local_folders_; |
| 132 | 132 |
| 133 // No need to disallow copy and assign. This class is safe to copy and assign. | 133 // No need to disallow copy and assign. This class is safe to copy and assign. |
| 134 }; | 134 }; |
| 135 | 135 |
| 136 // Runs |backend->GetAutofillableLogins(forms)| and expects that the return | 136 // Runs |backend->GetAutofillableLogins(forms)| and expects that the return |
| 137 // value is false. | 137 // value is false. |
| 138 void CheckGetAutofillableLoginsFails( | 138 void CheckGetAutofillableLoginsFails( |
| 139 PasswordStoreX::NativeBackend* backend, | 139 PasswordStoreX::NativeBackend* backend, |
| 140 ScopedVector<autofill::PasswordForm>* forms) { | 140 std::vector<std::unique_ptr<PasswordForm>>* forms) { |
| 141 EXPECT_FALSE(backend->GetAutofillableLogins(forms)); | 141 EXPECT_FALSE(backend->GetAutofillableLogins(forms)); |
| 142 } | 142 } |
| 143 | 143 |
| 144 void CheckTrue(bool result) { | 144 void CheckTrue(bool result) { |
| 145 EXPECT_TRUE(result); | 145 EXPECT_TRUE(result); |
| 146 } | 146 } |
| 147 | 147 |
| 148 void WriteHTMLAttributes(const PasswordForm& form, base::Pickle* pickle) { | 148 void WriteHTMLAttributes(const PasswordForm& form, base::Pickle* pickle) { |
| 149 pickle->WriteInt(form.scheme); | 149 pickle->WriteInt(form.scheme); |
| 150 pickle->WriteString(form.origin.spec()); | 150 pickle->WriteString(form.origin.spec()); |
| (...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 656 std::vector<std::string> entries; | 656 std::vector<std::string> entries; |
| 657 EXPECT_TRUE(wallet_.entryList(folder, &entries)); | 657 EXPECT_TRUE(wallet_.entryList(folder, &entries)); |
| 658 EXPECT_EQ(sorted_expected.size(), entries.size()); | 658 EXPECT_EQ(sorted_expected.size(), entries.size()); |
| 659 std::sort(entries.begin(), entries.end()); | 659 std::sort(entries.begin(), entries.end()); |
| 660 for (size_t i = 0; i < entries.size() && i < sorted_expected.size(); ++i) { | 660 for (size_t i = 0; i < entries.size() && i < sorted_expected.size(); ++i) { |
| 661 EXPECT_EQ(sorted_expected[i].first, entries[i]); | 661 EXPECT_EQ(sorted_expected[i].first, entries[i]); |
| 662 TestKWallet::Blob value; | 662 TestKWallet::Blob value; |
| 663 EXPECT_TRUE(wallet_.readEntry(folder, entries[i], &value)); | 663 EXPECT_TRUE(wallet_.readEntry(folder, entries[i], &value)); |
| 664 base::Pickle pickle(reinterpret_cast<const char*>(value.data()), | 664 base::Pickle pickle(reinterpret_cast<const char*>(value.data()), |
| 665 value.size()); | 665 value.size()); |
| 666 ScopedVector<autofill::PasswordForm> forms = | 666 std::vector<std::unique_ptr<PasswordForm>> forms = |
| 667 NativeBackendKWalletStub::DeserializeValue(entries[i], pickle); | 667 NativeBackendKWalletStub::DeserializeValue(entries[i], pickle); |
| 668 const std::vector<const PasswordForm*>& expect = sorted_expected[i].second; | 668 const std::vector<const PasswordForm*>& expect = sorted_expected[i].second; |
| 669 EXPECT_EQ(expect.size(), forms.size()); | 669 EXPECT_EQ(expect.size(), forms.size()); |
| 670 for (size_t j = 0; j < forms.size() && j < expect.size(); ++j) | 670 for (size_t j = 0; j < forms.size() && j < expect.size(); ++j) |
| 671 CheckPasswordForm(*expect[j], *forms[j], true); | 671 CheckPasswordForm(*expect[j], *forms[j], true); |
| 672 } | 672 } |
| 673 } | 673 } |
| 674 | 674 |
| 675 TEST_P(NativeBackendKWalletTest, NotEnabled) { | 675 TEST_P(NativeBackendKWalletTest, NotEnabled) { |
| 676 NativeBackendKWalletStub kwallet(42, desktop_env_); | 676 NativeBackendKWalletStub kwallet(42, desktop_env_); |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 772 | 772 |
| 773 TEST_P(NativeBackendKWalletTest, BasicListLogins) { | 773 TEST_P(NativeBackendKWalletTest, BasicListLogins) { |
| 774 NativeBackendKWalletStub backend(42, desktop_env_); | 774 NativeBackendKWalletStub backend(42, desktop_env_); |
| 775 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 775 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
| 776 | 776 |
| 777 BrowserThread::PostTask( | 777 BrowserThread::PostTask( |
| 778 BrowserThread::DB, FROM_HERE, | 778 BrowserThread::DB, FROM_HERE, |
| 779 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), | 779 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), |
| 780 base::Unretained(&backend), form_google_)); | 780 base::Unretained(&backend), form_google_)); |
| 781 | 781 |
| 782 ScopedVector<autofill::PasswordForm> form_list; | 782 std::vector<std::unique_ptr<PasswordForm>> form_list; |
| 783 BrowserThread::PostTaskAndReplyWithResult( | 783 BrowserThread::PostTaskAndReplyWithResult( |
| 784 BrowserThread::DB, FROM_HERE, | 784 BrowserThread::DB, FROM_HERE, |
| 785 base::Bind(&NativeBackendKWalletStub::GetAutofillableLogins, | 785 base::Bind(&NativeBackendKWalletStub::GetAutofillableLogins, |
| 786 base::Unretained(&backend), &form_list), | 786 base::Unretained(&backend), &form_list), |
| 787 base::Bind(&CheckTrue)); | 787 base::Bind(&CheckTrue)); |
| 788 | 788 |
| 789 RunDBThread(); | 789 RunDBThread(); |
| 790 | 790 |
| 791 // Quick check that we got something back. | 791 // Quick check that we got something back. |
| 792 EXPECT_EQ(1u, form_list.size()); | 792 EXPECT_EQ(1u, form_list.size()); |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 892 // Attempt to remove a login that doesn't exist. | 892 // Attempt to remove a login that doesn't exist. |
| 893 PasswordStoreChangeList changes; | 893 PasswordStoreChangeList changes; |
| 894 BrowserThread::PostTaskAndReplyWithResult( | 894 BrowserThread::PostTaskAndReplyWithResult( |
| 895 BrowserThread::DB, FROM_HERE, | 895 BrowserThread::DB, FROM_HERE, |
| 896 base::Bind(&NativeBackendKWalletStub::RemoveLogin, | 896 base::Bind(&NativeBackendKWalletStub::RemoveLogin, |
| 897 base::Unretained(&backend), form_isc_, &changes), | 897 base::Unretained(&backend), form_isc_, &changes), |
| 898 base::Bind(&CheckPasswordChangesWithResult, | 898 base::Bind(&CheckPasswordChangesWithResult, |
| 899 base::Owned(new PasswordStoreChangeList), &changes)); | 899 base::Owned(new PasswordStoreChangeList), &changes)); |
| 900 | 900 |
| 901 // Make sure we can still get the first form back. | 901 // Make sure we can still get the first form back. |
| 902 ScopedVector<autofill::PasswordForm> form_list; | 902 std::vector<std::unique_ptr<PasswordForm>> form_list; |
| 903 BrowserThread::PostTaskAndReplyWithResult( | 903 BrowserThread::PostTaskAndReplyWithResult( |
| 904 BrowserThread::DB, FROM_HERE, | 904 BrowserThread::DB, FROM_HERE, |
| 905 base::Bind(&NativeBackendKWalletStub::GetAutofillableLogins, | 905 base::Bind(&NativeBackendKWalletStub::GetAutofillableLogins, |
| 906 base::Unretained(&backend), &form_list), | 906 base::Unretained(&backend), &form_list), |
| 907 base::Bind(&CheckTrue)); | 907 base::Bind(&CheckTrue)); |
| 908 | 908 |
| 909 RunDBThread(); | 909 RunDBThread(); |
| 910 | 910 |
| 911 // Quick check that we got something back. | 911 // Quick check that we got something back. |
| 912 EXPECT_EQ(1u, form_list.size()); | 912 EXPECT_EQ(1u, form_list.size()); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 968 password_manager::PasswordStore::FormDigest observed_android_form( | 968 password_manager::PasswordStore::FormDigest observed_android_form( |
| 969 saved_android_form); | 969 saved_android_form); |
| 970 BrowserThread::PostTaskAndReplyWithResult( | 970 BrowserThread::PostTaskAndReplyWithResult( |
| 971 BrowserThread::DB, FROM_HERE, | 971 BrowserThread::DB, FROM_HERE, |
| 972 base::Bind(&NativeBackendKWalletStub::AddLogin, | 972 base::Bind(&NativeBackendKWalletStub::AddLogin, |
| 973 base::Unretained(&backend), saved_android_form), | 973 base::Unretained(&backend), saved_android_form), |
| 974 base::Bind(&CheckPasswordChanges, | 974 base::Bind(&CheckPasswordChanges, |
| 975 PasswordStoreChangeList(1, PasswordStoreChange( | 975 PasswordStoreChangeList(1, PasswordStoreChange( |
| 976 PasswordStoreChange::ADD, saved_android_form)))); | 976 PasswordStoreChange::ADD, saved_android_form)))); |
| 977 | 977 |
| 978 ScopedVector<autofill::PasswordForm> form_list; | 978 std::vector<std::unique_ptr<PasswordForm>> form_list; |
| 979 BrowserThread::PostTaskAndReplyWithResult( | 979 BrowserThread::PostTaskAndReplyWithResult( |
| 980 BrowserThread::DB, FROM_HERE, | 980 BrowserThread::DB, FROM_HERE, |
| 981 base::Bind(&NativeBackendKWalletStub::GetLogins, | 981 base::Bind(&NativeBackendKWalletStub::GetLogins, |
| 982 base::Unretained(&backend), observed_android_form, &form_list), | 982 base::Unretained(&backend), observed_android_form, &form_list), |
| 983 base::Bind(&CheckTrue)); | 983 base::Bind(&CheckTrue)); |
| 984 | 984 |
| 985 RunDBThread(); | 985 RunDBThread(); |
| 986 | 986 |
| 987 EXPECT_EQ(1u, form_list.size()); | 987 EXPECT_EQ(1u, form_list.size()); |
| 988 | 988 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1076 ASSERT_TRUE(wallet_.readEntry("Chrome Form Data (42)", | 1076 ASSERT_TRUE(wallet_.readEntry("Chrome Form Data (42)", |
| 1077 form_google_.signon_realm, &value)); | 1077 form_google_.signon_realm, &value)); |
| 1078 TestKWallet::Blob sample(reinterpret_cast<const uint8_t*>(unique_string)); | 1078 TestKWallet::Blob sample(reinterpret_cast<const uint8_t*>(unique_string)); |
| 1079 size_t position = value.find(sample); | 1079 size_t position = value.find(sample); |
| 1080 ASSERT_NE(TestKWallet::Blob::npos, position); | 1080 ASSERT_NE(TestKWallet::Blob::npos, position); |
| 1081 value.replace(position, sample.length(), | 1081 value.replace(position, sample.length(), |
| 1082 reinterpret_cast<const uint8_t*>(unique_string_replacement)); | 1082 reinterpret_cast<const uint8_t*>(unique_string_replacement)); |
| 1083 wallet_.writeEntry("Chrome Form Data (42)", form_google_.signon_realm, value); | 1083 wallet_.writeEntry("Chrome Form Data (42)", form_google_.signon_realm, value); |
| 1084 | 1084 |
| 1085 // Now test that GetAutofillableLogins returns only one form. | 1085 // Now test that GetAutofillableLogins returns only one form. |
| 1086 ScopedVector<autofill::PasswordForm> form_list; | 1086 std::vector<std::unique_ptr<PasswordForm>> form_list; |
| 1087 BrowserThread::PostTaskAndReplyWithResult( | 1087 BrowserThread::PostTaskAndReplyWithResult( |
| 1088 BrowserThread::DB, FROM_HERE, | 1088 BrowserThread::DB, FROM_HERE, |
| 1089 base::Bind(&NativeBackendKWalletStub::GetAutofillableLogins, | 1089 base::Bind(&NativeBackendKWalletStub::GetAutofillableLogins, |
| 1090 base::Unretained(&backend), &form_list), | 1090 base::Unretained(&backend), &form_list), |
| 1091 base::Bind(&CheckTrue)); | 1091 base::Bind(&CheckTrue)); |
| 1092 RunDBThread(); | 1092 RunDBThread(); |
| 1093 | 1093 |
| 1094 EXPECT_EQ(1u, form_list.size()); | 1094 EXPECT_EQ(1u, form_list.size()); |
| 1095 EXPECT_EQ(form_google_, *form_list[0]); | 1095 EXPECT_EQ(form_google_, *form_list[0]); |
| 1096 | 1096 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1111 // Store some non-blacklisted logins to be potentially returned. | 1111 // Store some non-blacklisted logins to be potentially returned. |
| 1112 BrowserThread::PostTaskAndReplyWithResult( | 1112 BrowserThread::PostTaskAndReplyWithResult( |
| 1113 BrowserThread::DB, FROM_HERE, | 1113 BrowserThread::DB, FROM_HERE, |
| 1114 base::Bind(&NativeBackendKWalletStub::AddLogin, | 1114 base::Bind(&NativeBackendKWalletStub::AddLogin, |
| 1115 base::Unretained(&backend), form_google_), | 1115 base::Unretained(&backend), form_google_), |
| 1116 base::Bind(&CheckPasswordChanges, | 1116 base::Bind(&CheckPasswordChanges, |
| 1117 PasswordStoreChangeList(1, PasswordStoreChange( | 1117 PasswordStoreChangeList(1, PasswordStoreChange( |
| 1118 PasswordStoreChange::ADD, form_google_)))); | 1118 PasswordStoreChange::ADD, form_google_)))); |
| 1119 | 1119 |
| 1120 // Verify that nothing is in fact returned, because KWallet fails to respond. | 1120 // Verify that nothing is in fact returned, because KWallet fails to respond. |
| 1121 ScopedVector<autofill::PasswordForm> form_list; | 1121 std::vector<std::unique_ptr<PasswordForm>> form_list; |
| 1122 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 1122 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, |
| 1123 base::Bind(&CheckGetAutofillableLoginsFails, | 1123 base::Bind(&CheckGetAutofillableLoginsFails, |
| 1124 base::Unretained(&backend), &form_list)); | 1124 base::Unretained(&backend), &form_list)); |
| 1125 RunDBThread(); | 1125 RunDBThread(); |
| 1126 EXPECT_EQ(0u, form_list.size()); | 1126 EXPECT_EQ(0u, form_list.size()); |
| 1127 } | 1127 } |
| 1128 | 1128 |
| 1129 TEST_P(NativeBackendKWalletTest, GetAllLogins) { | 1129 TEST_P(NativeBackendKWalletTest, GetAllLogins) { |
| 1130 NativeBackendKWalletStub backend(42, desktop_env_); | 1130 NativeBackendKWalletStub backend(42, desktop_env_); |
| 1131 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 1131 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
| 1132 | 1132 |
| 1133 BrowserThread::PostTask( | 1133 BrowserThread::PostTask( |
| 1134 BrowserThread::DB, FROM_HERE, | 1134 BrowserThread::DB, FROM_HERE, |
| 1135 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), | 1135 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), |
| 1136 base::Unretained(&backend), form_google_)); | 1136 base::Unretained(&backend), form_google_)); |
| 1137 BrowserThread::PostTask( | 1137 BrowserThread::PostTask( |
| 1138 BrowserThread::DB, FROM_HERE, | 1138 BrowserThread::DB, FROM_HERE, |
| 1139 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), | 1139 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), |
| 1140 base::Unretained(&backend), form_isc_)); | 1140 base::Unretained(&backend), form_isc_)); |
| 1141 | 1141 |
| 1142 ScopedVector<autofill::PasswordForm> form_list; | 1142 std::vector<std::unique_ptr<PasswordForm>> form_list; |
| 1143 BrowserThread::PostTaskAndReplyWithResult( | 1143 BrowserThread::PostTaskAndReplyWithResult( |
| 1144 BrowserThread::DB, FROM_HERE, | 1144 BrowserThread::DB, FROM_HERE, |
| 1145 base::Bind(&NativeBackendKWalletStub::GetAllLogins, | 1145 base::Bind(&NativeBackendKWalletStub::GetAllLogins, |
| 1146 base::Unretained(&backend), &form_list), | 1146 base::Unretained(&backend), &form_list), |
| 1147 base::Bind(&CheckTrue)); | 1147 base::Bind(&CheckTrue)); |
| 1148 | 1148 |
| 1149 RunDBThread(); | 1149 RunDBThread(); |
| 1150 | 1150 |
| 1151 EXPECT_EQ(2u, form_list.size()); | 1151 EXPECT_EQ(2u, form_list.size()); |
| 1152 EXPECT_THAT(form_list, | 1152 EXPECT_THAT(form_list, |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1240 | 1240 |
| 1241 void NativeBackendKWalletPickleTest::CheckVersion9Pickle() { | 1241 void NativeBackendKWalletPickleTest::CheckVersion9Pickle() { |
| 1242 // Pickle 9+ dropped an old flag in the middle of PasswordForm. This test | 1242 // Pickle 9+ dropped an old flag in the middle of PasswordForm. This test |
| 1243 // makes sure that the attributes after the dropped flag are deserialised | 1243 // makes sure that the attributes after the dropped flag are deserialised |
| 1244 // correctly. | 1244 // correctly. |
| 1245 base::Pickle pickle; | 1245 base::Pickle pickle; |
| 1246 PasswordForm default_values; | 1246 PasswordForm default_values; |
| 1247 PasswordForm form = form_google_; | 1247 PasswordForm form = form_google_; |
| 1248 | 1248 |
| 1249 CreateVersion1PlusPickle(form, &pickle, 9, 9); | 1249 CreateVersion1PlusPickle(form, &pickle, 9, 9); |
| 1250 ScopedVector<PasswordForm> form_list = | 1250 std::vector<std::unique_ptr<PasswordForm>> form_list = |
| 1251 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); | 1251 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); |
| 1252 EXPECT_EQ(1u, form_list.size()); | 1252 EXPECT_EQ(1u, form_list.size()); |
| 1253 if (form_list.size() > 0) | 1253 if (form_list.size() > 0) |
| 1254 CheckPasswordForm(form, *form_list[0], true); | 1254 CheckPasswordForm(form, *form_list[0], true); |
| 1255 } | 1255 } |
| 1256 | 1256 |
| 1257 void NativeBackendKWalletPickleTest::CheckVersion8Pickle() { | 1257 void NativeBackendKWalletPickleTest::CheckVersion8Pickle() { |
| 1258 base::Pickle pickle; | 1258 base::Pickle pickle; |
| 1259 PasswordForm default_values; | 1259 PasswordForm default_values; |
| 1260 PasswordForm form = form_google_; | 1260 PasswordForm form = form_google_; |
| 1261 | 1261 |
| 1262 // Version 8 pickles deserialize with their own 'skip_zero_click' value. | 1262 // Version 8 pickles deserialize with their own 'skip_zero_click' value. |
| 1263 form.skip_zero_click = false; | 1263 form.skip_zero_click = false; |
| 1264 CreateVersion1PlusPickle(form, &pickle, 8, 8); | 1264 CreateVersion1PlusPickle(form, &pickle, 8, 8); |
| 1265 ScopedVector<PasswordForm> form_list = | 1265 std::vector<std::unique_ptr<PasswordForm>> form_list = |
| 1266 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); | 1266 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); |
| 1267 EXPECT_EQ(1u, form_list.size()); | 1267 EXPECT_EQ(1u, form_list.size()); |
| 1268 if (form_list.size() > 0) | 1268 if (form_list.size() > 0) |
| 1269 CheckPasswordForm(form, *form_list[0], true); | 1269 CheckPasswordForm(form, *form_list[0], true); |
| 1270 } | 1270 } |
| 1271 | 1271 |
| 1272 void NativeBackendKWalletPickleTest::CheckVersion7Pickle() { | 1272 void NativeBackendKWalletPickleTest::CheckVersion7Pickle() { |
| 1273 base::Pickle pickle; | 1273 base::Pickle pickle; |
| 1274 PasswordForm default_values; | 1274 PasswordForm default_values; |
| 1275 PasswordForm form = form_google_; | 1275 PasswordForm form = form_google_; |
| 1276 | 1276 |
| 1277 // Version 7 pickles always deserialize with 'skip_zero_click' of 'true'. | 1277 // Version 7 pickles always deserialize with 'skip_zero_click' of 'true'. |
| 1278 form.skip_zero_click = false; | 1278 form.skip_zero_click = false; |
| 1279 CreateVersion1PlusPickle(form, &pickle, 7, 7); | 1279 CreateVersion1PlusPickle(form, &pickle, 7, 7); |
| 1280 ScopedVector<PasswordForm> form_list = | 1280 std::vector<std::unique_ptr<PasswordForm>> form_list = |
| 1281 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); | 1281 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); |
| 1282 EXPECT_EQ(1u, form_list.size()); | 1282 EXPECT_EQ(1u, form_list.size()); |
| 1283 form.skip_zero_click = true; | 1283 form.skip_zero_click = true; |
| 1284 if (form_list.size() > 0) | 1284 if (form_list.size() > 0) |
| 1285 CheckPasswordForm(form, *form_list[0], true); | 1285 CheckPasswordForm(form, *form_list[0], true); |
| 1286 } | 1286 } |
| 1287 | 1287 |
| 1288 void NativeBackendKWalletPickleTest::CheckVersion6Pickle( | 1288 void NativeBackendKWalletPickleTest::CheckVersion6Pickle( |
| 1289 bool with_optional_field) { | 1289 bool with_optional_field) { |
| 1290 base::Pickle pickle; | 1290 base::Pickle pickle; |
| 1291 PasswordForm form = form_google_; | 1291 PasswordForm form = form_google_; |
| 1292 if (!with_optional_field) { | 1292 if (!with_optional_field) { |
| 1293 PasswordForm default_values; | 1293 PasswordForm default_values; |
| 1294 form.generation_upload_status = default_values.generation_upload_status; | 1294 form.generation_upload_status = default_values.generation_upload_status; |
| 1295 } | 1295 } |
| 1296 CreateVersion1PlusPickle(form, &pickle, 6, with_optional_field ? 7 : 5); | 1296 CreateVersion1PlusPickle(form, &pickle, 6, with_optional_field ? 7 : 5); |
| 1297 | 1297 |
| 1298 ScopedVector<PasswordForm> form_list = | 1298 std::vector<std::unique_ptr<PasswordForm>> form_list = |
| 1299 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); | 1299 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); |
| 1300 | 1300 |
| 1301 EXPECT_EQ(1u, form_list.size()); | 1301 EXPECT_EQ(1u, form_list.size()); |
| 1302 if (form_list.size() > 0) | 1302 if (form_list.size() > 0) |
| 1303 CheckPasswordForm(form, *form_list[0], true); | 1303 CheckPasswordForm(form, *form_list[0], true); |
| 1304 } | 1304 } |
| 1305 | 1305 |
| 1306 void NativeBackendKWalletPickleTest::CheckVersion5Pickle() { | 1306 void NativeBackendKWalletPickleTest::CheckVersion5Pickle() { |
| 1307 base::Pickle pickle; | 1307 base::Pickle pickle; |
| 1308 PasswordForm default_values; | 1308 PasswordForm default_values; |
| 1309 PasswordForm form = form_google_; | 1309 PasswordForm form = form_google_; |
| 1310 // Remove the field which was not present in version #5. | 1310 // Remove the field which was not present in version #5. |
| 1311 form.generation_upload_status = default_values.generation_upload_status; | 1311 form.generation_upload_status = default_values.generation_upload_status; |
| 1312 CreateVersion1PlusPickle(form, &pickle, 6, 6); | 1312 CreateVersion1PlusPickle(form, &pickle, 6, 6); |
| 1313 | 1313 |
| 1314 ScopedVector<PasswordForm> form_list = | 1314 std::vector<std::unique_ptr<PasswordForm>> form_list = |
| 1315 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); | 1315 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); |
| 1316 | 1316 |
| 1317 EXPECT_EQ(1u, form_list.size()); | 1317 EXPECT_EQ(1u, form_list.size()); |
| 1318 if (form_list.size() > 0) | 1318 if (form_list.size() > 0) |
| 1319 CheckPasswordForm(form, *form_list[0], true); | 1319 CheckPasswordForm(form, *form_list[0], true); |
| 1320 } | 1320 } |
| 1321 | 1321 |
| 1322 void NativeBackendKWalletPickleTest::CheckVersion3Pickle() { | 1322 void NativeBackendKWalletPickleTest::CheckVersion3Pickle() { |
| 1323 base::Pickle pickle; | 1323 base::Pickle pickle; |
| 1324 PasswordForm default_values; | 1324 PasswordForm default_values; |
| 1325 PasswordForm form = form_google_; | 1325 PasswordForm form = form_google_; |
| 1326 // Remove the fields which were not present in version #3. | 1326 // Remove the fields which were not present in version #3. |
| 1327 form.display_name = default_values.display_name; | 1327 form.display_name = default_values.display_name; |
| 1328 form.icon_url = default_values.icon_url; | 1328 form.icon_url = default_values.icon_url; |
| 1329 form.federation_origin = default_values.federation_origin; | 1329 form.federation_origin = default_values.federation_origin; |
| 1330 form.skip_zero_click = default_values.skip_zero_click; | 1330 form.skip_zero_click = default_values.skip_zero_click; |
| 1331 form.generation_upload_status = default_values.generation_upload_status; | 1331 form.generation_upload_status = default_values.generation_upload_status; |
| 1332 CreateVersion1PlusPickle(form, &pickle, 3, 3); | 1332 CreateVersion1PlusPickle(form, &pickle, 3, 3); |
| 1333 | 1333 |
| 1334 ScopedVector<PasswordForm> form_list = | 1334 std::vector<std::unique_ptr<PasswordForm>> form_list = |
| 1335 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); | 1335 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); |
| 1336 | 1336 |
| 1337 EXPECT_EQ(1u, form_list.size()); | 1337 EXPECT_EQ(1u, form_list.size()); |
| 1338 if (form_list.size() > 0) | 1338 if (form_list.size() > 0) |
| 1339 CheckPasswordForm(form, *form_list[0], false); | 1339 CheckPasswordForm(form, *form_list[0], false); |
| 1340 } | 1340 } |
| 1341 | 1341 |
| 1342 void NativeBackendKWalletPickleTest::CheckVersion2Pickle() { | 1342 void NativeBackendKWalletPickleTest::CheckVersion2Pickle() { |
| 1343 base::Pickle pickle; | 1343 base::Pickle pickle; |
| 1344 PasswordForm form = old_form_google_; | 1344 PasswordForm form = old_form_google_; |
| 1345 form.times_used = form_google_.times_used; | 1345 form.times_used = form_google_.times_used; |
| 1346 form.type = form_google_.type; | 1346 form.type = form_google_.type; |
| 1347 form.form_data = form_google_.form_data; | 1347 form.form_data = form_google_.form_data; |
| 1348 CreateVersion1PlusPickle(form, &pickle, 2, 2); | 1348 CreateVersion1PlusPickle(form, &pickle, 2, 2); |
| 1349 | 1349 |
| 1350 ScopedVector<PasswordForm> form_list = | 1350 std::vector<std::unique_ptr<PasswordForm>> form_list = |
| 1351 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); | 1351 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); |
| 1352 | 1352 |
| 1353 EXPECT_EQ(1u, form_list.size()); | 1353 EXPECT_EQ(1u, form_list.size()); |
| 1354 if (form_list.size() > 0) | 1354 if (form_list.size() > 0) |
| 1355 CheckPasswordForm(form, *form_list[0], false); | 1355 CheckPasswordForm(form, *form_list[0], false); |
| 1356 } | 1356 } |
| 1357 | 1357 |
| 1358 // Make sure that we can still read version 1 pickles. | 1358 // Make sure that we can still read version 1 pickles. |
| 1359 void NativeBackendKWalletPickleTest::CheckVersion1Pickle() { | 1359 void NativeBackendKWalletPickleTest::CheckVersion1Pickle() { |
| 1360 base::Pickle pickle; | 1360 base::Pickle pickle; |
| 1361 PasswordForm form = form_google_; | 1361 PasswordForm form = form_google_; |
| 1362 CreateVersion1PlusPickle(form, &pickle, 1, 1); | 1362 CreateVersion1PlusPickle(form, &pickle, 1, 1); |
| 1363 | 1363 |
| 1364 ScopedVector<autofill::PasswordForm> form_list = | 1364 std::vector<std::unique_ptr<PasswordForm>> form_list = |
| 1365 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); | 1365 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); |
| 1366 | 1366 |
| 1367 // This will match |old_form_google_| because not all the fields present in | 1367 // This will match |old_form_google_| because not all the fields present in |
| 1368 // |form_google_| will be deserialized. | 1368 // |form_google_| will be deserialized. |
| 1369 EXPECT_EQ(1u, form_list.size()); | 1369 EXPECT_EQ(1u, form_list.size()); |
| 1370 if (form_list.size() > 0) | 1370 if (form_list.size() > 0) |
| 1371 CheckPasswordForm(old_form_google_, *form_list[0], false); | 1371 CheckPasswordForm(old_form_google_, *form_list[0], false); |
| 1372 } | 1372 } |
| 1373 | 1373 |
| 1374 void NativeBackendKWalletPickleTest::CheckVersion0Pickle( | 1374 void NativeBackendKWalletPickleTest::CheckVersion0Pickle( |
| 1375 bool size_32, PasswordForm::Scheme scheme) { | 1375 bool size_32, PasswordForm::Scheme scheme) { |
| 1376 base::Pickle pickle; | 1376 base::Pickle pickle; |
| 1377 PasswordForm form = old_form_google_; | 1377 PasswordForm form = old_form_google_; |
| 1378 form.scheme = scheme; | 1378 form.scheme = scheme; |
| 1379 CreateVersion0Pickle(size_32, form, &pickle); | 1379 CreateVersion0Pickle(size_32, form, &pickle); |
| 1380 ScopedVector<autofill::PasswordForm> form_list = | 1380 std::vector<std::unique_ptr<PasswordForm>> form_list = |
| 1381 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); | 1381 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle); |
| 1382 EXPECT_EQ(1u, form_list.size()); | 1382 EXPECT_EQ(1u, form_list.size()); |
| 1383 if (form_list.size() > 0) | 1383 if (form_list.size() > 0) |
| 1384 CheckPasswordForm(form, *form_list[0], false); | 1384 CheckPasswordForm(form, *form_list[0], false); |
| 1385 } | 1385 } |
| 1386 | 1386 |
| 1387 // We try both SCHEME_HTML and SCHEME_BASIC since the scheme is stored right | 1387 // We try both SCHEME_HTML and SCHEME_BASIC since the scheme is stored right |
| 1388 // after the size in the pickle, so it's what gets read as part of the count | 1388 // after the size in the pickle, so it's what gets read as part of the count |
| 1389 // when reading 32-bit pickles on 64-bit systems. SCHEME_HTML is 0 (so we'll | 1389 // when reading 32-bit pickles on 64-bit systems. SCHEME_HTML is 0 (so we'll |
| 1390 // detect errors later) while SCHEME_BASIC is 1 (so we'll detect it then). We | 1390 // detect errors later) while SCHEME_BASIC is 1 (so we'll detect it then). We |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1433 CheckVersion7Pickle(); | 1433 CheckVersion7Pickle(); |
| 1434 } | 1434 } |
| 1435 | 1435 |
| 1436 TEST_F(NativeBackendKWalletPickleTest, CheckVersion8Pickle) { | 1436 TEST_F(NativeBackendKWalletPickleTest, CheckVersion8Pickle) { |
| 1437 CheckVersion8Pickle(); | 1437 CheckVersion8Pickle(); |
| 1438 } | 1438 } |
| 1439 | 1439 |
| 1440 TEST_F(NativeBackendKWalletPickleTest, CheckVersion9Pickle) { | 1440 TEST_F(NativeBackendKWalletPickleTest, CheckVersion9Pickle) { |
| 1441 CheckVersion9Pickle(); | 1441 CheckVersion9Pickle(); |
| 1442 } | 1442 } |
| OLD | NEW |