| Index: content/browser/renderer_host/render_process_host_impl.cc
|
| ===================================================================
|
| --- content/browser/renderer_host/render_process_host_impl.cc (revision 222038)
|
| +++ content/browser/renderer_host/render_process_host_impl.cc (working copy)
|
| @@ -164,38 +164,31 @@
|
| ShaderCacheFactory::GetInstance()->RemoveCacheInfo(id);
|
| }
|
|
|
| -// Helper class that we pass to ResourceMessageFilter so that it can find the
|
| -// right net::URLRequestContext for a request.
|
| -class RendererURLRequestContextSelector
|
| - : public ResourceMessageFilter::URLRequestContextSelector {
|
| - public:
|
| - RendererURLRequestContextSelector(BrowserContext* browser_context,
|
| - int render_child_id)
|
| - : request_context_(browser_context->GetRequestContextForRenderProcess(
|
| - render_child_id)),
|
| - media_request_context_(
|
| - browser_context->GetMediaRequestContextForRenderProcess(
|
| - render_child_id)) {
|
| - }
|
| +net::URLRequestContext* GetRequestContext(
|
| + scoped_refptr<net::URLRequestContextGetter> request_context,
|
| + scoped_refptr<net::URLRequestContextGetter> media_request_context,
|
| + ResourceType::Type resource_type) {
|
| + // 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)
|
| + return media_request_context->GetURLRequestContext();
|
| + return request_context->GetURLRequestContext();
|
| +}
|
|
|
| - virtual net::URLRequestContext* GetRequestContext(
|
| - ResourceType::Type resource_type) OVERRIDE {
|
| - net::URLRequestContextGetter* request_context = request_context_.get();
|
| - // 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_.get();
|
| - return request_context->GetURLRequestContext();
|
| - }
|
| +void GetContexts(
|
| + ResourceContext* resource_context,
|
| + scoped_refptr<net::URLRequestContextGetter> request_context,
|
| + scoped_refptr<net::URLRequestContextGetter> media_request_context,
|
| + const ResourceHostMsg_Request& request,
|
| + ResourceContext** resource_context_out,
|
| + net::URLRequestContext** request_context_out) {
|
| + *resource_context_out = resource_context;
|
| + *request_context_out =
|
| + GetRequestContext(request_context, media_request_context,
|
| + request.resource_type);
|
| +}
|
|
|
| - private:
|
| - virtual ~RendererURLRequestContextSelector() {}
|
| -
|
| - scoped_refptr<net::URLRequestContextGetter> request_context_;
|
| - scoped_refptr<net::URLRequestContextGetter> media_request_context_;
|
| -};
|
| -
|
| // the global list of all renderer processes
|
| base::LazyInstance<IDMap<RenderProcessHost> >::Leaky
|
| g_all_hosts = LAZY_INSTANCE_INITIALIZER;
|
| @@ -563,12 +556,21 @@
|
| BrowserContext* browser_context = GetBrowserContext();
|
| ResourceContext* resource_context = browser_context->GetResourceContext();
|
|
|
| + scoped_refptr<net::URLRequestContextGetter> request_context(
|
| + browser_context->GetRequestContextForRenderProcess(GetID()));
|
| + scoped_refptr<net::URLRequestContextGetter> media_request_context(
|
| + browser_context->GetMediaRequestContextForRenderProcess(GetID()));
|
| +
|
| + ResourceMessageFilter::GetContextsCallback get_contexts_callback(
|
| + base::Bind(&GetContexts, browser_context->GetResourceContext(),
|
| + request_context, media_request_context));
|
| +
|
| ResourceMessageFilter* resource_message_filter = new ResourceMessageFilter(
|
| - GetID(), PROCESS_TYPE_RENDERER, resource_context,
|
| + GetID(), PROCESS_TYPE_RENDERER,
|
| storage_partition_impl_->GetAppCacheService(),
|
| ChromeBlobStorageContext::GetFor(browser_context),
|
| storage_partition_impl_->GetFileSystemContext(),
|
| - new RendererURLRequestContextSelector(browser_context, GetID()));
|
| + get_contexts_callback);
|
|
|
| channel_->AddFilter(resource_message_filter);
|
| MediaStreamManager* media_stream_manager =
|
| @@ -647,10 +649,14 @@
|
| channel_->AddFilter(new FontCacheDispatcher());
|
| #endif
|
|
|
| + SocketStreamDispatcherHost::GetRequestContextCallback
|
| + request_context_callback(
|
| + base::Bind(&GetRequestContext, request_context,
|
| + media_request_context));
|
| +
|
| SocketStreamDispatcherHost* socket_stream_dispatcher_host =
|
| - new SocketStreamDispatcherHost(GetID(),
|
| - new RendererURLRequestContextSelector(browser_context, GetID()),
|
| - resource_context);
|
| + new SocketStreamDispatcherHost(
|
| + GetID(), request_context_callback, resource_context);
|
| channel_->AddFilter(socket_stream_dispatcher_host);
|
|
|
| channel_->AddFilter(new WorkerMessageFilter(
|
| @@ -842,6 +848,7 @@
|
| switches::kAuditAllHandles,
|
| switches::kAuditHandles,
|
| switches::kBlockCrossSiteDocuments,
|
| + switches::kDirectNPAPIRequests,
|
| switches::kDisable3DAPIs,
|
| switches::kDisableAcceleratedCompositing,
|
| switches::kDisableAcceleratedVideoDecode,
|
|
|