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/base64.h" | 7 #include "base/base64.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/callback.h" | 9 #include "base/callback.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 1176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1187 | 1187 |
1188 scoped_ptr<SpdyFrame> req( | 1188 scoped_ptr<SpdyFrame> req( |
1189 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); | 1189 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
1190 scoped_ptr<SpdyFrame> rst( | 1190 scoped_ptr<SpdyFrame> rst( |
1191 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); | 1191 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); |
1192 | 1192 |
1193 scoped_ptr<SpdyFrame> push_a(spdy_util_.ConstructSpdyPush( | 1193 scoped_ptr<SpdyFrame> push_a(spdy_util_.ConstructSpdyPush( |
1194 NULL, 0, 2, 1, "http://www.google.com/a.dat")); | 1194 NULL, 0, 2, 1, "http://www.google.com/a.dat")); |
1195 scoped_ptr<SpdyFrame> push_a_body( | 1195 scoped_ptr<SpdyFrame> push_a_body( |
1196 spdy_util_.ConstructSpdyBodyFrame(2, false)); | 1196 spdy_util_.ConstructSpdyBodyFrame(2, false)); |
| 1197 // In ascii "0" < "a". We use it to verify that we properly handle std::map |
| 1198 // iterators inside. See http://crbug.com/443490 |
1197 scoped_ptr<SpdyFrame> push_b(spdy_util_.ConstructSpdyPush( | 1199 scoped_ptr<SpdyFrame> push_b(spdy_util_.ConstructSpdyPush( |
1198 NULL, 0, 4, 1, "http://www.google.com/b.dat")); | 1200 NULL, 0, 4, 1, "http://www.google.com/0.dat")); |
1199 MockWrite writes[] = {CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4)}; | 1201 MockWrite writes[] = {CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4)}; |
1200 MockRead reads[] = { | 1202 MockRead reads[] = { |
1201 CreateMockRead(*push_a, 1), CreateMockRead(*push_a_body, 2), | 1203 CreateMockRead(*push_a, 1), CreateMockRead(*push_a_body, 2), |
1202 CreateMockRead(*push_b, 3), MockRead(ASYNC, 0, 5), // EOF | 1204 CreateMockRead(*push_b, 3), MockRead(ASYNC, 0, 5), // EOF |
1203 }; | 1205 }; |
1204 DeterministicSocketData data( | 1206 DeterministicSocketData data( |
1205 reads, arraysize(reads), writes, arraysize(writes)); | 1207 reads, arraysize(reads), writes, arraysize(writes)); |
1206 | 1208 |
1207 MockConnect connect_data(SYNCHRONOUS, OK); | 1209 MockConnect connect_data(SYNCHRONOUS, OK); |
1208 data.set_connect_data(connect_data); | 1210 data.set_connect_data(connect_data); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1241 } | 1243 } |
1242 | 1244 |
1243 // Shift time to expire the push stream. Read the second SYN_STREAM, | 1245 // Shift time to expire the push stream. Read the second SYN_STREAM, |
1244 // and verify a RST_STREAM was written. | 1246 // and verify a RST_STREAM was written. |
1245 g_time_delta = base::TimeDelta::FromSeconds(301); | 1247 g_time_delta = base::TimeDelta::FromSeconds(301); |
1246 data.RunFor(2); | 1248 data.RunFor(2); |
1247 | 1249 |
1248 // Verify that the second pushed stream evicted the first pushed stream. | 1250 // Verify that the second pushed stream evicted the first pushed stream. |
1249 EXPECT_EQ(1u, session->num_unclaimed_pushed_streams()); | 1251 EXPECT_EQ(1u, session->num_unclaimed_pushed_streams()); |
1250 iter = session->unclaimed_pushed_streams_.find( | 1252 iter = session->unclaimed_pushed_streams_.find( |
1251 GURL("http://www.google.com/b.dat")); | 1253 GURL("http://www.google.com/0.dat")); |
1252 EXPECT_TRUE(session->unclaimed_pushed_streams_.end() != iter); | 1254 EXPECT_TRUE(session->unclaimed_pushed_streams_.end() != iter); |
1253 | 1255 |
1254 if (session->flow_control_state_ == | 1256 if (session->flow_control_state_ == |
1255 SpdySession::FLOW_CONTROL_STREAM_AND_SESSION) { | 1257 SpdySession::FLOW_CONTROL_STREAM_AND_SESSION) { |
1256 // Verify that the session window reclaimed the evicted stream body. | 1258 // Verify that the session window reclaimed the evicted stream body. |
1257 EXPECT_EQ(SpdySession::GetInitialWindowSize(GetParam()), | 1259 EXPECT_EQ(SpdySession::GetInitialWindowSize(GetParam()), |
1258 session->session_recv_window_size_); | 1260 session->session_recv_window_size_); |
1259 EXPECT_EQ(kUploadDataSize, session->session_unacked_recv_window_bytes_); | 1261 EXPECT_EQ(kUploadDataSize, session->session_unacked_recv_window_bytes_); |
1260 } | 1262 } |
1261 | 1263 |
(...skipping 3867 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5129 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(), | 5131 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(), |
5130 "spdy_pooling.pem"); | 5132 "spdy_pooling.pem"); |
5131 ssl_info.is_issued_by_known_root = true; | 5133 ssl_info.is_issued_by_known_root = true; |
5132 ssl_info.public_key_hashes.push_back(test::GetTestHashValue(primary_pin)); | 5134 ssl_info.public_key_hashes.push_back(test::GetTestHashValue(primary_pin)); |
5133 | 5135 |
5134 EXPECT_TRUE(SpdySession::CanPool( | 5136 EXPECT_TRUE(SpdySession::CanPool( |
5135 &tss, ssl_info, "www.example.org", "mail.example.org")); | 5137 &tss, ssl_info, "www.example.org", "mail.example.org")); |
5136 } | 5138 } |
5137 | 5139 |
5138 } // namespace net | 5140 } // namespace net |
OLD | NEW |