xref: /aosp_15_r20/external/cronet/net/quic/quic_session_pool_peer.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2015 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef NET_QUIC_QUIC_SESSION_POOL_PEER_H_
6 #define NET_QUIC_QUIC_SESSION_POOL_PEER_H_
7 
8 #include <stddef.h>
9 #include <stdint.h>
10 
11 #include <memory>
12 
13 #include "base/task/sequenced_task_runner.h"
14 #include "base/time/tick_clock.h"
15 #include "net/base/host_port_pair.h"
16 #include "net/base/network_anonymization_key.h"
17 #include "net/base/privacy_mode.h"
18 #include "net/base/session_usage.h"
19 #include "net/quic/quic_session_key.h"
20 #include "net/third_party/quiche/src/quiche/quic/core/quic_packets.h"
21 #include "net/third_party/quiche/src/quiche/quic/core/quic_server_id.h"
22 #include "net/third_party/quiche/src/quiche/quic/core/quic_time.h"
23 #include "url/scheme_host_port.h"
24 
25 namespace quic {
26 class QuicAlarmFactory;
27 class QuicConfig;
28 }  // namespace quic
29 
30 namespace net {
31 
32 class NetLogWithSource;
33 class QuicChromiumClientSession;
34 class QuicCryptoClientConfigHandle;
35 class QuicSessionPool;
36 
37 namespace test {
38 
39 class QuicSessionPoolPeer {
40  public:
41   QuicSessionPoolPeer(const QuicSessionPoolPeer&) = delete;
42   QuicSessionPoolPeer& operator=(const QuicSessionPoolPeer&) = delete;
43 
44   static const quic::QuicConfig* GetConfig(QuicSessionPool* factory);
45 
46   static std::unique_ptr<QuicCryptoClientConfigHandle> GetCryptoConfig(
47       QuicSessionPool* factory,
48       const NetworkAnonymizationKey& network_anonymization_key);
49 
50   static bool HasActiveSession(
51       QuicSessionPool* factory,
52       const quic::QuicServerId& server_id,
53       const NetworkAnonymizationKey& network_anonymization_key,
54       const ProxyChain& proxy_chain = ProxyChain::Direct(),
55       SessionUsage session_usage = SessionUsage::kDestination,
56       bool require_dns_https_alpn = false);
57 
58   static bool HasActiveJob(QuicSessionPool* factory,
59                            const quic::QuicServerId& server_id,
60                            bool require_dns_https_alpn = false);
61 
62   static QuicChromiumClientSession* GetPendingSession(
63       QuicSessionPool* factory,
64       const quic::QuicServerId& server_id,
65       url::SchemeHostPort destination);
66 
67   static QuicChromiumClientSession* GetActiveSession(
68       QuicSessionPool* factory,
69       const quic::QuicServerId& server_id,
70       const NetworkAnonymizationKey& network_anonymization_key =
71           NetworkAnonymizationKey(),
72       const ProxyChain& proxy_chain = ProxyChain::Direct(),
73       SessionUsage session_usage = SessionUsage::kDestination,
74       bool require_dns_https_alpn = false);
75 
76   static bool IsLiveSession(QuicSessionPool* factory,
77                             QuicChromiumClientSession* session);
78 
79   static void SetTickClock(QuicSessionPool* factory,
80                            const base::TickClock* tick_clock);
81 
82   static void SetTaskRunner(QuicSessionPool* factory,
83                             base::SequencedTaskRunner* task_runner);
84 
85   static quic::QuicTime::Delta GetPingTimeout(QuicSessionPool* factory);
86 
87   static void SetYieldAfterPackets(QuicSessionPool* factory,
88                                    int yield_after_packets);
89 
90   static void SetYieldAfterDuration(QuicSessionPool* factory,
91                                     quic::QuicTime::Delta yield_after_duration);
92 
93   static bool CryptoConfigCacheIsEmpty(
94       QuicSessionPool* factory,
95       const quic::QuicServerId& quic_server_id,
96       const NetworkAnonymizationKey& network_anonymization_key);
97 
98   static size_t GetNumDegradingSessions(QuicSessionPool* factory);
99 
100   static void SetAlarmFactory(
101       QuicSessionPool* factory,
102       std::unique_ptr<quic::QuicAlarmFactory> alarm_factory);
103 };
104 
105 }  // namespace test
106 }  // namespace net
107 
108 #endif  // NET_QUIC_QUIC_SESSION_POOL_PEER_H_
109