Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <algorithm> | 5 #include <algorithm> |
| 6 #include <set> | 6 #include <set> |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 496 rows.push_back(row1); | 496 rows.push_back(row1); |
| 497 backend_->AddPagesWithDetails(rows, history::SOURCE_BROWSED); | 497 backend_->AddPagesWithDetails(rows, history::SOURCE_BROWSED); |
| 498 | 498 |
| 499 URLID row1_id = backend_->db_->GetRowForURL(row1.url(), NULL); | 499 URLID row1_id = backend_->db_->GetRowForURL(row1.url(), NULL); |
| 500 URLID row2_id = backend_->db_->GetRowForURL(row2.url(), NULL); | 500 URLID row2_id = backend_->db_->GetRowForURL(row2.url(), NULL); |
| 501 | 501 |
| 502 // Get the two visits for the URLs we just added. | 502 // Get the two visits for the URLs we just added. |
| 503 VisitVector visits; | 503 VisitVector visits; |
| 504 backend_->db_->GetVisitsForURL(row1_id, &visits); | 504 backend_->db_->GetVisitsForURL(row1_id, &visits); |
| 505 ASSERT_EQ(1U, visits.size()); | 505 ASSERT_EQ(1U, visits.size()); |
| 506 VisitID visit1_id = visits[0].visit_id; | |
| 507 | 506 |
| 508 visits.clear(); | 507 visits.clear(); |
| 509 backend_->db_->GetVisitsForURL(row2_id, &visits); | 508 backend_->db_->GetVisitsForURL(row2_id, &visits); |
| 510 ASSERT_EQ(1U, visits.size()); | 509 ASSERT_EQ(1U, visits.size()); |
| 511 VisitID visit2_id = visits[0].visit_id; | |
| 512 | 510 |
| 513 // The in-memory backend should have been set and it should have gotten the | 511 // The in-memory backend should have been set and it should have gotten the |
| 514 // typed URL. | 512 // typed URL. |
| 515 ASSERT_TRUE(mem_backend_.get()); | 513 ASSERT_TRUE(mem_backend_.get()); |
| 516 URLRow outrow1; | 514 URLRow outrow1; |
| 517 EXPECT_TRUE(mem_backend_->db_->GetRowForURL(row1.url(), NULL)); | 515 EXPECT_TRUE(mem_backend_->db_->GetRowForURL(row1.url(), NULL)); |
| 518 | 516 |
| 519 // Add thumbnails for each page. The |Images| take ownership of SkBitmap | 517 // Add thumbnails for each page. The |Images| take ownership of SkBitmap |
| 520 // created from decoding the images. | 518 // created from decoding the images. |
| 521 ThumbnailScore score(0.25, true, true); | 519 ThumbnailScore score(0.25, true, true); |
| 522 scoped_ptr<SkBitmap> google_bitmap( | 520 scoped_ptr<SkBitmap> google_bitmap( |
| 523 gfx::JPEGCodec::Decode(kGoogleThumbnail, sizeof(kGoogleThumbnail))); | 521 gfx::JPEGCodec::Decode(kGoogleThumbnail, sizeof(kGoogleThumbnail))); |
| 524 | 522 |
| 525 gfx::Image google_image = gfx::Image::CreateFrom1xBitmap(*google_bitmap); | 523 gfx::Image google_image = gfx::Image::CreateFrom1xBitmap(*google_bitmap); |
| 526 | 524 |
| 527 Time time; | 525 Time time; |
| 528 GURL gurl; | 526 GURL gurl; |
| 529 backend_->thumbnail_db_->SetPageThumbnail(gurl, row1_id, &google_image, | 527 backend_->thumbnail_db_->SetPageThumbnail(gurl, row1_id, &google_image, |
| 530 score, time); | 528 score, time); |
| 531 scoped_ptr<SkBitmap> weewar_bitmap( | 529 scoped_ptr<SkBitmap> weewar_bitmap( |
| 532 gfx::JPEGCodec::Decode(kWeewarThumbnail, sizeof(kWeewarThumbnail))); | 530 gfx::JPEGCodec::Decode(kWeewarThumbnail, sizeof(kWeewarThumbnail))); |
| 533 gfx::Image weewar_image = gfx::Image::CreateFrom1xBitmap(*weewar_bitmap); | 531 gfx::Image weewar_image = gfx::Image::CreateFrom1xBitmap(*weewar_bitmap); |
| 534 backend_->thumbnail_db_->SetPageThumbnail(gurl, row2_id, &weewar_image, | 532 backend_->thumbnail_db_->SetPageThumbnail(gurl, row2_id, &weewar_image, |
| 535 score, time); | 533 score, time); |
| 536 | 534 |
| 537 // Star row1. | 535 // Star row1. |
| 538 bookmark_model_.AddURL( | 536 bookmark_model_.AddURL( |
| 539 bookmark_model_.bookmark_bar_node(), 0, string16(), row1.url()); | 537 bookmark_model_.bookmark_bar_node(), 0, string16(), row1.url()); |
| 540 | 538 |
| 541 // Set full text index for each one. | |
| 542 backend_->text_database_->AddPageData(row1.url(), row1_id, visit1_id, | |
| 543 row1.last_visit(), | |
| 544 UTF8ToUTF16("Title 1"), | |
| 545 UTF8ToUTF16("Body 1")); | |
| 546 backend_->text_database_->AddPageData(row2.url(), row2_id, visit2_id, | |
| 547 row2.last_visit(), | |
| 548 UTF8ToUTF16("Title 2"), | |
| 549 UTF8ToUTF16("Body 2")); | |
| 550 | |
| 551 // Now finally clear all history. | 539 // Now finally clear all history. |
| 552 backend_->DeleteAllHistory(); | 540 backend_->DeleteAllHistory(); |
| 553 | 541 |
| 554 // The first URL should be preserved but the time should be cleared. | 542 // The first URL should be preserved but the time should be cleared. |
| 555 EXPECT_TRUE(backend_->db_->GetRowForURL(row1.url(), &outrow1)); | 543 EXPECT_TRUE(backend_->db_->GetRowForURL(row1.url(), &outrow1)); |
| 556 EXPECT_EQ(row1.url(), outrow1.url()); | 544 EXPECT_EQ(row1.url(), outrow1.url()); |
| 557 EXPECT_EQ(0, outrow1.visit_count()); | 545 EXPECT_EQ(0, outrow1.visit_count()); |
| 558 EXPECT_EQ(0, outrow1.typed_count()); | 546 EXPECT_EQ(0, outrow1.typed_count()); |
| 559 EXPECT_TRUE(Time() == outrow1.last_visit()); | 547 EXPECT_TRUE(Time() == outrow1.last_visit()); |
| 560 | 548 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 606 | 594 |
| 607 // The remaining URL should still reference the same favicon, even if its | 595 // The remaining URL should still reference the same favicon, even if its |
| 608 // ID has changed. | 596 // ID has changed. |
| 609 std::vector<IconMapping> mappings; | 597 std::vector<IconMapping> mappings; |
| 610 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( | 598 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( |
| 611 outrow1.url(), chrome::FAVICON, &mappings)); | 599 outrow1.url(), chrome::FAVICON, &mappings)); |
| 612 EXPECT_EQ(1u, mappings.size()); | 600 EXPECT_EQ(1u, mappings.size()); |
| 613 EXPECT_EQ(out_favicon1, mappings[0].icon_id); | 601 EXPECT_EQ(out_favicon1, mappings[0].icon_id); |
| 614 | 602 |
| 615 // The first URL should still be bookmarked. | 603 // The first URL should still be bookmarked. |
| 616 EXPECT_TRUE(bookmark_model_.IsBookmarked(row1.url())); | 604 EXPECT_TRUE(bookmark_model_.IsBookmarked(row1.url())); |
|
palmer
2013/07/12 18:21:02
It'd be good to add some unit tests for the new |H
rmcilroy
2013/07/15 12:47:19
Done.
| |
| 617 | |
| 618 // The full text database should have no data. | |
| 619 std::vector<TextDatabase::Match> text_matches; | |
| 620 Time first_time_searched; | |
| 621 backend_->text_database_->GetTextMatches(UTF8ToUTF16("Body"), | |
| 622 QueryOptions(), | |
| 623 &text_matches, | |
| 624 &first_time_searched); | |
| 625 EXPECT_EQ(0U, text_matches.size()); | |
| 626 } | 605 } |
| 627 | 606 |
| 628 // Checks that adding a visit, then calling DeleteAll, and then trying to add | 607 // Checks that adding a visit, then calling DeleteAll, and then trying to add |
| 629 // data for the visited page works. This can happen when clearing the history | 608 // data for the visited page works. This can happen when clearing the history |
| 630 // immediately after visiting a page. | 609 // immediately after visiting a page. |
| 631 TEST_F(HistoryBackendTest, DeleteAllThenAddData) { | 610 TEST_F(HistoryBackendTest, DeleteAllThenAddData) { |
| 632 ASSERT_TRUE(backend_.get()); | 611 ASSERT_TRUE(backend_.get()); |
| 633 | 612 |
| 634 Time visit_time = Time::Now(); | 613 Time visit_time = Time::Now(); |
| 635 GURL url("http://www.google.com/"); | 614 GURL url("http://www.google.com/"); |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 651 // Clear all history. | 630 // Clear all history. |
| 652 backend_->DeleteAllHistory(); | 631 backend_->DeleteAllHistory(); |
| 653 | 632 |
| 654 // The row should be deleted. | 633 // The row should be deleted. |
| 655 EXPECT_FALSE(backend_->db_->GetRowForURL(url, &outrow)); | 634 EXPECT_FALSE(backend_->db_->GetRowForURL(url, &outrow)); |
| 656 | 635 |
| 657 // The visit should be deleted. | 636 // The visit should be deleted. |
| 658 backend_->db_->GetAllVisitsInRange(Time(), Time(), 0, &all_visits); | 637 backend_->db_->GetAllVisitsInRange(Time(), Time(), 0, &all_visits); |
| 659 ASSERT_EQ(0U, all_visits.size()); | 638 ASSERT_EQ(0U, all_visits.size()); |
| 660 | 639 |
| 661 // Try and set the full text index. | 640 // Try and set the title. |
| 662 backend_->SetPageTitle(url, UTF8ToUTF16("Title")); | 641 backend_->SetPageTitle(url, UTF8ToUTF16("Title")); |
| 663 backend_->SetPageContents(url, UTF8ToUTF16("Body")); | |
| 664 | 642 |
| 665 // The row should still be deleted. | 643 // The row should still be deleted. |
| 666 EXPECT_FALSE(backend_->db_->GetRowForURL(url, &outrow)); | 644 EXPECT_FALSE(backend_->db_->GetRowForURL(url, &outrow)); |
| 667 | 645 |
| 668 // The visit should still be deleted. | 646 // The visit should still be deleted. |
| 669 backend_->db_->GetAllVisitsInRange(Time(), Time(), 0, &all_visits); | 647 backend_->db_->GetAllVisitsInRange(Time(), Time(), 0, &all_visits); |
| 670 ASSERT_EQ(0U, all_visits.size()); | 648 ASSERT_EQ(0U, all_visits.size()); |
| 671 | |
| 672 // The full text database should have no data. | |
| 673 std::vector<TextDatabase::Match> text_matches; | |
| 674 Time first_time_searched; | |
| 675 backend_->text_database_->GetTextMatches(UTF8ToUTF16("Body"), | |
| 676 QueryOptions(), | |
| 677 &text_matches, | |
| 678 &first_time_searched); | |
| 679 EXPECT_EQ(0U, text_matches.size()); | |
| 680 } | 649 } |
| 681 | 650 |
| 682 TEST_F(HistoryBackendTest, URLsNoLongerBookmarked) { | 651 TEST_F(HistoryBackendTest, URLsNoLongerBookmarked) { |
| 683 GURL favicon_url1("http://www.google.com/favicon.ico"); | 652 GURL favicon_url1("http://www.google.com/favicon.ico"); |
| 684 GURL favicon_url2("http://news.google.com/favicon.ico"); | 653 GURL favicon_url2("http://news.google.com/favicon.ico"); |
| 685 | 654 |
| 686 std::vector<unsigned char> data; | 655 std::vector<unsigned char> data; |
| 687 data.push_back('1'); | 656 data.push_back('1'); |
| 688 chrome::FaviconID favicon1 = backend_->thumbnail_db_->AddFavicon( | 657 chrome::FaviconID favicon1 = backend_->thumbnail_db_->AddFavicon( |
| 689 favicon_url1, | 658 favicon_url1, |
| (...skipping 2119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2809 service->AddPage( | 2778 service->AddPage( |
| 2810 url, base::Time::Now(), NULL, 1, GURL(), RedirectList(), | 2779 url, base::Time::Now(), NULL, 1, GURL(), RedirectList(), |
| 2811 content::PAGE_TRANSITION_TYPED, SOURCE_BROWSED, false); | 2780 content::PAGE_TRANSITION_TYPED, SOURCE_BROWSED, false); |
| 2812 | 2781 |
| 2813 // This won't actually delete the URL, rather it'll empty out the visits. | 2782 // This won't actually delete the URL, rather it'll empty out the visits. |
| 2814 // This triggers blocking on the BookmarkModel. | 2783 // This triggers blocking on the BookmarkModel. |
| 2815 service->DeleteURL(url); | 2784 service->DeleteURL(url); |
| 2816 } | 2785 } |
| 2817 | 2786 |
| 2818 } // namespace history | 2787 } // namespace history |
| OLD | NEW |