Index: content/child/resource_dispatcher.cc |
diff --git a/content/child/resource_dispatcher.cc b/content/child/resource_dispatcher.cc |
index 1e6415108701ddfc38b6ecaeedfc5d1d21de7756..bcb99b91c5e6d55ac777c57d4e7048c9820de203 100644 |
--- a/content/child/resource_dispatcher.cc |
+++ b/content/child/resource_dispatcher.cc |
@@ -129,12 +129,12 @@ bool ResourceDispatcher::OnMessageReceived(const IPC::Message& message) { |
ResourceDispatcher::PendingRequestInfo* |
ResourceDispatcher::GetPendingRequestInfo(int request_id) { |
- PendingRequestList::iterator it = pending_requests_.find(request_id); |
+ PendingRequestMap::iterator it = pending_requests_.find(request_id); |
if (it == pending_requests_.end()) { |
// This might happen for kill()ed requests on the webkit end. |
return NULL; |
} |
- return &(it->second); |
+ return it->second.get(); |
} |
void ResourceDispatcher::OnUploadProgress(int request_id, |
@@ -338,7 +338,7 @@ void ResourceDispatcher::OnReceivedRedirect( |
request_info->pending_redirect_message.reset( |
new ResourceHostMsg_FollowRedirect(request_id)); |
if (!request_info->is_deferred) { |
- FollowPendingRedirect(request_id, *request_info); |
+ FollowPendingRedirect(request_id, request_info); |
} |
} else { |
Cancel(request_id); |
@@ -347,8 +347,8 @@ void ResourceDispatcher::OnReceivedRedirect( |
void ResourceDispatcher::FollowPendingRedirect( |
int request_id, |
- PendingRequestInfo& request_info) { |
- IPC::Message* msg = request_info.pending_redirect_message.release(); |
+ PendingRequestInfo* request_info) { |
+ IPC::Message* msg = request_info->pending_redirect_message.release(); |
if (msg) |
message_sender_->Send(msg); |
} |
@@ -421,15 +421,15 @@ void ResourceDispatcher::CompletedRequestAfterBackgroundThreadFlush( |
} |
bool ResourceDispatcher::RemovePendingRequest(int request_id) { |
- PendingRequestList::iterator it = pending_requests_.find(request_id); |
+ PendingRequestMap::iterator it = pending_requests_.find(request_id); |
if (it == pending_requests_.end()) |
return false; |
- PendingRequestInfo& request_info = it->second; |
+ PendingRequestInfo* request_info = it->second.get(); |
- bool release_downloaded_file = request_info.download_to_file; |
+ bool release_downloaded_file = request_info->download_to_file; |
- ReleaseResourcesInMessageQueue(&request_info.deferred_message_queue); |
+ ReleaseResourcesInMessageQueue(&request_info->deferred_message_queue); |
pending_requests_.erase(it); |
if (release_downloaded_file) { |
@@ -444,7 +444,7 @@ bool ResourceDispatcher::RemovePendingRequest(int request_id) { |
} |
void ResourceDispatcher::Cancel(int request_id) { |
- PendingRequestList::iterator it = pending_requests_.find(request_id); |
+ PendingRequestMap::iterator it = pending_requests_.find(request_id); |
if (it == pending_requests_.end()) { |
DVLOG(1) << "unknown request"; |
return; |
@@ -455,7 +455,7 @@ void ResourceDispatcher::Cancel(int request_id) { |
// TODO(csharrison): Remove this code when crbug.com/557430 is resolved. |
// ~250,000 ERR_ABORTED coming into canary with |request_time| < 100ms. Sample |
// by .01% to get something reasonable. |
- PendingRequestInfo& info = it->second; |
+ const PendingRequestInfo& info = *it->second; |
int64_t request_time = |
(base::TimeTicks::Now() - info.request_start).InMilliseconds(); |
if (info.resource_type == ResourceType::RESOURCE_TYPE_MAIN_FRAME && |
@@ -479,16 +479,16 @@ void ResourceDispatcher::Cancel(int request_id) { |
} |
void ResourceDispatcher::SetDefersLoading(int request_id, bool value) { |
- PendingRequestList::iterator it = pending_requests_.find(request_id); |
+ PendingRequestMap::iterator it = pending_requests_.find(request_id); |
if (it == pending_requests_.end()) { |
DLOG(ERROR) << "unknown request"; |
return; |
} |
- PendingRequestInfo& request_info = it->second; |
+ PendingRequestInfo* request_info = it->second.get(); |
if (value) { |
- request_info.is_deferred = value; |
- } else if (request_info.is_deferred) { |
- request_info.is_deferred = false; |
+ request_info->is_deferred = value; |
+ } else if (request_info->is_deferred) { |
+ request_info->is_deferred = false; |
FollowPendingRedirect(request_id, request_info); |
@@ -522,16 +522,6 @@ bool ResourceDispatcher::AttachThreadedDataReceiver( |
return false; |
} |
-ResourceDispatcher::PendingRequestInfo::PendingRequestInfo() |
- : peer(NULL), |
- threaded_data_provider(NULL), |
- resource_type(RESOURCE_TYPE_SUB_RESOURCE), |
- is_deferred(false), |
- download_to_file(false), |
- buffer_size(0), |
- data_offset(-1) { |
-} |
- |
ResourceDispatcher::PendingRequestInfo::PendingRequestInfo( |
RequestPeer* peer, |
ResourceType resource_type, |
@@ -540,16 +530,13 @@ ResourceDispatcher::PendingRequestInfo::PendingRequestInfo( |
const GURL& request_url, |
bool download_to_file) |
: peer(peer), |
- threaded_data_provider(NULL), |
resource_type(resource_type), |
origin_pid(origin_pid), |
- is_deferred(false), |
url(request_url), |
frame_origin(frame_origin), |
response_url(request_url), |
download_to_file(download_to_file), |
- request_start(base::TimeTicks::Now()), |
- data_offset(-1) { |
+ request_start(base::TimeTicks::Now()) { |
} |
ResourceDispatcher::PendingRequestInfo::~PendingRequestInfo() { |
@@ -573,16 +560,16 @@ void ResourceDispatcher::DispatchMessage(const IPC::Message& message) { |
} |
void ResourceDispatcher::FlushDeferredMessages(int request_id) { |
- PendingRequestList::iterator it = pending_requests_.find(request_id); |
+ PendingRequestMap::iterator it = pending_requests_.find(request_id); |
if (it == pending_requests_.end()) // The request could have become invalid. |
return; |
- PendingRequestInfo& request_info = it->second; |
- if (request_info.is_deferred) |
+ PendingRequestInfo* request_info = it->second.get(); |
+ if (request_info->is_deferred) |
return; |
// Because message handlers could result in request_info being destroyed, |
// we need to work with a stack reference to the deferred queue. |
MessageQueue q; |
- q.swap(request_info.deferred_message_queue); |
+ q.swap(request_info->deferred_message_queue); |
while (!q.empty()) { |
IPC::Message* m = q.front(); |
q.pop_front(); |
@@ -592,11 +579,11 @@ void ResourceDispatcher::FlushDeferredMessages(int request_id) { |
// we should honor the same and stop dispatching further messages. |
// We need to find the request again in the list as it may have completed |
// by now and the request_info instance above may be invalid. |
- PendingRequestList::iterator index = pending_requests_.find(request_id); |
+ PendingRequestMap::iterator index = pending_requests_.find(request_id); |
if (index != pending_requests_.end()) { |
- PendingRequestInfo& pending_request = index->second; |
- if (pending_request.is_deferred) { |
- pending_request.deferred_message_queue.swap(q); |
+ PendingRequestInfo* pending_request = index->second.get(); |
+ if (pending_request->is_deferred) { |
+ pending_request->deferred_message_queue.swap(q); |
return; |
} |
} |
@@ -643,12 +630,12 @@ int ResourceDispatcher::StartAsync(const RequestInfo& request_info, |
// Compute a unique request_id for this renderer process. |
int request_id = MakeRequestID(); |
pending_requests_[request_id] = |
- PendingRequestInfo(peer, |
+ make_scoped_ptr(new PendingRequestInfo(peer, |
request->resource_type, |
request->origin_pid, |
frame_origin, |
request->url, |
- request_info.download_to_file); |
+ request_info.download_to_file)); |
if (resource_scheduling_filter_.get() && |
request_info.loading_web_task_runner) { |