blob: 008a298a344a73b1bbde79e67ac5a47207ad459e [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"
rtennetid2e74caa2015-12-09 00:51:5713#include "net/base/host_port_pair.h"
14#include "net/base/privacy_mode.h"
Ryan Hamilton56b10c5d2018-05-11 13:40:1615#include "net/third_party/quic/core/quic_packets.h"
16#include "net/third_party/quic/core/quic_server_id.h"
17#include "net/third_party/quic/core/quic_time.h"
rtennetid2e74caa2015-12-09 00:51:5718
Ryan Hamilton9835e662018-08-02 05:36:2719namespace quic {
20class QuicAlarmFactory;
21class QuicClientPushPromiseIndex;
22class QuicConfig;
23class QuicCryptoClientConfig;
24} // namespace quic
25
rtennetid2e74caa2015-12-09 00:51:5726namespace net {
27
mikecironef22f9812016-10-04 03:40:1928class NetLogWithSource;
rch9ecde09b2017-04-08 00:18:2329class QuicChromiumClientSession;
rtennetid2e74caa2015-12-09 00:51:5730class QuicStreamFactory;
rtennetid2e74caa2015-12-09 00:51:5731
32namespace test {
33
34class QuicStreamFactoryPeer {
35 public:
Ryan Hamilton8d9ee76e2018-05-29 23:52:5236 static const quic::QuicConfig* GetConfig(QuicStreamFactory* factory);
rtennetid2e74caa2015-12-09 00:51:5737
Ryan Hamilton8d9ee76e2018-05-29 23:52:5238 static quic::QuicCryptoClientConfig* GetCryptoConfig(
39 QuicStreamFactory* factory);
rtennetid2e74caa2015-12-09 00:51:5740
41 static bool HasActiveSession(QuicStreamFactory* factory,
Ryan Hamilton8d9ee76e2018-05-29 23:52:5242 const quic::QuicServerId& server_id);
rtennetid2e74caa2015-12-09 00:51:5743
zhongyi363c91c2017-03-23 23:16:0844 static bool HasActiveJob(QuicStreamFactory* factory,
Ryan Hamilton8d9ee76e2018-05-29 23:52:5245 const quic::QuicServerId& server_id);
zhongyi363c91c2017-03-23 23:16:0846
rtennetid073dd22016-08-04 01:58:3347 static bool HasActiveCertVerifierJob(QuicStreamFactory* factory,
Ryan Hamilton8d9ee76e2018-05-29 23:52:5248 const quic::QuicServerId& server_id);
rtennetid073dd22016-08-04 01:58:3349
rtennetid2e74caa2015-12-09 00:51:5750 static QuicChromiumClientSession* GetActiveSession(
51 QuicStreamFactory* factory,
Ryan Hamilton8d9ee76e2018-05-29 23:52:5252 const quic::QuicServerId& server_id);
rtennetid2e74caa2015-12-09 00:51:5753
rtennetid2e74caa2015-12-09 00:51:5754 static bool IsLiveSession(QuicStreamFactory* factory,
55 QuicChromiumClientSession* session);
56
57 static void SetTaskRunner(QuicStreamFactory* factory,
Zhongyi Shi8fff75b2017-11-19 21:36:3658 base::SequencedTaskRunner* task_runner);
rtennetid2e74caa2015-12-09 00:51:5759
Ryan Hamilton8d9ee76e2018-05-29 23:52:5260 static quic::QuicTime::Delta GetPingTimeout(QuicStreamFactory* factory);
zhongyidd1439f62016-09-02 02:02:2661
rtennetid073dd22016-08-04 01:58:3362 static bool GetRaceCertVerification(QuicStreamFactory* factory);
63
64 static void SetRaceCertVerification(QuicStreamFactory* factory,
65 bool race_cert_verification);
66
Ryan Hamilton8d9ee76e2018-05-29 23:52:5267 static quic::QuicAsyncStatus StartCertVerifyJob(
68 QuicStreamFactory* factory,
69 const quic::QuicServerId& server_id,
70 int cert_verify_flags,
71 const NetLogWithSource& net_log);
rtennetid073dd22016-08-04 01:58:3372
rtennetid2e74caa2015-12-09 00:51:5773 static void SetYieldAfterPackets(QuicStreamFactory* factory,
74 int yield_after_packets);
75
76 static void SetYieldAfterDuration(QuicStreamFactory* factory,
Ryan Hamilton8d9ee76e2018-05-29 23:52:5277 quic::QuicTime::Delta yield_after_duration);
rtennetid2e74caa2015-12-09 00:51:5778
79 static size_t GetNumberOfActiveJobs(QuicStreamFactory* factory,
Ryan Hamilton8d9ee76e2018-05-29 23:52:5280 const quic::QuicServerId& server_id);
rtennetid2e74caa2015-12-09 00:51:5781
Ryan Hamilton8d9ee76e2018-05-29 23:52:5282 static bool CryptoConfigCacheIsEmpty(
83 QuicStreamFactory* factory,
84 const quic::QuicServerId& quic_server_id);
rtennetid2e74caa2015-12-09 00:51:5785
86 // Creates a dummy QUIC server config and caches it.
87 static void CacheDummyServerConfig(QuicStreamFactory* factory,
Ryan Hamilton8d9ee76e2018-05-29 23:52:5288 const quic::QuicServerId& quic_server_id);
rtennetid2e74caa2015-12-09 00:51:5789
Ryan Hamilton8d9ee76e2018-05-29 23:52:5290 static quic::QuicClientPushPromiseIndex* GetPushPromiseIndex(
ckrasic3865ee0f2016-02-29 22:04:5691 QuicStreamFactory* factory);
92
93 static int GetNumPushStreamsCreated(QuicStreamFactory* factory);
94
Ryan Hamilton8d9ee76e2018-05-29 23:52:5295 static void SetAlarmFactory(
96 QuicStreamFactory* factory,
97 std::unique_ptr<quic::QuicAlarmFactory> alarm_factory);
rch9ecde09b2017-04-08 00:18:2398
rtennetid2e74caa2015-12-09 00:51:5799 private:
100 DISALLOW_COPY_AND_ASSIGN(QuicStreamFactoryPeer);
101};
102
103} // namespace test
104} // namespace net
105
Ryan Hamiltona3ee93a72018-08-01 22:03:08106#endif // NET_QUIC_QUIC_STREAM_FACTORY_PEER_H_