Chromium Code Reviews| Index: chrome/browser/history/top_sites_impl_unittest.cc |
| diff --git a/chrome/browser/history/top_sites_impl_unittest.cc b/chrome/browser/history/top_sites_impl_unittest.cc |
| index d24753b2132023ac02d23429c0c5f00126aafbe6..c2c8acedf063f5dc3e2a4eea1dc3b53f0f868864 100644 |
| --- a/chrome/browser/history/top_sites_impl_unittest.cc |
| +++ b/chrome/browser/history/top_sites_impl_unittest.cc |
| @@ -8,7 +8,6 @@ |
| #include "base/strings/utf_string_conversions.h" |
| #include "base/task/cancelable_task_tracker.h" |
| #include "chrome/browser/history/history_service_factory.h" |
| -#include "chrome/browser/history/top_sites.h" |
| #include "chrome/browser/history/top_sites_factory.h" |
| #include "chrome/browser/history/top_sites_impl.h" |
| #include "chrome/common/chrome_constants.h" |
| @@ -16,6 +15,7 @@ |
| #include "chrome/test/base/testing_profile.h" |
| #include "components/history/core/browser/history_db_task.h" |
| #include "components/history/core/browser/history_types.h" |
| +#include "components/history/core/browser/top_sites.h" |
| #include "components/history/core/browser/top_sites_cache.h" |
| #include "components/history/core/test/history_unittest_base.h" |
| #include "content/public/test/test_browser_thread.h" |
| @@ -30,6 +30,24 @@ namespace history { |
| namespace { |
| +static const char kPrepopulatedPageURL[] = |
| + "http://www.google.com/int/chrome/welcome.html"; |
| + |
| +// Create a TopSites implementation for testing. |
| +scoped_refptr<RefcountedKeyedService> BuildTopSitesImpl( |
| + content::BrowserContext* context) { |
| + PrepopulatedPageList prepopulated_pages; |
| + prepopulated_pages.push_back(PrepopulatedPage(GURL(kPrepopulatedPageURL), |
| + base::string16(), -1, -1, 0)); |
| + |
| + scoped_refptr<TopSitesImpl> top_sites = |
| + new TopSitesImpl(static_cast<Profile*>(context), prepopulated_pages); |
| + top_sites->Init( |
| + context->GetPath().Append(chrome::kTopSitesFilename), |
| + BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB)); |
| + return top_sites; |
| +} |
| + |
| // Used by WaitForHistory, see it for details. |
| class WaitForHistoryTask : public HistoryDBTask { |
| public: |
| @@ -204,26 +222,25 @@ class TopSitesImplTest : public HistoryUnitTestBase { |
| profile_.get(), ServiceAccessType::EXPLICIT_ACCESS); |
| } |
| - MostVisitedURLList GetPrepopulatePages() { |
| - return top_sites()->GetPrepopulatePages(); |
| + PrepopulatedPageList GetPrepopulatedPages() { |
|
droger
2015/01/27 10:08:36
Return a const reference?
sdefresne
2015/01/27 13:55:16
I can't since top_sites()->GetPrepopulatedPages()
|
| + return top_sites()->GetPrepopulatedPages(); |
| } |
| // Returns true if the TopSitesQuerier contains the prepopulate data starting |
| // at |start_index|. |
| void ContainsPrepopulatePages(const TopSitesQuerier& querier, |
| size_t start_index) { |
| - MostVisitedURLList prepopulate_urls = GetPrepopulatePages(); |
| - ASSERT_LE(start_index + prepopulate_urls.size(), querier.urls().size()); |
| - for (size_t i = 0; i < prepopulate_urls.size(); ++i) { |
| - EXPECT_EQ(prepopulate_urls[i].url.spec(), |
| - querier.urls()[start_index + i].url.spec()) << " @ index " << |
| - i; |
| + PrepopulatedPageList prepopulate_pages = GetPrepopulatedPages(); |
| + ASSERT_LE(start_index + prepopulate_pages.size(), querier.urls().size()); |
| + for (size_t i = 0; i < prepopulate_pages.size(); ++i) { |
| + EXPECT_EQ(prepopulate_pages[i].url.url.spec(), |
| + querier.urls()[start_index + i].url.spec()) |
| + << " @ index " << i; |
| } |
| } |
| // Used for callbacks from history. |
| - void EmptyCallback() { |
| - } |
| + void EmptyCallback() {} |
|
droger
2015/01/27 10:08:36
Optional:
use base::DoNothing() instead.
sdefresne
2015/01/27 13:55:16
Not used.
|
| // Quit the current message loop when invoked. Useful when running a nested |
| // message loop. |
| @@ -325,7 +342,11 @@ class TopSitesImplTest : public HistoryUnitTestBase { |
| top_sites()->thread_safe_cache_->SetTopSites(empty); |
| } |
| - void CreateTopSites() { profile_->CreateTopSites(); } |
| + void CreateTopSites() { |
| + profile_->DestroyTopSites(); |
|
droger
2015/01/27 10:08:37
Maybe add a comment here explaining why you need t
sdefresne
2015/01/27 13:55:16
Done.
|
| + TopSitesFactory::GetInstance()->SetTestingFactory(profile_.get(), |
| + BuildTopSitesImpl); |
| + } |
| private: |
| base::MessageLoopForUI message_loop_; |
| @@ -639,7 +660,7 @@ TEST_F(TopSitesImplTest, GetMostVisited) { |
| ASSERT_EQ(1, querier.number_of_callbacks()); |
| // 2 extra prepopulated URLs. |
| - ASSERT_EQ(2u + GetPrepopulatePages().size(), querier.urls().size()); |
| + ASSERT_EQ(2u + GetPrepopulatedPages().size(), querier.urls().size()); |
| EXPECT_EQ(news, querier.urls()[0].url); |
| EXPECT_EQ(google, querier.urls()[1].url); |
| ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 2)); |
| @@ -672,7 +693,7 @@ TEST_F(TopSitesImplTest, SaveToDB) { |
| { |
| TopSitesQuerier querier; |
| querier.QueryTopSites(top_sites(), false); |
| - ASSERT_EQ(1u + GetPrepopulatePages().size(), querier.urls().size()); |
| + ASSERT_EQ(1u + GetPrepopulatedPages().size(), querier.urls().size()); |
| EXPECT_EQ(asdf_url, querier.urls()[0].url); |
| EXPECT_EQ(asdf_title, querier.urls()[0].title); |
| ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 1)); |
| @@ -700,7 +721,7 @@ TEST_F(TopSitesImplTest, SaveToDB) { |
| { |
| TopSitesQuerier querier; |
| querier.QueryTopSites(top_sites(), false); |
| - ASSERT_EQ(2u + GetPrepopulatePages().size(), querier.urls().size()); |
| + ASSERT_EQ(2u + GetPrepopulatedPages().size(), querier.urls().size()); |
| EXPECT_EQ(asdf_url, querier.urls()[0].url); |
| EXPECT_EQ(asdf_title, querier.urls()[0].title); |
| EXPECT_EQ(google_url, querier.urls()[1].url); |
| @@ -747,7 +768,7 @@ TEST_F(TopSitesImplTest, SaveForcedToDB) { |
| TopSitesQuerier querier; |
| querier.QueryAllTopSites(top_sites(), true, true); |
| - ASSERT_EQ(4u + GetPrepopulatePages().size(), querier.urls().size()); |
| + ASSERT_EQ(4u + GetPrepopulatedPages().size(), querier.urls().size()); |
| EXPECT_EQ(GURL("http://forced1"), querier.urls()[0].url); |
| EXPECT_EQ(base::ASCIIToUTF16("forced1"), querier.urls()[0].title); |
| SkBitmap thumbnail = GetThumbnail(GURL("http://forced1")); |
| @@ -797,7 +818,7 @@ TEST_F(TopSitesImplTest, RealDatabase) { |
| TopSitesQuerier querier; |
| querier.QueryTopSites(top_sites(), false); |
| - ASSERT_EQ(1u + GetPrepopulatePages().size(), querier.urls().size()); |
| + ASSERT_EQ(1u + GetPrepopulatedPages().size(), querier.urls().size()); |
| EXPECT_EQ(asdf_url, querier.urls()[0].url); |
| EXPECT_EQ(asdf_title, querier.urls()[0].title); |
| ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 1)); |
| @@ -831,7 +852,7 @@ TEST_F(TopSitesImplTest, RealDatabase) { |
| TopSitesQuerier querier; |
| querier.QueryTopSites(top_sites(), false); |
| - ASSERT_EQ(2u + GetPrepopulatePages().size(), querier.urls().size()); |
| + ASSERT_EQ(2u + GetPrepopulatedPages().size(), querier.urls().size()); |
| EXPECT_EQ(google1_url, querier.urls()[0].url); |
| EXPECT_EQ(google_title, querier.urls()[0].title); |
| ASSERT_EQ(3u, querier.urls()[0].redirects.size()); |
| @@ -900,7 +921,7 @@ TEST_F(TopSitesImplTest, DeleteNotifications) { |
| TopSitesQuerier querier; |
| querier.QueryTopSites(top_sites(), false); |
| - ASSERT_EQ(GetPrepopulatePages().size() + 2, querier.urls().size()); |
| + ASSERT_EQ(GetPrepopulatedPages().size() + 2, querier.urls().size()); |
| } |
| DeleteURL(news_url); |
| @@ -912,7 +933,7 @@ TEST_F(TopSitesImplTest, DeleteNotifications) { |
| TopSitesQuerier querier; |
| querier.QueryTopSites(top_sites(), false); |
| - ASSERT_EQ(1u + GetPrepopulatePages().size(), querier.urls().size()); |
| + ASSERT_EQ(1u + GetPrepopulatedPages().size(), querier.urls().size()); |
| EXPECT_EQ(google_title, querier.urls()[0].title); |
| ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 1)); |
| } |
| @@ -924,7 +945,7 @@ TEST_F(TopSitesImplTest, DeleteNotifications) { |
| TopSitesQuerier querier; |
| querier.QueryTopSites(top_sites(), false); |
| - ASSERT_EQ(1u + GetPrepopulatePages().size(), querier.urls().size()); |
| + ASSERT_EQ(1u + GetPrepopulatedPages().size(), querier.urls().size()); |
| EXPECT_EQ(google_title, querier.urls()[0].title); |
| ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 1)); |
| } |
| @@ -938,7 +959,7 @@ TEST_F(TopSitesImplTest, DeleteNotifications) { |
| TopSitesQuerier querier; |
| querier.QueryTopSites(top_sites(), false); |
| - ASSERT_EQ(GetPrepopulatePages().size(), querier.urls().size()); |
| + ASSERT_EQ(GetPrepopulatedPages().size(), querier.urls().size()); |
| ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 0)); |
| } |
| @@ -949,7 +970,7 @@ TEST_F(TopSitesImplTest, DeleteNotifications) { |
| TopSitesQuerier querier; |
| querier.QueryTopSites(top_sites(), false); |
| - ASSERT_EQ(GetPrepopulatePages().size(), querier.urls().size()); |
| + ASSERT_EQ(GetPrepopulatedPages().size(), querier.urls().size()); |
| ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 0)); |
| } |
| } |
| @@ -1005,11 +1026,11 @@ TEST_F(TopSitesImplTest, NotifyCallbacksWhenLoaded) { |
| // Now we should have gotten the callbacks. |
| EXPECT_EQ(1, querier1.number_of_callbacks()); |
| - EXPECT_EQ(GetPrepopulatePages().size(), querier1.urls().size()); |
| + EXPECT_EQ(GetPrepopulatedPages().size(), querier1.urls().size()); |
| EXPECT_EQ(1, querier2.number_of_callbacks()); |
| - EXPECT_EQ(GetPrepopulatePages().size(), querier2.urls().size()); |
| + EXPECT_EQ(GetPrepopulatedPages().size(), querier2.urls().size()); |
| EXPECT_EQ(1, querier3.number_of_callbacks()); |
| - EXPECT_EQ(GetPrepopulatePages().size(), querier3.urls().size()); |
| + EXPECT_EQ(GetPrepopulatedPages().size(), querier3.urls().size()); |
| // Reset the top sites. |
| MostVisitedURLList pages; |
| @@ -1040,7 +1061,7 @@ TEST_F(TopSitesImplTest, NotifyCallbacksWhenLoaded) { |
| // Now we should have gotten the callbacks. |
| EXPECT_EQ(1, querier4.number_of_callbacks()); |
| - ASSERT_EQ(2u + GetPrepopulatePages().size(), querier4.urls().size()); |
| + ASSERT_EQ(2u + GetPrepopulatedPages().size(), querier4.urls().size()); |
| EXPECT_EQ("http://1.com/", querier4.urls()[0].url.spec()); |
| EXPECT_EQ("http://2.com/", querier4.urls()[1].url.spec()); |
| @@ -1058,7 +1079,7 @@ TEST_F(TopSitesImplTest, NotifyCallbacksWhenLoaded) { |
| EXPECT_EQ(1, querier5.number_of_callbacks()); |
| - ASSERT_EQ(3u + GetPrepopulatePages().size(), querier5.urls().size()); |
| + ASSERT_EQ(3u + GetPrepopulatedPages().size(), querier5.urls().size()); |
| EXPECT_EQ("http://1.com/", querier5.urls()[0].url.spec()); |
| EXPECT_EQ("http://2.com/", querier5.urls()[1].url.spec()); |
| EXPECT_EQ("http://3.com/", querier5.urls()[2].url.spec()); |
| @@ -1090,7 +1111,7 @@ TEST_F(TopSitesImplTest, CancelingRequestsForTopSites) { |
| // The first callback should succeed. |
| EXPECT_EQ(1, querier1.number_of_callbacks()); |
| - EXPECT_EQ(GetPrepopulatePages().size(), querier1.urls().size()); |
| + EXPECT_EQ(GetPrepopulatedPages().size(), querier1.urls().size()); |
| // And the canceled callback should not be notified. |
| EXPECT_EQ(0, querier2.number_of_callbacks()); |
| @@ -1206,7 +1227,6 @@ TEST_F(TopSitesImplTest, BlacklistingWithoutPrepopulated) { |
| } |
| } |
| -#if !defined(OS_ANDROID) |
| // Tests variations of blacklisting including blacklisting prepopulated pages. |
| // This test is disable for Android because Android does not have any |
| // prepopulated pages. |
| @@ -1226,7 +1246,7 @@ TEST_F(TopSitesImplTest, BlacklistingWithPrepopulated) { |
| // Blacklist google.com. |
| top_sites()->AddBlacklistedURL(GURL("http://google.com/")); |
| - GURL prepopulate_url = GetPrepopulatePages()[0].url; |
| + GURL prepopulate_url = GetPrepopulatedPages()[0].url.url; |
| EXPECT_TRUE(top_sites()->HasBlacklistedItems()); |
| EXPECT_TRUE(top_sites()->IsBlacklisted(GURL("http://google.com/"))); |
| @@ -1237,7 +1257,7 @@ TEST_F(TopSitesImplTest, BlacklistingWithPrepopulated) { |
| { |
| TopSitesQuerier q; |
| q.QueryTopSites(top_sites(), true); |
| - ASSERT_EQ(1u + GetPrepopulatePages().size(), q.urls().size()); |
| + ASSERT_EQ(1u + GetPrepopulatedPages().size(), q.urls().size()); |
| EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); |
| ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 1)); |
| } |
| @@ -1247,7 +1267,7 @@ TEST_F(TopSitesImplTest, BlacklistingWithPrepopulated) { |
| { |
| TopSitesQuerier q; |
| q.QueryTopSites(top_sites(), true); |
| - ASSERT_EQ(1u + GetPrepopulatePages().size(), q.urls().size()); |
| + ASSERT_EQ(1u + GetPrepopulatedPages().size(), q.urls().size()); |
| EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); |
| ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 1)); |
| } |
| @@ -1260,7 +1280,7 @@ TEST_F(TopSitesImplTest, BlacklistingWithPrepopulated) { |
| { |
| TopSitesQuerier q; |
| q.QueryTopSites(top_sites(), true); |
| - ASSERT_EQ(1u + GetPrepopulatePages().size() - 1, q.urls().size()); |
| + ASSERT_EQ(1u + GetPrepopulatedPages().size() - 1, q.urls().size()); |
| EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); |
| for (size_t i = 1; i < q.urls().size(); ++i) |
| EXPECT_NE(prepopulate_url.spec(), q.urls()[i].url.spec()); |
| @@ -1275,7 +1295,7 @@ TEST_F(TopSitesImplTest, BlacklistingWithPrepopulated) { |
| { |
| TopSitesQuerier q; |
| q.QueryTopSites(top_sites(), true); |
| - ASSERT_EQ(2u + GetPrepopulatePages().size() - 1, q.urls().size()); |
| + ASSERT_EQ(2u + GetPrepopulatedPages().size() - 1, q.urls().size()); |
| EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); |
| EXPECT_EQ("http://google.com/", q.urls()[1].url.spec()); |
| // Android has only one prepopulated page which has been blacklisted, so |
| @@ -1283,7 +1303,7 @@ TEST_F(TopSitesImplTest, BlacklistingWithPrepopulated) { |
| if (q.urls().size() > 2) |
| EXPECT_NE(prepopulate_url.spec(), q.urls()[2].url.spec()); |
| else |
| - EXPECT_EQ(1u, GetPrepopulatePages().size()); |
| + EXPECT_EQ(1u, GetPrepopulatedPages().size()); |
| } |
| // Remove all blacklisted sites. |
| @@ -1293,25 +1313,24 @@ TEST_F(TopSitesImplTest, BlacklistingWithPrepopulated) { |
| { |
| TopSitesQuerier q; |
| q.QueryTopSites(top_sites(), true); |
| - ASSERT_EQ(2u + GetPrepopulatePages().size(), q.urls().size()); |
| + ASSERT_EQ(2u + GetPrepopulatedPages().size(), q.urls().size()); |
| EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); |
| EXPECT_EQ("http://google.com/", q.urls()[1].url.spec()); |
| ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 2)); |
| } |
| } |
| -#endif |
| // Makes sure prepopulated pages exist. |
| TEST_F(TopSitesImplTest, AddPrepopulatedPages) { |
| TopSitesQuerier q; |
| q.QueryTopSites(top_sites(), true); |
| - EXPECT_EQ(GetPrepopulatePages().size(), q.urls().size()); |
| + EXPECT_EQ(GetPrepopulatedPages().size(), q.urls().size()); |
| ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 0)); |
| MostVisitedURLList pages = q.urls(); |
| EXPECT_FALSE(AddPrepopulatedPages(&pages)); |
| - EXPECT_EQ(GetPrepopulatePages().size(), pages.size()); |
| + EXPECT_EQ(GetPrepopulatedPages().size(), pages.size()); |
| q.set_urls(pages); |
| ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 0)); |
| } |
| @@ -1469,7 +1488,7 @@ TEST_F(TopSitesImplTest, SetForcedTopSitesWithCollisions) { |
| querier.QueryAllTopSites(top_sites(), false, true); |
| // Check URLs. When collision occurs, the incoming one is always preferred. |
| - ASSERT_EQ(7u + GetPrepopulatePages().size(), querier.urls().size()); |
| + ASSERT_EQ(7u + GetPrepopulatedPages().size(), querier.urls().size()); |
| EXPECT_EQ("http://url/0", querier.urls()[0].url.spec()); |
| EXPECT_EQ(1000u, querier.urls()[0].last_forced_time.ToJsTime()); |
| EXPECT_EQ("http://collision/1", querier.urls()[1].url.spec()); |
| @@ -1503,7 +1522,7 @@ TEST_F(TopSitesImplTest, SetTopSitesIdentical) { |
| querier.QueryAllTopSites(top_sites(), false, true); |
| // Check URLs. When collision occurs, the incoming one is always preferred. |
| - ASSERT_EQ(3u + GetPrepopulatePages().size(), querier.urls().size()); |
| + ASSERT_EQ(3u + GetPrepopulatedPages().size(), querier.urls().size()); |
| EXPECT_EQ("http://url/0", querier.urls()[0].url.spec()); |
| EXPECT_EQ(1000u, querier.urls()[0].last_forced_time.ToJsTime()); |
| EXPECT_EQ("http://url/1", querier.urls()[1].url.spec()); |
| @@ -1530,7 +1549,7 @@ TEST_F(TopSitesImplTest, SetTopSitesWithAlreadyExistingForcedURLs) { |
| querier.QueryAllTopSites(top_sites(), false, true); |
| // Check URLs. When collision occurs, the non-forced one is always preferred. |
| - ASSERT_EQ(2u + GetPrepopulatePages().size(), querier.urls().size()); |
| + ASSERT_EQ(2u + GetPrepopulatedPages().size(), querier.urls().size()); |
| EXPECT_EQ("http://url/0", querier.urls()[0].url.spec()); |
| EXPECT_EQ("http://url/0/redir", querier.urls()[0].redirects[0].spec()); |
| EXPECT_TRUE(querier.urls()[0].last_forced_time.is_null()); |
| @@ -1560,7 +1579,7 @@ TEST_F(TopSitesImplTest, AddForcedURL) { |
| // Check URLs. |
| TopSitesQuerier querier; |
| querier.QueryAllTopSites(top_sites(), false, true); |
| - ASSERT_EQ(8u + GetPrepopulatePages().size(), querier.urls().size()); |
| + ASSERT_EQ(8u + GetPrepopulatedPages().size(), querier.urls().size()); |
| EXPECT_EQ("http://forced/3", querier.urls()[0].url.spec()); |
| EXPECT_EQ(1000u, querier.urls()[0].last_forced_time.ToJsTime()); |
| EXPECT_EQ("http://forced/0", querier.urls()[1].url.spec()); |
| @@ -1590,7 +1609,7 @@ TEST_F(TopSitesImplTest, AddForcedURL) { |
| // Check relevant URLs. |
| querier.QueryAllTopSites(top_sites(), false, true); |
| - ASSERT_EQ(8u + GetPrepopulatePages().size(), querier.urls().size()); |
| + ASSERT_EQ(8u + GetPrepopulatedPages().size(), querier.urls().size()); |
| EXPECT_EQ("http://forced/1", querier.urls()[0].url.spec()); |
| EXPECT_EQ(1000u, querier.urls()[0].last_forced_time.ToJsTime()); |
| EXPECT_EQ("http://forced/3", querier.urls()[3].url.spec()); |
| @@ -1602,7 +1621,7 @@ TEST_F(TopSitesImplTest, AddForcedURL) { |
| EXPECT_TRUE(AddForcedURL(GURL("http://forced/5"), |
| base::Time::FromJsTime(4000))); |
| querier.QueryAllTopSites(top_sites(), false, true); |
| - ASSERT_EQ(9u + GetPrepopulatePages().size(), querier.urls().size()); |
| + ASSERT_EQ(9u + GetPrepopulatedPages().size(), querier.urls().size()); |
| EXPECT_EQ(4000u, querier.urls()[3].last_forced_time.ToJsTime()); |
| EXPECT_EQ(4000u, querier.urls()[4].last_forced_time.ToJsTime()); |
| // We don't care which order they get sorted in. |