| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/core/quic_headers_stream.h" | 5 #include "net/quic/core/quic_headers_stream.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
| 10 #include "net/quic/core/quic_bug_tracker.h" | 10 #include "net/quic/core/quic_bug_tracker.h" |
| (...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 523 stream_frame_.data_buffer = frame.data(); | 523 stream_frame_.data_buffer = frame.data(); |
| 524 stream_frame_.data_length = frame.size(); | 524 stream_frame_.data_length = frame.size(); |
| 525 headers_stream_->OnStreamFrame(stream_frame_); | 525 headers_stream_->OnStreamFrame(stream_frame_); |
| 526 if (perspective() == Perspective::IS_CLIENT) { | 526 if (perspective() == Perspective::IS_CLIENT) { |
| 527 stream_frame_.offset += frame.size(); | 527 stream_frame_.offset += frame.size(); |
| 528 CheckHeaders(); | 528 CheckHeaders(); |
| 529 } | 529 } |
| 530 } | 530 } |
| 531 } | 531 } |
| 532 | 532 |
| 533 TEST_P(QuicHeadersStreamTest, ProcessPushPromiseDisabledSetting) { |
| 534 FLAGS_quic_respect_http2_settings_frame = true; |
| 535 FLAGS_quic_enable_server_push_by_default = true; |
| 536 session_.OnConfigNegotiated(); |
| 537 SpdySettingsIR data; |
| 538 // Respect supported settings frames SETTINGS_ENABLE_PUSH. |
| 539 data.AddSetting(SETTINGS_ENABLE_PUSH, true, true, 0); |
| 540 SpdySerializedFrame frame(framer_->SerializeFrame(data)); |
| 541 stream_frame_.data_buffer = frame.data(); |
| 542 stream_frame_.data_length = frame.size(); |
| 543 if (perspective() == Perspective::IS_CLIENT) { |
| 544 EXPECT_CALL( |
| 545 *connection_, |
| 546 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, |
| 547 "Unsupported field of HTTP/2 SETTINGS frame: 9", _)); |
| 548 } |
| 549 headers_stream_->OnStreamFrame(stream_frame_); |
| 550 EXPECT_EQ( |
| 551 session_.server_push_enabled(), |
| 552 (perspective() == Perspective::IS_CLIENT && version() > QUIC_VERSION_34)); |
| 553 } |
| 554 |
| 533 TEST_P(QuicHeadersStreamTest, EmptyHeaderHOLBlockedTime) { | 555 TEST_P(QuicHeadersStreamTest, EmptyHeaderHOLBlockedTime) { |
| 534 EXPECT_CALL(session_, OnHeadersHeadOfLineBlocking(_)).Times(0); | 556 EXPECT_CALL(session_, OnHeadersHeadOfLineBlocking(_)).Times(0); |
| 535 testing::InSequence seq; | 557 testing::InSequence seq; |
| 536 bool fin = true; | 558 bool fin = true; |
| 537 for (int stream_num = 0; stream_num < 10; stream_num++) { | 559 for (int stream_num = 0; stream_num < 10; stream_num++) { |
| 538 QuicStreamId stream_id = QuicClientDataStreamId(stream_num); | 560 QuicStreamId stream_id = QuicClientDataStreamId(stream_num); |
| 539 // Replace with "WriteHeadersAndSaveData" | 561 // Replace with "WriteHeadersAndSaveData" |
| 540 SpdySerializedFrame frame; | 562 SpdySerializedFrame frame; |
| 541 if (perspective() == Perspective::IS_SERVER) { | 563 if (perspective() == Perspective::IS_SERVER) { |
| 542 SpdyHeadersIR headers_frame(stream_id, headers_.Clone()); | 564 SpdyHeadersIR headers_frame(stream_id, headers_.Clone()); |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 757 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, | 779 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, |
| 758 "Unsupported field of HTTP/2 SETTINGS frame: " + | 780 "Unsupported field of HTTP/2 SETTINGS frame: " + |
| 759 base::IntToString(SETTINGS_MAX_CONCURRENT_STREAMS), | 781 base::IntToString(SETTINGS_MAX_CONCURRENT_STREAMS), |
| 760 _)); | 782 _)); |
| 761 EXPECT_CALL( | 783 EXPECT_CALL( |
| 762 *connection_, | 784 *connection_, |
| 763 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, | 785 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, |
| 764 "Unsupported field of HTTP/2 SETTINGS frame: " + | 786 "Unsupported field of HTTP/2 SETTINGS frame: " + |
| 765 base::IntToString(SETTINGS_INITIAL_WINDOW_SIZE), | 787 base::IntToString(SETTINGS_INITIAL_WINDOW_SIZE), |
| 766 _)); | 788 _)); |
| 789 if (!FLAGS_quic_enable_server_push_by_default || |
| 790 session_.perspective() == Perspective::IS_CLIENT) { |
| 791 EXPECT_CALL(*connection_, |
| 792 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, |
| 793 "Unsupported field of HTTP/2 SETTINGS frame: " + |
| 794 base::IntToString(SETTINGS_ENABLE_PUSH), |
| 795 _)); |
| 796 } |
| 767 EXPECT_CALL(*connection_, | 797 EXPECT_CALL(*connection_, |
| 768 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, | 798 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, |
| 769 "Unsupported field of HTTP/2 SETTINGS frame: " + | 799 "Unsupported field of HTTP/2 SETTINGS frame: " + |
| 770 base::IntToString(SETTINGS_ENABLE_PUSH), | |
| 771 _)); | |
| 772 EXPECT_CALL(*connection_, | |
| 773 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, | |
| 774 "Unsupported field of HTTP/2 SETTINGS frame: " + | |
| 775 base::IntToString(SETTINGS_MAX_FRAME_SIZE), | 800 base::IntToString(SETTINGS_MAX_FRAME_SIZE), |
| 776 _)); | 801 _)); |
| 777 stream_frame_.data_buffer = frame.data(); | 802 stream_frame_.data_buffer = frame.data(); |
| 778 stream_frame_.data_length = frame.size(); | 803 stream_frame_.data_length = frame.size(); |
| 779 headers_stream_->OnStreamFrame(stream_frame_); | 804 headers_stream_->OnStreamFrame(stream_frame_); |
| 780 } | 805 } |
| 781 | 806 |
| 782 TEST_P(QuicHeadersStreamTest, ProcessSpdyPingFrame) { | 807 TEST_P(QuicHeadersStreamTest, ProcessSpdyPingFrame) { |
| 783 SpdyPingIR data(1); | 808 SpdyPingIR data(1); |
| 784 SpdySerializedFrame frame(framer_->SerializeFrame(data)); | 809 SpdySerializedFrame frame(framer_->SerializeFrame(data)); |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 963 } | 988 } |
| 964 saved_data_.clear(); | 989 saved_data_.clear(); |
| 965 saved_payloads_.clear(); | 990 saved_payloads_.clear(); |
| 966 } | 991 } |
| 967 } | 992 } |
| 968 } | 993 } |
| 969 | 994 |
| 970 } // namespace | 995 } // namespace |
| 971 } // namespace test | 996 } // namespace test |
| 972 } // namespace net | 997 } // namespace net |
| OLD | NEW |