Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3110)

Unified Diff: chrome/browser/renderer_host/browser_render_process_host.cc

Issue 5874002: Create a ResourceMessageFilter to filter resource related IPCs. This gets ri... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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()));

Powered by Google App Engine
This is Rietveld 408576698