blob: c717b5222ef61cf1c3135c52a7c56e52bfa9722e [file] [log] [blame]
rtennetid2e74caa2015-12-09 00:51:571// Copyright 2015 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Ryan Hamiltona3ee93a72018-08-01 22:03:085#ifndef NET_QUIC_QUIC_STREAM_FACTORY_PEER_H_
6#define NET_QUIC_QUIC_STREAM_FACTORY_PEER_H_
rtennetid2e74caa2015-12-09 00:51:577
Avi Drissman13fc8932015-12-20 04:40:468#include <stddef.h>
9#include <stdint.h>
10
11#include "base/macros.h"
Zhongyi Shi8fff75b2017-11-19 21:36:3612#include "base/sequenced_task_runner.h"
Zhongyi Shic16b4102019-02-12 00:37:4013#include "base/time/tick_clock.h"
rtennetid2e74caa2015-12-09 00:51:5714#include "net/base/host_port_pair.h"
Matt Menke19475f72019-08-21 18:57:4415#include "net/base/network_isolation_key.h"
rtennetid2e74caa2015-12-09 00:51:5716#include "net/base/privacy_mode.h"
Victor Vasiliev6bb59d22019-03-08 21:34:5117#include "net/third_party/quiche/src/quic/core/quic_packets.h"
18#include "net/third_party/quiche/src/quic/core/quic_server_id.h"
19#include "net/third_party/quiche/src/quic/core/quic_time.h"
rtennetid2e74caa2015-12-09 00:51:5720
Ryan Hamilton9835e662018-08-02 05:36:2721namespace quic {
22class QuicAlarmFactory;
23class QuicClientPushPromiseIndex;
24class QuicConfig;
25class QuicCryptoClientConfig;
26} // namespace quic
27
rtennetid2e74caa2015-12-09 00:51:5728namespace net {
29
mikecironef22f9812016-10-04 03:40:1930class NetLogWithSource;
rch9ecde09b2017-04-08 00:18:2331class QuicChromiumClientSession;
rtennetid2e74caa2015-12-09 00:51:5732class QuicStreamFactory;
rtennetid2e74caa2015-12-09 00:51:5733
34namespace test {
35
36class QuicStreamFactoryPeer {
37 public:
Ryan Hamilton8d9ee76e2018-05-29 23:52:5238 static const quic::QuicConfig* GetConfig(QuicStreamFactory* factory);
rtennetid2e74caa2015-12-09 00:51:5739
Ryan Hamilton8d9ee76e2018-05-29 23:52:5240 static quic::QuicCryptoClientConfig* GetCryptoConfig(
41 QuicStreamFactory* factory);
rtennetid2e74caa2015-12-09 00:51:5742
Matt Menke19475f72019-08-21 18:57:4443 static bool HasActiveSession(
44 QuicStreamFactory* factory,
45 const quic::QuicServerId& server_id,
46 const NetworkIsolationKey& network_isolation_key = NetworkIsolationKey());
rtennetid2e74caa2015-12-09 00:51:5747
zhongyi363c91c2017-03-23 23:16:0848 static bool HasActiveJob(QuicStreamFactory* factory,
Ryan Hamilton8d9ee76e2018-05-29 23:52:5249 const quic::QuicServerId& server_id);
zhongyi363c91c2017-03-23 23:16:0850
rtennetid073dd22016-08-04 01:58:3351 static bool HasActiveCertVerifierJob(QuicStreamFactory* factory,
Ryan Hamilton8d9ee76e2018-05-29 23:52:5252 const quic::QuicServerId& server_id);
rtennetid073dd22016-08-04 01:58:3353
Zhongyi Shic1449372018-08-09 09:58:5854 static QuicChromiumClientSession* GetPendingSession(
55 QuicStreamFactory* factory,
56 const quic::QuicServerId& server_id,
57 const HostPortPair& destination);
58
rtennetid2e74caa2015-12-09 00:51:5759 static QuicChromiumClientSession* GetActiveSession(
60 QuicStreamFactory* factory,
Matt Menke19475f72019-08-21 18:57:4461 const quic::QuicServerId& server_id,
62 const NetworkIsolationKey& network_isolation_key = NetworkIsolationKey());
rtennetid2e74caa2015-12-09 00:51:5763
Renjiea0cb4a2c2018-09-26 23:37:3064 static bool HasLiveSession(QuicStreamFactory* factory,
65 const HostPortPair& destination,
66 const quic::QuicServerId& server_id);
67
rtennetid2e74caa2015-12-09 00:51:5768 static bool IsLiveSession(QuicStreamFactory* factory,
69 QuicChromiumClientSession* session);
70
Zhongyi Shic16b4102019-02-12 00:37:4071 static void SetTickClock(QuicStreamFactory* factory,
72 const base::TickClock* tick_clock);
73
rtennetid2e74caa2015-12-09 00:51:5774 static void SetTaskRunner(QuicStreamFactory* factory,
Zhongyi Shi8fff75b2017-11-19 21:36:3675 base::SequencedTaskRunner* task_runner);
rtennetid2e74caa2015-12-09 00:51:5776
Ryan Hamilton8d9ee76e2018-05-29 23:52:5277 static quic::QuicTime::Delta GetPingTimeout(QuicStreamFactory* factory);
zhongyidd1439f62016-09-02 02:02:2678
rtennetid073dd22016-08-04 01:58:3379 static bool GetRaceCertVerification(QuicStreamFactory* factory);
80
81 static void SetRaceCertVerification(QuicStreamFactory* factory,
82 bool race_cert_verification);
83
Ryan Hamilton8d9ee76e2018-05-29 23:52:5284 static quic::QuicAsyncStatus StartCertVerifyJob(
85 QuicStreamFactory* factory,
86 const quic::QuicServerId& server_id,
87 int cert_verify_flags,
88 const NetLogWithSource& net_log);
rtennetid073dd22016-08-04 01:58:3389
rtennetid2e74caa2015-12-09 00:51:5790 static void SetYieldAfterPackets(QuicStreamFactory* factory,
91 int yield_after_packets);
92
93 static void SetYieldAfterDuration(QuicStreamFactory* factory,
Ryan Hamilton8d9ee76e2018-05-29 23:52:5294 quic::QuicTime::Delta yield_after_duration);
rtennetid2e74caa2015-12-09 00:51:5795
96 static size_t GetNumberOfActiveJobs(QuicStreamFactory* factory,
Ryan Hamilton8d9ee76e2018-05-29 23:52:5297 const quic::QuicServerId& server_id);
rtennetid2e74caa2015-12-09 00:51:5798
Ryan Hamilton8d9ee76e2018-05-29 23:52:5299 static bool CryptoConfigCacheIsEmpty(
100 QuicStreamFactory* factory,
101 const quic::QuicServerId& quic_server_id);
rtennetid2e74caa2015-12-09 00:51:57102
103 // Creates a dummy QUIC server config and caches it.
104 static void CacheDummyServerConfig(QuicStreamFactory* factory,
Ryan Hamilton8d9ee76e2018-05-29 23:52:52105 const quic::QuicServerId& quic_server_id);
rtennetid2e74caa2015-12-09 00:51:57106
Ryan Hamilton8d9ee76e2018-05-29 23:52:52107 static quic::QuicClientPushPromiseIndex* GetPushPromiseIndex(
ckrasic3865ee0f2016-02-29 22:04:56108 QuicStreamFactory* factory);
109
110 static int GetNumPushStreamsCreated(QuicStreamFactory* factory);
111
Ryan Hamilton8d9ee76e2018-05-29 23:52:52112 static void SetAlarmFactory(
113 QuicStreamFactory* factory,
114 std::unique_ptr<quic::QuicAlarmFactory> alarm_factory);
rch9ecde09b2017-04-08 00:18:23115
rtennetid2e74caa2015-12-09 00:51:57116 private:
117 DISALLOW_COPY_AND_ASSIGN(QuicStreamFactoryPeer);
118};
119
120} // namespace test
121} // namespace net
122
Ryan Hamiltona3ee93a72018-08-01 22:03:08123#endif // NET_QUIC_QUIC_STREAM_FACTORY_PEER_H_