diff options
author | dominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-07 21:01:39 +0000 |
---|---|---|
committer | dominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-07 21:01:39 +0000 |
commit | ada01b945465efd456813c51ff9090f43337d49c (patch) | |
tree | 3fcdfb6aa4d6e1d114ca4928db578a73fac75658 /chrome | |
parent | 8c103ce463cb1ce652e89daf9403649aaea0d689 (diff) | |
download | chromium_src-ada01b945465efd456813c51ff9090f43337d49c.zip chromium_src-ada01b945465efd456813c51ff9090f43337d49c.tar.gz chromium_src-ada01b945465efd456813c51ff9090f43337d49c.tar.bz2 |
Revert 100003 - Moved PrerenderManager to ProfileKeyedService system.
As per https://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/554b5b0ca05e001d# it is recommended that weak references to services be removed from Profiles and constructed as ProfileKeyedServices instead. This does this for the PrerenderManager.
BUG=94643
TEST=Prerender*
Review URL: http://codereview.chromium.org/7795009
TBR=dominich@chromium.org
Review URL: http://codereview.chromium.org/7837045
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100014 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
23 files changed, 66 insertions, 150 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_edit.cc b/chrome/browser/autocomplete/autocomplete_edit.cc index a0f3f46..97e7d0c 100644 --- a/chrome/browser/autocomplete/autocomplete_edit.cc +++ b/chrome/browser/autocomplete/autocomplete_edit.cc @@ -25,7 +25,6 @@ #include "chrome/browser/net/predictor_api.h" #include "chrome/browser/net/url_fixer_upper.h" #include "chrome/browser/prerender/prerender_manager.h" -#include "chrome/browser/prerender/prerender_manager_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/search_engines/template_url.h" #include "chrome/browser/search_engines/template_url_service.h" @@ -1015,7 +1014,7 @@ void AutocompleteEditModel::DoPrerender(const AutocompleteMatch& match) { return; TabContentsWrapper* tab = controller_->GetTabContentsWrapper(); prerender::PrerenderManager* prerender_manager = - prerender::PrerenderManagerFactory::GetForProfile(tab->profile()); + tab->profile()->GetPrerenderManager(); if (prerender_manager) prerender_manager->AddPrerenderFromOmnibox(match.destination_url); } diff --git a/chrome/browser/browsing_data_remover.cc b/chrome/browser/browsing_data_remover.cc index 1385841..b759d1d 100644 --- a/chrome/browser/browsing_data_remover.cc +++ b/chrome/browser/browsing_data_remover.cc @@ -24,7 +24,6 @@ #include "chrome/browser/plugin_data_remover.h" #include "chrome/browser/prefs/pref_member.h" #include "chrome/browser/prerender/prerender_manager.h" -#include "chrome/browser/prerender/prerender_manager_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/renderer_host/web_cache_manager.h" #include "chrome/browser/search_engines/template_url_service.h" @@ -179,7 +178,7 @@ void BrowsingDataRemover::Remove(int remove_mask) { // It also may have a prerendered page. If so, the page could be considered // to have a small amount of historical information, so delete it, too. prerender::PrerenderManager* prerender_manager = - prerender::PrerenderManagerFactory::GetForProfile(profile_); + profile_->GetPrerenderManager(); if (prerender_manager) { prerender_manager->ClearData( prerender::PrerenderManager::CLEAR_PRERENDER_CONTENTS | @@ -284,7 +283,7 @@ void BrowsingDataRemover::Remove(int remove_mask) { // The PrerenderManager may have a page actively being prerendered, which // is essentially a preemptively cached page. prerender::PrerenderManager* prerender_manager = - prerender::PrerenderManagerFactory::GetForProfile(profile_); + profile_->GetPrerenderManager(); if (prerender_manager) { prerender_manager->ClearData( prerender::PrerenderManager::CLEAR_PRERENDER_CONTENTS); diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index 5d45004..3e6639c9 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc @@ -28,7 +28,6 @@ #include "chrome/browser/platform_util.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/prerender/prerender_manager.h" -#include "chrome/browser/prerender/prerender_manager_factory.h" #include "chrome/browser/prerender/prerender_tracker.h" #include "chrome/browser/printing/printing_message_filter.h" #include "chrome/browser/profiles/profile.h" @@ -511,8 +510,8 @@ void ChromeContentBrowserClient::AllowCertificateError( return; } prerender::PrerenderManager* prerender_manager = - prerender::PrerenderManagerFactory::GetForProfile( - Profile::FromBrowserContext(tab->browser_context())); + Profile::FromBrowserContext(tab->browser_context())-> + GetPrerenderManager(); if (prerender_manager && prerender_manager->IsTabContentsPrerendering(tab)) { if (prerender_manager->prerender_tracker()->TryCancel( handler->render_process_host_id(), diff --git a/chrome/browser/instant/instant_controller.cc b/chrome/browser/instant/instant_controller.cc index 41d94e4..c7dd79b 100644 --- a/chrome/browser/instant/instant_controller.cc +++ b/chrome/browser/instant/instant_controller.cc @@ -18,7 +18,6 @@ #include "chrome/browser/platform_util.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/prerender/prerender_manager.h" -#include "chrome/browser/prerender/prerender_manager_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/search_engines/template_url.h" #include "chrome/browser/search_engines/template_url_service.h" @@ -206,8 +205,7 @@ void InstantController::Update(TabContentsWrapper* tab_contents, } else if (preview_condition == PREVIEW_CONDITION_INSTANT_SEARCH_ONLY) { // Start Prerender of this page instead. prerender::PrerenderManager* prerender_manager = - prerender::PrerenderManagerFactory::GetForProfile( - tab_contents_->profile()); + tab_contents_->profile()->GetPrerenderManager(); if (prerender_manager) prerender_manager->AddPrerenderFromOmnibox(match.destination_url); diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc index 2e8d692..69aab72 100644 --- a/chrome/browser/prerender/prerender_browsertest.cc +++ b/chrome/browser/prerender/prerender_browsertest.cc @@ -16,7 +16,6 @@ #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/prerender/prerender_contents.h" #include "chrome/browser/prerender/prerender_manager.h" -#include "chrome/browser/prerender/prerender_manager_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/safe_browsing/safe_browsing_service.h" #include "chrome/browser/task_manager/task_manager.h" @@ -542,8 +541,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest { PrerenderManager* prerender_manager() const { Profile* profile = browser()->GetSelectedTabContentsWrapper()->profile(); - PrerenderManager* prerender_manager = - PrerenderManagerFactory::GetForProfile(profile); + PrerenderManager* prerender_manager = profile->GetPrerenderManager(); return prerender_manager; } diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc index b1c38e0..4e73530 100644 --- a/chrome/browser/prerender/prerender_manager.cc +++ b/chrome/browser/prerender/prerender_manager.cc @@ -21,7 +21,6 @@ #include "chrome/browser/prerender/prerender_histograms.h" #include "chrome/browser/prerender/prerender_history.h" #include "chrome/browser/prerender/prerender_tab_helper.h" -#include "chrome/browser/prerender/prerender_manager_factory.h" #include "chrome/browser/prerender/prerender_tracker.h" #include "chrome/browser/prerender/prerender_util.h" #include "chrome/browser/profiles/profile.h" @@ -248,10 +247,8 @@ PrerenderManager::PrerenderManager(Profile* profile, } PrerenderManager::~PrerenderManager() { -} - -void PrerenderManager::Shutdown() { - DoShutdown(); + DestroyAllContents(FINAL_STATUS_MANAGER_SHUTDOWN); + STLDeleteElements(&prerender_conditions_); } void PrerenderManager::SetPrerenderContentsFactory( @@ -684,9 +681,9 @@ void PrerenderManager::RecordPerceivedPageLoadTime( base::TimeDelta perceived_page_load_time, TabContents* tab_contents) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - PrerenderManager* prerender_manager = - PrerenderManagerFactory::GetForProfile( - Profile::FromBrowserContext(tab_contents->browser_context())); + Profile* profile = + Profile::FromBrowserContext(tab_contents->browser_context()); + PrerenderManager* prerender_manager = profile->GetPrerenderManager(); if (!prerender_manager) return; if (!prerender_manager->is_enabled()) @@ -755,12 +752,6 @@ PrerenderManager::PendingContentsData* return NULL; } -void PrerenderManager::DoShutdown() { - DestroyAllContents(FINAL_STATUS_MANAGER_SHUTDOWN); - STLDeleteElements(&prerender_conditions_); - profile_ = NULL; -} - void PrerenderManager::RemovePendingPrerender(PrerenderContents* entry) { DCHECK(CalledOnValidThread()); int child_id; diff --git a/chrome/browser/prerender/prerender_manager.h b/chrome/browser/prerender/prerender_manager.h index bcbaca2..8566b85 100644 --- a/chrome/browser/prerender/prerender_manager.h +++ b/chrome/browser/prerender/prerender_manager.h @@ -23,7 +23,6 @@ #include "chrome/browser/prerender/prerender_contents.h" #include "chrome/browser/prerender/prerender_final_status.h" #include "chrome/browser/prerender/prerender_origin.h" -#include "chrome/browser/profiles/profile_keyed_service.h" #include "googleurl/src/gurl.h" class Profile; @@ -53,8 +52,7 @@ class PrerenderTracker; // views of webpages. All methods must be called on the UI thread unless // indicated otherwise. class PrerenderManager : public base::SupportsWeakPtr<PrerenderManager>, - public base::NonThreadSafe, - public ProfileKeyedService { + public base::NonThreadSafe { public: // PrerenderManagerMode is used in a UMA_HISTOGRAM, so please do not // add in the middle. @@ -82,9 +80,6 @@ class PrerenderManager : public base::SupportsWeakPtr<PrerenderManager>, virtual ~PrerenderManager(); - // ProfileKeyedService implementation. - virtual void Shutdown() OVERRIDE; - // Entry points for adding prerenders. // Adds a prerender for |url| if valid. |process_id| and |route_id| identify @@ -223,11 +218,6 @@ class PrerenderManager : public base::SupportsWeakPtr<PrerenderManager>, PendingContentsData* FindPendingEntry(const GURL& url); - // Utility method that is called from the virtual Shutdown method on this - // class but is called directly from the TestPrerenderManager in the unit - // tests. - void DoShutdown(); - private: // Test that needs needs access to internal functions. friend class PrerenderBrowserTest; diff --git a/chrome/browser/prerender/prerender_manager_factory.cc b/chrome/browser/prerender/prerender_manager_factory.cc deleted file mode 100644 index 1de9a02..0000000 --- a/chrome/browser/prerender/prerender_manager_factory.cc +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/prerender/prerender_manager_factory.h" - -#include "chrome/browser/browser_process.h" -#include "chrome/browser/prerender/prerender_manager.h" -#include "chrome/browser/profiles/profile.h" -#include "chrome/browser/profiles/profile_dependency_manager.h" - -namespace prerender { - -// static -PrerenderManager* PrerenderManagerFactory::GetForProfile( - Profile* profile) { - if (!PrerenderManager::IsPrerenderingPossible()) - return NULL; - return static_cast<PrerenderManager*>( - GetInstance()->GetServiceForProfile(profile, true)); -} - -PrerenderManagerFactory* PrerenderManagerFactory::GetInstance() { - return Singleton<PrerenderManagerFactory>::get(); -} - -PrerenderManagerFactory::PrerenderManagerFactory() - : ProfileKeyedServiceFactory(ProfileDependencyManager::GetInstance()) { -} - -PrerenderManagerFactory::~PrerenderManagerFactory() { -} - -ProfileKeyedService* PrerenderManagerFactory::BuildServiceInstanceFor( - Profile* profile) const { - CHECK(g_browser_process->prerender_tracker()); - PrerenderManager* prerender_manager = new prerender::PrerenderManager( - profile, g_browser_process->prerender_tracker()); -#if defined(OS_CHROMEOS) - prerender_manager->AddCondition( - new chromeos::PrerenderConditionNetwork( - chromeos::CrosLibrary::Get()->GetNetworkLibrary())); -#endif - return prerender_manager; -} - -} // end namespace prerender diff --git a/chrome/browser/prerender/prerender_manager_factory.h b/chrome/browser/prerender/prerender_manager_factory.h deleted file mode 100644 index 7a61d89..0000000 --- a/chrome/browser/prerender/prerender_manager_factory.h +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_PRERENDER_PRERENDER_MANAGER_FACTORY_H_ -#define CHROME_BROWSER_PRERENDER_PRERENDER_MANAGER_FACTORY_H_ - -#include "base/compiler_specific.h" -#include "base/memory/singleton.h" -#include "chrome/browser/profiles/profile_keyed_service_factory.h" - -class Profile; - -namespace prerender { - -class PrerenderManager; - -// Singleton that owns all PrerenderManagers and associates them with Profiles. -// Listens for the Profile's destruction notification and cleans up the -// associated PrerenderManager. -class PrerenderManagerFactory : public ProfileKeyedServiceFactory { - public: - // Returns the PrerenderManager for |profile|. - static PrerenderManager* GetForProfile(Profile* profile); - - static PrerenderManagerFactory* GetInstance(); - - private: - friend struct DefaultSingletonTraits<PrerenderManagerFactory>; - - PrerenderManagerFactory(); - virtual ~PrerenderManagerFactory(); - - // ProfileKeyedServiceFactory: - virtual ProfileKeyedService* BuildServiceInstanceFor( - Profile* profile) const OVERRIDE; -}; - -} // end namespace prerender - -#endif // CHROME_BROWSER_PRERENDER_PRERENDER_MANAGER_FACTORY_H_ diff --git a/chrome/browser/prerender/prerender_manager_unittest.cc b/chrome/browser/prerender/prerender_manager_unittest.cc index 3d08dc7..3184de4 100644 --- a/chrome/browser/prerender/prerender_manager_unittest.cc +++ b/chrome/browser/prerender/prerender_manager_unittest.cc @@ -84,7 +84,6 @@ class TestPrerenderManager : public PrerenderManager { it != used_prerender_contents_.end(); ++it) { (*it)->set_final_status(FINAL_STATUS_USED); } - DoShutdown(); } void AdvanceTime(base::TimeDelta delta) { diff --git a/chrome/browser/prerender/prerender_tab_helper.cc b/chrome/browser/prerender/prerender_tab_helper.cc index 74b0d74..67a963d 100644 --- a/chrome/browser/prerender/prerender_tab_helper.cc +++ b/chrome/browser/prerender/prerender_tab_helper.cc @@ -8,7 +8,6 @@ #include "base/string_number_conversions.h" #include "base/time.h" #include "chrome/browser/prerender/prerender_manager.h" -#include "chrome/browser/prerender/prerender_manager_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" #include "content/browser/tab_contents/tab_contents.h" @@ -241,8 +240,11 @@ void PrerenderTabHelper::DidStartProvisionalLoadForFrame( } PrerenderManager* PrerenderTabHelper::MaybeGetPrerenderManager() const { - return PrerenderManagerFactory::GetForProfile( - Profile::FromBrowserContext(tab_contents()->browser_context())); + Profile* profile = + Profile::FromBrowserContext(tab_contents()->browser_context()); + if (!profile) + return NULL; + return profile->GetPrerenderManager(); } bool PrerenderTabHelper::MaybeUsePrerenderedPage(const GURL& url, diff --git a/chrome/browser/profiles/profile.h b/chrome/browser/profiles/profile.h index 029d864..c2ba480 100644 --- a/chrome/browser/profiles/profile.h +++ b/chrome/browser/profiles/profile.h @@ -44,6 +44,10 @@ class TransportSecurityState; class SSLConfigService; } +namespace prerender { +class PrerenderManager; +} + namespace speech_input { class SpeechRecognizer; } @@ -488,6 +492,10 @@ class Profile : public content::BrowserContext { // access to the the proxy configuration possibly defined by preferences. virtual PrefProxyConfigTracker* GetProxyConfigTracker() = 0; + // Returns the PrerenderManager used to prerender entire webpages for this + // profile. + virtual prerender::PrerenderManager* GetPrerenderManager() = 0; + std::string GetDebugName(); // Returns whether it is a guest session. diff --git a/chrome/browser/profiles/profile_dependency_manager.cc b/chrome/browser/profiles/profile_dependency_manager.cc index ce133ee..db551a2 100644 --- a/chrome/browser/profiles/profile_dependency_manager.cc +++ b/chrome/browser/profiles/profile_dependency_manager.cc @@ -10,7 +10,6 @@ #include "chrome/browser/background/background_contents_service_factory.h" #include "chrome/browser/plugin_prefs.h" -#include "chrome/browser/prerender/prerender_manager_factory.h" #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.h" #include "chrome/browser/profiles/profile_keyed_service.h" #include "chrome/browser/profiles/profile_keyed_service_factory.h" @@ -39,7 +38,6 @@ void AssertFactoriesBuilt() { BackgroundContentsServiceFactory::GetInstance(); CloudPrintProxyServiceFactory::GetInstance(); PluginPrefs::Initialize(); - prerender::PrerenderManagerFactory::GetInstance(); SessionServiceFactory::GetInstance(); TabRestoreServiceFactory::GetInstance(); TemplateURLServiceFactory::GetInstance(); diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc index 26adeb3..159e6b8 100644 --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc @@ -55,7 +55,7 @@ #include "chrome/browser/prefs/browser_prefs.h" #include "chrome/browser/prefs/pref_value_store.h" #include "chrome/browser/prefs/scoped_user_pref_update.h" -#include "chrome/browser/prerender/prerender_manager_factory.h" +#include "chrome/browser/prerender/prerender_manager.h" #include "chrome/browser/profiles/profile_dependency_manager.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/search_engines/template_url_fetcher.h" @@ -920,9 +920,8 @@ void ProfileImpl::OnPrefsLoaded(bool success) { ProfileDependencyManager::GetInstance()->CreateProfileServices(this, false); DCHECK(!net_pref_observer_.get()); - net_pref_observer_.reset(new NetPrefObserver( - prefs_.get(), - prerender::PrerenderManagerFactory::GetForProfile(this))); + net_pref_observer_.reset( + new NetPrefObserver(prefs_.get(), GetPrerenderManager())); DoFinalInit(); } @@ -1722,6 +1721,23 @@ PrefProxyConfigTracker* ProfileImpl::GetProxyConfigTracker() { return pref_proxy_config_tracker_; } +prerender::PrerenderManager* ProfileImpl::GetPrerenderManager() { + if (!prerender::PrerenderManager::IsPrerenderingPossible()) + return NULL; + if (!prerender_manager_.get()) { + CHECK(g_browser_process->prerender_tracker()); + prerender_manager_.reset( + new prerender::PrerenderManager( + this, g_browser_process->prerender_tracker())); +#if defined(OS_CHROMEOS) + prerender_manager_->AddCondition( + new chromeos::PrerenderConditionNetwork( + chromeos::CrosLibrary::Get()->GetNetworkLibrary())); +#endif + } + return prerender_manager_.get(); +} + SpellCheckProfile* ProfileImpl::GetSpellCheckProfile() { if (!spellcheck_profile_.get()) spellcheck_profile_.reset(new SpellCheckProfile()); diff --git a/chrome/browser/profiles/profile_impl.h b/chrome/browser/profiles/profile_impl.h index fe313cd..cdc2985 100644 --- a/chrome/browser/profiles/profile_impl.h +++ b/chrome/browser/profiles/profile_impl.h @@ -131,6 +131,7 @@ class ProfileImpl : public Profile, #endif // defined(OS_CHROMEOS) virtual PrefProxyConfigTracker* GetProxyConfigTracker(); + virtual prerender::PrerenderManager* GetPrerenderManager(); // NotificationObserver implementation. virtual void Observe(int type, @@ -204,6 +205,7 @@ class ProfileImpl : public Profile, transport_security_state_; scoped_refptr<TransportSecurityPersister> transport_security_persister_; + scoped_ptr<prerender::PrerenderManager> prerender_manager_; scoped_ptr<NetPrefObserver> net_pref_observer_; scoped_ptr<TemplateURLFetcher> template_url_fetcher_; scoped_ptr<BookmarkModel> bookmark_bar_model_; diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc index 4ab7911..59dd64b 100644 --- a/chrome/browser/profiles/profile_io_data.cc +++ b/chrome/browser/profiles/profile_io_data.cc @@ -31,7 +31,6 @@ #include "chrome/browser/policy/url_blacklist_manager.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/prerender/prerender_manager.h" -#include "chrome/browser/prerender/prerender_manager_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/ui/webui/chrome_url_data_manager_backend.h" @@ -184,7 +183,7 @@ prerender::PrerenderManager* GetPrerenderManagerOnUI( DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); Profile* profile = profile_getter.Run(); if (profile) - return prerender::PrerenderManagerFactory::GetForProfile(profile); + return profile->GetPrerenderManager(); return NULL; } diff --git a/chrome/browser/tab_contents/render_view_host_delegate_helper.cc b/chrome/browser/tab_contents/render_view_host_delegate_helper.cc index a60dadb..d82f08b 100644 --- a/chrome/browser/tab_contents/render_view_host_delegate_helper.cc +++ b/chrome/browser/tab_contents/render_view_host_delegate_helper.cc @@ -16,7 +16,6 @@ #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/prefs/scoped_user_pref_update.h" #include "chrome/browser/prerender/prerender_manager.h" -#include "chrome/browser/prerender/prerender_manager_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/tab_contents/background_contents.h" #include "chrome/browser/user_style_sheet_watcher.h" @@ -152,7 +151,7 @@ TabContents* RenderViewHostDelegateViewHelper::CreateNewWindow( // Do not create the new TabContents if the opener is a prerender TabContents. prerender::PrerenderManager* prerender_manager = - prerender::PrerenderManagerFactory::GetForProfile(profile); + profile->GetPrerenderManager(); if (prerender_manager && prerender_manager->IsTabContentsPrerendering(base_tab_contents)) { return NULL; diff --git a/chrome/browser/task_manager/task_manager_resource_providers.cc b/chrome/browser/task_manager/task_manager_resource_providers.cc index d7a93e7..4821d23 100644 --- a/chrome/browser/task_manager/task_manager_resource_providers.cc +++ b/chrome/browser/task_manager/task_manager_resource_providers.cc @@ -22,7 +22,6 @@ #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/favicon/favicon_tab_helper.h" #include "chrome/browser/prerender/prerender_manager.h" -#include "chrome/browser/prerender/prerender_manager_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_info_cache.h" #include "chrome/browser/profiles/profile_manager.h" @@ -213,8 +212,7 @@ TaskManagerTabContentsResource::~TaskManagerTabContentsResource() { bool TaskManagerTabContentsResource::IsPrerendering() const { prerender::PrerenderManager* prerender_manager = - prerender::PrerenderManagerFactory::GetForProfile( - tab_contents_->profile()); + tab_contents_->profile()->GetPrerenderManager(); return prerender_manager && prerender_manager->IsTabContentsPrerendering( tab_contents_->tab_contents()); diff --git a/chrome/browser/ui/webui/net_internals_ui.cc b/chrome/browser/ui/webui/net_internals_ui.cc index 6bd0b34..8dd9a59 100644 --- a/chrome/browser/ui/webui/net_internals_ui.cc +++ b/chrome/browser/ui/webui/net_internals_ui.cc @@ -30,7 +30,6 @@ #include "chrome/browser/net/url_fixer_upper.h" #include "chrome/browser/prefs/pref_member.h" #include "chrome/browser/prerender/prerender_manager.h" -#include "chrome/browser/prerender/prerender_manager_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/webui/chrome_url_data_manager.h" #include "chrome/browser/ui/webui/chrome_web_ui_data_source.h" @@ -483,7 +482,7 @@ WebUIMessageHandler* NetInternalsMessageHandler::Attach(WebUI* web_ui) { proxy_->CreateCallback(&IOThreadImpl::OnRendererReady)); prerender::PrerenderManager* prerender_manager = - prerender::PrerenderManagerFactory::GetForProfile(profile); + profile->GetPrerenderManager(); if (prerender_manager) { prerender_manager_ = prerender_manager->AsWeakPtr(); } else { diff --git a/chrome/browser/ui/webui/net_internals_ui_browsertest.cc b/chrome/browser/ui/webui/net_internals_ui_browsertest.cc index 81cce19..c9b5aba 100644 --- a/chrome/browser/ui/webui/net_internals_ui_browsertest.cc +++ b/chrome/browser/ui/webui/net_internals_ui_browsertest.cc @@ -7,7 +7,6 @@ #include "base/utf_string_conversions.h" #include "chrome/browser/prerender/prerender_final_status.h" #include "chrome/browser/prerender/prerender_manager.h" -#include "chrome/browser/prerender/prerender_manager_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" @@ -121,7 +120,7 @@ void NetInternalsTest::SetUpOnMainThread() { // as debug builds use more memory and often go over the usual limit. Profile* profile = browser()->GetSelectedTabContentsWrapper()->profile(); prerender::PrerenderManager* prerender_manager = - prerender::PrerenderManagerFactory::GetForProfile(profile); + profile->GetPrerenderManager(); prerender_manager->mutable_config().max_bytes = 1000 * 1024 * 1024; } diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index b7993d5..410d72c 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -1793,8 +1793,6 @@ 'browser/prerender/prerender_history.h', 'browser/prerender/prerender_manager.cc', 'browser/prerender/prerender_manager.h', - 'browser/prerender/prerender_manager_factory.cc', - 'browser/prerender/prerender_manager_factory.h', 'browser/prerender/prerender_origin.cc', 'browser/prerender/prerender_origin.h', 'browser/prerender/prerender_render_view_host_observer.cc', diff --git a/chrome/test/base/testing_profile.cc b/chrome/test/base/testing_profile.cc index 5ac276a..dcb57ef 100644 --- a/chrome/test/base/testing_profile.cc +++ b/chrome/test/base/testing_profile.cc @@ -776,6 +776,16 @@ ChromeURLDataManager* TestingProfile::GetChromeURLDataManager() { return chrome_url_data_manager_.get(); } +prerender::PrerenderManager* TestingProfile::GetPrerenderManager() { + if (!prerender::PrerenderManager::IsPrerenderingPossible()) + return NULL; + if (!prerender_manager_.get()) { + prerender_manager_.reset(new prerender::PrerenderManager( + this, g_browser_process->prerender_tracker())); + } + return prerender_manager_.get(); +} + PrefService* TestingProfile::GetOffTheRecordPrefs() { return NULL; } diff --git a/chrome/test/base/testing_profile.h b/chrome/test/base/testing_profile.h index 11fd1d8..5057da5 100644 --- a/chrome/test/base/testing_profile.h +++ b/chrome/test/base/testing_profile.h @@ -279,6 +279,7 @@ class TestingProfile : public Profile { virtual ExtensionInfoMap* GetExtensionInfoMap(); virtual PromoCounter* GetInstantPromoCounter(); virtual ChromeURLDataManager* GetChromeURLDataManager(); + virtual prerender::PrerenderManager* GetPrerenderManager(); virtual PrefService* GetOffTheRecordPrefs(); // TODO(jam): remove me once webkit_context_unittest.cc doesn't use Profile @@ -396,6 +397,8 @@ class TestingProfile : public Profile { scoped_ptr<ChromeURLDataManager> chrome_url_data_manager_; + scoped_ptr<prerender::PrerenderManager> prerender_manager_; + // We keep a weak pointer to the dependency manager we want to notify on our // death. Defaults to the Singleton implementation but overridable for // testing. |