summaryrefslogtreecommitdiffstats
path: root/chrome/browser/webdata/web_database_unittest.cc
diff options
context:
space:
mode:
authordhollowa@chromium.org <dhollowa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-23 03:53:09 +0000
committerdhollowa@chromium.org <dhollowa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-23 03:53:09 +0000
commita6d8357a9702c6ce48e15914760708c1970a03e2 (patch)
tree196c9fe86d6d8b314815f5b7ad699024ec9dfee0 /chrome/browser/webdata/web_database_unittest.cc
parentdf0846a5f9527233de7b551dd426585f97b0f296 (diff)
downloadchromium_src-a6d8357a9702c6ce48e15914760708c1970a03e2.zip
chromium_src-a6d8357a9702c6ce48e15914760708c1970a03e2.tar.gz
chromium_src-a6d8357a9702c6ce48e15914760708c1970a03e2.tar.bz2
Autofill extend profiles to include multi-valued fields.
Changes to the underlying |autofill_profiles| schema. These changes split out name, email, and phone information into separate relationaly-tied tables so that we can support multi-valued fields. New tables are introduced: |autofill_profile_names|, |autofill_profile_emails|, and |autofill_profile_phones|. Also, the |label| fields have been removed from both |credit_cards| and |autofill_profiles|. BUG=65625 TEST=WebDatabaseMigrationTest.*:WebDatabaseTest.* Review URL: http://codereview.chromium.org/6546034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75710 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/webdata/web_database_unittest.cc')
-rw-r--r--chrome/browser/webdata/web_database_unittest.cc439
1 files changed, 397 insertions, 42 deletions
diff --git a/chrome/browser/webdata/web_database_unittest.cc b/chrome/browser/webdata/web_database_unittest.cc
index 0c9b758..4c7baa9 100644
--- a/chrome/browser/webdata/web_database_unittest.cc
+++ b/chrome/browser/webdata/web_database_unittest.cc
@@ -149,6 +149,23 @@ void AutoFillProfile32FromStatement(const sql::Statement& s,
*date_modified = s.ColumnInt64(15);
}
+void AutoFillProfile33FromStatement(const sql::Statement& s,
+ AutoFillProfile* profile,
+ int64* date_modified) {
+ DCHECK(profile);
+ DCHECK(date_modified);
+ profile->set_guid(s.ColumnString(0));
+ EXPECT_TRUE(guid::IsValidGUID(profile->guid()));
+ profile->SetInfo(AutoFillType(COMPANY_NAME), s.ColumnString16(1));
+ profile->SetInfo(AutoFillType(ADDRESS_HOME_LINE1), s.ColumnString16(2));
+ profile->SetInfo(AutoFillType(ADDRESS_HOME_LINE2), s.ColumnString16(3));
+ profile->SetInfo(AutoFillType(ADDRESS_HOME_CITY), s.ColumnString16(4));
+ profile->SetInfo(AutoFillType(ADDRESS_HOME_STATE), s.ColumnString16(5));
+ profile->SetInfo(AutoFillType(ADDRESS_HOME_ZIP), s.ColumnString16(6));
+ profile->SetInfo(AutoFillType(ADDRESS_HOME_COUNTRY), s.ColumnString16(7));
+ *date_modified = s.ColumnInt64(8);
+}
+
void CreditCard31FromStatement(const sql::Statement& s,
CreditCard* credit_card,
string16* label,
@@ -180,27 +197,24 @@ void CreditCard31FromStatement(const sql::Statement& s,
void CreditCard32FromStatement(const sql::Statement& s,
CreditCard* credit_card,
- string16* label,
std::string* encrypted_number,
int64* date_modified) {
DCHECK(credit_card);
- DCHECK(label);
DCHECK(encrypted_number);
DCHECK(date_modified);
credit_card->set_guid(s.ColumnString(0));
EXPECT_TRUE(guid::IsValidGUID(credit_card->guid()));
- *label = s.ColumnString16(1);
- credit_card->SetInfo(AutoFillType(CREDIT_CARD_NAME), s.ColumnString16(2));
+ credit_card->SetInfo(AutoFillType(CREDIT_CARD_NAME), s.ColumnString16(1));
credit_card->SetInfo(AutoFillType(CREDIT_CARD_EXP_MONTH),
- s.ColumnString16(3));
+ s.ColumnString16(2));
credit_card->SetInfo(AutoFillType(CREDIT_CARD_EXP_4_DIGIT_YEAR),
- s.ColumnString16(4));
- int encrypted_number_len = s.ColumnByteLength(5);
+ s.ColumnString16(3));
+ int encrypted_number_len = s.ColumnByteLength(4);
if (encrypted_number_len) {
encrypted_number->resize(encrypted_number_len);
- memcpy(&(*encrypted_number)[0], s.ColumnBlob(5), encrypted_number_len);
+ memcpy(&(*encrypted_number)[0], s.ColumnBlob(4), encrypted_number_len);
}
- *date_modified = s.ColumnInt64(6);
+ *date_modified = s.ColumnInt64(5);
}
} // namespace
@@ -1458,7 +1472,7 @@ TEST_F(WebDatabaseTest, AutoFillProfile) {
EXPECT_FALSE(s_billing.Step());
delete db_profile;
- // Update the 'Billing' profile.
+ // Update the 'Billing' profile, name only.
billing_profile.SetInfo(AutoFillType(NAME_FIRST), ASCIIToUTF16("Jane"));
Time pre_modification_time = Time::Now();
EXPECT_TRUE(db.UpdateAutoFillProfile(billing_profile));
@@ -1477,6 +1491,45 @@ TEST_F(WebDatabaseTest, AutoFillProfile) {
EXPECT_FALSE(s_billing_updated.Step());
delete db_profile;
+ // Update the 'Billing' profile.
+ billing_profile.SetInfo(AutoFillType(NAME_FIRST), ASCIIToUTF16("Janice"));
+ billing_profile.SetInfo(AutoFillType(NAME_MIDDLE), ASCIIToUTF16("C."));
+ billing_profile.SetInfo(AutoFillType(NAME_FIRST), ASCIIToUTF16("Joplin"));
+ billing_profile.SetInfo(AutoFillType(EMAIL_ADDRESS),
+ ASCIIToUTF16("jane@singer.com"));
+ billing_profile.SetInfo(AutoFillType(COMPANY_NAME), ASCIIToUTF16("Indy"));
+ billing_profile.SetInfo(AutoFillType(ADDRESS_HOME_LINE1),
+ ASCIIToUTF16("Open Road"));
+ billing_profile.SetInfo(AutoFillType(ADDRESS_HOME_LINE2),
+ ASCIIToUTF16("Route 66"));
+ billing_profile.SetInfo(AutoFillType(ADDRESS_HOME_CITY),
+ ASCIIToUTF16("NFA"));
+ billing_profile.SetInfo(AutoFillType(ADDRESS_HOME_STATE), ASCIIToUTF16("NY"));
+ billing_profile.SetInfo(AutoFillType(ADDRESS_HOME_ZIP),
+ ASCIIToUTF16("10011"));
+ billing_profile.SetInfo(AutoFillType(ADDRESS_HOME_COUNTRY),
+ ASCIIToUTF16("USA"));
+ billing_profile.SetInfo(AutoFillType(PHONE_HOME_WHOLE_NUMBER),
+ ASCIIToUTF16("18181230000"));
+ billing_profile.SetInfo(AutoFillType(PHONE_FAX_WHOLE_NUMBER),
+ ASCIIToUTF16("1915240000"));
+ Time pre_modification_time_2 = Time::Now();
+ EXPECT_TRUE(db.UpdateAutoFillProfile(billing_profile));
+ Time post_modification_time_2 = Time::Now();
+ ASSERT_TRUE(db.GetAutoFillProfile(billing_profile.guid(), &db_profile));
+ EXPECT_EQ(billing_profile, *db_profile);
+ sql::Statement s_billing_updated_2(db.db_.GetUniqueStatement(
+ "SELECT date_modified FROM autofill_profiles WHERE guid=?"));
+ s_billing_updated_2.BindString(0, billing_profile.guid());
+ ASSERT_TRUE(s_billing_updated_2);
+ ASSERT_TRUE(s_billing_updated_2.Step());
+ EXPECT_GE(s_billing_updated_2.ColumnInt64(0),
+ pre_modification_time_2.ToTimeT());
+ EXPECT_LE(s_billing_updated_2.ColumnInt64(0),
+ post_modification_time_2.ToTimeT());
+ EXPECT_FALSE(s_billing_updated_2.Step());
+ delete db_profile;
+
// Remove the 'Billing' profile.
EXPECT_TRUE(db.RemoveAutoFillProfile(billing_profile.guid()));
EXPECT_FALSE(db.GetAutoFillProfile(billing_profile.guid(), &db_profile));
@@ -1507,14 +1560,14 @@ TEST_F(WebDatabaseTest, CreditCard) {
ASSERT_TRUE(db.GetCreditCard(work_creditcard.guid(), &db_creditcard));
EXPECT_EQ(work_creditcard, *db_creditcard);
sql::Statement s_work(db.db_.GetUniqueStatement(
- "SELECT guid, label, name_on_card, expiration_month, expiration_year, "
+ "SELECT guid, name_on_card, expiration_month, expiration_year, "
"card_number_encrypted, date_modified "
"FROM credit_cards WHERE guid=?"));
s_work.BindString(0, work_creditcard.guid());
ASSERT_TRUE(s_work);
ASSERT_TRUE(s_work.Step());
- EXPECT_GE(s_work.ColumnInt64(6), pre_creation_time.ToTimeT());
- EXPECT_LE(s_work.ColumnInt64(6), post_creation_time.ToTimeT());
+ EXPECT_GE(s_work.ColumnInt64(5), pre_creation_time.ToTimeT());
+ EXPECT_LE(s_work.ColumnInt64(5), post_creation_time.ToTimeT());
EXPECT_FALSE(s_work.Step());
delete db_creditcard;
@@ -1535,14 +1588,14 @@ TEST_F(WebDatabaseTest, CreditCard) {
ASSERT_TRUE(db.GetCreditCard(target_creditcard.guid(), &db_creditcard));
EXPECT_EQ(target_creditcard, *db_creditcard);
sql::Statement s_target(db.db_.GetUniqueStatement(
- "SELECT guid, label, name_on_card, expiration_month, expiration_year, "
+ "SELECT guid, name_on_card, expiration_month, expiration_year, "
"card_number_encrypted, date_modified "
"FROM credit_cards WHERE guid=?"));
s_target.BindString(0, target_creditcard.guid());
ASSERT_TRUE(s_target);
ASSERT_TRUE(s_target.Step());
- EXPECT_GE(s_target.ColumnInt64(6), pre_creation_time.ToTimeT());
- EXPECT_LE(s_target.ColumnInt64(6), post_creation_time.ToTimeT());
+ EXPECT_GE(s_target.ColumnInt64(5), pre_creation_time.ToTimeT());
+ EXPECT_LE(s_target.ColumnInt64(5), post_creation_time.ToTimeT());
EXPECT_FALSE(s_target.Step());
delete db_creditcard;
@@ -1555,16 +1608,14 @@ TEST_F(WebDatabaseTest, CreditCard) {
ASSERT_TRUE(db.GetCreditCard(target_creditcard.guid(), &db_creditcard));
EXPECT_EQ(target_creditcard, *db_creditcard);
sql::Statement s_target_updated(db.db_.GetUniqueStatement(
- "SELECT guid, label, name_on_card, expiration_month, expiration_year, "
+ "SELECT guid, name_on_card, expiration_month, expiration_year, "
"card_number_encrypted, date_modified "
"FROM credit_cards WHERE guid=?"));
s_target_updated.BindString(0, target_creditcard.guid());
ASSERT_TRUE(s_target_updated);
ASSERT_TRUE(s_target_updated.Step());
- EXPECT_GE(s_target_updated.ColumnInt64(6),
- pre_modification_time.ToTimeT());
- EXPECT_LE(s_target_updated.ColumnInt64(6),
- post_modification_time.ToTimeT());
+ EXPECT_GE(s_target_updated.ColumnInt64(5), pre_modification_time.ToTimeT());
+ EXPECT_LE(s_target_updated.ColumnInt64(5), post_modification_time.ToTimeT());
EXPECT_FALSE(s_target_updated.Step());
delete db_creditcard;
@@ -2053,7 +2104,7 @@ class WebDatabaseMigrationTest : public testing::Test {
DISALLOW_COPY_AND_ASSIGN(WebDatabaseMigrationTest);
};
-const int WebDatabaseMigrationTest::kCurrentTestedVersionNumber = 32;
+const int WebDatabaseMigrationTest::kCurrentTestedVersionNumber = 33;
void WebDatabaseMigrationTest::LoadDatabase(const FilePath& file) {
std::string contents;
@@ -2391,14 +2442,13 @@ TEST_F(WebDatabaseMigrationTest, MigrateVersion26ToCurrentStringLabels) {
// Verify the credit card data is converted.
sql::Statement s(connection.GetUniqueStatement(
- "SELECT guid, label, name_on_card, expiration_month, expiration_year, "
+ "SELECT guid, name_on_card, expiration_month, expiration_year, "
"card_number_encrypted, date_modified "
"FROM credit_cards"));
ASSERT_TRUE(s.Step());
- EXPECT_EQ("label", s.ColumnString(1));
- EXPECT_EQ("Jack", s.ColumnString(2));
- EXPECT_EQ(2, s.ColumnInt(3));
- EXPECT_EQ(2012, s.ColumnInt(4));
+ EXPECT_EQ("Jack", s.ColumnString(1));
+ EXPECT_EQ(2, s.ColumnInt(2));
+ EXPECT_EQ(2012, s.ColumnInt(3));
// Column 5 is encrypted number blob.
// Column 6 is date_modified.
}
@@ -2467,14 +2517,13 @@ TEST_F(WebDatabaseMigrationTest, MigrateVersion26ToCurrentStringIDs) {
// Verify the credit card data is converted.
sql::Statement s(connection.GetUniqueStatement(
- "SELECT guid, label, name_on_card, expiration_month, expiration_year, "
+ "SELECT guid, name_on_card, expiration_month, expiration_year, "
"card_number_encrypted, date_modified "
"FROM credit_cards"));
ASSERT_TRUE(s.Step());
- EXPECT_EQ("label", s.ColumnString(1));
- EXPECT_EQ("Jack", s.ColumnString(2));
- EXPECT_EQ(2, s.ColumnInt(3));
- EXPECT_EQ(2012, s.ColumnInt(4));
+ EXPECT_EQ("Jack", s.ColumnString(1));
+ EXPECT_EQ(2, s.ColumnInt(2));
+ EXPECT_EQ(2012, s.ColumnInt(3));
// Column 5 is encrypted credit card number blob.
// Column 6 is date_modified.
}
@@ -2739,24 +2788,35 @@ TEST_F(WebDatabaseMigrationTest, MigrateVersion31ToCurrent) {
// Verify data in the database after the migration.
sql::Statement s1(
connection.GetUniqueStatement(
- "SELECT guid, label, first_name, middle_name, last_name, "
- "email, company_name, address_line_1, address_line_2, city, state, "
- "zipcode, country, phone, fax, date_modified "
+ "SELECT guid, company_name, address_line_1, address_line_2, "
+ "city, state, zipcode, country, date_modified "
"FROM autofill_profiles"));
ASSERT_TRUE(s1.Step());
AutoFillProfile profile_a;
- string16 profile_label_a;
int64 profile_date_modified_a = 0;
- EXPECT_NO_FATAL_FAILURE(AutoFillProfile32FromStatement(
- s1, &profile_a, &profile_label_a, &profile_date_modified_a));
- EXPECT_EQ(profile, profile_a);
- EXPECT_EQ(profile_label, profile_label_a);
+ EXPECT_NO_FATAL_FAILURE(AutoFillProfile33FromStatement(
+ s1, &profile_a, &profile_date_modified_a));
+ EXPECT_EQ(profile.guid(), profile_a.guid());
+ EXPECT_EQ(profile.GetFieldText(AutoFillType(COMPANY_NAME)),
+ profile_a.GetFieldText(AutoFillType(COMPANY_NAME)));
+ EXPECT_EQ(profile.GetFieldText(AutoFillType(ADDRESS_HOME_LINE1)),
+ profile_a.GetFieldText(AutoFillType(ADDRESS_HOME_LINE1)));
+ EXPECT_EQ(profile.GetFieldText(AutoFillType(ADDRESS_HOME_LINE2)),
+ profile_a.GetFieldText(AutoFillType(ADDRESS_HOME_LINE2)));
+ EXPECT_EQ(profile.GetFieldText(AutoFillType(ADDRESS_HOME_CITY)),
+ profile_a.GetFieldText(AutoFillType(ADDRESS_HOME_CITY)));
+ EXPECT_EQ(profile.GetFieldText(AutoFillType(ADDRESS_HOME_STATE)),
+ profile_a.GetFieldText(AutoFillType(ADDRESS_HOME_STATE)));
+ EXPECT_EQ(profile.GetFieldText(AutoFillType(ADDRESS_HOME_ZIP)),
+ profile_a.GetFieldText(AutoFillType(ADDRESS_HOME_ZIP)));
+ EXPECT_EQ(profile.GetFieldText(AutoFillType(ADDRESS_HOME_COUNTRY)),
+ profile_a.GetFieldText(AutoFillType(ADDRESS_HOME_COUNTRY)));
EXPECT_EQ(profile_date_modified, profile_date_modified_a);
sql::Statement s2(
connection.GetUniqueStatement(
- "SELECT guid, label, name_on_card, expiration_month, "
+ "SELECT guid, name_on_card, expiration_month, "
"expiration_year, card_number_encrypted, date_modified "
"FROM credit_cards"));
ASSERT_TRUE(s2.Step());
@@ -2767,7 +2827,6 @@ TEST_F(WebDatabaseMigrationTest, MigrateVersion31ToCurrent) {
int64 cc_date_modified_a = 0;
EXPECT_NO_FATAL_FAILURE(CreditCard32FromStatement(s2,
&credit_card_a,
- &cc_label_a,
&cc_number_encrypted_a,
&cc_date_modified_a));
EXPECT_EQ(credit_card, credit_card_a);
@@ -2776,3 +2835,299 @@ TEST_F(WebDatabaseMigrationTest, MigrateVersion31ToCurrent) {
EXPECT_EQ(cc_date_modified, cc_date_modified_a);
}
}
+
+// Factor |autofill_profiles| address information separately from name, email,
+// and phone.
+TEST_F(WebDatabaseMigrationTest, MigrateVersion32ToCurrent) {
+ // Initialize the database.
+ ASSERT_NO_FATAL_FAILURE(
+ LoadDatabase(FilePath(FILE_PATH_LITERAL("version_32.sql"))));
+
+ // Verify pre-conditions. These are expectations for version 32 of the
+ // database.
+ {
+ sql::Connection connection;
+ ASSERT_TRUE(connection.Open(GetDatabasePath()));
+
+ // Verify existence of columns we'll be changing.
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "guid"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "label"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "first_name"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "middle_name"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "last_name"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "email"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles",
+ "company_name"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles",
+ "address_line_1"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles",
+ "address_line_2"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "city"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "state"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "zipcode"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "country"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "phone"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "fax"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles",
+ "date_modified"));
+
+ EXPECT_FALSE(connection.DoesTableExist("autofill_profile_names"));
+ EXPECT_FALSE(connection.DoesTableExist("autofill_profile_emails"));
+ EXPECT_FALSE(connection.DoesTableExist("autofill_profile_phones"));
+
+ EXPECT_TRUE(connection.DoesColumnExist("credit_cards", "label"));
+ }
+
+ // Load the database via the WebDatabase class and migrate the database to
+ // the current version.
+ {
+ WebDatabase db;
+ ASSERT_EQ(sql::INIT_OK, db.Init(GetDatabasePath()));
+ }
+
+ // Verify post-conditions. These are expectations for current version of the
+ // database.
+ {
+ sql::Connection connection;
+ ASSERT_TRUE(connection.Open(GetDatabasePath()));
+
+ // Check version.
+ EXPECT_EQ(kCurrentTestedVersionNumber, VersionFromConnection(&connection));
+
+ // Verify changes to columns.
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "guid"));
+ EXPECT_FALSE(connection.DoesColumnExist("autofill_profiles", "label"));
+ EXPECT_FALSE(connection.DoesColumnExist("autofill_profiles", "first_name"));
+ EXPECT_FALSE(connection.DoesColumnExist("autofill_profiles",
+ "middle_name"));
+ EXPECT_FALSE(connection.DoesColumnExist("autofill_profiles", "last_name"));
+ EXPECT_FALSE(connection.DoesColumnExist("autofill_profiles", "email"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles",
+ "company_name"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles",
+ "address_line_1"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles",
+ "address_line_2"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "city"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "state"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "zipcode"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles", "country"));
+ EXPECT_FALSE(connection.DoesColumnExist("autofill_profiles", "phone"));
+ EXPECT_FALSE(connection.DoesColumnExist("autofill_profiles", "fax"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profiles",
+ "date_modified"));
+
+ // New "names" table.
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profile_names", "guid"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profile_names",
+ "first_name"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profile_names",
+ "middle_name"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profile_names",
+ "last_name"));
+
+ // New "emails" table.
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profile_emails", "guid"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profile_emails", "email"));
+
+ // New "phones" table.
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profile_phones", "guid"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profile_phones", "type"));
+ EXPECT_TRUE(connection.DoesColumnExist("autofill_profile_phones",
+ "number"));
+
+ EXPECT_FALSE(connection.DoesColumnExist("credit_cards", "label"));
+
+ // Verify data in the database after the migration.
+ sql::Statement s1(
+ connection.GetUniqueStatement(
+ "SELECT guid, company_name, address_line_1, address_line_2, "
+ "city, state, zipcode, country, date_modified "
+ "FROM autofill_profiles"));
+
+ // John Doe.
+ ASSERT_TRUE(s1.Step());
+ EXPECT_EQ("00580526-FF81-EE2A-0546-1AC593A32E2F", s1.ColumnString(0));
+ EXPECT_EQ(ASCIIToUTF16("Doe Enterprises"), s1.ColumnString16(1));
+ EXPECT_EQ(ASCIIToUTF16("1 Main St"), s1.ColumnString16(2));
+ EXPECT_EQ(ASCIIToUTF16("Apt 1"), s1.ColumnString16(3));
+ EXPECT_EQ(ASCIIToUTF16("Los Altos"), s1.ColumnString16(4));
+ EXPECT_EQ(ASCIIToUTF16("CA"), s1.ColumnString16(5));
+ EXPECT_EQ(ASCIIToUTF16("94022"), s1.ColumnString16(6));
+ EXPECT_EQ(ASCIIToUTF16("USA"), s1.ColumnString16(7));
+ EXPECT_EQ(1297882100UL, s1.ColumnInt64(8));
+
+ // John P. Doe.
+ ASSERT_TRUE(s1.Step());
+ EXPECT_EQ("589636FD-9037-3053-200C-80ABC97D7344", s1.ColumnString(0));
+ EXPECT_EQ(ASCIIToUTF16("Doe Enterprises"), s1.ColumnString16(1));
+ EXPECT_EQ(ASCIIToUTF16("1 Main St"), s1.ColumnString16(2));
+ EXPECT_EQ(ASCIIToUTF16("Apt 1"), s1.ColumnString16(3));
+ EXPECT_EQ(ASCIIToUTF16("Los Altos"), s1.ColumnString16(4));
+ EXPECT_EQ(ASCIIToUTF16("CA"), s1.ColumnString16(5));
+ EXPECT_EQ(ASCIIToUTF16("94022"), s1.ColumnString16(6));
+ EXPECT_EQ(ASCIIToUTF16("USA"), s1.ColumnString16(7));
+ EXPECT_EQ(1297882100UL, s1.ColumnInt64(8));
+
+ // Dave Smith.
+ ASSERT_TRUE(s1.Step());
+ EXPECT_EQ("4C74A9D8-7EEE-423E-F9C2-E7FA70ED1396", s1.ColumnString(0));
+ EXPECT_EQ(ASCIIToUTF16(""), s1.ColumnString16(1));
+ EXPECT_EQ(ASCIIToUTF16("2 Main Street"), s1.ColumnString16(2));
+ EXPECT_EQ(ASCIIToUTF16(""), s1.ColumnString16(3));
+ EXPECT_EQ(ASCIIToUTF16("Los Altos"), s1.ColumnString16(4));
+ EXPECT_EQ(ASCIIToUTF16("CA"), s1.ColumnString16(5));
+ EXPECT_EQ(ASCIIToUTF16("94022"), s1.ColumnString16(6));
+ EXPECT_EQ(ASCIIToUTF16("USA"), s1.ColumnString16(7));
+ EXPECT_EQ(1297882100UL, s1.ColumnInt64(8));
+
+ // Dave Smith (Part 2).
+ ASSERT_TRUE(s1.Step());
+ EXPECT_EQ("722DF5C4-F74A-294A-46F0-31FFDED0D635", s1.ColumnString(0));
+ EXPECT_EQ(ASCIIToUTF16(""), s1.ColumnString16(1));
+ EXPECT_EQ(ASCIIToUTF16("2 Main St"), s1.ColumnString16(2));
+ EXPECT_EQ(ASCIIToUTF16(""), s1.ColumnString16(3));
+ EXPECT_EQ(ASCIIToUTF16("Los Altos"), s1.ColumnString16(4));
+ EXPECT_EQ(ASCIIToUTF16("CA"), s1.ColumnString16(5));
+ EXPECT_EQ(ASCIIToUTF16("94022"), s1.ColumnString16(6));
+ EXPECT_EQ(ASCIIToUTF16("USA"), s1.ColumnString16(7));
+ EXPECT_EQ(1297882100UL, s1.ColumnInt64(8));
+
+ // Alfred E Newman.
+ ASSERT_TRUE(s1.Step());
+ EXPECT_EQ("584282AC-5D21-8D73-A2DB-4F892EF61F3F", s1.ColumnString(0));
+ EXPECT_EQ(ASCIIToUTF16(""), s1.ColumnString16(1));
+ EXPECT_EQ(ASCIIToUTF16(""), s1.ColumnString16(2));
+ EXPECT_EQ(ASCIIToUTF16(""), s1.ColumnString16(3));
+ EXPECT_EQ(ASCIIToUTF16(""), s1.ColumnString16(4));
+ EXPECT_EQ(ASCIIToUTF16(""), s1.ColumnString16(5));
+ EXPECT_EQ(ASCIIToUTF16(""), s1.ColumnString16(6));
+ EXPECT_EQ(ASCIIToUTF16(""), s1.ColumnString16(7));
+ EXPECT_EQ(1297882100UL, s1.ColumnInt64(8));
+
+ // 3 Main St.
+ ASSERT_TRUE(s1.Step());
+ EXPECT_EQ("9E5FE298-62C7-83DF-6293-381BC589183F", s1.ColumnString(0));
+ EXPECT_EQ(ASCIIToUTF16(""), s1.ColumnString16(1));
+ EXPECT_EQ(ASCIIToUTF16("3 Main St"), s1.ColumnString16(2));
+ EXPECT_EQ(ASCIIToUTF16(""), s1.ColumnString16(3));
+ EXPECT_EQ(ASCIIToUTF16("Los Altos"), s1.ColumnString16(4));
+ EXPECT_EQ(ASCIIToUTF16("CA"), s1.ColumnString16(5));
+ EXPECT_EQ(ASCIIToUTF16("94022"), s1.ColumnString16(6));
+ EXPECT_EQ(ASCIIToUTF16("USA"), s1.ColumnString16(7));
+ EXPECT_EQ(1297882100UL, s1.ColumnInt64(8));
+
+ // That should be all.
+ EXPECT_FALSE(s1.Step());
+
+ sql::Statement s2(
+ connection.GetUniqueStatement(
+ "SELECT guid, first_name, middle_name, last_name "
+ "FROM autofill_profile_names"));
+
+ // John Doe.
+ ASSERT_TRUE(s2.Step());
+ EXPECT_EQ("00580526-FF81-EE2A-0546-1AC593A32E2F", s2.ColumnString(0));
+ EXPECT_EQ(ASCIIToUTF16("John"), s2.ColumnString16(1));
+ EXPECT_EQ(ASCIIToUTF16(""), s2.ColumnString16(2));
+ EXPECT_EQ(ASCIIToUTF16("Doe"), s2.ColumnString16(3));
+
+ // John P. Doe.
+ ASSERT_TRUE(s2.Step());
+ EXPECT_EQ("589636FD-9037-3053-200C-80ABC97D7344", s2.ColumnString(0));
+ EXPECT_EQ(ASCIIToUTF16("John"), s2.ColumnString16(1));
+ EXPECT_EQ(ASCIIToUTF16("P."), s2.ColumnString16(2));
+ EXPECT_EQ(ASCIIToUTF16("Doe"), s2.ColumnString16(3));
+
+ // Dave Smith.
+ ASSERT_TRUE(s2.Step());
+ EXPECT_EQ("4C74A9D8-7EEE-423E-F9C2-E7FA70ED1396", s2.ColumnString(0));
+ EXPECT_EQ(ASCIIToUTF16("Dave"), s2.ColumnString16(1));
+ EXPECT_EQ(ASCIIToUTF16(""), s2.ColumnString16(2));
+ EXPECT_EQ(ASCIIToUTF16("Smith"), s2.ColumnString16(3));
+
+ // Dave Smith (Part 2).
+ ASSERT_TRUE(s2.Step());
+ EXPECT_EQ("722DF5C4-F74A-294A-46F0-31FFDED0D635", s2.ColumnString(0));
+ EXPECT_EQ(ASCIIToUTF16("Dave"), s2.ColumnString16(1));
+ EXPECT_EQ(ASCIIToUTF16(""), s2.ColumnString16(2));
+ EXPECT_EQ(ASCIIToUTF16("Smith"), s2.ColumnString16(3));
+
+ // Alfred E Newman.
+ ASSERT_TRUE(s2.Step());
+ EXPECT_EQ("584282AC-5D21-8D73-A2DB-4F892EF61F3F", s2.ColumnString(0));
+ EXPECT_EQ(ASCIIToUTF16("Alfred"), s2.ColumnString16(1));
+ EXPECT_EQ(ASCIIToUTF16("E"), s2.ColumnString16(2));
+ EXPECT_EQ(ASCIIToUTF16("Newman"), s2.ColumnString16(3));
+
+ // Note no name for 3 Main St.
+
+ // Should be all.
+ EXPECT_FALSE(s2.Step());
+
+ sql::Statement s3(
+ connection.GetUniqueStatement(
+ "SELECT guid, email "
+ "FROM autofill_profile_emails"));
+
+ // John Doe.
+ ASSERT_TRUE(s3.Step());
+ EXPECT_EQ("00580526-FF81-EE2A-0546-1AC593A32E2F", s3.ColumnString(0));
+ EXPECT_EQ(ASCIIToUTF16("john@doe.com"), s3.ColumnString16(1));
+
+ // John P. Doe.
+ ASSERT_TRUE(s3.Step());
+ EXPECT_EQ("589636FD-9037-3053-200C-80ABC97D7344", s3.ColumnString(0));
+ EXPECT_EQ(ASCIIToUTF16("john@doe.com"), s3.ColumnString16(1));
+
+ // Note no email for 2 Main Street.
+ // Note no email for 2 Main St.
+
+ // Alfred E Newman.
+ ASSERT_TRUE(s3.Step());
+ EXPECT_EQ("584282AC-5D21-8D73-A2DB-4F892EF61F3F", s3.ColumnString(0));
+ EXPECT_EQ(ASCIIToUTF16("a@e.com"), s3.ColumnString16(1));
+
+ // Note no email for 3 Main St.
+
+ // Should be all.
+ EXPECT_FALSE(s3.Step());
+
+ sql::Statement s4(
+ connection.GetUniqueStatement(
+ "SELECT guid, type, number "
+ "FROM autofill_profile_phones"));
+
+ // John Doe phone.
+ ASSERT_TRUE(s4.Step());
+ EXPECT_EQ("00580526-FF81-EE2A-0546-1AC593A32E2F", s4.ColumnString(0));
+ EXPECT_EQ(0, s4.ColumnInt(1)); // 0 means phone.
+ EXPECT_EQ(ASCIIToUTF16("4151112222"), s4.ColumnString16(2));
+
+ // John Doe fax.
+ ASSERT_TRUE(s4.Step());
+ EXPECT_EQ("00580526-FF81-EE2A-0546-1AC593A32E2F", s4.ColumnString(0));
+ EXPECT_EQ(1, s4.ColumnInt(1)); // 1 means phone.
+ EXPECT_EQ(ASCIIToUTF16("4153334444"), s4.ColumnString16(2));
+
+ // John P. Doe phone.
+ ASSERT_TRUE(s4.Step());
+ EXPECT_EQ("589636FD-9037-3053-200C-80ABC97D7344", s4.ColumnString(0));
+ EXPECT_EQ(0, s4.ColumnInt(1)); // 0 means phone.
+ EXPECT_EQ(ASCIIToUTF16("4151112222"), s4.ColumnString16(2));
+
+ // John P. Doe fax.
+ ASSERT_TRUE(s4.Step());
+ EXPECT_EQ("589636FD-9037-3053-200C-80ABC97D7344", s4.ColumnString(0));
+ EXPECT_EQ(1, s4.ColumnInt(1)); // 1 means fax.
+ EXPECT_EQ(ASCIIToUTF16("4153334444"), s4.ColumnString16(2));
+
+ // Note no phone or fax for 2 Main Street.
+ // Note no phone or fax for 2 Main St.
+ // Note no phone or fax for Alfred E Newman.
+ // Note no phone or fax for 3 Main St.
+
+ // Should be all.
+ EXPECT_FALSE(s4.Step());
+ }
+}