| 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/http/http_network_transaction.h" | 5 #include "net/http/http_network_transaction.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 224 RunPreTestSetup(); | 224 RunPreTestSetup(); |
| 225 AddData(data); | 225 AddData(data); |
| 226 RunDefaultTest(); | 226 RunDefaultTest(); |
| 227 VerifyDataConsumed(); | 227 VerifyDataConsumed(); |
| 228 } | 228 } |
| 229 | 229 |
| 230 void AddData(StaticSocketDataProvider* data) { | 230 void AddData(StaticSocketDataProvider* data) { |
| 231 DCHECK(!deterministic_); | 231 DCHECK(!deterministic_); |
| 232 data_vector_.push_back(data); | 232 data_vector_.push_back(data); |
| 233 linked_ptr<SSLSocketDataProvider> ssl_( | 233 linked_ptr<SSLSocketDataProvider> ssl_( |
| 234 new SSLSocketDataProvider(true, OK)); | 234 new SSLSocketDataProvider(ASYNC, OK)); |
| 235 if (test_type_ == SPDYNPN) { | 235 if (test_type_ == SPDYNPN) { |
| 236 ssl_->next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 236 ssl_->next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 237 ssl_->next_proto = "spdy/2.1"; | 237 ssl_->next_proto = "spdy/2.1"; |
| 238 ssl_->was_npn_negotiated = true; | 238 ssl_->was_npn_negotiated = true; |
| 239 ssl_->protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 239 ssl_->protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 240 } | 240 } |
| 241 ssl_vector_.push_back(ssl_); | 241 ssl_vector_.push_back(ssl_); |
| 242 if (test_type_ == SPDYNPN || test_type_ == SPDYSSL) | 242 if (test_type_ == SPDYNPN || test_type_ == SPDYSSL) |
| 243 session_deps_->socket_factory->AddSSLSocketDataProvider(ssl_.get()); | 243 session_deps_->socket_factory->AddSSLSocketDataProvider(ssl_.get()); |
| 244 session_deps_->socket_factory->AddSocketDataProvider(data); | 244 session_deps_->socket_factory->AddSocketDataProvider(data); |
| 245 if (test_type_ == SPDYNPN) { | 245 if (test_type_ == SPDYNPN) { |
| 246 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 246 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
| 247 linked_ptr<StaticSocketDataProvider> | 247 linked_ptr<StaticSocketDataProvider> |
| 248 hanging_non_alternate_protocol_socket( | 248 hanging_non_alternate_protocol_socket( |
| 249 new StaticSocketDataProvider(NULL, 0, NULL, 0)); | 249 new StaticSocketDataProvider(NULL, 0, NULL, 0)); |
| 250 hanging_non_alternate_protocol_socket->set_connect_data( | 250 hanging_non_alternate_protocol_socket->set_connect_data( |
| 251 never_finishing_connect); | 251 never_finishing_connect); |
| 252 session_deps_->socket_factory->AddSocketDataProvider( | 252 session_deps_->socket_factory->AddSocketDataProvider( |
| 253 hanging_non_alternate_protocol_socket.get()); | 253 hanging_non_alternate_protocol_socket.get()); |
| 254 alternate_vector_.push_back(hanging_non_alternate_protocol_socket); | 254 alternate_vector_.push_back(hanging_non_alternate_protocol_socket); |
| 255 } | 255 } |
| 256 } | 256 } |
| 257 | 257 |
| 258 void AddDeterministicData(DeterministicSocketData* data) { | 258 void AddDeterministicData(DeterministicSocketData* data) { |
| 259 DCHECK(deterministic_); | 259 DCHECK(deterministic_); |
| 260 data_vector_.push_back(data); | 260 data_vector_.push_back(data); |
| 261 linked_ptr<SSLSocketDataProvider> ssl_( | 261 linked_ptr<SSLSocketDataProvider> ssl_( |
| 262 new SSLSocketDataProvider(true, OK)); | 262 new SSLSocketDataProvider(ASYNC, OK)); |
| 263 if (test_type_ == SPDYNPN) { | 263 if (test_type_ == SPDYNPN) { |
| 264 ssl_->next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 264 ssl_->next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 265 ssl_->next_proto = "spdy/2.1"; | 265 ssl_->next_proto = "spdy/2.1"; |
| 266 ssl_->was_npn_negotiated = true; | 266 ssl_->was_npn_negotiated = true; |
| 267 ssl_->protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 267 ssl_->protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 268 } | 268 } |
| 269 ssl_vector_.push_back(ssl_); | 269 ssl_vector_.push_back(ssl_); |
| 270 if (test_type_ == SPDYNPN || test_type_ == SPDYSSL) { | 270 if (test_type_ == SPDYNPN || test_type_ == SPDYSSL) { |
| 271 session_deps_->deterministic_socket_factory-> | 271 session_deps_->deterministic_socket_factory-> |
| 272 AddSSLSocketDataProvider(ssl_.get()); | 272 AddSSLSocketDataProvider(ssl_.get()); |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 550 TEST_P(SpdyNetworkTransactionTest, Get) { | 550 TEST_P(SpdyNetworkTransactionTest, Get) { |
| 551 // Construct the request. | 551 // Construct the request. |
| 552 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 552 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 553 MockWrite writes[] = { CreateMockWrite(*req) }; | 553 MockWrite writes[] = { CreateMockWrite(*req) }; |
| 554 | 554 |
| 555 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 555 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 556 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 556 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 557 MockRead reads[] = { | 557 MockRead reads[] = { |
| 558 CreateMockRead(*resp), | 558 CreateMockRead(*resp), |
| 559 CreateMockRead(*body), | 559 CreateMockRead(*body), |
| 560 MockRead(true, 0, 0) // EOF | 560 MockRead(ASYNC, 0, 0) // EOF |
| 561 }; | 561 }; |
| 562 | 562 |
| 563 scoped_ptr<DelayedSocketData> data( | 563 scoped_ptr<DelayedSocketData> data( |
| 564 new DelayedSocketData(1, reads, arraysize(reads), | 564 new DelayedSocketData(1, reads, arraysize(reads), |
| 565 writes, arraysize(writes))); | 565 writes, arraysize(writes))); |
| 566 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 566 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 567 BoundNetLog(), GetParam()); | 567 BoundNetLog(), GetParam()); |
| 568 helper.RunToCompletion(data.get()); | 568 helper.RunToCompletion(data.get()); |
| 569 TransactionHelperResult out = helper.output(); | 569 TransactionHelperResult out = helper.output(); |
| 570 EXPECT_EQ(OK, out.rv); | 570 EXPECT_EQ(OK, out.rv); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 600 break; | 600 break; |
| 601 default: | 601 default: |
| 602 FAIL(); | 602 FAIL(); |
| 603 } | 603 } |
| 604 | 604 |
| 605 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 605 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 606 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 606 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 607 MockRead reads[] = { | 607 MockRead reads[] = { |
| 608 CreateMockRead(*resp), | 608 CreateMockRead(*resp), |
| 609 CreateMockRead(*body), | 609 CreateMockRead(*body), |
| 610 MockRead(true, 0, 0) // EOF | 610 MockRead(ASYNC, 0, 0) // EOF |
| 611 }; | 611 }; |
| 612 | 612 |
| 613 scoped_ptr<DelayedSocketData> data( | 613 scoped_ptr<DelayedSocketData> data( |
| 614 new DelayedSocketData(1, reads, arraysize(reads), | 614 new DelayedSocketData(1, reads, arraysize(reads), |
| 615 writes, arraysize(writes))); | 615 writes, arraysize(writes))); |
| 616 HttpRequestInfo http_req = CreateGetRequest(); | 616 HttpRequestInfo http_req = CreateGetRequest(); |
| 617 http_req.priority = p; | 617 http_req.priority = p; |
| 618 | 618 |
| 619 NormalSpdyTransactionHelper helper(http_req, BoundNetLog(), GetParam()); | 619 NormalSpdyTransactionHelper helper(http_req, BoundNetLog(), GetParam()); |
| 620 helper.RunToCompletion(data.get()); | 620 helper.RunToCompletion(data.get()); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 661 CreateMockRead(*body), | 661 CreateMockRead(*body), |
| 662 CreateMockRead(*resp2, 4), | 662 CreateMockRead(*resp2, 4), |
| 663 CreateMockRead(*body2), | 663 CreateMockRead(*body2), |
| 664 CreateMockRead(*resp3, 7), | 664 CreateMockRead(*resp3, 7), |
| 665 CreateMockRead(*body3), | 665 CreateMockRead(*body3), |
| 666 | 666 |
| 667 CreateMockRead(*fbody), | 667 CreateMockRead(*fbody), |
| 668 CreateMockRead(*fbody2), | 668 CreateMockRead(*fbody2), |
| 669 CreateMockRead(*fbody3), | 669 CreateMockRead(*fbody3), |
| 670 | 670 |
| 671 MockRead(true, 0, 0), // EOF | 671 MockRead(ASYNC, 0, 0), // EOF |
| 672 }; | 672 }; |
| 673 scoped_ptr<OrderedSocketData> data( | 673 scoped_ptr<OrderedSocketData> data( |
| 674 new OrderedSocketData(reads, arraysize(reads), | 674 new OrderedSocketData(reads, arraysize(reads), |
| 675 writes, arraysize(writes))); | 675 writes, arraysize(writes))); |
| 676 scoped_ptr<OrderedSocketData> data_placeholder( | 676 scoped_ptr<OrderedSocketData> data_placeholder( |
| 677 new OrderedSocketData(NULL, 0, NULL, 0)); | 677 new OrderedSocketData(NULL, 0, NULL, 0)); |
| 678 | 678 |
| 679 BoundNetLog log; | 679 BoundNetLog log; |
| 680 TransactionHelperResult out; | 680 TransactionHelperResult out; |
| 681 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 681 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 745 CreateMockWrite(*req), | 745 CreateMockWrite(*req), |
| 746 CreateMockWrite(*req2), | 746 CreateMockWrite(*req2), |
| 747 }; | 747 }; |
| 748 MockRead reads[] = { | 748 MockRead reads[] = { |
| 749 CreateMockRead(*resp, 1), | 749 CreateMockRead(*resp, 1), |
| 750 CreateMockRead(*body), | 750 CreateMockRead(*body), |
| 751 CreateMockRead(*resp2, 4), | 751 CreateMockRead(*resp2, 4), |
| 752 CreateMockRead(*body2), | 752 CreateMockRead(*body2), |
| 753 CreateMockRead(*fbody), | 753 CreateMockRead(*fbody), |
| 754 CreateMockRead(*fbody2), | 754 CreateMockRead(*fbody2), |
| 755 MockRead(true, 0, 0), // EOF | 755 MockRead(ASYNC, 0, 0), // EOF |
| 756 }; | 756 }; |
| 757 scoped_ptr<OrderedSocketData> data( | 757 scoped_ptr<OrderedSocketData> data( |
| 758 new OrderedSocketData(reads, arraysize(reads), | 758 new OrderedSocketData(reads, arraysize(reads), |
| 759 writes, arraysize(writes))); | 759 writes, arraysize(writes))); |
| 760 | 760 |
| 761 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 761 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
| 762 | 762 |
| 763 scoped_ptr<OrderedSocketData> data_placeholder( | 763 scoped_ptr<OrderedSocketData> data_placeholder( |
| 764 new OrderedSocketData(NULL, 0, NULL, 0)); | 764 new OrderedSocketData(NULL, 0, NULL, 0)); |
| 765 data_placeholder->set_connect_data(never_finishing_connect); | 765 data_placeholder->set_connect_data(never_finishing_connect); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 832 CreateMockWrite(*req), | 832 CreateMockWrite(*req), |
| 833 CreateMockWrite(*req2), | 833 CreateMockWrite(*req2), |
| 834 }; | 834 }; |
| 835 MockRead reads[] = { | 835 MockRead reads[] = { |
| 836 CreateMockRead(*resp, 1), | 836 CreateMockRead(*resp, 1), |
| 837 CreateMockRead(*body), | 837 CreateMockRead(*body), |
| 838 CreateMockRead(*resp2, 4), | 838 CreateMockRead(*resp2, 4), |
| 839 CreateMockRead(*body2), | 839 CreateMockRead(*body2), |
| 840 CreateMockRead(*fbody), | 840 CreateMockRead(*fbody), |
| 841 CreateMockRead(*fbody2), | 841 CreateMockRead(*fbody2), |
| 842 MockRead(true, 0, 0), // EOF | 842 MockRead(ASYNC, 0, 0), // EOF |
| 843 }; | 843 }; |
| 844 scoped_ptr<OrderedSocketData> preconnect_data( | 844 scoped_ptr<OrderedSocketData> preconnect_data( |
| 845 new OrderedSocketData(reads, arraysize(reads), | 845 new OrderedSocketData(reads, arraysize(reads), |
| 846 writes, arraysize(writes))); | 846 writes, arraysize(writes))); |
| 847 | 847 |
| 848 MockConnect never_finishing_connect(ASYNC, ERR_IO_PENDING); | 848 MockConnect never_finishing_connect(ASYNC, ERR_IO_PENDING); |
| 849 | 849 |
| 850 scoped_ptr<OrderedSocketData> data_placeholder( | 850 scoped_ptr<OrderedSocketData> data_placeholder( |
| 851 new OrderedSocketData(NULL, 0, NULL, 0)); | 851 new OrderedSocketData(NULL, 0, NULL, 0)); |
| 852 data_placeholder->set_connect_data(never_finishing_connect); | 852 data_placeholder->set_connect_data(never_finishing_connect); |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 958 CreateMockRead(*resp), | 958 CreateMockRead(*resp), |
| 959 CreateMockRead(*body), | 959 CreateMockRead(*body), |
| 960 CreateMockRead(*fbody), | 960 CreateMockRead(*fbody), |
| 961 CreateMockRead(*resp2, 7), | 961 CreateMockRead(*resp2, 7), |
| 962 CreateMockRead(*body2), | 962 CreateMockRead(*body2), |
| 963 CreateMockRead(*fbody2), | 963 CreateMockRead(*fbody2), |
| 964 CreateMockRead(*resp3, 12), | 964 CreateMockRead(*resp3, 12), |
| 965 CreateMockRead(*body3), | 965 CreateMockRead(*body3), |
| 966 CreateMockRead(*fbody3), | 966 CreateMockRead(*fbody3), |
| 967 | 967 |
| 968 MockRead(true, 0, 0), // EOF | 968 MockRead(ASYNC, 0, 0), // EOF |
| 969 }; | 969 }; |
| 970 | 970 |
| 971 scoped_ptr<OrderedSocketData> data( | 971 scoped_ptr<OrderedSocketData> data( |
| 972 new OrderedSocketData(reads, arraysize(reads), | 972 new OrderedSocketData(reads, arraysize(reads), |
| 973 writes, arraysize(writes))); | 973 writes, arraysize(writes))); |
| 974 scoped_ptr<OrderedSocketData> data_placeholder( | 974 scoped_ptr<OrderedSocketData> data_placeholder( |
| 975 new OrderedSocketData(NULL, 0, NULL, 0)); | 975 new OrderedSocketData(NULL, 0, NULL, 0)); |
| 976 | 976 |
| 977 BoundNetLog log; | 977 BoundNetLog log; |
| 978 TransactionHelperResult out; | 978 TransactionHelperResult out; |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1098 CreateMockRead(*fbody), | 1098 CreateMockRead(*fbody), |
| 1099 CreateMockRead(*resp2, 7), | 1099 CreateMockRead(*resp2, 7), |
| 1100 CreateMockRead(*body2), | 1100 CreateMockRead(*body2), |
| 1101 CreateMockRead(*fbody2), | 1101 CreateMockRead(*fbody2), |
| 1102 CreateMockRead(*resp4, 13), | 1102 CreateMockRead(*resp4, 13), |
| 1103 CreateMockRead(*fbody4), | 1103 CreateMockRead(*fbody4), |
| 1104 CreateMockRead(*resp3, 16), | 1104 CreateMockRead(*resp3, 16), |
| 1105 CreateMockRead(*body3), | 1105 CreateMockRead(*body3), |
| 1106 CreateMockRead(*fbody3), | 1106 CreateMockRead(*fbody3), |
| 1107 | 1107 |
| 1108 MockRead(true, 0, 0), // EOF | 1108 MockRead(ASYNC, 0, 0), // EOF |
| 1109 }; | 1109 }; |
| 1110 | 1110 |
| 1111 scoped_ptr<OrderedSocketData> data( | 1111 scoped_ptr<OrderedSocketData> data( |
| 1112 new OrderedSocketData(reads, arraysize(reads), | 1112 new OrderedSocketData(reads, arraysize(reads), |
| 1113 writes, arraysize(writes))); | 1113 writes, arraysize(writes))); |
| 1114 scoped_ptr<OrderedSocketData> data_placeholder( | 1114 scoped_ptr<OrderedSocketData> data_placeholder( |
| 1115 new OrderedSocketData(NULL, 0, NULL, 0)); | 1115 new OrderedSocketData(NULL, 0, NULL, 0)); |
| 1116 | 1116 |
| 1117 BoundNetLog log; | 1117 BoundNetLog log; |
| 1118 TransactionHelperResult out; | 1118 TransactionHelperResult out; |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1235 CreateMockWrite(*req2), | 1235 CreateMockWrite(*req2), |
| 1236 }; | 1236 }; |
| 1237 MockRead reads[] = { | 1237 MockRead reads[] = { |
| 1238 CreateMockRead(*settings_frame, 1), | 1238 CreateMockRead(*settings_frame, 1), |
| 1239 CreateMockRead(*resp), | 1239 CreateMockRead(*resp), |
| 1240 CreateMockRead(*body), | 1240 CreateMockRead(*body), |
| 1241 CreateMockRead(*fbody), | 1241 CreateMockRead(*fbody), |
| 1242 CreateMockRead(*resp2, 7), | 1242 CreateMockRead(*resp2, 7), |
| 1243 CreateMockRead(*body2), | 1243 CreateMockRead(*body2), |
| 1244 CreateMockRead(*fbody2), | 1244 CreateMockRead(*fbody2), |
| 1245 MockRead(true, 0, 0), // EOF | 1245 MockRead(ASYNC, 0, 0), // EOF |
| 1246 }; | 1246 }; |
| 1247 | 1247 |
| 1248 scoped_ptr<OrderedSocketData> data( | 1248 scoped_ptr<OrderedSocketData> data( |
| 1249 new OrderedSocketData(reads, arraysize(reads), | 1249 new OrderedSocketData(reads, arraysize(reads), |
| 1250 writes, arraysize(writes))); | 1250 writes, arraysize(writes))); |
| 1251 scoped_ptr<OrderedSocketData> data_placeholder( | 1251 scoped_ptr<OrderedSocketData> data_placeholder( |
| 1252 new OrderedSocketData(NULL, 0, NULL, 0)); | 1252 new OrderedSocketData(NULL, 0, NULL, 0)); |
| 1253 | 1253 |
| 1254 BoundNetLog log; | 1254 BoundNetLog log; |
| 1255 TransactionHelperResult out; | 1255 TransactionHelperResult out; |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1365 | 1365 |
| 1366 MockWrite writes[] = { CreateMockWrite(*req), | 1366 MockWrite writes[] = { CreateMockWrite(*req), |
| 1367 CreateMockWrite(*req2), | 1367 CreateMockWrite(*req2), |
| 1368 }; | 1368 }; |
| 1369 MockRead reads[] = { | 1369 MockRead reads[] = { |
| 1370 CreateMockRead(*settings_frame, 1), | 1370 CreateMockRead(*settings_frame, 1), |
| 1371 CreateMockRead(*resp), | 1371 CreateMockRead(*resp), |
| 1372 CreateMockRead(*body), | 1372 CreateMockRead(*body), |
| 1373 CreateMockRead(*fin_body), | 1373 CreateMockRead(*fin_body), |
| 1374 CreateMockRead(*resp2, 7), | 1374 CreateMockRead(*resp2, 7), |
| 1375 MockRead(true, ERR_CONNECTION_RESET, 0), // Abort! | 1375 MockRead(ASYNC, ERR_CONNECTION_RESET, 0), // Abort! |
| 1376 }; | 1376 }; |
| 1377 | 1377 |
| 1378 scoped_ptr<OrderedSocketData> data( | 1378 scoped_ptr<OrderedSocketData> data( |
| 1379 new OrderedSocketData(reads, arraysize(reads), | 1379 new OrderedSocketData(reads, arraysize(reads), |
| 1380 writes, arraysize(writes))); | 1380 writes, arraysize(writes))); |
| 1381 scoped_ptr<OrderedSocketData> data_placeholder( | 1381 scoped_ptr<OrderedSocketData> data_placeholder( |
| 1382 new OrderedSocketData(NULL, 0, NULL, 0)); | 1382 new OrderedSocketData(NULL, 0, NULL, 0)); |
| 1383 | 1383 |
| 1384 BoundNetLog log; | 1384 BoundNetLog log; |
| 1385 TransactionHelperResult out; | 1385 TransactionHelperResult out; |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1487 static const char* const kStandardGetHeaders[] = { | 1487 static const char* const kStandardGetHeaders[] = { |
| 1488 "status", "200", | 1488 "status", "200", |
| 1489 "version", "HTTP/1.1" | 1489 "version", "HTTP/1.1" |
| 1490 "content-length", "1234" | 1490 "content-length", "1234" |
| 1491 }; | 1491 }; |
| 1492 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyPacket(kSynReplyHeader, | 1492 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyPacket(kSynReplyHeader, |
| 1493 NULL, 0, kStandardGetHeaders, arraysize(kStandardGetHeaders) / 2)); | 1493 NULL, 0, kStandardGetHeaders, arraysize(kStandardGetHeaders) / 2)); |
| 1494 MockRead reads[] = { | 1494 MockRead reads[] = { |
| 1495 CreateMockRead(*resp), | 1495 CreateMockRead(*resp), |
| 1496 CreateMockRead(*body), | 1496 CreateMockRead(*body), |
| 1497 MockRead(true, 0, 0) // EOF | 1497 MockRead(ASYNC, 0, 0) // EOF |
| 1498 }; | 1498 }; |
| 1499 | 1499 |
| 1500 scoped_ptr<DelayedSocketData> data( | 1500 scoped_ptr<DelayedSocketData> data( |
| 1501 new DelayedSocketData(1, reads, arraysize(reads), | 1501 new DelayedSocketData(1, reads, arraysize(reads), |
| 1502 writes, arraysize(writes))); | 1502 writes, arraysize(writes))); |
| 1503 NormalSpdyTransactionHelper helper(request, | 1503 NormalSpdyTransactionHelper helper(request, |
| 1504 BoundNetLog(), GetParam()); | 1504 BoundNetLog(), GetParam()); |
| 1505 helper.RunToCompletion(data.get()); | 1505 helper.RunToCompletion(data.get()); |
| 1506 TransactionHelperResult out = helper.output(); | 1506 TransactionHelperResult out = helper.output(); |
| 1507 | 1507 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1558 static const char* const kStandardGetHeaders[] = { | 1558 static const char* const kStandardGetHeaders[] = { |
| 1559 "status", "200", | 1559 "status", "200", |
| 1560 "version", "HTTP/1.1" | 1560 "version", "HTTP/1.1" |
| 1561 "content-length", "1234" | 1561 "content-length", "1234" |
| 1562 }; | 1562 }; |
| 1563 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyPacket(kSynReplyHeader, | 1563 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyPacket(kSynReplyHeader, |
| 1564 NULL, 0, kStandardGetHeaders, arraysize(kStandardGetHeaders) / 2)); | 1564 NULL, 0, kStandardGetHeaders, arraysize(kStandardGetHeaders) / 2)); |
| 1565 MockRead reads[] = { | 1565 MockRead reads[] = { |
| 1566 CreateMockRead(*resp), | 1566 CreateMockRead(*resp), |
| 1567 CreateMockRead(*body), | 1567 CreateMockRead(*body), |
| 1568 MockRead(true, 0, 0) // EOF | 1568 MockRead(ASYNC, 0, 0) // EOF |
| 1569 }; | 1569 }; |
| 1570 | 1570 |
| 1571 scoped_ptr<DelayedSocketData> data( | 1571 scoped_ptr<DelayedSocketData> data( |
| 1572 new DelayedSocketData(1, reads, arraysize(reads), | 1572 new DelayedSocketData(1, reads, arraysize(reads), |
| 1573 writes, arraysize(writes))); | 1573 writes, arraysize(writes))); |
| 1574 NormalSpdyTransactionHelper helper(request, | 1574 NormalSpdyTransactionHelper helper(request, |
| 1575 BoundNetLog(), GetParam()); | 1575 BoundNetLog(), GetParam()); |
| 1576 helper.RunToCompletion(data.get()); | 1576 helper.RunToCompletion(data.get()); |
| 1577 TransactionHelperResult out = helper.output(); | 1577 TransactionHelperResult out = helper.output(); |
| 1578 | 1578 |
| 1579 EXPECT_EQ(OK, out.rv); | 1579 EXPECT_EQ(OK, out.rv); |
| 1580 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); | 1580 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); |
| 1581 } | 1581 } |
| 1582 | 1582 |
| 1583 // Test that a simple POST works. | 1583 // Test that a simple POST works. |
| 1584 TEST_P(SpdyNetworkTransactionTest, Post) { | 1584 TEST_P(SpdyNetworkTransactionTest, Post) { |
| 1585 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyPost(kUploadDataSize, NULL, 0)); | 1585 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyPost(kUploadDataSize, NULL, 0)); |
| 1586 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 1586 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 1587 MockWrite writes[] = { | 1587 MockWrite writes[] = { |
| 1588 CreateMockWrite(*req), | 1588 CreateMockWrite(*req), |
| 1589 CreateMockWrite(*body), // POST upload frame | 1589 CreateMockWrite(*body), // POST upload frame |
| 1590 }; | 1590 }; |
| 1591 | 1591 |
| 1592 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyPostSynReply(NULL, 0)); | 1592 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyPostSynReply(NULL, 0)); |
| 1593 MockRead reads[] = { | 1593 MockRead reads[] = { |
| 1594 CreateMockRead(*resp), | 1594 CreateMockRead(*resp), |
| 1595 CreateMockRead(*body), | 1595 CreateMockRead(*body), |
| 1596 MockRead(true, 0, 0) // EOF | 1596 MockRead(ASYNC, 0, 0) // EOF |
| 1597 }; | 1597 }; |
| 1598 | 1598 |
| 1599 scoped_ptr<DelayedSocketData> data( | 1599 scoped_ptr<DelayedSocketData> data( |
| 1600 new DelayedSocketData(2, reads, arraysize(reads), | 1600 new DelayedSocketData(2, reads, arraysize(reads), |
| 1601 writes, arraysize(writes))); | 1601 writes, arraysize(writes))); |
| 1602 NormalSpdyTransactionHelper helper(CreatePostRequest(), | 1602 NormalSpdyTransactionHelper helper(CreatePostRequest(), |
| 1603 BoundNetLog(), GetParam()); | 1603 BoundNetLog(), GetParam()); |
| 1604 helper.RunToCompletion(data.get()); | 1604 helper.RunToCompletion(data.get()); |
| 1605 TransactionHelperResult out = helper.output(); | 1605 TransactionHelperResult out = helper.output(); |
| 1606 EXPECT_EQ(OK, out.rv); | 1606 EXPECT_EQ(OK, out.rv); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1618 CreateMockWrite(*req), | 1618 CreateMockWrite(*req), |
| 1619 CreateMockWrite(*chunk1), | 1619 CreateMockWrite(*chunk1), |
| 1620 CreateMockWrite(*chunk2), | 1620 CreateMockWrite(*chunk2), |
| 1621 }; | 1621 }; |
| 1622 | 1622 |
| 1623 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyPostSynReply(NULL, 0)); | 1623 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyPostSynReply(NULL, 0)); |
| 1624 MockRead reads[] = { | 1624 MockRead reads[] = { |
| 1625 CreateMockRead(*resp), | 1625 CreateMockRead(*resp), |
| 1626 CreateMockRead(*chunk1), | 1626 CreateMockRead(*chunk1), |
| 1627 CreateMockRead(*chunk2), | 1627 CreateMockRead(*chunk2), |
| 1628 MockRead(true, 0, 0) // EOF | 1628 MockRead(ASYNC, 0, 0) // EOF |
| 1629 }; | 1629 }; |
| 1630 | 1630 |
| 1631 scoped_ptr<DelayedSocketData> data( | 1631 scoped_ptr<DelayedSocketData> data( |
| 1632 new DelayedSocketData(2, reads, arraysize(reads), | 1632 new DelayedSocketData(2, reads, arraysize(reads), |
| 1633 writes, arraysize(writes))); | 1633 writes, arraysize(writes))); |
| 1634 NormalSpdyTransactionHelper helper(CreateChunkedPostRequest(), | 1634 NormalSpdyTransactionHelper helper(CreateChunkedPostRequest(), |
| 1635 BoundNetLog(), GetParam()); | 1635 BoundNetLog(), GetParam()); |
| 1636 helper.RunToCompletion(data.get()); | 1636 helper.RunToCompletion(data.get()); |
| 1637 TransactionHelperResult out = helper.output(); | 1637 TransactionHelperResult out = helper.output(); |
| 1638 EXPECT_EQ(OK, out.rv); | 1638 EXPECT_EQ(OK, out.rv); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1656 req->set_flags(spdy::CONTROL_FLAG_FIN); | 1656 req->set_flags(spdy::CONTROL_FLAG_FIN); |
| 1657 MockWrite writes[] = { | 1657 MockWrite writes[] = { |
| 1658 CreateMockWrite(*req), | 1658 CreateMockWrite(*req), |
| 1659 }; | 1659 }; |
| 1660 | 1660 |
| 1661 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyPostSynReply(NULL, 0)); | 1661 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyPostSynReply(NULL, 0)); |
| 1662 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 1662 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 1663 MockRead reads[] = { | 1663 MockRead reads[] = { |
| 1664 CreateMockRead(*resp), | 1664 CreateMockRead(*resp), |
| 1665 CreateMockRead(*body), | 1665 CreateMockRead(*body), |
| 1666 MockRead(true, 0, 0) // EOF | 1666 MockRead(ASYNC, 0, 0) // EOF |
| 1667 }; | 1667 }; |
| 1668 | 1668 |
| 1669 scoped_ptr<DelayedSocketData> data( | 1669 scoped_ptr<DelayedSocketData> data( |
| 1670 new DelayedSocketData(1, reads, arraysize(reads), | 1670 new DelayedSocketData(1, reads, arraysize(reads), |
| 1671 writes, arraysize(writes))); | 1671 writes, arraysize(writes))); |
| 1672 | 1672 |
| 1673 NormalSpdyTransactionHelper helper(request, | 1673 NormalSpdyTransactionHelper helper(request, |
| 1674 BoundNetLog(), GetParam()); | 1674 BoundNetLog(), GetParam()); |
| 1675 helper.RunToCompletion(data.get()); | 1675 helper.RunToCompletion(data.get()); |
| 1676 TransactionHelperResult out = helper.output(); | 1676 TransactionHelperResult out = helper.output(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1703 req->set_flags(spdy::CONTROL_FLAG_FIN); | 1703 req->set_flags(spdy::CONTROL_FLAG_FIN); |
| 1704 MockWrite writes[] = { | 1704 MockWrite writes[] = { |
| 1705 CreateMockWrite(*req), | 1705 CreateMockWrite(*req), |
| 1706 }; | 1706 }; |
| 1707 | 1707 |
| 1708 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyPostSynReply(NULL, 0)); | 1708 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyPostSynReply(NULL, 0)); |
| 1709 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 1709 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 1710 MockRead reads[] = { | 1710 MockRead reads[] = { |
| 1711 CreateMockRead(*resp), | 1711 CreateMockRead(*resp), |
| 1712 CreateMockRead(*body), | 1712 CreateMockRead(*body), |
| 1713 MockRead(true, 0, 0) // EOF | 1713 MockRead(ASYNC, 0, 0) // EOF |
| 1714 }; | 1714 }; |
| 1715 | 1715 |
| 1716 scoped_ptr<DelayedSocketData> data( | 1716 scoped_ptr<DelayedSocketData> data( |
| 1717 new DelayedSocketData(1, reads, arraysize(reads), | 1717 new DelayedSocketData(1, reads, arraysize(reads), |
| 1718 writes, arraysize(writes))); | 1718 writes, arraysize(writes))); |
| 1719 | 1719 |
| 1720 NormalSpdyTransactionHelper helper(request, | 1720 NormalSpdyTransactionHelper helper(request, |
| 1721 BoundNetLog(), GetParam()); | 1721 BoundNetLog(), GetParam()); |
| 1722 helper.RunToCompletion(data.get()); | 1722 helper.RunToCompletion(data.get()); |
| 1723 TransactionHelperResult out = helper.output(); | 1723 TransactionHelperResult out = helper.output(); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1742 scoped_ptr<UploadDataStream> stream( | 1742 scoped_ptr<UploadDataStream> stream( |
| 1743 new UploadDataStream(request.upload_data)); | 1743 new UploadDataStream(request.upload_data)); |
| 1744 ASSERT_EQ(OK, stream->Init()); | 1744 ASSERT_EQ(OK, stream->Init()); |
| 1745 ASSERT_EQ(request.upload_data->GetContentLengthSync(), | 1745 ASSERT_EQ(request.upload_data->GetContentLengthSync(), |
| 1746 stream->size()); | 1746 stream->size()); |
| 1747 scoped_ptr<spdy::SpdyFrame> stream_reply(ConstructSpdyPostSynReply(NULL, 0)); | 1747 scoped_ptr<spdy::SpdyFrame> stream_reply(ConstructSpdyPostSynReply(NULL, 0)); |
| 1748 scoped_ptr<spdy::SpdyFrame> stream_body(ConstructSpdyBodyFrame(1, true)); | 1748 scoped_ptr<spdy::SpdyFrame> stream_body(ConstructSpdyBodyFrame(1, true)); |
| 1749 MockRead reads[] = { | 1749 MockRead reads[] = { |
| 1750 CreateMockRead(*stream_reply, 2), | 1750 CreateMockRead(*stream_reply, 2), |
| 1751 CreateMockRead(*stream_body, 3), | 1751 CreateMockRead(*stream_body, 3), |
| 1752 MockRead(false, 0, 0) // EOF | 1752 MockRead(SYNCHRONOUS, 0, 0) // EOF |
| 1753 }; | 1753 }; |
| 1754 | 1754 |
| 1755 scoped_ptr<DelayedSocketData> data( | 1755 scoped_ptr<DelayedSocketData> data( |
| 1756 new DelayedSocketData(0, reads, arraysize(reads), NULL, 0)); | 1756 new DelayedSocketData(0, reads, arraysize(reads), NULL, 0)); |
| 1757 NormalSpdyTransactionHelper helper(request, | 1757 NormalSpdyTransactionHelper helper(request, |
| 1758 BoundNetLog(), GetParam()); | 1758 BoundNetLog(), GetParam()); |
| 1759 helper.RunPreTestSetup(); | 1759 helper.RunPreTestSetup(); |
| 1760 helper.AddData(data.get()); | 1760 helper.AddData(data.get()); |
| 1761 helper.RunDefaultTest(); | 1761 helper.RunDefaultTest(); |
| 1762 helper.VerifyDataConsumed(); | 1762 helper.VerifyDataConsumed(); |
| 1763 | 1763 |
| 1764 TransactionHelperResult out = helper.output(); | 1764 TransactionHelperResult out = helper.output(); |
| 1765 EXPECT_EQ(ERR_SYN_REPLY_NOT_RECEIVED, out.rv); | 1765 EXPECT_EQ(ERR_SYN_REPLY_NOT_RECEIVED, out.rv); |
| 1766 } | 1766 } |
| 1767 | 1767 |
| 1768 // The client upon cancellation tries to send a RST_STREAM frame. The mock | 1768 // The client upon cancellation tries to send a RST_STREAM frame. The mock |
| 1769 // socket causes the TCP write to return zero. This test checks that the client | 1769 // socket causes the TCP write to return zero. This test checks that the client |
| 1770 // tries to queue up the RST_STREAM frame again. | 1770 // tries to queue up the RST_STREAM frame again. |
| 1771 TEST_P(SpdyNetworkTransactionTest, SocketWriteReturnsZero) { | 1771 TEST_P(SpdyNetworkTransactionTest, SocketWriteReturnsZero) { |
| 1772 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 1772 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 1773 scoped_ptr<spdy::SpdyFrame> rst( | 1773 scoped_ptr<spdy::SpdyFrame> rst( |
| 1774 ConstructSpdyRstStream(1, spdy::CANCEL)); | 1774 ConstructSpdyRstStream(1, spdy::CANCEL)); |
| 1775 MockWrite writes[] = { | 1775 MockWrite writes[] = { |
| 1776 CreateMockWrite(*req.get(), 0, false), | 1776 CreateMockWrite(*req.get(), 0, SYNCHRONOUS), |
| 1777 MockWrite(false, 0, 0, 2), | 1777 MockWrite(SYNCHRONOUS, 0, 0, 2), |
| 1778 CreateMockWrite(*rst.get(), 3, false), | 1778 CreateMockWrite(*rst.get(), 3, SYNCHRONOUS), |
| 1779 }; | 1779 }; |
| 1780 | 1780 |
| 1781 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 1781 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 1782 MockRead reads[] = { | 1782 MockRead reads[] = { |
| 1783 CreateMockRead(*resp.get(), 1, true), | 1783 CreateMockRead(*resp.get(), 1, ASYNC), |
| 1784 MockRead(true, 0, 0, 4) // EOF | 1784 MockRead(ASYNC, 0, 0, 4) // EOF |
| 1785 }; | 1785 }; |
| 1786 | 1786 |
| 1787 scoped_refptr<DeterministicSocketData> data( | 1787 scoped_refptr<DeterministicSocketData> data( |
| 1788 new DeterministicSocketData(reads, arraysize(reads), | 1788 new DeterministicSocketData(reads, arraysize(reads), |
| 1789 writes, arraysize(writes))); | 1789 writes, arraysize(writes))); |
| 1790 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 1790 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 1791 BoundNetLog(), GetParam()); | 1791 BoundNetLog(), GetParam()); |
| 1792 helper.SetDeterministic(); | 1792 helper.SetDeterministic(); |
| 1793 helper.RunPreTestSetup(); | 1793 helper.RunPreTestSetup(); |
| 1794 helper.AddDeterministicData(data.get()); | 1794 helper.AddDeterministicData(data.get()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1806 data->Run(); | 1806 data->Run(); |
| 1807 | 1807 |
| 1808 helper.VerifyDataConsumed(); | 1808 helper.VerifyDataConsumed(); |
| 1809 } | 1809 } |
| 1810 | 1810 |
| 1811 // Test that the transaction doesn't crash when we don't have a reply. | 1811 // Test that the transaction doesn't crash when we don't have a reply. |
| 1812 TEST_P(SpdyNetworkTransactionTest, ResponseWithoutSynReply) { | 1812 TEST_P(SpdyNetworkTransactionTest, ResponseWithoutSynReply) { |
| 1813 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 1813 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 1814 MockRead reads[] = { | 1814 MockRead reads[] = { |
| 1815 CreateMockRead(*body), | 1815 CreateMockRead(*body), |
| 1816 MockRead(true, 0, 0) // EOF | 1816 MockRead(ASYNC, 0, 0) // EOF |
| 1817 }; | 1817 }; |
| 1818 | 1818 |
| 1819 scoped_ptr<DelayedSocketData> data( | 1819 scoped_ptr<DelayedSocketData> data( |
| 1820 new DelayedSocketData(1, reads, arraysize(reads), NULL, 0)); | 1820 new DelayedSocketData(1, reads, arraysize(reads), NULL, 0)); |
| 1821 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 1821 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 1822 BoundNetLog(), GetParam()); | 1822 BoundNetLog(), GetParam()); |
| 1823 helper.RunToCompletion(data.get()); | 1823 helper.RunToCompletion(data.get()); |
| 1824 TransactionHelperResult out = helper.output(); | 1824 TransactionHelperResult out = helper.output(); |
| 1825 EXPECT_EQ(ERR_SYN_REPLY_NOT_RECEIVED, out.rv); | 1825 EXPECT_EQ(ERR_SYN_REPLY_NOT_RECEIVED, out.rv); |
| 1826 } | 1826 } |
| 1827 | 1827 |
| 1828 // Test that the transaction doesn't crash when we get two replies on the same | 1828 // Test that the transaction doesn't crash when we get two replies on the same |
| 1829 // stream ID. See http://crbug.com/45639. | 1829 // stream ID. See http://crbug.com/45639. |
| 1830 TEST_P(SpdyNetworkTransactionTest, ResponseWithTwoSynReplies) { | 1830 TEST_P(SpdyNetworkTransactionTest, ResponseWithTwoSynReplies) { |
| 1831 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 1831 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 1832 MockWrite writes[] = { CreateMockWrite(*req) }; | 1832 MockWrite writes[] = { CreateMockWrite(*req) }; |
| 1833 | 1833 |
| 1834 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 1834 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 1835 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 1835 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 1836 MockRead reads[] = { | 1836 MockRead reads[] = { |
| 1837 CreateMockRead(*resp), | 1837 CreateMockRead(*resp), |
| 1838 CreateMockRead(*resp), | 1838 CreateMockRead(*resp), |
| 1839 CreateMockRead(*body), | 1839 CreateMockRead(*body), |
| 1840 MockRead(true, 0, 0) // EOF | 1840 MockRead(ASYNC, 0, 0) // EOF |
| 1841 }; | 1841 }; |
| 1842 | 1842 |
| 1843 scoped_ptr<DelayedSocketData> data( | 1843 scoped_ptr<DelayedSocketData> data( |
| 1844 new DelayedSocketData(1, reads, arraysize(reads), | 1844 new DelayedSocketData(1, reads, arraysize(reads), |
| 1845 writes, arraysize(writes))); | 1845 writes, arraysize(writes))); |
| 1846 | 1846 |
| 1847 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 1847 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 1848 BoundNetLog(), GetParam()); | 1848 BoundNetLog(), GetParam()); |
| 1849 helper.RunPreTestSetup(); | 1849 helper.RunPreTestSetup(); |
| 1850 helper.AddData(data.get()); | 1850 helper.AddData(data.get()); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1918 MockRead reads[] = { | 1918 MockRead reads[] = { |
| 1919 CreateMockRead(*window_update_dummy), | 1919 CreateMockRead(*window_update_dummy), |
| 1920 CreateMockRead(*window_update_dummy), | 1920 CreateMockRead(*window_update_dummy), |
| 1921 CreateMockRead(*window_update_dummy), | 1921 CreateMockRead(*window_update_dummy), |
| 1922 CreateMockRead(*window_update), // Four updates, therefore window | 1922 CreateMockRead(*window_update), // Four updates, therefore window |
| 1923 CreateMockRead(*window_update), // size should increase by | 1923 CreateMockRead(*window_update), // size should increase by |
| 1924 CreateMockRead(*window_update), // kDeltaWindowSize * 4 | 1924 CreateMockRead(*window_update), // kDeltaWindowSize * 4 |
| 1925 CreateMockRead(*window_update), | 1925 CreateMockRead(*window_update), |
| 1926 CreateMockRead(*resp), | 1926 CreateMockRead(*resp), |
| 1927 CreateMockRead(*body_end), | 1927 CreateMockRead(*body_end), |
| 1928 MockRead(true, 0, 0) // EOF | 1928 MockRead(ASYNC, 0, 0) // EOF |
| 1929 }; | 1929 }; |
| 1930 | 1930 |
| 1931 scoped_ptr<DelayedSocketData> data( | 1931 scoped_ptr<DelayedSocketData> data( |
| 1932 new DelayedSocketData(0, reads, arraysize(reads), | 1932 new DelayedSocketData(0, reads, arraysize(reads), |
| 1933 writes, arraysize(writes))); | 1933 writes, arraysize(writes))); |
| 1934 | 1934 |
| 1935 // Setup the request | 1935 // Setup the request |
| 1936 HttpRequestInfo request; | 1936 HttpRequestInfo request; |
| 1937 request.method = "POST"; | 1937 request.method = "POST"; |
| 1938 request.url = GURL(kDefaultURL); | 1938 request.url = GURL(kDefaultURL); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1981 | 1981 |
| 1982 scoped_ptr<spdy::SpdyFrame> resp( | 1982 scoped_ptr<spdy::SpdyFrame> resp( |
| 1983 ConstructSpdyGetSynReply(NULL, 0, 1)); | 1983 ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 1984 scoped_ptr<spdy::SpdyFrame> body_no_fin( | 1984 scoped_ptr<spdy::SpdyFrame> body_no_fin( |
| 1985 ConstructSpdyBodyFrame(1, false)); | 1985 ConstructSpdyBodyFrame(1, false)); |
| 1986 scoped_ptr<spdy::SpdyFrame> body_fin( | 1986 scoped_ptr<spdy::SpdyFrame> body_fin( |
| 1987 ConstructSpdyBodyFrame(1, NULL, 0, true)); | 1987 ConstructSpdyBodyFrame(1, NULL, 0, true)); |
| 1988 MockRead reads[] = { | 1988 MockRead reads[] = { |
| 1989 CreateMockRead(*resp), | 1989 CreateMockRead(*resp), |
| 1990 CreateMockRead(*body_no_fin), | 1990 CreateMockRead(*body_no_fin), |
| 1991 MockRead(true, ERR_IO_PENDING, 0), // Force a pause | 1991 MockRead(ASYNC, ERR_IO_PENDING, 0), // Force a pause |
| 1992 CreateMockRead(*body_fin), | 1992 CreateMockRead(*body_fin), |
| 1993 MockRead(true, ERR_IO_PENDING, 0), // Force a pause | 1993 MockRead(ASYNC, ERR_IO_PENDING, 0), // Force a pause |
| 1994 MockRead(true, 0, 0) // EOF | 1994 MockRead(ASYNC, 0, 0) // EOF |
| 1995 }; | 1995 }; |
| 1996 | 1996 |
| 1997 scoped_ptr<DelayedSocketData> data( | 1997 scoped_ptr<DelayedSocketData> data( |
| 1998 new DelayedSocketData(1, reads, arraysize(reads), | 1998 new DelayedSocketData(1, reads, arraysize(reads), |
| 1999 writes, arraysize(writes))); | 1999 writes, arraysize(writes))); |
| 2000 | 2000 |
| 2001 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 2001 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 2002 BoundNetLog(), GetParam()); | 2002 BoundNetLog(), GetParam()); |
| 2003 helper.AddData(data.get()); | 2003 helper.AddData(data.get()); |
| 2004 helper.RunPreTestSetup(); | 2004 helper.RunPreTestSetup(); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2081 scoped_ptr<spdy::SpdyFrame> window_update2( | 2081 scoped_ptr<spdy::SpdyFrame> window_update2( |
| 2082 ConstructSpdyWindowUpdate(2, kDeltaWindowSize)); | 2082 ConstructSpdyWindowUpdate(2, kDeltaWindowSize)); |
| 2083 scoped_ptr<spdy::SpdyFrame> reply(ConstructSpdyPostSynReply(NULL, 0)); | 2083 scoped_ptr<spdy::SpdyFrame> reply(ConstructSpdyPostSynReply(NULL, 0)); |
| 2084 | 2084 |
| 2085 MockRead reads[] = { | 2085 MockRead reads[] = { |
| 2086 CreateMockRead(*window_update2), | 2086 CreateMockRead(*window_update2), |
| 2087 CreateMockRead(*window_update2), | 2087 CreateMockRead(*window_update2), |
| 2088 CreateMockRead(*window_update), | 2088 CreateMockRead(*window_update), |
| 2089 CreateMockRead(*window_update), | 2089 CreateMockRead(*window_update), |
| 2090 CreateMockRead(*window_update), | 2090 CreateMockRead(*window_update), |
| 2091 MockRead(true, ERR_IO_PENDING, 0), // Wait for the RST to be written. | 2091 MockRead(ASYNC, ERR_IO_PENDING, 0), // Wait for the RST to be written. |
| 2092 MockRead(true, 0, 0) // EOF | 2092 MockRead(ASYNC, 0, 0) // EOF |
| 2093 }; | 2093 }; |
| 2094 | 2094 |
| 2095 scoped_ptr<DelayedSocketData> data( | 2095 scoped_ptr<DelayedSocketData> data( |
| 2096 new DelayedSocketData(0, reads, arraysize(reads), | 2096 new DelayedSocketData(0, reads, arraysize(reads), |
| 2097 writes, arraysize(writes))); | 2097 writes, arraysize(writes))); |
| 2098 | 2098 |
| 2099 // Setup the request | 2099 // Setup the request |
| 2100 HttpRequestInfo request; | 2100 HttpRequestInfo request; |
| 2101 request.method = "POST"; | 2101 request.method = "POST"; |
| 2102 request.url = GURL("http://www.google.com/"); | 2102 request.url = GURL("http://www.google.com/"); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2188 // data. | 2188 // data. |
| 2189 scoped_ptr<spdy::SpdyFrame> window_update( | 2189 scoped_ptr<spdy::SpdyFrame> window_update( |
| 2190 ConstructSpdyWindowUpdate(1, kUploadDataSize)); | 2190 ConstructSpdyWindowUpdate(1, kUploadDataSize)); |
| 2191 scoped_ptr<spdy::SpdyFrame> reply(ConstructSpdyPostSynReply(NULL, 0)); | 2191 scoped_ptr<spdy::SpdyFrame> reply(ConstructSpdyPostSynReply(NULL, 0)); |
| 2192 MockRead reads[] = { | 2192 MockRead reads[] = { |
| 2193 CreateMockRead(*window_update), | 2193 CreateMockRead(*window_update), |
| 2194 CreateMockRead(*window_update), | 2194 CreateMockRead(*window_update), |
| 2195 CreateMockRead(*reply), | 2195 CreateMockRead(*reply), |
| 2196 CreateMockRead(*body2), | 2196 CreateMockRead(*body2), |
| 2197 CreateMockRead(*body3), | 2197 CreateMockRead(*body3), |
| 2198 MockRead(true, 0, 0) // EOF | 2198 MockRead(ASYNC, 0, 0) // EOF |
| 2199 }; | 2199 }; |
| 2200 | 2200 |
| 2201 // Force all writes to happen before any read, last write will not | 2201 // Force all writes to happen before any read, last write will not |
| 2202 // actually queue a frame, due to window size being 0. | 2202 // actually queue a frame, due to window size being 0. |
| 2203 scoped_ptr<DelayedSocketData> data( | 2203 scoped_ptr<DelayedSocketData> data( |
| 2204 new DelayedSocketData(nwrites, reads, arraysize(reads), | 2204 new DelayedSocketData(nwrites, reads, arraysize(reads), |
| 2205 writes.get(), nwrites)); | 2205 writes.get(), nwrites)); |
| 2206 | 2206 |
| 2207 HttpRequestInfo request; | 2207 HttpRequestInfo request; |
| 2208 request.method = "POST"; | 2208 request.method = "POST"; |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2250 CreateMockWrite(*req), | 2250 CreateMockWrite(*req), |
| 2251 }; | 2251 }; |
| 2252 | 2252 |
| 2253 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 2253 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 2254 MockRead reads[] = { | 2254 MockRead reads[] = { |
| 2255 CreateMockRead(*resp), | 2255 CreateMockRead(*resp), |
| 2256 // This following read isn't used by the test, except during the | 2256 // This following read isn't used by the test, except during the |
| 2257 // RunAllPending() call at the end since the SpdySession survives the | 2257 // RunAllPending() call at the end since the SpdySession survives the |
| 2258 // HttpNetworkTransaction and still tries to continue Read()'ing. Any | 2258 // HttpNetworkTransaction and still tries to continue Read()'ing. Any |
| 2259 // MockRead will do here. | 2259 // MockRead will do here. |
| 2260 MockRead(true, 0, 0) // EOF | 2260 MockRead(ASYNC, 0, 0) // EOF |
| 2261 }; | 2261 }; |
| 2262 | 2262 |
| 2263 StaticSocketDataProvider data(reads, arraysize(reads), | 2263 StaticSocketDataProvider data(reads, arraysize(reads), |
| 2264 writes, arraysize(writes)); | 2264 writes, arraysize(writes)); |
| 2265 | 2265 |
| 2266 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 2266 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 2267 BoundNetLog(), GetParam()); | 2267 BoundNetLog(), GetParam()); |
| 2268 helper.RunPreTestSetup(); | 2268 helper.RunPreTestSetup(); |
| 2269 helper.AddData(&data); | 2269 helper.AddData(&data); |
| 2270 HttpNetworkTransaction* trans = helper.trans(); | 2270 HttpNetworkTransaction* trans = helper.trans(); |
| 2271 | 2271 |
| 2272 TestCompletionCallback callback; | 2272 TestCompletionCallback callback; |
| 2273 int rv = trans->Start( | 2273 int rv = trans->Start( |
| 2274 &CreateGetRequest(), callback.callback(), BoundNetLog()); | 2274 &CreateGetRequest(), callback.callback(), BoundNetLog()); |
| 2275 EXPECT_EQ(ERR_IO_PENDING, rv); | 2275 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 2276 helper.ResetTrans(); // Cancel the transaction. | 2276 helper.ResetTrans(); // Cancel the transaction. |
| 2277 | 2277 |
| 2278 // Flush the MessageLoop while the SpdySessionDependencies (in particular, the | 2278 // Flush the MessageLoop while the SpdySessionDependencies (in particular, the |
| 2279 // MockClientSocketFactory) are still alive. | 2279 // MockClientSocketFactory) are still alive. |
| 2280 MessageLoop::current()->RunAllPending(); | 2280 MessageLoop::current()->RunAllPending(); |
| 2281 helper.VerifyDataNotConsumed(); | 2281 helper.VerifyDataNotConsumed(); |
| 2282 } | 2282 } |
| 2283 | 2283 |
| 2284 // Verify that the client sends a Rst Frame upon cancelling the stream. | 2284 // Verify that the client sends a Rst Frame upon cancelling the stream. |
| 2285 TEST_P(SpdyNetworkTransactionTest, CancelledTransactionSendRst) { | 2285 TEST_P(SpdyNetworkTransactionTest, CancelledTransactionSendRst) { |
| 2286 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 2286 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 2287 scoped_ptr<spdy::SpdyFrame> rst( | 2287 scoped_ptr<spdy::SpdyFrame> rst( |
| 2288 ConstructSpdyRstStream(1, spdy::CANCEL)); | 2288 ConstructSpdyRstStream(1, spdy::CANCEL)); |
| 2289 MockWrite writes[] = { | 2289 MockWrite writes[] = { |
| 2290 CreateMockWrite(*req, 0, false), | 2290 CreateMockWrite(*req, 0, SYNCHRONOUS), |
| 2291 CreateMockWrite(*rst, 2, false), | 2291 CreateMockWrite(*rst, 2, SYNCHRONOUS), |
| 2292 }; | 2292 }; |
| 2293 | 2293 |
| 2294 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 2294 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 2295 MockRead reads[] = { | 2295 MockRead reads[] = { |
| 2296 CreateMockRead(*resp, 1, true), | 2296 CreateMockRead(*resp, 1, ASYNC), |
| 2297 MockRead(true, 0, 0, 3) // EOF | 2297 MockRead(ASYNC, 0, 0, 3) // EOF |
| 2298 }; | 2298 }; |
| 2299 | 2299 |
| 2300 scoped_refptr<DeterministicSocketData> data( | 2300 scoped_refptr<DeterministicSocketData> data( |
| 2301 new DeterministicSocketData(reads, arraysize(reads), | 2301 new DeterministicSocketData(reads, arraysize(reads), |
| 2302 writes, arraysize(writes))); | 2302 writes, arraysize(writes))); |
| 2303 | 2303 |
| 2304 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 2304 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 2305 BoundNetLog(), | 2305 BoundNetLog(), |
| 2306 GetParam()); | 2306 GetParam()); |
| 2307 helper.SetDeterministic(); | 2307 helper.SetDeterministic(); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 2337 // session, and calls the read callback with the incomplete data. | 2337 // session, and calls the read callback with the incomplete data. |
| 2338 const uint8 kGetBodyFrame2[] = { | 2338 const uint8 kGetBodyFrame2[] = { |
| 2339 0x00, 0x00, 0x00, 0x01, | 2339 0x00, 0x00, 0x00, 0x01, |
| 2340 0x01, 0x00, 0x00, 0x07, | 2340 0x01, 0x00, 0x00, 0x07, |
| 2341 'h', 'e', 'l', 'l', 'o', '!', | 2341 'h', 'e', 'l', 'l', 'o', '!', |
| 2342 }; | 2342 }; |
| 2343 | 2343 |
| 2344 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 2344 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 2345 MockRead reads[] = { | 2345 MockRead reads[] = { |
| 2346 CreateMockRead(*resp, 2), | 2346 CreateMockRead(*resp, 2), |
| 2347 MockRead(true, ERR_IO_PENDING, 3), // Force a pause | 2347 MockRead(ASYNC, ERR_IO_PENDING, 3), // Force a pause |
| 2348 MockRead(true, reinterpret_cast<const char*>(kGetBodyFrame2), | 2348 MockRead(ASYNC, reinterpret_cast<const char*>(kGetBodyFrame2), |
| 2349 arraysize(kGetBodyFrame2), 4), | 2349 arraysize(kGetBodyFrame2), 4), |
| 2350 MockRead(true, ERR_IO_PENDING, 5), // Force a pause | 2350 MockRead(ASYNC, ERR_IO_PENDING, 5), // Force a pause |
| 2351 MockRead(true, 0, 0, 6), // EOF | 2351 MockRead(ASYNC, 0, 0, 6), // EOF |
| 2352 }; | 2352 }; |
| 2353 MockRead reads2[] = { | 2353 MockRead reads2[] = { |
| 2354 CreateMockRead(*resp, 2), | 2354 CreateMockRead(*resp, 2), |
| 2355 MockRead(true, 0, 0, 3), // EOF | 2355 MockRead(ASYNC, 0, 0, 3), // EOF |
| 2356 }; | 2356 }; |
| 2357 | 2357 |
| 2358 scoped_ptr<OrderedSocketData> data( | 2358 scoped_ptr<OrderedSocketData> data( |
| 2359 new OrderedSocketData(reads, arraysize(reads), | 2359 new OrderedSocketData(reads, arraysize(reads), |
| 2360 writes, arraysize(writes))); | 2360 writes, arraysize(writes))); |
| 2361 scoped_ptr<DelayedSocketData> data2( | 2361 scoped_ptr<DelayedSocketData> data2( |
| 2362 new DelayedSocketData(1, reads2, arraysize(reads2), | 2362 new DelayedSocketData(1, reads2, arraysize(reads2), |
| 2363 writes2, arraysize(writes2))); | 2363 writes2, arraysize(writes2))); |
| 2364 | 2364 |
| 2365 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 2365 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| (...skipping 26 matching lines...) Expand all Loading... |
| 2392 // transaction. Failures will usually be valgrind errors. See | 2392 // transaction. Failures will usually be valgrind errors. See |
| 2393 // http://crbug.com/46925 | 2393 // http://crbug.com/46925 |
| 2394 TEST_P(SpdyNetworkTransactionTest, DeleteSessionOnReadCallback) { | 2394 TEST_P(SpdyNetworkTransactionTest, DeleteSessionOnReadCallback) { |
| 2395 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 2395 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 2396 MockWrite writes[] = { CreateMockWrite(*req) }; | 2396 MockWrite writes[] = { CreateMockWrite(*req) }; |
| 2397 | 2397 |
| 2398 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 2398 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 2399 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 2399 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 2400 MockRead reads[] = { | 2400 MockRead reads[] = { |
| 2401 CreateMockRead(*resp.get(), 2), | 2401 CreateMockRead(*resp.get(), 2), |
| 2402 MockRead(true, ERR_IO_PENDING, 3), // Force a pause | 2402 MockRead(ASYNC, ERR_IO_PENDING, 3), // Force a pause |
| 2403 CreateMockRead(*body.get(), 4), | 2403 CreateMockRead(*body.get(), 4), |
| 2404 MockRead(true, 0, 0, 5), // EOF | 2404 MockRead(ASYNC, 0, 0, 5), // EOF |
| 2405 }; | 2405 }; |
| 2406 | 2406 |
| 2407 scoped_ptr<OrderedSocketData> data( | 2407 scoped_ptr<OrderedSocketData> data( |
| 2408 new OrderedSocketData(reads, arraysize(reads), | 2408 new OrderedSocketData(reads, arraysize(reads), |
| 2409 writes, arraysize(writes))); | 2409 writes, arraysize(writes))); |
| 2410 | 2410 |
| 2411 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 2411 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 2412 BoundNetLog(), GetParam()); | 2412 BoundNetLog(), GetParam()); |
| 2413 helper.RunPreTestSetup(); | 2413 helper.RunPreTestSetup(); |
| 2414 helper.AddData(data.get()); | 2414 helper.AddData(data.get()); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2479 kStandardGetHeaders, arraysize(kStandardGetHeaders) / 2)); | 2479 kStandardGetHeaders, arraysize(kStandardGetHeaders) / 2)); |
| 2480 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyPacket( | 2480 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyPacket( |
| 2481 kSynStartHeader, kExtraHeaders, arraysize(kExtraHeaders) / 2, | 2481 kSynStartHeader, kExtraHeaders, arraysize(kExtraHeaders) / 2, |
| 2482 kStandardGetHeaders2, arraysize(kStandardGetHeaders2) / 2)); | 2482 kStandardGetHeaders2, arraysize(kStandardGetHeaders2) / 2)); |
| 2483 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReplyRedirect(1)); | 2483 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReplyRedirect(1)); |
| 2484 MockWrite writes[] = { | 2484 MockWrite writes[] = { |
| 2485 CreateMockWrite(*req, 1), | 2485 CreateMockWrite(*req, 1), |
| 2486 }; | 2486 }; |
| 2487 MockRead reads[] = { | 2487 MockRead reads[] = { |
| 2488 CreateMockRead(*resp, 2), | 2488 CreateMockRead(*resp, 2), |
| 2489 MockRead(true, 0, 0, 3) // EOF | 2489 MockRead(ASYNC, 0, 0, 3) // EOF |
| 2490 }; | 2490 }; |
| 2491 | 2491 |
| 2492 // Setup writes/reads to www.foo.com | 2492 // Setup writes/reads to www.foo.com |
| 2493 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 1)); | 2493 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 2494 scoped_ptr<spdy::SpdyFrame> body2(ConstructSpdyBodyFrame(1, true)); | 2494 scoped_ptr<spdy::SpdyFrame> body2(ConstructSpdyBodyFrame(1, true)); |
| 2495 MockWrite writes2[] = { | 2495 MockWrite writes2[] = { |
| 2496 CreateMockWrite(*req2, 1), | 2496 CreateMockWrite(*req2, 1), |
| 2497 }; | 2497 }; |
| 2498 MockRead reads2[] = { | 2498 MockRead reads2[] = { |
| 2499 CreateMockRead(*resp2, 2), | 2499 CreateMockRead(*resp2, 2), |
| 2500 CreateMockRead(*body2, 3), | 2500 CreateMockRead(*body2, 3), |
| 2501 MockRead(true, 0, 0, 4) // EOF | 2501 MockRead(ASYNC, 0, 0, 4) // EOF |
| 2502 }; | 2502 }; |
| 2503 scoped_ptr<OrderedSocketData> data( | 2503 scoped_ptr<OrderedSocketData> data( |
| 2504 new OrderedSocketData(reads, arraysize(reads), | 2504 new OrderedSocketData(reads, arraysize(reads), |
| 2505 writes, arraysize(writes))); | 2505 writes, arraysize(writes))); |
| 2506 scoped_ptr<OrderedSocketData> data2( | 2506 scoped_ptr<OrderedSocketData> data2( |
| 2507 new OrderedSocketData(reads2, arraysize(reads2), | 2507 new OrderedSocketData(reads2, arraysize(reads2), |
| 2508 writes2, arraysize(writes2))); | 2508 writes2, arraysize(writes2))); |
| 2509 | 2509 |
| 2510 // TODO(erikchen): Make test support SPDYSSL, SPDYNPN | 2510 // TODO(erikchen): Make test support SPDYSSL, SPDYNPN |
| 2511 HttpStreamFactory::set_force_spdy_over_ssl(false); | 2511 HttpStreamFactory::set_force_spdy_over_ssl(false); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2550 MockWrite writes[] = { | 2550 MockWrite writes[] = { |
| 2551 CreateMockWrite(*syn, 0), | 2551 CreateMockWrite(*syn, 0), |
| 2552 CreateMockWrite(*rst, 2), | 2552 CreateMockWrite(*rst, 2), |
| 2553 }; | 2553 }; |
| 2554 | 2554 |
| 2555 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"}; | 2555 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"}; |
| 2556 scoped_ptr<spdy::SpdyFrame> | 2556 scoped_ptr<spdy::SpdyFrame> |
| 2557 reply(ConstructSpdyGetSynReply(kExtraHeaders, 1, 1)); | 2557 reply(ConstructSpdyGetSynReply(kExtraHeaders, 1, 1)); |
| 2558 MockRead reads[] = { | 2558 MockRead reads[] = { |
| 2559 CreateMockRead(*reply, 1), | 2559 CreateMockRead(*reply, 1), |
| 2560 MockRead(true, ERR_IO_PENDING, 3), // Force a pause | 2560 MockRead(ASYNC, ERR_IO_PENDING, 3), // Force a pause |
| 2561 }; | 2561 }; |
| 2562 | 2562 |
| 2563 HttpResponseInfo response; | 2563 HttpResponseInfo response; |
| 2564 HttpResponseInfo response2; | 2564 HttpResponseInfo response2; |
| 2565 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( | 2565 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( |
| 2566 reads, | 2566 reads, |
| 2567 arraysize(reads), | 2567 arraysize(reads), |
| 2568 writes, | 2568 writes, |
| 2569 arraysize(writes))); | 2569 arraysize(writes))); |
| 2570 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 2570 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2613 spdy::HEADERS, | 2613 spdy::HEADERS, |
| 2614 spdy::CONTROL_FLAG_NONE, | 2614 spdy::CONTROL_FLAG_NONE, |
| 2615 NULL, | 2615 NULL, |
| 2616 0, | 2616 0, |
| 2617 0)); | 2617 0)); |
| 2618 scoped_ptr<spdy::SpdyFrame> stream1_body(ConstructSpdyBodyFrame(1, true)); | 2618 scoped_ptr<spdy::SpdyFrame> stream1_body(ConstructSpdyBodyFrame(1, true)); |
| 2619 MockRead reads[] = { | 2619 MockRead reads[] = { |
| 2620 CreateMockRead(*stream1_reply), | 2620 CreateMockRead(*stream1_reply), |
| 2621 CreateMockRead(*stream1_headers), | 2621 CreateMockRead(*stream1_headers), |
| 2622 CreateMockRead(*stream1_body), | 2622 CreateMockRead(*stream1_body), |
| 2623 MockRead(true, 0, 0) // EOF | 2623 MockRead(ASYNC, 0, 0) // EOF |
| 2624 }; | 2624 }; |
| 2625 | 2625 |
| 2626 scoped_ptr<DelayedSocketData> data( | 2626 scoped_ptr<DelayedSocketData> data( |
| 2627 new DelayedSocketData(1, reads, arraysize(reads), | 2627 new DelayedSocketData(1, reads, arraysize(reads), |
| 2628 writes, arraysize(writes))); | 2628 writes, arraysize(writes))); |
| 2629 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 2629 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 2630 BoundNetLog(), GetParam()); | 2630 BoundNetLog(), GetParam()); |
| 2631 helper.RunToCompletion(data.get()); | 2631 helper.RunToCompletion(data.get()); |
| 2632 TransactionHelperResult out = helper.output(); | 2632 TransactionHelperResult out = helper.output(); |
| 2633 EXPECT_EQ(ERR_SPDY_PROTOCOL_ERROR, out.rv); | 2633 EXPECT_EQ(ERR_SPDY_PROTOCOL_ERROR, out.rv); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 2647 scoped_ptr<spdy::SpdyFrame> | 2647 scoped_ptr<spdy::SpdyFrame> |
| 2648 reply(ConstructSpdyGetSynReply(NULL, 0, 1)); | 2648 reply(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 2649 const char* const extra_headers[] = {"X-UpperCase", "yes"}; | 2649 const char* const extra_headers[] = {"X-UpperCase", "yes"}; |
| 2650 scoped_ptr<spdy::SpdyFrame> | 2650 scoped_ptr<spdy::SpdyFrame> |
| 2651 push(ConstructSpdyPush(extra_headers, 1, 2, 1)); | 2651 push(ConstructSpdyPush(extra_headers, 1, 2, 1)); |
| 2652 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 2652 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 2653 MockRead reads[] = { | 2653 MockRead reads[] = { |
| 2654 CreateMockRead(*reply, 1), | 2654 CreateMockRead(*reply, 1), |
| 2655 CreateMockRead(*push, 1), | 2655 CreateMockRead(*push, 1), |
| 2656 CreateMockRead(*body, 1), | 2656 CreateMockRead(*body, 1), |
| 2657 MockRead(true, ERR_IO_PENDING, 3), // Force a pause | 2657 MockRead(ASYNC, ERR_IO_PENDING, 3), // Force a pause |
| 2658 }; | 2658 }; |
| 2659 | 2659 |
| 2660 HttpResponseInfo response; | 2660 HttpResponseInfo response; |
| 2661 HttpResponseInfo response2; | 2661 HttpResponseInfo response2; |
| 2662 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( | 2662 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( |
| 2663 reads, | 2663 reads, |
| 2664 arraysize(reads), | 2664 arraysize(reads), |
| 2665 writes, | 2665 writes, |
| 2666 arraysize(writes))); | 2666 arraysize(writes))); |
| 2667 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 2667 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2714 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 2714 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 2715 scoped_ptr<spdy::SpdyFrame> rst(ConstructSpdyRstStream(2, spdy::CANCEL)); | 2715 scoped_ptr<spdy::SpdyFrame> rst(ConstructSpdyRstStream(2, spdy::CANCEL)); |
| 2716 MockWrite writes[] = { | 2716 MockWrite writes[] = { |
| 2717 CreateMockWrite(*req, 1), | 2717 CreateMockWrite(*req, 1), |
| 2718 CreateMockWrite(*rst, 6), | 2718 CreateMockWrite(*rst, 6), |
| 2719 }; | 2719 }; |
| 2720 MockRead reads[] = { | 2720 MockRead reads[] = { |
| 2721 CreateMockRead(*resp, 2), | 2721 CreateMockRead(*resp, 2), |
| 2722 CreateMockRead(*rep, 3), | 2722 CreateMockRead(*rep, 3), |
| 2723 CreateMockRead(*body, 4), | 2723 CreateMockRead(*body, 4), |
| 2724 MockRead(true, ERR_IO_PENDING, 5), // Force a pause | 2724 MockRead(ASYNC, ERR_IO_PENDING, 5), // Force a pause |
| 2725 MockRead(true, 0, 0, 7) // EOF | 2725 MockRead(ASYNC, 0, 0, 7) // EOF |
| 2726 }; | 2726 }; |
| 2727 | 2727 |
| 2728 // Setup writes/reads to www.foo.com | 2728 // Setup writes/reads to www.foo.com |
| 2729 const char* const kStandardGetHeaders2[] = { | 2729 const char* const kStandardGetHeaders2[] = { |
| 2730 "host", | 2730 "host", |
| 2731 "www.foo.com", | 2731 "www.foo.com", |
| 2732 "method", | 2732 "method", |
| 2733 "GET", | 2733 "GET", |
| 2734 "scheme", | 2734 "scheme", |
| 2735 "http", | 2735 "http", |
| (...skipping 11 matching lines...) Expand all Loading... |
| 2747 kStandardGetHeaders2, | 2747 kStandardGetHeaders2, |
| 2748 arraysize(kStandardGetHeaders2) / 2)); | 2748 arraysize(kStandardGetHeaders2) / 2)); |
| 2749 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 1)); | 2749 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 2750 scoped_ptr<spdy::SpdyFrame> body2(ConstructSpdyBodyFrame(1, true)); | 2750 scoped_ptr<spdy::SpdyFrame> body2(ConstructSpdyBodyFrame(1, true)); |
| 2751 MockWrite writes2[] = { | 2751 MockWrite writes2[] = { |
| 2752 CreateMockWrite(*req2, 1), | 2752 CreateMockWrite(*req2, 1), |
| 2753 }; | 2753 }; |
| 2754 MockRead reads2[] = { | 2754 MockRead reads2[] = { |
| 2755 CreateMockRead(*resp2, 2), | 2755 CreateMockRead(*resp2, 2), |
| 2756 CreateMockRead(*body2, 3), | 2756 CreateMockRead(*body2, 3), |
| 2757 MockRead(true, 0, 0, 5) // EOF | 2757 MockRead(ASYNC, 0, 0, 5) // EOF |
| 2758 }; | 2758 }; |
| 2759 scoped_ptr<OrderedSocketData> data( | 2759 scoped_ptr<OrderedSocketData> data( |
| 2760 new OrderedSocketData(reads, arraysize(reads), | 2760 new OrderedSocketData(reads, arraysize(reads), |
| 2761 writes, arraysize(writes))); | 2761 writes, arraysize(writes))); |
| 2762 scoped_ptr<OrderedSocketData> data2( | 2762 scoped_ptr<OrderedSocketData> data2( |
| 2763 new OrderedSocketData(reads2, arraysize(reads2), | 2763 new OrderedSocketData(reads2, arraysize(reads2), |
| 2764 writes2, arraysize(writes2))); | 2764 writes2, arraysize(writes2))); |
| 2765 | 2765 |
| 2766 // TODO(erikchen): Make test support SPDYSSL, SPDYNPN | 2766 // TODO(erikchen): Make test support SPDYSSL, SPDYNPN |
| 2767 HttpStreamFactory::set_force_spdy_over_ssl(false); | 2767 HttpStreamFactory::set_force_spdy_over_ssl(false); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2827 stream1_reply(ConstructSpdyGetSynReply(NULL, 0, 1)); | 2827 stream1_reply(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 2828 scoped_ptr<spdy::SpdyFrame> | 2828 scoped_ptr<spdy::SpdyFrame> |
| 2829 stream2_syn(ConstructSpdyPush(NULL, | 2829 stream2_syn(ConstructSpdyPush(NULL, |
| 2830 0, | 2830 0, |
| 2831 2, | 2831 2, |
| 2832 1, | 2832 1, |
| 2833 "http://www.google.com/foo.dat")); | 2833 "http://www.google.com/foo.dat")); |
| 2834 MockRead reads[] = { | 2834 MockRead reads[] = { |
| 2835 CreateMockRead(*stream1_reply, 2), | 2835 CreateMockRead(*stream1_reply, 2), |
| 2836 CreateMockRead(*stream2_syn, 3), | 2836 CreateMockRead(*stream2_syn, 3), |
| 2837 CreateMockRead(*stream1_body, 4, false), | 2837 CreateMockRead(*stream1_body, 4, SYNCHRONOUS), |
| 2838 MockRead(true, reinterpret_cast<const char*>(kPushBodyFrame), | 2838 MockRead(ASYNC, reinterpret_cast<const char*>(kPushBodyFrame), |
| 2839 arraysize(kPushBodyFrame), 5), | 2839 arraysize(kPushBodyFrame), 5), |
| 2840 MockRead(true, ERR_IO_PENDING, 6), // Force a pause | 2840 MockRead(ASYNC, ERR_IO_PENDING, 6), // Force a pause |
| 2841 }; | 2841 }; |
| 2842 | 2842 |
| 2843 HttpResponseInfo response; | 2843 HttpResponseInfo response; |
| 2844 HttpResponseInfo response2; | 2844 HttpResponseInfo response2; |
| 2845 std::string expected_push_result("pushed"); | 2845 std::string expected_push_result("pushed"); |
| 2846 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( | 2846 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( |
| 2847 reads, | 2847 reads, |
| 2848 arraysize(reads), | 2848 arraysize(reads), |
| 2849 writes, | 2849 writes, |
| 2850 arraysize(writes))); | 2850 arraysize(writes))); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 2880 stream2_syn(ConstructSpdyPush(NULL, | 2880 stream2_syn(ConstructSpdyPush(NULL, |
| 2881 0, | 2881 0, |
| 2882 2, | 2882 2, |
| 2883 1, | 2883 1, |
| 2884 "http://www.google.com/foo.dat")); | 2884 "http://www.google.com/foo.dat")); |
| 2885 scoped_ptr<spdy::SpdyFrame> | 2885 scoped_ptr<spdy::SpdyFrame> |
| 2886 stream1_body(ConstructSpdyBodyFrame(1, true)); | 2886 stream1_body(ConstructSpdyBodyFrame(1, true)); |
| 2887 MockRead reads[] = { | 2887 MockRead reads[] = { |
| 2888 CreateMockRead(*stream1_reply, 2), | 2888 CreateMockRead(*stream1_reply, 2), |
| 2889 CreateMockRead(*stream2_syn, 3), | 2889 CreateMockRead(*stream2_syn, 3), |
| 2890 MockRead(true, reinterpret_cast<const char*>(kPushBodyFrame), | 2890 MockRead(ASYNC, reinterpret_cast<const char*>(kPushBodyFrame), |
| 2891 arraysize(kPushBodyFrame), 5), | 2891 arraysize(kPushBodyFrame), 5), |
| 2892 CreateMockRead(*stream1_body, 4, false), | 2892 CreateMockRead(*stream1_body, 4, SYNCHRONOUS), |
| 2893 MockRead(true, ERR_IO_PENDING, 6), // Force a pause | 2893 MockRead(ASYNC, ERR_IO_PENDING, 6), // Force a pause |
| 2894 }; | 2894 }; |
| 2895 | 2895 |
| 2896 HttpResponseInfo response; | 2896 HttpResponseInfo response; |
| 2897 HttpResponseInfo response2; | 2897 HttpResponseInfo response2; |
| 2898 std::string expected_push_result("pushed"); | 2898 std::string expected_push_result("pushed"); |
| 2899 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( | 2899 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( |
| 2900 reads, | 2900 reads, |
| 2901 arraysize(reads), | 2901 arraysize(reads), |
| 2902 writes, | 2902 writes, |
| 2903 arraysize(writes))); | 2903 arraysize(writes))); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 2931 0, | 2931 0, |
| 2932 2, | 2932 2, |
| 2933 1, | 2933 1, |
| 2934 "http://www.google.com/foo.dat")); | 2934 "http://www.google.com/foo.dat")); |
| 2935 scoped_ptr<spdy::SpdyFrame> | 2935 scoped_ptr<spdy::SpdyFrame> |
| 2936 stream2_rst(ConstructSpdyRstStream(2, spdy::PROTOCOL_ERROR)); | 2936 stream2_rst(ConstructSpdyRstStream(2, spdy::PROTOCOL_ERROR)); |
| 2937 MockRead reads[] = { | 2937 MockRead reads[] = { |
| 2938 CreateMockRead(*stream1_reply, 2), | 2938 CreateMockRead(*stream1_reply, 2), |
| 2939 CreateMockRead(*stream2_syn, 3), | 2939 CreateMockRead(*stream2_syn, 3), |
| 2940 CreateMockRead(*stream2_rst, 4), | 2940 CreateMockRead(*stream2_rst, 4), |
| 2941 CreateMockRead(*stream1_body, 5, false), | 2941 CreateMockRead(*stream1_body, 5, SYNCHRONOUS), |
| 2942 MockRead(true, ERR_IO_PENDING, 6), // Force a pause | 2942 MockRead(ASYNC, ERR_IO_PENDING, 6), // Force a pause |
| 2943 }; | 2943 }; |
| 2944 | 2944 |
| 2945 scoped_ptr<OrderedSocketData> data( | 2945 scoped_ptr<OrderedSocketData> data( |
| 2946 new OrderedSocketData(reads, arraysize(reads), | 2946 new OrderedSocketData(reads, arraysize(reads), |
| 2947 writes, arraysize(writes))); | 2947 writes, arraysize(writes))); |
| 2948 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 2948 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 2949 BoundNetLog(), GetParam()); | 2949 BoundNetLog(), GetParam()); |
| 2950 | 2950 |
| 2951 helper.RunPreTestSetup(); | 2951 helper.RunPreTestSetup(); |
| 2952 helper.AddData(data.get()); | 2952 helper.AddData(data.get()); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3008 scoped_ptr<spdy::SpdyFrame> | 3008 scoped_ptr<spdy::SpdyFrame> |
| 3009 stream3_syn(ConstructSpdyPush(NULL, | 3009 stream3_syn(ConstructSpdyPush(NULL, |
| 3010 0, | 3010 0, |
| 3011 4, | 3011 4, |
| 3012 1, | 3012 1, |
| 3013 "http://www.google.com/foo.dat")); | 3013 "http://www.google.com/foo.dat")); |
| 3014 MockRead reads[] = { | 3014 MockRead reads[] = { |
| 3015 CreateMockRead(*stream1_reply, 2), | 3015 CreateMockRead(*stream1_reply, 2), |
| 3016 CreateMockRead(*stream2_syn, 3), | 3016 CreateMockRead(*stream2_syn, 3), |
| 3017 CreateMockRead(*stream3_syn, 4), | 3017 CreateMockRead(*stream3_syn, 4), |
| 3018 CreateMockRead(*stream1_body, 6, false), | 3018 CreateMockRead(*stream1_body, 6, SYNCHRONOUS), |
| 3019 MockRead(true, reinterpret_cast<const char*>(kPushBodyFrame), | 3019 MockRead(ASYNC, reinterpret_cast<const char*>(kPushBodyFrame), |
| 3020 arraysize(kPushBodyFrame), 7), | 3020 arraysize(kPushBodyFrame), 7), |
| 3021 MockRead(true, ERR_IO_PENDING, 8), // Force a pause | 3021 MockRead(ASYNC, ERR_IO_PENDING, 8), // Force a pause |
| 3022 }; | 3022 }; |
| 3023 | 3023 |
| 3024 HttpResponseInfo response; | 3024 HttpResponseInfo response; |
| 3025 HttpResponseInfo response2; | 3025 HttpResponseInfo response2; |
| 3026 std::string expected_push_result("pushed"); | 3026 std::string expected_push_result("pushed"); |
| 3027 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( | 3027 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( |
| 3028 reads, | 3028 reads, |
| 3029 arraysize(reads), | 3029 arraysize(reads), |
| 3030 writes, | 3030 writes, |
| 3031 arraysize(writes))); | 3031 arraysize(writes))); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3065 stream1_reply(ConstructSpdyGetSynReply(NULL, 0, 1)); | 3065 stream1_reply(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 3066 scoped_ptr<spdy::SpdyFrame> | 3066 scoped_ptr<spdy::SpdyFrame> |
| 3067 stream2_syn(ConstructSpdyPush(NULL, | 3067 stream2_syn(ConstructSpdyPush(NULL, |
| 3068 0, | 3068 0, |
| 3069 2, | 3069 2, |
| 3070 1, | 3070 1, |
| 3071 "http://www.google.com/foo.dat")); | 3071 "http://www.google.com/foo.dat")); |
| 3072 MockRead reads[] = { | 3072 MockRead reads[] = { |
| 3073 CreateMockRead(*stream1_reply, 2), | 3073 CreateMockRead(*stream1_reply, 2), |
| 3074 CreateMockRead(*stream2_syn, 3), | 3074 CreateMockRead(*stream2_syn, 3), |
| 3075 MockRead(true, reinterpret_cast<const char*>(kPushBodyFrame1), | 3075 MockRead(ASYNC, reinterpret_cast<const char*>(kPushBodyFrame1), |
| 3076 arraysize(kPushBodyFrame1), 4), | 3076 arraysize(kPushBodyFrame1), 4), |
| 3077 MockRead(true, reinterpret_cast<const char*>(kPushBodyFrame2), | 3077 MockRead(ASYNC, reinterpret_cast<const char*>(kPushBodyFrame2), |
| 3078 arraysize(kPushBodyFrame2) - 1, 5), | 3078 arraysize(kPushBodyFrame2) - 1, 5), |
| 3079 MockRead(true, reinterpret_cast<const char*>(kPushBodyFrame3), | 3079 MockRead(ASYNC, reinterpret_cast<const char*>(kPushBodyFrame3), |
| 3080 arraysize(kPushBodyFrame3) - 1, 6), | 3080 arraysize(kPushBodyFrame3) - 1, 6), |
| 3081 MockRead(true, reinterpret_cast<const char*>(kPushBodyFrame4), | 3081 MockRead(ASYNC, reinterpret_cast<const char*>(kPushBodyFrame4), |
| 3082 arraysize(kPushBodyFrame4) - 1, 7), | 3082 arraysize(kPushBodyFrame4) - 1, 7), |
| 3083 CreateMockRead(*stream1_body, 8, false), | 3083 CreateMockRead(*stream1_body, 8, SYNCHRONOUS), |
| 3084 MockRead(true, ERR_IO_PENDING, 9), // Force a pause | 3084 MockRead(ASYNC, ERR_IO_PENDING, 9), // Force a pause |
| 3085 }; | 3085 }; |
| 3086 | 3086 |
| 3087 HttpResponseInfo response; | 3087 HttpResponseInfo response; |
| 3088 HttpResponseInfo response2; | 3088 HttpResponseInfo response2; |
| 3089 std::string expected_push_result("pushed my darling hello my baby"); | 3089 std::string expected_push_result("pushed my darling hello my baby"); |
| 3090 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( | 3090 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( |
| 3091 reads, | 3091 reads, |
| 3092 arraysize(reads), | 3092 arraysize(reads), |
| 3093 writes, | 3093 writes, |
| 3094 arraysize(writes))); | 3094 arraysize(writes))); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3130 stream1_reply(ConstructSpdyGetSynReply(NULL, 0, 1)); | 3130 stream1_reply(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 3131 scoped_ptr<spdy::SpdyFrame> | 3131 scoped_ptr<spdy::SpdyFrame> |
| 3132 stream2_syn(ConstructSpdyPush(NULL, | 3132 stream2_syn(ConstructSpdyPush(NULL, |
| 3133 0, | 3133 0, |
| 3134 2, | 3134 2, |
| 3135 1, | 3135 1, |
| 3136 "http://www.google.com/foo.dat")); | 3136 "http://www.google.com/foo.dat")); |
| 3137 MockRead reads[] = { | 3137 MockRead reads[] = { |
| 3138 CreateMockRead(*stream1_reply, 2), | 3138 CreateMockRead(*stream1_reply, 2), |
| 3139 CreateMockRead(*stream2_syn, 3), | 3139 CreateMockRead(*stream2_syn, 3), |
| 3140 MockRead(true, reinterpret_cast<const char*>(kPushBodyFrame1), | 3140 MockRead(ASYNC, reinterpret_cast<const char*>(kPushBodyFrame1), |
| 3141 arraysize(kPushBodyFrame1), 4), | 3141 arraysize(kPushBodyFrame1), 4), |
| 3142 MockRead(true, reinterpret_cast<const char*>(kPushBodyFrame2), | 3142 MockRead(ASYNC, reinterpret_cast<const char*>(kPushBodyFrame2), |
| 3143 arraysize(kPushBodyFrame2) - 1, 5), | 3143 arraysize(kPushBodyFrame2) - 1, 5), |
| 3144 MockRead(true, ERR_IO_PENDING, 6), // Force a pause | 3144 MockRead(ASYNC, ERR_IO_PENDING, 6), // Force a pause |
| 3145 MockRead(true, reinterpret_cast<const char*>(kPushBodyFrame3), | 3145 MockRead(ASYNC, reinterpret_cast<const char*>(kPushBodyFrame3), |
| 3146 arraysize(kPushBodyFrame3) - 1, 7), | 3146 arraysize(kPushBodyFrame3) - 1, 7), |
| 3147 MockRead(true, reinterpret_cast<const char*>(kPushBodyFrame4), | 3147 MockRead(ASYNC, reinterpret_cast<const char*>(kPushBodyFrame4), |
| 3148 arraysize(kPushBodyFrame4) - 1, 8), | 3148 arraysize(kPushBodyFrame4) - 1, 8), |
| 3149 CreateMockRead(*stream1_body.get(), 9, false), | 3149 CreateMockRead(*stream1_body.get(), 9, SYNCHRONOUS), |
| 3150 MockRead(true, ERR_IO_PENDING, 10) // Force a pause. | 3150 MockRead(ASYNC, ERR_IO_PENDING, 10) // Force a pause. |
| 3151 }; | 3151 }; |
| 3152 | 3152 |
| 3153 HttpResponseInfo response; | 3153 HttpResponseInfo response; |
| 3154 HttpResponseInfo response2; | 3154 HttpResponseInfo response2; |
| 3155 std::string expected_push_result("pushed my darling hello my baby"); | 3155 std::string expected_push_result("pushed my darling hello my baby"); |
| 3156 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( | 3156 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( |
| 3157 reads, | 3157 reads, |
| 3158 arraysize(reads), | 3158 arraysize(reads), |
| 3159 writes, | 3159 writes, |
| 3160 arraysize(writes))); | 3160 arraysize(writes))); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 3191 scoped_ptr<spdy::SpdyFrame> | 3191 scoped_ptr<spdy::SpdyFrame> |
| 3192 stream2_syn(ConstructSpdyPush(NULL, | 3192 stream2_syn(ConstructSpdyPush(NULL, |
| 3193 0, | 3193 0, |
| 3194 2, | 3194 2, |
| 3195 0, | 3195 0, |
| 3196 "http://www.google.com/foo.dat")); | 3196 "http://www.google.com/foo.dat")); |
| 3197 MockRead reads[] = { | 3197 MockRead reads[] = { |
| 3198 CreateMockRead(*stream1_reply, 2), | 3198 CreateMockRead(*stream1_reply, 2), |
| 3199 CreateMockRead(*stream2_syn, 3), | 3199 CreateMockRead(*stream2_syn, 3), |
| 3200 CreateMockRead(*stream1_body, 4), | 3200 CreateMockRead(*stream1_body, 4), |
| 3201 MockRead(true, ERR_IO_PENDING, 5) // Force a pause | 3201 MockRead(ASYNC, ERR_IO_PENDING, 5) // Force a pause |
| 3202 }; | 3202 }; |
| 3203 | 3203 |
| 3204 scoped_ptr<OrderedSocketData> data( | 3204 scoped_ptr<OrderedSocketData> data( |
| 3205 new OrderedSocketData(reads, arraysize(reads), | 3205 new OrderedSocketData(reads, arraysize(reads), |
| 3206 writes, arraysize(writes))); | 3206 writes, arraysize(writes))); |
| 3207 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 3207 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 3208 BoundNetLog(), GetParam()); | 3208 BoundNetLog(), GetParam()); |
| 3209 | 3209 |
| 3210 helper.RunPreTestSetup(); | 3210 helper.RunPreTestSetup(); |
| 3211 helper.AddData(data.get()); | 3211 helper.AddData(data.get()); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3253 scoped_ptr<spdy::SpdyFrame> | 3253 scoped_ptr<spdy::SpdyFrame> |
| 3254 stream2_syn(ConstructSpdyPush(NULL, | 3254 stream2_syn(ConstructSpdyPush(NULL, |
| 3255 0, | 3255 0, |
| 3256 2, | 3256 2, |
| 3257 9, | 3257 9, |
| 3258 "http://www.google.com/foo.dat")); | 3258 "http://www.google.com/foo.dat")); |
| 3259 MockRead reads[] = { | 3259 MockRead reads[] = { |
| 3260 CreateMockRead(*stream1_reply, 2), | 3260 CreateMockRead(*stream1_reply, 2), |
| 3261 CreateMockRead(*stream2_syn, 3), | 3261 CreateMockRead(*stream2_syn, 3), |
| 3262 CreateMockRead(*stream1_body, 4), | 3262 CreateMockRead(*stream1_body, 4), |
| 3263 MockRead(true, ERR_IO_PENDING, 5), // Force a pause | 3263 MockRead(ASYNC, ERR_IO_PENDING, 5), // Force a pause |
| 3264 }; | 3264 }; |
| 3265 | 3265 |
| 3266 scoped_ptr<OrderedSocketData> data( | 3266 scoped_ptr<OrderedSocketData> data( |
| 3267 new OrderedSocketData(reads, arraysize(reads), | 3267 new OrderedSocketData(reads, arraysize(reads), |
| 3268 writes, arraysize(writes))); | 3268 writes, arraysize(writes))); |
| 3269 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 3269 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 3270 BoundNetLog(), GetParam()); | 3270 BoundNetLog(), GetParam()); |
| 3271 | 3271 |
| 3272 helper.RunPreTestSetup(); | 3272 helper.RunPreTestSetup(); |
| 3273 helper.AddData(data.get()); | 3273 helper.AddData(data.get()); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3311 }; | 3311 }; |
| 3312 | 3312 |
| 3313 scoped_ptr<spdy::SpdyFrame> | 3313 scoped_ptr<spdy::SpdyFrame> |
| 3314 stream1_reply(ConstructSpdyGetSynReply(NULL, 0, 1)); | 3314 stream1_reply(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 3315 scoped_ptr<spdy::SpdyFrame> | 3315 scoped_ptr<spdy::SpdyFrame> |
| 3316 stream2_syn(ConstructSpdyPush(NULL, 0, 2, 1)); | 3316 stream2_syn(ConstructSpdyPush(NULL, 0, 2, 1)); |
| 3317 MockRead reads[] = { | 3317 MockRead reads[] = { |
| 3318 CreateMockRead(*stream1_reply, 2), | 3318 CreateMockRead(*stream1_reply, 2), |
| 3319 CreateMockRead(*stream2_syn, 3), | 3319 CreateMockRead(*stream2_syn, 3), |
| 3320 CreateMockRead(*stream1_body, 4), | 3320 CreateMockRead(*stream1_body, 4), |
| 3321 MockRead(true, ERR_IO_PENDING, 5) // Force a pause | 3321 MockRead(ASYNC, ERR_IO_PENDING, 5) // Force a pause |
| 3322 }; | 3322 }; |
| 3323 | 3323 |
| 3324 scoped_ptr<OrderedSocketData> data( | 3324 scoped_ptr<OrderedSocketData> data( |
| 3325 new OrderedSocketData(reads, arraysize(reads), | 3325 new OrderedSocketData(reads, arraysize(reads), |
| 3326 writes, arraysize(writes))); | 3326 writes, arraysize(writes))); |
| 3327 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 3327 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 3328 BoundNetLog(), GetParam()); | 3328 BoundNetLog(), GetParam()); |
| 3329 | 3329 |
| 3330 helper.RunPreTestSetup(); | 3330 helper.RunPreTestSetup(); |
| 3331 helper.AddData(data.get()); | 3331 helper.AddData(data.get()); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3400 MockWrite writes[] = { CreateMockWrite(*req) }; | 3400 MockWrite writes[] = { CreateMockWrite(*req) }; |
| 3401 | 3401 |
| 3402 scoped_ptr<spdy::SpdyFrame> resp( | 3402 scoped_ptr<spdy::SpdyFrame> resp( |
| 3403 ConstructSpdyGetSynReply(test_cases[i].extra_headers, | 3403 ConstructSpdyGetSynReply(test_cases[i].extra_headers, |
| 3404 test_cases[i].num_headers, | 3404 test_cases[i].num_headers, |
| 3405 1)); | 3405 1)); |
| 3406 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 3406 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 3407 MockRead reads[] = { | 3407 MockRead reads[] = { |
| 3408 CreateMockRead(*resp), | 3408 CreateMockRead(*resp), |
| 3409 CreateMockRead(*body), | 3409 CreateMockRead(*body), |
| 3410 MockRead(true, 0, 0) // EOF | 3410 MockRead(ASYNC, 0, 0) // EOF |
| 3411 }; | 3411 }; |
| 3412 | 3412 |
| 3413 scoped_ptr<DelayedSocketData> data( | 3413 scoped_ptr<DelayedSocketData> data( |
| 3414 new DelayedSocketData(1, reads, arraysize(reads), | 3414 new DelayedSocketData(1, reads, arraysize(reads), |
| 3415 writes, arraysize(writes))); | 3415 writes, arraysize(writes))); |
| 3416 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 3416 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 3417 BoundNetLog(), GetParam()); | 3417 BoundNetLog(), GetParam()); |
| 3418 helper.RunToCompletion(data.get()); | 3418 helper.RunToCompletion(data.get()); |
| 3419 TransactionHelperResult out = helper.output(); | 3419 TransactionHelperResult out = helper.output(); |
| 3420 | 3420 |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3539 ConstructSpdyPacket(*test_cases[i].syn_reply, | 3539 ConstructSpdyPacket(*test_cases[i].syn_reply, |
| 3540 test_cases[i].extra_headers[1], | 3540 test_cases[i].extra_headers[1], |
| 3541 test_cases[i].num_headers[1], | 3541 test_cases[i].num_headers[1], |
| 3542 NULL, | 3542 NULL, |
| 3543 0)); | 3543 0)); |
| 3544 | 3544 |
| 3545 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 3545 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 3546 MockRead reads[] = { | 3546 MockRead reads[] = { |
| 3547 CreateMockRead(*frame_reply), | 3547 CreateMockRead(*frame_reply), |
| 3548 CreateMockRead(*body), | 3548 CreateMockRead(*body), |
| 3549 MockRead(true, 0, 0) // EOF | 3549 MockRead(ASYNC, 0, 0) // EOF |
| 3550 }; | 3550 }; |
| 3551 | 3551 |
| 3552 // Attach the headers to the request. | 3552 // Attach the headers to the request. |
| 3553 int header_count = test_cases[i].num_headers[0]; | 3553 int header_count = test_cases[i].num_headers[0]; |
| 3554 | 3554 |
| 3555 HttpRequestInfo request = CreateGetRequest(); | 3555 HttpRequestInfo request = CreateGetRequest(); |
| 3556 for (int ct = 0; ct < header_count; ct++) { | 3556 for (int ct = 0; ct < header_count; ct++) { |
| 3557 const char* header_key = test_cases[i].extra_headers[0][ct * 2]; | 3557 const char* header_key = test_cases[i].extra_headers[0][ct * 2]; |
| 3558 const char* header_value = test_cases[i].extra_headers[0][ct * 2 + 1]; | 3558 const char* header_value = test_cases[i].extra_headers[0][ct * 2 + 1]; |
| 3559 request.extra_headers.SetHeader(header_key, header_value); | 3559 request.extra_headers.SetHeader(header_key, header_value); |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3655 | 3655 |
| 3656 scoped_ptr<spdy::SpdyFrame> resp( | 3656 scoped_ptr<spdy::SpdyFrame> resp( |
| 3657 ConstructSpdyPacket(kSynStartHeader, | 3657 ConstructSpdyPacket(kSynStartHeader, |
| 3658 NULL, 0, | 3658 NULL, 0, |
| 3659 test_cases[i].headers, | 3659 test_cases[i].headers, |
| 3660 test_cases[i].num_headers)); | 3660 test_cases[i].num_headers)); |
| 3661 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 3661 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 3662 MockRead reads[] = { | 3662 MockRead reads[] = { |
| 3663 CreateMockRead(*resp), | 3663 CreateMockRead(*resp), |
| 3664 CreateMockRead(*body), | 3664 CreateMockRead(*body), |
| 3665 MockRead(true, 0, 0) // EOF | 3665 MockRead(ASYNC, 0, 0) // EOF |
| 3666 }; | 3666 }; |
| 3667 | 3667 |
| 3668 scoped_ptr<DelayedSocketData> data( | 3668 scoped_ptr<DelayedSocketData> data( |
| 3669 new DelayedSocketData(1, reads, arraysize(reads), | 3669 new DelayedSocketData(1, reads, arraysize(reads), |
| 3670 writes, arraysize(writes))); | 3670 writes, arraysize(writes))); |
| 3671 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 3671 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 3672 BoundNetLog(), GetParam()); | 3672 BoundNetLog(), GetParam()); |
| 3673 helper.RunToCompletion(data.get()); | 3673 helper.RunToCompletion(data.get()); |
| 3674 TransactionHelperResult out = helper.output(); | 3674 TransactionHelperResult out = helper.output(); |
| 3675 EXPECT_EQ(ERR_INCOMPLETE_SPDY_HEADERS, out.rv); | 3675 EXPECT_EQ(ERR_INCOMPLETE_SPDY_HEADERS, out.rv); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 3687 const spdy::SpdyFrame* syn_reply; | 3687 const spdy::SpdyFrame* syn_reply; |
| 3688 } test_cases[] = { | 3688 } test_cases[] = { |
| 3689 { syn_reply_wrong_length.get(), }, | 3689 { syn_reply_wrong_length.get(), }, |
| 3690 }; | 3690 }; |
| 3691 | 3691 |
| 3692 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { | 3692 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { |
| 3693 scoped_ptr<spdy::SpdyFrame> req( | 3693 scoped_ptr<spdy::SpdyFrame> req( |
| 3694 ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 3694 ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 3695 MockWrite writes[] = { | 3695 MockWrite writes[] = { |
| 3696 CreateMockWrite(*req), | 3696 CreateMockWrite(*req), |
| 3697 MockWrite(true, 0, 0) // EOF | 3697 MockWrite(ASYNC, 0, 0) // EOF |
| 3698 }; | 3698 }; |
| 3699 | 3699 |
| 3700 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 3700 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 3701 MockRead reads[] = { | 3701 MockRead reads[] = { |
| 3702 CreateMockRead(*test_cases[i].syn_reply), | 3702 CreateMockRead(*test_cases[i].syn_reply), |
| 3703 CreateMockRead(*body), | 3703 CreateMockRead(*body), |
| 3704 MockRead(true, 0, 0) // EOF | 3704 MockRead(ASYNC, 0, 0) // EOF |
| 3705 }; | 3705 }; |
| 3706 | 3706 |
| 3707 scoped_ptr<DelayedSocketData> data( | 3707 scoped_ptr<DelayedSocketData> data( |
| 3708 new DelayedSocketData(1, reads, arraysize(reads), | 3708 new DelayedSocketData(1, reads, arraysize(reads), |
| 3709 writes, arraysize(writes))); | 3709 writes, arraysize(writes))); |
| 3710 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 3710 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 3711 BoundNetLog(), GetParam()); | 3711 BoundNetLog(), GetParam()); |
| 3712 helper.RunToCompletion(data.get()); | 3712 helper.RunToCompletion(data.get()); |
| 3713 TransactionHelperResult out = helper.output(); | 3713 TransactionHelperResult out = helper.output(); |
| 3714 EXPECT_EQ(ERR_SPDY_PROTOCOL_ERROR, out.rv); | 3714 EXPECT_EQ(ERR_SPDY_PROTOCOL_ERROR, out.rv); |
| 3715 } | 3715 } |
| 3716 } | 3716 } |
| 3717 | 3717 |
| 3718 // Test that we shutdown correctly on write errors. | 3718 // Test that we shutdown correctly on write errors. |
| 3719 TEST_P(SpdyNetworkTransactionTest, WriteError) { | 3719 TEST_P(SpdyNetworkTransactionTest, WriteError) { |
| 3720 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 3720 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 3721 MockWrite writes[] = { | 3721 MockWrite writes[] = { |
| 3722 // We'll write 10 bytes successfully | 3722 // We'll write 10 bytes successfully |
| 3723 MockWrite(true, req->data(), 10), | 3723 MockWrite(ASYNC, req->data(), 10), |
| 3724 // Followed by ERROR! | 3724 // Followed by ERROR! |
| 3725 MockWrite(true, ERR_FAILED), | 3725 MockWrite(ASYNC, ERR_FAILED), |
| 3726 }; | 3726 }; |
| 3727 | 3727 |
| 3728 scoped_ptr<DelayedSocketData> data( | 3728 scoped_ptr<DelayedSocketData> data( |
| 3729 new DelayedSocketData(2, NULL, 0, | 3729 new DelayedSocketData(2, NULL, 0, |
| 3730 writes, arraysize(writes))); | 3730 writes, arraysize(writes))); |
| 3731 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 3731 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 3732 BoundNetLog(), GetParam()); | 3732 BoundNetLog(), GetParam()); |
| 3733 helper.RunToCompletion(data.get()); | 3733 helper.RunToCompletion(data.get()); |
| 3734 TransactionHelperResult out = helper.output(); | 3734 TransactionHelperResult out = helper.output(); |
| 3735 EXPECT_EQ(ERR_FAILED, out.rv); | 3735 EXPECT_EQ(ERR_FAILED, out.rv); |
| 3736 data->Reset(); | 3736 data->Reset(); |
| 3737 } | 3737 } |
| 3738 | 3738 |
| 3739 // Test that partial writes work. | 3739 // Test that partial writes work. |
| 3740 TEST_P(SpdyNetworkTransactionTest, PartialWrite) { | 3740 TEST_P(SpdyNetworkTransactionTest, PartialWrite) { |
| 3741 // Chop the SYN_STREAM frame into 5 chunks. | 3741 // Chop the SYN_STREAM frame into 5 chunks. |
| 3742 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 3742 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 3743 const int kChunks = 5; | 3743 const int kChunks = 5; |
| 3744 scoped_array<MockWrite> writes(ChopWriteFrame(*req.get(), kChunks)); | 3744 scoped_array<MockWrite> writes(ChopWriteFrame(*req.get(), kChunks)); |
| 3745 | 3745 |
| 3746 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 3746 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 3747 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 3747 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 3748 MockRead reads[] = { | 3748 MockRead reads[] = { |
| 3749 CreateMockRead(*resp), | 3749 CreateMockRead(*resp), |
| 3750 CreateMockRead(*body), | 3750 CreateMockRead(*body), |
| 3751 MockRead(true, 0, 0) // EOF | 3751 MockRead(ASYNC, 0, 0) // EOF |
| 3752 }; | 3752 }; |
| 3753 | 3753 |
| 3754 scoped_ptr<DelayedSocketData> data( | 3754 scoped_ptr<DelayedSocketData> data( |
| 3755 new DelayedSocketData(kChunks, reads, arraysize(reads), | 3755 new DelayedSocketData(kChunks, reads, arraysize(reads), |
| 3756 writes.get(), kChunks)); | 3756 writes.get(), kChunks)); |
| 3757 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 3757 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 3758 BoundNetLog(), GetParam()); | 3758 BoundNetLog(), GetParam()); |
| 3759 helper.RunToCompletion(data.get()); | 3759 helper.RunToCompletion(data.get()); |
| 3760 TransactionHelperResult out = helper.output(); | 3760 TransactionHelperResult out = helper.output(); |
| 3761 EXPECT_EQ(OK, out.rv); | 3761 EXPECT_EQ(OK, out.rv); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3803 }; | 3803 }; |
| 3804 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(kExtraHeaders, 1, false, 1, | 3804 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(kExtraHeaders, 1, false, 1, |
| 3805 LOWEST)); | 3805 LOWEST)); |
| 3806 MockWrite writes[] = { CreateMockWrite(*req) }; | 3806 MockWrite writes[] = { CreateMockWrite(*req) }; |
| 3807 | 3807 |
| 3808 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 3808 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 3809 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 3809 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 3810 MockRead reads[] = { | 3810 MockRead reads[] = { |
| 3811 CreateMockRead(*resp), | 3811 CreateMockRead(*resp), |
| 3812 CreateMockRead(*body), | 3812 CreateMockRead(*body), |
| 3813 MockRead(true, 0, 0) // EOF | 3813 MockRead(ASYNC, 0, 0) // EOF |
| 3814 }; | 3814 }; |
| 3815 | 3815 |
| 3816 net::CapturingBoundNetLog log(net::CapturingNetLog::kUnbounded); | 3816 net::CapturingBoundNetLog log(net::CapturingNetLog::kUnbounded); |
| 3817 | 3817 |
| 3818 scoped_ptr<DelayedSocketData> data( | 3818 scoped_ptr<DelayedSocketData> data( |
| 3819 new DelayedSocketData(1, reads, arraysize(reads), | 3819 new DelayedSocketData(1, reads, arraysize(reads), |
| 3820 writes, arraysize(writes))); | 3820 writes, arraysize(writes))); |
| 3821 NormalSpdyTransactionHelper helper(CreateGetRequestWithUserAgent(), | 3821 NormalSpdyTransactionHelper helper(CreateGetRequestWithUserAgent(), |
| 3822 log.bound(), GetParam()); | 3822 log.bound(), GetParam()); |
| 3823 helper.RunToCompletion(data.get()); | 3823 helper.RunToCompletion(data.get()); |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3905 char combined_data_frames[100]; | 3905 char combined_data_frames[100]; |
| 3906 int combined_data_frames_len = | 3906 int combined_data_frames_len = |
| 3907 CombineFrames(data_frames, arraysize(data_frames), | 3907 CombineFrames(data_frames, arraysize(data_frames), |
| 3908 combined_data_frames, arraysize(combined_data_frames)); | 3908 combined_data_frames, arraysize(combined_data_frames)); |
| 3909 scoped_ptr<spdy::SpdyFrame> last_frame( | 3909 scoped_ptr<spdy::SpdyFrame> last_frame( |
| 3910 framer.CreateDataFrame(1, "d", 1, spdy::DATA_FLAG_FIN)); | 3910 framer.CreateDataFrame(1, "d", 1, spdy::DATA_FLAG_FIN)); |
| 3911 | 3911 |
| 3912 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 3912 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 3913 MockRead reads[] = { | 3913 MockRead reads[] = { |
| 3914 CreateMockRead(*resp), | 3914 CreateMockRead(*resp), |
| 3915 MockRead(true, ERR_IO_PENDING), // Force a pause | 3915 MockRead(ASYNC, ERR_IO_PENDING), // Force a pause |
| 3916 MockRead(true, combined_data_frames, combined_data_frames_len), | 3916 MockRead(ASYNC, combined_data_frames, combined_data_frames_len), |
| 3917 MockRead(true, ERR_IO_PENDING), // Force a pause | 3917 MockRead(ASYNC, ERR_IO_PENDING), // Force a pause |
| 3918 CreateMockRead(*last_frame), | 3918 CreateMockRead(*last_frame), |
| 3919 MockRead(true, 0, 0) // EOF | 3919 MockRead(ASYNC, 0, 0) // EOF |
| 3920 }; | 3920 }; |
| 3921 | 3921 |
| 3922 scoped_ptr<DelayedSocketData> data( | 3922 scoped_ptr<DelayedSocketData> data( |
| 3923 new DelayedSocketData(1, reads, arraysize(reads), | 3923 new DelayedSocketData(1, reads, arraysize(reads), |
| 3924 writes, arraysize(writes))); | 3924 writes, arraysize(writes))); |
| 3925 | 3925 |
| 3926 | 3926 |
| 3927 TestCompletionCallback callback; | 3927 TestCompletionCallback callback; |
| 3928 | 3928 |
| 3929 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 3929 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4004 data_frame_fin.get() | 4004 data_frame_fin.get() |
| 4005 }; | 4005 }; |
| 4006 char combined_data_frames[100]; | 4006 char combined_data_frames[100]; |
| 4007 int combined_data_frames_len = | 4007 int combined_data_frames_len = |
| 4008 CombineFrames(data_frames, arraysize(data_frames), | 4008 CombineFrames(data_frames, arraysize(data_frames), |
| 4009 combined_data_frames, arraysize(combined_data_frames)); | 4009 combined_data_frames, arraysize(combined_data_frames)); |
| 4010 | 4010 |
| 4011 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 4011 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 4012 MockRead reads[] = { | 4012 MockRead reads[] = { |
| 4013 CreateMockRead(*resp), | 4013 CreateMockRead(*resp), |
| 4014 MockRead(true, ERR_IO_PENDING), // Force a pause | 4014 MockRead(ASYNC, ERR_IO_PENDING), // Force a pause |
| 4015 MockRead(true, combined_data_frames, combined_data_frames_len), | 4015 MockRead(ASYNC, combined_data_frames, combined_data_frames_len), |
| 4016 MockRead(true, 0, 0) // EOF | 4016 MockRead(ASYNC, 0, 0) // EOF |
| 4017 }; | 4017 }; |
| 4018 | 4018 |
| 4019 scoped_ptr<DelayedSocketData> data( | 4019 scoped_ptr<DelayedSocketData> data( |
| 4020 new DelayedSocketData(1, reads, arraysize(reads), | 4020 new DelayedSocketData(1, reads, arraysize(reads), |
| 4021 writes, arraysize(writes))); | 4021 writes, arraysize(writes))); |
| 4022 | 4022 |
| 4023 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 4023 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 4024 BoundNetLog(), GetParam()); | 4024 BoundNetLog(), GetParam()); |
| 4025 helper.RunPreTestSetup(); | 4025 helper.RunPreTestSetup(); |
| 4026 helper.AddData(data.get()); | 4026 helper.AddData(data.get()); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4103 data_frame.get(), | 4103 data_frame.get(), |
| 4104 data_frame.get(), | 4104 data_frame.get(), |
| 4105 data_frame_fin.get() | 4105 data_frame_fin.get() |
| 4106 }; | 4106 }; |
| 4107 char combined_frames[200]; | 4107 char combined_frames[200]; |
| 4108 int combined_frames_len = | 4108 int combined_frames_len = |
| 4109 CombineFrames(frames, arraysize(frames), | 4109 CombineFrames(frames, arraysize(frames), |
| 4110 combined_frames, arraysize(combined_frames)); | 4110 combined_frames, arraysize(combined_frames)); |
| 4111 | 4111 |
| 4112 MockRead reads[] = { | 4112 MockRead reads[] = { |
| 4113 MockRead(true, combined_frames, combined_frames_len), | 4113 MockRead(ASYNC, combined_frames, combined_frames_len), |
| 4114 MockRead(true, 0, 0) // EOF | 4114 MockRead(ASYNC, 0, 0) // EOF |
| 4115 }; | 4115 }; |
| 4116 | 4116 |
| 4117 scoped_ptr<DelayedSocketData> data( | 4117 scoped_ptr<DelayedSocketData> data( |
| 4118 new DelayedSocketData(1, reads, arraysize(reads), | 4118 new DelayedSocketData(1, reads, arraysize(reads), |
| 4119 writes, arraysize(writes))); | 4119 writes, arraysize(writes))); |
| 4120 | 4120 |
| 4121 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 4121 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 4122 BoundNetLog(), GetParam()); | 4122 BoundNetLog(), GetParam()); |
| 4123 helper.RunPreTestSetup(); | 4123 helper.RunPreTestSetup(); |
| 4124 helper.AddData(data.get()); | 4124 helper.AddData(data.get()); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4191 data_frame.get(), | 4191 data_frame.get(), |
| 4192 data_frame.get() | 4192 data_frame.get() |
| 4193 }; | 4193 }; |
| 4194 char combined_data_frames[100]; | 4194 char combined_data_frames[100]; |
| 4195 int combined_data_frames_len = | 4195 int combined_data_frames_len = |
| 4196 CombineFrames(data_frames, arraysize(data_frames), | 4196 CombineFrames(data_frames, arraysize(data_frames), |
| 4197 combined_data_frames, arraysize(combined_data_frames)); | 4197 combined_data_frames, arraysize(combined_data_frames)); |
| 4198 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 4198 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 4199 MockRead reads[] = { | 4199 MockRead reads[] = { |
| 4200 CreateMockRead(*resp), | 4200 CreateMockRead(*resp), |
| 4201 MockRead(true, ERR_IO_PENDING), // Force a wait | 4201 MockRead(ASYNC, ERR_IO_PENDING), // Force a wait |
| 4202 MockRead(true, combined_data_frames, combined_data_frames_len), | 4202 MockRead(ASYNC, combined_data_frames, combined_data_frames_len), |
| 4203 MockRead(true, 0, 0) // EOF | 4203 MockRead(ASYNC, 0, 0) // EOF |
| 4204 }; | 4204 }; |
| 4205 | 4205 |
| 4206 scoped_ptr<DelayedSocketData> data( | 4206 scoped_ptr<DelayedSocketData> data( |
| 4207 new DelayedSocketData(1, reads, arraysize(reads), | 4207 new DelayedSocketData(1, reads, arraysize(reads), |
| 4208 writes, arraysize(writes))); | 4208 writes, arraysize(writes))); |
| 4209 | 4209 |
| 4210 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 4210 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 4211 BoundNetLog(), GetParam()); | 4211 BoundNetLog(), GetParam()); |
| 4212 helper.RunPreTestSetup(); | 4212 helper.RunPreTestSetup(); |
| 4213 helper.AddData(data.get()); | 4213 helper.AddData(data.get()); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4272 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 4272 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 4273 MockWrite writes[] = { CreateMockWrite(*req) }; | 4273 MockWrite writes[] = { CreateMockWrite(*req) }; |
| 4274 | 4274 |
| 4275 // NOTE: We don't FIN the stream. | 4275 // NOTE: We don't FIN the stream. |
| 4276 scoped_ptr<spdy::SpdyFrame> data_frame( | 4276 scoped_ptr<spdy::SpdyFrame> data_frame( |
| 4277 framer.CreateDataFrame(1, "message", 7, spdy::DATA_FLAG_NONE)); | 4277 framer.CreateDataFrame(1, "message", 7, spdy::DATA_FLAG_NONE)); |
| 4278 | 4278 |
| 4279 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 4279 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 4280 MockRead reads[] = { | 4280 MockRead reads[] = { |
| 4281 CreateMockRead(*resp), | 4281 CreateMockRead(*resp), |
| 4282 MockRead(true, ERR_IO_PENDING), // Force a wait | 4282 MockRead(ASYNC, ERR_IO_PENDING), // Force a wait |
| 4283 CreateMockRead(*data_frame), | 4283 CreateMockRead(*data_frame), |
| 4284 MockRead(true, 0, 0) // EOF | 4284 MockRead(ASYNC, 0, 0) // EOF |
| 4285 }; | 4285 }; |
| 4286 | 4286 |
| 4287 scoped_ptr<DelayedSocketData> data( | 4287 scoped_ptr<DelayedSocketData> data( |
| 4288 new DelayedSocketData(1, reads, arraysize(reads), | 4288 new DelayedSocketData(1, reads, arraysize(reads), |
| 4289 writes, arraysize(writes))); | 4289 writes, arraysize(writes))); |
| 4290 | 4290 |
| 4291 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 4291 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 4292 BoundNetLog(), GetParam()); | 4292 BoundNetLog(), GetParam()); |
| 4293 helper.RunPreTestSetup(); | 4293 helper.RunPreTestSetup(); |
| 4294 helper.AddData(data.get()); | 4294 helper.AddData(data.get()); |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4403 setting.set_id(kSampleId3); | 4403 setting.set_id(kSampleId3); |
| 4404 settings.push_back(std::make_pair(setting, kSampleValue3)); | 4404 settings.push_back(std::make_pair(setting, kSampleValue3)); |
| 4405 settings_frame.reset(ConstructSpdySettings(settings)); | 4405 settings_frame.reset(ConstructSpdySettings(settings)); |
| 4406 } | 4406 } |
| 4407 | 4407 |
| 4408 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 4408 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 4409 MockRead reads[] = { | 4409 MockRead reads[] = { |
| 4410 CreateMockRead(*reply), | 4410 CreateMockRead(*reply), |
| 4411 CreateMockRead(*body), | 4411 CreateMockRead(*body), |
| 4412 CreateMockRead(*settings_frame), | 4412 CreateMockRead(*settings_frame), |
| 4413 MockRead(true, 0, 0) // EOF | 4413 MockRead(ASYNC, 0, 0) // EOF |
| 4414 }; | 4414 }; |
| 4415 | 4415 |
| 4416 scoped_ptr<DelayedSocketData> data( | 4416 scoped_ptr<DelayedSocketData> data( |
| 4417 new DelayedSocketData(1, reads, arraysize(reads), | 4417 new DelayedSocketData(1, reads, arraysize(reads), |
| 4418 writes, arraysize(writes))); | 4418 writes, arraysize(writes))); |
| 4419 helper.AddData(data.get()); | 4419 helper.AddData(data.get()); |
| 4420 helper.RunDefaultTest(); | 4420 helper.RunDefaultTest(); |
| 4421 helper.VerifyDataConsumed(); | 4421 helper.VerifyDataConsumed(); |
| 4422 TransactionHelperResult out = helper.output(); | 4422 TransactionHelperResult out = helper.output(); |
| 4423 EXPECT_EQ(OK, out.rv); | 4423 EXPECT_EQ(OK, out.rv); |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4521 ConstructSpdyPacket(kSynReplyInfo, | 4521 ConstructSpdyPacket(kSynReplyInfo, |
| 4522 kExtraHeaders, | 4522 kExtraHeaders, |
| 4523 arraysize(kExtraHeaders) / 2, | 4523 arraysize(kExtraHeaders) / 2, |
| 4524 NULL, | 4524 NULL, |
| 4525 0)); | 4525 0)); |
| 4526 | 4526 |
| 4527 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 4527 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 4528 MockRead reads[] = { | 4528 MockRead reads[] = { |
| 4529 CreateMockRead(*reply), | 4529 CreateMockRead(*reply), |
| 4530 CreateMockRead(*body), | 4530 CreateMockRead(*body), |
| 4531 MockRead(true, 0, 0) // EOF | 4531 MockRead(ASYNC, 0, 0) // EOF |
| 4532 }; | 4532 }; |
| 4533 | 4533 |
| 4534 scoped_ptr<DelayedSocketData> data( | 4534 scoped_ptr<DelayedSocketData> data( |
| 4535 new DelayedSocketData(2, reads, arraysize(reads), | 4535 new DelayedSocketData(2, reads, arraysize(reads), |
| 4536 writes, arraysize(writes))); | 4536 writes, arraysize(writes))); |
| 4537 helper.AddData(data.get()); | 4537 helper.AddData(data.get()); |
| 4538 helper.RunDefaultTest(); | 4538 helper.RunDefaultTest(); |
| 4539 helper.VerifyDataConsumed(); | 4539 helper.VerifyDataConsumed(); |
| 4540 TransactionHelperResult out = helper.output(); | 4540 TransactionHelperResult out = helper.output(); |
| 4541 EXPECT_EQ(OK, out.rv); | 4541 EXPECT_EQ(OK, out.rv); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 4565 } | 4565 } |
| 4566 } | 4566 } |
| 4567 | 4567 |
| 4568 TEST_P(SpdyNetworkTransactionTest, GoAwayWithActiveStream) { | 4568 TEST_P(SpdyNetworkTransactionTest, GoAwayWithActiveStream) { |
| 4569 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 4569 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 4570 MockWrite writes[] = { CreateMockWrite(*req) }; | 4570 MockWrite writes[] = { CreateMockWrite(*req) }; |
| 4571 | 4571 |
| 4572 scoped_ptr<spdy::SpdyFrame> go_away(ConstructSpdyGoAway()); | 4572 scoped_ptr<spdy::SpdyFrame> go_away(ConstructSpdyGoAway()); |
| 4573 MockRead reads[] = { | 4573 MockRead reads[] = { |
| 4574 CreateMockRead(*go_away), | 4574 CreateMockRead(*go_away), |
| 4575 MockRead(true, 0, 0), // EOF | 4575 MockRead(ASYNC, 0, 0), // EOF |
| 4576 }; | 4576 }; |
| 4577 | 4577 |
| 4578 scoped_ptr<DelayedSocketData> data( | 4578 scoped_ptr<DelayedSocketData> data( |
| 4579 new DelayedSocketData(1, reads, arraysize(reads), | 4579 new DelayedSocketData(1, reads, arraysize(reads), |
| 4580 writes, arraysize(writes))); | 4580 writes, arraysize(writes))); |
| 4581 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 4581 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 4582 BoundNetLog(), GetParam()); | 4582 BoundNetLog(), GetParam()); |
| 4583 helper.AddData(data.get()); | 4583 helper.AddData(data.get()); |
| 4584 helper.RunToCompletion(data.get()); | 4584 helper.RunToCompletion(data.get()); |
| 4585 TransactionHelperResult out = helper.output(); | 4585 TransactionHelperResult out = helper.output(); |
| 4586 EXPECT_EQ(ERR_ABORTED, out.rv); | 4586 EXPECT_EQ(ERR_ABORTED, out.rv); |
| 4587 } | 4587 } |
| 4588 | 4588 |
| 4589 TEST_P(SpdyNetworkTransactionTest, CloseWithActiveStream) { | 4589 TEST_P(SpdyNetworkTransactionTest, CloseWithActiveStream) { |
| 4590 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 4590 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 4591 MockWrite writes[] = { CreateMockWrite(*req) }; | 4591 MockWrite writes[] = { CreateMockWrite(*req) }; |
| 4592 | 4592 |
| 4593 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 4593 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 4594 MockRead reads[] = { | 4594 MockRead reads[] = { |
| 4595 CreateMockRead(*resp), | 4595 CreateMockRead(*resp), |
| 4596 MockRead(false, 0, 0) // EOF | 4596 MockRead(SYNCHRONOUS, 0, 0) // EOF |
| 4597 }; | 4597 }; |
| 4598 | 4598 |
| 4599 scoped_ptr<DelayedSocketData> data( | 4599 scoped_ptr<DelayedSocketData> data( |
| 4600 new DelayedSocketData(1, reads, arraysize(reads), | 4600 new DelayedSocketData(1, reads, arraysize(reads), |
| 4601 writes, arraysize(writes))); | 4601 writes, arraysize(writes))); |
| 4602 BoundNetLog log; | 4602 BoundNetLog log; |
| 4603 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 4603 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 4604 log, GetParam()); | 4604 log, GetParam()); |
| 4605 helper.RunPreTestSetup(); | 4605 helper.RunPreTestSetup(); |
| 4606 helper.AddData(data.get()); | 4606 helper.AddData(data.get()); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4640 "Proxy-Connection: keep-alive\r\n\r\n"}; | 4640 "Proxy-Connection: keep-alive\r\n\r\n"}; |
| 4641 const char kConnect80[] = {"CONNECT www.google.com:80 HTTP/1.1\r\n" | 4641 const char kConnect80[] = {"CONNECT www.google.com:80 HTTP/1.1\r\n" |
| 4642 "Host: www.google.com\r\n" | 4642 "Host: www.google.com\r\n" |
| 4643 "Proxy-Connection: keep-alive\r\n\r\n"}; | 4643 "Proxy-Connection: keep-alive\r\n\r\n"}; |
| 4644 const char kHTTP200[] = {"HTTP/1.1 200 OK\r\n\r\n"}; | 4644 const char kHTTP200[] = {"HTTP/1.1 200 OK\r\n\r\n"}; |
| 4645 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 4645 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 4646 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 4646 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 4647 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 4647 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 4648 | 4648 |
| 4649 MockWrite writes_SPDYNPN[] = { | 4649 MockWrite writes_SPDYNPN[] = { |
| 4650 MockWrite(false, kConnect443, arraysize(kConnect443) - 1, 0), | 4650 MockWrite(SYNCHRONOUS, kConnect443, arraysize(kConnect443) - 1, 0), |
| 4651 CreateMockWrite(*req, 2), | 4651 CreateMockWrite(*req, 2), |
| 4652 }; | 4652 }; |
| 4653 MockRead reads_SPDYNPN[] = { | 4653 MockRead reads_SPDYNPN[] = { |
| 4654 MockRead(false, kHTTP200, arraysize(kHTTP200) - 1, 1), | 4654 MockRead(SYNCHRONOUS, kHTTP200, arraysize(kHTTP200) - 1, 1), |
| 4655 CreateMockRead(*resp, 3), | 4655 CreateMockRead(*resp, 3), |
| 4656 CreateMockRead(*body.get(), 4), | 4656 CreateMockRead(*body.get(), 4), |
| 4657 MockRead(true, 0, 0, 5), | 4657 MockRead(ASYNC, 0, 0, 5), |
| 4658 }; | 4658 }; |
| 4659 | 4659 |
| 4660 MockWrite writes_SPDYSSL[] = { | 4660 MockWrite writes_SPDYSSL[] = { |
| 4661 MockWrite(false, kConnect80, arraysize(kConnect80) - 1, 0), | 4661 MockWrite(SYNCHRONOUS, kConnect80, arraysize(kConnect80) - 1, 0), |
| 4662 CreateMockWrite(*req, 2), | 4662 CreateMockWrite(*req, 2), |
| 4663 }; | 4663 }; |
| 4664 MockRead reads_SPDYSSL[] = { | 4664 MockRead reads_SPDYSSL[] = { |
| 4665 MockRead(false, kHTTP200, arraysize(kHTTP200) - 1, 1), | 4665 MockRead(SYNCHRONOUS, kHTTP200, arraysize(kHTTP200) - 1, 1), |
| 4666 CreateMockRead(*resp, 3), | 4666 CreateMockRead(*resp, 3), |
| 4667 CreateMockRead(*body.get(), 4), | 4667 CreateMockRead(*body.get(), 4), |
| 4668 MockRead(true, 0, 0, 5), | 4668 MockRead(ASYNC, 0, 0, 5), |
| 4669 }; | 4669 }; |
| 4670 | 4670 |
| 4671 MockWrite writes_SPDYNOSSL[] = { | 4671 MockWrite writes_SPDYNOSSL[] = { |
| 4672 CreateMockWrite(*req, 0), | 4672 CreateMockWrite(*req, 0), |
| 4673 }; | 4673 }; |
| 4674 | 4674 |
| 4675 MockRead reads_SPDYNOSSL[] = { | 4675 MockRead reads_SPDYNOSSL[] = { |
| 4676 CreateMockRead(*resp, 1), | 4676 CreateMockRead(*resp, 1), |
| 4677 CreateMockRead(*body.get(), 2), | 4677 CreateMockRead(*body.get(), 2), |
| 4678 MockRead(true, 0, 0, 3), | 4678 MockRead(ASYNC, 0, 0, 3), |
| 4679 }; | 4679 }; |
| 4680 | 4680 |
| 4681 scoped_ptr<OrderedSocketData> data; | 4681 scoped_ptr<OrderedSocketData> data; |
| 4682 switch(GetParam()) { | 4682 switch(GetParam()) { |
| 4683 case SPDYNOSSL: | 4683 case SPDYNOSSL: |
| 4684 data.reset(new OrderedSocketData(reads_SPDYNOSSL, | 4684 data.reset(new OrderedSocketData(reads_SPDYNOSSL, |
| 4685 arraysize(reads_SPDYNOSSL), | 4685 arraysize(reads_SPDYNOSSL), |
| 4686 writes_SPDYNOSSL, | 4686 writes_SPDYNOSSL, |
| 4687 arraysize(writes_SPDYNOSSL))); | 4687 arraysize(writes_SPDYNOSSL))); |
| 4688 break; | 4688 break; |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4748 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 4748 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 4749 MockWrite writes[] = { | 4749 MockWrite writes[] = { |
| 4750 CreateMockWrite(*req, 1), | 4750 CreateMockWrite(*req, 1), |
| 4751 }; | 4751 }; |
| 4752 | 4752 |
| 4753 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 4753 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 4754 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 4754 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 4755 MockRead reads[] = { | 4755 MockRead reads[] = { |
| 4756 CreateMockRead(*resp, 2), | 4756 CreateMockRead(*resp, 2), |
| 4757 CreateMockRead(*body, 3), | 4757 CreateMockRead(*body, 3), |
| 4758 MockRead(true, ERR_IO_PENDING, 4), // Force a pause | 4758 MockRead(ASYNC, ERR_IO_PENDING, 4), // Force a pause |
| 4759 MockRead(true, 0, 5) // EOF | 4759 MockRead(ASYNC, 0, 5) // EOF |
| 4760 }; | 4760 }; |
| 4761 scoped_ptr<OrderedSocketData> data( | 4761 scoped_ptr<OrderedSocketData> data( |
| 4762 new OrderedSocketData(reads, arraysize(reads), | 4762 new OrderedSocketData(reads, arraysize(reads), |
| 4763 writes, arraysize(writes))); | 4763 writes, arraysize(writes))); |
| 4764 helper.AddData(data.get()); | 4764 helper.AddData(data.get()); |
| 4765 HttpNetworkTransaction* trans = helper.trans(); | 4765 HttpNetworkTransaction* trans = helper.trans(); |
| 4766 | 4766 |
| 4767 TestCompletionCallback callback; | 4767 TestCompletionCallback callback; |
| 4768 TransactionHelperResult out; | 4768 TransactionHelperResult out; |
| 4769 out.rv = trans->Start( | 4769 out.rv = trans->Start( |
| (...skipping 29 matching lines...) Expand all Loading... |
| 4799 const char kConnect80[] = {"CONNECT www.google.com:80 HTTP/1.1\r\n" | 4799 const char kConnect80[] = {"CONNECT www.google.com:80 HTTP/1.1\r\n" |
| 4800 "Host: www.google.com\r\n" | 4800 "Host: www.google.com\r\n" |
| 4801 "Proxy-Connection: keep-alive\r\n\r\n"}; | 4801 "Proxy-Connection: keep-alive\r\n\r\n"}; |
| 4802 const char kHTTP200[] = {"HTTP/1.1 200 OK\r\n\r\n"}; | 4802 const char kHTTP200[] = {"HTTP/1.1 200 OK\r\n\r\n"}; |
| 4803 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyGet( | 4803 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyGet( |
| 4804 "http://www.google.com/foo.dat", false, 1, LOWEST)); | 4804 "http://www.google.com/foo.dat", false, 1, LOWEST)); |
| 4805 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 1)); | 4805 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 4806 scoped_ptr<spdy::SpdyFrame> body2(ConstructSpdyBodyFrame(1, true)); | 4806 scoped_ptr<spdy::SpdyFrame> body2(ConstructSpdyBodyFrame(1, true)); |
| 4807 | 4807 |
| 4808 MockWrite writes_SPDYNPN[] = { | 4808 MockWrite writes_SPDYNPN[] = { |
| 4809 MockWrite(false, kConnect443, arraysize(kConnect443) - 1, 0), | 4809 MockWrite(SYNCHRONOUS, kConnect443, arraysize(kConnect443) - 1, 0), |
| 4810 CreateMockWrite(*req2, 2), | 4810 CreateMockWrite(*req2, 2), |
| 4811 }; | 4811 }; |
| 4812 MockRead reads_SPDYNPN[] = { | 4812 MockRead reads_SPDYNPN[] = { |
| 4813 MockRead(false, kHTTP200, arraysize(kHTTP200) - 1, 1), | 4813 MockRead(SYNCHRONOUS, kHTTP200, arraysize(kHTTP200) - 1, 1), |
| 4814 CreateMockRead(*resp2, 3), | 4814 CreateMockRead(*resp2, 3), |
| 4815 CreateMockRead(*body2, 4), | 4815 CreateMockRead(*body2, 4), |
| 4816 MockRead(true, 0, 5) // EOF | 4816 MockRead(ASYNC, 0, 5) // EOF |
| 4817 }; | 4817 }; |
| 4818 | 4818 |
| 4819 MockWrite writes_SPDYNOSSL[] = { | 4819 MockWrite writes_SPDYNOSSL[] = { |
| 4820 CreateMockWrite(*req2, 0), | 4820 CreateMockWrite(*req2, 0), |
| 4821 }; | 4821 }; |
| 4822 MockRead reads_SPDYNOSSL[] = { | 4822 MockRead reads_SPDYNOSSL[] = { |
| 4823 CreateMockRead(*resp2, 1), | 4823 CreateMockRead(*resp2, 1), |
| 4824 CreateMockRead(*body2, 2), | 4824 CreateMockRead(*body2, 2), |
| 4825 MockRead(true, 0, 3) // EOF | 4825 MockRead(ASYNC, 0, 3) // EOF |
| 4826 }; | 4826 }; |
| 4827 | 4827 |
| 4828 MockWrite writes_SPDYSSL[] = { | 4828 MockWrite writes_SPDYSSL[] = { |
| 4829 MockWrite(false, kConnect80, arraysize(kConnect80) - 1, 0), | 4829 MockWrite(SYNCHRONOUS, kConnect80, arraysize(kConnect80) - 1, 0), |
| 4830 CreateMockWrite(*req2, 2), | 4830 CreateMockWrite(*req2, 2), |
| 4831 }; | 4831 }; |
| 4832 MockRead reads_SPDYSSL[] = { | 4832 MockRead reads_SPDYSSL[] = { |
| 4833 MockRead(false, kHTTP200, arraysize(kHTTP200) - 1, 1), | 4833 MockRead(SYNCHRONOUS, kHTTP200, arraysize(kHTTP200) - 1, 1), |
| 4834 CreateMockRead(*resp2, 3), | 4834 CreateMockRead(*resp2, 3), |
| 4835 CreateMockRead(*body2, 4), | 4835 CreateMockRead(*body2, 4), |
| 4836 MockRead(true, 0, 0, 5), | 4836 MockRead(ASYNC, 0, 0, 5), |
| 4837 }; | 4837 }; |
| 4838 | 4838 |
| 4839 scoped_ptr<OrderedSocketData> data_proxy; | 4839 scoped_ptr<OrderedSocketData> data_proxy; |
| 4840 switch(GetParam()) { | 4840 switch(GetParam()) { |
| 4841 case SPDYNPN: | 4841 case SPDYNPN: |
| 4842 data_proxy.reset(new OrderedSocketData(reads_SPDYNPN, | 4842 data_proxy.reset(new OrderedSocketData(reads_SPDYNPN, |
| 4843 arraysize(reads_SPDYNPN), | 4843 arraysize(reads_SPDYNPN), |
| 4844 writes_SPDYNPN, | 4844 writes_SPDYNPN, |
| 4845 arraysize(writes_SPDYNPN))); | 4845 arraysize(writes_SPDYNPN))); |
| 4846 break; | 4846 break; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4903 // When we get a TCP-level RST, we need to retry a HttpNetworkTransaction | 4903 // When we get a TCP-level RST, we need to retry a HttpNetworkTransaction |
| 4904 // on a new connection, if the connection was previously known to be good. | 4904 // on a new connection, if the connection was previously known to be good. |
| 4905 // This can happen when a server reboots without saying goodbye, or when | 4905 // This can happen when a server reboots without saying goodbye, or when |
| 4906 // we're behind a NAT that masked the RST. | 4906 // we're behind a NAT that masked the RST. |
| 4907 TEST_P(SpdyNetworkTransactionTest, VerifyRetryOnConnectionReset) { | 4907 TEST_P(SpdyNetworkTransactionTest, VerifyRetryOnConnectionReset) { |
| 4908 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 4908 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 4909 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 4909 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 4910 MockRead reads[] = { | 4910 MockRead reads[] = { |
| 4911 CreateMockRead(*resp), | 4911 CreateMockRead(*resp), |
| 4912 CreateMockRead(*body), | 4912 CreateMockRead(*body), |
| 4913 MockRead(true, ERR_IO_PENDING), | 4913 MockRead(ASYNC, ERR_IO_PENDING), |
| 4914 MockRead(true, ERR_CONNECTION_RESET), | 4914 MockRead(ASYNC, ERR_CONNECTION_RESET), |
| 4915 }; | 4915 }; |
| 4916 | 4916 |
| 4917 MockRead reads2[] = { | 4917 MockRead reads2[] = { |
| 4918 CreateMockRead(*resp), | 4918 CreateMockRead(*resp), |
| 4919 CreateMockRead(*body), | 4919 CreateMockRead(*body), |
| 4920 MockRead(true, 0, 0) // EOF | 4920 MockRead(ASYNC, 0, 0) // EOF |
| 4921 }; | 4921 }; |
| 4922 | 4922 |
| 4923 // This test has a couple of variants. | 4923 // This test has a couple of variants. |
| 4924 enum { | 4924 enum { |
| 4925 // Induce the RST while waiting for our transaction to send. | 4925 // Induce the RST while waiting for our transaction to send. |
| 4926 VARIANT_RST_DURING_SEND_COMPLETION, | 4926 VARIANT_RST_DURING_SEND_COMPLETION, |
| 4927 // Induce the RST while waiting for our transaction to read. | 4927 // Induce the RST while waiting for our transaction to read. |
| 4928 // In this case, the send completed - everything copied into the SNDBUF. | 4928 // In this case, the send completed - everything copied into the SNDBUF. |
| 4929 VARIANT_RST_DURING_READ_COMPLETION | 4929 VARIANT_RST_DURING_READ_COMPLETION |
| 4930 }; | 4930 }; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4989 TEST_P(SpdyNetworkTransactionTest, SpdyOnOffToggle) { | 4989 TEST_P(SpdyNetworkTransactionTest, SpdyOnOffToggle) { |
| 4990 net::HttpStreamFactory::set_spdy_enabled(true); | 4990 net::HttpStreamFactory::set_spdy_enabled(true); |
| 4991 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 4991 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 4992 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; | 4992 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
| 4993 | 4993 |
| 4994 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 4994 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 4995 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 4995 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 4996 MockRead spdy_reads[] = { | 4996 MockRead spdy_reads[] = { |
| 4997 CreateMockRead(*resp), | 4997 CreateMockRead(*resp), |
| 4998 CreateMockRead(*body), | 4998 CreateMockRead(*body), |
| 4999 MockRead(true, 0, 0) // EOF | 4999 MockRead(ASYNC, 0, 0) // EOF |
| 5000 }; | 5000 }; |
| 5001 | 5001 |
| 5002 scoped_ptr<DelayedSocketData> data( | 5002 scoped_ptr<DelayedSocketData> data( |
| 5003 new DelayedSocketData(1, | 5003 new DelayedSocketData(1, |
| 5004 spdy_reads, arraysize(spdy_reads), | 5004 spdy_reads, arraysize(spdy_reads), |
| 5005 spdy_writes, arraysize(spdy_writes))); | 5005 spdy_writes, arraysize(spdy_writes))); |
| 5006 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 5006 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 5007 BoundNetLog(), GetParam()); | 5007 BoundNetLog(), GetParam()); |
| 5008 helper.RunToCompletion(data.get()); | 5008 helper.RunToCompletion(data.get()); |
| 5009 TransactionHelperResult out = helper.output(); | 5009 TransactionHelperResult out = helper.output(); |
| 5010 EXPECT_EQ(OK, out.rv); | 5010 EXPECT_EQ(OK, out.rv); |
| 5011 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); | 5011 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); |
| 5012 EXPECT_EQ("hello!", out.response_data); | 5012 EXPECT_EQ("hello!", out.response_data); |
| 5013 | 5013 |
| 5014 net::HttpStreamFactory::set_spdy_enabled(false); | 5014 net::HttpStreamFactory::set_spdy_enabled(false); |
| 5015 MockRead http_reads[] = { | 5015 MockRead http_reads[] = { |
| 5016 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 5016 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
| 5017 MockRead("hello from http"), | 5017 MockRead("hello from http"), |
| 5018 MockRead(false, OK), | 5018 MockRead(SYNCHRONOUS, OK), |
| 5019 }; | 5019 }; |
| 5020 scoped_ptr<DelayedSocketData> data2( | 5020 scoped_ptr<DelayedSocketData> data2( |
| 5021 new DelayedSocketData(1, http_reads, arraysize(http_reads), | 5021 new DelayedSocketData(1, http_reads, arraysize(http_reads), |
| 5022 NULL, 0)); | 5022 NULL, 0)); |
| 5023 NormalSpdyTransactionHelper helper2(CreateGetRequest(), | 5023 NormalSpdyTransactionHelper helper2(CreateGetRequest(), |
| 5024 BoundNetLog(), GetParam()); | 5024 BoundNetLog(), GetParam()); |
| 5025 helper2.SetSpdyDisabled(); | 5025 helper2.SetSpdyDisabled(); |
| 5026 helper2.RunToCompletion(data2.get()); | 5026 helper2.RunToCompletion(data2.get()); |
| 5027 TransactionHelperResult out2 = helper2.output(); | 5027 TransactionHelperResult out2 = helper2.output(); |
| 5028 EXPECT_EQ(OK, out2.rv); | 5028 EXPECT_EQ(OK, out2.rv); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5069 1)); | 5069 1)); |
| 5070 scoped_ptr<spdy::SpdyFrame> body_authentication( | 5070 scoped_ptr<spdy::SpdyFrame> body_authentication( |
| 5071 ConstructSpdyBodyFrame(1, true)); | 5071 ConstructSpdyBodyFrame(1, true)); |
| 5072 scoped_ptr<spdy::SpdyFrame> resp_data(ConstructSpdyGetSynReply(NULL, 0, 3)); | 5072 scoped_ptr<spdy::SpdyFrame> resp_data(ConstructSpdyGetSynReply(NULL, 0, 3)); |
| 5073 scoped_ptr<spdy::SpdyFrame> body_data(ConstructSpdyBodyFrame(3, true)); | 5073 scoped_ptr<spdy::SpdyFrame> body_data(ConstructSpdyBodyFrame(3, true)); |
| 5074 MockRead spdy_reads[] = { | 5074 MockRead spdy_reads[] = { |
| 5075 CreateMockRead(*resp_authentication, 2), | 5075 CreateMockRead(*resp_authentication, 2), |
| 5076 CreateMockRead(*body_authentication, 3), | 5076 CreateMockRead(*body_authentication, 3), |
| 5077 CreateMockRead(*resp_data, 5), | 5077 CreateMockRead(*resp_data, 5), |
| 5078 CreateMockRead(*body_data, 6), | 5078 CreateMockRead(*body_data, 6), |
| 5079 MockRead(true, 0, 7), | 5079 MockRead(ASYNC, 0, 7), |
| 5080 }; | 5080 }; |
| 5081 | 5081 |
| 5082 scoped_ptr<OrderedSocketData> data( | 5082 scoped_ptr<OrderedSocketData> data( |
| 5083 new OrderedSocketData(spdy_reads, arraysize(spdy_reads), | 5083 new OrderedSocketData(spdy_reads, arraysize(spdy_reads), |
| 5084 spdy_writes, arraysize(spdy_writes))); | 5084 spdy_writes, arraysize(spdy_writes))); |
| 5085 HttpRequestInfo request(CreateGetRequest()); | 5085 HttpRequestInfo request(CreateGetRequest()); |
| 5086 BoundNetLog net_log; | 5086 BoundNetLog net_log; |
| 5087 NormalSpdyTransactionHelper helper(request, net_log, GetParam()); | 5087 NormalSpdyTransactionHelper helper(request, net_log, GetParam()); |
| 5088 | 5088 |
| 5089 helper.RunPreTestSetup(); | 5089 helper.RunPreTestSetup(); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5172 NULL, | 5172 NULL, |
| 5173 0, | 5173 0, |
| 5174 0)); | 5174 0)); |
| 5175 | 5175 |
| 5176 scoped_ptr<spdy::SpdyFrame> | 5176 scoped_ptr<spdy::SpdyFrame> |
| 5177 stream1_reply(ConstructSpdyGetSynReply(NULL, 0, 1)); | 5177 stream1_reply(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 5178 MockRead reads[] = { | 5178 MockRead reads[] = { |
| 5179 CreateMockRead(*stream1_reply, 2), | 5179 CreateMockRead(*stream1_reply, 2), |
| 5180 CreateMockRead(*stream2_syn, 3), | 5180 CreateMockRead(*stream2_syn, 3), |
| 5181 CreateMockRead(*stream2_headers, 4), | 5181 CreateMockRead(*stream2_headers, 4), |
| 5182 CreateMockRead(*stream1_body, 5, false), | 5182 CreateMockRead(*stream1_body, 5, SYNCHRONOUS), |
| 5183 MockRead(true, reinterpret_cast<const char*>(kPushBodyFrame), | 5183 MockRead(ASYNC, reinterpret_cast<const char*>(kPushBodyFrame), |
| 5184 arraysize(kPushBodyFrame), 6), | 5184 arraysize(kPushBodyFrame), 6), |
| 5185 MockRead(true, ERR_IO_PENDING, 7), // Force a pause | 5185 MockRead(ASYNC, ERR_IO_PENDING, 7), // Force a pause |
| 5186 }; | 5186 }; |
| 5187 | 5187 |
| 5188 HttpResponseInfo response; | 5188 HttpResponseInfo response; |
| 5189 HttpResponseInfo response2; | 5189 HttpResponseInfo response2; |
| 5190 std::string expected_push_result("pushed"); | 5190 std::string expected_push_result("pushed"); |
| 5191 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( | 5191 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( |
| 5192 reads, | 5192 reads, |
| 5193 arraysize(reads), | 5193 arraysize(reads), |
| 5194 writes, | 5194 writes, |
| 5195 arraysize(writes))); | 5195 arraysize(writes))); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 5212 static const unsigned char kPushBodyFrame[] = { | 5212 static const unsigned char kPushBodyFrame[] = { |
| 5213 0x00, 0x00, 0x00, 0x02, // header, ID | 5213 0x00, 0x00, 0x00, 0x02, // header, ID |
| 5214 0x01, 0x00, 0x00, 0x06, // FIN, length | 5214 0x01, 0x00, 0x00, 0x06, // FIN, length |
| 5215 'p', 'u', 's', 'h', 'e', 'd' // "pushed" | 5215 'p', 'u', 's', 'h', 'e', 'd' // "pushed" |
| 5216 }; | 5216 }; |
| 5217 scoped_ptr<spdy::SpdyFrame> | 5217 scoped_ptr<spdy::SpdyFrame> |
| 5218 stream1_syn(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 5218 stream1_syn(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 5219 scoped_ptr<spdy::SpdyFrame> | 5219 scoped_ptr<spdy::SpdyFrame> |
| 5220 stream1_body(ConstructSpdyBodyFrame(1, true)); | 5220 stream1_body(ConstructSpdyBodyFrame(1, true)); |
| 5221 MockWrite writes[] = { | 5221 MockWrite writes[] = { |
| 5222 CreateMockWrite(*stream1_syn, 0, false), | 5222 CreateMockWrite(*stream1_syn, 0, SYNCHRONOUS), |
| 5223 }; | 5223 }; |
| 5224 | 5224 |
| 5225 static const char* const kInitialHeaders[] = { | 5225 static const char* const kInitialHeaders[] = { |
| 5226 "url", | 5226 "url", |
| 5227 "http://www.google.com/foo.dat", | 5227 "http://www.google.com/foo.dat", |
| 5228 }; | 5228 }; |
| 5229 static const char* const kLateHeaders[] = { | 5229 static const char* const kLateHeaders[] = { |
| 5230 "hello", | 5230 "hello", |
| 5231 "bye", | 5231 "bye", |
| 5232 "status", | 5232 "status", |
| (...skipping 24 matching lines...) Expand all Loading... |
| 5257 0, | 5257 0, |
| 5258 0)); | 5258 0)); |
| 5259 | 5259 |
| 5260 scoped_ptr<spdy::SpdyFrame> | 5260 scoped_ptr<spdy::SpdyFrame> |
| 5261 stream1_reply(ConstructSpdyGetSynReply(NULL, 0, 1)); | 5261 stream1_reply(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 5262 MockRead reads[] = { | 5262 MockRead reads[] = { |
| 5263 CreateMockRead(*stream1_reply, 1), | 5263 CreateMockRead(*stream1_reply, 1), |
| 5264 CreateMockRead(*stream2_syn, 2), | 5264 CreateMockRead(*stream2_syn, 2), |
| 5265 CreateMockRead(*stream1_body, 3), | 5265 CreateMockRead(*stream1_body, 3), |
| 5266 CreateMockRead(*stream2_headers, 4), | 5266 CreateMockRead(*stream2_headers, 4), |
| 5267 MockRead(true, reinterpret_cast<const char*>(kPushBodyFrame), | 5267 MockRead(ASYNC, reinterpret_cast<const char*>(kPushBodyFrame), |
| 5268 arraysize(kPushBodyFrame), 5), | 5268 arraysize(kPushBodyFrame), 5), |
| 5269 MockRead(true, 0, 5), // EOF | 5269 MockRead(ASYNC, 0, 5), // EOF |
| 5270 }; | 5270 }; |
| 5271 | 5271 |
| 5272 HttpResponseInfo response; | 5272 HttpResponseInfo response; |
| 5273 HttpResponseInfo response2; | 5273 HttpResponseInfo response2; |
| 5274 std::string expected_push_result("pushed"); | 5274 std::string expected_push_result("pushed"); |
| 5275 scoped_refptr<DeterministicSocketData> data(new DeterministicSocketData( | 5275 scoped_refptr<DeterministicSocketData> data(new DeterministicSocketData( |
| 5276 reads, | 5276 reads, |
| 5277 arraysize(reads), | 5277 arraysize(reads), |
| 5278 writes, | 5278 writes, |
| 5279 arraysize(writes))); | 5279 arraysize(writes))); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5349 static const unsigned char kPushBodyFrame[] = { | 5349 static const unsigned char kPushBodyFrame[] = { |
| 5350 0x00, 0x00, 0x00, 0x02, // header, ID | 5350 0x00, 0x00, 0x00, 0x02, // header, ID |
| 5351 0x01, 0x00, 0x00, 0x06, // FIN, length | 5351 0x01, 0x00, 0x00, 0x06, // FIN, length |
| 5352 'p', 'u', 's', 'h', 'e', 'd' // "pushed" | 5352 'p', 'u', 's', 'h', 'e', 'd' // "pushed" |
| 5353 }; | 5353 }; |
| 5354 scoped_ptr<spdy::SpdyFrame> | 5354 scoped_ptr<spdy::SpdyFrame> |
| 5355 stream1_syn(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 5355 stream1_syn(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 5356 scoped_ptr<spdy::SpdyFrame> | 5356 scoped_ptr<spdy::SpdyFrame> |
| 5357 stream1_body(ConstructSpdyBodyFrame(1, true)); | 5357 stream1_body(ConstructSpdyBodyFrame(1, true)); |
| 5358 MockWrite writes[] = { | 5358 MockWrite writes[] = { |
| 5359 CreateMockWrite(*stream1_syn, 0, false), | 5359 CreateMockWrite(*stream1_syn, 0, SYNCHRONOUS), |
| 5360 }; | 5360 }; |
| 5361 | 5361 |
| 5362 static const char* const kInitialHeaders[] = { | 5362 static const char* const kInitialHeaders[] = { |
| 5363 "url", | 5363 "url", |
| 5364 "http://www.google.com/foo.dat", | 5364 "http://www.google.com/foo.dat", |
| 5365 }; | 5365 }; |
| 5366 static const char* const kMiddleHeaders[] = { | 5366 static const char* const kMiddleHeaders[] = { |
| 5367 "hello", | 5367 "hello", |
| 5368 "bye", | 5368 "bye", |
| 5369 }; | 5369 }; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5408 0)); | 5408 0)); |
| 5409 | 5409 |
| 5410 scoped_ptr<spdy::SpdyFrame> | 5410 scoped_ptr<spdy::SpdyFrame> |
| 5411 stream1_reply(ConstructSpdyGetSynReply(NULL, 0, 1)); | 5411 stream1_reply(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 5412 MockRead reads[] = { | 5412 MockRead reads[] = { |
| 5413 CreateMockRead(*stream1_reply, 1), | 5413 CreateMockRead(*stream1_reply, 1), |
| 5414 CreateMockRead(*stream2_syn, 2), | 5414 CreateMockRead(*stream2_syn, 2), |
| 5415 CreateMockRead(*stream1_body, 3), | 5415 CreateMockRead(*stream1_body, 3), |
| 5416 CreateMockRead(*stream2_headers1, 4), | 5416 CreateMockRead(*stream2_headers1, 4), |
| 5417 CreateMockRead(*stream2_headers2, 5), | 5417 CreateMockRead(*stream2_headers2, 5), |
| 5418 MockRead(true, reinterpret_cast<const char*>(kPushBodyFrame), | 5418 MockRead(ASYNC, reinterpret_cast<const char*>(kPushBodyFrame), |
| 5419 arraysize(kPushBodyFrame), 6), | 5419 arraysize(kPushBodyFrame), 6), |
| 5420 MockRead(true, 0, 6), // EOF | 5420 MockRead(ASYNC, 0, 6), // EOF |
| 5421 }; | 5421 }; |
| 5422 | 5422 |
| 5423 HttpResponseInfo response; | 5423 HttpResponseInfo response; |
| 5424 HttpResponseInfo response2; | 5424 HttpResponseInfo response2; |
| 5425 std::string expected_push_result("pushed"); | 5425 std::string expected_push_result("pushed"); |
| 5426 scoped_refptr<DeterministicSocketData> data(new DeterministicSocketData( | 5426 scoped_refptr<DeterministicSocketData> data(new DeterministicSocketData( |
| 5427 reads, | 5427 reads, |
| 5428 arraysize(reads), | 5428 arraysize(reads), |
| 5429 writes, | 5429 writes, |
| 5430 arraysize(writes))); | 5430 arraysize(writes))); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5537 spdy::HEADERS, | 5537 spdy::HEADERS, |
| 5538 spdy::CONTROL_FLAG_NONE, | 5538 spdy::CONTROL_FLAG_NONE, |
| 5539 NULL, | 5539 NULL, |
| 5540 0, | 5540 0, |
| 5541 0)); | 5541 0)); |
| 5542 scoped_ptr<spdy::SpdyFrame> stream1_body(ConstructSpdyBodyFrame(1, true)); | 5542 scoped_ptr<spdy::SpdyFrame> stream1_body(ConstructSpdyBodyFrame(1, true)); |
| 5543 MockRead reads[] = { | 5543 MockRead reads[] = { |
| 5544 CreateMockRead(*stream1_reply), | 5544 CreateMockRead(*stream1_reply), |
| 5545 CreateMockRead(*stream1_headers), | 5545 CreateMockRead(*stream1_headers), |
| 5546 CreateMockRead(*stream1_body), | 5546 CreateMockRead(*stream1_body), |
| 5547 MockRead(true, 0, 0) // EOF | 5547 MockRead(ASYNC, 0, 0) // EOF |
| 5548 }; | 5548 }; |
| 5549 | 5549 |
| 5550 scoped_ptr<DelayedSocketData> data( | 5550 scoped_ptr<DelayedSocketData> data( |
| 5551 new DelayedSocketData(1, reads, arraysize(reads), | 5551 new DelayedSocketData(1, reads, arraysize(reads), |
| 5552 writes, arraysize(writes))); | 5552 writes, arraysize(writes))); |
| 5553 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 5553 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 5554 BoundNetLog(), GetParam()); | 5554 BoundNetLog(), GetParam()); |
| 5555 helper.RunToCompletion(data.get()); | 5555 helper.RunToCompletion(data.get()); |
| 5556 TransactionHelperResult out = helper.output(); | 5556 TransactionHelperResult out = helper.output(); |
| 5557 EXPECT_EQ(OK, out.rv); | 5557 EXPECT_EQ(OK, out.rv); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5595 NULL, | 5595 NULL, |
| 5596 0, | 5596 0, |
| 5597 0)); | 5597 0)); |
| 5598 scoped_ptr<spdy::SpdyFrame> stream1_body(ConstructSpdyBodyFrame(1, false)); | 5598 scoped_ptr<spdy::SpdyFrame> stream1_body(ConstructSpdyBodyFrame(1, false)); |
| 5599 scoped_ptr<spdy::SpdyFrame> stream1_body2(ConstructSpdyBodyFrame(1, true)); | 5599 scoped_ptr<spdy::SpdyFrame> stream1_body2(ConstructSpdyBodyFrame(1, true)); |
| 5600 MockRead reads[] = { | 5600 MockRead reads[] = { |
| 5601 CreateMockRead(*stream1_reply), | 5601 CreateMockRead(*stream1_reply), |
| 5602 CreateMockRead(*stream1_body), | 5602 CreateMockRead(*stream1_body), |
| 5603 CreateMockRead(*stream1_headers), | 5603 CreateMockRead(*stream1_headers), |
| 5604 CreateMockRead(*stream1_body2), | 5604 CreateMockRead(*stream1_body2), |
| 5605 MockRead(true, 0, 0) // EOF | 5605 MockRead(ASYNC, 0, 0) // EOF |
| 5606 }; | 5606 }; |
| 5607 | 5607 |
| 5608 scoped_ptr<DelayedSocketData> data( | 5608 scoped_ptr<DelayedSocketData> data( |
| 5609 new DelayedSocketData(1, reads, arraysize(reads), | 5609 new DelayedSocketData(1, reads, arraysize(reads), |
| 5610 writes, arraysize(writes))); | 5610 writes, arraysize(writes))); |
| 5611 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 5611 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 5612 BoundNetLog(), GetParam()); | 5612 BoundNetLog(), GetParam()); |
| 5613 helper.RunToCompletion(data.get()); | 5613 helper.RunToCompletion(data.get()); |
| 5614 TransactionHelperResult out = helper.output(); | 5614 TransactionHelperResult out = helper.output(); |
| 5615 EXPECT_EQ(OK, out.rv); | 5615 EXPECT_EQ(OK, out.rv); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5653 NULL, | 5653 NULL, |
| 5654 0, | 5654 0, |
| 5655 0)); | 5655 0)); |
| 5656 scoped_ptr<spdy::SpdyFrame> stream1_body(ConstructSpdyBodyFrame(1, false)); | 5656 scoped_ptr<spdy::SpdyFrame> stream1_body(ConstructSpdyBodyFrame(1, false)); |
| 5657 scoped_ptr<spdy::SpdyFrame> stream1_body2(ConstructSpdyBodyFrame(1, true)); | 5657 scoped_ptr<spdy::SpdyFrame> stream1_body2(ConstructSpdyBodyFrame(1, true)); |
| 5658 MockRead reads[] = { | 5658 MockRead reads[] = { |
| 5659 CreateMockRead(*stream1_reply), | 5659 CreateMockRead(*stream1_reply), |
| 5660 CreateMockRead(*stream1_body), | 5660 CreateMockRead(*stream1_body), |
| 5661 CreateMockRead(*stream1_headers), | 5661 CreateMockRead(*stream1_headers), |
| 5662 CreateMockRead(*stream1_body2), | 5662 CreateMockRead(*stream1_body2), |
| 5663 MockRead(true, 0, 0) // EOF | 5663 MockRead(ASYNC, 0, 0) // EOF |
| 5664 }; | 5664 }; |
| 5665 | 5665 |
| 5666 scoped_ptr<DelayedSocketData> data( | 5666 scoped_ptr<DelayedSocketData> data( |
| 5667 new DelayedSocketData(1, reads, arraysize(reads), | 5667 new DelayedSocketData(1, reads, arraysize(reads), |
| 5668 writes, arraysize(writes))); | 5668 writes, arraysize(writes))); |
| 5669 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 5669 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 5670 BoundNetLog(), GetParam()); | 5670 BoundNetLog(), GetParam()); |
| 5671 helper.RunToCompletion(data.get()); | 5671 helper.RunToCompletion(data.get()); |
| 5672 TransactionHelperResult out = helper.output(); | 5672 TransactionHelperResult out = helper.output(); |
| 5673 EXPECT_EQ(ERR_SPDY_PROTOCOL_ERROR, out.rv); | 5673 EXPECT_EQ(ERR_SPDY_PROTOCOL_ERROR, out.rv); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5727 0, | 5727 0, |
| 5728 2, | 5728 2, |
| 5729 1, | 5729 1, |
| 5730 url_to_push)); | 5730 url_to_push)); |
| 5731 scoped_ptr<spdy::SpdyFrame> rst( | 5731 scoped_ptr<spdy::SpdyFrame> rst( |
| 5732 ConstructSpdyRstStream(2, spdy::CANCEL)); | 5732 ConstructSpdyRstStream(2, spdy::CANCEL)); |
| 5733 | 5733 |
| 5734 MockRead reads[] = { | 5734 MockRead reads[] = { |
| 5735 CreateMockRead(*stream1_reply, 2), | 5735 CreateMockRead(*stream1_reply, 2), |
| 5736 CreateMockRead(*stream2_syn, 3), | 5736 CreateMockRead(*stream2_syn, 3), |
| 5737 CreateMockRead(*stream1_body, 5, false), | 5737 CreateMockRead(*stream1_body, 5, SYNCHRONOUS), |
| 5738 MockRead(true, reinterpret_cast<const char*>(kPushBodyFrame), | 5738 MockRead(ASYNC, reinterpret_cast<const char*>(kPushBodyFrame), |
| 5739 arraysize(kPushBodyFrame), 6), | 5739 arraysize(kPushBodyFrame), 6), |
| 5740 MockRead(true, ERR_IO_PENDING, 7), // Force a pause | 5740 MockRead(ASYNC, ERR_IO_PENDING, 7), // Force a pause |
| 5741 }; | 5741 }; |
| 5742 | 5742 |
| 5743 HttpResponseInfo response; | 5743 HttpResponseInfo response; |
| 5744 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( | 5744 scoped_ptr<OrderedSocketData> data(new OrderedSocketData( |
| 5745 reads, | 5745 reads, |
| 5746 arraysize(reads), | 5746 arraysize(reads), |
| 5747 writes, | 5747 writes, |
| 5748 arraysize(writes))); | 5748 arraysize(writes))); |
| 5749 | 5749 |
| 5750 HttpRequestInfo request; | 5750 HttpRequestInfo request; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5795 }; | 5795 }; |
| 5796 | 5796 |
| 5797 scoped_ptr<spdy::SpdyFrame> refused( | 5797 scoped_ptr<spdy::SpdyFrame> refused( |
| 5798 ConstructSpdyRstStream(1, spdy::REFUSED_STREAM)); | 5798 ConstructSpdyRstStream(1, spdy::REFUSED_STREAM)); |
| 5799 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 3)); | 5799 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 3)); |
| 5800 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(3, true)); | 5800 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(3, true)); |
| 5801 MockRead reads[] = { | 5801 MockRead reads[] = { |
| 5802 CreateMockRead(*refused, 2), | 5802 CreateMockRead(*refused, 2), |
| 5803 CreateMockRead(*resp, 4), | 5803 CreateMockRead(*resp, 4), |
| 5804 CreateMockRead(*body, 5), | 5804 CreateMockRead(*body, 5), |
| 5805 MockRead(true, 0, 6) // EOF | 5805 MockRead(ASYNC, 0, 6) // EOF |
| 5806 }; | 5806 }; |
| 5807 | 5807 |
| 5808 scoped_ptr<OrderedSocketData> data( | 5808 scoped_ptr<OrderedSocketData> data( |
| 5809 new OrderedSocketData(reads, arraysize(reads), | 5809 new OrderedSocketData(reads, arraysize(reads), |
| 5810 writes, arraysize(writes))); | 5810 writes, arraysize(writes))); |
| 5811 NormalSpdyTransactionHelper helper(CreateGetRequest(), | 5811 NormalSpdyTransactionHelper helper(CreateGetRequest(), |
| 5812 BoundNetLog(), GetParam()); | 5812 BoundNetLog(), GetParam()); |
| 5813 | 5813 |
| 5814 helper.RunPreTestSetup(); | 5814 helper.RunPreTestSetup(); |
| 5815 helper.AddData(data.get()); | 5815 helper.AddData(data.get()); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 5834 << " Write index: " | 5834 << " Write index: " |
| 5835 << data->write_index(); | 5835 << data->write_index(); |
| 5836 | 5836 |
| 5837 // Verify the SYN_REPLY. | 5837 // Verify the SYN_REPLY. |
| 5838 HttpResponseInfo response = *trans->GetResponseInfo(); | 5838 HttpResponseInfo response = *trans->GetResponseInfo(); |
| 5839 EXPECT_TRUE(response.headers != NULL); | 5839 EXPECT_TRUE(response.headers != NULL); |
| 5840 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); | 5840 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); |
| 5841 } | 5841 } |
| 5842 | 5842 |
| 5843 } // namespace net | 5843 } // namespace net |
| OLD | NEW |