Index: content/browser/loader/resource_scheduler.cc |
diff --git a/content/browser/loader/resource_scheduler.cc b/content/browser/loader/resource_scheduler.cc |
index d458936ecf1e29110a8a935fbcbcca3ad155f5a6..776610b222f27a6f623f4e6e3a98db3d5fc2a05f 100644 |
--- a/content/browser/loader/resource_scheduler.cc |
+++ b/content/browser/loader/resource_scheduler.cc |
@@ -134,10 +134,11 @@ class ResourceScheduler::ScheduledResourceRequest |
// Each client represents a tab. |
struct ResourceScheduler::Client { |
- Client() : has_body(false) {} |
+ Client() : has_body(false), using_spdy_proxy(false) {} |
~Client() {} |
bool has_body; |
+ bool using_spdy_proxy; |
RequestQueue pending_requests; |
RequestSet in_flight_requests; |
}; |
@@ -193,6 +194,15 @@ void ResourceScheduler::RemoveRequest(ScheduledResourceRequest* request) { |
Client* client = client_it->second; |
+ if (!client->using_spdy_proxy) { |
+ net::HttpResponseInfo response_info = |
+ request->url_request()->response_info(); |
+ if (response_info.was_fetched_via_spdy && |
+ response_info.was_fetched_via_proxy) { |
James Simonsen
2013/12/02 18:59:31
Is this really the only way to determine it? It se
Pat Meenan
2013/12/02 19:35:51
This is the lowest-impact way I could come up with
|
+ client->using_spdy_proxy = true; |
+ } |
+ } |
+ |
if (client->pending_requests.IsQueued(request)) { |
client->pending_requests.Erase(request); |
DCHECK(!ContainsKey(client->in_flight_requests, request)); |
@@ -245,6 +255,7 @@ void ResourceScheduler::OnNavigate(int child_id, int route_id) { |
Client* client = it->second; |
client->has_body = false; |
+ client->using_spdy_proxy = false; |
} |
void ResourceScheduler::OnWillInsertBody(int child_id, int route_id) { |
@@ -355,6 +366,10 @@ bool ResourceScheduler::ShouldStartRequest(ScheduledResourceRequest* request, |
return true; |
} |
+ if (client->using_spdy_proxy) { |
+ return true; |
+ } |
+ |
const net::HttpServerProperties& http_server_properties = |
*url_request.context()->http_server_properties(); |