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

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

Powered by Google App Engine
This is Rietveld 408576698