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

Side by Side Diff: chrome/test/base/testing_profile.cc

Issue 815983002: Topsites become keyedService based. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix comments 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 "chrome/test/base/testing_profile.h" 5 #include "chrome/test/base/testing_profile.h"
6 6
7 #include "base/base_paths.h" 7 #include "base/base_paths.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
10 #include "base/message_loop/message_loop_proxy.h" 10 #include "base/message_loop/message_loop_proxy.h"
(...skipping 10 matching lines...) Expand all
21 #include "chrome/browser/favicon/chrome_favicon_client_factory.h" 21 #include "chrome/browser/favicon/chrome_favicon_client_factory.h"
22 #include "chrome/browser/favicon/favicon_service.h" 22 #include "chrome/browser/favicon/favicon_service.h"
23 #include "chrome/browser/favicon/favicon_service_factory.h" 23 #include "chrome/browser/favicon/favicon_service_factory.h"
24 #include "chrome/browser/history/chrome_history_client.h" 24 #include "chrome/browser/history/chrome_history_client.h"
25 #include "chrome/browser/history/chrome_history_client_factory.h" 25 #include "chrome/browser/history/chrome_history_client_factory.h"
26 #include "chrome/browser/history/history_backend.h" 26 #include "chrome/browser/history/history_backend.h"
27 #include "chrome/browser/history/history_db_task.h" 27 #include "chrome/browser/history/history_db_task.h"
28 #include "chrome/browser/history/history_service.h" 28 #include "chrome/browser/history/history_service.h"
29 #include "chrome/browser/history/history_service_factory.h" 29 #include "chrome/browser/history/history_service_factory.h"
30 #include "chrome/browser/history/top_sites.h" 30 #include "chrome/browser/history/top_sites.h"
31 #include "chrome/browser/history/top_sites_impl.h"
32 #include "chrome/browser/history/top_sites_factory.h"
31 #include "chrome/browser/history/web_history_service_factory.h" 33 #include "chrome/browser/history/web_history_service_factory.h"
32 #include "chrome/browser/net/pref_proxy_config_tracker.h" 34 #include "chrome/browser/net/pref_proxy_config_tracker.h"
33 #include "chrome/browser/net/proxy_service_factory.h" 35 #include "chrome/browser/net/proxy_service_factory.h"
34 #include "chrome/browser/notifications/desktop_notification_service.h" 36 #include "chrome/browser/notifications/desktop_notification_service.h"
35 #include "chrome/browser/notifications/desktop_notification_service_factory.h" 37 #include "chrome/browser/notifications/desktop_notification_service_factory.h"
36 #include "chrome/browser/policy/profile_policy_connector.h" 38 #include "chrome/browser/policy/profile_policy_connector.h"
37 #include "chrome/browser/policy/profile_policy_connector_factory.h" 39 #include "chrome/browser/policy/profile_policy_connector_factory.h"
38 #include "chrome/browser/prefs/browser_prefs.h" 40 #include "chrome/browser/prefs/browser_prefs.h"
39 #include "chrome/browser/prefs/pref_service_syncable.h" 41 #include "chrome/browser/prefs/pref_service_syncable.h"
40 #include "chrome/browser/prerender/prerender_manager.h" 42 #include "chrome/browser/prerender/prerender_manager.h"
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 } 218 }
217 219
218 KeyedService* BuildChromeBookmarkClient( 220 KeyedService* BuildChromeBookmarkClient(
219 content::BrowserContext* context) { 221 content::BrowserContext* context) {
220 return new ChromeBookmarkClient(static_cast<Profile*>(context)); 222 return new ChromeBookmarkClient(static_cast<Profile*>(context));
221 } 223 }
222 224
223 KeyedService* BuildChromeHistoryClient( 225 KeyedService* BuildChromeHistoryClient(
224 content::BrowserContext* context) { 226 content::BrowserContext* context) {
225 Profile* profile = static_cast<Profile*>(context); 227 Profile* profile = static_cast<Profile*>(context);
228 scoped_refptr<history::TopSites> top_sites =
229 TopSitesFactory::GetForProfile(profile);
226 return new ChromeHistoryClient(BookmarkModelFactory::GetForProfile(profile), 230 return new ChromeHistoryClient(BookmarkModelFactory::GetForProfile(profile),
227 profile, 231 profile, top_sites);
228 profile->GetTopSites());
229 } 232 }
230 233
231 void TestProfileErrorCallback(WebDataServiceWrapper::ErrorType error_type, 234 void TestProfileErrorCallback(WebDataServiceWrapper::ErrorType error_type,
232 sql::InitStatus status) { 235 sql::InitStatus status) {
233 NOTREACHED(); 236 NOTREACHED();
234 } 237 }
235 238
236 KeyedService* BuildWebDataService(content::BrowserContext* context) { 239 KeyedService* BuildWebDataService(content::BrowserContext* context) {
237 const base::FilePath& context_path = context->GetPath(); 240 const base::FilePath& context_path = context->GetPath();
238 return new WebDataServiceWrapper( 241 return new WebDataServiceWrapper(
239 context_path, g_browser_process->GetApplicationLocale(), 242 context_path, g_browser_process->GetApplicationLocale(),
240 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI), 243 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
241 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB), 244 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB),
242 sync_start_util::GetFlareForSyncableService(context_path), 245 sync_start_util::GetFlareForSyncableService(context_path),
243 &TestProfileErrorCallback); 246 &TestProfileErrorCallback);
244 } 247 }
245 248
249 scoped_refptr<RefcountedKeyedService> BuildTopSites(
sdefresne 2015/01/12 17:24:24 It looks like TopSitesFactory::BuildInstanceForPro
sdefresne 2015/01/14 21:31:47 Please also test keeping TestingProfile::CreateTop
250 content::BrowserContext* profile) {
251 history::TopSitesImpl* top_sites =
252 new history::TopSitesImpl(static_cast<Profile*>(profile));
253 top_sites->Init(profile->GetPath().Append(chrome::kTopSitesFilename));
254 return make_scoped_refptr(top_sites);
255 }
256
246 } // namespace 257 } // namespace
247 258
248 // static 259 // static
249 #if defined(OS_CHROMEOS) 260 #if defined(OS_CHROMEOS)
250 // Must be kept in sync with 261 // Must be kept in sync with
251 // ChromeBrowserMainPartsChromeos::PreEarlyInitialization. 262 // ChromeBrowserMainPartsChromeos::PreEarlyInitialization.
252 const char TestingProfile::kTestUserProfileDir[] = "test-user"; 263 const char TestingProfile::kTestUserProfileDir[] = "test-user";
253 #else 264 #else
254 const char TestingProfile::kTestUserProfileDir[] = "Default"; 265 const char TestingProfile::kTestUserProfileDir[] = "Default";
255 #endif 266 #endif
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 457
447 browser_context_dependency_manager_->CreateBrowserContextServicesForTest( 458 browser_context_dependency_manager_->CreateBrowserContextServicesForTest(
448 this); 459 this);
449 460
450 #if defined(ENABLE_NOTIFICATIONS) 461 #if defined(ENABLE_NOTIFICATIONS)
451 // Install profile keyed service factory hooks for dummy/test services 462 // Install profile keyed service factory hooks for dummy/test services
452 DesktopNotificationServiceFactory::GetInstance()->SetTestingFactory( 463 DesktopNotificationServiceFactory::GetInstance()->SetTestingFactory(
453 this, CreateTestDesktopNotificationService); 464 this, CreateTestDesktopNotificationService);
454 #endif 465 #endif
455 466
467 CreateTopSites();
468
456 #if defined(ENABLE_SUPERVISED_USERS) 469 #if defined(ENABLE_SUPERVISED_USERS)
457 if (!IsOffTheRecord()) { 470 if (!IsOffTheRecord()) {
458 SupervisedUserSettingsService* settings_service = 471 SupervisedUserSettingsService* settings_service =
459 SupervisedUserSettingsServiceFactory::GetForProfile(this); 472 SupervisedUserSettingsServiceFactory::GetForProfile(this);
460 TestingPrefStore* store = new TestingPrefStore(); 473 TestingPrefStore* store = new TestingPrefStore();
461 settings_service->Init(store); 474 settings_service->Init(store);
462 store->SetInitializationCompleted(); 475 store->SetInitializationCompleted();
463 } 476 }
464 #endif 477 #endif
465 478
(...skipping 25 matching lines...) Expand all
491 // Any objects holding live URLFetchers should be deleted before teardown. 504 // Any objects holding live URLFetchers should be deleted before teardown.
492 TemplateURLFetcherFactory::ShutdownForProfile(this); 505 TemplateURLFetcherFactory::ShutdownForProfile(this);
493 506
494 MaybeSendDestroyedNotification(); 507 MaybeSendDestroyedNotification();
495 508
496 browser_context_dependency_manager_->DestroyBrowserContextServices(this); 509 browser_context_dependency_manager_->DestroyBrowserContextServices(this);
497 510
498 if (host_content_settings_map_.get()) 511 if (host_content_settings_map_.get())
499 host_content_settings_map_->ShutdownOnUIThread(); 512 host_content_settings_map_->ShutdownOnUIThread();
500 513
501 DestroyTopSites();
502
503 if (pref_proxy_config_tracker_.get()) 514 if (pref_proxy_config_tracker_.get())
504 pref_proxy_config_tracker_->DetachFromPrefService(); 515 pref_proxy_config_tracker_->DetachFromPrefService();
505 // Failing a post == leaks == heapcheck failure. Make that an immediate test 516 // Failing a post == leaks == heapcheck failure. Make that an immediate test
506 // failure. 517 // failure.
507 if (resource_context_) { 518 if (resource_context_) {
508 CHECK(BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE, 519 CHECK(BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE,
509 resource_context_)); 520 resource_context_));
510 resource_context_ = NULL; 521 resource_context_ = NULL;
511 content::RunAllPendingInMessageLoop(BrowserThread::IO); 522 content::RunAllPendingInMessageLoop(BrowserThread::IO);
512 } 523 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 base::MessageLoop::current()->Run(); 574 base::MessageLoop::current()->Run();
564 575
565 // Make sure we don't have any event pending that could disrupt the next 576 // Make sure we don't have any event pending that could disrupt the next
566 // test. 577 // test.
567 base::MessageLoop::current()->PostTask(FROM_HERE, 578 base::MessageLoop::current()->PostTask(FROM_HERE,
568 base::MessageLoop::QuitClosure()); 579 base::MessageLoop::QuitClosure());
569 base::MessageLoop::current()->Run(); 580 base::MessageLoop::current()->Run();
570 } 581 }
571 582
572 void TestingProfile::CreateTopSites() { 583 void TestingProfile::CreateTopSites() {
573 DestroyTopSites(); 584 TopSitesFactory::GetInstance()->SetTestingFactory(this, BuildTopSites);
574 top_sites_ = history::TopSites::Create(
575 this, GetPath().Append(chrome::kTopSitesFilename));
576 }
577
578 void TestingProfile::SetTopSites(history::TopSites* top_sites) {
579 DestroyTopSites();
580 top_sites_ = top_sites;
581 }
582
583 void TestingProfile::DestroyTopSites() {
584 if (top_sites_.get()) {
585 top_sites_->Shutdown();
586 top_sites_ = NULL;
587 // TopSitesImpl::Shutdown schedules some tasks (from TopSitesBackend) that
588 // need to be run to properly shutdown. Run all pending tasks now. This is
589 // normally handled by browser_process shutdown.
590 if (base::MessageLoop::current())
591 base::MessageLoop::current()->RunUntilIdle();
592 }
593 } 585 }
594 586
595 void TestingProfile::CreateBookmarkModel(bool delete_file) { 587 void TestingProfile::CreateBookmarkModel(bool delete_file) {
596 if (delete_file) { 588 if (delete_file) {
597 base::FilePath path = GetPath().Append(bookmarks::kBookmarksFileName); 589 base::FilePath path = GetPath().Append(bookmarks::kBookmarksFileName);
598 base::DeleteFile(path, false); 590 base::DeleteFile(path, false);
599 } 591 }
600 ChromeHistoryClientFactory::GetInstance()->SetTestingFactory( 592 ChromeHistoryClientFactory::GetInstance()->SetTestingFactory(
601 this, BuildChromeHistoryClient); 593 this, BuildChromeHistoryClient);
602 ChromeBookmarkClientFactory::GetInstance()->SetTestingFactory( 594 ChromeBookmarkClientFactory::GetInstance()->SetTestingFactory(
(...skipping 24 matching lines...) Expand all
627 run_loop.Run(); 619 run_loop.Run();
628 index->set_restore_cache_observer(NULL); 620 index->set_restore_cache_observer(NULL);
629 DCHECK(index->restored()); 621 DCHECK(index->restored());
630 } 622 }
631 623
632 // TODO(phajdan.jr): Doesn't this hang if Top Sites are already loaded? 624 // TODO(phajdan.jr): Doesn't this hang if Top Sites are already loaded?
633 void TestingProfile::BlockUntilTopSitesLoaded() { 625 void TestingProfile::BlockUntilTopSitesLoaded() {
634 scoped_refptr<content::MessageLoopRunner> runner = 626 scoped_refptr<content::MessageLoopRunner> runner =
635 new content::MessageLoopRunner; 627 new content::MessageLoopRunner;
636 WaitTopSitesLoadedObserver observer(runner.get()); 628 WaitTopSitesLoadedObserver observer(runner.get());
637 top_sites_->AddObserver(&observer); 629 scoped_refptr<history::TopSites> top_sites =
630 TopSitesFactory::GetForProfile(this);
631 top_sites->AddObserver(&observer);
638 runner->Run(); 632 runner->Run();
639 top_sites_->RemoveObserver(&observer); 633 top_sites->RemoveObserver(&observer);
640 } 634 }
641 635
642 void TestingProfile::SetGuestSession(bool guest) { 636 void TestingProfile::SetGuestSession(bool guest) {
643 guest_session_ = guest; 637 guest_session_ = guest;
644 } 638 }
645 639
646 base::FilePath TestingProfile::GetPath() const { 640 base::FilePath TestingProfile::GetPath() const {
647 return profile_path_; 641 return profile_path_;
648 } 642 }
649 643
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
787 this, profile_policy_connector_.get()); 781 this, profile_policy_connector_.get());
788 CHECK_EQ(profile_policy_connector_.get(), 782 CHECK_EQ(profile_policy_connector_.get(),
789 policy::ProfilePolicyConnectorFactory::GetForProfile(this)); 783 policy::ProfilePolicyConnectorFactory::GetForProfile(this));
790 } 784 }
791 785
792 PrefService* TestingProfile::GetPrefs() { 786 PrefService* TestingProfile::GetPrefs() {
793 DCHECK(prefs_); 787 DCHECK(prefs_);
794 return prefs_.get(); 788 return prefs_.get();
795 } 789 }
796 790
797 history::TopSites* TestingProfile::GetTopSites() {
798 return top_sites_.get();
799 }
800
801 history::TopSites* TestingProfile::GetTopSitesWithoutCreating() {
802 return top_sites_.get();
803 }
804
805 DownloadManagerDelegate* TestingProfile::GetDownloadManagerDelegate() { 791 DownloadManagerDelegate* TestingProfile::GetDownloadManagerDelegate() {
806 return NULL; 792 return NULL;
807 } 793 }
808 794
809 net::URLRequestContextGetter* TestingProfile::GetRequestContext() { 795 net::URLRequestContextGetter* TestingProfile::GetRequestContext() {
810 return GetDefaultStoragePartition(this)->GetURLRequestContext(); 796 return GetDefaultStoragePartition(this)->GetURLRequestContext();
811 } 797 }
812 798
813 net::URLRequestContextGetter* TestingProfile::CreateRequestContext( 799 net::URLRequestContextGetter* TestingProfile::CreateRequestContext(
814 content::ProtocolHandlerMap* protocol_handlers, 800 content::ProtocolHandlerMap* protocol_handlers,
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
1064 #if defined(ENABLE_EXTENSIONS) 1050 #if defined(ENABLE_EXTENSIONS)
1065 extension_policy_, 1051 extension_policy_,
1066 #endif 1052 #endif
1067 pref_service_.Pass(), 1053 pref_service_.Pass(),
1068 original_profile, 1054 original_profile,
1069 guest_session_, 1055 guest_session_,
1070 supervised_user_id_, 1056 supervised_user_id_,
1071 policy_service_.Pass(), 1057 policy_service_.Pass(),
1072 testing_factories_); 1058 testing_factories_);
1073 } 1059 }
OLDNEW
« chrome/browser/ui/tabs/tab_strip_model_utils.cc ('K') | « chrome/test/base/testing_profile.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698