xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/test_tools/quic_spdy_session_peer.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "quiche/quic/test_tools/quic_spdy_session_peer.h"
6 
7 
8 #include "quiche/quic/core/http/quic_spdy_session.h"
9 #include "quiche/quic/core/qpack/qpack_receive_stream.h"
10 #include "quiche/quic/core/quic_utils.h"
11 #include "quiche/quic/platform/api/quic_flags.h"
12 #include "quiche/quic/test_tools/quic_session_peer.h"
13 #include "quiche/common/platform/api/quiche_logging.h"
14 
15 namespace quic {
16 namespace test {
17 
18 // static
GetHeadersStream(QuicSpdySession * session)19 QuicHeadersStream* QuicSpdySessionPeer::GetHeadersStream(
20     QuicSpdySession* session) {
21   QUICHE_DCHECK(!VersionUsesHttp3(session->transport_version()));
22   return session->headers_stream();
23 }
24 
SetHeadersStream(QuicSpdySession * session,QuicHeadersStream * headers_stream)25 void QuicSpdySessionPeer::SetHeadersStream(QuicSpdySession* session,
26                                            QuicHeadersStream* headers_stream) {
27   QUICHE_DCHECK(!VersionUsesHttp3(session->transport_version()));
28   for (auto& it : QuicSessionPeer::stream_map(session)) {
29     if (it.first ==
30         QuicUtils::GetHeadersStreamId(session->transport_version())) {
31       it.second.reset(headers_stream);
32       session->headers_stream_ = static_cast<QuicHeadersStream*>(it.second.get());
33       break;
34     }
35   }
36 }
37 
38 // static
GetSpdyFramer(QuicSpdySession * session)39 spdy::SpdyFramer* QuicSpdySessionPeer::GetSpdyFramer(QuicSpdySession* session) {
40   return &session->spdy_framer_;
41 }
42 
SetMaxInboundHeaderListSize(QuicSpdySession * session,size_t max_inbound_header_size)43 void QuicSpdySessionPeer::SetMaxInboundHeaderListSize(
44     QuicSpdySession* session, size_t max_inbound_header_size) {
45   session->set_max_inbound_header_list_size(max_inbound_header_size);
46 }
47 
48 // static
WriteHeadersOnHeadersStream(QuicSpdySession * session,QuicStreamId id,spdy::Http2HeaderBlock headers,bool fin,const spdy::SpdyStreamPrecedence & precedence,quiche::QuicheReferenceCountedPointer<QuicAckListenerInterface> ack_listener)49 size_t QuicSpdySessionPeer::WriteHeadersOnHeadersStream(
50     QuicSpdySession* session, QuicStreamId id, spdy::Http2HeaderBlock headers,
51     bool fin, const spdy::SpdyStreamPrecedence& precedence,
52     quiche::QuicheReferenceCountedPointer<QuicAckListenerInterface>
53         ack_listener) {
54   return session->WriteHeadersOnHeadersStream(
55       id, std::move(headers), fin, precedence, std::move(ack_listener));
56 }
57 
58 // static
GetNextOutgoingUnidirectionalStreamId(QuicSpdySession * session)59 QuicStreamId QuicSpdySessionPeer::GetNextOutgoingUnidirectionalStreamId(
60     QuicSpdySession* session) {
61   return session->GetNextOutgoingUnidirectionalStreamId();
62 }
63 
64 // static
GetReceiveControlStream(QuicSpdySession * session)65 QuicReceiveControlStream* QuicSpdySessionPeer::GetReceiveControlStream(
66     QuicSpdySession* session) {
67   return session->receive_control_stream_;
68 }
69 
70 // static
GetSendControlStream(QuicSpdySession * session)71 QuicSendControlStream* QuicSpdySessionPeer::GetSendControlStream(
72     QuicSpdySession* session) {
73   return session->send_control_stream_;
74 }
75 
76 // static
GetQpackDecoderSendStream(QuicSpdySession * session)77 QpackSendStream* QuicSpdySessionPeer::GetQpackDecoderSendStream(
78     QuicSpdySession* session) {
79   return session->qpack_decoder_send_stream_;
80 }
81 
82 // static
GetQpackEncoderSendStream(QuicSpdySession * session)83 QpackSendStream* QuicSpdySessionPeer::GetQpackEncoderSendStream(
84     QuicSpdySession* session) {
85   return session->qpack_encoder_send_stream_;
86 }
87 
88 // static
GetQpackDecoderReceiveStream(QuicSpdySession * session)89 QpackReceiveStream* QuicSpdySessionPeer::GetQpackDecoderReceiveStream(
90     QuicSpdySession* session) {
91   return session->qpack_decoder_receive_stream_;
92 }
93 
94 // static
GetQpackEncoderReceiveStream(QuicSpdySession * session)95 QpackReceiveStream* QuicSpdySessionPeer::GetQpackEncoderReceiveStream(
96     QuicSpdySession* session) {
97   return session->qpack_encoder_receive_stream_;
98 }
99 
100 // static
SetHttpDatagramSupport(QuicSpdySession * session,HttpDatagramSupport http_datagram_support)101 void QuicSpdySessionPeer::SetHttpDatagramSupport(
102     QuicSpdySession* session, HttpDatagramSupport http_datagram_support) {
103   session->http_datagram_support_ = http_datagram_support;
104 }
105 
106 // static
LocalHttpDatagramSupport(QuicSpdySession * session)107 HttpDatagramSupport QuicSpdySessionPeer::LocalHttpDatagramSupport(
108     QuicSpdySession* session) {
109   return session->LocalHttpDatagramSupport();
110 }
111 
112 // static
EnableWebTransport(QuicSpdySession * session)113 void QuicSpdySessionPeer::EnableWebTransport(QuicSpdySession* session) {
114   QUICHE_DCHECK(session->WillNegotiateWebTransport());
115   SetHttpDatagramSupport(session, HttpDatagramSupport::kRfc);
116   session->peer_web_transport_versions_ = kDefaultSupportedWebTransportVersions;
117 }
118 
119 }  // namespace test
120 }  // namespace quic
121