Chromium Code Reviews| Index: chrome/browser/renderer_host/browser_render_process_host.cc |
| =================================================================== |
| --- chrome/browser/renderer_host/browser_render_process_host.cc (revision 69229) |
| +++ chrome/browser/renderer_host/browser_render_process_host.cc (working copy) |
| @@ -57,6 +57,7 @@ |
| #include "chrome/browser/renderer_host/render_view_host_delegate.h" |
| #include "chrome/browser/renderer_host/render_widget_helper.h" |
| #include "chrome/browser/renderer_host/render_widget_host.h" |
| +#include "chrome/browser/renderer_host/resource_message_filter.h" |
| #include "chrome/browser/renderer_host/socket_stream_dispatcher_host.h" |
| #include "chrome/browser/renderer_host/web_cache_manager.h" |
| #include "chrome/browser/safe_browsing/client_side_detection_service.h" |
| @@ -220,6 +221,36 @@ |
| VisitedLinkCommon::Fingerprints pending_; |
| }; |
| +namespace { |
|
brettw
2010/12/15 21:31:10
Usually we'd put anonymous namespace first. In thi
jam
2010/12/15 21:41:04
I had tried that, but those classes are forward de
|
| + |
| +// Helper class that we pass to ResourceMessageFilter so that it can find the |
| +// right URLRequestContext for a request. |
| +class RendererURLRequestContextOverride |
| + : public ResourceMessageFilter::URLRequestContextOverride { |
| + public: |
| + explicit RendererURLRequestContextOverride(Profile* profile) |
| + : request_context_(profile->GetRequestContext()), |
|
brettw
2010/12/15 21:31:10
2 more spaces indent.
jam
2010/12/15 21:41:04
Done.
|
| + media_request_context_(profile->GetRequestContextForMedia()) { |
| + } |
| + |
| + virtual URLRequestContext* GetRequestContext( |
| + uint32 request_id, ResourceType::Type resource_type) { |
| + URLRequestContextGetter* request_context = request_context_; |
| + // If the request has resource type of ResourceType::MEDIA, we use a request |
| + // context specific to media for handling it because these resources have |
| + // specific needs for caching. |
| + if (resource_type == ResourceType::MEDIA) |
| + request_context = media_request_context_; |
| + return request_context->GetURLRequestContext(); |
| + } |
| + |
| + private: |
| + scoped_refptr<URLRequestContextGetter> request_context_; |
| + scoped_refptr<URLRequestContextGetter> media_request_context_; |
| +}; |
| + |
| +} // namespace |
| + |
| BrowserRenderProcessHost::BrowserRenderProcessHost(Profile* profile) |
| : RenderProcessHost(profile), |
| visible_widgets_(0), |
| @@ -389,14 +420,22 @@ |
| void BrowserRenderProcessHost::CreateMessageFilters() { |
| scoped_refptr<RenderMessageFilter> render_message_filter( |
| - new RenderMessageFilter(g_browser_process->resource_dispatcher_host(), |
| - id(), |
| + new RenderMessageFilter(id(), |
| PluginService::GetInstance(), |
| - g_browser_process->print_job_manager(), |
| profile(), |
| widget_helper_)); |
| channel_->AddFilter(render_message_filter); |
| + scoped_refptr<RendererURLRequestContextOverride> url_request_context_override( |
| + new RendererURLRequestContextOverride(profile())); |
| + |
| + ResourceMessageFilter* resource_message_filter = new ResourceMessageFilter( |
| + id(), ChildProcessInfo::RENDER_PROCESS, |
| + g_browser_process->resource_dispatcher_host()); |
| + resource_message_filter->set_url_request_context_override( |
| + url_request_context_override); |
| + channel_->AddFilter(resource_message_filter); |
| + |
| channel_->AddFilter(new AudioRendererHost()); |
| channel_->AddFilter( |
| new AppCacheDispatcherHost(profile()->GetRequestContext(), id())); |