Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
| 8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
| 9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
| 10 #include "base/time.h" | 10 #include "base/time.h" |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 132 TEST_F(AutofillTableTest, Autofill) { | 132 TEST_F(AutofillTableTest, Autofill) { |
| 133 WebDatabase db; | 133 WebDatabase db; |
| 134 | 134 |
| 135 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); | 135 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); |
| 136 | 136 |
| 137 Time t1 = Time::Now(); | 137 Time t1 = Time::Now(); |
| 138 | 138 |
| 139 // Simulate the submission of a handful of entries in a field called "Name", | 139 // Simulate the submission of a handful of entries in a field called "Name", |
| 140 // some more often than others. | 140 // some more often than others. |
| 141 AutofillChangeList changes; | 141 AutofillChangeList changes; |
| 142 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue( | 142 FormField field; |
| 143 FormField(string16(), | 143 field.name = ASCIIToUTF16("Name"); |
| 144 ASCIIToUTF16("Name"), | 144 field.value = ASCIIToUTF16("Superman"); |
| 145 ASCIIToUTF16("Superman"), | 145 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue(field, &changes)); |
| 146 string16(), | |
| 147 0, | |
| 148 false), | |
| 149 &changes)); | |
| 150 std::vector<string16> v; | 146 std::vector<string16> v; |
| 151 for (int i = 0; i < 5; i++) { | 147 for (int i = 0; i < 5; i++) { |
| 152 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue( | 148 field.value = ASCIIToUTF16("Clark Kent"); |
| 153 FormField(string16(), | 149 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue(field, &changes)); |
| 154 ASCIIToUTF16("Name"), | |
| 155 ASCIIToUTF16("Clark Kent"), | |
| 156 string16(), | |
| 157 0, | |
| 158 false), | |
| 159 &changes)); | |
| 160 } | 150 } |
| 161 for (int i = 0; i < 3; i++) { | 151 for (int i = 0; i < 3; i++) { |
| 162 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue( | 152 field.value = ASCIIToUTF16("Clark Sutter"); |
| 163 FormField(string16(), | 153 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue(field, &changes)); |
| 164 ASCIIToUTF16("Name"), | |
| 165 ASCIIToUTF16("Clark Sutter"), | |
| 166 string16(), | |
| 167 0, | |
| 168 false), | |
| 169 &changes)); | |
| 170 } | 154 } |
| 171 for (int i = 0; i < 2; i++) { | 155 for (int i = 0; i < 2; i++) { |
| 172 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue( | 156 field.name = ASCIIToUTF16("Favorite Color"); |
| 173 FormField(string16(), | 157 field.value = ASCIIToUTF16("Green"); |
| 174 ASCIIToUTF16("Favorite Color"), | 158 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue(field, &changes)); |
| 175 ASCIIToUTF16("Green"), | |
| 176 string16(), | |
| 177 0, | |
| 178 false), | |
| 179 &changes)); | |
| 180 } | 159 } |
| 181 | 160 |
| 182 int count = 0; | 161 int count = 0; |
| 183 int64 pair_id = 0; | 162 int64 pair_id = 0; |
| 184 | 163 |
| 185 // We have added the name Clark Kent 5 times, so count should be 5 and pair_id | 164 // We have added the name Clark Kent 5 times, so count should be 5 and pair_id |
| 186 // should be somthing non-zero. | 165 // should be somthing non-zero. |
| 187 EXPECT_TRUE(db.GetAutofillTable()->GetIDAndCountOfFormElement( | 166 field.name = ASCIIToUTF16("Name"); |
| 188 FormField(string16(), | 167 field.value = ASCIIToUTF16("Clark Kent"); |
| 189 ASCIIToUTF16("Name"), | 168 EXPECT_TRUE(db.GetAutofillTable()->GetIDAndCountOfFormElement(field, &pair_id, |
| 190 ASCIIToUTF16("Clark Kent"), | 169 &count)); |
| 191 string16(), | |
| 192 0, | |
| 193 false), | |
| 194 &pair_id, &count)); | |
| 195 EXPECT_EQ(5, count); | 170 EXPECT_EQ(5, count); |
| 196 EXPECT_NE(0, pair_id); | 171 EXPECT_NE(0, pair_id); |
| 197 | 172 |
| 198 // Storing in the data base should be case sensitive, so there should be no | 173 // Storing in the data base should be case sensitive, so there should be no |
| 199 // database entry for clark kent lowercase. | 174 // database entry for clark kent lowercase. |
| 200 EXPECT_TRUE(db.GetAutofillTable()->GetIDAndCountOfFormElement( | 175 field.value = ASCIIToUTF16("clark kent"); |
| 201 FormField(string16(), | 176 EXPECT_TRUE(db.GetAutofillTable()->GetIDAndCountOfFormElement(field, &pair_id, |
| 202 ASCIIToUTF16("Name"), | 177 &count)); |
| 203 ASCIIToUTF16("clark kent"), | |
| 204 string16(), | |
| 205 0, | |
| 206 false), | |
| 207 &pair_id, &count)); | |
| 208 EXPECT_EQ(0, count); | 178 EXPECT_EQ(0, count); |
| 209 | 179 |
| 210 EXPECT_TRUE(db.GetAutofillTable()->GetIDAndCountOfFormElement( | 180 field.name = ASCIIToUTF16("Favorite Color"); |
| 211 FormField(string16(), | 181 field.value = ASCIIToUTF16("Green"); |
| 212 ASCIIToUTF16("Favorite Color"), | 182 EXPECT_TRUE(db.GetAutofillTable()->GetIDAndCountOfFormElement(field, &pair_id, |
| 213 ASCIIToUTF16("Green"), | 183 &count)); |
| 214 string16(), | |
| 215 0, | |
| 216 false), | |
| 217 &pair_id, &count)); | |
| 218 EXPECT_EQ(2, count); | 184 EXPECT_EQ(2, count); |
| 219 | 185 |
| 220 // This is meant to get a list of suggestions for Name. The empty prefix | 186 // This is meant to get a list of suggestions for Name. The empty prefix |
| 221 // in the second argument means it should return all suggestions for a name | 187 // in the second argument means it should return all suggestions for a name |
| 222 // no matter what they start with. The order that the names occur in the list | 188 // no matter what they start with. The order that the names occur in the list |
| 223 // should be decreasing order by count. | 189 // should be decreasing order by count. |
| 224 EXPECT_TRUE(db.GetAutofillTable()->GetFormValuesForElementName( | 190 EXPECT_TRUE(db.GetAutofillTable()->GetFormValuesForElementName( |
| 225 ASCIIToUTF16("Name"), string16(), &v, 6)); | 191 ASCIIToUTF16("Name"), string16(), &v, 6)); |
| 226 EXPECT_EQ(3U, v.size()); | 192 EXPECT_EQ(3U, v.size()); |
| 227 if (v.size() == 3) { | 193 if (v.size() == 3) { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 267 ASCIIToUTF16("Clark Sutter"))), | 233 ASCIIToUTF16("Clark Sutter"))), |
| 268 AutofillChange(AutofillChange::REMOVE, | 234 AutofillChange(AutofillChange::REMOVE, |
| 269 AutofillKey(ASCIIToUTF16("Favorite Color"), | 235 AutofillKey(ASCIIToUTF16("Favorite Color"), |
| 270 ASCIIToUTF16("Green"))), | 236 ASCIIToUTF16("Green"))), |
| 271 }; | 237 }; |
| 272 EXPECT_EQ(arraysize(expected_changes), changes.size()); | 238 EXPECT_EQ(arraysize(expected_changes), changes.size()); |
| 273 for (size_t i = 0; i < arraysize(expected_changes); i++) { | 239 for (size_t i = 0; i < arraysize(expected_changes); i++) { |
| 274 EXPECT_EQ(expected_changes[i], changes[i]); | 240 EXPECT_EQ(expected_changes[i], changes[i]); |
| 275 } | 241 } |
| 276 | 242 |
| 277 EXPECT_TRUE(db.GetAutofillTable()->GetIDAndCountOfFormElement( | 243 field.name = ASCIIToUTF16("Name"); |
| 278 FormField(string16(), | 244 field.value = ASCIIToUTF16("Clark Kent"); |
| 279 ASCIIToUTF16("Name"), | 245 EXPECT_TRUE(db.GetAutofillTable()->GetIDAndCountOfFormElement(field, &pair_id, |
| 280 ASCIIToUTF16("Clark Kent"), | 246 &count)); |
| 281 string16(), | |
| 282 0, | |
| 283 false), | |
| 284 &pair_id, &count)); | |
| 285 EXPECT_EQ(0, count); | 247 EXPECT_EQ(0, count); |
| 286 | 248 |
| 287 EXPECT_TRUE(db.GetAutofillTable()->GetFormValuesForElementName( | 249 EXPECT_TRUE(db.GetAutofillTable()->GetFormValuesForElementName( |
| 288 ASCIIToUTF16("Name"), string16(), &v, 6)); | 250 ASCIIToUTF16("Name"), string16(), &v, 6)); |
| 289 EXPECT_EQ(0U, v.size()); | 251 EXPECT_EQ(0U, v.size()); |
| 290 | 252 |
| 291 // Now add some values with empty strings. | 253 // Now add some values with empty strings. |
| 292 const string16 kValue = ASCIIToUTF16(" toto "); | 254 const string16 kValue = ASCIIToUTF16(" toto "); |
| 293 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue( | 255 field.name = ASCIIToUTF16("blank"); |
| 294 FormField(string16(), | 256 field.value = string16(); |
| 295 ASCIIToUTF16("blank"), | 257 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue(field, &changes)); |
| 296 string16(), | 258 field.name = ASCIIToUTF16("blank"); |
| 297 string16(), | 259 field.value = ASCIIToUTF16(" "); |
| 298 0, | 260 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue(field, &changes)); |
| 299 false), | 261 field.name = ASCIIToUTF16("blank"); |
| 300 &changes)); | 262 field.value = ASCIIToUTF16(" "); |
| 301 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue( | 263 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue(field, &changes)); |
| 302 FormField(string16(), | 264 field.name = ASCIIToUTF16("blank"); |
| 303 ASCIIToUTF16("blank"), | 265 field.value = kValue; |
| 304 ASCIIToUTF16(" "), | 266 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue(field, &changes)); |
| 305 string16(), | |
| 306 0, | |
| 307 false), | |
| 308 &changes)); | |
| 309 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue( | |
| 310 FormField(string16(), | |
| 311 ASCIIToUTF16("blank"), | |
| 312 ASCIIToUTF16(" "), | |
| 313 string16(), | |
| 314 0, | |
| 315 false), | |
| 316 &changes)); | |
| 317 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue( | |
| 318 FormField(string16(), | |
| 319 ASCIIToUTF16("blank"), | |
| 320 kValue, | |
| 321 string16(), | |
| 322 0, | |
| 323 false), | |
| 324 &changes)); | |
| 325 | 267 |
| 326 // They should be stored normally as the DB layer does not check for empty | 268 // They should be stored normally as the DB layer does not check for empty |
| 327 // values. | 269 // values. |
| 328 v.clear(); | 270 v.clear(); |
| 329 EXPECT_TRUE(db.GetAutofillTable()->GetFormValuesForElementName( | 271 EXPECT_TRUE(db.GetAutofillTable()->GetFormValuesForElementName( |
| 330 ASCIIToUTF16("blank"), string16(), &v, 10)); | 272 ASCIIToUTF16("blank"), string16(), &v, 10)); |
| 331 EXPECT_EQ(4U, v.size()); | 273 EXPECT_EQ(4U, v.size()); |
| 332 | 274 |
| 333 // Now we'll check that ClearAutofillEmptyValueElements() works as expected. | 275 // Now we'll check that ClearAutofillEmptyValueElements() works as expected. |
| 334 db.GetAutofillTable()->ClearAutofillEmptyValueElements(); | 276 db.GetAutofillTable()->ClearAutofillEmptyValueElements(); |
| 335 | 277 |
| 336 v.clear(); | 278 v.clear(); |
| 337 EXPECT_TRUE(db.GetAutofillTable()->GetFormValuesForElementName( | 279 EXPECT_TRUE(db.GetAutofillTable()->GetFormValuesForElementName( |
| 338 ASCIIToUTF16("blank"), string16(), &v, 10)); | 280 ASCIIToUTF16("blank"), string16(), &v, 10)); |
| 339 ASSERT_EQ(1U, v.size()); | 281 ASSERT_EQ(1U, v.size()); |
| 340 | 282 |
| 341 EXPECT_EQ(kValue, v[0]); | 283 EXPECT_EQ(kValue, v[0]); |
| 342 } | 284 } |
| 343 | 285 |
| 344 TEST_F(AutofillTableTest, Autofill_RemoveBetweenChanges) { | 286 TEST_F(AutofillTableTest, Autofill_RemoveBetweenChanges) { |
| 345 WebDatabase db; | 287 WebDatabase db; |
| 346 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); | 288 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); |
| 347 | 289 |
| 348 TimeDelta one_day(TimeDelta::FromDays(1)); | 290 TimeDelta one_day(TimeDelta::FromDays(1)); |
| 349 Time t1 = Time::Now(); | 291 Time t1 = Time::Now(); |
| 350 Time t2 = t1 + one_day; | 292 Time t2 = t1 + one_day; |
| 351 | 293 |
| 352 AutofillChangeList changes; | 294 AutofillChangeList changes; |
| 353 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValueTime( | 295 FormField field; |
| 354 FormField(string16(), | 296 field.name = ASCIIToUTF16("Name"); |
| 355 ASCIIToUTF16("Name"), | 297 field.value = ASCIIToUTF16("Superman"); |
| 356 ASCIIToUTF16("Superman"), | 298 EXPECT_TRUE( |
| 357 string16(), | 299 db.GetAutofillTable()->AddFormFieldValueTime(field, &changes, t1)); |
| 358 0, | 300 EXPECT_TRUE( |
| 359 false), | 301 db.GetAutofillTable()->AddFormFieldValueTime(field, &changes, t2)); |
| 360 &changes, | |
| 361 t1)); | |
| 362 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValueTime( | |
| 363 FormField(string16(), | |
| 364 ASCIIToUTF16("Name"), | |
| 365 ASCIIToUTF16("Superman"), | |
| 366 string16(), | |
| 367 0, | |
| 368 false), | |
| 369 &changes, | |
| 370 t2)); | |
| 371 | 302 |
| 372 changes.clear(); | 303 changes.clear(); |
| 373 EXPECT_TRUE(db.GetAutofillTable()->RemoveFormElementsAddedBetween( | 304 EXPECT_TRUE(db.GetAutofillTable()->RemoveFormElementsAddedBetween( |
| 374 t1, t2, &changes)); | 305 t1, t2, &changes)); |
| 375 ASSERT_EQ(1U, changes.size()); | 306 ASSERT_EQ(1U, changes.size()); |
| 376 EXPECT_EQ(AutofillChange(AutofillChange::UPDATE, | 307 EXPECT_EQ(AutofillChange(AutofillChange::UPDATE, |
| 377 AutofillKey(ASCIIToUTF16("Name"), | 308 AutofillKey(ASCIIToUTF16("Name"), |
| 378 ASCIIToUTF16("Superman"))), | 309 ASCIIToUTF16("Superman"))), |
| 379 changes[0]); | 310 changes[0]); |
| 380 changes.clear(); | 311 changes.clear(); |
| 381 | 312 |
| 382 EXPECT_TRUE(db.GetAutofillTable()->RemoveFormElementsAddedBetween( | 313 EXPECT_TRUE(db.GetAutofillTable()->RemoveFormElementsAddedBetween( |
| 383 t2, t2 + one_day, &changes)); | 314 t2, t2 + one_day, &changes)); |
| 384 ASSERT_EQ(1U, changes.size()); | 315 ASSERT_EQ(1U, changes.size()); |
| 385 EXPECT_EQ(AutofillChange(AutofillChange::REMOVE, | 316 EXPECT_EQ(AutofillChange(AutofillChange::REMOVE, |
| 386 AutofillKey(ASCIIToUTF16("Name"), | 317 AutofillKey(ASCIIToUTF16("Name"), |
| 387 ASCIIToUTF16("Superman"))), | 318 ASCIIToUTF16("Superman"))), |
| 388 changes[0]); | 319 changes[0]); |
| 389 } | 320 } |
| 390 | 321 |
| 391 TEST_F(AutofillTableTest, Autofill_AddChanges) { | 322 TEST_F(AutofillTableTest, Autofill_AddChanges) { |
| 392 WebDatabase db; | 323 WebDatabase db; |
| 393 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); | 324 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); |
| 394 | 325 |
| 395 TimeDelta one_day(TimeDelta::FromDays(1)); | 326 TimeDelta one_day(TimeDelta::FromDays(1)); |
| 396 Time t1 = Time::Now(); | 327 Time t1 = Time::Now(); |
| 397 Time t2 = t1 + one_day; | 328 Time t2 = t1 + one_day; |
| 398 | 329 |
| 399 AutofillChangeList changes; | 330 AutofillChangeList changes; |
| 400 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValueTime( | 331 FormField field; |
| 401 FormField(string16(), | 332 field.name = ASCIIToUTF16("Name"); |
| 402 ASCIIToUTF16("Name"), | 333 field.value = ASCIIToUTF16("Superman"); |
| 403 ASCIIToUTF16("Superman"), | 334 EXPECT_TRUE( |
| 404 string16(), | 335 db.GetAutofillTable()->AddFormFieldValueTime(field, &changes, t1)); |
| 405 0, | |
| 406 false), | |
| 407 &changes, | |
| 408 t1)); | |
| 409 ASSERT_EQ(1U, changes.size()); | 336 ASSERT_EQ(1U, changes.size()); |
| 410 EXPECT_EQ(AutofillChange(AutofillChange::ADD, | 337 EXPECT_EQ(AutofillChange(AutofillChange::ADD, |
| 411 AutofillKey(ASCIIToUTF16("Name"), | 338 AutofillKey(ASCIIToUTF16("Name"), |
| 412 ASCIIToUTF16("Superman"))), | 339 ASCIIToUTF16("Superman"))), |
| 413 changes[0]); | 340 changes[0]); |
| 414 | 341 |
| 415 changes.clear(); | 342 changes.clear(); |
| 416 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValueTime( | 343 EXPECT_TRUE( |
| 417 FormField(string16(), | 344 db.GetAutofillTable()->AddFormFieldValueTime(field, &changes, t2)); |
| 418 ASCIIToUTF16("Name"), | |
| 419 ASCIIToUTF16("Superman"), | |
| 420 string16(), | |
| 421 0, | |
| 422 false), | |
| 423 &changes, | |
| 424 t2)); | |
| 425 ASSERT_EQ(1U, changes.size()); | 345 ASSERT_EQ(1U, changes.size()); |
| 426 EXPECT_EQ(AutofillChange(AutofillChange::UPDATE, | 346 EXPECT_EQ(AutofillChange(AutofillChange::UPDATE, |
| 427 AutofillKey(ASCIIToUTF16("Name"), | 347 AutofillKey(ASCIIToUTF16("Name"), |
| 428 ASCIIToUTF16("Superman"))), | 348 ASCIIToUTF16("Superman"))), |
| 429 changes[0]); | 349 changes[0]); |
| 430 } | 350 } |
| 431 | 351 |
| 432 TEST_F(AutofillTableTest, Autofill_UpdateOneWithOneTimestamp) { | 352 TEST_F(AutofillTableTest, Autofill_UpdateOneWithOneTimestamp) { |
| 433 WebDatabase db; | 353 WebDatabase db; |
| 434 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); | 354 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); |
| 435 | 355 |
| 436 AutofillEntry entry(MakeAutofillEntry("foo", "bar", 1, -1)); | 356 AutofillEntry entry(MakeAutofillEntry("foo", "bar", 1, -1)); |
| 437 std::vector<AutofillEntry> entries; | 357 std::vector<AutofillEntry> entries; |
| 438 entries.push_back(entry); | 358 entries.push_back(entry); |
| 439 ASSERT_TRUE(db.GetAutofillTable()->UpdateAutofillEntries(entries)); | 359 ASSERT_TRUE(db.GetAutofillTable()->UpdateAutofillEntries(entries)); |
| 440 | 360 |
| 441 FormField field(string16(), | 361 FormField field; |
| 442 ASCIIToUTF16("foo"), | 362 field.name = ASCIIToUTF16("foo"); |
| 443 ASCIIToUTF16("bar"), | 363 field.value = ASCIIToUTF16("bar"); |
| 444 string16(), | |
| 445 0, | |
| 446 false); | |
| 447 int64 pair_id; | 364 int64 pair_id; |
| 448 int count; | 365 int count; |
| 449 ASSERT_TRUE(db.GetAutofillTable()->GetIDAndCountOfFormElement( | 366 ASSERT_TRUE(db.GetAutofillTable()->GetIDAndCountOfFormElement( |
| 450 field, &pair_id, &count)); | 367 field, &pair_id, &count)); |
| 451 EXPECT_LE(0, pair_id); | 368 EXPECT_LE(0, pair_id); |
| 452 EXPECT_EQ(1, count); | 369 EXPECT_EQ(1, count); |
| 453 | 370 |
| 454 std::vector<AutofillEntry> all_entries; | 371 std::vector<AutofillEntry> all_entries; |
| 455 ASSERT_TRUE(db.GetAutofillTable()->GetAllAutofillEntries(&all_entries)); | 372 ASSERT_TRUE(db.GetAutofillTable()->GetAllAutofillEntries(&all_entries)); |
| 456 ASSERT_EQ(1U, all_entries.size()); | 373 ASSERT_EQ(1U, all_entries.size()); |
| 457 EXPECT_TRUE(entry == all_entries[0]); | 374 EXPECT_TRUE(entry == all_entries[0]); |
| 458 } | 375 } |
| 459 | 376 |
| 460 TEST_F(AutofillTableTest, Autofill_UpdateOneWithTwoTimestamps) { | 377 TEST_F(AutofillTableTest, Autofill_UpdateOneWithTwoTimestamps) { |
| 461 WebDatabase db; | 378 WebDatabase db; |
| 462 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); | 379 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); |
| 463 | 380 |
| 464 AutofillEntry entry(MakeAutofillEntry("foo", "bar", 1, 2)); | 381 AutofillEntry entry(MakeAutofillEntry("foo", "bar", 1, 2)); |
| 465 std::vector<AutofillEntry> entries; | 382 std::vector<AutofillEntry> entries; |
| 466 entries.push_back(entry); | 383 entries.push_back(entry); |
| 467 ASSERT_TRUE(db.GetAutofillTable()->UpdateAutofillEntries(entries)); | 384 ASSERT_TRUE(db.GetAutofillTable()->UpdateAutofillEntries(entries)); |
| 468 | 385 |
| 469 FormField field(string16(), | 386 FormField field; |
| 470 ASCIIToUTF16("foo"), | 387 field.name = ASCIIToUTF16("foo"); |
| 471 ASCIIToUTF16("bar"), | 388 field.value = ASCIIToUTF16("bar"); |
| 472 string16(), | |
| 473 0, | |
| 474 false); | |
| 475 int64 pair_id; | 389 int64 pair_id; |
| 476 int count; | 390 int count; |
| 477 ASSERT_TRUE(db.GetAutofillTable()->GetIDAndCountOfFormElement( | 391 ASSERT_TRUE(db.GetAutofillTable()->GetIDAndCountOfFormElement( |
| 478 field, &pair_id, &count)); | 392 field, &pair_id, &count)); |
| 479 EXPECT_LE(0, pair_id); | 393 EXPECT_LE(0, pair_id); |
| 480 EXPECT_EQ(2, count); | 394 EXPECT_EQ(2, count); |
| 481 | 395 |
| 482 std::vector<AutofillEntry> all_entries; | 396 std::vector<AutofillEntry> all_entries; |
| 483 ASSERT_TRUE(db.GetAutofillTable()->GetAllAutofillEntries(&all_entries)); | 397 ASSERT_TRUE(db.GetAutofillTable()->GetAllAutofillEntries(&all_entries)); |
| 484 ASSERT_EQ(1U, all_entries.size()); | 398 ASSERT_EQ(1U, all_entries.size()); |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 507 WebDatabase db; | 421 WebDatabase db; |
| 508 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); | 422 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); |
| 509 | 423 |
| 510 AutofillEntry entry0(MakeAutofillEntry("foo", "bar0", 1, -1)); | 424 AutofillEntry entry0(MakeAutofillEntry("foo", "bar0", 1, -1)); |
| 511 AutofillEntry entry1(MakeAutofillEntry("foo", "bar1", 2, 3)); | 425 AutofillEntry entry1(MakeAutofillEntry("foo", "bar1", 2, 3)); |
| 512 std::vector<AutofillEntry> entries; | 426 std::vector<AutofillEntry> entries; |
| 513 entries.push_back(entry0); | 427 entries.push_back(entry0); |
| 514 entries.push_back(entry1); | 428 entries.push_back(entry1); |
| 515 ASSERT_TRUE(db.GetAutofillTable()->UpdateAutofillEntries(entries)); | 429 ASSERT_TRUE(db.GetAutofillTable()->UpdateAutofillEntries(entries)); |
| 516 | 430 |
| 517 FormField field0(string16(), | 431 FormField field0; |
| 518 ASCIIToUTF16("foo"), | 432 field0.name = ASCIIToUTF16("foo"); |
| 519 ASCIIToUTF16("bar0"), | 433 field0.value = ASCIIToUTF16("bar0"); |
| 520 string16(), | |
| 521 0, | |
| 522 false); | |
| 523 int64 pair_id; | 434 int64 pair_id; |
| 524 int count; | 435 int count; |
| 525 ASSERT_TRUE(db.GetAutofillTable()->GetIDAndCountOfFormElement( | 436 ASSERT_TRUE(db.GetAutofillTable()->GetIDAndCountOfFormElement( |
| 526 field0, &pair_id, &count)); | 437 field0, &pair_id, &count)); |
| 527 EXPECT_LE(0, pair_id); | 438 EXPECT_LE(0, pair_id); |
| 528 EXPECT_EQ(1, count); | 439 EXPECT_EQ(1, count); |
| 529 | 440 |
| 530 FormField field1(string16(), | 441 FormField field1; |
| 531 ASCIIToUTF16("foo"), | 442 field1.name = ASCIIToUTF16("foo"); |
| 532 ASCIIToUTF16("bar1"), | 443 field1.value = ASCIIToUTF16("bar1"); |
| 533 string16(), | |
| 534 0, | |
| 535 false); | |
| 536 ASSERT_TRUE(db.GetAutofillTable()->GetIDAndCountOfFormElement( | 444 ASSERT_TRUE(db.GetAutofillTable()->GetIDAndCountOfFormElement( |
| 537 field1, &pair_id, &count)); | 445 field1, &pair_id, &count)); |
| 538 EXPECT_LE(0, pair_id); | 446 EXPECT_LE(0, pair_id); |
| 539 EXPECT_EQ(2, count); | 447 EXPECT_EQ(2, count); |
| 540 } | 448 } |
| 541 | 449 |
| 542 TEST_F(AutofillTableTest, Autofill_UpdateReplace) { | 450 TEST_F(AutofillTableTest, Autofill_UpdateReplace) { |
| 543 WebDatabase db; | 451 WebDatabase db; |
| 544 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); | 452 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); |
| 545 | 453 |
| 546 AutofillChangeList changes; | 454 AutofillChangeList changes; |
| 547 // Add a form field. This will be replaced. | 455 // Add a form field. This will be replaced. |
| 548 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue( | 456 FormField field; |
| 549 FormField(string16(), | 457 field.name = ASCIIToUTF16("Name"); |
| 550 ASCIIToUTF16("Name"), | 458 field.value = ASCIIToUTF16("Superman"); |
| 551 ASCIIToUTF16("Superman"), | 459 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValue(field, &changes)); |
| 552 string16(), | |
| 553 0, | |
| 554 false), | |
| 555 &changes)); | |
| 556 | 460 |
| 557 AutofillEntry entry(MakeAutofillEntry("Name", "Superman", 1, 2)); | 461 AutofillEntry entry(MakeAutofillEntry("Name", "Superman", 1, 2)); |
| 558 std::vector<AutofillEntry> entries; | 462 std::vector<AutofillEntry> entries; |
| 559 entries.push_back(entry); | 463 entries.push_back(entry); |
| 560 ASSERT_TRUE(db.GetAutofillTable()->UpdateAutofillEntries(entries)); | 464 ASSERT_TRUE(db.GetAutofillTable()->UpdateAutofillEntries(entries)); |
| 561 | 465 |
| 562 std::vector<AutofillEntry> all_entries; | 466 std::vector<AutofillEntry> all_entries; |
| 563 ASSERT_TRUE(db.GetAutofillTable()->GetAllAutofillEntries(&all_entries)); | 467 ASSERT_TRUE(db.GetAutofillTable()->GetAllAutofillEntries(&all_entries)); |
| 564 ASSERT_EQ(1U, all_entries.size()); | 468 ASSERT_EQ(1U, all_entries.size()); |
| 565 EXPECT_TRUE(entry == all_entries[0]); | 469 EXPECT_TRUE(entry == all_entries[0]); |
| 566 } | 470 } |
| 567 | 471 |
| 568 TEST_F(AutofillTableTest, Autofill_UpdateDontReplace) { | 472 TEST_F(AutofillTableTest, Autofill_UpdateDontReplace) { |
| 569 WebDatabase db; | 473 WebDatabase db; |
| 570 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); | 474 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); |
| 571 | 475 |
| 572 Time t = Time::Now(); | 476 Time t = Time::Now(); |
| 573 AutofillEntry existing( | 477 AutofillEntry existing( |
| 574 MakeAutofillEntry("Name", "Superman", t.ToTimeT(), -1)); | 478 MakeAutofillEntry("Name", "Superman", t.ToTimeT(), -1)); |
| 575 | 479 |
| 576 AutofillChangeList changes; | 480 AutofillChangeList changes; |
| 577 // Add a form field. This will NOT be replaced. | 481 // Add a form field. This will NOT be replaced. |
| 578 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValueTime( | 482 FormField field; |
| 579 FormField(string16(), | 483 field.name = existing.key().name(); |
| 580 existing.key().name(), | 484 field.value = existing.key().value(); |
| 581 existing.key().value(), | 485 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValueTime(field, &changes, t)); |
| 582 string16(), | |
| 583 0, | |
| 584 false), | |
| 585 &changes, | |
| 586 t)); | |
| 587 AutofillEntry entry(MakeAutofillEntry("Name", "Clark Kent", 1, 2)); | 486 AutofillEntry entry(MakeAutofillEntry("Name", "Clark Kent", 1, 2)); |
| 588 std::vector<AutofillEntry> entries; | 487 std::vector<AutofillEntry> entries; |
| 589 entries.push_back(entry); | 488 entries.push_back(entry); |
| 590 ASSERT_TRUE(db.GetAutofillTable()->UpdateAutofillEntries(entries)); | 489 ASSERT_TRUE(db.GetAutofillTable()->UpdateAutofillEntries(entries)); |
| 591 | 490 |
| 592 std::vector<AutofillEntry> all_entries; | 491 std::vector<AutofillEntry> all_entries; |
| 593 ASSERT_TRUE(db.GetAutofillTable()->GetAllAutofillEntries(&all_entries)); | 492 ASSERT_TRUE(db.GetAutofillTable()->GetAllAutofillEntries(&all_entries)); |
| 594 ASSERT_EQ(2U, all_entries.size()); | 493 ASSERT_EQ(2U, all_entries.size()); |
| 595 AutofillEntrySet expected_entries(all_entries.begin(), | 494 AutofillEntrySet expected_entries(all_entries.begin(), |
| 596 all_entries.end(), | 495 all_entries.end(), |
| 597 CompareAutofillEntries); | 496 CompareAutofillEntries); |
| 598 EXPECT_EQ(1U, expected_entries.count(existing)); | 497 EXPECT_EQ(1U, expected_entries.count(existing)); |
| 599 EXPECT_EQ(1U, expected_entries.count(entry)); | 498 EXPECT_EQ(1U, expected_entries.count(entry)); |
| 600 } | 499 } |
| 601 | 500 |
| 602 TEST_F(AutofillTableTest, Autofill_AddFormFieldValues) { | 501 TEST_F(AutofillTableTest, Autofill_AddFormFieldValues) { |
| 603 WebDatabase db; | 502 WebDatabase db; |
| 604 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); | 503 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); |
| 605 | 504 |
| 606 Time t = Time::Now(); | 505 Time t = Time::Now(); |
| 607 | 506 |
| 608 // Add multiple values for "firstname" and "lastname" names. Test that only | 507 // Add multiple values for "firstname" and "lastname" names. Test that only |
| 609 // first value of each gets added. Related to security issue: | 508 // first value of each gets added. Related to security issue: |
| 610 // http://crbug.com/51727. | 509 // http://crbug.com/51727. |
| 611 std::vector<FormField> elements; | 510 std::vector<FormField> elements; |
| 612 elements.push_back(FormField(string16(), | 511 FormField field; |
|
dhollowa
2011/08/08 21:40:39
nit: Again, some visual separation would be helpfu
Ilya Sherman
2011/08/09 00:13:43
Done.
| |
| 613 ASCIIToUTF16("firstname"), | 512 field.name = ASCIIToUTF16("firstname"); |
| 614 ASCIIToUTF16("Joe"), | 513 field.value = ASCIIToUTF16("Joe"); |
| 615 string16(), | 514 elements.push_back(field); |
| 616 0, | 515 field.name = ASCIIToUTF16("firstname"); |
| 617 false)); | 516 field.value = ASCIIToUTF16("Jane"); |
| 618 elements.push_back(FormField(string16(), | 517 elements.push_back(field); |
| 619 ASCIIToUTF16("firstname"), | 518 field.name = ASCIIToUTF16("lastname"); |
| 620 ASCIIToUTF16("Jane"), | 519 field.value = ASCIIToUTF16("Smith"); |
| 621 string16(), | 520 elements.push_back(field); |
| 622 0, | 521 field.name = ASCIIToUTF16("lastname"); |
| 623 false)); | 522 field.value = ASCIIToUTF16("Jones"); |
| 624 elements.push_back(FormField(string16(), | 523 elements.push_back(field); |
| 625 ASCIIToUTF16("lastname"), | |
| 626 ASCIIToUTF16("Smith"), | |
| 627 string16(), | |
| 628 0, | |
| 629 false)); | |
| 630 elements.push_back(FormField(string16(), | |
| 631 ASCIIToUTF16("lastname"), | |
| 632 ASCIIToUTF16("Jones"), | |
| 633 string16(), | |
| 634 0, | |
| 635 false)); | |
| 636 | 524 |
| 637 std::vector<AutofillChange> changes; | 525 std::vector<AutofillChange> changes; |
| 638 db.GetAutofillTable()->AddFormFieldValuesTime(elements, &changes, t); | 526 db.GetAutofillTable()->AddFormFieldValuesTime(elements, &changes, t); |
| 639 | 527 |
| 640 ASSERT_EQ(2U, changes.size()); | 528 ASSERT_EQ(2U, changes.size()); |
| 641 EXPECT_EQ(changes[0], AutofillChange(AutofillChange::ADD, | 529 EXPECT_EQ(changes[0], AutofillChange(AutofillChange::ADD, |
| 642 AutofillKey(ASCIIToUTF16("firstname"), | 530 AutofillKey(ASCIIToUTF16("firstname"), |
| 643 ASCIIToUTF16("Joe")))); | 531 ASCIIToUTF16("Joe")))); |
| 644 EXPECT_EQ(changes[1], AutofillChange(AutofillChange::ADD, | 532 EXPECT_EQ(changes[1], AutofillChange(AutofillChange::ADD, |
| 645 AutofillKey(ASCIIToUTF16("lastname"), | 533 AutofillKey(ASCIIToUTF16("lastname"), |
| (...skipping 809 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1455 TEST_F(AutofillTableTest, Autofill_GetAllAutofillEntries_OneResult) { | 1343 TEST_F(AutofillTableTest, Autofill_GetAllAutofillEntries_OneResult) { |
| 1456 WebDatabase db; | 1344 WebDatabase db; |
| 1457 | 1345 |
| 1458 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); | 1346 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); |
| 1459 | 1347 |
| 1460 AutofillChangeList changes; | 1348 AutofillChangeList changes; |
| 1461 std::map<std::string, std::vector<Time> > name_value_times_map; | 1349 std::map<std::string, std::vector<Time> > name_value_times_map; |
| 1462 | 1350 |
| 1463 time_t start = 0; | 1351 time_t start = 0; |
| 1464 std::vector<Time> timestamps1; | 1352 std::vector<Time> timestamps1; |
| 1465 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValueTime( | 1353 FormField field; |
| 1466 FormField(string16(), | 1354 field.name = ASCIIToUTF16("Name"); |
| 1467 ASCIIToUTF16("Name"), | 1355 field.value = ASCIIToUTF16("Superman"); |
| 1468 ASCIIToUTF16("Superman"), | 1356 EXPECT_TRUE( |
| 1469 string16(), | 1357 db.GetAutofillTable()->AddFormFieldValueTime(field, &changes, |
| 1470 0, | 1358 Time::FromTimeT(start))); |
| 1471 false), | |
| 1472 &changes, | |
| 1473 Time::FromTimeT(start))); | |
| 1474 timestamps1.push_back(Time::FromTimeT(start)); | 1359 timestamps1.push_back(Time::FromTimeT(start)); |
| 1475 std::string key1("NameSuperman"); | 1360 std::string key1("NameSuperman"); |
| 1476 name_value_times_map.insert(std::pair<std::string, | 1361 name_value_times_map.insert(std::pair<std::string, |
| 1477 std::vector<Time> > (key1, timestamps1)); | 1362 std::vector<Time> > (key1, timestamps1)); |
| 1478 | 1363 |
| 1479 AutofillEntrySet expected_entries(CompareAutofillEntries); | 1364 AutofillEntrySet expected_entries(CompareAutofillEntries); |
| 1480 AutofillKey ak1(ASCIIToUTF16("Name"), ASCIIToUTF16("Superman")); | 1365 AutofillKey ak1(ASCIIToUTF16("Name"), ASCIIToUTF16("Superman")); |
| 1481 AutofillEntry ae1(ak1, timestamps1); | 1366 AutofillEntry ae1(ak1, timestamps1); |
| 1482 | 1367 |
| 1483 expected_entries.insert(ae1); | 1368 expected_entries.insert(ae1); |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 1500 TEST_F(AutofillTableTest, Autofill_GetAllAutofillEntries_TwoDistinct) { | 1385 TEST_F(AutofillTableTest, Autofill_GetAllAutofillEntries_TwoDistinct) { |
| 1501 WebDatabase db; | 1386 WebDatabase db; |
| 1502 | 1387 |
| 1503 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); | 1388 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); |
| 1504 | 1389 |
| 1505 AutofillChangeList changes; | 1390 AutofillChangeList changes; |
| 1506 std::map<std::string, std::vector<Time> > name_value_times_map; | 1391 std::map<std::string, std::vector<Time> > name_value_times_map; |
| 1507 time_t start = 0; | 1392 time_t start = 0; |
| 1508 | 1393 |
| 1509 std::vector<Time> timestamps1; | 1394 std::vector<Time> timestamps1; |
| 1510 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValueTime( | 1395 FormField field; |
| 1511 FormField(string16(), | 1396 field.name = ASCIIToUTF16("Name"); |
| 1512 ASCIIToUTF16("Name"), | 1397 field.value = ASCIIToUTF16("Superman"); |
| 1513 ASCIIToUTF16("Superman"), | 1398 EXPECT_TRUE( |
| 1514 string16(), | 1399 db.GetAutofillTable()->AddFormFieldValueTime(field, &changes, |
| 1515 0, | 1400 Time::FromTimeT(start))); |
| 1516 false), | |
| 1517 &changes, | |
| 1518 Time::FromTimeT(start))); | |
| 1519 timestamps1.push_back(Time::FromTimeT(start)); | 1401 timestamps1.push_back(Time::FromTimeT(start)); |
| 1520 std::string key1("NameSuperman"); | 1402 std::string key1("NameSuperman"); |
| 1521 name_value_times_map.insert(std::pair<std::string, | 1403 name_value_times_map.insert(std::pair<std::string, |
| 1522 std::vector<Time> > (key1, timestamps1)); | 1404 std::vector<Time> > (key1, timestamps1)); |
| 1523 | 1405 |
| 1524 start++; | 1406 start++; |
| 1525 std::vector<Time> timestamps2; | 1407 std::vector<Time> timestamps2; |
| 1526 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValueTime( | 1408 field.name = ASCIIToUTF16("Name"); |
| 1527 FormField(string16(), | 1409 field.value = ASCIIToUTF16("Clark Kent"); |
| 1528 ASCIIToUTF16("Name"), | 1410 EXPECT_TRUE( |
| 1529 ASCIIToUTF16("Clark Kent"), | 1411 db.GetAutofillTable()->AddFormFieldValueTime(field, &changes, |
| 1530 string16(), | 1412 Time::FromTimeT(start))); |
| 1531 0, | |
| 1532 false), | |
| 1533 &changes, | |
| 1534 Time::FromTimeT(start))); | |
| 1535 timestamps2.push_back(Time::FromTimeT(start)); | 1413 timestamps2.push_back(Time::FromTimeT(start)); |
| 1536 std::string key2("NameClark Kent"); | 1414 std::string key2("NameClark Kent"); |
| 1537 name_value_times_map.insert(std::pair<std::string, | 1415 name_value_times_map.insert(std::pair<std::string, |
| 1538 std::vector<Time> > (key2, timestamps2)); | 1416 std::vector<Time> > (key2, timestamps2)); |
| 1539 | 1417 |
| 1540 AutofillEntrySet expected_entries(CompareAutofillEntries); | 1418 AutofillEntrySet expected_entries(CompareAutofillEntries); |
| 1541 AutofillKey ak1(ASCIIToUTF16("Name"), ASCIIToUTF16("Superman")); | 1419 AutofillKey ak1(ASCIIToUTF16("Name"), ASCIIToUTF16("Superman")); |
| 1542 AutofillKey ak2(ASCIIToUTF16("Name"), ASCIIToUTF16("Clark Kent")); | 1420 AutofillKey ak2(ASCIIToUTF16("Name"), ASCIIToUTF16("Clark Kent")); |
| 1543 AutofillEntry ae1(ak1, timestamps1); | 1421 AutofillEntry ae1(ak1, timestamps1); |
| 1544 AutofillEntry ae2(ak2, timestamps2); | 1422 AutofillEntry ae2(ak2, timestamps2); |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 1565 WebDatabase db; | 1443 WebDatabase db; |
| 1566 | 1444 |
| 1567 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); | 1445 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); |
| 1568 | 1446 |
| 1569 AutofillChangeList changes; | 1447 AutofillChangeList changes; |
| 1570 std::map<std::string, std::vector<Time> > name_value_times_map; | 1448 std::map<std::string, std::vector<Time> > name_value_times_map; |
| 1571 | 1449 |
| 1572 time_t start = 0; | 1450 time_t start = 0; |
| 1573 std::vector<Time> timestamps; | 1451 std::vector<Time> timestamps; |
| 1574 for (int i = 0; i < 2; i++) { | 1452 for (int i = 0; i < 2; i++) { |
| 1575 EXPECT_TRUE(db.GetAutofillTable()->AddFormFieldValueTime( | 1453 FormField field; |
| 1576 FormField(string16(), | 1454 field.name = ASCIIToUTF16("Name"); |
| 1577 ASCIIToUTF16("Name"), | 1455 field.value = ASCIIToUTF16("Superman"); |
| 1578 ASCIIToUTF16("Superman"), | 1456 EXPECT_TRUE( |
| 1579 string16(), | 1457 db.GetAutofillTable()->AddFormFieldValueTime(field, &changes, |
| 1580 0, | 1458 Time::FromTimeT(start))); |
| 1581 false), | |
| 1582 &changes, | |
| 1583 Time::FromTimeT(start))); | |
| 1584 timestamps.push_back(Time::FromTimeT(start)); | 1459 timestamps.push_back(Time::FromTimeT(start)); |
| 1585 start++; | 1460 start++; |
| 1586 } | 1461 } |
| 1587 | 1462 |
| 1588 std::string key("NameSuperman"); | 1463 std::string key("NameSuperman"); |
| 1589 name_value_times_map.insert(std::pair<std::string, | 1464 name_value_times_map.insert(std::pair<std::string, |
| 1590 std::vector<Time> > (key, timestamps)); | 1465 std::vector<Time> > (key, timestamps)); |
| 1591 | 1466 |
| 1592 AutofillEntrySet expected_entries(CompareAutofillEntries); | 1467 AutofillEntrySet expected_entries(CompareAutofillEntries); |
| 1593 AutofillKey ak1(ASCIIToUTF16("Name"), ASCIIToUTF16("Superman")); | 1468 AutofillKey ak1(ASCIIToUTF16("Name"), ASCIIToUTF16("Superman")); |
| 1594 AutofillEntry ae1(ak1, timestamps); | 1469 AutofillEntry ae1(ak1, timestamps); |
| 1595 | 1470 |
| 1596 expected_entries.insert(ae1); | 1471 expected_entries.insert(ae1); |
| 1597 | 1472 |
| 1598 std::vector<AutofillEntry> entries; | 1473 std::vector<AutofillEntry> entries; |
| 1599 ASSERT_TRUE(db.GetAutofillTable()->GetAllAutofillEntries(&entries)); | 1474 ASSERT_TRUE(db.GetAutofillTable()->GetAllAutofillEntries(&entries)); |
| 1600 AutofillEntrySet entry_set(entries.begin(), entries.end(), | 1475 AutofillEntrySet entry_set(entries.begin(), entries.end(), |
| 1601 CompareAutofillEntries); | 1476 CompareAutofillEntries); |
| 1602 | 1477 |
| 1603 // make sure the lists of entries match | 1478 // make sure the lists of entries match |
| 1604 ASSERT_EQ(expected_entries.size(), entry_set.size()); | 1479 ASSERT_EQ(expected_entries.size(), entry_set.size()); |
| 1605 AutofillEntrySetIterator it; | 1480 AutofillEntrySetIterator it; |
| 1606 for (it = entry_set.begin(); it != entry_set.end(); it++) { | 1481 for (it = entry_set.begin(); it != entry_set.end(); it++) { |
| 1607 expected_entries.erase(*it); | 1482 expected_entries.erase(*it); |
| 1608 } | 1483 } |
| 1609 | 1484 |
| 1610 EXPECT_EQ(0U, expected_entries.size()); | 1485 EXPECT_EQ(0U, expected_entries.size()); |
| 1611 } | 1486 } |
| OLD | NEW |