| Index: chrome/browser/renderer_host/async_resource_handler.cc
|
| ===================================================================
|
| --- chrome/browser/renderer_host/async_resource_handler.cc (revision 69229)
|
| +++ chrome/browser/renderer_host/async_resource_handler.cc (working copy)
|
| @@ -9,13 +9,14 @@
|
|
|
| #include "base/hash_tables.h"
|
| #include "base/logging.h"
|
| -#include "base/process.h"
|
| #include "base/shared_memory.h"
|
| #include "chrome/browser/debugger/devtools_netlog_observer.h"
|
| #include "chrome/browser/net/chrome_url_request_context.h"
|
| #include "chrome/browser/net/load_timing_observer.h"
|
| #include "chrome/browser/renderer_host/global_request_id.h"
|
| +#include "chrome/browser/renderer_host/resource_dispatcher_host.h"
|
| #include "chrome/browser/renderer_host/resource_dispatcher_host_request_info.h"
|
| +#include "chrome/browser/renderer_host/resource_message_filter.h"
|
| #include "chrome/common/render_messages.h"
|
| #include "chrome/common/resource_response.h"
|
| #include "net/base/io_buffer.h"
|
| @@ -74,16 +75,12 @@
|
| };
|
|
|
| AsyncResourceHandler::AsyncResourceHandler(
|
| - ResourceDispatcherHost::Receiver* receiver,
|
| - int process_id,
|
| + ResourceMessageFilter* filter,
|
| int routing_id,
|
| - base::ProcessHandle process_handle,
|
| const GURL& url,
|
| ResourceDispatcherHost* resource_dispatcher_host)
|
| - : receiver_(receiver),
|
| - process_id_(process_id),
|
| + : filter_(filter),
|
| routing_id_(routing_id),
|
| - process_handle_(process_handle),
|
| rdh_(resource_dispatcher_host),
|
| next_buffer_size_(kInitialReadBufSize) {
|
| }
|
| @@ -94,9 +91,9 @@
|
| bool AsyncResourceHandler::OnUploadProgress(int request_id,
|
| uint64 position,
|
| uint64 size) {
|
| - return receiver_->Send(new ViewMsg_Resource_UploadProgress(routing_id_,
|
| - request_id,
|
| - position, size));
|
| + return filter_->Send(new ViewMsg_Resource_UploadProgress(routing_id_,
|
| + request_id,
|
| + position, size));
|
| }
|
|
|
| bool AsyncResourceHandler::OnRequestRedirected(int request_id,
|
| @@ -105,10 +102,10 @@
|
| bool* defer) {
|
| *defer = true;
|
| net::URLRequest* request = rdh_->GetURLRequest(
|
| - GlobalRequestID(process_id_, request_id));
|
| + GlobalRequestID(filter_->child_id(), request_id));
|
| LoadTimingObserver::PopulateTimingInfo(request, response);
|
| DevToolsNetLogObserver::PopulateResponseInfo(request, response);
|
| - return receiver_->Send(new ViewMsg_Resource_ReceivedRedirect(
|
| + return filter_->Send(new ViewMsg_Resource_ReceivedRedirect(
|
| routing_id_, request_id, new_url, response->response_head));
|
| }
|
|
|
| @@ -120,7 +117,7 @@
|
| // request commits, avoiding the possibility of e.g. zooming the old content
|
| // or of having to layout the new content twice.
|
| net::URLRequest* request = rdh_->GetURLRequest(
|
| - GlobalRequestID(process_id_, request_id));
|
| + GlobalRequestID(filter_->child_id(), request_id));
|
|
|
| LoadTimingObserver::PopulateTimingInfo(request, response);
|
| DevToolsNetLogObserver::PopulateResponseInfo(request, response);
|
| @@ -131,23 +128,23 @@
|
| ChromeURLRequestContext* context =
|
| static_cast<ChromeURLRequestContext*>(request->context());
|
| if (context) {
|
| - receiver_->Send(new ViewMsg_SetContentSettingsForLoadingURL(
|
| + filter_->Send(new ViewMsg_SetContentSettingsForLoadingURL(
|
| info->route_id(), request_url,
|
| context->host_content_settings_map()->GetContentSettings(
|
| request_url)));
|
| - receiver_->Send(new ViewMsg_SetZoomLevelForLoadingURL(info->route_id(),
|
| + filter_->Send(new ViewMsg_SetZoomLevelForLoadingURL(info->route_id(),
|
| request_url, context->host_zoom_map()->GetZoomLevel(request_url)));
|
| }
|
| }
|
|
|
| - receiver_->Send(new ViewMsg_Resource_ReceivedResponse(
|
| + filter_->Send(new ViewMsg_Resource_ReceivedResponse(
|
| routing_id_, request_id, response->response_head));
|
|
|
| if (request->response_info().metadata) {
|
| std::vector<char> copy(request->response_info().metadata->data(),
|
| request->response_info().metadata->data() +
|
| request->response_info().metadata->size());
|
| - receiver_->Send(new ViewMsg_Resource_ReceivedCachedMetadata(
|
| + filter_->Send(new ViewMsg_Resource_ReceivedCachedMetadata(
|
| routing_id_, request_id, copy));
|
| }
|
|
|
| @@ -198,18 +195,19 @@
|
| next_buffer_size_ = std::min(next_buffer_size_ * 2, kMaxReadBufSize);
|
| }
|
|
|
| - if (!rdh_->WillSendData(process_id_, request_id)) {
|
| + if (!rdh_->WillSendData(filter_->child_id(), request_id)) {
|
| // We should not send this data now, we have too many pending requests.
|
| return true;
|
| }
|
|
|
| base::SharedMemoryHandle handle;
|
| - if (!read_buffer_->shared_memory()->GiveToProcess(process_handle_, &handle)) {
|
| + if (!read_buffer_->shared_memory()->GiveToProcess(
|
| + filter_->peer_handle(), &handle)) {
|
| // We wrongfully incremented the pending data count. Fake an ACK message
|
| // to fix this. We can't move this call above the WillSendData because
|
| // it's killing our read_buffer_, and we don't want that when we pause
|
| // the request.
|
| - rdh_->DataReceivedACK(process_id_, request_id);
|
| + rdh_->DataReceivedACK(filter_->child_id(), request_id);
|
| // We just unmapped the memory.
|
| read_buffer_ = NULL;
|
| return false;
|
| @@ -217,7 +215,7 @@
|
| // We just unmapped the memory.
|
| read_buffer_ = NULL;
|
|
|
| - receiver_->Send(new ViewMsg_Resource_DataReceived(
|
| + filter_->Send(new ViewMsg_Resource_DataReceived(
|
| routing_id_, request_id, handle, *bytes_read));
|
|
|
| return true;
|
| @@ -225,7 +223,7 @@
|
|
|
| void AsyncResourceHandler::OnDataDownloaded(
|
| int request_id, int bytes_downloaded) {
|
| - receiver_->Send(new ViewMsg_Resource_DataDownloaded(
|
| + filter_->Send(new ViewMsg_Resource_DataDownloaded(
|
| routing_id_, request_id, bytes_downloaded));
|
| }
|
|
|
| @@ -234,11 +232,11 @@
|
| const URLRequestStatus& status,
|
| const std::string& security_info) {
|
| Time completion_time = Time::Now();
|
| - receiver_->Send(new ViewMsg_Resource_RequestComplete(routing_id_,
|
| - request_id,
|
| - status,
|
| - security_info,
|
| - completion_time));
|
| + filter_->Send(new ViewMsg_Resource_RequestComplete(routing_id_,
|
| + request_id,
|
| + status,
|
| + security_info,
|
| + completion_time));
|
|
|
| // If we still have a read buffer, then see about caching it for later...
|
| // Note that we have to make sure the buffer is not still being used, so we
|
|
|