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