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

Side by Side Diff: chrome/browser/history/expire_history_backend_unittest.cc

Issue 18758: Port some unit tests from chrome/browser/ (Closed)
Patch Set: port the tests Created 11 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/browser.vcproj ('k') | chrome/browser/history/history_publisher.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/compiler_specific.h" 6 #include "base/compiler_specific.h"
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/gfx/jpeg_codec.h" 8 #include "base/gfx/jpeg_codec.h"
9 #include "base/path_service.h" 9 #include "base/path_service.h"
10 #include "base/scoped_ptr.h" 10 #include "base/scoped_ptr.h"
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 // Verify the URL no longer exists. 285 // Verify the URL no longer exists.
286 URLRow temp_row; 286 URLRow temp_row;
287 EXPECT_FALSE(main_db_->GetURLRow(row.id(), &temp_row)); 287 EXPECT_FALSE(main_db_->GetURLRow(row.id(), &temp_row));
288 288
289 // The indexed data should be gone. 289 // The indexed data should be gone.
290 EXPECT_EQ(0, CountTextMatchesForURL(row.url())); 290 EXPECT_EQ(0, CountTextMatchesForURL(row.url()));
291 291
292 // There should be no visits. 292 // There should be no visits.
293 VisitVector visits; 293 VisitVector visits;
294 main_db_->GetVisitsForURL(row.id(), &visits); 294 main_db_->GetVisitsForURL(row.id(), &visits);
295 EXPECT_EQ(0, visits.size()); 295 EXPECT_EQ(0U, visits.size());
296 296
297 // Thumbnail should be gone. 297 // Thumbnail should be gone.
298 EXPECT_FALSE(HasThumbnail(row.id())); 298 EXPECT_FALSE(HasThumbnail(row.id()));
299 299
300 // Check the notifications. There should be a delete notification with this 300 // Check the notifications. There should be a delete notification with this
301 // URL in it. There should also be a "typed URL changed" notification if the 301 // URL in it. There should also be a "typed URL changed" notification if the
302 // row is marked typed. 302 // row is marked typed.
303 bool found_delete_notification = false; 303 bool found_delete_notification = false;
304 bool found_typed_changed_notification = false; 304 bool found_typed_changed_notification = false;
305 for (size_t i = 0; i < notifications_.size(); i++) { 305 for (size_t i = 0; i < notifications_.size(); i++) {
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 AddExampleData(url_ids, visit_times); 378 AddExampleData(url_ids, visit_times);
379 379
380 // Verify things are the way we expect with a URL row, favicon, thumbnail. 380 // Verify things are the way we expect with a URL row, favicon, thumbnail.
381 URLRow last_row; 381 URLRow last_row;
382 ASSERT_TRUE(main_db_->GetURLRow(url_ids[2], &last_row)); 382 ASSERT_TRUE(main_db_->GetURLRow(url_ids[2], &last_row));
383 EXPECT_TRUE(HasFavIcon(last_row.favicon_id())); 383 EXPECT_TRUE(HasFavIcon(last_row.favicon_id()));
384 EXPECT_TRUE(HasThumbnail(url_ids[2])); 384 EXPECT_TRUE(HasThumbnail(url_ids[2]));
385 385
386 VisitVector visits; 386 VisitVector visits;
387 main_db_->GetVisitsForURL(url_ids[2], &visits); 387 main_db_->GetVisitsForURL(url_ids[2], &visits);
388 ASSERT_EQ(1, visits.size()); 388 ASSERT_EQ(1U, visits.size());
389 EXPECT_EQ(1, CountTextMatchesForURL(last_row.url())); 389 EXPECT_EQ(1, CountTextMatchesForURL(last_row.url()));
390 390
391 // In this test we also make sure that any pending entries in the text 391 // In this test we also make sure that any pending entries in the text
392 // database manager are removed. 392 // database manager are removed.
393 text_db_->AddPageURL(last_row.url(), last_row.id(), visits[0].visit_id, 393 text_db_->AddPageURL(last_row.url(), last_row.id(), visits[0].visit_id,
394 visits[0].visit_time); 394 visits[0].visit_time);
395 395
396 // Compute the text DB filename. 396 // Compute the text DB filename.
397 std::wstring fts_filename = dir_; 397 std::wstring fts_filename = dir_;
398 file_util::AppendToPath(&fts_filename, 398 file_util::AppendToPath(&fts_filename,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 AddExampleData(url_ids, visit_times); 438 AddExampleData(url_ids, visit_times);
439 439
440 // Verify things are the way we expect with a URL row, favicon, thumbnail. 440 // Verify things are the way we expect with a URL row, favicon, thumbnail.
441 URLRow last_row; 441 URLRow last_row;
442 ASSERT_TRUE(main_db_->GetURLRow(url_ids[1], &last_row)); 442 ASSERT_TRUE(main_db_->GetURLRow(url_ids[1], &last_row));
443 EXPECT_TRUE(HasFavIcon(last_row.favicon_id())); 443 EXPECT_TRUE(HasFavIcon(last_row.favicon_id()));
444 EXPECT_TRUE(HasThumbnail(url_ids[1])); 444 EXPECT_TRUE(HasThumbnail(url_ids[1]));
445 445
446 VisitVector visits; 446 VisitVector visits;
447 main_db_->GetVisitsForURL(url_ids[1], &visits); 447 main_db_->GetVisitsForURL(url_ids[1], &visits);
448 EXPECT_EQ(2, visits.size()); 448 EXPECT_EQ(2U, visits.size());
449 EXPECT_EQ(1, CountTextMatchesForURL(last_row.url())); 449 EXPECT_EQ(1, CountTextMatchesForURL(last_row.url()));
450 450
451 // Delete the URL and its dependencies. 451 // Delete the URL and its dependencies.
452 expirer_.DeleteURL(last_row.url()); 452 expirer_.DeleteURL(last_row.url());
453 453
454 // All the normal data + the favicon should be gone. 454 // All the normal data + the favicon should be gone.
455 EnsureURLInfoGone(last_row); 455 EnsureURLInfoGone(last_row);
456 EXPECT_TRUE(HasFavIcon(last_row.favicon_id())); 456 EXPECT_TRUE(HasFavIcon(last_row.favicon_id()));
457 } 457 }
458 458
(...skipping 12 matching lines...) Expand all
471 // Attempt to delete the url. 471 // Attempt to delete the url.
472 expirer_.DeleteURL(url_row.url()); 472 expirer_.DeleteURL(url_row.url());
473 473
474 // Because the url is starred, it shouldn't be deleted. 474 // Because the url is starred, it shouldn't be deleted.
475 GURL url = url_row.url(); 475 GURL url = url_row.url();
476 ASSERT_TRUE(main_db_->GetRowForURL(url, &url_row)); 476 ASSERT_TRUE(main_db_->GetRowForURL(url, &url_row));
477 477
478 // And the favicon should exist. 478 // And the favicon should exist.
479 EXPECT_TRUE(HasFavIcon(url_row.favicon_id())); 479 EXPECT_TRUE(HasFavIcon(url_row.favicon_id()));
480 480
481 // But there should be no fts. 481 // But there should be no fts.
482 ASSERT_EQ(0, CountTextMatchesForURL(url_row.url())); 482 ASSERT_EQ(0, CountTextMatchesForURL(url_row.url()));
483 483
484 // And no visits. 484 // And no visits.
485 VisitVector visits; 485 VisitVector visits;
486 main_db_->GetVisitsForURL(url_row.id(), &visits); 486 main_db_->GetVisitsForURL(url_row.id(), &visits);
487 ASSERT_EQ(0, visits.size()); 487 ASSERT_EQ(0U, visits.size());
488 488
489 // Should still have the thumbnail. 489 // Should still have the thumbnail.
490 ASSERT_TRUE(HasThumbnail(url_row.id())); 490 ASSERT_TRUE(HasThumbnail(url_row.id()));
491 491
492 // Unstar the URL and delete again. 492 // Unstar the URL and delete again.
493 bookmark_model_.SetURLStarred(url, std::wstring(), false); 493 bookmark_model_.SetURLStarred(url, std::wstring(), false);
494 expirer_.DeleteURL(url); 494 expirer_.DeleteURL(url);
495 495
496 // Now it should be completely deleted. 496 // Now it should be completely deleted.
497 EnsureURLInfoGone(url_row); 497 EnsureURLInfoGone(url_row);
498 } 498 }
499 499
500 // Expires all URLs more recent than a given time, with no starred items. 500 // Expires all URLs more recent than a given time, with no starred items.
501 // Our time threshold is such that one URL should be updated (we delete one of 501 // Our time threshold is such that one URL should be updated (we delete one of
502 // the two visits) and one is deleted. 502 // the two visits) and one is deleted.
503 TEST_F(ExpireHistoryTest, FlushRecentURLsUnstarred) { 503 TEST_F(ExpireHistoryTest, FlushRecentURLsUnstarred) {
504 URLID url_ids[3]; 504 URLID url_ids[3];
505 Time visit_times[4]; 505 Time visit_times[4];
506 AddExampleData(url_ids, visit_times); 506 AddExampleData(url_ids, visit_times);
507 507
508 URLRow url_row1, url_row2; 508 URLRow url_row1, url_row2;
509 ASSERT_TRUE(main_db_->GetURLRow(url_ids[1], &url_row1)); 509 ASSERT_TRUE(main_db_->GetURLRow(url_ids[1], &url_row1));
510 ASSERT_TRUE(main_db_->GetURLRow(url_ids[2], &url_row2)); 510 ASSERT_TRUE(main_db_->GetURLRow(url_ids[2], &url_row2));
511 511
512 // In this test we also make sure that any pending entries in the text 512 // In this test we also make sure that any pending entries in the text
513 // database manager are removed. 513 // database manager are removed.
514 VisitVector visits; 514 VisitVector visits;
515 main_db_->GetVisitsForURL(url_ids[2], &visits); 515 main_db_->GetVisitsForURL(url_ids[2], &visits);
516 ASSERT_EQ(1, visits.size()); 516 ASSERT_EQ(1U, visits.size());
517 text_db_->AddPageURL(url_row2.url(), url_row2.id(), visits[0].visit_id, 517 text_db_->AddPageURL(url_row2.url(), url_row2.id(), visits[0].visit_id,
518 visits[0].visit_time); 518 visits[0].visit_time);
519 519
520 // This should delete the last two visits. 520 // This should delete the last two visits.
521 expirer_.ExpireHistoryBetween(visit_times[2], Time()); 521 expirer_.ExpireHistoryBetween(visit_times[2], Time());
522 522
523 // Run the text database expirer. This will flush any pending entries so we 523 // Run the text database expirer. This will flush any pending entries so we
524 // can check that nothing was committed. We use a time far in the future so 524 // can check that nothing was committed. We use a time far in the future so
525 // that anything added recently will get flushed. 525 // that anything added recently will get flushed.
526 TimeTicks expiration_time = TimeTicks::Now() + TimeDelta::FromDays(1); 526 TimeTicks expiration_time = TimeTicks::Now() + TimeDelta::FromDays(1);
527 text_db_->FlushOldChangesForTime(expiration_time); 527 text_db_->FlushOldChangesForTime(expiration_time);
528 528
529 // Verify that the middle URL had its last visit deleted only. 529 // Verify that the middle URL had its last visit deleted only.
530 visits.clear(); 530 visits.clear();
531 main_db_->GetVisitsForURL(url_ids[1], &visits); 531 main_db_->GetVisitsForURL(url_ids[1], &visits);
532 EXPECT_EQ(1, visits.size()); 532 EXPECT_EQ(1U, visits.size());
533 EXPECT_EQ(0, CountTextMatchesForURL(url_row1.url())); 533 EXPECT_EQ(0, CountTextMatchesForURL(url_row1.url()));
534 534
535 // Verify that the middle URL visit time and visit counts were updated. 535 // Verify that the middle URL visit time and visit counts were updated.
536 URLRow temp_row; 536 URLRow temp_row;
537 ASSERT_TRUE(main_db_->GetURLRow(url_ids[1], &temp_row)); 537 ASSERT_TRUE(main_db_->GetURLRow(url_ids[1], &temp_row));
538 EXPECT_TRUE(visit_times[2] == url_row1.last_visit()); // Previous value. 538 EXPECT_TRUE(visit_times[2] == url_row1.last_visit()); // Previous value.
539 EXPECT_TRUE(visit_times[1] == temp_row.last_visit()); // New value. 539 EXPECT_TRUE(visit_times[1] == temp_row.last_visit()); // New value.
540 EXPECT_EQ(2, url_row1.visit_count()); 540 EXPECT_EQ(2, url_row1.visit_count());
541 EXPECT_EQ(1, temp_row.visit_count()); 541 EXPECT_EQ(1, temp_row.visit_count());
542 EXPECT_EQ(1, url_row1.typed_count()); 542 EXPECT_EQ(1, url_row1.typed_count());
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 expirer_.ArchiveHistoryBefore(visit_times[2]); 622 expirer_.ArchiveHistoryBefore(visit_times[2]);
623 EXPECT_FALSE(main_db_->GetURLRow(url_ids[1], &temp_row)); 623 EXPECT_FALSE(main_db_->GetURLRow(url_ids[1], &temp_row));
624 EXPECT_TRUE(main_db_->GetURLRow(url_ids[2], &temp_row)); 624 EXPECT_TRUE(main_db_->GetURLRow(url_ids[2], &temp_row));
625 625
626 // Make sure the archived database has an entry for the second URL. 626 // Make sure the archived database has an entry for the second URL.
627 URLRow archived_row; 627 URLRow archived_row;
628 // Note that the ID is different in the archived DB, so look up by URL. 628 // Note that the ID is different in the archived DB, so look up by URL.
629 EXPECT_TRUE(archived_db_->GetRowForURL(url_row1.url(), &archived_row)); 629 EXPECT_TRUE(archived_db_->GetRowForURL(url_row1.url(), &archived_row));
630 VisitVector archived_visits; 630 VisitVector archived_visits;
631 archived_db_->GetVisitsForURL(archived_row.id(), &archived_visits); 631 archived_db_->GetVisitsForURL(archived_row.id(), &archived_visits);
632 EXPECT_EQ(1, archived_visits.size()); 632 EXPECT_EQ(1U, archived_visits.size());
633 } 633 }
634 634
635 TEST_F(ExpireHistoryTest, ArchiveHistoryBeforeStarred) { 635 TEST_F(ExpireHistoryTest, ArchiveHistoryBeforeStarred) {
636 URLID url_ids[3]; 636 URLID url_ids[3];
637 Time visit_times[4]; 637 Time visit_times[4];
638 AddExampleData(url_ids, visit_times); 638 AddExampleData(url_ids, visit_times);
639 639
640 URLRow url_row0, url_row1; 640 URLRow url_row0, url_row1;
641 ASSERT_TRUE(main_db_->GetURLRow(url_ids[0], &url_row0)); 641 ASSERT_TRUE(main_db_->GetURLRow(url_ids[0], &url_row0));
642 ASSERT_TRUE(main_db_->GetURLRow(url_ids[1], &url_row1)); 642 ASSERT_TRUE(main_db_->GetURLRow(url_ids[1], &url_row1));
643 643
644 // Star the URLs. 644 // Star the URLs.
645 StarURL(url_row0.url()); 645 StarURL(url_row0.url());
646 StarURL(url_row1.url()); 646 StarURL(url_row1.url());
647 647
648 // Now archive the first three visits (first two URLs). The first two visits 648 // Now archive the first three visits (first two URLs). The first two visits
649 // should be, the third deleted, but the URL records should not. 649 // should be, the third deleted, but the URL records should not.
650 expirer_.ArchiveHistoryBefore(visit_times[2]); 650 expirer_.ArchiveHistoryBefore(visit_times[2]);
651 651
652 // The first URL should have its visit deleted, but it should still be present 652 // The first URL should have its visit deleted, but it should still be present
653 // in the main DB and not in the archived one since it is starred. 653 // in the main DB and not in the archived one since it is starred.
654 URLRow temp_row; 654 URLRow temp_row;
655 ASSERT_TRUE(main_db_->GetURLRow(url_ids[0], &temp_row)); 655 ASSERT_TRUE(main_db_->GetURLRow(url_ids[0], &temp_row));
656 // Note that the ID is different in the archived DB, so look up by URL. 656 // Note that the ID is different in the archived DB, so look up by URL.
657 EXPECT_FALSE(archived_db_->GetRowForURL(temp_row.url(), NULL)); 657 EXPECT_FALSE(archived_db_->GetRowForURL(temp_row.url(), NULL));
658 VisitVector visits; 658 VisitVector visits;
659 main_db_->GetVisitsForURL(temp_row.id(), &visits); 659 main_db_->GetVisitsForURL(temp_row.id(), &visits);
660 EXPECT_EQ(0, visits.size()); 660 EXPECT_EQ(0U, visits.size());
661 661
662 // The second URL should have its first visit deleted and its second visit 662 // The second URL should have its first visit deleted and its second visit
663 // archived. It should be present in both the main DB (because it's starred) 663 // archived. It should be present in both the main DB (because it's starred)
664 // and the archived DB (for the archived visit). 664 // and the archived DB (for the archived visit).
665 ASSERT_TRUE(main_db_->GetURLRow(url_ids[1], &temp_row)); 665 ASSERT_TRUE(main_db_->GetURLRow(url_ids[1], &temp_row));
666 main_db_->GetVisitsForURL(temp_row.id(), &visits); 666 main_db_->GetVisitsForURL(temp_row.id(), &visits);
667 EXPECT_EQ(0, visits.size()); 667 EXPECT_EQ(0U, visits.size());
668 668
669 // Note that the ID is different in the archived DB, so look up by URL. 669 // Note that the ID is different in the archived DB, so look up by URL.
670 ASSERT_TRUE(archived_db_->GetRowForURL(temp_row.url(), &temp_row)); 670 ASSERT_TRUE(archived_db_->GetRowForURL(temp_row.url(), &temp_row));
671 archived_db_->GetVisitsForURL(temp_row.id(), &visits); 671 archived_db_->GetVisitsForURL(temp_row.id(), &visits);
672 ASSERT_EQ(1, visits.size()); 672 ASSERT_EQ(1U, visits.size());
673 EXPECT_TRUE(visit_times[2] == visits[0].visit_time); 673 EXPECT_TRUE(visit_times[2] == visits[0].visit_time);
674 674
675 // The third URL should be unchanged. 675 // The third URL should be unchanged.
676 EXPECT_TRUE(main_db_->GetURLRow(url_ids[2], &temp_row)); 676 EXPECT_TRUE(main_db_->GetURLRow(url_ids[2], &temp_row));
677 EXPECT_FALSE(archived_db_->GetRowForURL(temp_row.url(), NULL)); 677 EXPECT_FALSE(archived_db_->GetRowForURL(temp_row.url(), NULL));
678 } 678 }
679 679
680 // Tests the return values from ArchiveSomeOldHistory. The rest of the 680 // Tests the return values from ArchiveSomeOldHistory. The rest of the
681 // functionality of this function is tested by the ArchiveHistoryBefore* 681 // functionality of this function is tested by the ArchiveHistoryBefore*
682 // tests which use this function internally. 682 // tests which use this function internally.
(...skipping 14 matching lines...) Expand all
697 // (max deleted). 697 // (max deleted).
698 EXPECT_TRUE(expirer_.ArchiveSomeOldHistory(visit_times[2], 1)); 698 EXPECT_TRUE(expirer_.ArchiveSomeOldHistory(visit_times[2], 1));
699 } 699 }
700 700
701 // TODO(brettw) add some visits with no URL to make sure everything is updated 701 // TODO(brettw) add some visits with no URL to make sure everything is updated
702 // properly. Have the visits also refer to nonexistant FTS rows. 702 // properly. Have the visits also refer to nonexistant FTS rows.
703 // 703 //
704 // Maybe also refer to invalid favicons. 704 // Maybe also refer to invalid favicons.
705 705
706 } // namespace history 706 } // namespace history
OLDNEW
« no previous file with comments | « chrome/browser/browser.vcproj ('k') | chrome/browser/history/history_publisher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698