• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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       PrivacyMode privacy_mode,
54       const NetworkAnonymizationKey& network_anonymization_key,
55       const ProxyChain& proxy_chain = ProxyChain::Direct(),
56       SessionUsage session_usage = SessionUsage::kDestination,
57       bool require_dns_https_alpn = false);
58 
59   static bool HasActiveJob(QuicSessionPool* factory,
60                            const quic::QuicServerId& server_id,
61                            PrivacyMode privacy_mode,
62                            bool require_dns_https_alpn = false);
63 
64   static QuicChromiumClientSession* GetPendingSession(
65       QuicSessionPool* factory,
66       const quic::QuicServerId& server_id,
67       PrivacyMode privacy_mode,
68       url::SchemeHostPort destination);
69 
70   static QuicChromiumClientSession* GetActiveSession(
71       QuicSessionPool* factory,
72       const quic::QuicServerId& server_id,
73       PrivacyMode privacy_mode,
74       const NetworkAnonymizationKey& network_anonymization_key =
75           NetworkAnonymizationKey(),
76       const ProxyChain& proxy_chain = ProxyChain::Direct(),
77       SessionUsage session_usage = SessionUsage::kDestination,
78       bool require_dns_https_alpn = false);
79 
80   static bool IsLiveSession(QuicSessionPool* factory,
81                             QuicChromiumClientSession* session);
82 
83   static void SetTickClock(QuicSessionPool* factory,
84                            const base::TickClock* tick_clock);
85 
86   static void SetTaskRunner(QuicSessionPool* factory,
87                             base::SequencedTaskRunner* task_runner);
88 
89   static quic::QuicTime::Delta GetPingTimeout(QuicSessionPool* factory);
90 
91   static void SetYieldAfterPackets(QuicSessionPool* factory,
92                                    int yield_after_packets);
93 
94   static void SetYieldAfterDuration(QuicSessionPool* factory,
95                                     quic::QuicTime::Delta yield_after_duration);
96 
97   static bool CryptoConfigCacheIsEmpty(
98       QuicSessionPool* factory,
99       const quic::QuicServerId& quic_server_id,
100       const NetworkAnonymizationKey& network_anonymization_key);
101 
102   static size_t GetNumDegradingSessions(QuicSessionPool* factory);
103 
104   static void SetAlarmFactory(
105       QuicSessionPool* factory,
106       std::unique_ptr<quic::QuicAlarmFactory> alarm_factory);
107 };
108 
109 }  // namespace test
110 }  // namespace net
111 
112 #endif  // NET_QUIC_QUIC_SESSION_POOL_PEER_H_
113