• 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_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