| 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) {
|
|
|