Index: chrome/browser/renderer_host/resource_message_filter.cc |
diff --git a/chrome/browser/renderer_host/resource_message_filter.cc b/chrome/browser/renderer_host/resource_message_filter.cc |
index 02ae30ae24272a79df52e10352eb8e9e449d2e26..404e68b46fc607de030cb01f7a23e8b222a77524 100644 |
--- a/chrome/browser/renderer_host/resource_message_filter.cc |
+++ b/chrome/browser/renderer_host/resource_message_filter.cc |
@@ -32,6 +32,7 @@ |
#include "chrome/common/render_messages.h" |
#include "net/base/cookie_monster.h" |
#include "net/base/mime_util.h" |
+#include "net/base/load_flags.h" |
#include "net/url_request/url_request_context.h" |
#include "webkit/glue/webkit_glue.h" |
#include "webkit/glue/webplugin.h" |
@@ -114,11 +115,14 @@ ResourceMessageFilter::ResourceMessageFilter( |
ALLOW_THIS_IN_INITIALIZER_LIST(resolve_proxy_msg_helper_(this, NULL)), |
render_handle_(NULL), |
request_context_(profile->GetRequestContext()), |
+ media_request_context_(profile->GetRequestContextForMedia()), |
profile_(profile), |
render_widget_helper_(render_widget_helper), |
audio_renderer_host_(audio_renderer_host) { |
DCHECK(request_context_.get()); |
DCHECK(request_context_->cookie_store()); |
+ DCHECK(media_request_context_.get()); |
+ DCHECK(media_request_context_->cookie_store()); |
DCHECK(audio_renderer_host_.get()); |
} |
@@ -188,6 +192,7 @@ bool ResourceMessageFilter::OnMessageReceived(const IPC::Message& message) { |
IPC_MESSAGE_HANDLER(ViewHostMsg_CancelRequest, OnCancelRequest) |
IPC_MESSAGE_HANDLER(ViewHostMsg_ClosePage_ACK, OnClosePageACK) |
IPC_MESSAGE_HANDLER(ViewHostMsg_DataReceived_ACK, OnDataReceivedACK) |
+ IPC_MESSAGE_HANDLER(ViewHostMsg_DownloadProgress_ACK, OnDownloadProgressACK) |
IPC_MESSAGE_HANDLER(ViewHostMsg_UploadProgress_ACK, OnUploadProgressACK) |
IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_SyncLoad, OnSyncLoad) |
@@ -333,6 +338,16 @@ void ResourceMessageFilter::OnRequestResource( |
const IPC::Message& message, |
int request_id, |
const ViewHostMsg_Resource_Request& request) { |
+ URLRequestContext* request_context = request_context_; |
+ // If the request has resource type of ResourceType::MEDIA and |
+ // LOAD_ENABLE_DOWNLOAD_FILE is set as a load flag, we use a request context |
+ // specific to media for handling it because these resources have specific |
+ // needs for caching and data passing. |
+ if (request.resource_type == ResourceType::MEDIA && |
+ (request.load_flags & net::LOAD_ENABLE_DOWNLOAD_FILE)) { |
+ request_context = media_request_context_; |
+ } |
+ |
resource_dispatcher_host_->BeginRequest(this, |
ChildProcessInfo::RENDER_PROCESS, |
render_handle_, |
@@ -340,7 +355,7 @@ void ResourceMessageFilter::OnRequestResource( |
message.routing_id(), |
request_id, |
request, |
- request_context_, |
+ request_context, |
NULL); |
} |
@@ -348,6 +363,11 @@ void ResourceMessageFilter::OnDataReceivedACK(int request_id) { |
resource_dispatcher_host_->OnDataReceivedACK(render_process_id_, request_id); |
} |
+void ResourceMessageFilter::OnDownloadProgressACK(int request_id) { |
+ resource_dispatcher_host_->OnDownloadProgressACK(render_process_id_, |
+ request_id); |
+} |
+ |
void ResourceMessageFilter::OnUploadProgressACK(int request_id) { |
resource_dispatcher_host_->OnUploadProgressACK(render_process_id_, |
request_id); |