| 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 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 protected: | 150 protected: |
| 151 NativeBackendKWalletTestBase() { | 151 NativeBackendKWalletTestBase() { |
| 152 old_form_google_.origin = GURL("http://www.google.com/"); | 152 old_form_google_.origin = GURL("http://www.google.com/"); |
| 153 old_form_google_.action = GURL("http://www.google.com/login"); | 153 old_form_google_.action = GURL("http://www.google.com/login"); |
| 154 old_form_google_.username_element = UTF8ToUTF16("user"); | 154 old_form_google_.username_element = UTF8ToUTF16("user"); |
| 155 old_form_google_.username_value = UTF8ToUTF16("joeschmoe"); | 155 old_form_google_.username_value = UTF8ToUTF16("joeschmoe"); |
| 156 old_form_google_.password_element = UTF8ToUTF16("pass"); | 156 old_form_google_.password_element = UTF8ToUTF16("pass"); |
| 157 old_form_google_.password_value = UTF8ToUTF16("seekrit"); | 157 old_form_google_.password_value = UTF8ToUTF16("seekrit"); |
| 158 old_form_google_.submit_element = UTF8ToUTF16("submit"); | 158 old_form_google_.submit_element = UTF8ToUTF16("submit"); |
| 159 old_form_google_.signon_realm = "Google"; | 159 old_form_google_.signon_realm = "Google"; |
| 160 old_form_google_.date_created = base::Time::Now(); |
| 160 | 161 |
| 161 form_google_ = old_form_google_; | 162 form_google_ = old_form_google_; |
| 162 form_google_.times_used = 3; | 163 form_google_.times_used = 3; |
| 163 form_google_.type = PasswordForm::TYPE_GENERATED; | 164 form_google_.type = PasswordForm::TYPE_GENERATED; |
| 164 form_google_.form_data.name = UTF8ToUTF16("form_name"); | 165 form_google_.form_data.name = UTF8ToUTF16("form_name"); |
| 165 form_google_.form_data.user_submitted = true; | 166 form_google_.form_data.user_submitted = true; |
| 166 form_google_.date_synced = base::Time::Now(); | 167 form_google_.date_synced = base::Time::Now(); |
| 168 form_google_.date_created = old_form_google_.date_created; |
| 167 form_google_.display_name = UTF8ToUTF16("Joe Schmoe"); | 169 form_google_.display_name = UTF8ToUTF16("Joe Schmoe"); |
| 168 form_google_.avatar_url = GURL("http://www.google.com/avatar"); | 170 form_google_.avatar_url = GURL("http://www.google.com/avatar"); |
| 169 form_google_.federation_url = GURL("http://www.google.com/federation_url"); | 171 form_google_.federation_url = GURL("http://www.google.com/federation_url"); |
| 170 form_google_.skip_zero_click = true; | 172 form_google_.skip_zero_click = true; |
| 171 | 173 |
| 172 form_isc_.origin = GURL("http://www.isc.org/"); | 174 form_isc_.origin = GURL("http://www.isc.org/"); |
| 173 form_isc_.action = GURL("http://www.isc.org/auth"); | 175 form_isc_.action = GURL("http://www.isc.org/auth"); |
| 174 form_isc_.username_element = UTF8ToUTF16("id"); | 176 form_isc_.username_element = UTF8ToUTF16("id"); |
| 175 form_isc_.username_value = UTF8ToUTF16("janedoe"); | 177 form_isc_.username_value = UTF8ToUTF16("janedoe"); |
| 176 form_isc_.password_element = UTF8ToUTF16("passwd"); | 178 form_isc_.password_element = UTF8ToUTF16("passwd"); |
| 177 form_isc_.password_value = UTF8ToUTF16("ihazabukkit"); | 179 form_isc_.password_value = UTF8ToUTF16("ihazabukkit"); |
| 178 form_isc_.submit_element = UTF8ToUTF16("login"); | 180 form_isc_.submit_element = UTF8ToUTF16("login"); |
| 179 form_isc_.signon_realm = "ISC"; | 181 form_isc_.signon_realm = "ISC"; |
| 180 form_isc_.date_synced = base::Time::Now(); | 182 form_isc_.date_synced = base::Time::Now(); |
| 183 form_isc_.date_created = base::Time::Now(); |
| 181 } | 184 } |
| 182 | 185 |
| 183 static void CheckPasswordForm(const PasswordForm& expected, | 186 static void CheckPasswordForm(const PasswordForm& expected, |
| 184 const PasswordForm& actual); | 187 const PasswordForm& actual, |
| 188 bool check_date_created); |
| 185 static void CheckPasswordChanges(const PasswordStoreChangeList& expected, | 189 static void CheckPasswordChanges(const PasswordStoreChangeList& expected, |
| 186 const PasswordStoreChangeList& actual); | 190 const PasswordStoreChangeList& actual); |
| 187 static void CheckPasswordChangesWithResult( | 191 static void CheckPasswordChangesWithResult( |
| 188 const PasswordStoreChangeList* expected, | 192 const PasswordStoreChangeList* expected, |
| 189 const PasswordStoreChangeList* actual, | 193 const PasswordStoreChangeList* actual, |
| 190 bool result); | 194 bool result); |
| 191 | 195 |
| 192 PasswordForm old_form_google_; | 196 PasswordForm old_form_google_; |
| 193 PasswordForm form_google_; | 197 PasswordForm form_google_; |
| 194 PasswordForm form_isc_; | 198 PasswordForm form_isc_; |
| 195 }; | 199 }; |
| 196 | 200 |
| 197 // static | 201 // static |
| 198 void NativeBackendKWalletTestBase::CheckPasswordForm( | 202 void NativeBackendKWalletTestBase::CheckPasswordForm( |
| 199 const PasswordForm& expected, const PasswordForm& actual) { | 203 const PasswordForm& expected, |
| 204 const PasswordForm& actual, |
| 205 bool check_date_created) { |
| 200 EXPECT_EQ(expected.origin, actual.origin); | 206 EXPECT_EQ(expected.origin, actual.origin); |
| 201 EXPECT_EQ(expected.password_value, actual.password_value); | 207 EXPECT_EQ(expected.password_value, actual.password_value); |
| 202 EXPECT_EQ(expected.action, actual.action); | 208 EXPECT_EQ(expected.action, actual.action); |
| 203 EXPECT_EQ(expected.username_element, actual.username_element); | 209 EXPECT_EQ(expected.username_element, actual.username_element); |
| 204 EXPECT_EQ(expected.username_value, actual.username_value); | 210 EXPECT_EQ(expected.username_value, actual.username_value); |
| 205 EXPECT_EQ(expected.password_element, actual.password_element); | 211 EXPECT_EQ(expected.password_element, actual.password_element); |
| 206 EXPECT_EQ(expected.submit_element, actual.submit_element); | 212 EXPECT_EQ(expected.submit_element, actual.submit_element); |
| 207 EXPECT_EQ(expected.signon_realm, actual.signon_realm); | 213 EXPECT_EQ(expected.signon_realm, actual.signon_realm); |
| 208 EXPECT_EQ(expected.ssl_valid, actual.ssl_valid); | 214 EXPECT_EQ(expected.ssl_valid, actual.ssl_valid); |
| 209 EXPECT_EQ(expected.preferred, actual.preferred); | 215 EXPECT_EQ(expected.preferred, actual.preferred); |
| 210 // We don't check the date created. It varies. | 216 if (check_date_created) { |
| 217 EXPECT_EQ(expected.date_created, actual.date_created); |
| 218 } |
| 211 EXPECT_EQ(expected.blacklisted_by_user, actual.blacklisted_by_user); | 219 EXPECT_EQ(expected.blacklisted_by_user, actual.blacklisted_by_user); |
| 212 EXPECT_EQ(expected.type, actual.type); | 220 EXPECT_EQ(expected.type, actual.type); |
| 213 EXPECT_EQ(expected.times_used, actual.times_used); | 221 EXPECT_EQ(expected.times_used, actual.times_used); |
| 214 EXPECT_EQ(expected.scheme, actual.scheme); | 222 EXPECT_EQ(expected.scheme, actual.scheme); |
| 215 EXPECT_EQ(expected.date_synced, actual.date_synced); | 223 EXPECT_EQ(expected.date_synced, actual.date_synced); |
| 216 EXPECT_EQ(expected.display_name, actual.display_name); | 224 EXPECT_EQ(expected.display_name, actual.display_name); |
| 217 EXPECT_EQ(expected.avatar_url, actual.avatar_url); | 225 EXPECT_EQ(expected.avatar_url, actual.avatar_url); |
| 218 EXPECT_EQ(expected.federation_url, actual.federation_url); | 226 EXPECT_EQ(expected.federation_url, actual.federation_url); |
| 219 EXPECT_EQ(expected.skip_zero_click, actual.skip_zero_click); | 227 EXPECT_EQ(expected.skip_zero_click, actual.skip_zero_click); |
| 220 } | 228 } |
| 221 | 229 |
| 222 // static | 230 // static |
| 223 void NativeBackendKWalletTestBase::CheckPasswordChanges( | 231 void NativeBackendKWalletTestBase::CheckPasswordChanges( |
| 224 const PasswordStoreChangeList& expected, | 232 const PasswordStoreChangeList& expected, |
| 225 const PasswordStoreChangeList& actual) { | 233 const PasswordStoreChangeList& actual) { |
| 226 ASSERT_EQ(expected.size(), actual.size()); | 234 ASSERT_EQ(expected.size(), actual.size()); |
| 227 for (size_t i = 0; i < expected.size(); ++i) { | 235 for (size_t i = 0; i < expected.size(); ++i) { |
| 228 EXPECT_EQ(expected[i].type(), actual[i].type()); | 236 EXPECT_EQ(expected[i].type(), actual[i].type()); |
| 229 CheckPasswordForm(expected[i].form(), actual[i].form()); | 237 CheckPasswordForm(expected[i].form(), actual[i].form(), true); |
| 230 } | 238 } |
| 231 } | 239 } |
| 232 | 240 |
| 233 // static | 241 // static |
| 234 void NativeBackendKWalletTestBase::CheckPasswordChangesWithResult( | 242 void NativeBackendKWalletTestBase::CheckPasswordChangesWithResult( |
| 235 const PasswordStoreChangeList* expected, | 243 const PasswordStoreChangeList* expected, |
| 236 const PasswordStoreChangeList* actual, | 244 const PasswordStoreChangeList* actual, |
| 237 bool result) { | 245 bool result) { |
| 238 EXPECT_TRUE(result); | 246 EXPECT_TRUE(result); |
| 239 CheckPasswordChanges(*expected, *actual); | 247 CheckPasswordChanges(*expected, *actual); |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 358 NativeBackendKWalletStub backend(42); | 366 NativeBackendKWalletStub backend(42); |
| 359 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 367 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
| 360 | 368 |
| 361 form_google_.date_synced = base::Time(); | 369 form_google_.date_synced = base::Time(); |
| 362 form_isc_.date_synced = base::Time(); | 370 form_isc_.date_synced = base::Time(); |
| 363 form_google_.date_created = base::Time(); | 371 form_google_.date_created = base::Time(); |
| 364 form_isc_.date_created = base::Time(); | 372 form_isc_.date_created = base::Time(); |
| 365 base::Time now = base::Time::Now(); | 373 base::Time now = base::Time::Now(); |
| 366 base::Time next_day = now + base::TimeDelta::FromDays(1); | 374 base::Time next_day = now + base::TimeDelta::FromDays(1); |
| 367 if (date_to_test == CREATED) { | 375 if (date_to_test == CREATED) { |
| 368 // crbug/374132. Remove the next line once it's fixed. | |
| 369 next_day = base::Time::FromTimeT(next_day.ToTimeT()); | |
| 370 form_google_.date_created = now; | 376 form_google_.date_created = now; |
| 371 form_isc_.date_created = next_day; | 377 form_isc_.date_created = next_day; |
| 372 } else { | 378 } else { |
| 373 form_google_.date_synced = now; | 379 form_google_.date_synced = now; |
| 374 form_isc_.date_synced = next_day; | 380 form_isc_.date_synced = next_day; |
| 375 } | 381 } |
| 376 | 382 |
| 377 BrowserThread::PostTask( | 383 BrowserThread::PostTask( |
| 378 BrowserThread::DB, | 384 BrowserThread::DB, |
| 379 FROM_HERE, | 385 FROM_HERE, |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 597 for (size_t i = 0; i < entries.size() && i < sorted_expected.size(); ++i) { | 603 for (size_t i = 0; i < entries.size() && i < sorted_expected.size(); ++i) { |
| 598 EXPECT_EQ(sorted_expected[i].first, entries[i]); | 604 EXPECT_EQ(sorted_expected[i].first, entries[i]); |
| 599 TestKWallet::Blob value; | 605 TestKWallet::Blob value; |
| 600 EXPECT_TRUE(wallet_.readEntry(folder, entries[i], &value)); | 606 EXPECT_TRUE(wallet_.readEntry(folder, entries[i], &value)); |
| 601 Pickle pickle(reinterpret_cast<const char*>(value.data()), value.size()); | 607 Pickle pickle(reinterpret_cast<const char*>(value.data()), value.size()); |
| 602 ScopedVector<autofill::PasswordForm> forms; | 608 ScopedVector<autofill::PasswordForm> forms; |
| 603 NativeBackendKWalletStub::DeserializeValue(entries[i], pickle, &forms); | 609 NativeBackendKWalletStub::DeserializeValue(entries[i], pickle, &forms); |
| 604 const std::vector<const PasswordForm*>& expect = sorted_expected[i].second; | 610 const std::vector<const PasswordForm*>& expect = sorted_expected[i].second; |
| 605 EXPECT_EQ(expect.size(), forms.size()); | 611 EXPECT_EQ(expect.size(), forms.size()); |
| 606 for (size_t j = 0; j < forms.size() && j < expect.size(); ++j) | 612 for (size_t j = 0; j < forms.size() && j < expect.size(); ++j) |
| 607 CheckPasswordForm(*expect[j], *forms[j]); | 613 CheckPasswordForm(*expect[j], *forms[j], true); |
| 608 } | 614 } |
| 609 } | 615 } |
| 610 | 616 |
| 611 TEST_F(NativeBackendKWalletTest, NotEnabled) { | 617 TEST_F(NativeBackendKWalletTest, NotEnabled) { |
| 612 NativeBackendKWalletStub kwallet(42); | 618 NativeBackendKWalletStub kwallet(42); |
| 613 kwallet_enabled_ = false; | 619 kwallet_enabled_ = false; |
| 614 EXPECT_FALSE(kwallet.InitWithBus(mock_session_bus_)); | 620 EXPECT_FALSE(kwallet.InitWithBus(mock_session_bus_)); |
| 615 EXPECT_FALSE(klauncher_contacted_); | 621 EXPECT_FALSE(klauncher_contacted_); |
| 616 } | 622 } |
| 617 | 623 |
| (...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 916 | 922 |
| 917 TEST_F(NativeBackendKWalletTest, RemoveLoginsSyncedBetween) { | 923 TEST_F(NativeBackendKWalletTest, RemoveLoginsSyncedBetween) { |
| 918 TestRemoveLoginsBetween(SYNCED); | 924 TestRemoveLoginsBetween(SYNCED); |
| 919 } | 925 } |
| 920 | 926 |
| 921 // TODO(mdm): add more basic tests here at some point. | 927 // TODO(mdm): add more basic tests here at some point. |
| 922 // (For example tests for storing >1 password per realm pickle.) | 928 // (For example tests for storing >1 password per realm pickle.) |
| 923 | 929 |
| 924 class NativeBackendKWalletPickleTest : public NativeBackendKWalletTestBase { | 930 class NativeBackendKWalletPickleTest : public NativeBackendKWalletTestBase { |
| 925 protected: | 931 protected: |
| 932 void CreateVersion5Pickle(const PasswordForm& form, Pickle* pickle); |
| 926 void CreateVersion3Pickle(const PasswordForm& form, Pickle* pickle); | 933 void CreateVersion3Pickle(const PasswordForm& form, Pickle* pickle); |
| 927 void CreateVersion2Pickle(const PasswordForm& form, Pickle* pickle); | 934 void CreateVersion2Pickle(const PasswordForm& form, Pickle* pickle); |
| 928 void CreateVersion1Pickle(const PasswordForm& form, Pickle* pickle); | 935 void CreateVersion1Pickle(const PasswordForm& form, Pickle* pickle); |
| 929 void CreateVersion0Pickle(bool size_32, | 936 void CreateVersion0Pickle(bool size_32, |
| 930 const PasswordForm& form, | 937 const PasswordForm& form, |
| 931 Pickle* pickle); | 938 Pickle* pickle); |
| 939 void CheckVersion5Pickle(); |
| 932 void CheckVersion3Pickle(); | 940 void CheckVersion3Pickle(); |
| 933 void CheckVersion2Pickle(); | 941 void CheckVersion2Pickle(); |
| 934 void CheckVersion1Pickle(); | 942 void CheckVersion1Pickle(); |
| 935 void CheckVersion0Pickle(bool size_32, PasswordForm::Scheme scheme); | 943 void CheckVersion0Pickle(bool size_32, PasswordForm::Scheme scheme); |
| 936 | 944 |
| 937 private: | 945 private: |
| 938 void CreatePickle(bool size_32, const PasswordForm& form, Pickle* pickle); | 946 // Creates a Pickle from |form|. If |size_32| is true, stores the number of |
| 947 // forms in the pickle as a 32bit uint, otherwise as 64 bit size_t. The latter |
| 948 // should be the case for versions > 0. If |date_created_internal| is true, |
| 949 // stores |date_created| as base::Time's internal value, otherwise as time_t. |
| 950 void CreatePickle(bool size_32, |
| 951 bool date_created_internal, |
| 952 const PasswordForm& form, |
| 953 Pickle* pickle); |
| 939 }; | 954 }; |
| 940 | 955 |
| 956 void NativeBackendKWalletPickleTest::CreateVersion5Pickle( |
| 957 const PasswordForm& form, |
| 958 Pickle* pickle) { |
| 959 pickle->WriteInt(5); |
| 960 CreatePickle(false, true, form, pickle); |
| 961 pickle->WriteInt(form.type); |
| 962 pickle->WriteInt(form.times_used); |
| 963 autofill::SerializeFormData(form.form_data, pickle); |
| 964 pickle->WriteInt64(form.date_synced.ToInternalValue()); |
| 965 pickle->WriteString16(form.display_name); |
| 966 pickle->WriteString(form.avatar_url.spec()); |
| 967 pickle->WriteString(form.federation_url.spec()); |
| 968 pickle->WriteBool(form.skip_zero_click); |
| 969 } |
| 970 |
| 941 void NativeBackendKWalletPickleTest::CreateVersion3Pickle( | 971 void NativeBackendKWalletPickleTest::CreateVersion3Pickle( |
| 942 const PasswordForm& form, Pickle* pickle) { | 972 const PasswordForm& form, Pickle* pickle) { |
| 943 pickle->WriteInt(3); | 973 pickle->WriteInt(3); |
| 944 CreatePickle(false, form, pickle); | 974 CreatePickle(false, false, form, pickle); |
| 945 pickle->WriteInt(form.type); | 975 pickle->WriteInt(form.type); |
| 946 pickle->WriteInt(form.times_used); | 976 pickle->WriteInt(form.times_used); |
| 947 autofill::SerializeFormData(form.form_data, pickle); | 977 autofill::SerializeFormData(form.form_data, pickle); |
| 948 pickle->WriteInt64(form.date_synced.ToInternalValue()); | 978 pickle->WriteInt64(form.date_synced.ToInternalValue()); |
| 949 } | 979 } |
| 950 | 980 |
| 951 void NativeBackendKWalletPickleTest::CreateVersion2Pickle( | 981 void NativeBackendKWalletPickleTest::CreateVersion2Pickle( |
| 952 const PasswordForm& form, Pickle* pickle) { | 982 const PasswordForm& form, Pickle* pickle) { |
| 953 pickle->WriteInt(2); | 983 pickle->WriteInt(2); |
| 954 CreatePickle(false, form, pickle); | 984 CreatePickle(false, false, form, pickle); |
| 955 pickle->WriteInt(form.type); | 985 pickle->WriteInt(form.type); |
| 956 pickle->WriteInt(form.times_used); | 986 pickle->WriteInt(form.times_used); |
| 957 autofill::SerializeFormData(form.form_data, pickle); | 987 autofill::SerializeFormData(form.form_data, pickle); |
| 958 } | 988 } |
| 959 | 989 |
| 960 void NativeBackendKWalletPickleTest::CreateVersion1Pickle( | 990 void NativeBackendKWalletPickleTest::CreateVersion1Pickle( |
| 961 const PasswordForm& form, Pickle* pickle) { | 991 const PasswordForm& form, Pickle* pickle) { |
| 962 pickle->WriteInt(1); | 992 pickle->WriteInt(1); |
| 963 CreatePickle(false, form, pickle); | 993 CreatePickle(false, false, form, pickle); |
| 964 } | 994 } |
| 965 | 995 |
| 966 void NativeBackendKWalletPickleTest::CreateVersion0Pickle( | 996 void NativeBackendKWalletPickleTest::CreateVersion0Pickle( |
| 967 bool size_32, const PasswordForm& form, Pickle* pickle) { | 997 bool size_32, const PasswordForm& form, Pickle* pickle) { |
| 968 pickle->WriteInt(0); | 998 pickle->WriteInt(0); |
| 969 CreatePickle(size_32, form, pickle); | 999 CreatePickle(size_32, false, form, pickle); |
| 970 } | 1000 } |
| 971 | 1001 |
| 972 void NativeBackendKWalletPickleTest::CreatePickle( | 1002 void NativeBackendKWalletPickleTest::CreatePickle(bool size_32, |
| 973 bool size_32, const PasswordForm& form, Pickle* pickle) { | 1003 bool date_created_internal, |
| 1004 const PasswordForm& form, |
| 1005 Pickle* pickle) { |
| 974 if (size_32) | 1006 if (size_32) |
| 975 pickle->WriteUInt32(1); // Size of form list. 32 bits. | 1007 pickle->WriteUInt32(1); // Size of form list. 32 bits. |
| 976 else | 1008 else |
| 977 pickle->WriteSizeT(1); // Size of form list. 64 bits. | 1009 pickle->WriteSizeT(1); // Size of form list. 64 bits. |
| 978 pickle->WriteInt(form.scheme); | 1010 pickle->WriteInt(form.scheme); |
| 979 pickle->WriteString(form.origin.spec()); | 1011 pickle->WriteString(form.origin.spec()); |
| 980 pickle->WriteString(form.action.spec()); | 1012 pickle->WriteString(form.action.spec()); |
| 981 pickle->WriteString16(form.username_element); | 1013 pickle->WriteString16(form.username_element); |
| 982 pickle->WriteString16(form.username_value); | 1014 pickle->WriteString16(form.username_value); |
| 983 pickle->WriteString16(form.password_element); | 1015 pickle->WriteString16(form.password_element); |
| 984 pickle->WriteString16(form.password_value); | 1016 pickle->WriteString16(form.password_value); |
| 985 pickle->WriteString16(form.submit_element); | 1017 pickle->WriteString16(form.submit_element); |
| 986 pickle->WriteBool(form.ssl_valid); | 1018 pickle->WriteBool(form.ssl_valid); |
| 987 pickle->WriteBool(form.preferred); | 1019 pickle->WriteBool(form.preferred); |
| 988 pickle->WriteBool(form.blacklisted_by_user); | 1020 pickle->WriteBool(form.blacklisted_by_user); |
| 989 pickle->WriteInt64(form.date_created.ToTimeT()); | 1021 if (date_created_internal) |
| 1022 pickle->WriteInt64(form.date_created.ToInternalValue()); |
| 1023 else |
| 1024 pickle->WriteInt64(form.date_created.ToTimeT()); |
| 1025 } |
| 1026 |
| 1027 void NativeBackendKWalletPickleTest::CheckVersion5Pickle() { |
| 1028 Pickle pickle; |
| 1029 PasswordForm form = form_google_; |
| 1030 CreateVersion5Pickle(form, &pickle); |
| 1031 |
| 1032 ScopedVector<PasswordForm> form_list; |
| 1033 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle, |
| 1034 &form_list); |
| 1035 |
| 1036 EXPECT_EQ(1u, form_list.size()); |
| 1037 if (form_list.size() > 0) |
| 1038 CheckPasswordForm(form, *form_list[0], true); |
| 990 } | 1039 } |
| 991 | 1040 |
| 992 void NativeBackendKWalletPickleTest::CheckVersion3Pickle() { | 1041 void NativeBackendKWalletPickleTest::CheckVersion3Pickle() { |
| 993 Pickle pickle; | 1042 Pickle pickle; |
| 994 PasswordForm form = form_google_; | 1043 PasswordForm form = form_google_; |
| 995 // Remove the fields which were not present in version #3. | 1044 // Remove the fields which were not present in version #3. |
| 996 form.display_name.clear(); | 1045 form.display_name.clear(); |
| 997 form.avatar_url = GURL(); | 1046 form.avatar_url = GURL(); |
| 998 form.federation_url = GURL(); | 1047 form.federation_url = GURL(); |
| 999 form.skip_zero_click = false; | 1048 form.skip_zero_click = false; |
| 1000 CreateVersion3Pickle(form, &pickle); | 1049 CreateVersion3Pickle(form, &pickle); |
| 1001 | 1050 |
| 1002 ScopedVector<PasswordForm> form_list; | 1051 ScopedVector<PasswordForm> form_list; |
| 1003 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle, | 1052 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle, |
| 1004 &form_list); | 1053 &form_list); |
| 1005 | 1054 |
| 1006 EXPECT_EQ(1u, form_list.size()); | 1055 EXPECT_EQ(1u, form_list.size()); |
| 1007 if (form_list.size() > 0) | 1056 if (form_list.size() > 0) |
| 1008 CheckPasswordForm(form, *form_list[0]); | 1057 CheckPasswordForm(form, *form_list[0], false); |
| 1009 } | 1058 } |
| 1010 | 1059 |
| 1011 void NativeBackendKWalletPickleTest::CheckVersion2Pickle() { | 1060 void NativeBackendKWalletPickleTest::CheckVersion2Pickle() { |
| 1012 Pickle pickle; | 1061 Pickle pickle; |
| 1013 PasswordForm form = old_form_google_; | 1062 PasswordForm form = old_form_google_; |
| 1014 form.times_used = form_google_.times_used; | 1063 form.times_used = form_google_.times_used; |
| 1015 form.type = form_google_.type; | 1064 form.type = form_google_.type; |
| 1016 form.form_data = form_google_.form_data; | 1065 form.form_data = form_google_.form_data; |
| 1017 CreateVersion2Pickle(form, &pickle); | 1066 CreateVersion2Pickle(form, &pickle); |
| 1018 | 1067 |
| 1019 ScopedVector<PasswordForm> form_list; | 1068 ScopedVector<PasswordForm> form_list; |
| 1020 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle, | 1069 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle, |
| 1021 &form_list); | 1070 &form_list); |
| 1022 | 1071 |
| 1023 EXPECT_EQ(1u, form_list.size()); | 1072 EXPECT_EQ(1u, form_list.size()); |
| 1024 if (form_list.size() > 0) | 1073 if (form_list.size() > 0) |
| 1025 CheckPasswordForm(form, *form_list[0]); | 1074 CheckPasswordForm(form, *form_list[0], false); |
| 1026 } | 1075 } |
| 1027 | 1076 |
| 1028 // Make sure that we can still read version 1 pickles. | 1077 // Make sure that we can still read version 1 pickles. |
| 1029 void NativeBackendKWalletPickleTest::CheckVersion1Pickle() { | 1078 void NativeBackendKWalletPickleTest::CheckVersion1Pickle() { |
| 1030 Pickle pickle; | 1079 Pickle pickle; |
| 1031 PasswordForm form = form_google_; | 1080 PasswordForm form = form_google_; |
| 1032 CreateVersion1Pickle(form, &pickle); | 1081 CreateVersion1Pickle(form, &pickle); |
| 1033 | 1082 |
| 1034 ScopedVector<autofill::PasswordForm> form_list; | 1083 ScopedVector<autofill::PasswordForm> form_list; |
| 1035 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, | 1084 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, |
| 1036 pickle, &form_list); | 1085 pickle, &form_list); |
| 1037 | 1086 |
| 1038 // This will match |old_form_google_| because not all the fields present in | 1087 // This will match |old_form_google_| because not all the fields present in |
| 1039 // |form_google_| will be deserialized. | 1088 // |form_google_| will be deserialized. |
| 1040 EXPECT_EQ(1u, form_list.size()); | 1089 EXPECT_EQ(1u, form_list.size()); |
| 1041 if (form_list.size() > 0) | 1090 if (form_list.size() > 0) |
| 1042 CheckPasswordForm(old_form_google_, *form_list[0]); | 1091 CheckPasswordForm(old_form_google_, *form_list[0], false); |
| 1043 } | 1092 } |
| 1044 | 1093 |
| 1045 void NativeBackendKWalletPickleTest::CheckVersion0Pickle( | 1094 void NativeBackendKWalletPickleTest::CheckVersion0Pickle( |
| 1046 bool size_32, PasswordForm::Scheme scheme) { | 1095 bool size_32, PasswordForm::Scheme scheme) { |
| 1047 Pickle pickle; | 1096 Pickle pickle; |
| 1048 PasswordForm form = old_form_google_; | 1097 PasswordForm form = old_form_google_; |
| 1049 form.scheme = scheme; | 1098 form.scheme = scheme; |
| 1050 CreateVersion0Pickle(size_32, form, &pickle); | 1099 CreateVersion0Pickle(size_32, form, &pickle); |
| 1051 ScopedVector<autofill::PasswordForm> form_list; | 1100 ScopedVector<autofill::PasswordForm> form_list; |
| 1052 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, | 1101 NativeBackendKWalletStub::DeserializeValue(form.signon_realm, |
| 1053 pickle, &form_list); | 1102 pickle, &form_list); |
| 1054 EXPECT_EQ(1u, form_list.size()); | 1103 EXPECT_EQ(1u, form_list.size()); |
| 1055 if (form_list.size() > 0) | 1104 if (form_list.size() > 0) |
| 1056 CheckPasswordForm(form, *form_list[0]); | 1105 CheckPasswordForm(form, *form_list[0], false); |
| 1057 } | 1106 } |
| 1058 | 1107 |
| 1059 // Check that if KWallet fails to respond, the backend propagates the error. | 1108 // Check that if KWallet fails to respond, the backend propagates the error. |
| 1060 TEST_F(NativeBackendKWalletTest, GetAllLoginsErrorHandling) { | 1109 TEST_F(NativeBackendKWalletTest, GetAllLoginsErrorHandling) { |
| 1061 NativeBackendKWalletStub backend(42); | 1110 NativeBackendKWalletStub backend(42); |
| 1062 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 1111 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
| 1063 // Make KWallet fail on calling readEntry. | 1112 // Make KWallet fail on calling readEntry. |
| 1064 failing_methods_.insert("readEntry"); | 1113 failing_methods_.insert("readEntry"); |
| 1065 | 1114 |
| 1066 // Store some non-blacklisted logins to be potentially returned. | 1115 // Store some non-blacklisted logins to be potentially returned. |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1106 CheckVersion1Pickle(); | 1155 CheckVersion1Pickle(); |
| 1107 } | 1156 } |
| 1108 | 1157 |
| 1109 TEST_F(NativeBackendKWalletPickleTest, CheckVersion2Pickle) { | 1158 TEST_F(NativeBackendKWalletPickleTest, CheckVersion2Pickle) { |
| 1110 CheckVersion2Pickle(); | 1159 CheckVersion2Pickle(); |
| 1111 } | 1160 } |
| 1112 | 1161 |
| 1113 TEST_F(NativeBackendKWalletPickleTest, CheckVersion3Pickle) { | 1162 TEST_F(NativeBackendKWalletPickleTest, CheckVersion3Pickle) { |
| 1114 CheckVersion3Pickle(); | 1163 CheckVersion3Pickle(); |
| 1115 } | 1164 } |
| 1165 |
| 1166 TEST_F(NativeBackendKWalletPickleTest, CheckVersion5Pickle) { |
| 1167 CheckVersion5Pickle(); |
| 1168 } |
| OLD | NEW |