Index: content/child/resource_dispatcher.cc |
diff --git a/content/child/resource_dispatcher.cc b/content/child/resource_dispatcher.cc |
index 3cbc9ff68c4277c46935b2f1bbe7f4f1c56c3019..24afd8a80414438645b5c575a23c3b166f4ab70b 100644 |
--- a/content/child/resource_dispatcher.cc |
+++ b/content/child/resource_dispatcher.cc |
@@ -483,9 +483,14 @@ void ResourceDispatcher::SetDefersLoading(int request_id, bool value) { |
} |
if (value) { |
request_info->is_deferred = value; |
+ if (request_info->url_loader_client) |
+ request_info->url_loader_client->SetDefersLoading(); |
} else if (request_info->is_deferred) { |
request_info->is_deferred = false; |
+ if (request_info->url_loader_client) |
+ request_info->url_loader_client->UnsetDefersLoading(); |
+ |
FollowPendingRedirect(request_id, request_info); |
main_thread_task_runner_->PostTask( |
@@ -553,6 +558,13 @@ void ResourceDispatcher::FlushDeferredMessages(int request_id) { |
PendingRequestInfo* request_info = GetPendingRequestInfo(request_id); |
if (!request_info || request_info->is_deferred) |
return; |
+ |
+ if (request_info->url_loader) { |
+ DCHECK(request_info->deferred_message_queue.empty()); |
+ request_info->url_loader_client->FlushDeferredMessages(); |
+ 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; |