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_STREAM_FACTORY_PEER_H_ 6 #define NET_QUIC_QUIC_STREAM_FACTORY_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/third_party/quiche/src/quiche/quic/core/quic_packets.h" 19 #include "net/third_party/quiche/src/quiche/quic/core/quic_server_id.h" 20 #include "net/third_party/quiche/src/quiche/quic/core/quic_time.h" 21 #include "url/scheme_host_port.h" 22 23 namespace quic { 24 class QuicAlarmFactory; 25 class QuicConfig; 26 } // namespace quic 27 28 namespace net { 29 30 class NetLogWithSource; 31 class QuicChromiumClientSession; 32 class QuicCryptoClientConfigHandle; 33 class QuicStreamFactory; 34 35 namespace test { 36 37 class QuicStreamFactoryPeer { 38 public: 39 QuicStreamFactoryPeer(const QuicStreamFactoryPeer&) = delete; 40 QuicStreamFactoryPeer& operator=(const QuicStreamFactoryPeer&) = delete; 41 42 static const quic::QuicConfig* GetConfig(QuicStreamFactory* factory); 43 44 static std::unique_ptr<QuicCryptoClientConfigHandle> GetCryptoConfig( 45 QuicStreamFactory* factory, 46 const NetworkAnonymizationKey& network_anonymization_key); 47 48 static bool HasActiveSession( 49 QuicStreamFactory* factory, 50 const quic::QuicServerId& server_id, 51 const NetworkAnonymizationKey& network_anonymization_key = 52 NetworkAnonymizationKey(), 53 bool require_dns_https_alpn = false); 54 55 static bool HasActiveJob(QuicStreamFactory* factory, 56 const quic::QuicServerId& server_id, 57 bool require_dns_https_alpn = false); 58 59 static QuicChromiumClientSession* GetPendingSession( 60 QuicStreamFactory* factory, 61 const quic::QuicServerId& server_id, 62 url::SchemeHostPort destination); 63 64 static QuicChromiumClientSession* GetActiveSession( 65 QuicStreamFactory* factory, 66 const quic::QuicServerId& server_id, 67 const NetworkAnonymizationKey& network_anonymization_key = 68 NetworkAnonymizationKey(), 69 bool require_dns_https_alpn = false); 70 71 static bool HasLiveSession(QuicStreamFactory* factory, 72 url::SchemeHostPort destination, 73 const quic::QuicServerId& server_id, 74 bool require_dns_https_alpn = false); 75 76 static bool IsLiveSession(QuicStreamFactory* factory, 77 QuicChromiumClientSession* session); 78 79 static void SetTickClock(QuicStreamFactory* factory, 80 const base::TickClock* tick_clock); 81 82 static void SetTaskRunner(QuicStreamFactory* factory, 83 base::SequencedTaskRunner* task_runner); 84 85 static quic::QuicTime::Delta GetPingTimeout(QuicStreamFactory* factory); 86 87 static void SetYieldAfterPackets(QuicStreamFactory* factory, 88 int yield_after_packets); 89 90 static void SetYieldAfterDuration(QuicStreamFactory* factory, 91 quic::QuicTime::Delta yield_after_duration); 92 93 static size_t GetNumberOfActiveJobs(QuicStreamFactory* factory, 94 const quic::QuicServerId& server_id); 95 96 static bool CryptoConfigCacheIsEmpty( 97 QuicStreamFactory* factory, 98 const quic::QuicServerId& quic_server_id, 99 const NetworkAnonymizationKey& network_anonymization_key); 100 101 // Creates a dummy QUIC server config and caches it. Caller must be holding 102 // onto a QuicCryptoClientConfigHandle for the corresponding 103 // |network_anonymization_key|. 104 static void CacheDummyServerConfig( 105 QuicStreamFactory* factory, 106 const quic::QuicServerId& quic_server_id, 107 const NetworkAnonymizationKey& network_anonymization_key); 108 109 static int GetNumPushStreamsCreated(QuicStreamFactory* factory); 110 111 static size_t GetNumDegradingSessions(QuicStreamFactory* factory); 112 113 static void SetAlarmFactory( 114 QuicStreamFactory* factory, 115 std::unique_ptr<quic::QuicAlarmFactory> alarm_factory); 116 }; 117 118 } // namespace test 119 } // namespace net 120 121 #endif // NET_QUIC_QUIC_STREAM_FACTORY_PEER_H_ 122