| 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 1441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1452 0, // Associated stream ID | 1452 0, // Associated stream ID |
| 1453 net::ConvertRequestPriorityToSpdyPriority(LOWEST), // Priority | 1453 net::ConvertRequestPriorityToSpdyPriority(LOWEST), // Priority |
| 1454 spdy::CONTROL_FLAG_FIN, // Control Flags | 1454 spdy::CONTROL_FLAG_FIN, // Control Flags |
| 1455 false, // Compressed | 1455 false, // Compressed |
| 1456 spdy::INVALID, // Status | 1456 spdy::INVALID, // Status |
| 1457 NULL, // Data | 1457 NULL, // Data |
| 1458 0, // Length | 1458 0, // Length |
| 1459 spdy::DATA_FLAG_NONE // Data Flags | 1459 spdy::DATA_FLAG_NONE // Data Flags |
| 1460 }; | 1460 }; |
| 1461 const char* const kPutHeaders[] = { | 1461 const char* const kPutHeaders[] = { |
| 1462 "method", "PUT", | 1462 ":method", "PUT", |
| 1463 "url", "/", | 1463 ":path", "/", |
| 1464 "host", "www.google.com", | 1464 ":host", "www.google.com", |
| 1465 "scheme", "http", | 1465 ":scheme", "http", |
| 1466 "version", "HTTP/1.1", | 1466 ":version", "HTTP/1.1", |
| 1467 "content-length", "0" | 1467 "content-length", "0" |
| 1468 }; | 1468 }; |
| 1469 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyPacket(kSynStartHeader, NULL, 0, | 1469 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyPacket(kSynStartHeader, NULL, 0, |
| 1470 kPutHeaders, arraysize(kPutHeaders) / 2)); | 1470 kPutHeaders, arraysize(kPutHeaders) / 2)); |
| 1471 MockWrite writes[] = { | 1471 MockWrite writes[] = { |
| 1472 CreateMockWrite(*req) | 1472 CreateMockWrite(*req) |
| 1473 }; | 1473 }; |
| 1474 | 1474 |
| 1475 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 1475 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 1476 const SpdyHeaderInfo kSynReplyHeader = { | 1476 const SpdyHeaderInfo kSynReplyHeader = { |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1523 0, // Associated stream ID | 1523 0, // Associated stream ID |
| 1524 net::ConvertRequestPriorityToSpdyPriority(LOWEST), // Priority | 1524 net::ConvertRequestPriorityToSpdyPriority(LOWEST), // Priority |
| 1525 spdy::CONTROL_FLAG_FIN, // Control Flags | 1525 spdy::CONTROL_FLAG_FIN, // Control Flags |
| 1526 false, // Compressed | 1526 false, // Compressed |
| 1527 spdy::INVALID, // Status | 1527 spdy::INVALID, // Status |
| 1528 NULL, // Data | 1528 NULL, // Data |
| 1529 0, // Length | 1529 0, // Length |
| 1530 spdy::DATA_FLAG_NONE // Data Flags | 1530 spdy::DATA_FLAG_NONE // Data Flags |
| 1531 }; | 1531 }; |
| 1532 const char* const kHeadHeaders[] = { | 1532 const char* const kHeadHeaders[] = { |
| 1533 "method", "HEAD", | 1533 ":method", "HEAD", |
| 1534 "url", "/", | 1534 ":path", "/", |
| 1535 "host", "www.google.com", | 1535 ":host", "www.google.com", |
| 1536 "scheme", "http", | 1536 ":scheme", "http", |
| 1537 "version", "HTTP/1.1", | 1537 ":version", "HTTP/1.1", |
| 1538 "content-length", "0" | 1538 "content-length", "0" |
| 1539 }; | 1539 }; |
| 1540 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyPacket(kSynStartHeader, NULL, 0, | 1540 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyPacket(kSynStartHeader, NULL, 0, |
| 1541 kHeadHeaders, arraysize(kHeadHeaders) / 2)); | 1541 kHeadHeaders, arraysize(kHeadHeaders) / 2)); |
| 1542 MockWrite writes[] = { | 1542 MockWrite writes[] = { |
| 1543 CreateMockWrite(*req) | 1543 CreateMockWrite(*req) |
| 1544 }; | 1544 }; |
| 1545 | 1545 |
| 1546 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 1546 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 1547 const SpdyHeaderInfo kSynReplyHeader = { | 1547 const SpdyHeaderInfo kSynReplyHeader = { |
| (...skipping 879 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2427 | 2427 |
| 2428 // Send a spdy request to www.google.com that gets redirected to www.foo.com. | 2428 // Send a spdy request to www.google.com that gets redirected to www.foo.com. |
| 2429 TEST_P(SpdyNetworkTransactionSpdy3Test, RedirectGetRequest) { | 2429 TEST_P(SpdyNetworkTransactionSpdy3Test, RedirectGetRequest) { |
| 2430 // These are headers which the net::URLRequest tacks on. | 2430 // These are headers which the net::URLRequest tacks on. |
| 2431 const char* const kExtraHeaders[] = { | 2431 const char* const kExtraHeaders[] = { |
| 2432 "accept-encoding", | 2432 "accept-encoding", |
| 2433 "gzip,deflate", | 2433 "gzip,deflate", |
| 2434 }; | 2434 }; |
| 2435 const SpdyHeaderInfo kSynStartHeader = MakeSpdyHeader(spdy::SYN_STREAM); | 2435 const SpdyHeaderInfo kSynStartHeader = MakeSpdyHeader(spdy::SYN_STREAM); |
| 2436 const char* const kStandardGetHeaders[] = { | 2436 const char* const kStandardGetHeaders[] = { |
| 2437 "host", | 2437 ":host", |
| 2438 "www.google.com", | 2438 "www.google.com", |
| 2439 "method", | 2439 ":method", |
| 2440 "GET", | 2440 "GET", |
| 2441 "scheme", | 2441 ":scheme", |
| 2442 "http", | 2442 "http", |
| 2443 "url", | 2443 ":path", |
| 2444 "/", | 2444 "/", |
| 2445 "user-agent", | 2445 "user-agent", |
| 2446 "", | 2446 "", |
| 2447 "version", | 2447 ":version", |
| 2448 "HTTP/1.1" | 2448 "HTTP/1.1" |
| 2449 }; | 2449 }; |
| 2450 const char* const kStandardGetHeaders2[] = { | 2450 const char* const kStandardGetHeaders2[] = { |
| 2451 "host", | 2451 ":host", |
| 2452 "www.foo.com", | 2452 "www.foo.com", |
| 2453 "method", | 2453 ":method", |
| 2454 "GET", | 2454 "GET", |
| 2455 "scheme", | 2455 ":scheme", |
| 2456 "http", | 2456 "http", |
| 2457 "url", | 2457 ":path", |
| 2458 "/index.php", | 2458 "/index.php", |
| 2459 "user-agent", | 2459 "user-agent", |
| 2460 "", | 2460 "", |
| 2461 "version", | 2461 ":version", |
| 2462 "HTTP/1.1" | 2462 "HTTP/1.1" |
| 2463 }; | 2463 }; |
| 2464 | 2464 |
| 2465 // Setup writes/reads to www.google.com | 2465 // Setup writes/reads to www.google.com |
| 2466 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyPacket( | 2466 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyPacket( |
| 2467 kSynStartHeader, kExtraHeaders, arraysize(kExtraHeaders) / 2, | 2467 kSynStartHeader, kExtraHeaders, arraysize(kExtraHeaders) / 2, |
| 2468 kStandardGetHeaders, arraysize(kStandardGetHeaders) / 2)); | 2468 kStandardGetHeaders, arraysize(kStandardGetHeaders) / 2)); |
| 2469 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyPacket( | 2469 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyPacket( |
| 2470 kSynStartHeader, kExtraHeaders, arraysize(kExtraHeaders) / 2, | 2470 kSynStartHeader, kExtraHeaders, arraysize(kExtraHeaders) / 2, |
| 2471 kStandardGetHeaders2, arraysize(kStandardGetHeaders2) / 2)); | 2471 kStandardGetHeaders2, arraysize(kStandardGetHeaders2) / 2)); |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2663 // Send a spdy request to www.google.com. Get a pushed stream that redirects to | 2663 // Send a spdy request to www.google.com. Get a pushed stream that redirects to |
| 2664 // www.foo.com. | 2664 // www.foo.com. |
| 2665 TEST_P(SpdyNetworkTransactionSpdy3Test, RedirectServerPush) { | 2665 TEST_P(SpdyNetworkTransactionSpdy3Test, RedirectServerPush) { |
| 2666 // These are headers which the net::URLRequest tacks on. | 2666 // These are headers which the net::URLRequest tacks on. |
| 2667 const char* const kExtraHeaders[] = { | 2667 const char* const kExtraHeaders[] = { |
| 2668 "accept-encoding", | 2668 "accept-encoding", |
| 2669 "gzip,deflate", | 2669 "gzip,deflate", |
| 2670 }; | 2670 }; |
| 2671 const SpdyHeaderInfo kSynStartHeader = MakeSpdyHeader(spdy::SYN_STREAM); | 2671 const SpdyHeaderInfo kSynStartHeader = MakeSpdyHeader(spdy::SYN_STREAM); |
| 2672 const char* const kStandardGetHeaders[] = { | 2672 const char* const kStandardGetHeaders[] = { |
| 2673 "host", | 2673 ":host", |
| 2674 "www.google.com", | 2674 "www.google.com", |
| 2675 "method", | 2675 ":method", |
| 2676 "GET", | 2676 "GET", |
| 2677 "scheme", | 2677 ":scheme", |
| 2678 "http", | 2678 "http", |
| 2679 "url", | 2679 ":path", |
| 2680 "/", | 2680 "/", |
| 2681 "user-agent", | 2681 "user-agent", |
| 2682 "", | 2682 "", |
| 2683 "version", | 2683 ":version", |
| 2684 "HTTP/1.1" | 2684 "HTTP/1.1" |
| 2685 }; | 2685 }; |
| 2686 | 2686 |
| 2687 // Setup writes/reads to www.google.com | 2687 // Setup writes/reads to www.google.com |
| 2688 scoped_ptr<spdy::SpdyFrame> req( | 2688 scoped_ptr<spdy::SpdyFrame> req( |
| 2689 ConstructSpdyPacket(kSynStartHeader, | 2689 ConstructSpdyPacket(kSynStartHeader, |
| 2690 kExtraHeaders, | 2690 kExtraHeaders, |
| 2691 arraysize(kExtraHeaders) / 2, | 2691 arraysize(kExtraHeaders) / 2, |
| 2692 kStandardGetHeaders, | 2692 kStandardGetHeaders, |
| 2693 arraysize(kStandardGetHeaders) / 2)); | 2693 arraysize(kStandardGetHeaders) / 2)); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 2709 MockRead reads[] = { | 2709 MockRead reads[] = { |
| 2710 CreateMockRead(*resp, 2), | 2710 CreateMockRead(*resp, 2), |
| 2711 CreateMockRead(*rep, 3), | 2711 CreateMockRead(*rep, 3), |
| 2712 CreateMockRead(*body, 4), | 2712 CreateMockRead(*body, 4), |
| 2713 MockRead(ASYNC, ERR_IO_PENDING, 5), // Force a pause | 2713 MockRead(ASYNC, ERR_IO_PENDING, 5), // Force a pause |
| 2714 MockRead(ASYNC, 0, 0, 7) // EOF | 2714 MockRead(ASYNC, 0, 0, 7) // EOF |
| 2715 }; | 2715 }; |
| 2716 | 2716 |
| 2717 // Setup writes/reads to www.foo.com | 2717 // Setup writes/reads to www.foo.com |
| 2718 const char* const kStandardGetHeaders2[] = { | 2718 const char* const kStandardGetHeaders2[] = { |
| 2719 "host", | 2719 ":host", |
| 2720 "www.foo.com", | 2720 "www.foo.com", |
| 2721 "method", | 2721 ":method", |
| 2722 "GET", | 2722 "GET", |
| 2723 "scheme", | 2723 ":scheme", |
| 2724 "http", | 2724 "http", |
| 2725 "url", | 2725 ":path", |
| 2726 "/index.php", | 2726 "/index.php", |
| 2727 "user-agent", | 2727 "user-agent", |
| 2728 "", | 2728 "", |
| 2729 "version", | 2729 ":version", |
| 2730 "HTTP/1.1" | 2730 "HTTP/1.1" |
| 2731 }; | 2731 }; |
| 2732 scoped_ptr<spdy::SpdyFrame> req2( | 2732 scoped_ptr<spdy::SpdyFrame> req2( |
| 2733 ConstructSpdyPacket(kSynStartHeader, | 2733 ConstructSpdyPacket(kSynStartHeader, |
| 2734 kExtraHeaders, | 2734 kExtraHeaders, |
| 2735 arraysize(kExtraHeaders) / 2, | 2735 arraysize(kExtraHeaders) / 2, |
| 2736 kStandardGetHeaders2, | 2736 kStandardGetHeaders2, |
| 2737 arraysize(kStandardGetHeaders2) / 2)); | 2737 arraysize(kStandardGetHeaders2) / 2)); |
| 2738 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 1)); | 2738 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 2739 scoped_ptr<spdy::SpdyFrame> body2(ConstructSpdyBodyFrame(1, true)); | 2739 scoped_ptr<spdy::SpdyFrame> body2(ConstructSpdyBodyFrame(1, true)); |
| (...skipping 1158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3898 entries, 0, | 3898 entries, 0, |
| 3899 net::NetLog::TYPE_SPDY_SESSION_SYN_STREAM, | 3899 net::NetLog::TYPE_SPDY_SESSION_SYN_STREAM, |
| 3900 net::NetLog::PHASE_NONE); | 3900 net::NetLog::PHASE_NONE); |
| 3901 CapturingNetLog::Entry entry = entries[pos]; | 3901 CapturingNetLog::Entry entry = entries[pos]; |
| 3902 NetLogSpdySynParameter* request_params = | 3902 NetLogSpdySynParameter* request_params = |
| 3903 static_cast<NetLogSpdySynParameter*>(entry.extra_parameters.get()); | 3903 static_cast<NetLogSpdySynParameter*>(entry.extra_parameters.get()); |
| 3904 spdy::SpdyHeaderBlock* headers = | 3904 spdy::SpdyHeaderBlock* headers = |
| 3905 request_params->GetHeaders().get(); | 3905 request_params->GetHeaders().get(); |
| 3906 | 3906 |
| 3907 spdy::SpdyHeaderBlock expected; | 3907 spdy::SpdyHeaderBlock expected; |
| 3908 expected["host"] = "www.google.com"; | 3908 expected[":host"] = "www.google.com"; |
| 3909 expected["url"] = "/"; | 3909 expected[":path"] = "/"; |
| 3910 expected["scheme"] = "http"; | 3910 expected[":scheme"] = "http"; |
| 3911 expected["version"] = "HTTP/1.1"; | 3911 expected[":version"] = "HTTP/1.1"; |
| 3912 expected["method"] = "GET"; | 3912 expected[":method"] = "GET"; |
| 3913 expected["user-agent"] = "Chrome"; | 3913 expected["user-agent"] = "Chrome"; |
| 3914 EXPECT_EQ(expected.size(), headers->size()); | 3914 EXPECT_EQ(expected.size(), headers->size()); |
| 3915 spdy::SpdyHeaderBlock::const_iterator end = expected.end(); | 3915 spdy::SpdyHeaderBlock::const_iterator end = expected.end(); |
| 3916 for (spdy::SpdyHeaderBlock::const_iterator it = expected.begin(); | 3916 for (spdy::SpdyHeaderBlock::const_iterator it = expected.begin(); |
| 3917 it != end; | 3917 it != end; |
| 3918 ++it) { | 3918 ++it) { |
| 3919 EXPECT_EQ(it->second, (*headers)[it->first]); | 3919 EXPECT_EQ(it->second, (*headers)[it->first]); |
| 3920 } | 3920 } |
| 3921 } | 3921 } |
| 3922 | 3922 |
| (...skipping 1939 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5862 << " Write index: " | 5862 << " Write index: " |
| 5863 << data->write_index(); | 5863 << data->write_index(); |
| 5864 | 5864 |
| 5865 // Verify the SYN_REPLY. | 5865 // Verify the SYN_REPLY. |
| 5866 HttpResponseInfo response = *trans->GetResponseInfo(); | 5866 HttpResponseInfo response = *trans->GetResponseInfo(); |
| 5867 EXPECT_TRUE(response.headers != NULL); | 5867 EXPECT_TRUE(response.headers != NULL); |
| 5868 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); | 5868 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); |
| 5869 } | 5869 } |
| 5870 | 5870 |
| 5871 } // namespace net | 5871 } // namespace net |
| OLD | NEW |