summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authordominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-07 21:01:39 +0000
committerdominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-07 21:01:39 +0000
commitada01b945465efd456813c51ff9090f43337d49c (patch)
tree3fcdfb6aa4d6e1d114ca4928db578a73fac75658 /chrome
parent8c103ce463cb1ce652e89daf9403649aaea0d689 (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit.cc3
-rw-r--r--chrome/browser/browsing_data_remover.cc5
-rw-r--r--chrome/browser/chrome_content_browser_client.cc5
-rw-r--r--chrome/browser/instant/instant_controller.cc4
-rw-r--r--chrome/browser/prerender/prerender_browsertest.cc4
-rw-r--r--chrome/browser/prerender/prerender_manager.cc19
-rw-r--r--chrome/browser/prerender/prerender_manager.h12
-rw-r--r--chrome/browser/prerender/prerender_manager_factory.cc47
-rw-r--r--chrome/browser/prerender/prerender_manager_factory.h41
-rw-r--r--chrome/browser/prerender/prerender_manager_unittest.cc1
-rw-r--r--chrome/browser/prerender/prerender_tab_helper.cc8
-rw-r--r--chrome/browser/profiles/profile.h8
-rw-r--r--chrome/browser/profiles/profile_dependency_manager.cc2
-rw-r--r--chrome/browser/profiles/profile_impl.cc24
-rw-r--r--chrome/browser/profiles/profile_impl.h2
-rw-r--r--chrome/browser/profiles/profile_io_data.cc3
-rw-r--r--chrome/browser/tab_contents/render_view_host_delegate_helper.cc3
-rw-r--r--chrome/browser/task_manager/task_manager_resource_providers.cc4
-rw-r--r--chrome/browser/ui/webui/net_internals_ui.cc3
-rw-r--r--chrome/browser/ui/webui/net_internals_ui_browsertest.cc3
-rw-r--r--chrome/chrome_browser.gypi2
-rw-r--r--chrome/test/base/testing_profile.cc10
-rw-r--r--chrome/test/base/testing_profile.h3
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.