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

Unified Diff: chrome/browser/history/top_sites_impl_unittest.cc

Issue 870063002: Componentize TopSites, TopSitesBackend, TopSitesDatabase (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@815983002
Patch Set: Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
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.

Powered by Google App Engine
This is Rietveld 408576698