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

Unified Diff: chrome/browser/webdata/web_database_unittest.cc

Issue 507053: Differentiate between ADD and CHANGED when adding new autofill entries. (Closed)
Patch Set: Created 11 years 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
« no previous file with comments | « chrome/browser/webdata/web_database.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/webdata/web_database_unittest.cc
diff --git a/chrome/browser/webdata/web_database_unittest.cc b/chrome/browser/webdata/web_database_unittest.cc
index 74647c81b6f50daf99dc5ae613fcee1cc173a876..5725c7c67d40d77c256a10fe226e17d6c9553306 100644
--- a/chrome/browser/webdata/web_database_unittest.cc
+++ b/chrome/browser/webdata/web_database_unittest.cc
@@ -49,7 +49,7 @@ std::ostream& operator<<(std::ostream& os, const AutofillChange& change) {
class WebDatabaseTest : public testing::Test {
protected:
-
+ typedef std::vector<AutofillChange> AutofillChangeList;
virtual void SetUp() {
PathService::Get(chrome::DIR_TEST_DATA, &file_);
const std::string test_db = "TestWebDatabase" +
@@ -417,32 +417,37 @@ TEST_F(WebDatabaseTest, Autofill) {
// Simulate the submission of a handful of entries in a field called "Name",
// some more often than others.
+ AutofillChangeList changes;
EXPECT_TRUE(db.AddFormFieldValue(
FormField(string16(),
ASCIIToUTF16("Name"),
string16(),
- ASCIIToUTF16("Superman"))));
+ ASCIIToUTF16("Superman")),
+ &changes));
std::vector<string16> v;
for (int i = 0; i < 5; i++) {
EXPECT_TRUE(db.AddFormFieldValue(
FormField(string16(),
ASCIIToUTF16("Name"),
string16(),
- ASCIIToUTF16("Clark Kent"))));
+ ASCIIToUTF16("Clark Kent")),
+ &changes));
}
for (int i = 0; i < 3; i++) {
EXPECT_TRUE(db.AddFormFieldValue(
FormField(string16(),
ASCIIToUTF16("Name"),
string16(),
- ASCIIToUTF16("Clark Sutter"))));
+ ASCIIToUTF16("Clark Sutter")),
+ &changes));
}
for (int i = 0; i < 2; i++) {
EXPECT_TRUE(db.AddFormFieldValue(
FormField(string16(),
ASCIIToUTF16("Favorite Color"),
string16(),
- ASCIIToUTF16("Green"))));
+ ASCIIToUTF16("Green")),
+ &changes));
}
int count = 0;
@@ -511,7 +516,7 @@ TEST_F(WebDatabaseTest, Autofill) {
// Removing all elements since the beginning of this function should remove
// everything from the database.
- std::vector<AutofillChange> changes;
+ changes.clear();
EXPECT_TRUE(db.RemoveFormElementsAddedBetween(t1, Time(), &changes));
const AutofillChange expected_changes[] = {
@@ -550,19 +555,23 @@ TEST_F(WebDatabaseTest, Autofill) {
EXPECT_TRUE(db.AddFormFieldValue(FormField(string16(),
ASCIIToUTF16("blank"),
string16(),
- string16())));
+ string16()),
+ &changes));
EXPECT_TRUE(db.AddFormFieldValue(FormField(string16(),
ASCIIToUTF16("blank"),
string16(),
- ASCIIToUTF16(" "))));
+ ASCIIToUTF16(" ")),
+ &changes));
EXPECT_TRUE(db.AddFormFieldValue(FormField(string16(),
ASCIIToUTF16("blank"),
string16(),
- ASCIIToUTF16(" "))));
+ ASCIIToUTF16(" ")),
+ &changes));
EXPECT_TRUE(db.AddFormFieldValue(FormField(string16(),
ASCIIToUTF16("blank"),
string16(),
- kValue)));
+ kValue),
+ &changes));
// They should be stored normally as the DB layer does not check for empty
// values.
@@ -590,20 +599,23 @@ TEST_F(WebDatabaseTest, Autofill_RemoveBetweenChanges) {
Time t1 = Time::Now();
Time t2 = t1 + one_day;
+ AutofillChangeList changes;
EXPECT_TRUE(db.AddFormFieldValueTime(
FormField(string16(),
ASCIIToUTF16("Name"),
string16(),
ASCIIToUTF16("Superman")),
+ &changes,
t1));
EXPECT_TRUE(db.AddFormFieldValueTime(
FormField(string16(),
ASCIIToUTF16("Name"),
string16(),
ASCIIToUTF16("Superman")),
+ &changes,
t2));
- std::vector<AutofillChange> changes;
+ changes.clear();
EXPECT_TRUE(db.RemoveFormElementsAddedBetween(t1, t2, &changes));
ASSERT_EQ(1U, changes.size());
EXPECT_EQ(AutofillChange(AutofillChange::UPDATE,
@@ -620,6 +632,43 @@ TEST_F(WebDatabaseTest, Autofill_RemoveBetweenChanges) {
changes[0]);
}
+TEST_F(WebDatabaseTest, Autofill_AddChanges) {
+ WebDatabase db;
+ ASSERT_EQ(sql::INIT_OK, db.Init(file_));
+
+ TimeDelta one_day(TimeDelta::FromDays(1));
+ Time t1 = Time::Now();
+ Time t2 = t1 + one_day;
+
+ AutofillChangeList changes;
+ EXPECT_TRUE(db.AddFormFieldValueTime(
+ FormField(string16(),
+ ASCIIToUTF16("Name"),
+ string16(),
+ ASCIIToUTF16("Superman")),
+ &changes,
+ t1));
+ ASSERT_EQ(1U, changes.size());
+ EXPECT_EQ(AutofillChange(AutofillChange::ADD,
+ AutofillKey(ASCIIToUTF16("Name"),
+ ASCIIToUTF16("Superman"))),
+ changes[0]);
+
+ changes.clear();
+ EXPECT_TRUE(db.AddFormFieldValueTime(
+ FormField(string16(),
+ ASCIIToUTF16("Name"),
+ string16(),
+ ASCIIToUTF16("Superman")),
+ &changes,
+ t2));
+ ASSERT_EQ(1U, changes.size());
+ EXPECT_EQ(AutofillChange(AutofillChange::UPDATE,
+ AutofillKey(ASCIIToUTF16("Name"),
+ ASCIIToUTF16("Superman"))),
+ changes[0]);
+}
+
static bool AddTimestampedLogin(WebDatabase* db, std::string url,
const std::string& unique_string,
const Time& time) {
« no previous file with comments | « chrome/browser/webdata/web_database.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698