| Index: chrome/browser/renderer_host/resource_dispatcher_host.cc
|
| ===================================================================
|
| --- chrome/browser/renderer_host/resource_dispatcher_host.cc (revision 69229)
|
| +++ chrome/browser/renderer_host/resource_dispatcher_host.cc (working copy)
|
| @@ -41,6 +41,7 @@
|
| #include "chrome/browser/renderer_host/render_view_host_delegate.h"
|
| #include "chrome/browser/renderer_host/render_view_host_notification_task.h"
|
| #include "chrome/browser/renderer_host/resource_dispatcher_host_request_info.h"
|
| +#include "chrome/browser/renderer_host/resource_message_filter.h"
|
| #include "chrome/browser/renderer_host/resource_queue.h"
|
| #include "chrome/browser/renderer_host/resource_request_details.h"
|
| #include "chrome/browser/renderer_host/safe_browsing_resource_handler.h"
|
| @@ -194,14 +195,6 @@
|
|
|
| } // namespace
|
|
|
| -ResourceDispatcherHost::Receiver::Receiver(ChildProcessInfo::ProcessType type,
|
| - int child_id)
|
| - : ChildProcessInfo(type, child_id) {
|
| -}
|
| -
|
| -ResourceDispatcherHost::Receiver::~Receiver() {
|
| -}
|
| -
|
| ResourceDispatcherHost::ResourceDispatcherHost()
|
| : ALLOW_THIS_IN_INITIALIZER_LIST(
|
| download_file_manager_(new DownloadFileManager(this))),
|
| @@ -216,7 +209,7 @@
|
| is_shutdown_(false),
|
| max_outstanding_requests_cost_per_process_(
|
| kMaxOutstandingRequestsCostPerProcess),
|
| - receiver_(NULL) {
|
| + filter_(NULL) {
|
| ResourceQueue::DelegateSet resource_queue_delegates;
|
| resource_queue_delegates.insert(user_script_listener_.get());
|
| resource_queue_.Initialize(resource_queue_delegates);
|
| @@ -299,15 +292,10 @@
|
| }
|
|
|
| bool ResourceDispatcherHost::OnMessageReceived(const IPC::Message& message,
|
| - Receiver* receiver,
|
| + ResourceMessageFilter* filter,
|
| bool* message_was_ok) {
|
| - if (!IsResourceDispatcherHostMessage(message)) {
|
| - return false;
|
| - }
|
| -
|
| - *message_was_ok = true;
|
| - receiver_ = receiver;
|
| -
|
| + filter_ = filter;
|
| + bool handled = true;
|
| IPC_BEGIN_MESSAGE_MAP_EX(ResourceDispatcherHost, message, *message_was_ok)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_RequestResource, OnRequestResource)
|
| IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_SyncLoad, OnSyncLoad)
|
| @@ -319,11 +307,11 @@
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_CancelRequest, OnCancelRequest)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_FollowRedirect, OnFollowRedirect)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_ClosePage_ACK, OnClosePageACK)
|
| + IPC_MESSAGE_UNHANDLED(handled = false)
|
| IPC_END_MESSAGE_MAP_EX()
|
|
|
| - receiver_ = NULL;
|
| -
|
| - return true;
|
| + filter_ = NULL;
|
| + return handled;
|
| }
|
|
|
| void ResourceDispatcherHost::OnRequestResource(
|
| @@ -354,19 +342,12 @@
|
| const ViewHostMsg_Resource_Request& request_data,
|
| IPC::Message* sync_result, // only valid for sync
|
| int route_id) {
|
| - ChildProcessInfo::ProcessType process_type = receiver_->type();
|
| - int child_id = receiver_->id();
|
| - ChromeURLRequestContext* context = static_cast<ChromeURLRequestContext*>(
|
| - receiver_->GetRequestContext(request_id, request_data));
|
| - if (!context) {
|
| - URLRequestContextGetter* context_getter =
|
| - Profile::GetDefaultRequestContext();
|
| - if (context_getter) {
|
| - context = static_cast<ChromeURLRequestContext*>(
|
| - context_getter->GetURLRequestContext());
|
| - }
|
| - }
|
| + ChildProcessInfo::ProcessType process_type = filter_->process_type();
|
| + int child_id = filter_->child_id();
|
|
|
| + ChromeURLRequestContext* context = filter_->GetURLRequestContext(
|
| + request_id, request_data.resource_type);
|
| +
|
| // Might need to resolve the blob references in the upload data.
|
| if (request_data.upload_data && context) {
|
| context->blob_storage_context()->controller()->
|
| @@ -380,10 +361,10 @@
|
| SyncLoadResult result;
|
| result.status = status;
|
| ViewHostMsg_SyncLoad::WriteReplyParams(sync_result, result);
|
| - receiver_->Send(sync_result);
|
| + filter_->Send(sync_result);
|
| } else {
|
| // Tell the renderer that this request was disallowed.
|
| - receiver_->Send(new ViewMsg_Resource_RequestComplete(
|
| + filter_->Send(new ViewMsg_Resource_RequestComplete(
|
| route_id,
|
| request_id,
|
| status,
|
| @@ -402,18 +383,11 @@
|
| // Construct the event handler.
|
| scoped_refptr<ResourceHandler> handler;
|
| if (sync_result) {
|
| - handler = new SyncResourceHandler(receiver_,
|
| - child_id,
|
| - request_data.url,
|
| - sync_result,
|
| - this);
|
| + handler = new SyncResourceHandler(
|
| + filter_, request_data.url, sync_result, this);
|
| } else {
|
| - handler = new AsyncResourceHandler(receiver_,
|
| - child_id,
|
| - route_id,
|
| - receiver_->handle(),
|
| - request_data.url,
|
| - this);
|
| + handler = new AsyncResourceHandler(
|
| + filter_, route_id, request_data.url, this);
|
| }
|
|
|
| // The RedirectToFileResourceHandler depends on being next in the chain.
|
| @@ -491,7 +465,7 @@
|
| // Insert safe browsing at the front of the chain, so it gets to decide
|
| // on policies first.
|
| if (safe_browsing_->enabled()) {
|
| - handler = CreateSafeBrowsingResourceHandler(handler, child_id, route_id,
|
| + handler = CreateSafeBrowsingResourceHandler(handler, route_id,
|
| request_data.resource_type);
|
| }
|
|
|
| @@ -544,12 +518,13 @@
|
|
|
| void ResourceDispatcherHost::OnReleaseDownloadedFile(int request_id) {
|
| DCHECK(pending_requests_.end() ==
|
| - pending_requests_.find(GlobalRequestID(receiver_->id(), request_id)));
|
| - UnregisterDownloadedTempFile(receiver_->id(), request_id);
|
| + pending_requests_.find(
|
| + GlobalRequestID(filter_->child_id(), request_id)));
|
| + UnregisterDownloadedTempFile(filter_->child_id(), request_id);
|
| }
|
|
|
| void ResourceDispatcherHost::OnDataReceivedACK(int request_id) {
|
| - DataReceivedACK(receiver_->id(), request_id);
|
| + DataReceivedACK(filter_->child_id(), request_id);
|
| }
|
|
|
| void ResourceDispatcherHost::DataReceivedACK(int child_id,
|
| @@ -580,22 +555,21 @@
|
| }
|
|
|
| void ResourceDispatcherHost::RegisterDownloadedTempFile(
|
| - int receiver_id, int request_id, DeletableFileReference* reference) {
|
| - // Note: receiver_id is the child_id is the render_process_id...
|
| - registered_temp_files_[receiver_id][request_id] = reference;
|
| + int child_id, int request_id, DeletableFileReference* reference) {
|
| + registered_temp_files_[child_id][request_id] = reference;
|
| ChildProcessSecurityPolicy::GetInstance()->GrantReadFile(
|
| - receiver_id, reference->path());
|
| + child_id, reference->path());
|
| }
|
|
|
| void ResourceDispatcherHost::UnregisterDownloadedTempFile(
|
| - int receiver_id, int request_id) {
|
| - DeletableFilesMap& map = registered_temp_files_[receiver_id];
|
| + int child_id, int request_id) {
|
| + DeletableFilesMap& map = registered_temp_files_[child_id];
|
| DeletableFilesMap::iterator found = map.find(request_id);
|
| if (found == map.end())
|
| return;
|
|
|
| ChildProcessSecurityPolicy::GetInstance()->RevokeAllPermissionsForFile(
|
| - receiver_id, found->second->path());
|
| + child_id, found->second->path());
|
| map.erase(found);
|
| }
|
|
|
| @@ -605,7 +579,7 @@
|
| }
|
|
|
| void ResourceDispatcherHost::OnUploadProgressACK(int request_id) {
|
| - int child_id = receiver_->id();
|
| + int child_id = filter_->child_id();
|
| PendingRequestList::iterator i = pending_requests_.find(
|
| GlobalRequestID(child_id, request_id));
|
| if (i == pending_requests_.end())
|
| @@ -616,28 +590,22 @@
|
| }
|
|
|
| void ResourceDispatcherHost::OnCancelRequest(int request_id) {
|
| - CancelRequest(receiver_->id(), request_id, true);
|
| + CancelRequest(filter_->child_id(), request_id, true);
|
| }
|
|
|
| void ResourceDispatcherHost::OnFollowRedirect(
|
| int request_id,
|
| bool has_new_first_party_for_cookies,
|
| const GURL& new_first_party_for_cookies) {
|
| - FollowDeferredRedirect(receiver_->id(), request_id,
|
| + FollowDeferredRedirect(filter_->child_id(), request_id,
|
| has_new_first_party_for_cookies,
|
| new_first_party_for_cookies);
|
| }
|
|
|
| ResourceHandler* ResourceDispatcherHost::CreateSafeBrowsingResourceHandler(
|
| - ResourceHandler* handler, int child_id, int route_id,
|
| - ResourceType::Type resource_type) {
|
| - return new SafeBrowsingResourceHandler(handler,
|
| - child_id,
|
| - route_id,
|
| - resource_type,
|
| - safe_browsing_,
|
| - this,
|
| - receiver_);
|
| + ResourceHandler* handler, int route_id, ResourceType::Type resource_type) {
|
| + return new SafeBrowsingResourceHandler(
|
| + handler, route_id, resource_type, safe_browsing_, this, filter_);
|
| }
|
|
|
| ResourceDispatcherHostRequestInfo*
|
| @@ -722,7 +690,7 @@
|
| save_info));
|
|
|
| if (safe_browsing_->enabled()) {
|
| - handler = CreateSafeBrowsingResourceHandler(handler, child_id, route_id,
|
| + handler = CreateSafeBrowsingResourceHandler(handler, route_id,
|
| ResourceType::MAIN_FRAME);
|
| }
|
|
|
| @@ -1866,28 +1834,6 @@
|
| }
|
|
|
| // static
|
| -bool ResourceDispatcherHost::IsResourceDispatcherHostMessage(
|
| - const IPC::Message& message) {
|
| - switch (message.type()) {
|
| - case ViewHostMsg_RequestResource::ID:
|
| - case ViewHostMsg_CancelRequest::ID:
|
| - case ViewHostMsg_FollowRedirect::ID:
|
| - case ViewHostMsg_ClosePage_ACK::ID:
|
| - case ViewHostMsg_ReleaseDownloadedFile::ID:
|
| - case ViewHostMsg_DataReceived_ACK::ID:
|
| - case ViewHostMsg_DataDownloaded_ACK::ID:
|
| - case ViewHostMsg_UploadProgress_ACK::ID:
|
| - case ViewHostMsg_SyncLoad::ID:
|
| - return true;
|
| -
|
| - default:
|
| - break;
|
| - }
|
| -
|
| - return false;
|
| -}
|
| -
|
| -// static
|
| void ResourceDispatcherHost::ApplyExtensionLocalizationFilter(
|
| const GURL& url,
|
| const ResourceType::Type& resource_type,
|
|
|