Index: content/browser/loader/resource_scheduler_unittest.cc |
diff --git a/content/browser/loader/resource_scheduler_unittest.cc b/content/browser/loader/resource_scheduler_unittest.cc |
index e677f8f12d8c6d7297c4a081b29764e53f032ee5..7fba2a54306d94a4b50fa1a50f5df27f6018e07d 100644 |
--- a/content/browser/loader/resource_scheduler_unittest.cc |
+++ b/content/browser/loader/resource_scheduler_unittest.cc |
@@ -502,6 +502,37 @@ TEST_F(ResourceSchedulerTest, SpdyProxySchedulesImmediately) { |
EXPECT_TRUE(after->started()); |
} |
+TEST_F(ResourceSchedulerTest, NewSpdyHostInDelayableRequests) { |
+ scheduler_.OnWillInsertBody(kChildId, kRouteId); |
+ const int kMaxNumDelayableRequestsPerClient = 10; // Should match the .cc. |
+ |
+ scoped_ptr<TestRequest> low1_spdy( |
+ NewRequest("http://spdyhost1:8080/low", net::LOWEST)); |
+ // Cancel a request after we learn the server supports SPDY. |
+ ScopedVector<TestRequest> lows; |
+ for (int i = 0; i < kMaxNumDelayableRequestsPerClient - 1; ++i) { |
+ string url = "http://host" + base::IntToString(i) + "/low"; |
+ lows.push_back(NewRequest(url.c_str(), net::LOWEST)); |
+ } |
+ scoped_ptr<TestRequest> low1(NewRequest("http://host/low", net::LOWEST)); |
+ EXPECT_FALSE(low1->started()); |
+ http_server_properties_.SetSupportsSpdy( |
+ net::HostPortPair("spdyhost1", 8080), true); |
+ low1_spdy.reset(); |
+ EXPECT_TRUE(low1->started()); |
+ |
+ low1.reset(); |
+ scoped_ptr<TestRequest> low2_spdy( |
+ NewRequest("http://spdyhost2:8080/low", net::IDLE)); |
+ // Reprioritize a request after we learn the server supports SPDY. |
+ EXPECT_TRUE(low2_spdy->started()); |
+ http_server_properties_.SetSupportsSpdy( |
+ net::HostPortPair("spdyhost2", 8080), true); |
+ ChangeRequestPriority(low2_spdy.get(), net::LOWEST); |
+ scoped_ptr<TestRequest> low2(NewRequest("http://host/low", net::LOWEST)); |
+ EXPECT_TRUE(low2->started()); |
+} |
+ |
} // unnamed namespace |
} // namespace content |