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