Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/quic/bidirectional_stream_quic_impl.h" | 5 #include "net/quic/bidirectional_stream_quic_impl.h" |
| 6 | 6 |
| 7 #include "base/callback_helpers.h" | 7 #include "base/callback_helpers.h" |
| 8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
| 9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 61 std::unique_ptr<base::Timer> timer) | 61 std::unique_ptr<base::Timer> timer) |
| 62 : read_buf_(read_buf), | 62 : read_buf_(read_buf), |
| 63 read_buf_len_(read_buf_len), | 63 read_buf_len_(read_buf_len), |
| 64 timer_(std::move(timer)), | 64 timer_(std::move(timer)), |
| 65 loop_(nullptr), | 65 loop_(nullptr), |
| 66 error_(OK), | 66 error_(OK), |
| 67 on_data_read_count_(0), | 67 on_data_read_count_(0), |
| 68 on_data_sent_count_(0), | 68 on_data_sent_count_(0), |
| 69 not_expect_callback_(false), | 69 not_expect_callback_(false), |
| 70 on_failed_called_(false), | 70 on_failed_called_(false), |
| 71 send_request_headers_automatically_(true) { | 71 send_request_headers_automatically_(true), |
| 72 is_ready_(false) { | |
| 72 loop_.reset(new base::RunLoop); | 73 loop_.reset(new base::RunLoop); |
| 73 } | 74 } |
| 74 | 75 |
| 75 ~TestDelegateBase() override {} | 76 ~TestDelegateBase() override {} |
| 76 | 77 |
| 77 void OnStreamReady(bool request_headers_sent) override { | 78 void OnStreamReady(bool request_headers_sent) override { |
| 79 CHECK(!is_ready_); | |
| 78 CHECK(!on_failed_called_); | 80 CHECK(!on_failed_called_); |
| 79 EXPECT_EQ(send_request_headers_automatically_, request_headers_sent); | 81 EXPECT_EQ(send_request_headers_automatically_, request_headers_sent); |
| 80 CHECK(!not_expect_callback_); | 82 CHECK(!not_expect_callback_); |
| 81 loop_->Quit(); | 83 loop_->Quit(); |
| 84 is_ready_ = true; | |
|
xunjieli
2016/06/17 18:05:42
nit: maybe set |is_ready_| before exiting the |loo
Ryan Hamilton
2016/06/17 18:20:35
Done.
| |
| 82 } | 85 } |
| 83 | 86 |
| 84 void OnHeadersReceived(const SpdyHeaderBlock& response_headers) override { | 87 void OnHeadersReceived(const SpdyHeaderBlock& response_headers) override { |
| 85 CHECK(!on_failed_called_); | 88 CHECK(!on_failed_called_); |
| 86 CHECK(!not_expect_callback_); | 89 CHECK(!not_expect_callback_); |
| 87 | 90 |
| 88 response_headers_ = response_headers; | 91 response_headers_ = response_headers; |
| 89 loop_->Quit(); | 92 loop_->Quit(); |
| 90 } | 93 } |
| 91 | 94 |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 187 } | 190 } |
| 188 | 191 |
| 189 // Const getters for internal states. | 192 // Const getters for internal states. |
| 190 const std::string& data_received() const { return data_received_; } | 193 const std::string& data_received() const { return data_received_; } |
| 191 int error() const { return error_; } | 194 int error() const { return error_; } |
| 192 const SpdyHeaderBlock& response_headers() const { return response_headers_; } | 195 const SpdyHeaderBlock& response_headers() const { return response_headers_; } |
| 193 const SpdyHeaderBlock& trailers() const { return trailers_; } | 196 const SpdyHeaderBlock& trailers() const { return trailers_; } |
| 194 int on_data_read_count() const { return on_data_read_count_; } | 197 int on_data_read_count() const { return on_data_read_count_; } |
| 195 int on_data_sent_count() const { return on_data_sent_count_; } | 198 int on_data_sent_count() const { return on_data_sent_count_; } |
| 196 bool on_failed_called() const { return on_failed_called_; } | 199 bool on_failed_called() const { return on_failed_called_; } |
| 200 bool is_ready() const { return is_ready_; } | |
| 197 | 201 |
| 198 protected: | 202 protected: |
| 199 // Quits |loop_|. | 203 // Quits |loop_|. |
| 200 void QuitLoop() { loop_->Quit(); } | 204 void QuitLoop() { loop_->Quit(); } |
| 201 | 205 |
| 202 // Deletes |stream_|. | 206 // Deletes |stream_|. |
| 203 void DeleteStream() { stream_.reset(); } | 207 void DeleteStream() { stream_.reset(); } |
| 204 | 208 |
| 205 private: | 209 private: |
| 206 std::unique_ptr<BidirectionalStreamQuicImpl> stream_; | 210 std::unique_ptr<BidirectionalStreamQuicImpl> stream_; |
| 207 scoped_refptr<IOBuffer> read_buf_; | 211 scoped_refptr<IOBuffer> read_buf_; |
| 208 int read_buf_len_; | 212 int read_buf_len_; |
| 209 std::unique_ptr<base::Timer> timer_; | 213 std::unique_ptr<base::Timer> timer_; |
| 210 std::string data_received_; | 214 std::string data_received_; |
| 211 std::unique_ptr<base::RunLoop> loop_; | 215 std::unique_ptr<base::RunLoop> loop_; |
| 212 SpdyHeaderBlock response_headers_; | 216 SpdyHeaderBlock response_headers_; |
| 213 SpdyHeaderBlock trailers_; | 217 SpdyHeaderBlock trailers_; |
| 214 int error_; | 218 int error_; |
| 215 int on_data_read_count_; | 219 int on_data_read_count_; |
| 216 int on_data_sent_count_; | 220 int on_data_sent_count_; |
| 217 // This is to ensure that delegate callback is not invoked synchronously when | 221 // This is to ensure that delegate callback is not invoked synchronously when |
| 218 // calling into |stream_|. | 222 // calling into |stream_|. |
| 219 bool not_expect_callback_; | 223 bool not_expect_callback_; |
| 220 bool on_failed_called_; | 224 bool on_failed_called_; |
| 221 CompletionCallback callback_; | 225 CompletionCallback callback_; |
| 222 bool send_request_headers_automatically_; | 226 bool send_request_headers_automatically_; |
| 227 bool is_ready_; | |
| 223 | 228 |
| 224 DISALLOW_COPY_AND_ASSIGN(TestDelegateBase); | 229 DISALLOW_COPY_AND_ASSIGN(TestDelegateBase); |
| 225 }; | 230 }; |
| 226 | 231 |
| 227 // A delegate that deletes the stream in a particular callback. | 232 // A delegate that deletes the stream in a particular callback. |
| 228 class DeleteStreamDelegate : public TestDelegateBase { | 233 class DeleteStreamDelegate : public TestDelegateBase { |
| 229 public: | 234 public: |
| 230 // Specifies in which callback the stream can be deleted. | 235 // Specifies in which callback the stream can be deleted. |
| 231 enum Phase { | 236 enum Phase { |
| 232 ON_HEADERS_RECEIVED, | 237 ON_HEADERS_RECEIVED, |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 335 void AddWrite(std::unique_ptr<QuicReceivedPacket> packet) { | 340 void AddWrite(std::unique_ptr<QuicReceivedPacket> packet) { |
| 336 writes_.push_back(PacketToWrite(SYNCHRONOUS, packet.release())); | 341 writes_.push_back(PacketToWrite(SYNCHRONOUS, packet.release())); |
| 337 } | 342 } |
| 338 | 343 |
| 339 void ProcessPacket(std::unique_ptr<QuicReceivedPacket> packet) { | 344 void ProcessPacket(std::unique_ptr<QuicReceivedPacket> packet) { |
| 340 connection_->ProcessUdpPacket(self_addr_, peer_addr_, *packet); | 345 connection_->ProcessUdpPacket(self_addr_, peer_addr_, *packet); |
| 341 } | 346 } |
| 342 | 347 |
| 343 // Configures the test fixture to use the list of expected writes. | 348 // Configures the test fixture to use the list of expected writes. |
| 344 void Initialize() { | 349 void Initialize() { |
| 350 crypto_client_stream_factory_.set_handshake_mode( | |
| 351 MockCryptoClientStream::ZERO_RTT); | |
| 345 mock_writes_.reset(new MockWrite[writes_.size()]); | 352 mock_writes_.reset(new MockWrite[writes_.size()]); |
| 346 for (size_t i = 0; i < writes_.size(); i++) { | 353 for (size_t i = 0; i < writes_.size(); i++) { |
| 347 if (writes_[i].packet == nullptr) { | 354 if (writes_[i].packet == nullptr) { |
| 348 mock_writes_[i] = MockWrite(writes_[i].mode, writes_[i].rv, i); | 355 mock_writes_[i] = MockWrite(writes_[i].mode, writes_[i].rv, i); |
| 349 } else { | 356 } else { |
| 350 mock_writes_[i] = MockWrite(writes_[i].mode, writes_[i].packet->data(), | 357 mock_writes_[i] = MockWrite(writes_[i].mode, writes_[i].packet->data(), |
| 351 writes_[i].packet->length()); | 358 writes_[i].packet->length()); |
| 352 } | 359 } |
| 353 } | 360 } |
| 354 | 361 |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 375 QuicServerId(kDefaultServerHostName, kDefaultServerPort, | 382 QuicServerId(kDefaultServerHostName, kDefaultServerPort, |
| 376 PRIVACY_MODE_DISABLED), | 383 PRIVACY_MODE_DISABLED), |
| 377 kQuicYieldAfterPacketsRead, | 384 kQuicYieldAfterPacketsRead, |
| 378 QuicTime::Delta::FromMilliseconds(kQuicYieldAfterDurationMilliseconds), | 385 QuicTime::Delta::FromMilliseconds(kQuicYieldAfterDurationMilliseconds), |
| 379 /*cert_verify_flags=*/0, DefaultQuicConfig(), &crypto_config_, | 386 /*cert_verify_flags=*/0, DefaultQuicConfig(), &crypto_config_, |
| 380 "CONNECTION_UNKNOWN", base::TimeTicks::Now(), &push_promise_index_, | 387 "CONNECTION_UNKNOWN", base::TimeTicks::Now(), &push_promise_index_, |
| 381 base::ThreadTaskRunnerHandle::Get().get(), | 388 base::ThreadTaskRunnerHandle::Get().get(), |
| 382 /*socket_performance_watcher=*/nullptr, net_log().bound().net_log())); | 389 /*socket_performance_watcher=*/nullptr, net_log().bound().net_log())); |
| 383 session_->Initialize(); | 390 session_->Initialize(); |
| 384 session_->GetCryptoStream()->CryptoConnect(); | 391 session_->GetCryptoStream()->CryptoConnect(); |
| 385 EXPECT_TRUE(session_->IsCryptoHandshakeConfirmed()); | 392 EXPECT_TRUE(session_->IsEncryptionEstablished()); |
| 393 } | |
| 394 | |
| 395 void ConfirmHandshake() { | |
| 396 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( | |
| 397 QuicSession::HANDSHAKE_CONFIRMED); | |
| 386 } | 398 } |
| 387 | 399 |
| 388 void SetRequest(const std::string& method, | 400 void SetRequest(const std::string& method, |
| 389 const std::string& path, | 401 const std::string& path, |
| 390 RequestPriority priority) { | 402 RequestPriority priority) { |
| 391 request_headers_ = client_maker_.GetRequestHeaders(method, "http", path); | 403 request_headers_ = client_maker_.GetRequestHeaders(method, "http", path); |
| 392 } | 404 } |
| 393 | 405 |
| 394 SpdyHeaderBlock ConstructResponseHeaders(const std::string& response_code) { | 406 SpdyHeaderBlock ConstructResponseHeaders(const std::string& response_code) { |
| 395 return server_maker_.GetResponseHeaders(response_code); | 407 return server_maker_.GetResponseHeaders(response_code); |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 708 BidirectionalStreamRequestInfo request; | 720 BidirectionalStreamRequestInfo request; |
| 709 request.method = "POST"; | 721 request.method = "POST"; |
| 710 request.url = GURL("http://www.google.com/"); | 722 request.url = GURL("http://www.google.com/"); |
| 711 request.end_stream_on_headers = false; | 723 request.end_stream_on_headers = false; |
| 712 request.priority = DEFAULT_PRIORITY; | 724 request.priority = DEFAULT_PRIORITY; |
| 713 | 725 |
| 714 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 726 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
| 715 std::unique_ptr<TestDelegateBase> delegate( | 727 std::unique_ptr<TestDelegateBase> delegate( |
| 716 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 728 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
| 717 delegate->DoNotSendRequestHeadersAutomatically(); | 729 delegate->DoNotSendRequestHeadersAutomatically(); |
| 718 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 730 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
|
xunjieli
2016/06/17 18:05:42
Does QuicStreamRequest always finish synchronously
Ryan Hamilton
2016/06/17 18:20:35
No, it's not guaranteed to complete synchronously.
| |
| 731 EXPECT_FALSE(delegate->is_ready()); | |
| 732 ConfirmHandshake(); | |
| 719 delegate->WaitUntilNextCallback(); // OnStreamReady | 733 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 720 | 734 |
| 721 // Sends request headers separately, which causes them to be sent in a | 735 // Sends request headers separately, which causes them to be sent in a |
| 722 // separate packet. | 736 // separate packet. |
| 723 delegate->SendRequestHeaders(); | 737 delegate->SendRequestHeaders(); |
| 724 // Send a Data packet. | 738 // Send a Data packet. |
| 725 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1)); | 739 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1)); |
| 726 scoped_refptr<StringIOBuffer> buf2(new StringIOBuffer(kBody2)); | 740 scoped_refptr<StringIOBuffer> buf2(new StringIOBuffer(kBody2)); |
| 727 | 741 |
| 728 std::vector<int> lengths = {buf1->size(), buf2->size()}; | 742 std::vector<int> lengths = {buf1->size(), buf2->size()}; |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 812 request.method = "POST"; | 826 request.method = "POST"; |
| 813 request.url = GURL("http://www.google.com/"); | 827 request.url = GURL("http://www.google.com/"); |
| 814 request.end_stream_on_headers = false; | 828 request.end_stream_on_headers = false; |
| 815 request.priority = DEFAULT_PRIORITY; | 829 request.priority = DEFAULT_PRIORITY; |
| 816 | 830 |
| 817 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 831 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
| 818 std::unique_ptr<TestDelegateBase> delegate( | 832 std::unique_ptr<TestDelegateBase> delegate( |
| 819 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 833 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
| 820 delegate->DoNotSendRequestHeadersAutomatically(); | 834 delegate->DoNotSendRequestHeadersAutomatically(); |
| 821 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 835 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
| 836 ConfirmHandshake(); | |
| 822 delegate->WaitUntilNextCallback(); // OnStreamReady | 837 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 823 | 838 |
| 824 // Send a Data packet. | 839 // Send a Data packet. |
| 825 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1)); | 840 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1)); |
| 826 | 841 |
| 827 delegate->SendData(buf1, buf1->size(), false); | 842 delegate->SendData(buf1, buf1->size(), false); |
| 828 delegate->WaitUntilNextCallback(); // OnDataSent | 843 delegate->WaitUntilNextCallback(); // OnDataSent |
| 829 | 844 |
| 830 // Server acks the request. | 845 // Server acks the request. |
| 831 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 846 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 909 request.method = "POST"; | 924 request.method = "POST"; |
| 910 request.url = GURL("http://www.google.com/"); | 925 request.url = GURL("http://www.google.com/"); |
| 911 request.end_stream_on_headers = false; | 926 request.end_stream_on_headers = false; |
| 912 request.priority = DEFAULT_PRIORITY; | 927 request.priority = DEFAULT_PRIORITY; |
| 913 | 928 |
| 914 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 929 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
| 915 std::unique_ptr<TestDelegateBase> delegate( | 930 std::unique_ptr<TestDelegateBase> delegate( |
| 916 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 931 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
| 917 delegate->DoNotSendRequestHeadersAutomatically(); | 932 delegate->DoNotSendRequestHeadersAutomatically(); |
| 918 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 933 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
| 934 ConfirmHandshake(); | |
| 919 delegate->WaitUntilNextCallback(); // OnStreamReady | 935 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 920 | 936 |
| 921 // Send a Data packet. | 937 // Send a Data packet. |
| 922 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1)); | 938 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1)); |
| 923 scoped_refptr<StringIOBuffer> buf2(new StringIOBuffer(kBody2)); | 939 scoped_refptr<StringIOBuffer> buf2(new StringIOBuffer(kBody2)); |
| 924 | 940 |
| 925 std::vector<int> lengths = {buf1->size(), buf2->size()}; | 941 std::vector<int> lengths = {buf1->size(), buf2->size()}; |
| 926 delegate->SendvData({buf1, buf2}, lengths, !kFin); | 942 delegate->SendvData({buf1, buf2}, lengths, !kFin); |
| 927 delegate->WaitUntilNextCallback(); // OnDataSent | 943 delegate->WaitUntilNextCallback(); // OnDataSent |
| 928 | 944 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 999 BidirectionalStreamRequestInfo request; | 1015 BidirectionalStreamRequestInfo request; |
| 1000 request.method = "POST"; | 1016 request.method = "POST"; |
| 1001 request.url = GURL("http://www.google.com/"); | 1017 request.url = GURL("http://www.google.com/"); |
| 1002 request.end_stream_on_headers = false; | 1018 request.end_stream_on_headers = false; |
| 1003 request.priority = DEFAULT_PRIORITY; | 1019 request.priority = DEFAULT_PRIORITY; |
| 1004 | 1020 |
| 1005 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 1021 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
| 1006 std::unique_ptr<TestDelegateBase> delegate( | 1022 std::unique_ptr<TestDelegateBase> delegate( |
| 1007 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 1023 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
| 1008 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 1024 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
| 1025 ConfirmHandshake(); | |
| 1009 delegate->WaitUntilNextCallback(); // OnStreamReady | 1026 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 1010 | 1027 |
| 1011 // Send a DATA frame. | 1028 // Send a DATA frame. |
| 1012 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); | 1029 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); |
| 1013 | 1030 |
| 1014 delegate->SendData(buf, buf->size(), true); | 1031 delegate->SendData(buf, buf->size(), true); |
| 1015 delegate->WaitUntilNextCallback(); // OnDataSent | 1032 delegate->WaitUntilNextCallback(); // OnDataSent |
| 1016 | 1033 |
| 1017 // Server acks the request. | 1034 // Server acks the request. |
| 1018 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1035 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1077 BidirectionalStreamRequestInfo request; | 1094 BidirectionalStreamRequestInfo request; |
| 1078 request.method = "POST"; | 1095 request.method = "POST"; |
| 1079 request.url = GURL("http://www.google.com/"); | 1096 request.url = GURL("http://www.google.com/"); |
| 1080 request.end_stream_on_headers = false; | 1097 request.end_stream_on_headers = false; |
| 1081 request.priority = DEFAULT_PRIORITY; | 1098 request.priority = DEFAULT_PRIORITY; |
| 1082 | 1099 |
| 1083 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 1100 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
| 1084 std::unique_ptr<TestDelegateBase> delegate( | 1101 std::unique_ptr<TestDelegateBase> delegate( |
| 1085 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 1102 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
| 1086 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 1103 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
| 1104 ConfirmHandshake(); | |
| 1087 delegate->WaitUntilNextCallback(); // OnStreamReady | 1105 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 1088 | 1106 |
| 1089 // Server acks the request. | 1107 // Server acks the request. |
| 1090 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1108 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1091 | 1109 |
| 1092 // Server sends the response headers. | 1110 // Server sends the response headers. |
| 1093 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1111 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1094 size_t spdy_response_headers_frame_length; | 1112 size_t spdy_response_headers_frame_length; |
| 1095 ProcessPacket(ConstructResponseHeadersPacket( | 1113 ProcessPacket(ConstructResponseHeadersPacket( |
| 1096 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); | 1114 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1156 request.method = "GET"; | 1174 request.method = "GET"; |
| 1157 request.url = GURL("http://www.google.com/"); | 1175 request.url = GURL("http://www.google.com/"); |
| 1158 request.end_stream_on_headers = true; | 1176 request.end_stream_on_headers = true; |
| 1159 request.priority = DEFAULT_PRIORITY; | 1177 request.priority = DEFAULT_PRIORITY; |
| 1160 | 1178 |
| 1161 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 1179 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
| 1162 std::unique_ptr<TestDelegateBase> delegate( | 1180 std::unique_ptr<TestDelegateBase> delegate( |
| 1163 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 1181 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
| 1164 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 1182 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
| 1165 delegate->WaitUntilNextCallback(); // OnStreamReady | 1183 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 1184 ConfirmHandshake(); | |
| 1166 | 1185 |
| 1167 // Server sends a Rst. | 1186 // Server sends a Rst. |
| 1168 ProcessPacket(ConstructServerRstStreamPacket(1)); | 1187 ProcessPacket(ConstructServerRstStreamPacket(1)); |
| 1169 | 1188 |
| 1170 delegate->WaitUntilNextCallback(); // OnFailed | 1189 delegate->WaitUntilNextCallback(); // OnFailed |
| 1171 TestCompletionCallback cb; | 1190 TestCompletionCallback cb; |
| 1172 EXPECT_EQ(ERR_QUIC_PROTOCOL_ERROR, delegate->ReadData(cb.callback())); | 1191 EXPECT_EQ(ERR_QUIC_PROTOCOL_ERROR, delegate->ReadData(cb.callback())); |
| 1173 | 1192 |
| 1174 base::RunLoop().RunUntilIdle(); | 1193 base::RunLoop().RunUntilIdle(); |
| 1175 | 1194 |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 1195 request.method = "GET"; | 1214 request.method = "GET"; |
| 1196 request.url = GURL("http://www.google.com/"); | 1215 request.url = GURL("http://www.google.com/"); |
| 1197 request.end_stream_on_headers = true; | 1216 request.end_stream_on_headers = true; |
| 1198 request.priority = DEFAULT_PRIORITY; | 1217 request.priority = DEFAULT_PRIORITY; |
| 1199 | 1218 |
| 1200 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 1219 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
| 1201 std::unique_ptr<TestDelegateBase> delegate( | 1220 std::unique_ptr<TestDelegateBase> delegate( |
| 1202 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 1221 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
| 1203 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 1222 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
| 1204 delegate->WaitUntilNextCallback(); // OnStreamReady | 1223 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 1224 ConfirmHandshake(); | |
| 1205 | 1225 |
| 1206 // Server acks the request. | 1226 // Server acks the request. |
| 1207 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1227 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1208 | 1228 |
| 1209 // Server sends the response headers. | 1229 // Server sends the response headers. |
| 1210 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1230 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1211 | 1231 |
| 1212 size_t spdy_response_headers_frame_length; | 1232 size_t spdy_response_headers_frame_length; |
| 1213 QuicStreamOffset offset = 0; | 1233 QuicStreamOffset offset = 0; |
| 1214 ProcessPacket(ConstructResponseHeadersPacket( | 1234 ProcessPacket(ConstructResponseHeadersPacket( |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1252 BidirectionalStreamRequestInfo request; | 1272 BidirectionalStreamRequestInfo request; |
| 1253 request.method = "POST"; | 1273 request.method = "POST"; |
| 1254 request.url = GURL("http://www.google.com/"); | 1274 request.url = GURL("http://www.google.com/"); |
| 1255 request.end_stream_on_headers = false; | 1275 request.end_stream_on_headers = false; |
| 1256 request.priority = DEFAULT_PRIORITY; | 1276 request.priority = DEFAULT_PRIORITY; |
| 1257 | 1277 |
| 1258 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 1278 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
| 1259 std::unique_ptr<TestDelegateBase> delegate( | 1279 std::unique_ptr<TestDelegateBase> delegate( |
| 1260 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 1280 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
| 1261 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 1281 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
| 1282 ConfirmHandshake(); | |
| 1262 delegate->WaitUntilNextCallback(); // OnStreamReady | 1283 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 1263 | 1284 |
| 1264 // Server acks the request. | 1285 // Server acks the request. |
| 1265 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1286 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1266 | 1287 |
| 1267 // Server sends the response headers. | 1288 // Server sends the response headers. |
| 1268 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1289 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1269 size_t spdy_response_headers_frame_length; | 1290 size_t spdy_response_headers_frame_length; |
| 1270 ProcessPacket(ConstructResponseHeadersPacket( | 1291 ProcessPacket(ConstructResponseHeadersPacket( |
| 1271 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); | 1292 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1307 BidirectionalStreamRequestInfo request; | 1328 BidirectionalStreamRequestInfo request; |
| 1308 request.method = "POST"; | 1329 request.method = "POST"; |
| 1309 request.url = GURL("http://www.google.com/"); | 1330 request.url = GURL("http://www.google.com/"); |
| 1310 request.end_stream_on_headers = false; | 1331 request.end_stream_on_headers = false; |
| 1311 request.priority = DEFAULT_PRIORITY; | 1332 request.priority = DEFAULT_PRIORITY; |
| 1312 | 1333 |
| 1313 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 1334 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
| 1314 std::unique_ptr<TestDelegateBase> delegate( | 1335 std::unique_ptr<TestDelegateBase> delegate( |
| 1315 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 1336 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
| 1316 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 1337 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
| 1338 ConfirmHandshake(); | |
| 1317 delegate->WaitUntilNextCallback(); // OnStreamReady | 1339 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 1318 | 1340 |
| 1319 // Server acks the request. | 1341 // Server acks the request. |
| 1320 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1342 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1321 | 1343 |
| 1322 // Server sends the response headers. | 1344 // Server sends the response headers. |
| 1323 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1345 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1324 | 1346 |
| 1325 size_t spdy_response_headers_frame_length; | 1347 size_t spdy_response_headers_frame_length; |
| 1326 QuicStreamOffset offset = 0; | 1348 QuicStreamOffset offset = 0; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1365 BidirectionalStreamRequestInfo request; | 1387 BidirectionalStreamRequestInfo request; |
| 1366 request.method = "POST"; | 1388 request.method = "POST"; |
| 1367 request.url = GURL("http://www.google.com/"); | 1389 request.url = GURL("http://www.google.com/"); |
| 1368 request.end_stream_on_headers = false; | 1390 request.end_stream_on_headers = false; |
| 1369 request.priority = DEFAULT_PRIORITY; | 1391 request.priority = DEFAULT_PRIORITY; |
| 1370 | 1392 |
| 1371 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 1393 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
| 1372 std::unique_ptr<TestDelegateBase> delegate( | 1394 std::unique_ptr<TestDelegateBase> delegate( |
| 1373 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 1395 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
| 1374 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 1396 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
| 1397 ConfirmHandshake(); | |
| 1375 delegate->WaitUntilNextCallback(); // OnStreamReady | 1398 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 1376 | 1399 |
| 1377 // Server acks the request. | 1400 // Server acks the request. |
| 1378 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1401 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1379 | 1402 |
| 1380 // Server sends the response headers. | 1403 // Server sends the response headers. |
| 1381 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1404 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1382 size_t spdy_response_headers_frame_length; | 1405 size_t spdy_response_headers_frame_length; |
| 1383 ProcessPacket(ConstructResponseHeadersPacket( | 1406 ProcessPacket(ConstructResponseHeadersPacket( |
| 1384 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); | 1407 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 1415 request.method = "POST"; | 1438 request.method = "POST"; |
| 1416 request.url = GURL("http://www.google.com/"); | 1439 request.url = GURL("http://www.google.com/"); |
| 1417 request.end_stream_on_headers = false; | 1440 request.end_stream_on_headers = false; |
| 1418 request.priority = DEFAULT_PRIORITY; | 1441 request.priority = DEFAULT_PRIORITY; |
| 1419 | 1442 |
| 1420 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 1443 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
| 1421 std::unique_ptr<DeleteStreamDelegate> delegate( | 1444 std::unique_ptr<DeleteStreamDelegate> delegate( |
| 1422 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize, | 1445 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize, |
| 1423 DeleteStreamDelegate::ON_HEADERS_RECEIVED)); | 1446 DeleteStreamDelegate::ON_HEADERS_RECEIVED)); |
| 1424 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 1447 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
| 1448 ConfirmHandshake(); | |
| 1425 delegate->WaitUntilNextCallback(); // OnStreamReady | 1449 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 1426 | 1450 |
| 1427 // Server acks the request. | 1451 // Server acks the request. |
| 1428 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1452 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1429 | 1453 |
| 1430 // Server sends the response headers. | 1454 // Server sends the response headers. |
| 1431 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1455 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1432 | 1456 |
| 1433 size_t spdy_response_headers_frame_length; | 1457 size_t spdy_response_headers_frame_length; |
| 1434 ProcessPacket(ConstructResponseHeadersPacket( | 1458 ProcessPacket(ConstructResponseHeadersPacket( |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 1457 BidirectionalStreamRequestInfo request; | 1481 BidirectionalStreamRequestInfo request; |
| 1458 request.method = "POST"; | 1482 request.method = "POST"; |
| 1459 request.url = GURL("http://www.google.com/"); | 1483 request.url = GURL("http://www.google.com/"); |
| 1460 request.end_stream_on_headers = false; | 1484 request.end_stream_on_headers = false; |
| 1461 request.priority = DEFAULT_PRIORITY; | 1485 request.priority = DEFAULT_PRIORITY; |
| 1462 | 1486 |
| 1463 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 1487 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
| 1464 std::unique_ptr<DeleteStreamDelegate> delegate(new DeleteStreamDelegate( | 1488 std::unique_ptr<DeleteStreamDelegate> delegate(new DeleteStreamDelegate( |
| 1465 read_buffer.get(), kReadBufferSize, DeleteStreamDelegate::ON_DATA_READ)); | 1489 read_buffer.get(), kReadBufferSize, DeleteStreamDelegate::ON_DATA_READ)); |
| 1466 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 1490 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
| 1491 ConfirmHandshake(); | |
| 1467 delegate->WaitUntilNextCallback(); // OnStreamReady | 1492 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 1468 | 1493 |
| 1469 // Server acks the request. | 1494 // Server acks the request. |
| 1470 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1495 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1471 | 1496 |
| 1472 // Server sends the response headers. | 1497 // Server sends the response headers. |
| 1473 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1498 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1474 | 1499 |
| 1475 size_t spdy_response_headers_frame_length; | 1500 size_t spdy_response_headers_frame_length; |
| 1476 ProcessPacket(ConstructResponseHeadersPacket( | 1501 ProcessPacket(ConstructResponseHeadersPacket( |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1510 request.url = GURL("http://www.google.com/"); | 1535 request.url = GURL("http://www.google.com/"); |
| 1511 request.end_stream_on_headers = true; | 1536 request.end_stream_on_headers = true; |
| 1512 request.priority = DEFAULT_PRIORITY; | 1537 request.priority = DEFAULT_PRIORITY; |
| 1513 | 1538 |
| 1514 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 1539 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
| 1515 std::unique_ptr<DeleteStreamDelegate> delegate( | 1540 std::unique_ptr<DeleteStreamDelegate> delegate( |
| 1516 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize, | 1541 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize, |
| 1517 DeleteStreamDelegate::ON_TRAILERS_RECEIVED)); | 1542 DeleteStreamDelegate::ON_TRAILERS_RECEIVED)); |
| 1518 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 1543 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
| 1519 delegate->WaitUntilNextCallback(); // OnStreamReady | 1544 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 1545 ConfirmHandshake(); | |
|
xunjieli
2016/06/17 18:05:43
You have examples here to demonstrate that GET doe
Ryan Hamilton
2016/06/17 18:20:35
Done.
| |
| 1520 | 1546 |
| 1521 // Server acks the request. | 1547 // Server acks the request. |
| 1522 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1548 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1523 | 1549 |
| 1524 // Server sends the response headers. | 1550 // Server sends the response headers. |
| 1525 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1551 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1526 | 1552 |
| 1527 QuicStreamOffset offset = 0; | 1553 QuicStreamOffset offset = 0; |
| 1528 size_t spdy_response_headers_frame_length; | 1554 size_t spdy_response_headers_frame_length; |
| 1529 ProcessPacket(ConstructResponseHeadersPacket( | 1555 ProcessPacket(ConstructResponseHeadersPacket( |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 1559 | 1585 |
| 1560 base::RunLoop().RunUntilIdle(); | 1586 base::RunLoop().RunUntilIdle(); |
| 1561 | 1587 |
| 1562 EXPECT_EQ(1, delegate->on_data_read_count()); | 1588 EXPECT_EQ(1, delegate->on_data_read_count()); |
| 1563 EXPECT_EQ(0, delegate->on_data_sent_count()); | 1589 EXPECT_EQ(0, delegate->on_data_sent_count()); |
| 1564 } | 1590 } |
| 1565 | 1591 |
| 1566 } // namespace test | 1592 } // namespace test |
| 1567 | 1593 |
| 1568 } // namespace net | 1594 } // namespace net |
| OLD | NEW |