diff options
-rw-r--r-- | chrome/browser/prerender/prerender_manager.cc | 17 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_manager.h | 3 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_tracker.cc | 9 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_tracker.h | 1 | ||||
-rw-r--r-- | chrome/browser/profiles/profile_io_data.cc | 15 | ||||
-rw-r--r-- | chrome/browser/profiles/profile_io_data.h | 7 | ||||
-rw-r--r-- | chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc | 9 | ||||
-rw-r--r-- | content/browser/resource_context.cc | 14 | ||||
-rw-r--r-- | content/browser/resource_context.h | 19 |
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); }; |