0

Roll src/net/third_party/quiche/src/ 2ee23aefd..9997e8e06 (45 commits)

https://quiche.googlesource.com/quiche.git/+log/2ee23aefde68..9997e8e06b9e

$ git log 2ee23aefd..9997e8e06 --date=short --no-merges --format='%ad %ae %s'
2021-08-24 wub Include quic_flag_utils.h from transport_parameters.cc, to make QUIC_RELOADABLE_FLAG_COUNT compile in Chromium.
2021-08-24 wub Internal change
2021-08-24 wub Remove BbrSender::IsAtFullBandwidth and BbrSender::ShouldExtendMinRttExpiry, both are declared but not implemented.
2021-08-23 dschinazi Internal change
2021-08-23 quiche-dev Adds a boolean return value to Http2VisitorInterface::OnDataForStream().
2021-08-23 quiche-dev Adds DCHECKs to invocations of on_frame_recv_callback(), verifying that these callbacks always return success.
2021-08-23 quiche-dev Adds a boolean return value to Http2VisitorInterface::OnBeginDataForStream.
2021-08-23 haoyuewang Deprecate --gfe2_reloadable_flag_quic_discard_packets_with_invalid_cid
2021-08-23 ianswett Deprecate gfe2_reloadable_flag_quic_queue_until_handshake_complete.
2021-08-23 wub Internal change
2021-08-23 quiche-dev Adds a boolean return value to Http2VisitorInterface::OnGoAway.
2021-08-23 quiche-dev Adds a boolean return value to Http2VisitorInterface::OnFrameHeader.
2021-08-20 quiche-dev Adds a boolean return value to Http2VisitorInterface::OnEndHeadersForStream().
2021-08-18 vasilvv Provide a default implementation for quic_containers.h header.
2021-08-18 quiche-dev Transforms output parameters into return values for HPACK methods that return encoded strings.
2021-08-18 quiche-dev Minor cleanup to HPACK code: removes a parameter that is always nullptr outside of tests.
2021-08-18 renjietang Internal change
2021-08-17 haoyuewang Deprecate --gfe2_reloadable_flag_quic_group_path_response_and_challenge_sending_closer
2021-08-16 dschinazi Drop QUIC packets with invalid flags
2021-08-16 fayang Add upper bound flag FLAGS_quic_time_wait_list_max_pending_packets (default to 1K) for pending_queued_packets_ in time wait list.
2021-08-16 quiche-dev Adds metadata sending support to NgHttp2Adapter.
2021-08-16 dschinazi Remove dead code in MASQUE
2021-08-13 dschinazi Randomize the order of sent transport parameters
2021-08-13 dschinazi Refactor SerializeTransportParameters
2021-08-13 haoyuewang Remove chrome value false for --quic_allocate_stream_sequencer_buffer_blocks_on_demand.
2021-08-12 wub Internal change
2021-08-11 haoyuewang Internal change
2021-08-11 wub Internal change
2021-08-11 bnc Move EXPECT_EQ macro magic from quic/platform to quiche/platform.
2021-08-11 quiche-dev Make code -Wunused-but-set-variable clean
2021-08-10 quiche-dev Removes Http2VisitorInterface methods OnReadyToSendDataForStream() and OnReadyToSendMetadataForStream().
2021-08-10 bnc Always use int64_t to store ProcessBytes() return value.
2021-08-10 dschinazi Add regression test for arbitrary memory allocation in HTTP decoder
2021-08-10 bnc Do not call GetQuicReloadableFlag() from QuicVersionManager constructor.
2021-08-10 wub In QUIC TlsServerHandshaker, ensure DecryptCallback runs at most once.
2021-08-10 bnc Fix more signed-unsigned comparisons in QUICHE.
2021-08-10 haoyuewang Deprecate --gfe2_reloadable_flag_quic_connection_support_multiple_cids_v4
2021-08-10 vasilvv Remove QuicMemSliceSpan and TestQuicMemSliceVector.
2021-08-10 wub Deflake QuicIdleNetworkDetectorTest by always enabling --quic_idle_network_detector_no_alarm_after_stopped, which is being rolled out this week.
2021-08-10 bnc Use int64_t instead of ssize_t in third_party/http2/adapter.
2021-08-09 haoyuewang Consult self_issued_connection_id_manager instead of default_path_ for connection ID to look up session in session map.
2021-08-09 wub Deprecate --gfe2_reloadable_flag_quic_tls_allow_ignore_ticket_open.
2021-08-09 bnc Deprecate --gfe2_reloadable_flag_quic_include_port_in_alps_origin.
2021-08-09 wub Deprecate --gfe2_reloadable_flag_quic_run_default_signature_callback_once.
2021-08-06 quiche-dev Adds a return value to Http2VisitorInterface::OnMetadataForStream().

Created with:
  roll-dep src/net/third_party/quiche/src src/third_party/quic_trace/src

Change-Id: I8716af65a26b9e24881e945a3493f8d986faec90
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3114396
Reviewed-by: Clark DuVall <cduvall@chromium.org>
Reviewed-by: David Schinazi <dschinazi@chromium.org>
Commit-Queue: Bin Wu <wub@chromium.org>
Cr-Commit-Position: refs/heads/main@{#914958}
This commit is contained in:
Bin Wu
2021-08-24 23:25:16 +00:00
committed by Chromium LUCI CQ
parent 670c4c3c80
commit e840879769
14 changed files with 32 additions and 304 deletions

2
DEPS

@ -351,7 +351,7 @@ vars = {
# Three lines of non-changing comments so that
# the commit queue can handle CLs rolling feed
# and whatever else without interference from each other.
'quiche_revision': '2ee23aefde68dedeaa24b918553e946bbc05c012',
'quiche_revision': '9997e8e06b9ee68fe941e4c2148d94bf8bbced42',
# Three lines of non-changing comments so that
# the commit queue can handle CLs rolling ios_webkit
# and whatever else without interference from each other.

@ -772,10 +772,6 @@ component("net") {
"quic/platform/impl/quic_iovec_impl.h",
"quic/platform/impl/quic_mem_slice_impl.cc",
"quic/platform/impl/quic_mem_slice_impl.h",
"quic/platform/impl/quic_mem_slice_span_impl.cc",
"quic/platform/impl/quic_mem_slice_span_impl.h",
"quic/platform/impl/quic_mem_slice_storage_impl.cc",
"quic/platform/impl/quic_mem_slice_storage_impl.h",
"quic/platform/impl/quic_prefetch_impl.h",
"quic/platform/impl/quic_reference_counted_impl.h",
"quic/platform/impl/quic_server_stats_impl.h",
@ -2576,8 +2572,6 @@ source_set("quic_test_tools") {
"quic/platform/impl/quic_test_impl.h",
"quic/platform/impl/quic_test_loopback_impl.cc",
"quic/platform/impl/quic_test_loopback_impl.h",
"quic/platform/impl/quic_test_mem_slice_vector_impl.cc",
"quic/platform/impl/quic_test_mem_slice_vector_impl.h",
"quic/platform/impl/quic_test_output_impl.cc",
"quic/platform/impl/quic_test_output_impl.h",
"quic/test_task_runner.cc",

@ -1,37 +0,0 @@
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "net/quic/platform/impl/quic_mem_slice_span_impl.h"
namespace quic {
QuicMemSliceSpanImpl::QuicMemSliceSpanImpl(
const scoped_refptr<net::IOBuffer>* buffers,
const size_t* lengths,
size_t num_buffers)
: buffers_(buffers), lengths_(lengths), num_buffers_(num_buffers) {}
QuicMemSliceSpanImpl::QuicMemSliceSpanImpl(QuicMemSliceImpl* slice)
: QuicMemSliceSpanImpl(slice->impl(), slice->impl_length(), 1) {}
QuicMemSliceSpanImpl::QuicMemSliceSpanImpl(const QuicMemSliceSpanImpl& other) =
default;
QuicMemSliceSpanImpl& QuicMemSliceSpanImpl::operator=(
const QuicMemSliceSpanImpl& other) = default;
QuicMemSliceSpanImpl::QuicMemSliceSpanImpl(QuicMemSliceSpanImpl&& other) =
default;
QuicMemSliceSpanImpl& QuicMemSliceSpanImpl::operator=(
QuicMemSliceSpanImpl&& other) = default;
QuicMemSliceSpanImpl::~QuicMemSliceSpanImpl() = default;
QuicByteCount QuicMemSliceSpanImpl::total_length() {
QuicByteCount length = 0;
for (size_t i = 0; i < num_buffers_; ++i) {
length += lengths_[i];
}
return length;
}
} // namespace quic

@ -1,64 +0,0 @@
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef NET_QUIC_PLATFORM_IMPL_QUIC_MEM_SLICE_SPAN_IMPL_H_
#define NET_QUIC_PLATFORM_IMPL_QUIC_MEM_SLICE_SPAN_IMPL_H_
#include "base/memory/ref_counted.h"
#include "net/base/io_buffer.h"
#include "net/third_party/quiche/src/quic/core/quic_types.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_mem_slice.h"
namespace quic {
// QuicMemSliceSpanImpl wraps a MemSlice span.
class QUIC_EXPORT_PRIVATE QuicMemSliceSpanImpl {
public:
QuicMemSliceSpanImpl(const scoped_refptr<net::IOBuffer>* buffers,
const size_t* lengths,
size_t num_buffers);
explicit QuicMemSliceSpanImpl(QuicMemSliceImpl* slice);
QuicMemSliceSpanImpl(const QuicMemSliceSpanImpl& other);
QuicMemSliceSpanImpl& operator=(const QuicMemSliceSpanImpl& other);
QuicMemSliceSpanImpl(QuicMemSliceSpanImpl&& other);
QuicMemSliceSpanImpl& operator=(QuicMemSliceSpanImpl&& other);
~QuicMemSliceSpanImpl();
absl::string_view GetData(size_t index) {
return absl::string_view(buffers_[index]->data(), lengths_[index]);
}
template <typename ConsumeFunction>
QuicByteCount ConsumeAll(ConsumeFunction consume) {
size_t saved_length = 0;
for (size_t i = 0; i < num_buffers_; ++i) {
if (lengths_[i] == 0) {
// Skip empty buffer.
continue;
}
saved_length += lengths_[i];
consume(QuicMemSlice(QuicMemSliceImpl(buffers_[i], lengths_[i])));
}
return saved_length;
}
QuicByteCount total_length();
size_t NumSlices() { return num_buffers_; }
bool empty() const { return num_buffers_ == 0; }
private:
const scoped_refptr<net::IOBuffer>* buffers_;
const size_t* lengths_;
// Not const so that the move operator can work properly.
size_t num_buffers_;
};
} // namespace quic
#endif // NET_QUIC_PLATFORM_IMPL_QUIC_MEM_SLICE_SPAN_IMPL_H_

@ -1,53 +0,0 @@
// Copyright (c) 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "net/quic/platform/impl/quic_mem_slice_storage_impl.h"
#include "net/third_party/quiche/src/quic/core/quic_buffer_allocator.h"
#include "net/third_party/quiche/src/quic/core/quic_utils.h"
namespace quic {
QuicMemSliceStorageImpl::QuicMemSliceStorageImpl(
const struct iovec* iov,
int iov_count,
QuicBufferAllocator* allocator,
const QuicByteCount max_slice_len) {
if (iov == nullptr) {
return;
}
QuicByteCount write_len = 0;
for (int i = 0; i < iov_count; ++i) {
write_len += iov[i].iov_len;
}
DCHECK_LT(0u, write_len);
QuicByteCount iov_offset = 0;
while (write_len > 0) {
size_t slice_len = std::min(write_len, max_slice_len);
auto io_buffer = base::MakeRefCounted<net::IOBuffer>(slice_len);
QuicUtils::CopyToBuffer(iov, iov_count, iov_offset, slice_len,
const_cast<char*>(io_buffer->data()));
buffers_.push_back(std::move(io_buffer));
lengths_.push_back(slice_len);
write_len -= slice_len;
iov_offset += slice_len;
}
}
void QuicMemSliceStorageImpl::Append(QuicMemSliceImpl mem_slice) {
buffers_.push_back(*mem_slice.impl());
lengths_.push_back(mem_slice.length());
}
QuicMemSliceStorageImpl::QuicMemSliceStorageImpl(
const QuicMemSliceStorageImpl& other) = default;
QuicMemSliceStorageImpl::QuicMemSliceStorageImpl(
QuicMemSliceStorageImpl&& other) = default;
QuicMemSliceStorageImpl& QuicMemSliceStorageImpl::operator=(
const QuicMemSliceStorageImpl& other) = default;
QuicMemSliceStorageImpl& QuicMemSliceStorageImpl::operator=(
QuicMemSliceStorageImpl&& other) = default;
QuicMemSliceStorageImpl::~QuicMemSliceStorageImpl() = default;
} // namespace quic

@ -1,45 +0,0 @@
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef NET_QUIC_PLATFORM_IMPL_QUIC_MEM_SLICE_STORAGE_IMPL_H_
#define NET_QUIC_PLATFORM_IMPL_QUIC_MEM_SLICE_STORAGE_IMPL_H_
#include "base/memory/ref_counted.h"
#include "net/base/io_buffer.h"
#include "net/quic/platform/impl/quic_iovec_impl.h"
#include "net/third_party/quiche/src/quic/core/quic_buffer_allocator.h"
#include "net/third_party/quiche/src/quic/core/quic_types.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_mem_slice_span.h"
namespace quic {
class QUIC_EXPORT_PRIVATE QuicMemSliceStorageImpl {
public:
QuicMemSliceStorageImpl(const struct iovec* iov,
int iov_count,
QuicBufferAllocator* allocator,
const QuicByteCount max_slice_len);
QuicMemSliceStorageImpl(const QuicMemSliceStorageImpl& other);
QuicMemSliceStorageImpl& operator=(const QuicMemSliceStorageImpl& other);
QuicMemSliceStorageImpl(QuicMemSliceStorageImpl&& other);
QuicMemSliceStorageImpl& operator=(QuicMemSliceStorageImpl&& other);
~QuicMemSliceStorageImpl();
QuicMemSliceSpan ToSpan() {
return QuicMemSliceSpan(QuicMemSliceSpanImpl(
buffers_.data(), lengths_.data(), buffers_.size()));
}
void Append(QuicMemSliceImpl mem_slice);
private:
std::vector<scoped_refptr<net::IOBuffer>> buffers_;
std::vector<size_t> lengths_;
};
} // namespace quic
#endif // NET_QUIC_PLATFORM_IMPL_QUIC_MEM_SLICE_STORAGE_IMPL_H_

@ -1,44 +0,0 @@
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "net/quic/platform/impl/quic_test_mem_slice_vector_impl.h"
namespace quic {
namespace test {
TestIOBuffer::~TestIOBuffer() {
data_ = nullptr;
}
QuicTestMemSliceVectorImpl::~QuicTestMemSliceVectorImpl() {}
QuicTestMemSliceVectorImpl::QuicTestMemSliceVectorImpl(
std::vector<std::pair<char*, size_t>> buffers) {
for (auto& buffer : buffers) {
buffers_.push_back(base::MakeRefCounted<TestIOBuffer>(buffer.first));
lengths_.push_back(buffer.second);
}
}
QuicTestMemSliceVectorImpl::QuicTestMemSliceVectorImpl(
QuicTestMemSliceVectorImpl&& other) {
*this = std::move(other);
}
QuicTestMemSliceVectorImpl& QuicTestMemSliceVectorImpl::operator=(
QuicTestMemSliceVectorImpl&& other) {
if (this != &other) {
buffers_ = std::move(other.buffers_);
lengths_ = std::move(other.lengths_);
}
return *this;
}
QuicMemSliceSpanImpl QuicTestMemSliceVectorImpl::span() {
return QuicMemSliceSpanImpl(buffers_.data(), lengths_.data(),
buffers_.size());
}
} // namespace test
} // namespace quic

@ -1,44 +0,0 @@
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef NET_QUIC_PLATFORM_IMPL_QUIC_TEST_MEM_SLICE_VECTOR_IMPL_H_
#define NET_QUIC_PLATFORM_IMPL_QUIC_TEST_MEM_SLICE_VECTOR_IMPL_H_
#include <memory>
#include "net/quic/platform/impl/quic_mem_slice_span_impl.h"
namespace quic {
namespace test {
class TestIOBuffer : public net::IOBuffer {
public:
explicit TestIOBuffer(char* data) : net::IOBuffer(data) {}
private:
~TestIOBuffer() override;
};
class QuicTestMemSliceVectorImpl {
public:
explicit QuicTestMemSliceVectorImpl(
std::vector<std::pair<char*, size_t>> buffers);
~QuicTestMemSliceVectorImpl();
QuicTestMemSliceVectorImpl(QuicTestMemSliceVectorImpl&& other);
QuicTestMemSliceVectorImpl& operator=(QuicTestMemSliceVectorImpl&& other);
QuicMemSliceSpanImpl span();
private:
std::vector<scoped_refptr<net::IOBuffer>> buffers_;
std::vector<size_t> lengths_;
};
} // namespace test
} // namespace quic
#endif // NET_QUIC_PLATFORM_IMPL_QUIC_TEST_MEM_SLICE_VECTOR_IMPL_H_

@ -249,8 +249,6 @@ class QuicChromiumClientSessionTest
FLAGS_quic_reloadable_flag_quic_pass_path_response_to_validator = true;
FLAGS_quic_reloadable_flag_quic_send_path_response2 = true;
FLAGS_quic_reloadable_flag_quic_server_reverse_validate_new_path3 = true;
FLAGS_quic_reloadable_flag_quic_group_path_response_and_challenge_sending_closer =
true;
FLAGS_quic_reloadable_flag_quic_drop_unsent_path_response = true;
FLAGS_quic_reloadable_flag_quic_connection_migration_use_new_cid_v2 = true;
config_.SetConnectionOptionsToSend({quic::kRVCM});

@ -2154,6 +2154,10 @@ TEST_P(QuicHttpStreamTest, ServerPushGetRequest) {
SetRequest("GET", "/", DEFAULT_PRIORITY);
Initialize();
// Server push is not supported in HTTP/3.
if (version_.UsesHttp3())
return;
// Initialize the first stream, for receiving the promise on.
request_.method = "GET";
request_.url = GURL("https://www.example.org/");
@ -2221,6 +2225,10 @@ TEST_P(QuicHttpStreamTest, ServerPushGetRequestSlowResponse) {
SetRequest("GET", "/", DEFAULT_PRIORITY);
Initialize();
// Server push is not supported in HTTP/3.
if (version_.UsesHttp3())
return;
// Initialize the first stream, for receiving the promise on.
request_.method = "GET";
request_.url = GURL("https://www.example.org/");
@ -2296,6 +2304,10 @@ TEST_P(QuicHttpStreamTest, ServerPushCancelHttpStreamBeforeResponse) {
SetRequest("GET", "/", DEFAULT_PRIORITY);
Initialize();
// Server push is not supported in HTTP/3.
if (version_.UsesHttp3())
return;
// Initialize the first stream, for receiving the promise on.
request_.method = "GET";
request_.url = GURL("https://www.example.org/");
@ -2340,6 +2352,10 @@ TEST_P(QuicHttpStreamTest, ServerPushCrossOriginOK) {
SetRequest("GET", "/", DEFAULT_PRIORITY);
Initialize();
// Server push is not supported in HTTP/3.
if (version_.UsesHttp3())
return;
// Initialize the first stream, for receiving the promise on.
request_.method = "GET";
request_.url = GURL("https://www.example.org/");
@ -2412,6 +2428,10 @@ TEST_P(QuicHttpStreamTest, ServerPushCrossOriginFail) {
SetRequest("GET", "/", DEFAULT_PRIORITY);
Initialize();
// Server push is not supported in HTTP/3.
if (version_.UsesHttp3())
return;
// Initialize the first stream, for receiving the promise on.
request_.method = "GET";
request_.url = GURL("https://www.example.org/");
@ -2438,6 +2458,10 @@ TEST_P(QuicHttpStreamTest, ServerPushVaryCheckOK) {
SetRequest("GET", "/", DEFAULT_PRIORITY);
Initialize();
// Server push is not supported in HTTP/3.
if (version_.UsesHttp3())
return;
// Initialize the first stream, for receiving the promise on.
request_.method = "GET";
request_.url = GURL("https://www.example.org/");
@ -2521,6 +2545,10 @@ TEST_P(QuicHttpStreamTest, ServerPushVaryCheckFail) {
Initialize();
// Server push is not supported in HTTP/3.
if (version_.UsesHttp3())
return;
// Initialize the first stream, for receiving the promise on.
request_.method = "GET";
request_.url = GURL("https://www.example.org/");

@ -254,8 +254,6 @@ class QuicStreamFactoryTestBase : public WithTaskEnvironment {
FLAGS_quic_reloadable_flag_quic_pass_path_response_to_validator = true;
FLAGS_quic_reloadable_flag_quic_send_path_response2 = true;
FLAGS_quic_reloadable_flag_quic_server_reverse_validate_new_path3 = true;
FLAGS_quic_reloadable_flag_quic_group_path_response_and_challenge_sending_closer =
true;
FLAGS_quic_reloadable_flag_quic_drop_unsent_path_response = true;
FLAGS_quic_reloadable_flag_quic_connection_migration_use_new_cid_v2 = true;
quic_params_->connection_options.push_back(quic::kRVCM);

@ -149,7 +149,7 @@ bool HpackFuzzUtil::RunHeaderBlockThroughFuzzerStages(
input_block.data(), input_block.size())) {
return false;
}
if (!context->first_stage->HandleControlFrameHeadersComplete(nullptr)) {
if (!context->first_stage->HandleControlFrameHeadersComplete()) {
return false;
}
// Second stage: Re-encode the decoded header block. This must succeed.
@ -164,7 +164,7 @@ bool HpackFuzzUtil::RunHeaderBlockThroughFuzzerStages(
second_stage_out.data(), second_stage_out.length())) {
return false;
}
if (!context->third_stage->HandleControlFrameHeadersComplete(nullptr)) {
if (!context->third_stage->HandleControlFrameHeadersComplete()) {
return false;
}
return true;

@ -569,7 +569,7 @@ source_set("quiche") {
"src/quic/platform/api/quic_ip_address_family.h",
"src/quic/platform/api/quic_logging.h",
"src/quic/platform/api/quic_mem_slice.h",
"src/quic/platform/api/quic_mem_slice_span.h",
"src/quic/platform/api/quic_mem_slice_storage.cc",
"src/quic/platform/api/quic_mem_slice_storage.h",
"src/quic/platform/api/quic_mutex.cc",
"src/quic/platform/api/quic_mutex.h",
@ -892,7 +892,6 @@ source_set("quic_test_tools_core") {
"src/quic/platform/api/quic_test.h",
"src/quic/platform/api/quic_test_loopback.cc",
"src/quic/platform/api/quic_test_loopback.h",
"src/quic/platform/api/quic_test_mem_slice_vector.h",
"src/quic/platform/api/quic_test_output.h",
"src/quic/test_tools/crypto_test_utils.cc",
"src/quic/test_tools/crypto_test_utils.h",
@ -1423,7 +1422,6 @@ source_set("quiche_tests") {
"src/quic/core/uber_received_packet_manager_test.cc",
"src/quic/platform/api/quic_hostname_utils_test.cc",
"src/quic/platform/api/quic_ip_address_test.cc",
"src/quic/platform/api/quic_mem_slice_span_test.cc",
"src/quic/platform/api/quic_mem_slice_storage_test.cc",
"src/quic/platform/api/quic_mem_slice_test.cc",
"src/quic/platform/api/quic_reference_counted_test.cc",

@ -15,7 +15,6 @@
#include "net/third_party/quiche/src/quic/core/quic_time.h"
#include "net/third_party/quiche/src/quic/core/quic_types.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_mem_slice.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_mem_slice_span.h"
#include "net/third_party/quiche/src/quic/quic_transport/quic_transport_stream.h"
#include "services/network/network_context.h"
#include "services/network/public/mojom/web_transport.mojom.h"