summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-07 15:47:17 +0000
committercbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-07 15:47:17 +0000
commit8b2f1dfdf5392bb3e66b50cd28621994319a75ed (patch)
tree118db8c3e6773f46ccd9b68336c8c87f482874e7
parent7bd041f4dbbb55ee8f90f36310df994759b4796d (diff)
downloadchromium_src-8b2f1dfdf5392bb3e66b50cd28621994319a75ed.zip
chromium_src-8b2f1dfdf5392bb3e66b50cd28621994319a75ed.tar.gz
chromium_src-8b2f1dfdf5392bb3e66b50cd28621994319a75ed.tar.bz2
Remove Prerender from ResourceContext and ProfileIOData.
BUG=95222 Review URL: http://codereview.chromium.org/8175011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104487 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/prerender/prerender_manager.cc17
-rw-r--r--chrome/browser/prerender/prerender_manager.h3
-rw-r--r--chrome/browser/prerender/prerender_tracker.cc9
-rw-r--r--chrome/browser/prerender/prerender_tracker.h1
-rw-r--r--chrome/browser/profiles/profile_io_data.cc15
-rw-r--r--chrome/browser/profiles/profile_io_data.h7
-rw-r--r--chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc9
-rw-r--r--content/browser/resource_context.cc14
-rw-r--r--content/browser/resource_context.h19
9 files changed, 26 insertions, 68 deletions
diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc
index a48d7efa..5205eb8 100644
--- a/chrome/browser/prerender/prerender_manager.cc
+++ b/chrome/browser/prerender/prerender_manager.cc
@@ -997,4 +997,21 @@ void PrerenderManager::RecordFinalStatus(Origin origin,
histograms_->RecordFinalStatus(origin, experiment_id, final_status);
}
+PrerenderManager* FindPrerenderManagerUsingRenderProcessId(
+ int render_process_id) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ RenderProcessHost* render_process_host =
+ RenderProcessHost::FromID(render_process_id);
+ // Each render process is guaranteed to only hold RenderViews owned by the
+ // same BrowserContext. This is enforced by
+ // RenderProcessHost::GetExistingProcessHost.
+ if (!render_process_host || !render_process_host->browser_context())
+ return NULL;
+ Profile* profile = Profile::FromBrowserContext(
+ render_process_host->browser_context());
+ if (!profile)
+ return NULL;
+ return PrerenderManagerFactory::GetInstance()->GetForProfile(profile);
+}
+
} // namespace prerender
diff --git a/chrome/browser/prerender/prerender_manager.h b/chrome/browser/prerender/prerender_manager.h
index dd238c2..788584d 100644
--- a/chrome/browser/prerender/prerender_manager.h
+++ b/chrome/browser/prerender/prerender_manager.h
@@ -402,6 +402,9 @@ class PrerenderManager : public base::SupportsWeakPtr<PrerenderManager>,
DISALLOW_COPY_AND_ASSIGN(PrerenderManager);
};
+PrerenderManager* FindPrerenderManagerUsingRenderProcessId(
+ int render_process_id);
+
} // namespace prerender
#endif // CHROME_BROWSER_PRERENDER_PRERENDER_MANAGER_H_
diff --git a/chrome/browser/prerender/prerender_tracker.cc b/chrome/browser/prerender/prerender_tracker.cc
index 4aa41a3..ce7626f 100644
--- a/chrome/browser/prerender/prerender_tracker.cc
+++ b/chrome/browser/prerender/prerender_tracker.cc
@@ -33,7 +33,6 @@ void StartDeferredRequestOnIOThread(
}
bool ShouldCancelRequest(
- const base::Callback<PrerenderManager*(void)>& prerender_manager_getter,
int child_id,
int route_id) {
// Check if the RenderViewHost associated with (child_id, route_id) no
@@ -47,13 +46,13 @@ bool ShouldCancelRequest(
RenderViewHost::FromID(child_id, route_id);
if (!render_view_host)
return true;
- PrerenderManager* prerender_manager = prerender_manager_getter.Run();
+ PrerenderManager* prerender_manager =
+ FindPrerenderManagerUsingRenderProcessId(child_id);
return (prerender_manager &&
prerender_manager->IsOldRenderViewHost(render_view_host));
}
void HandleDelayedRequestOnUIThread(
- const base::Callback<PrerenderManager*(void)>& prerender_manager_getter,
int child_id,
int route_id,
int request_id) {
@@ -61,7 +60,7 @@ void HandleDelayedRequestOnUIThread(
ResourceDispatcherHost* resource_dispatcher_host =
g_browser_process->resource_dispatcher_host();
CHECK(resource_dispatcher_host);
- if (ShouldCancelRequest(prerender_manager_getter, child_id, route_id)) {
+ if (ShouldCancelRequest(child_id, route_id)) {
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
NewRunnableFunction(&CancelDeferredRequestOnIOThread,
@@ -195,7 +194,6 @@ bool PrerenderTracker::TryCancelOnIOThread(
bool PrerenderTracker::PotentiallyDelayRequestOnIOThread(
const GURL& gurl,
- const base::Callback<PrerenderManager*(void)>& prerender_manager_getter,
int process_id,
int route_id,
int request_id) {
@@ -206,7 +204,6 @@ bool PrerenderTracker::PotentiallyDelayRequestOnIOThread(
BrowserThread::UI,
FROM_HERE,
NewRunnableFunction(&HandleDelayedRequestOnUIThread,
- prerender_manager_getter,
process_id,
route_id,
request_id));
diff --git a/chrome/browser/prerender/prerender_tracker.h b/chrome/browser/prerender/prerender_tracker.h
index b281ca8..9a53004 100644
--- a/chrome/browser/prerender/prerender_tracker.h
+++ b/chrome/browser/prerender/prerender_tracker.h
@@ -81,7 +81,6 @@ class PrerenderTracker {
// get.
bool PotentiallyDelayRequestOnIOThread(
const GURL& gurl,
- const base::Callback<PrerenderManager*(void)>& prerender_manager_getter,
int child_id,
int route_id,
int request_id);
diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc
index 58516db..24dd15a 100644
--- a/chrome/browser/profiles/profile_io_data.cc
+++ b/chrome/browser/profiles/profile_io_data.cc
@@ -30,8 +30,6 @@
#include "chrome/browser/notifications/desktop_notification_service_factory.h"
#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/transport_security_persister.h"
@@ -181,15 +179,6 @@ Profile* GetProfileOnUI(ProfileManager* profile_manager, Profile* profile) {
return NULL;
}
-prerender::PrerenderManager* GetPrerenderManagerOnUI(
- const base::Callback<Profile*(void)>& profile_getter) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- Profile* profile = profile_getter.Run();
- if (profile)
- return prerender::PrerenderManagerFactory::GetForProfile(profile);
- return NULL;
-}
-
} // namespace
void ProfileIOData::InitializeOnUIThread(Profile* profile) {
@@ -245,8 +234,6 @@ void ProfileIOData::InitializeOnUIThread(Profile* profile) {
params->extension_info_map = profile->GetExtensionInfoMap();
params->notification_service =
DesktopNotificationServiceFactory::GetForProfile(profile);
- params->prerender_manager_getter =
- base::Bind(&GetPrerenderManagerOnUI, profile_getter);
params->protocol_handler_registry = profile->GetProtocolHandlerRegistry();
params->proxy_config_service.reset(
@@ -497,7 +484,6 @@ void ProfileIOData::LazyInitialize() const {
host_content_settings_map_ = profile_params_->host_content_settings_map;
notification_service_ = profile_params_->notification_service;
extension_info_map_ = profile_params_->extension_info_map;
- prerender_manager_getter_ = profile_params_->prerender_manager_getter;
resource_context_.set_host_resolver(io_thread_globals->host_resolver.get());
resource_context_.set_request_context(main_request_context_);
@@ -507,7 +493,6 @@ void ProfileIOData::LazyInitialize() const {
resource_context_.set_file_system_context(file_system_context_);
resource_context_.set_quota_manager(quota_manager_);
resource_context_.set_host_zoom_map(host_zoom_map_);
- resource_context_.set_prerender_manager_getter(prerender_manager_getter_);
resource_context_.SetUserData(NULL, const_cast<ProfileIOData*>(this));
resource_context_.set_media_observer(
io_thread_globals->media.media_internals.get());
diff --git a/chrome/browser/profiles/profile_io_data.h b/chrome/browser/profiles/profile_io_data.h
index 282be52..da4e2b5 100644
--- a/chrome/browser/profiles/profile_io_data.h
+++ b/chrome/browser/profiles/profile_io_data.h
@@ -56,10 +56,6 @@ namespace policy {
class URLBlacklistManager;
} // namespace policy
-namespace prerender {
-class PrerenderManager;
-}; // namespace prerender
-
namespace quota {
class QuotaManager;
}; // namespace quota
@@ -160,7 +156,6 @@ class ProfileIOData {
scoped_refptr<quota::QuotaManager> quota_manager;
scoped_refptr<ExtensionInfoMap> extension_info_map;
DesktopNotificationService* notification_service;
- base::Callback<prerender::PrerenderManager*(void)> prerender_manager_getter;
scoped_refptr<ProtocolHandlerRegistry> protocol_handler_registry;
// We need to initialize the ProxyConfigService from the UI thread
// because on linux it relies on initializing things through gconf,
@@ -299,8 +294,6 @@ class ProfileIOData {
mutable scoped_refptr<ExtensionInfoMap> extension_info_map_;
mutable scoped_refptr<HostContentSettingsMap> host_content_settings_map_;
mutable DesktopNotificationService* notification_service_;
- mutable base::Callback<prerender::PrerenderManager*(void)>
- prerender_manager_getter_;
mutable ResourceContext resource_context_;
diff --git a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
index 7ef7a06..ea94aaf 100644
--- a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
+++ b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
@@ -14,6 +14,7 @@
#include "chrome/browser/instant/instant_loader.h"
#include "chrome/browser/net/load_timing_observer.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/profiles/profile_io_data.h"
#include "chrome/browser/renderer_host/chrome_url_request_user_data.h"
@@ -58,13 +59,11 @@ class InstantResourceDispatcherHostLoginDelegate
};
void AddPrerenderOnUI(
- const base::Callback<prerender::PrerenderManager*(void)>&
- prerender_manager_getter,
int render_process_id, int render_view_id,
const GURL& url, const GURL& referrer) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
prerender::PrerenderManager* prerender_manager =
- prerender_manager_getter.Run();
+ prerender::FindPrerenderManagerUsingRenderProcessId(render_process_id);
if (!prerender_manager || !prerender_manager->is_enabled())
return;
@@ -124,7 +123,6 @@ bool ChromeResourceDispatcherHostDelegate::ShouldBeginRequest(
if (prerender::PrerenderManager::IsPrerenderingPossible()) {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
NewRunnableFunction(AddPrerenderOnUI,
- resource_context.prerender_manager_getter(),
child_id,
route_id,
request_data.url,
@@ -224,8 +222,7 @@ bool ChromeResourceDispatcherHostDelegate::ShouldDeferStart(
ResourceDispatcherHostRequestInfo* info =
resource_dispatcher_host_->InfoForRequest(request);
return prerender_tracker_->PotentiallyDelayRequestOnIOThread(
- request->url(), resource_context.prerender_manager_getter(),
- info->child_id(), info->route_id(), info->request_id());
+ request->url(), info->child_id(), info->route_id(), info->request_id());
}
bool ChromeResourceDispatcherHostDelegate::AcceptSSLClientCertificateRequest(
diff --git a/content/browser/resource_context.cc b/content/browser/resource_context.cc
index 804af9d..552ed1e 100644
--- a/content/browser/resource_context.cc
+++ b/content/browser/resource_context.cc
@@ -178,18 +178,4 @@ void ResourceContext::set_media_stream_manager(
media_stream_manager_ = media_stream_manager;
}
-const base::Callback<prerender::PrerenderManager*(void)>&
-ResourceContext::prerender_manager_getter() const {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- EnsureInitialized();
- return prerender_manager_getter_;
-}
-
-void ResourceContext::set_prerender_manager_getter(
- const base::Callback<prerender::PrerenderManager*(void)>&
- prerender_manager_getter) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- prerender_manager_getter_ = prerender_manager_getter;
-}
-
} // namespace content
diff --git a/content/browser/resource_context.h b/content/browser/resource_context.h
index 90c01e7..0e04d07 100644
--- a/content/browser/resource_context.h
+++ b/content/browser/resource_context.h
@@ -28,9 +28,6 @@ namespace net {
class HostResolver;
class URLRequestContext;
} // namespace net
-namespace prerender {
-class PrerenderManager;
-} // namespace prerender
namespace quota {
class QuotaManager;
}; // namespace quota
@@ -89,16 +86,6 @@ class CONTENT_EXPORT ResourceContext {
void set_media_stream_manager(
media_stream::MediaStreamManager* media_stream_manager);
- // =======================================================================
- // TODO(willchan): These don't belong in content/. Remove them eventually.
-
- // TODO(cbentzel): Kill this one.
- const base::Callback<prerender::PrerenderManager*(void)>&
- prerender_manager_getter() const;
- void set_prerender_manager_getter(
- const base::Callback<prerender::PrerenderManager*(void)>&
- prerender_manager_getter);
-
protected:
ResourceContext();
@@ -121,12 +108,6 @@ class CONTENT_EXPORT ResourceContext {
typedef std::map<const void*, void*> UserDataMap;
UserDataMap user_data_;
-
- // =======================================================================
- // TODO(willchan): These don't belong in content/. Remove them eventually.
-
- base::Callback<prerender::PrerenderManager*(void)> prerender_manager_getter_;
-
DISALLOW_COPY_AND_ASSIGN(ResourceContext);
};