| 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/memory/weak_ptr.h" | 6 #include "base/memory/weak_ptr.h" |
| 7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "base/task/cancelable_task_tracker.h" | 9 #include "base/task/cancelable_task_tracker.h" |
| 10 #include "chrome/browser/history/history_service_factory.h" | 10 #include "chrome/browser/history/history_service_factory.h" |
| 11 #include "chrome/browser/history/top_sites.h" | |
| 12 #include "chrome/browser/history/top_sites_factory.h" | 11 #include "chrome/browser/history/top_sites_factory.h" |
| 13 #include "chrome/browser/history/top_sites_impl.h" | 12 #include "chrome/browser/history/top_sites_impl.h" |
| 14 #include "chrome/common/chrome_constants.h" | 13 #include "chrome/common/chrome_constants.h" |
| 15 #include "chrome/common/chrome_paths.h" | 14 #include "chrome/common/chrome_paths.h" |
| 16 #include "chrome/test/base/testing_profile.h" | 15 #include "chrome/test/base/testing_profile.h" |
| 17 #include "components/history/core/browser/history_db_task.h" | 16 #include "components/history/core/browser/history_db_task.h" |
| 18 #include "components/history/core/browser/history_types.h" | 17 #include "components/history/core/browser/history_types.h" |
| 18 #include "components/history/core/browser/top_sites.h" |
| 19 #include "components/history/core/browser/top_sites_cache.h" | 19 #include "components/history/core/browser/top_sites_cache.h" |
| 20 #include "components/history/core/browser/top_sites_observer.h" | 20 #include "components/history/core/browser/top_sites_observer.h" |
| 21 #include "components/history/core/test/history_unittest_base.h" | 21 #include "components/history/core/test/history_unittest_base.h" |
| 22 #include "content/public/test/test_browser_thread.h" | 22 #include "content/public/test/test_browser_thread.h" |
| 23 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
| 24 #include "third_party/skia/include/core/SkBitmap.h" | 24 #include "third_party/skia/include/core/SkBitmap.h" |
| 25 #include "ui/gfx/codec/jpeg_codec.h" | 25 #include "ui/gfx/codec/jpeg_codec.h" |
| 26 #include "url/gurl.h" | 26 #include "url/gurl.h" |
| 27 | 27 |
| 28 using content::BrowserThread; | 28 using content::BrowserThread; |
| 29 | 29 |
| 30 namespace history { | 30 namespace history { |
| 31 | 31 |
| 32 namespace { | 32 namespace { |
| 33 | 33 |
| 34 static const char kPrepopulatedPageURL[] = |
| 35 "http://www.google.com/int/chrome/welcome.html"; |
| 36 |
| 37 // Create a TopSites implementation for testing. |
| 38 scoped_refptr<RefcountedKeyedService> BuildTopSitesImpl( |
| 39 content::BrowserContext* context) { |
| 40 PrepopulatedPageList prepopulated_pages; |
| 41 prepopulated_pages.push_back(PrepopulatedPage(GURL(kPrepopulatedPageURL), |
| 42 base::string16(), -1, -1, 0)); |
| 43 |
| 44 scoped_refptr<TopSitesImpl> top_sites = |
| 45 new TopSitesImpl(static_cast<Profile*>(context), prepopulated_pages); |
| 46 top_sites->Init( |
| 47 context->GetPath().Append(chrome::kTopSitesFilename), |
| 48 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB)); |
| 49 return top_sites; |
| 50 } |
| 51 |
| 34 // Used by WaitForHistory, see it for details. | 52 // Used by WaitForHistory, see it for details. |
| 35 class WaitForHistoryTask : public HistoryDBTask { | 53 class WaitForHistoryTask : public HistoryDBTask { |
| 36 public: | 54 public: |
| 37 WaitForHistoryTask() {} | 55 WaitForHistoryTask() {} |
| 38 | 56 |
| 39 bool RunOnDBThread(HistoryBackend* backend, HistoryDatabase* db) override { | 57 bool RunOnDBThread(HistoryBackend* backend, HistoryDatabase* db) override { |
| 40 return true; | 58 return true; |
| 41 } | 59 } |
| 42 | 60 |
| 43 void DoneRunOnMainThread() override { base::MessageLoop::current()->Quit(); } | 61 void DoneRunOnMainThread() override { base::MessageLoop::current()->Quit(); } |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 public: | 150 public: |
| 133 TopSitesImplTest() | 151 TopSitesImplTest() |
| 134 : ui_thread_(BrowserThread::UI, &message_loop_), | 152 : ui_thread_(BrowserThread::UI, &message_loop_), |
| 135 db_thread_(BrowserThread::DB, &message_loop_) { | 153 db_thread_(BrowserThread::DB, &message_loop_) { |
| 136 } | 154 } |
| 137 | 155 |
| 138 void SetUp() override { | 156 void SetUp() override { |
| 139 profile_.reset(new TestingProfile); | 157 profile_.reset(new TestingProfile); |
| 140 if (CreateHistoryAndTopSites()) { | 158 if (CreateHistoryAndTopSites()) { |
| 141 ASSERT_TRUE(profile_->CreateHistoryService(false, false)); | 159 ASSERT_TRUE(profile_->CreateHistoryService(false, false)); |
| 142 CreateTopSites(); | 160 ResetTopSites(); |
| 143 profile_->BlockUntilTopSitesLoaded(); | 161 profile_->BlockUntilTopSitesLoaded(); |
| 144 } | 162 } |
| 145 } | 163 } |
| 146 | 164 |
| 147 void TearDown() override { | 165 void TearDown() override { |
| 148 profile_.reset(); | 166 profile_.reset(); |
| 149 } | 167 } |
| 150 | 168 |
| 151 // Returns true if history and top sites should be created in SetUp. | 169 // Returns true if history and top sites should be created in SetUp. |
| 152 virtual bool CreateHistoryAndTopSites() { | 170 virtual bool CreateHistoryAndTopSites() { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 TopSitesImpl* top_sites() { | 216 TopSitesImpl* top_sites() { |
| 199 return static_cast<TopSitesImpl*>( | 217 return static_cast<TopSitesImpl*>( |
| 200 TopSitesFactory::GetForProfile(profile_.get()).get()); | 218 TopSitesFactory::GetForProfile(profile_.get()).get()); |
| 201 } | 219 } |
| 202 TestingProfile* profile() {return profile_.get();} | 220 TestingProfile* profile() {return profile_.get();} |
| 203 HistoryService* history_service() { | 221 HistoryService* history_service() { |
| 204 return HistoryServiceFactory::GetForProfile( | 222 return HistoryServiceFactory::GetForProfile( |
| 205 profile_.get(), ServiceAccessType::EXPLICIT_ACCESS); | 223 profile_.get(), ServiceAccessType::EXPLICIT_ACCESS); |
| 206 } | 224 } |
| 207 | 225 |
| 208 MostVisitedURLList GetPrepopulatePages() { | 226 PrepopulatedPageList GetPrepopulatedPages() { |
| 209 return top_sites()->GetPrepopulatePages(); | 227 return top_sites()->GetPrepopulatedPages(); |
| 210 } | 228 } |
| 211 | 229 |
| 212 // Returns true if the TopSitesQuerier contains the prepopulate data starting | 230 // Returns true if the TopSitesQuerier contains the prepopulate data starting |
| 213 // at |start_index|. | 231 // at |start_index|. |
| 214 void ContainsPrepopulatePages(const TopSitesQuerier& querier, | 232 void ContainsPrepopulatePages(const TopSitesQuerier& querier, |
| 215 size_t start_index) { | 233 size_t start_index) { |
| 216 MostVisitedURLList prepopulate_urls = GetPrepopulatePages(); | 234 PrepopulatedPageList prepopulate_pages = GetPrepopulatedPages(); |
| 217 ASSERT_LE(start_index + prepopulate_urls.size(), querier.urls().size()); | 235 ASSERT_LE(start_index + prepopulate_pages.size(), querier.urls().size()); |
| 218 for (size_t i = 0; i < prepopulate_urls.size(); ++i) { | 236 for (size_t i = 0; i < prepopulate_pages.size(); ++i) { |
| 219 EXPECT_EQ(prepopulate_urls[i].url.spec(), | 237 EXPECT_EQ(prepopulate_pages[i].most_visited.url.spec(), |
| 220 querier.urls()[start_index + i].url.spec()) << " @ index " << | 238 querier.urls()[start_index + i].url.spec()) |
| 221 i; | 239 << " @ index " << i; |
| 222 } | 240 } |
| 223 } | 241 } |
| 224 | 242 |
| 225 // Used for callbacks from history. | |
| 226 void EmptyCallback() { | |
| 227 } | |
| 228 | |
| 229 // Quit the current message loop when invoked. Useful when running a nested | 243 // Quit the current message loop when invoked. Useful when running a nested |
| 230 // message loop. | 244 // message loop. |
| 231 void QuitCallback() { | 245 void QuitCallback() { |
| 232 base::MessageLoop::current()->Quit(); | 246 base::MessageLoop::current()->Quit(); |
| 233 } | 247 } |
| 234 | 248 |
| 235 // Adds a page to history. | 249 // Adds a page to history. |
| 236 void AddPageToHistory(const GURL& url) { | 250 void AddPageToHistory(const GURL& url) { |
| 237 RedirectList redirects; | 251 RedirectList redirects; |
| 238 redirects.push_back(url); | 252 redirects.push_back(url); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 bool ThumbnailEqualsBytes(const gfx::Image& image, | 288 bool ThumbnailEqualsBytes(const gfx::Image& image, |
| 275 base::RefCountedMemory* bytes) { | 289 base::RefCountedMemory* bytes) { |
| 276 scoped_refptr<base::RefCountedBytes> encoded_image; | 290 scoped_refptr<base::RefCountedBytes> encoded_image; |
| 277 TopSitesImpl::EncodeBitmap(image, &encoded_image); | 291 TopSitesImpl::EncodeBitmap(image, &encoded_image); |
| 278 return ThumbnailsAreEqual(encoded_image.get(), bytes); | 292 return ThumbnailsAreEqual(encoded_image.get(), bytes); |
| 279 } | 293 } |
| 280 | 294 |
| 281 // Recreates top sites. This forces top sites to reread from the db. | 295 // Recreates top sites. This forces top sites to reread from the db. |
| 282 void RecreateTopSitesAndBlock() { | 296 void RecreateTopSitesAndBlock() { |
| 283 // Recreate TopSites and wait for it to load. | 297 // Recreate TopSites and wait for it to load. |
| 284 CreateTopSites(); | 298 ResetTopSites(); |
| 285 // As history already loaded we have to fake this call. | 299 // As history already loaded we have to fake this call. |
| 286 profile()->BlockUntilTopSitesLoaded(); | 300 profile()->BlockUntilTopSitesLoaded(); |
| 287 } | 301 } |
| 288 | 302 |
| 289 // Wrappers that allow private TopSites functions to be called from the | 303 // Wrappers that allow private TopSites functions to be called from the |
| 290 // individual tests without making them all be friends. | 304 // individual tests without making them all be friends. |
| 291 GURL GetCanonicalURL(const GURL& url) { | 305 GURL GetCanonicalURL(const GURL& url) { |
| 292 return top_sites()->cache_->GetCanonicalURL(url); | 306 return top_sites()->cache_->GetCanonicalURL(url); |
| 293 } | 307 } |
| 294 | 308 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 319 bool AddPrepopulatedPages(MostVisitedURLList* urls) { | 333 bool AddPrepopulatedPages(MostVisitedURLList* urls) { |
| 320 return top_sites()->AddPrepopulatedPages(urls, 0u); | 334 return top_sites()->AddPrepopulatedPages(urls, 0u); |
| 321 } | 335 } |
| 322 | 336 |
| 323 void EmptyThreadSafeCache() { | 337 void EmptyThreadSafeCache() { |
| 324 base::AutoLock lock(top_sites()->lock_); | 338 base::AutoLock lock(top_sites()->lock_); |
| 325 MostVisitedURLList empty; | 339 MostVisitedURLList empty; |
| 326 top_sites()->thread_safe_cache_->SetTopSites(empty); | 340 top_sites()->thread_safe_cache_->SetTopSites(empty); |
| 327 } | 341 } |
| 328 | 342 |
| 329 void CreateTopSites() { profile_->CreateTopSites(); } | 343 void ResetTopSites() { |
| 344 // TopSites shutdown takes some time as it happens on the DB thread and does |
| 345 // not support the existence of two TopSitesImpl for a single profile (due |
| 346 // to database locking). TestingProfile::DestroyTopSites() waits for the |
| 347 // TopSites cleanup to complete before returning. |
| 348 profile_->DestroyTopSites(); |
| 349 TopSitesFactory::GetInstance()->SetTestingFactory(profile_.get(), |
| 350 BuildTopSitesImpl); |
| 351 } |
| 330 | 352 |
| 331 private: | 353 private: |
| 332 base::MessageLoopForUI message_loop_; | 354 base::MessageLoopForUI message_loop_; |
| 333 content::TestBrowserThread ui_thread_; | 355 content::TestBrowserThread ui_thread_; |
| 334 content::TestBrowserThread db_thread_; | 356 content::TestBrowserThread db_thread_; |
| 335 scoped_ptr<TestingProfile> profile_; | 357 scoped_ptr<TestingProfile> profile_; |
| 336 // To cancel HistoryService tasks. | 358 // To cancel HistoryService tasks. |
| 337 base::CancelableTaskTracker history_tracker_; | 359 base::CancelableTaskTracker history_tracker_; |
| 338 | 360 |
| 339 // To cancel TopSitesBackend tasks. | 361 // To cancel TopSitesBackend tasks. |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 633 | 655 |
| 634 StartQueryForMostVisited(); | 656 StartQueryForMostVisited(); |
| 635 WaitForHistory(); | 657 WaitForHistory(); |
| 636 | 658 |
| 637 TopSitesQuerier querier; | 659 TopSitesQuerier querier; |
| 638 querier.QueryTopSites(top_sites(), false); | 660 querier.QueryTopSites(top_sites(), false); |
| 639 | 661 |
| 640 ASSERT_EQ(1, querier.number_of_callbacks()); | 662 ASSERT_EQ(1, querier.number_of_callbacks()); |
| 641 | 663 |
| 642 // 2 extra prepopulated URLs. | 664 // 2 extra prepopulated URLs. |
| 643 ASSERT_EQ(2u + GetPrepopulatePages().size(), querier.urls().size()); | 665 ASSERT_EQ(2u + GetPrepopulatedPages().size(), querier.urls().size()); |
| 644 EXPECT_EQ(news, querier.urls()[0].url); | 666 EXPECT_EQ(news, querier.urls()[0].url); |
| 645 EXPECT_EQ(google, querier.urls()[1].url); | 667 EXPECT_EQ(google, querier.urls()[1].url); |
| 646 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 2)); | 668 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 2)); |
| 647 } | 669 } |
| 648 | 670 |
| 649 // Makes sure changes done to top sites get mirrored to the db. | 671 // Makes sure changes done to top sites get mirrored to the db. |
| 650 TEST_F(TopSitesImplTest, SaveToDB) { | 672 TEST_F(TopSitesImplTest, SaveToDB) { |
| 651 MostVisitedURL url; | 673 MostVisitedURL url; |
| 652 GURL asdf_url("http://asdf.com"); | 674 GURL asdf_url("http://asdf.com"); |
| 653 base::string16 asdf_title(base::ASCIIToUTF16("ASDF")); | 675 base::string16 asdf_title(base::ASCIIToUTF16("ASDF")); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 666 // Add a thumbnail. | 688 // Add a thumbnail. |
| 667 gfx::Image tmp_bitmap(CreateBitmap(SK_ColorBLUE)); | 689 gfx::Image tmp_bitmap(CreateBitmap(SK_ColorBLUE)); |
| 668 ASSERT_TRUE(top_sites()->SetPageThumbnail(asdf_url, tmp_bitmap, | 690 ASSERT_TRUE(top_sites()->SetPageThumbnail(asdf_url, tmp_bitmap, |
| 669 ThumbnailScore())); | 691 ThumbnailScore())); |
| 670 | 692 |
| 671 RecreateTopSitesAndBlock(); | 693 RecreateTopSitesAndBlock(); |
| 672 | 694 |
| 673 { | 695 { |
| 674 TopSitesQuerier querier; | 696 TopSitesQuerier querier; |
| 675 querier.QueryTopSites(top_sites(), false); | 697 querier.QueryTopSites(top_sites(), false); |
| 676 ASSERT_EQ(1u + GetPrepopulatePages().size(), querier.urls().size()); | 698 ASSERT_EQ(1u + GetPrepopulatedPages().size(), querier.urls().size()); |
| 677 EXPECT_EQ(asdf_url, querier.urls()[0].url); | 699 EXPECT_EQ(asdf_url, querier.urls()[0].url); |
| 678 EXPECT_EQ(asdf_title, querier.urls()[0].title); | 700 EXPECT_EQ(asdf_title, querier.urls()[0].title); |
| 679 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 1)); | 701 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 1)); |
| 680 | 702 |
| 681 scoped_refptr<base::RefCountedMemory> read_data; | 703 scoped_refptr<base::RefCountedMemory> read_data; |
| 682 EXPECT_TRUE(top_sites()->GetPageThumbnail(asdf_url, false, &read_data)); | 704 EXPECT_TRUE(top_sites()->GetPageThumbnail(asdf_url, false, &read_data)); |
| 683 EXPECT_TRUE(ThumbnailEqualsBytes(tmp_bitmap, read_data.get())); | 705 EXPECT_TRUE(ThumbnailEqualsBytes(tmp_bitmap, read_data.get())); |
| 684 } | 706 } |
| 685 | 707 |
| 686 MostVisitedURL url2; | 708 MostVisitedURL url2; |
| 687 url2.url = google_url; | 709 url2.url = google_url; |
| 688 url2.title = google_title; | 710 url2.title = google_title; |
| 689 url2.redirects.push_back(url2.url); | 711 url2.redirects.push_back(url2.url); |
| 690 | 712 |
| 691 AddPageToHistory(url2.url, url2.title); | 713 AddPageToHistory(url2.url, url2.title); |
| 692 | 714 |
| 693 // Add new thumbnail at rank 0 and shift the other result to 1. | 715 // Add new thumbnail at rank 0 and shift the other result to 1. |
| 694 ASSERT_TRUE(top_sites()->SetPageThumbnail(google_url, | 716 ASSERT_TRUE(top_sites()->SetPageThumbnail(google_url, |
| 695 tmp_bitmap, | 717 tmp_bitmap, |
| 696 ThumbnailScore())); | 718 ThumbnailScore())); |
| 697 | 719 |
| 698 // Make TopSites reread from the db. | 720 // Make TopSites reread from the db. |
| 699 RefreshTopSitesAndRecreate(); | 721 RefreshTopSitesAndRecreate(); |
| 700 | 722 |
| 701 { | 723 { |
| 702 TopSitesQuerier querier; | 724 TopSitesQuerier querier; |
| 703 querier.QueryTopSites(top_sites(), false); | 725 querier.QueryTopSites(top_sites(), false); |
| 704 ASSERT_EQ(2u + GetPrepopulatePages().size(), querier.urls().size()); | 726 ASSERT_EQ(2u + GetPrepopulatedPages().size(), querier.urls().size()); |
| 705 EXPECT_EQ(asdf_url, querier.urls()[0].url); | 727 EXPECT_EQ(asdf_url, querier.urls()[0].url); |
| 706 EXPECT_EQ(asdf_title, querier.urls()[0].title); | 728 EXPECT_EQ(asdf_title, querier.urls()[0].title); |
| 707 EXPECT_EQ(google_url, querier.urls()[1].url); | 729 EXPECT_EQ(google_url, querier.urls()[1].url); |
| 708 EXPECT_EQ(google_title, querier.urls()[1].title); | 730 EXPECT_EQ(google_title, querier.urls()[1].title); |
| 709 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 2)); | 731 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 2)); |
| 710 } | 732 } |
| 711 } | 733 } |
| 712 | 734 |
| 713 // Makes sure forced URLs in top sites get mirrored to the db. | 735 // Makes sure forced URLs in top sites get mirrored to the db. |
| 714 TEST_F(TopSitesImplTest, SaveForcedToDB) { | 736 TEST_F(TopSitesImplTest, SaveForcedToDB) { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 741 // Force-flush the cache to ensure we don't reread from it inadvertently. | 763 // Force-flush the cache to ensure we don't reread from it inadvertently. |
| 742 EmptyThreadSafeCache(); | 764 EmptyThreadSafeCache(); |
| 743 | 765 |
| 744 // Make TopSites reread from the db. | 766 // Make TopSites reread from the db. |
| 745 StartQueryForMostVisited(); | 767 StartQueryForMostVisited(); |
| 746 WaitForHistory(); | 768 WaitForHistory(); |
| 747 | 769 |
| 748 TopSitesQuerier querier; | 770 TopSitesQuerier querier; |
| 749 querier.QueryAllTopSites(top_sites(), true, true); | 771 querier.QueryAllTopSites(top_sites(), true, true); |
| 750 | 772 |
| 751 ASSERT_EQ(4u + GetPrepopulatePages().size(), querier.urls().size()); | 773 ASSERT_EQ(4u + GetPrepopulatedPages().size(), querier.urls().size()); |
| 752 EXPECT_EQ(GURL("http://forced1"), querier.urls()[0].url); | 774 EXPECT_EQ(GURL("http://forced1"), querier.urls()[0].url); |
| 753 EXPECT_EQ(base::ASCIIToUTF16("forced1"), querier.urls()[0].title); | 775 EXPECT_EQ(base::ASCIIToUTF16("forced1"), querier.urls()[0].title); |
| 754 SkBitmap thumbnail = GetThumbnail(GURL("http://forced1")); | 776 SkBitmap thumbnail = GetThumbnail(GURL("http://forced1")); |
| 755 ASSERT_EQ(orig_thumbnail.getSize(), thumbnail.getSize()); | 777 ASSERT_EQ(orig_thumbnail.getSize(), thumbnail.getSize()); |
| 756 orig_thumbnail.lockPixels(); | 778 orig_thumbnail.lockPixels(); |
| 757 thumbnail.lockPixels(); | 779 thumbnail.lockPixels(); |
| 758 EXPECT_EQ(0, memcmp(orig_thumbnail.getPixels(), thumbnail.getPixels(), | 780 EXPECT_EQ(0, memcmp(orig_thumbnail.getPixels(), thumbnail.getPixels(), |
| 759 orig_thumbnail.getSize())); | 781 orig_thumbnail.getSize())); |
| 760 thumbnail.unlockPixels(); | 782 thumbnail.unlockPixels(); |
| 761 orig_thumbnail.unlockPixels(); | 783 orig_thumbnail.unlockPixels(); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 791 | 813 |
| 792 base::Time add_time(base::Time::Now()); | 814 base::Time add_time(base::Time::Now()); |
| 793 AddPageToHistory(url.url, url.title, url.redirects, add_time); | 815 AddPageToHistory(url.url, url.title, url.redirects, add_time); |
| 794 | 816 |
| 795 RefreshTopSitesAndRecreate(); | 817 RefreshTopSitesAndRecreate(); |
| 796 | 818 |
| 797 { | 819 { |
| 798 TopSitesQuerier querier; | 820 TopSitesQuerier querier; |
| 799 querier.QueryTopSites(top_sites(), false); | 821 querier.QueryTopSites(top_sites(), false); |
| 800 | 822 |
| 801 ASSERT_EQ(1u + GetPrepopulatePages().size(), querier.urls().size()); | 823 ASSERT_EQ(1u + GetPrepopulatedPages().size(), querier.urls().size()); |
| 802 EXPECT_EQ(asdf_url, querier.urls()[0].url); | 824 EXPECT_EQ(asdf_url, querier.urls()[0].url); |
| 803 EXPECT_EQ(asdf_title, querier.urls()[0].title); | 825 EXPECT_EQ(asdf_title, querier.urls()[0].title); |
| 804 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 1)); | 826 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 1)); |
| 805 | 827 |
| 806 scoped_refptr<base::RefCountedMemory> read_data; | 828 scoped_refptr<base::RefCountedMemory> read_data; |
| 807 EXPECT_TRUE(top_sites()->GetPageThumbnail(asdf_url, false, &read_data)); | 829 EXPECT_TRUE(top_sites()->GetPageThumbnail(asdf_url, false, &read_data)); |
| 808 EXPECT_TRUE(ThumbnailEqualsBytes(asdf_thumbnail, read_data.get())); | 830 EXPECT_TRUE(ThumbnailEqualsBytes(asdf_thumbnail, read_data.get())); |
| 809 } | 831 } |
| 810 | 832 |
| 811 MostVisitedURL url2; | 833 MostVisitedURL url2; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 825 ASSERT_TRUE(top_sites()->SetPageThumbnail( | 847 ASSERT_TRUE(top_sites()->SetPageThumbnail( |
| 826 url2.url, google_thumbnail, ThumbnailScore())); | 848 url2.url, google_thumbnail, ThumbnailScore())); |
| 827 | 849 |
| 828 RefreshTopSitesAndRecreate(); | 850 RefreshTopSitesAndRecreate(); |
| 829 | 851 |
| 830 { | 852 { |
| 831 scoped_refptr<base::RefCountedMemory> read_data; | 853 scoped_refptr<base::RefCountedMemory> read_data; |
| 832 TopSitesQuerier querier; | 854 TopSitesQuerier querier; |
| 833 querier.QueryTopSites(top_sites(), false); | 855 querier.QueryTopSites(top_sites(), false); |
| 834 | 856 |
| 835 ASSERT_EQ(2u + GetPrepopulatePages().size(), querier.urls().size()); | 857 ASSERT_EQ(2u + GetPrepopulatedPages().size(), querier.urls().size()); |
| 836 EXPECT_EQ(google1_url, querier.urls()[0].url); | 858 EXPECT_EQ(google1_url, querier.urls()[0].url); |
| 837 EXPECT_EQ(google_title, querier.urls()[0].title); | 859 EXPECT_EQ(google_title, querier.urls()[0].title); |
| 838 ASSERT_EQ(3u, querier.urls()[0].redirects.size()); | 860 ASSERT_EQ(3u, querier.urls()[0].redirects.size()); |
| 839 EXPECT_TRUE(top_sites()->GetPageThumbnail(google3_url, false, &read_data)); | 861 EXPECT_TRUE(top_sites()->GetPageThumbnail(google3_url, false, &read_data)); |
| 840 EXPECT_TRUE(ThumbnailEqualsBytes(google_thumbnail, read_data.get())); | 862 EXPECT_TRUE(ThumbnailEqualsBytes(google_thumbnail, read_data.get())); |
| 841 | 863 |
| 842 EXPECT_EQ(asdf_url, querier.urls()[1].url); | 864 EXPECT_EQ(asdf_url, querier.urls()[1].url); |
| 843 EXPECT_EQ(asdf_title, querier.urls()[1].title); | 865 EXPECT_EQ(asdf_title, querier.urls()[1].title); |
| 844 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 2)); | 866 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 2)); |
| 845 } | 867 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 894 | 916 |
| 895 AddPageToHistory(google1_url, google_title); | 917 AddPageToHistory(google1_url, google_title); |
| 896 AddPageToHistory(news_url, news_title); | 918 AddPageToHistory(news_url, news_title); |
| 897 | 919 |
| 898 RefreshTopSitesAndRecreate(); | 920 RefreshTopSitesAndRecreate(); |
| 899 | 921 |
| 900 { | 922 { |
| 901 TopSitesQuerier querier; | 923 TopSitesQuerier querier; |
| 902 querier.QueryTopSites(top_sites(), false); | 924 querier.QueryTopSites(top_sites(), false); |
| 903 | 925 |
| 904 ASSERT_EQ(GetPrepopulatePages().size() + 2, querier.urls().size()); | 926 ASSERT_EQ(GetPrepopulatedPages().size() + 2, querier.urls().size()); |
| 905 } | 927 } |
| 906 | 928 |
| 907 DeleteURL(news_url); | 929 DeleteURL(news_url); |
| 908 | 930 |
| 909 // Wait for history to process the deletion. | 931 // Wait for history to process the deletion. |
| 910 WaitForHistory(); | 932 WaitForHistory(); |
| 911 | 933 |
| 912 { | 934 { |
| 913 TopSitesQuerier querier; | 935 TopSitesQuerier querier; |
| 914 querier.QueryTopSites(top_sites(), false); | 936 querier.QueryTopSites(top_sites(), false); |
| 915 | 937 |
| 916 ASSERT_EQ(1u + GetPrepopulatePages().size(), querier.urls().size()); | 938 ASSERT_EQ(1u + GetPrepopulatedPages().size(), querier.urls().size()); |
| 917 EXPECT_EQ(google_title, querier.urls()[0].title); | 939 EXPECT_EQ(google_title, querier.urls()[0].title); |
| 918 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 1)); | 940 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 1)); |
| 919 } | 941 } |
| 920 | 942 |
| 921 // Now reload. This verifies topsites actually wrote the deletion to disk. | 943 // Now reload. This verifies topsites actually wrote the deletion to disk. |
| 922 RefreshTopSitesAndRecreate(); | 944 RefreshTopSitesAndRecreate(); |
| 923 | 945 |
| 924 { | 946 { |
| 925 TopSitesQuerier querier; | 947 TopSitesQuerier querier; |
| 926 querier.QueryTopSites(top_sites(), false); | 948 querier.QueryTopSites(top_sites(), false); |
| 927 | 949 |
| 928 ASSERT_EQ(1u + GetPrepopulatePages().size(), querier.urls().size()); | 950 ASSERT_EQ(1u + GetPrepopulatedPages().size(), querier.urls().size()); |
| 929 EXPECT_EQ(google_title, querier.urls()[0].title); | 951 EXPECT_EQ(google_title, querier.urls()[0].title); |
| 930 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 1)); | 952 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 1)); |
| 931 } | 953 } |
| 932 | 954 |
| 933 DeleteURL(google1_url); | 955 DeleteURL(google1_url); |
| 934 | 956 |
| 935 // Wait for history to process the deletion. | 957 // Wait for history to process the deletion. |
| 936 WaitForHistory(); | 958 WaitForHistory(); |
| 937 | 959 |
| 938 { | 960 { |
| 939 TopSitesQuerier querier; | 961 TopSitesQuerier querier; |
| 940 querier.QueryTopSites(top_sites(), false); | 962 querier.QueryTopSites(top_sites(), false); |
| 941 | 963 |
| 942 ASSERT_EQ(GetPrepopulatePages().size(), querier.urls().size()); | 964 ASSERT_EQ(GetPrepopulatedPages().size(), querier.urls().size()); |
| 943 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 0)); | 965 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 0)); |
| 944 } | 966 } |
| 945 | 967 |
| 946 // Now reload. This verifies topsites actually wrote the deletion to disk. | 968 // Now reload. This verifies topsites actually wrote the deletion to disk. |
| 947 RefreshTopSitesAndRecreate(); | 969 RefreshTopSitesAndRecreate(); |
| 948 | 970 |
| 949 { | 971 { |
| 950 TopSitesQuerier querier; | 972 TopSitesQuerier querier; |
| 951 querier.QueryTopSites(top_sites(), false); | 973 querier.QueryTopSites(top_sites(), false); |
| 952 | 974 |
| 953 ASSERT_EQ(GetPrepopulatePages().size(), querier.urls().size()); | 975 ASSERT_EQ(GetPrepopulatedPages().size(), querier.urls().size()); |
| 954 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 0)); | 976 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 0)); |
| 955 } | 977 } |
| 956 } | 978 } |
| 957 | 979 |
| 958 // Makes sure GetUpdateDelay is updated appropriately. | 980 // Makes sure GetUpdateDelay is updated appropriately. |
| 959 TEST_F(TopSitesImplTest, GetUpdateDelay) { | 981 TEST_F(TopSitesImplTest, GetUpdateDelay) { |
| 960 SetLastNumUrlsChanged(0); | 982 SetLastNumUrlsChanged(0); |
| 961 EXPECT_EQ(30, GetUpdateDelay().InSeconds()); | 983 EXPECT_EQ(30, GetUpdateDelay().InSeconds()); |
| 962 | 984 |
| 963 MostVisitedURLList url_list; | 985 MostVisitedURLList url_list; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 976 EXPECT_EQ(52, GetUpdateDelay().InMinutes()); | 998 EXPECT_EQ(52, GetUpdateDelay().InMinutes()); |
| 977 | 999 |
| 978 SetLastNumUrlsChanged(20); | 1000 SetLastNumUrlsChanged(20); |
| 979 EXPECT_EQ(1, GetUpdateDelay().InMinutes()); | 1001 EXPECT_EQ(1, GetUpdateDelay().InMinutes()); |
| 980 } | 1002 } |
| 981 | 1003 |
| 982 // Verifies that callbacks are notified correctly if requested before top sites | 1004 // Verifies that callbacks are notified correctly if requested before top sites |
| 983 // has loaded. | 1005 // has loaded. |
| 984 TEST_F(TopSitesImplTest, NotifyCallbacksWhenLoaded) { | 1006 TEST_F(TopSitesImplTest, NotifyCallbacksWhenLoaded) { |
| 985 // Recreate top sites. It won't be loaded now. | 1007 // Recreate top sites. It won't be loaded now. |
| 986 CreateTopSites(); | 1008 ResetTopSites(); |
| 987 | 1009 |
| 988 EXPECT_FALSE(IsTopSitesLoaded()); | 1010 EXPECT_FALSE(IsTopSitesLoaded()); |
| 989 | 1011 |
| 990 TopSitesQuerier querier1; | 1012 TopSitesQuerier querier1; |
| 991 TopSitesQuerier querier2; | 1013 TopSitesQuerier querier2; |
| 992 TopSitesQuerier querier3; | 1014 TopSitesQuerier querier3; |
| 993 | 1015 |
| 994 // Starts the queries. | 1016 // Starts the queries. |
| 995 querier1.QueryTopSites(top_sites(), false); | 1017 querier1.QueryTopSites(top_sites(), false); |
| 996 querier2.QueryTopSites(top_sites(), false); | 1018 querier2.QueryTopSites(top_sites(), false); |
| 997 querier3.QueryTopSites(top_sites(), false); | 1019 querier3.QueryTopSites(top_sites(), false); |
| 998 | 1020 |
| 999 // We shouldn't have gotten a callback. | 1021 // We shouldn't have gotten a callback. |
| 1000 EXPECT_EQ(0, querier1.number_of_callbacks()); | 1022 EXPECT_EQ(0, querier1.number_of_callbacks()); |
| 1001 EXPECT_EQ(0, querier2.number_of_callbacks()); | 1023 EXPECT_EQ(0, querier2.number_of_callbacks()); |
| 1002 EXPECT_EQ(0, querier3.number_of_callbacks()); | 1024 EXPECT_EQ(0, querier3.number_of_callbacks()); |
| 1003 | 1025 |
| 1004 // Wait for loading to complete. | 1026 // Wait for loading to complete. |
| 1005 profile()->BlockUntilTopSitesLoaded(); | 1027 profile()->BlockUntilTopSitesLoaded(); |
| 1006 | 1028 |
| 1007 // Now we should have gotten the callbacks. | 1029 // Now we should have gotten the callbacks. |
| 1008 EXPECT_EQ(1, querier1.number_of_callbacks()); | 1030 EXPECT_EQ(1, querier1.number_of_callbacks()); |
| 1009 EXPECT_EQ(GetPrepopulatePages().size(), querier1.urls().size()); | 1031 EXPECT_EQ(GetPrepopulatedPages().size(), querier1.urls().size()); |
| 1010 EXPECT_EQ(1, querier2.number_of_callbacks()); | 1032 EXPECT_EQ(1, querier2.number_of_callbacks()); |
| 1011 EXPECT_EQ(GetPrepopulatePages().size(), querier2.urls().size()); | 1033 EXPECT_EQ(GetPrepopulatedPages().size(), querier2.urls().size()); |
| 1012 EXPECT_EQ(1, querier3.number_of_callbacks()); | 1034 EXPECT_EQ(1, querier3.number_of_callbacks()); |
| 1013 EXPECT_EQ(GetPrepopulatePages().size(), querier3.urls().size()); | 1035 EXPECT_EQ(GetPrepopulatedPages().size(), querier3.urls().size()); |
| 1014 | 1036 |
| 1015 // Reset the top sites. | 1037 // Reset the top sites. |
| 1016 MostVisitedURLList pages; | 1038 MostVisitedURLList pages; |
| 1017 MostVisitedURL url; | 1039 MostVisitedURL url; |
| 1018 url.url = GURL("http://1.com/"); | 1040 url.url = GURL("http://1.com/"); |
| 1019 url.redirects.push_back(url.url); | 1041 url.redirects.push_back(url.url); |
| 1020 pages.push_back(url); | 1042 pages.push_back(url); |
| 1021 url.url = GURL("http://2.com/"); | 1043 url.url = GURL("http://2.com/"); |
| 1022 url.redirects.push_back(url.url); | 1044 url.redirects.push_back(url.url); |
| 1023 pages.push_back(url); | 1045 pages.push_back(url); |
| 1024 SetTopSites(pages); | 1046 SetTopSites(pages); |
| 1025 | 1047 |
| 1026 // Recreate top sites. It won't be loaded now. | 1048 // Recreate top sites. It won't be loaded now. |
| 1027 CreateTopSites(); | 1049 ResetTopSites(); |
| 1028 | 1050 |
| 1029 EXPECT_FALSE(IsTopSitesLoaded()); | 1051 EXPECT_FALSE(IsTopSitesLoaded()); |
| 1030 | 1052 |
| 1031 TopSitesQuerier querier4; | 1053 TopSitesQuerier querier4; |
| 1032 | 1054 |
| 1033 // Query again. | 1055 // Query again. |
| 1034 querier4.QueryTopSites(top_sites(), false); | 1056 querier4.QueryTopSites(top_sites(), false); |
| 1035 | 1057 |
| 1036 // We shouldn't have gotten a callback. | 1058 // We shouldn't have gotten a callback. |
| 1037 EXPECT_EQ(0, querier4.number_of_callbacks()); | 1059 EXPECT_EQ(0, querier4.number_of_callbacks()); |
| 1038 | 1060 |
| 1039 // Wait for loading to complete. | 1061 // Wait for loading to complete. |
| 1040 profile()->BlockUntilTopSitesLoaded(); | 1062 profile()->BlockUntilTopSitesLoaded(); |
| 1041 | 1063 |
| 1042 // Now we should have gotten the callbacks. | 1064 // Now we should have gotten the callbacks. |
| 1043 EXPECT_EQ(1, querier4.number_of_callbacks()); | 1065 EXPECT_EQ(1, querier4.number_of_callbacks()); |
| 1044 ASSERT_EQ(2u + GetPrepopulatePages().size(), querier4.urls().size()); | 1066 ASSERT_EQ(2u + GetPrepopulatedPages().size(), querier4.urls().size()); |
| 1045 | 1067 |
| 1046 EXPECT_EQ("http://1.com/", querier4.urls()[0].url.spec()); | 1068 EXPECT_EQ("http://1.com/", querier4.urls()[0].url.spec()); |
| 1047 EXPECT_EQ("http://2.com/", querier4.urls()[1].url.spec()); | 1069 EXPECT_EQ("http://2.com/", querier4.urls()[1].url.spec()); |
| 1048 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier4, 2)); | 1070 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier4, 2)); |
| 1049 | 1071 |
| 1050 // Reset the top sites again, this time don't reload. | 1072 // Reset the top sites again, this time don't reload. |
| 1051 url.url = GURL("http://3.com/"); | 1073 url.url = GURL("http://3.com/"); |
| 1052 url.redirects.push_back(url.url); | 1074 url.redirects.push_back(url.url); |
| 1053 pages.push_back(url); | 1075 pages.push_back(url); |
| 1054 SetTopSites(pages); | 1076 SetTopSites(pages); |
| 1055 | 1077 |
| 1056 // Query again. | 1078 // Query again. |
| 1057 TopSitesQuerier querier5; | 1079 TopSitesQuerier querier5; |
| 1058 querier5.QueryTopSites(top_sites(), true); | 1080 querier5.QueryTopSites(top_sites(), true); |
| 1059 | 1081 |
| 1060 EXPECT_EQ(1, querier5.number_of_callbacks()); | 1082 EXPECT_EQ(1, querier5.number_of_callbacks()); |
| 1061 | 1083 |
| 1062 ASSERT_EQ(3u + GetPrepopulatePages().size(), querier5.urls().size()); | 1084 ASSERT_EQ(3u + GetPrepopulatedPages().size(), querier5.urls().size()); |
| 1063 EXPECT_EQ("http://1.com/", querier5.urls()[0].url.spec()); | 1085 EXPECT_EQ("http://1.com/", querier5.urls()[0].url.spec()); |
| 1064 EXPECT_EQ("http://2.com/", querier5.urls()[1].url.spec()); | 1086 EXPECT_EQ("http://2.com/", querier5.urls()[1].url.spec()); |
| 1065 EXPECT_EQ("http://3.com/", querier5.urls()[2].url.spec()); | 1087 EXPECT_EQ("http://3.com/", querier5.urls()[2].url.spec()); |
| 1066 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier5, 3)); | 1088 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier5, 3)); |
| 1067 } | 1089 } |
| 1068 | 1090 |
| 1069 // Makes sure canceled requests are not notified. | 1091 // Makes sure canceled requests are not notified. |
| 1070 TEST_F(TopSitesImplTest, CancelingRequestsForTopSites) { | 1092 TEST_F(TopSitesImplTest, CancelingRequestsForTopSites) { |
| 1071 // Recreate top sites. It won't be loaded now. | 1093 // Recreate top sites. It won't be loaded now. |
| 1072 CreateTopSites(); | 1094 ResetTopSites(); |
| 1073 | 1095 |
| 1074 EXPECT_FALSE(IsTopSitesLoaded()); | 1096 EXPECT_FALSE(IsTopSitesLoaded()); |
| 1075 | 1097 |
| 1076 TopSitesQuerier querier1; | 1098 TopSitesQuerier querier1; |
| 1077 TopSitesQuerier querier2; | 1099 TopSitesQuerier querier2; |
| 1078 | 1100 |
| 1079 // Starts the queries. | 1101 // Starts the queries. |
| 1080 querier1.QueryTopSites(top_sites(), false); | 1102 querier1.QueryTopSites(top_sites(), false); |
| 1081 querier2.QueryTopSites(top_sites(), false); | 1103 querier2.QueryTopSites(top_sites(), false); |
| 1082 | 1104 |
| 1083 // We shouldn't have gotten a callback. | 1105 // We shouldn't have gotten a callback. |
| 1084 EXPECT_EQ(0, querier1.number_of_callbacks()); | 1106 EXPECT_EQ(0, querier1.number_of_callbacks()); |
| 1085 EXPECT_EQ(0, querier2.number_of_callbacks()); | 1107 EXPECT_EQ(0, querier2.number_of_callbacks()); |
| 1086 | 1108 |
| 1087 querier2.CancelRequest(); | 1109 querier2.CancelRequest(); |
| 1088 | 1110 |
| 1089 // Wait for loading to complete. | 1111 // Wait for loading to complete. |
| 1090 profile()->BlockUntilTopSitesLoaded(); | 1112 profile()->BlockUntilTopSitesLoaded(); |
| 1091 | 1113 |
| 1092 // The first callback should succeed. | 1114 // The first callback should succeed. |
| 1093 EXPECT_EQ(1, querier1.number_of_callbacks()); | 1115 EXPECT_EQ(1, querier1.number_of_callbacks()); |
| 1094 EXPECT_EQ(GetPrepopulatePages().size(), querier1.urls().size()); | 1116 EXPECT_EQ(GetPrepopulatedPages().size(), querier1.urls().size()); |
| 1095 | 1117 |
| 1096 // And the canceled callback should not be notified. | 1118 // And the canceled callback should not be notified. |
| 1097 EXPECT_EQ(0, querier2.number_of_callbacks()); | 1119 EXPECT_EQ(0, querier2.number_of_callbacks()); |
| 1098 } | 1120 } |
| 1099 | 1121 |
| 1100 // Makes sure temporary thumbnails are copied over correctly. | 1122 // Makes sure temporary thumbnails are copied over correctly. |
| 1101 TEST_F(TopSitesImplTest, AddTemporaryThumbnail) { | 1123 TEST_F(TopSitesImplTest, AddTemporaryThumbnail) { |
| 1102 GURL unknown_url("http://news.google.com/"); | 1124 GURL unknown_url("http://news.google.com/"); |
| 1103 GURL invalid_url("chrome://thumb/http://google.com/"); | 1125 GURL invalid_url("chrome://thumb/http://google.com/"); |
| 1104 GURL url1a("http://google.com/"); | 1126 GURL url1a("http://google.com/"); |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1200 | 1222 |
| 1201 { | 1223 { |
| 1202 TopSitesQuerier q; | 1224 TopSitesQuerier q; |
| 1203 q.QueryTopSites(top_sites(), true); | 1225 q.QueryTopSites(top_sites(), true); |
| 1204 EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); | 1226 EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); |
| 1205 EXPECT_EQ("http://google.com/", q.urls()[1].url.spec()); | 1227 EXPECT_EQ("http://google.com/", q.urls()[1].url.spec()); |
| 1206 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 2)); | 1228 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 2)); |
| 1207 } | 1229 } |
| 1208 } | 1230 } |
| 1209 | 1231 |
| 1210 #if !defined(OS_ANDROID) | |
| 1211 // Tests variations of blacklisting including blacklisting prepopulated pages. | 1232 // Tests variations of blacklisting including blacklisting prepopulated pages. |
| 1212 // This test is disable for Android because Android does not have any | 1233 // This test is disable for Android because Android does not have any |
| 1213 // prepopulated pages. | 1234 // prepopulated pages. |
| 1214 TEST_F(TopSitesImplTest, BlacklistingWithPrepopulated) { | 1235 TEST_F(TopSitesImplTest, BlacklistingWithPrepopulated) { |
| 1215 MostVisitedURLList pages; | 1236 MostVisitedURLList pages; |
| 1216 MostVisitedURL url, url1; | 1237 MostVisitedURL url, url1; |
| 1217 url.url = GURL("http://bbc.com/"); | 1238 url.url = GURL("http://bbc.com/"); |
| 1218 url.redirects.push_back(url.url); | 1239 url.redirects.push_back(url.url); |
| 1219 pages.push_back(url); | 1240 pages.push_back(url); |
| 1220 url1.url = GURL("http://google.com/"); | 1241 url1.url = GURL("http://google.com/"); |
| 1221 url1.redirects.push_back(url1.url); | 1242 url1.redirects.push_back(url1.url); |
| 1222 pages.push_back(url1); | 1243 pages.push_back(url1); |
| 1223 | 1244 |
| 1224 SetTopSites(pages); | 1245 SetTopSites(pages); |
| 1225 EXPECT_FALSE(top_sites()->IsBlacklisted(GURL("http://bbc.com/"))); | 1246 EXPECT_FALSE(top_sites()->IsBlacklisted(GURL("http://bbc.com/"))); |
| 1226 | 1247 |
| 1227 // Blacklist google.com. | 1248 // Blacklist google.com. |
| 1228 top_sites()->AddBlacklistedURL(GURL("http://google.com/")); | 1249 top_sites()->AddBlacklistedURL(GURL("http://google.com/")); |
| 1229 | 1250 |
| 1230 GURL prepopulate_url = GetPrepopulatePages()[0].url; | 1251 DCHECK_GE(GetPrepopulatedPages().size(), 1u); |
| 1252 GURL prepopulate_url = GetPrepopulatedPages()[0].most_visited.url; |
| 1231 | 1253 |
| 1232 EXPECT_TRUE(top_sites()->HasBlacklistedItems()); | 1254 EXPECT_TRUE(top_sites()->HasBlacklistedItems()); |
| 1233 EXPECT_TRUE(top_sites()->IsBlacklisted(GURL("http://google.com/"))); | 1255 EXPECT_TRUE(top_sites()->IsBlacklisted(GURL("http://google.com/"))); |
| 1234 EXPECT_FALSE(top_sites()->IsBlacklisted(GURL("http://bbc.com/"))); | 1256 EXPECT_FALSE(top_sites()->IsBlacklisted(GURL("http://bbc.com/"))); |
| 1235 EXPECT_FALSE(top_sites()->IsBlacklisted(prepopulate_url)); | 1257 EXPECT_FALSE(top_sites()->IsBlacklisted(prepopulate_url)); |
| 1236 | 1258 |
| 1237 // Make sure the blacklisted site isn't returned in the results. | 1259 // Make sure the blacklisted site isn't returned in the results. |
| 1238 { | 1260 { |
| 1239 TopSitesQuerier q; | 1261 TopSitesQuerier q; |
| 1240 q.QueryTopSites(top_sites(), true); | 1262 q.QueryTopSites(top_sites(), true); |
| 1241 ASSERT_EQ(1u + GetPrepopulatePages().size(), q.urls().size()); | 1263 ASSERT_EQ(1u + GetPrepopulatedPages().size(), q.urls().size()); |
| 1242 EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); | 1264 EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); |
| 1243 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 1)); | 1265 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 1)); |
| 1244 } | 1266 } |
| 1245 | 1267 |
| 1246 // Recreate top sites and make sure blacklisted url was correctly read. | 1268 // Recreate top sites and make sure blacklisted url was correctly read. |
| 1247 RecreateTopSitesAndBlock(); | 1269 RecreateTopSitesAndBlock(); |
| 1248 { | 1270 { |
| 1249 TopSitesQuerier q; | 1271 TopSitesQuerier q; |
| 1250 q.QueryTopSites(top_sites(), true); | 1272 q.QueryTopSites(top_sites(), true); |
| 1251 ASSERT_EQ(1u + GetPrepopulatePages().size(), q.urls().size()); | 1273 ASSERT_EQ(1u + GetPrepopulatedPages().size(), q.urls().size()); |
| 1252 EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); | 1274 EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); |
| 1253 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 1)); | 1275 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 1)); |
| 1254 } | 1276 } |
| 1255 | 1277 |
| 1256 // Blacklist one of the prepopulate urls. | 1278 // Blacklist one of the prepopulate urls. |
| 1257 top_sites()->AddBlacklistedURL(prepopulate_url); | 1279 top_sites()->AddBlacklistedURL(prepopulate_url); |
| 1258 EXPECT_TRUE(top_sites()->HasBlacklistedItems()); | 1280 EXPECT_TRUE(top_sites()->HasBlacklistedItems()); |
| 1259 | 1281 |
| 1260 // Make sure the blacklisted prepopulate url isn't returned. | 1282 // Make sure the blacklisted prepopulate url isn't returned. |
| 1261 { | 1283 { |
| 1262 TopSitesQuerier q; | 1284 TopSitesQuerier q; |
| 1263 q.QueryTopSites(top_sites(), true); | 1285 q.QueryTopSites(top_sites(), true); |
| 1264 ASSERT_EQ(1u + GetPrepopulatePages().size() - 1, q.urls().size()); | 1286 ASSERT_EQ(1u + GetPrepopulatedPages().size() - 1, q.urls().size()); |
| 1265 EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); | 1287 EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); |
| 1266 for (size_t i = 1; i < q.urls().size(); ++i) | 1288 for (size_t i = 1; i < q.urls().size(); ++i) |
| 1267 EXPECT_NE(prepopulate_url.spec(), q.urls()[i].url.spec()); | 1289 EXPECT_NE(prepopulate_url.spec(), q.urls()[i].url.spec()); |
| 1268 } | 1290 } |
| 1269 | 1291 |
| 1270 // Mark google as no longer blacklisted. | 1292 // Mark google as no longer blacklisted. |
| 1271 top_sites()->RemoveBlacklistedURL(GURL("http://google.com/")); | 1293 top_sites()->RemoveBlacklistedURL(GURL("http://google.com/")); |
| 1272 EXPECT_TRUE(top_sites()->HasBlacklistedItems()); | 1294 EXPECT_TRUE(top_sites()->HasBlacklistedItems()); |
| 1273 EXPECT_FALSE(top_sites()->IsBlacklisted(GURL("http://google.com/"))); | 1295 EXPECT_FALSE(top_sites()->IsBlacklisted(GURL("http://google.com/"))); |
| 1274 | 1296 |
| 1275 // Make sure google is returned now. | 1297 // Make sure google is returned now. |
| 1276 { | 1298 { |
| 1277 TopSitesQuerier q; | 1299 TopSitesQuerier q; |
| 1278 q.QueryTopSites(top_sites(), true); | 1300 q.QueryTopSites(top_sites(), true); |
| 1279 ASSERT_EQ(2u + GetPrepopulatePages().size() - 1, q.urls().size()); | 1301 ASSERT_EQ(2u + GetPrepopulatedPages().size() - 1, q.urls().size()); |
| 1280 EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); | 1302 EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); |
| 1281 EXPECT_EQ("http://google.com/", q.urls()[1].url.spec()); | 1303 EXPECT_EQ("http://google.com/", q.urls()[1].url.spec()); |
| 1282 // Android has only one prepopulated page which has been blacklisted, so | 1304 // Android has only one prepopulated page which has been blacklisted, so |
| 1283 // only 2 urls are returned. | 1305 // only 2 urls are returned. |
| 1284 if (q.urls().size() > 2) | 1306 if (q.urls().size() > 2) |
| 1285 EXPECT_NE(prepopulate_url.spec(), q.urls()[2].url.spec()); | 1307 EXPECT_NE(prepopulate_url.spec(), q.urls()[2].url.spec()); |
| 1286 else | 1308 else |
| 1287 EXPECT_EQ(1u, GetPrepopulatePages().size()); | 1309 EXPECT_EQ(1u, GetPrepopulatedPages().size()); |
| 1288 } | 1310 } |
| 1289 | 1311 |
| 1290 // Remove all blacklisted sites. | 1312 // Remove all blacklisted sites. |
| 1291 top_sites()->ClearBlacklistedURLs(); | 1313 top_sites()->ClearBlacklistedURLs(); |
| 1292 EXPECT_FALSE(top_sites()->HasBlacklistedItems()); | 1314 EXPECT_FALSE(top_sites()->HasBlacklistedItems()); |
| 1293 | 1315 |
| 1294 { | 1316 { |
| 1295 TopSitesQuerier q; | 1317 TopSitesQuerier q; |
| 1296 q.QueryTopSites(top_sites(), true); | 1318 q.QueryTopSites(top_sites(), true); |
| 1297 ASSERT_EQ(2u + GetPrepopulatePages().size(), q.urls().size()); | 1319 ASSERT_EQ(2u + GetPrepopulatedPages().size(), q.urls().size()); |
| 1298 EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); | 1320 EXPECT_EQ("http://bbc.com/", q.urls()[0].url.spec()); |
| 1299 EXPECT_EQ("http://google.com/", q.urls()[1].url.spec()); | 1321 EXPECT_EQ("http://google.com/", q.urls()[1].url.spec()); |
| 1300 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 2)); | 1322 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 2)); |
| 1301 } | 1323 } |
| 1302 } | 1324 } |
| 1303 #endif | |
| 1304 | 1325 |
| 1305 // Makes sure prepopulated pages exist. | 1326 // Makes sure prepopulated pages exist. |
| 1306 TEST_F(TopSitesImplTest, AddPrepopulatedPages) { | 1327 TEST_F(TopSitesImplTest, AddPrepopulatedPages) { |
| 1307 TopSitesQuerier q; | 1328 TopSitesQuerier q; |
| 1308 q.QueryTopSites(top_sites(), true); | 1329 q.QueryTopSites(top_sites(), true); |
| 1309 EXPECT_EQ(GetPrepopulatePages().size(), q.urls().size()); | 1330 EXPECT_EQ(GetPrepopulatedPages().size(), q.urls().size()); |
| 1310 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 0)); | 1331 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 0)); |
| 1311 | 1332 |
| 1312 MostVisitedURLList pages = q.urls(); | 1333 MostVisitedURLList pages = q.urls(); |
| 1313 EXPECT_FALSE(AddPrepopulatedPages(&pages)); | 1334 EXPECT_FALSE(AddPrepopulatedPages(&pages)); |
| 1314 | 1335 |
| 1315 EXPECT_EQ(GetPrepopulatePages().size(), pages.size()); | 1336 EXPECT_EQ(GetPrepopulatedPages().size(), pages.size()); |
| 1316 q.set_urls(pages); | 1337 q.set_urls(pages); |
| 1317 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 0)); | 1338 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(q, 0)); |
| 1318 } | 1339 } |
| 1319 | 1340 |
| 1320 // Ensure calling SetTopSites with forced sites already in the DB works. | 1341 // Ensure calling SetTopSites with forced sites already in the DB works. |
| 1321 // This test both eviction and | 1342 // This test both eviction and |
| 1322 TEST_F(TopSitesImplTest, SetForcedTopSites) { | 1343 TEST_F(TopSitesImplTest, SetForcedTopSites) { |
| 1323 // Create forced elements in old URL list. | 1344 // Create forced elements in old URL list. |
| 1324 MostVisitedURLList old_url_list; | 1345 MostVisitedURLList old_url_list; |
| 1325 AppendForcedMostVisitedURL(&old_url_list, GURL("http://oldforced/0"), 1000); | 1346 AppendForcedMostVisitedURL(&old_url_list, GURL("http://oldforced/0"), 1000); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1463 9000); | 1484 9000); |
| 1464 AppendMostVisitedURL(&new_url_list, GURL("http://collision/2")); | 1485 AppendMostVisitedURL(&new_url_list, GURL("http://collision/2")); |
| 1465 AppendMostVisitedURL(&new_url_list, GURL("http://url/3")); | 1486 AppendMostVisitedURL(&new_url_list, GURL("http://url/3")); |
| 1466 SetTopSites(new_url_list); | 1487 SetTopSites(new_url_list); |
| 1467 | 1488 |
| 1468 // Query all URLs. | 1489 // Query all URLs. |
| 1469 TopSitesQuerier querier; | 1490 TopSitesQuerier querier; |
| 1470 querier.QueryAllTopSites(top_sites(), false, true); | 1491 querier.QueryAllTopSites(top_sites(), false, true); |
| 1471 | 1492 |
| 1472 // Check URLs. When collision occurs, the incoming one is always preferred. | 1493 // Check URLs. When collision occurs, the incoming one is always preferred. |
| 1473 ASSERT_EQ(7u + GetPrepopulatePages().size(), querier.urls().size()); | 1494 ASSERT_EQ(7u + GetPrepopulatedPages().size(), querier.urls().size()); |
| 1474 EXPECT_EQ("http://url/0", querier.urls()[0].url.spec()); | 1495 EXPECT_EQ("http://url/0", querier.urls()[0].url.spec()); |
| 1475 EXPECT_EQ(1000u, querier.urls()[0].last_forced_time.ToJsTime()); | 1496 EXPECT_EQ(1000u, querier.urls()[0].last_forced_time.ToJsTime()); |
| 1476 EXPECT_EQ("http://collision/1", querier.urls()[1].url.spec()); | 1497 EXPECT_EQ("http://collision/1", querier.urls()[1].url.spec()); |
| 1477 EXPECT_EQ(2000u, querier.urls()[1].last_forced_time.ToJsTime()); | 1498 EXPECT_EQ(2000u, querier.urls()[1].last_forced_time.ToJsTime()); |
| 1478 EXPECT_EQ("http://url/2", querier.urls()[2].url.spec()); | 1499 EXPECT_EQ("http://url/2", querier.urls()[2].url.spec()); |
| 1479 EXPECT_EQ(3000u, querier.urls()[2].last_forced_time.ToJsTime()); | 1500 EXPECT_EQ(3000u, querier.urls()[2].last_forced_time.ToJsTime()); |
| 1480 EXPECT_EQ("http://collision/0", querier.urls()[3].url.spec()); | 1501 EXPECT_EQ("http://collision/0", querier.urls()[3].url.spec()); |
| 1481 EXPECT_EQ(5000u, querier.urls()[3].last_forced_time.ToJsTime()); | 1502 EXPECT_EQ(5000u, querier.urls()[3].last_forced_time.ToJsTime()); |
| 1482 EXPECT_EQ("http://noncollision/0", querier.urls()[4].url.spec()); | 1503 EXPECT_EQ("http://noncollision/0", querier.urls()[4].url.spec()); |
| 1483 EXPECT_EQ(9000u, querier.urls()[4].last_forced_time.ToJsTime()); | 1504 EXPECT_EQ(9000u, querier.urls()[4].last_forced_time.ToJsTime()); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1497 SetTopSites(url_list); | 1518 SetTopSites(url_list); |
| 1498 | 1519 |
| 1499 // Set the new list of URLs to be exactly the same. | 1520 // Set the new list of URLs to be exactly the same. |
| 1500 SetTopSites(MostVisitedURLList(url_list)); | 1521 SetTopSites(MostVisitedURLList(url_list)); |
| 1501 | 1522 |
| 1502 // Query all URLs. | 1523 // Query all URLs. |
| 1503 TopSitesQuerier querier; | 1524 TopSitesQuerier querier; |
| 1504 querier.QueryAllTopSites(top_sites(), false, true); | 1525 querier.QueryAllTopSites(top_sites(), false, true); |
| 1505 | 1526 |
| 1506 // Check URLs. When collision occurs, the incoming one is always preferred. | 1527 // Check URLs. When collision occurs, the incoming one is always preferred. |
| 1507 ASSERT_EQ(3u + GetPrepopulatePages().size(), querier.urls().size()); | 1528 ASSERT_EQ(3u + GetPrepopulatedPages().size(), querier.urls().size()); |
| 1508 EXPECT_EQ("http://url/0", querier.urls()[0].url.spec()); | 1529 EXPECT_EQ("http://url/0", querier.urls()[0].url.spec()); |
| 1509 EXPECT_EQ(1000u, querier.urls()[0].last_forced_time.ToJsTime()); | 1530 EXPECT_EQ(1000u, querier.urls()[0].last_forced_time.ToJsTime()); |
| 1510 EXPECT_EQ("http://url/1", querier.urls()[1].url.spec()); | 1531 EXPECT_EQ("http://url/1", querier.urls()[1].url.spec()); |
| 1511 EXPECT_EQ("http://url/2", querier.urls()[2].url.spec()); | 1532 EXPECT_EQ("http://url/2", querier.urls()[2].url.spec()); |
| 1512 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 3)); | 1533 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 3)); |
| 1513 } | 1534 } |
| 1514 | 1535 |
| 1515 TEST_F(TopSitesImplTest, SetTopSitesWithAlreadyExistingForcedURLs) { | 1536 TEST_F(TopSitesImplTest, SetTopSitesWithAlreadyExistingForcedURLs) { |
| 1516 // Set the initial list of URLs. | 1537 // Set the initial list of URLs. |
| 1517 MostVisitedURLList old_url_list; | 1538 MostVisitedURLList old_url_list; |
| 1518 AppendForcedMostVisitedURL(&old_url_list, GURL("http://url/0/redir"), 1000); | 1539 AppendForcedMostVisitedURL(&old_url_list, GURL("http://url/0/redir"), 1000); |
| 1519 AppendForcedMostVisitedURL(&old_url_list, GURL("http://url/1"), 2000); | 1540 AppendForcedMostVisitedURL(&old_url_list, GURL("http://url/1"), 2000); |
| 1520 SetTopSites(old_url_list); | 1541 SetTopSites(old_url_list); |
| 1521 | 1542 |
| 1522 // Setup a new URL list that will cause collisions. | 1543 // Setup a new URL list that will cause collisions. |
| 1523 MostVisitedURLList new_url_list; | 1544 MostVisitedURLList new_url_list; |
| 1524 AppendMostVisitedURLWithRedirect(&new_url_list, GURL("http://url/0/redir"), | 1545 AppendMostVisitedURLWithRedirect(&new_url_list, GURL("http://url/0/redir"), |
| 1525 GURL("http://url/0")); | 1546 GURL("http://url/0")); |
| 1526 AppendMostVisitedURL(&new_url_list, GURL("http://url/1")); | 1547 AppendMostVisitedURL(&new_url_list, GURL("http://url/1")); |
| 1527 SetTopSites(new_url_list); | 1548 SetTopSites(new_url_list); |
| 1528 | 1549 |
| 1529 // Query all URLs. | 1550 // Query all URLs. |
| 1530 TopSitesQuerier querier; | 1551 TopSitesQuerier querier; |
| 1531 querier.QueryAllTopSites(top_sites(), false, true); | 1552 querier.QueryAllTopSites(top_sites(), false, true); |
| 1532 | 1553 |
| 1533 // Check URLs. When collision occurs, the non-forced one is always preferred. | 1554 // Check URLs. When collision occurs, the non-forced one is always preferred. |
| 1534 ASSERT_EQ(2u + GetPrepopulatePages().size(), querier.urls().size()); | 1555 ASSERT_EQ(2u + GetPrepopulatedPages().size(), querier.urls().size()); |
| 1535 EXPECT_EQ("http://url/0", querier.urls()[0].url.spec()); | 1556 EXPECT_EQ("http://url/0", querier.urls()[0].url.spec()); |
| 1536 EXPECT_EQ("http://url/0/redir", querier.urls()[0].redirects[0].spec()); | 1557 EXPECT_EQ("http://url/0/redir", querier.urls()[0].redirects[0].spec()); |
| 1537 EXPECT_TRUE(querier.urls()[0].last_forced_time.is_null()); | 1558 EXPECT_TRUE(querier.urls()[0].last_forced_time.is_null()); |
| 1538 EXPECT_EQ("http://url/1", querier.urls()[1].url.spec()); | 1559 EXPECT_EQ("http://url/1", querier.urls()[1].url.spec()); |
| 1539 EXPECT_TRUE(querier.urls()[1].last_forced_time.is_null()); | 1560 EXPECT_TRUE(querier.urls()[1].last_forced_time.is_null()); |
| 1540 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 2)); | 1561 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 2)); |
| 1541 } | 1562 } |
| 1542 | 1563 |
| 1543 TEST_F(TopSitesImplTest, AddForcedURL) { | 1564 TEST_F(TopSitesImplTest, AddForcedURL) { |
| 1544 // Set the initial list of URLs. | 1565 // Set the initial list of URLs. |
| 1545 MostVisitedURLList url_list; | 1566 MostVisitedURLList url_list; |
| 1546 AppendForcedMostVisitedURL(&url_list, GURL("http://forced/0"), 2000); | 1567 AppendForcedMostVisitedURL(&url_list, GURL("http://forced/0"), 2000); |
| 1547 AppendForcedMostVisitedURL(&url_list, GURL("http://forced/1"), 4000); | 1568 AppendForcedMostVisitedURL(&url_list, GURL("http://forced/1"), 4000); |
| 1548 AppendMostVisitedURL(&url_list, GURL("http://nonforced/0")); | 1569 AppendMostVisitedURL(&url_list, GURL("http://nonforced/0")); |
| 1549 AppendMostVisitedURL(&url_list, GURL("http://nonforced/1")); | 1570 AppendMostVisitedURL(&url_list, GURL("http://nonforced/1")); |
| 1550 AppendMostVisitedURL(&url_list, GURL("http://nonforced/2")); | 1571 AppendMostVisitedURL(&url_list, GURL("http://nonforced/2")); |
| 1551 SetTopSites(url_list); | 1572 SetTopSites(url_list); |
| 1552 | 1573 |
| 1553 // Add forced sites here and there to exercise a couple of cases. | 1574 // Add forced sites here and there to exercise a couple of cases. |
| 1554 EXPECT_TRUE(AddForcedURL(GURL("http://forced/2"), | 1575 EXPECT_TRUE(AddForcedURL(GURL("http://forced/2"), |
| 1555 base::Time::FromJsTime(5000))); | 1576 base::Time::FromJsTime(5000))); |
| 1556 EXPECT_TRUE(AddForcedURL(GURL("http://forced/3"), | 1577 EXPECT_TRUE(AddForcedURL(GURL("http://forced/3"), |
| 1557 base::Time::FromJsTime(1000))); | 1578 base::Time::FromJsTime(1000))); |
| 1558 EXPECT_TRUE(AddForcedURL(GURL("http://forced/4"), | 1579 EXPECT_TRUE(AddForcedURL(GURL("http://forced/4"), |
| 1559 base::Time::FromJsTime(3000))); | 1580 base::Time::FromJsTime(3000))); |
| 1560 | 1581 |
| 1561 // Check URLs. | 1582 // Check URLs. |
| 1562 TopSitesQuerier querier; | 1583 TopSitesQuerier querier; |
| 1563 querier.QueryAllTopSites(top_sites(), false, true); | 1584 querier.QueryAllTopSites(top_sites(), false, true); |
| 1564 ASSERT_EQ(8u + GetPrepopulatePages().size(), querier.urls().size()); | 1585 ASSERT_EQ(8u + GetPrepopulatedPages().size(), querier.urls().size()); |
| 1565 EXPECT_EQ("http://forced/3", querier.urls()[0].url.spec()); | 1586 EXPECT_EQ("http://forced/3", querier.urls()[0].url.spec()); |
| 1566 EXPECT_EQ(1000u, querier.urls()[0].last_forced_time.ToJsTime()); | 1587 EXPECT_EQ(1000u, querier.urls()[0].last_forced_time.ToJsTime()); |
| 1567 EXPECT_EQ("http://forced/0", querier.urls()[1].url.spec()); | 1588 EXPECT_EQ("http://forced/0", querier.urls()[1].url.spec()); |
| 1568 EXPECT_EQ(2000u, querier.urls()[1].last_forced_time.ToJsTime()); | 1589 EXPECT_EQ(2000u, querier.urls()[1].last_forced_time.ToJsTime()); |
| 1569 EXPECT_EQ("http://forced/4", querier.urls()[2].url.spec()); | 1590 EXPECT_EQ("http://forced/4", querier.urls()[2].url.spec()); |
| 1570 EXPECT_EQ(3000u, querier.urls()[2].last_forced_time.ToJsTime()); | 1591 EXPECT_EQ(3000u, querier.urls()[2].last_forced_time.ToJsTime()); |
| 1571 EXPECT_EQ("http://forced/1", querier.urls()[3].url.spec()); | 1592 EXPECT_EQ("http://forced/1", querier.urls()[3].url.spec()); |
| 1572 EXPECT_EQ(4000u, querier.urls()[3].last_forced_time.ToJsTime()); | 1593 EXPECT_EQ(4000u, querier.urls()[3].last_forced_time.ToJsTime()); |
| 1573 EXPECT_EQ("http://forced/2", querier.urls()[4].url.spec()); | 1594 EXPECT_EQ("http://forced/2", querier.urls()[4].url.spec()); |
| 1574 EXPECT_EQ(5000u, querier.urls()[4].last_forced_time.ToJsTime()); | 1595 EXPECT_EQ(5000u, querier.urls()[4].last_forced_time.ToJsTime()); |
| 1575 EXPECT_EQ("http://nonforced/0", querier.urls()[5].url.spec()); | 1596 EXPECT_EQ("http://nonforced/0", querier.urls()[5].url.spec()); |
| 1576 EXPECT_TRUE(querier.urls()[5].last_forced_time.is_null()); | 1597 EXPECT_TRUE(querier.urls()[5].last_forced_time.is_null()); |
| 1577 EXPECT_EQ("http://nonforced/1", querier.urls()[6].url.spec()); | 1598 EXPECT_EQ("http://nonforced/1", querier.urls()[6].url.spec()); |
| 1578 EXPECT_TRUE(querier.urls()[6].last_forced_time.is_null()); | 1599 EXPECT_TRUE(querier.urls()[6].last_forced_time.is_null()); |
| 1579 EXPECT_EQ("http://nonforced/2", querier.urls()[7].url.spec()); | 1600 EXPECT_EQ("http://nonforced/2", querier.urls()[7].url.spec()); |
| 1580 EXPECT_TRUE(querier.urls()[7].last_forced_time.is_null()); | 1601 EXPECT_TRUE(querier.urls()[7].last_forced_time.is_null()); |
| 1581 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 8)); | 1602 ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 8)); |
| 1582 | 1603 |
| 1583 // Add some collisions with forced and non-forced. Non-forced URLs are never | 1604 // Add some collisions with forced and non-forced. Non-forced URLs are never |
| 1584 // expected to move. | 1605 // expected to move. |
| 1585 EXPECT_TRUE(AddForcedURL(GURL("http://forced/3"), | 1606 EXPECT_TRUE(AddForcedURL(GURL("http://forced/3"), |
| 1586 base::Time::FromJsTime(4000))); | 1607 base::Time::FromJsTime(4000))); |
| 1587 EXPECT_TRUE(AddForcedURL(GURL("http://forced/1"), | 1608 EXPECT_TRUE(AddForcedURL(GURL("http://forced/1"), |
| 1588 base::Time::FromJsTime(1000))); | 1609 base::Time::FromJsTime(1000))); |
| 1589 EXPECT_FALSE(AddForcedURL(GURL("http://nonforced/0"), | 1610 EXPECT_FALSE(AddForcedURL(GURL("http://nonforced/0"), |
| 1590 base::Time::FromJsTime(6000))); | 1611 base::Time::FromJsTime(6000))); |
| 1591 | 1612 |
| 1592 // Check relevant URLs. | 1613 // Check relevant URLs. |
| 1593 querier.QueryAllTopSites(top_sites(), false, true); | 1614 querier.QueryAllTopSites(top_sites(), false, true); |
| 1594 ASSERT_EQ(8u + GetPrepopulatePages().size(), querier.urls().size()); | 1615 ASSERT_EQ(8u + GetPrepopulatedPages().size(), querier.urls().size()); |
| 1595 EXPECT_EQ("http://forced/1", querier.urls()[0].url.spec()); | 1616 EXPECT_EQ("http://forced/1", querier.urls()[0].url.spec()); |
| 1596 EXPECT_EQ(1000u, querier.urls()[0].last_forced_time.ToJsTime()); | 1617 EXPECT_EQ(1000u, querier.urls()[0].last_forced_time.ToJsTime()); |
| 1597 EXPECT_EQ("http://forced/3", querier.urls()[3].url.spec()); | 1618 EXPECT_EQ("http://forced/3", querier.urls()[3].url.spec()); |
| 1598 EXPECT_EQ(4000u, querier.urls()[3].last_forced_time.ToJsTime()); | 1619 EXPECT_EQ(4000u, querier.urls()[3].last_forced_time.ToJsTime()); |
| 1599 EXPECT_EQ("http://nonforced/0", querier.urls()[5].url.spec()); | 1620 EXPECT_EQ("http://nonforced/0", querier.urls()[5].url.spec()); |
| 1600 EXPECT_TRUE(querier.urls()[5].last_forced_time.is_null()); | 1621 EXPECT_TRUE(querier.urls()[5].last_forced_time.is_null()); |
| 1601 | 1622 |
| 1602 // Add a timestamp collision and make sure things don't break. | 1623 // Add a timestamp collision and make sure things don't break. |
| 1603 EXPECT_TRUE(AddForcedURL(GURL("http://forced/5"), | 1624 EXPECT_TRUE(AddForcedURL(GURL("http://forced/5"), |
| 1604 base::Time::FromJsTime(4000))); | 1625 base::Time::FromJsTime(4000))); |
| 1605 querier.QueryAllTopSites(top_sites(), false, true); | 1626 querier.QueryAllTopSites(top_sites(), false, true); |
| 1606 ASSERT_EQ(9u + GetPrepopulatePages().size(), querier.urls().size()); | 1627 ASSERT_EQ(9u + GetPrepopulatedPages().size(), querier.urls().size()); |
| 1607 EXPECT_EQ(4000u, querier.urls()[3].last_forced_time.ToJsTime()); | 1628 EXPECT_EQ(4000u, querier.urls()[3].last_forced_time.ToJsTime()); |
| 1608 EXPECT_EQ(4000u, querier.urls()[4].last_forced_time.ToJsTime()); | 1629 EXPECT_EQ(4000u, querier.urls()[4].last_forced_time.ToJsTime()); |
| 1609 // We don't care which order they get sorted in. | 1630 // We don't care which order they get sorted in. |
| 1610 if (querier.urls()[3].url.spec() == "http://forced/3") { | 1631 if (querier.urls()[3].url.spec() == "http://forced/3") { |
| 1611 EXPECT_EQ("http://forced/3", querier.urls()[3].url.spec()); | 1632 EXPECT_EQ("http://forced/3", querier.urls()[3].url.spec()); |
| 1612 EXPECT_EQ("http://forced/5", querier.urls()[4].url.spec()); | 1633 EXPECT_EQ("http://forced/5", querier.urls()[4].url.spec()); |
| 1613 } else { | 1634 } else { |
| 1614 EXPECT_EQ("http://forced/5", querier.urls()[3].url.spec()); | 1635 EXPECT_EQ("http://forced/5", querier.urls()[3].url.spec()); |
| 1615 EXPECT_EQ("http://forced/3", querier.urls()[4].url.spec()); | 1636 EXPECT_EQ("http://forced/3", querier.urls()[4].url.spec()); |
| 1616 } | 1637 } |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1635 ASSERT_EQ(orig_thumbnail.getSize(), thumbnail.getSize()); | 1656 ASSERT_EQ(orig_thumbnail.getSize(), thumbnail.getSize()); |
| 1636 orig_thumbnail.lockPixels(); | 1657 orig_thumbnail.lockPixels(); |
| 1637 thumbnail.lockPixels(); | 1658 thumbnail.lockPixels(); |
| 1638 EXPECT_EQ(0, memcmp(orig_thumbnail.getPixels(), thumbnail.getPixels(), | 1659 EXPECT_EQ(0, memcmp(orig_thumbnail.getPixels(), thumbnail.getPixels(), |
| 1639 orig_thumbnail.getSize())); | 1660 orig_thumbnail.getSize())); |
| 1640 thumbnail.unlockPixels(); | 1661 thumbnail.unlockPixels(); |
| 1641 orig_thumbnail.unlockPixels(); | 1662 orig_thumbnail.unlockPixels(); |
| 1642 } | 1663 } |
| 1643 | 1664 |
| 1644 } // namespace history | 1665 } // namespace history |
| OLD | NEW |