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

Unified Diff: chrome/browser/password_manager/native_backend_kwallet_x_unittest.cc

Issue 895653002: Serialize date_created in PasswordStoreX properly (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/password_manager/native_backend_kwallet_x_unittest.cc
diff --git a/chrome/browser/password_manager/native_backend_kwallet_x_unittest.cc b/chrome/browser/password_manager/native_backend_kwallet_x_unittest.cc
index 087d373e17671b4cedba9449a8b18053874cd024..edfbdc0589f82a6aa550bd89879ccb274bfa4868 100644
--- a/chrome/browser/password_manager/native_backend_kwallet_x_unittest.cc
+++ b/chrome/browser/password_manager/native_backend_kwallet_x_unittest.cc
@@ -157,6 +157,7 @@ class NativeBackendKWalletTestBase : public testing::Test {
old_form_google_.password_value = UTF8ToUTF16("seekrit");
old_form_google_.submit_element = UTF8ToUTF16("submit");
old_form_google_.signon_realm = "Google";
+ old_form_google_.date_created = base::Time::Now();
form_google_ = old_form_google_;
form_google_.times_used = 3;
@@ -164,6 +165,7 @@ class NativeBackendKWalletTestBase : public testing::Test {
form_google_.form_data.name = UTF8ToUTF16("form_name");
form_google_.form_data.user_submitted = true;
form_google_.date_synced = base::Time::Now();
+ form_google_.date_created = old_form_google_.date_created;
form_google_.display_name = UTF8ToUTF16("Joe Schmoe");
form_google_.avatar_url = GURL("http://www.google.com/avatar");
form_google_.federation_url = GURL("http://www.google.com/federation_url");
@@ -178,10 +180,12 @@ class NativeBackendKWalletTestBase : public testing::Test {
form_isc_.submit_element = UTF8ToUTF16("login");
form_isc_.signon_realm = "ISC";
form_isc_.date_synced = base::Time::Now();
+ form_isc_.date_created = base::Time::Now();
}
static void CheckPasswordForm(const PasswordForm& expected,
- const PasswordForm& actual);
+ const PasswordForm& actual,
+ bool check_date_created);
static void CheckPasswordChanges(const PasswordStoreChangeList& expected,
const PasswordStoreChangeList& actual);
static void CheckPasswordChangesWithResult(
@@ -196,7 +200,9 @@ class NativeBackendKWalletTestBase : public testing::Test {
// static
void NativeBackendKWalletTestBase::CheckPasswordForm(
- const PasswordForm& expected, const PasswordForm& actual) {
+ const PasswordForm& expected,
+ const PasswordForm& actual,
+ bool check_date_created) {
EXPECT_EQ(expected.origin, actual.origin);
EXPECT_EQ(expected.password_value, actual.password_value);
EXPECT_EQ(expected.action, actual.action);
@@ -207,7 +213,9 @@ void NativeBackendKWalletTestBase::CheckPasswordForm(
EXPECT_EQ(expected.signon_realm, actual.signon_realm);
EXPECT_EQ(expected.ssl_valid, actual.ssl_valid);
EXPECT_EQ(expected.preferred, actual.preferred);
- // We don't check the date created. It varies.
+ if (check_date_created) {
+ EXPECT_EQ(expected.date_created, actual.date_created);
+ }
EXPECT_EQ(expected.blacklisted_by_user, actual.blacklisted_by_user);
EXPECT_EQ(expected.type, actual.type);
EXPECT_EQ(expected.times_used, actual.times_used);
@@ -226,7 +234,7 @@ void NativeBackendKWalletTestBase::CheckPasswordChanges(
ASSERT_EQ(expected.size(), actual.size());
for (size_t i = 0; i < expected.size(); ++i) {
EXPECT_EQ(expected[i].type(), actual[i].type());
- CheckPasswordForm(expected[i].form(), actual[i].form());
+ CheckPasswordForm(expected[i].form(), actual[i].form(), true);
}
}
@@ -365,8 +373,6 @@ void NativeBackendKWalletTest::TestRemoveLoginsBetween(
base::Time now = base::Time::Now();
base::Time next_day = now + base::TimeDelta::FromDays(1);
if (date_to_test == CREATED) {
- // crbug/374132. Remove the next line once it's fixed.
- next_day = base::Time::FromTimeT(next_day.ToTimeT());
form_google_.date_created = now;
form_isc_.date_created = next_day;
} else {
@@ -604,7 +610,7 @@ void NativeBackendKWalletTest::CheckPasswordForms(
const std::vector<const PasswordForm*>& expect = sorted_expected[i].second;
EXPECT_EQ(expect.size(), forms.size());
for (size_t j = 0; j < forms.size() && j < expect.size(); ++j)
- CheckPasswordForm(*expect[j], *forms[j]);
+ CheckPasswordForm(*expect[j], *forms[j], true);
}
}
@@ -923,25 +929,49 @@ TEST_F(NativeBackendKWalletTest, RemoveLoginsSyncedBetween) {
class NativeBackendKWalletPickleTest : public NativeBackendKWalletTestBase {
protected:
+ void CreateVersion5Pickle(const PasswordForm& form, Pickle* pickle);
void CreateVersion3Pickle(const PasswordForm& form, Pickle* pickle);
void CreateVersion2Pickle(const PasswordForm& form, Pickle* pickle);
void CreateVersion1Pickle(const PasswordForm& form, Pickle* pickle);
void CreateVersion0Pickle(bool size_32,
const PasswordForm& form,
Pickle* pickle);
+ void CheckVersion5Pickle();
void CheckVersion3Pickle();
void CheckVersion2Pickle();
void CheckVersion1Pickle();
void CheckVersion0Pickle(bool size_32, PasswordForm::Scheme scheme);
private:
- void CreatePickle(bool size_32, const PasswordForm& form, Pickle* pickle);
+ // Creates a Pickle from |form|. If |size_32| is true, stores the number of
+ // forms in the pickle as a 32bit uint, otherwise as 64 bit size_t. The latter
+ // should be the case for versions > 0. If |date_created_internal| is true,
+ // stores |date_created| as base::Time's internal value, otherwise as time_t.
+ void CreatePickle(bool size_32,
+ bool date_created_internal,
+ const PasswordForm& form,
+ Pickle* pickle);
};
+void NativeBackendKWalletPickleTest::CreateVersion5Pickle(
+ const PasswordForm& form,
+ Pickle* pickle) {
+ pickle->WriteInt(5);
+ CreatePickle(false, true, form, pickle);
+ pickle->WriteInt(form.type);
+ pickle->WriteInt(form.times_used);
+ autofill::SerializeFormData(form.form_data, pickle);
+ pickle->WriteInt64(form.date_synced.ToInternalValue());
+ pickle->WriteString16(form.display_name);
+ pickle->WriteString(form.avatar_url.spec());
+ pickle->WriteString(form.federation_url.spec());
+ pickle->WriteBool(form.skip_zero_click);
+}
+
void NativeBackendKWalletPickleTest::CreateVersion3Pickle(
const PasswordForm& form, Pickle* pickle) {
pickle->WriteInt(3);
- CreatePickle(false, form, pickle);
+ CreatePickle(false, false, form, pickle);
pickle->WriteInt(form.type);
pickle->WriteInt(form.times_used);
autofill::SerializeFormData(form.form_data, pickle);
@@ -951,7 +981,7 @@ void NativeBackendKWalletPickleTest::CreateVersion3Pickle(
void NativeBackendKWalletPickleTest::CreateVersion2Pickle(
const PasswordForm& form, Pickle* pickle) {
pickle->WriteInt(2);
- CreatePickle(false, form, pickle);
+ CreatePickle(false, false, form, pickle);
pickle->WriteInt(form.type);
pickle->WriteInt(form.times_used);
autofill::SerializeFormData(form.form_data, pickle);
@@ -960,17 +990,19 @@ void NativeBackendKWalletPickleTest::CreateVersion2Pickle(
void NativeBackendKWalletPickleTest::CreateVersion1Pickle(
const PasswordForm& form, Pickle* pickle) {
pickle->WriteInt(1);
- CreatePickle(false, form, pickle);
+ CreatePickle(false, false, form, pickle);
}
void NativeBackendKWalletPickleTest::CreateVersion0Pickle(
bool size_32, const PasswordForm& form, Pickle* pickle) {
pickle->WriteInt(0);
- CreatePickle(size_32, form, pickle);
+ CreatePickle(size_32, false, form, pickle);
}
-void NativeBackendKWalletPickleTest::CreatePickle(
- bool size_32, const PasswordForm& form, Pickle* pickle) {
+void NativeBackendKWalletPickleTest::CreatePickle(bool size_32,
+ bool date_created_internal,
+ const PasswordForm& form,
+ Pickle* pickle) {
if (size_32)
pickle->WriteUInt32(1); // Size of form list. 32 bits.
else
@@ -986,7 +1018,24 @@ void NativeBackendKWalletPickleTest::CreatePickle(
pickle->WriteBool(form.ssl_valid);
pickle->WriteBool(form.preferred);
pickle->WriteBool(form.blacklisted_by_user);
- pickle->WriteInt64(form.date_created.ToTimeT());
+ if (date_created_internal)
+ pickle->WriteInt64(form.date_created.ToInternalValue());
+ else
+ pickle->WriteInt64(form.date_created.ToTimeT());
+}
+
+void NativeBackendKWalletPickleTest::CheckVersion5Pickle() {
+ Pickle pickle;
+ PasswordForm form = form_google_;
+ CreateVersion5Pickle(form, &pickle);
+
+ ScopedVector<PasswordForm> form_list;
+ NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle,
+ &form_list);
+
+ EXPECT_EQ(1u, form_list.size());
+ if (form_list.size() > 0)
+ CheckPasswordForm(form, *form_list[0], true);
}
void NativeBackendKWalletPickleTest::CheckVersion3Pickle() {
@@ -1005,7 +1054,7 @@ void NativeBackendKWalletPickleTest::CheckVersion3Pickle() {
EXPECT_EQ(1u, form_list.size());
if (form_list.size() > 0)
- CheckPasswordForm(form, *form_list[0]);
+ CheckPasswordForm(form, *form_list[0], false);
}
void NativeBackendKWalletPickleTest::CheckVersion2Pickle() {
@@ -1022,7 +1071,7 @@ void NativeBackendKWalletPickleTest::CheckVersion2Pickle() {
EXPECT_EQ(1u, form_list.size());
if (form_list.size() > 0)
- CheckPasswordForm(form, *form_list[0]);
+ CheckPasswordForm(form, *form_list[0], false);
}
// Make sure that we can still read version 1 pickles.
@@ -1039,7 +1088,7 @@ void NativeBackendKWalletPickleTest::CheckVersion1Pickle() {
// |form_google_| will be deserialized.
EXPECT_EQ(1u, form_list.size());
if (form_list.size() > 0)
- CheckPasswordForm(old_form_google_, *form_list[0]);
+ CheckPasswordForm(old_form_google_, *form_list[0], false);
}
void NativeBackendKWalletPickleTest::CheckVersion0Pickle(
@@ -1053,7 +1102,7 @@ void NativeBackendKWalletPickleTest::CheckVersion0Pickle(
pickle, &form_list);
EXPECT_EQ(1u, form_list.size());
if (form_list.size() > 0)
- CheckPasswordForm(form, *form_list[0]);
+ CheckPasswordForm(form, *form_list[0], false);
}
// Check that if KWallet fails to respond, the backend propagates the error.
@@ -1113,3 +1162,7 @@ TEST_F(NativeBackendKWalletPickleTest, CheckVersion2Pickle) {
TEST_F(NativeBackendKWalletPickleTest, CheckVersion3Pickle) {
CheckVersion3Pickle();
}
+
+TEST_F(NativeBackendKWalletPickleTest, CheckVersion5Pickle) {
+ CheckVersion5Pickle();
+}

Powered by Google App Engine
This is Rietveld 408576698