| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/spdy/spdy_session.h" | 5 #include "net/spdy/spdy_session.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
| 9 #include "net/base/io_buffer.h" | 9 #include "net/base/io_buffer.h" |
| 10 #include "net/base/ip_endpoint.h" | 10 #include "net/base/ip_endpoint.h" |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); | 158 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); |
| 159 | 159 |
| 160 CreateDeterministicNetworkSession(); | 160 CreateDeterministicNetworkSession(); |
| 161 | 161 |
| 162 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 162 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
| 163 | 163 |
| 164 EXPECT_EQ(2, session->GetProtocolVersion()); | 164 EXPECT_EQ(2, session->GetProtocolVersion()); |
| 165 | 165 |
| 166 GURL url("http://www.google.com"); | 166 GURL url("http://www.google.com"); |
| 167 base::WeakPtr<SpdyStream> spdy_stream1 = | 167 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 168 CreateStreamSynchronously( | 168 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
| 169 SPDY_BIDIRECTIONAL_STREAM, session, url, MEDIUM, BoundNetLog()); | 169 session, url, MEDIUM, BoundNetLog()); |
| 170 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 171 spdy_stream1->SetDelegate(&delegate1); |
| 170 | 172 |
| 171 base::WeakPtr<SpdyStream> spdy_stream2 = | 173 base::WeakPtr<SpdyStream> spdy_stream2 = |
| 172 CreateStreamSynchronously( | 174 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
| 173 SPDY_BIDIRECTIONAL_STREAM, session, url, MEDIUM, BoundNetLog()); | 175 session, url, MEDIUM, BoundNetLog()); |
| 176 test::StreamDelegateDoNothing delegate2(spdy_stream2); |
| 177 spdy_stream2->SetDelegate(&delegate2); |
| 174 | 178 |
| 175 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); | 179 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); |
| 176 (*headers)["method"] = "GET"; | 180 (*headers)["method"] = "GET"; |
| 177 (*headers)["scheme"] = url.scheme(); | 181 (*headers)["scheme"] = url.scheme(); |
| 178 (*headers)["host"] = url.host(); | 182 (*headers)["host"] = url.host(); |
| 179 (*headers)["url"] = url.path(); | 183 (*headers)["url"] = url.path(); |
| 180 (*headers)["version"] = "HTTP/1.1"; | 184 (*headers)["version"] = "HTTP/1.1"; |
| 181 scoped_ptr<SpdyHeaderBlock> headers2(new SpdyHeaderBlock); | 185 scoped_ptr<SpdyHeaderBlock> headers2(new SpdyHeaderBlock); |
| 182 *headers2 = *headers; | 186 *headers2 = *headers; |
| 183 | 187 |
| (...skipping 979 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1163 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 1167 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
| 1164 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 1168 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 1165 | 1169 |
| 1166 CreateNetworkSession(); | 1170 CreateNetworkSession(); |
| 1167 | 1171 |
| 1168 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 1172 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
| 1169 | 1173 |
| 1170 GURL url("http://www.google.com"); | 1174 GURL url("http://www.google.com"); |
| 1171 | 1175 |
| 1172 base::WeakPtr<SpdyStream> spdy_stream1 = | 1176 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 1173 CreateStreamSynchronously( | 1177 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
| 1174 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); | 1178 session, url, LOWEST, BoundNetLog()); |
| 1175 ASSERT_TRUE(spdy_stream1.get() != NULL); | 1179 ASSERT_TRUE(spdy_stream1.get() != NULL); |
| 1176 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 1180 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 1177 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 1181 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 1178 spdy_stream1->SetDelegate(&delegate1); | 1182 spdy_stream1->SetDelegate(&delegate1); |
| 1179 | 1183 |
| 1180 base::WeakPtr<SpdyStream> spdy_stream2 = | 1184 base::WeakPtr<SpdyStream> spdy_stream2 = |
| 1181 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, | 1185 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
| 1182 session, url, HIGHEST, BoundNetLog()); | 1186 session, url, HIGHEST, BoundNetLog()); |
| 1183 ASSERT_TRUE(spdy_stream2.get() != NULL); | 1187 ASSERT_TRUE(spdy_stream2.get() != NULL); |
| 1184 EXPECT_EQ(0u, spdy_stream2->stream_id()); | 1188 EXPECT_EQ(0u, spdy_stream2->stream_id()); |
| 1185 test::StreamDelegateDoNothing delegate2(spdy_stream2); | 1189 test::StreamDelegateDoNothing delegate2(spdy_stream2); |
| 1186 spdy_stream2->SetDelegate(&delegate2); | 1190 spdy_stream2->SetDelegate(&delegate2); |
| 1187 | 1191 |
| 1188 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); | 1192 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); |
| 1189 (*headers)["method"] = "GET"; | 1193 (*headers)["method"] = "GET"; |
| 1190 (*headers)["scheme"] = url.scheme(); | 1194 (*headers)["scheme"] = url.scheme(); |
| 1191 (*headers)["host"] = url.host(); | 1195 (*headers)["host"] = url.host(); |
| (...skipping 929 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2121 | 2125 |
| 2122 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 2126 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
| 2123 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); | 2127 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); |
| 2124 | 2128 |
| 2125 CreateDeterministicNetworkSession(); | 2129 CreateDeterministicNetworkSession(); |
| 2126 | 2130 |
| 2127 scoped_refptr<SpdySession> session = CreateInitializedSession(); | 2131 scoped_refptr<SpdySession> session = CreateInitializedSession(); |
| 2128 | 2132 |
| 2129 GURL url1("http://www.google.com"); | 2133 GURL url1("http://www.google.com"); |
| 2130 base::WeakPtr<SpdyStream> spdy_stream1 = | 2134 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 2131 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, | 2135 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
| 2132 session, url1, MEDIUM, BoundNetLog()); | 2136 session, url1, MEDIUM, BoundNetLog()); |
| 2137 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 2138 spdy_stream1->SetDelegate(&delegate1); |
| 2133 session = NULL; | 2139 session = NULL; |
| 2134 ASSERT_TRUE(spdy_stream1.get() != NULL); | 2140 ASSERT_TRUE(spdy_stream1.get() != NULL); |
| 2135 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 2141 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 2136 | 2142 |
| 2137 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); | 2143 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); |
| 2138 (*headers)["method"] = "GET"; | 2144 (*headers)["method"] = "GET"; |
| 2139 (*headers)["scheme"] = url1.scheme(); | 2145 (*headers)["scheme"] = url1.scheme(); |
| 2140 (*headers)["host"] = url1.host(); | 2146 (*headers)["host"] = url1.host(); |
| 2141 (*headers)["url"] = url1.path(); | 2147 (*headers)["url"] = url1.path(); |
| 2142 (*headers)["version"] = "HTTP/1.1"; | 2148 (*headers)["version"] = "HTTP/1.1"; |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2344 EXPECT_EQ( | 2350 EXPECT_EQ( |
| 2345 OK, | 2351 OK, |
| 2346 InitializeSession(http_session_.get(), session1.get(), | 2352 InitializeSession(http_session_.get(), session1.get(), |
| 2347 key1.host_port_pair())); | 2353 key1.host_port_pair())); |
| 2348 EXPECT_FALSE(pool->IsStalled()); | 2354 EXPECT_FALSE(pool->IsStalled()); |
| 2349 | 2355 |
| 2350 // Create a stream using the session, and send a request. | 2356 // Create a stream using the session, and send a request. |
| 2351 | 2357 |
| 2352 TestCompletionCallback callback1; | 2358 TestCompletionCallback callback1; |
| 2353 base::WeakPtr<SpdyStream> spdy_stream1 = | 2359 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 2354 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, | 2360 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
| 2355 session1, url1, DEFAULT_PRIORITY, | 2361 session1, url1, DEFAULT_PRIORITY, |
| 2356 BoundNetLog()); | 2362 BoundNetLog()); |
| 2357 ASSERT_TRUE(spdy_stream1.get()); | 2363 ASSERT_TRUE(spdy_stream1.get()); |
| 2364 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 2365 spdy_stream1->SetDelegate(&delegate1); |
| 2358 | 2366 |
| 2359 scoped_ptr<SpdyHeaderBlock> headers( | 2367 scoped_ptr<SpdyHeaderBlock> headers( |
| 2360 spdy_util_.ConstructGetHeaderBlock(url1.spec())); | 2368 spdy_util_.ConstructGetHeaderBlock(url1.spec())); |
| 2361 spdy_stream1->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND); | 2369 spdy_stream1->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND); |
| 2362 EXPECT_TRUE(spdy_stream1->HasUrl()); | 2370 EXPECT_TRUE(spdy_stream1->HasUrl()); |
| 2363 base::MessageLoop::current()->RunUntilIdle(); | 2371 base::MessageLoop::current()->RunUntilIdle(); |
| 2364 | 2372 |
| 2365 // Release the session, so holding onto a pointer here does not affect | 2373 // Release the session, so holding onto a pointer here does not affect |
| 2366 // anything. | 2374 // anything. |
| 2367 session1 = NULL; | 2375 session1 = NULL; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 2389 // Cancelling the request should still not release the session's socket, | 2397 // Cancelling the request should still not release the session's socket, |
| 2390 // since the session is still kept alive by the SpdySessionPool. | 2398 // since the session is still kept alive by the SpdySessionPool. |
| 2391 ASSERT_TRUE(spdy_stream1.get()); | 2399 ASSERT_TRUE(spdy_stream1.get()); |
| 2392 spdy_stream1->Cancel(); | 2400 spdy_stream1->Cancel(); |
| 2393 base::RunLoop().RunUntilIdle(); | 2401 base::RunLoop().RunUntilIdle(); |
| 2394 EXPECT_TRUE(pool->IsStalled()); | 2402 EXPECT_TRUE(pool->IsStalled()); |
| 2395 EXPECT_FALSE(callback2.have_result()); | 2403 EXPECT_FALSE(callback2.have_result()); |
| 2396 } | 2404 } |
| 2397 | 2405 |
| 2398 } // namespace net | 2406 } // namespace net |
| OLD | NEW |