| 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 044f3bc2eeb80839338cf3ff56497ae1b95c572f..9cd07aa5a3915d7d87ae1b4331f5f78b6dd9e4d9 100644
|
| --- a/chrome/browser/history/top_sites_impl_unittest.cc
|
| +++ b/chrome/browser/history/top_sites_impl_unittest.cc
|
| @@ -8,15 +8,19 @@
|
| #include "base/path_service.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/task/cancelable_task_tracker.h"
|
| +#include "chrome/browser/chrome_notification_types.h"
|
| #include "chrome/browser/history/history_db_task.h"
|
| +#include "chrome/browser/history/history_notifications.h"
|
| #include "chrome/browser/history/history_service_factory.h"
|
| #include "chrome/browser/history/history_types.h"
|
| #include "chrome/browser/history/history_unittest_base.h"
|
| +#include "chrome/browser/history/top_sites.h"
|
| #include "chrome/browser/history/top_sites_cache.h"
|
| #include "chrome/browser/history/top_sites_impl.h"
|
| #include "chrome/common/chrome_constants.h"
|
| #include "chrome/common/chrome_paths.h"
|
| #include "chrome/test/base/testing_profile.h"
|
| +#include "content/public/browser/notification_service.h"
|
| #include "content/public/test/test_browser_thread.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "third_party/skia/include/core/SkBitmap.h"
|
| @@ -25,6 +29,44 @@
|
|
|
| using content::BrowserThread;
|
|
|
| +class TestTopSitesObserver : public history::TopSitesObserver {
|
| + public:
|
| + explicit TestTopSitesObserver(Profile* profile, history::TopSites* top_sites);
|
| + virtual ~TestTopSitesObserver();
|
| + // TopSitesObserver:
|
| + virtual void TopSitesLoaded(history::TopSites* top_sites) OVERRIDE;
|
| + virtual void TopSitesChanged(history::TopSites* top_sites) OVERRIDE;
|
| +
|
| + private:
|
| + Profile* profile_;
|
| + history::TopSites* top_sites_;
|
| +};
|
| +
|
| +TestTopSitesObserver::~TestTopSitesObserver() {
|
| + top_sites_->RemoveObserver(this);
|
| +}
|
| +
|
| +TestTopSitesObserver::TestTopSitesObserver(Profile* profile,
|
| + history::TopSites* top_sites)
|
| + : profile_(profile), top_sites_(top_sites) {
|
| + DCHECK(top_sites_);
|
| + top_sites_->AddObserver(this);
|
| +}
|
| +
|
| +void TestTopSitesObserver::TopSitesLoaded(history::TopSites* top_sites) {
|
| + content::NotificationService::current()->Notify(
|
| + chrome::NOTIFICATION_TOP_SITES_LOADED,
|
| + content::Source<Profile>(profile_),
|
| + content::Details<history::TopSites>(top_sites));
|
| +}
|
| +
|
| +void TestTopSitesObserver::TopSitesChanged(history::TopSites* top_sites) {
|
| + content::NotificationService::current()->Notify(
|
| + chrome::NOTIFICATION_TOP_SITES_CHANGED,
|
| + content::Source<Profile>(profile_),
|
| + content::NotificationService::NoDetails());
|
| +}
|
| +
|
| namespace history {
|
|
|
| namespace {
|
| @@ -140,12 +182,13 @@ class TopSitesImplTest : public HistoryUnitTestBase {
|
| profile_.reset(new TestingProfile);
|
| if (CreateHistoryAndTopSites()) {
|
| ASSERT_TRUE(profile_->CreateHistoryService(false, false));
|
| - profile_->CreateTopSites();
|
| + CreateTopSitesAndObserver();
|
| profile_->BlockUntilTopSitesLoaded();
|
| }
|
| }
|
|
|
| virtual void TearDown() {
|
| + top_sites_observer_.reset();
|
| profile_.reset();
|
| }
|
|
|
| @@ -281,7 +324,7 @@ class TopSitesImplTest : public HistoryUnitTestBase {
|
| // Recreates top sites. This forces top sites to reread from the db.
|
| void RecreateTopSitesAndBlock() {
|
| // Recreate TopSites and wait for it to load.
|
| - profile()->CreateTopSites();
|
| + CreateTopSitesAndObserver();
|
| // As history already loaded we have to fake this call.
|
| profile()->BlockUntilTopSitesLoaded();
|
| }
|
| @@ -326,12 +369,21 @@ class TopSitesImplTest : public HistoryUnitTestBase {
|
| top_sites()->thread_safe_cache_->SetTopSites(empty);
|
| }
|
|
|
| + void CreateTopSitesAndObserver() {
|
| + if (top_sites_observer_)
|
| + top_sites_observer_.reset();
|
| +
|
| + profile_->CreateTopSites();
|
| + top_sites_observer_.reset(
|
| + new TestTopSitesObserver(profile_.get(), profile_->GetTopSites()));
|
| + }
|
| +
|
| private:
|
| base::MessageLoopForUI message_loop_;
|
| content::TestBrowserThread ui_thread_;
|
| content::TestBrowserThread db_thread_;
|
| scoped_ptr<TestingProfile> profile_;
|
| -
|
| + scoped_ptr<TestTopSitesObserver> top_sites_observer_;
|
| // To cancel HistoryService tasks.
|
| base::CancelableTaskTracker history_tracker_;
|
|
|
| @@ -982,7 +1034,7 @@ TEST_F(TopSitesImplTest, GetUpdateDelay) {
|
| // has loaded.
|
| TEST_F(TopSitesImplTest, NotifyCallbacksWhenLoaded) {
|
| // Recreate top sites. It won't be loaded now.
|
| - profile()->CreateTopSites();
|
| + CreateTopSitesAndObserver();
|
|
|
| EXPECT_FALSE(IsTopSitesLoaded());
|
|
|
| @@ -1023,7 +1075,7 @@ TEST_F(TopSitesImplTest, NotifyCallbacksWhenLoaded) {
|
| SetTopSites(pages);
|
|
|
| // Recreate top sites. It won't be loaded now.
|
| - profile()->CreateTopSites();
|
| + CreateTopSitesAndObserver();
|
|
|
| EXPECT_FALSE(IsTopSitesLoaded());
|
|
|
| @@ -1068,7 +1120,7 @@ TEST_F(TopSitesImplTest, NotifyCallbacksWhenLoaded) {
|
| // Makes sure canceled requests are not notified.
|
| TEST_F(TopSitesImplTest, CancelingRequestsForTopSites) {
|
| // Recreate top sites. It won't be loaded now.
|
| - profile()->CreateTopSites();
|
| + CreateTopSitesAndObserver();
|
|
|
| EXPECT_FALSE(IsTopSitesLoaded());
|
|
|
|
|