blob: 1f92504256b528794fb9b9e45e1e9edc2896895a [file] [log] [blame]
QUICHE team82dee2f2019-01-18 12:35:12 -05001// Copyright 2014 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
5#ifndef QUICHE_SPDY_CORE_MOCK_SPDY_FRAMER_VISITOR_H_
6#define QUICHE_SPDY_CORE_MOCK_SPDY_FRAMER_VISITOR_H_
7
8#include <cstdint>
9#include <memory>
bnc463f2352019-10-10 04:49:34 -070010#include <utility>
QUICHE team82dee2f2019-01-18 12:35:12 -050011
vasilvvc8ccdb22020-10-12 16:42:34 -070012#include "absl/strings/string_view.h"
QUICHE team5be974e2020-12-29 18:35:24 -050013#include "common/platform/api/quiche_test.h"
14#include "spdy/core/http2_frame_decoder_adapter.h"
15#include "spdy/core/recording_headers_handler.h"
16#include "spdy/core/spdy_test_utils.h"
QUICHE team82dee2f2019-01-18 12:35:12 -050017
18namespace spdy {
19
20namespace test {
21
22class MockSpdyFramerVisitor : public SpdyFramerVisitorInterface {
23 public:
24 MockSpdyFramerVisitor();
25 ~MockSpdyFramerVisitor() override;
26
fayang80366682020-07-24 09:19:11 -070027 MOCK_METHOD(void,
28 OnError,
29 (http2::Http2DecoderAdapter::SpdyFramerError error,
30 std::string detailed_error),
31 (override));
32 MOCK_METHOD(void,
33 OnDataFrameHeader,
34 (SpdyStreamId stream_id, size_t length, bool fin),
35 (override));
36 MOCK_METHOD(void,
37 OnStreamFrameData,
38 (SpdyStreamId stream_id, const char* data, size_t len),
39 (override));
40 MOCK_METHOD(void, OnStreamEnd, (SpdyStreamId stream_id), (override));
41 MOCK_METHOD(void,
42 OnStreamPadLength,
43 (SpdyStreamId stream_id, size_t value),
44 (override));
45 MOCK_METHOD(void,
46 OnStreamPadding,
47 (SpdyStreamId stream_id, size_t len),
48 (override));
49 MOCK_METHOD(SpdyHeadersHandlerInterface*,
50 OnHeaderFrameStart,
51 (SpdyStreamId stream_id),
52 (override));
53 MOCK_METHOD(void, OnHeaderFrameEnd, (SpdyStreamId stream_id), (override));
54 MOCK_METHOD(void,
55 OnRstStream,
56 (SpdyStreamId stream_id, SpdyErrorCode error_code),
57 (override));
58 MOCK_METHOD(void, OnSettings, (), (override));
59 MOCK_METHOD(void, OnSetting, (SpdySettingsId id, uint32_t value), (override));
60 MOCK_METHOD(void, OnPing, (SpdyPingId unique_id, bool is_ack), (override));
61 MOCK_METHOD(void, OnSettingsEnd, (), (override));
62 MOCK_METHOD(void,
63 OnGoAway,
64 (SpdyStreamId last_accepted_stream_id, SpdyErrorCode error_code),
65 (override));
66 MOCK_METHOD(void,
67 OnHeaders,
68 (SpdyStreamId stream_id,
69 bool has_priority,
70 int weight,
71 SpdyStreamId parent_stream_id,
72 bool exclusive,
73 bool fin,
74 bool end),
75 (override));
76 MOCK_METHOD(void,
77 OnWindowUpdate,
78 (SpdyStreamId stream_id, int delta_window_size),
79 (override));
80 MOCK_METHOD(void,
81 OnPushPromise,
82 (SpdyStreamId stream_id,
83 SpdyStreamId promised_stream_id,
84 bool end),
85 (override));
86 MOCK_METHOD(void,
87 OnContinuation,
88 (SpdyStreamId stream_id, bool end),
89 (override));
90 MOCK_METHOD(
91 void,
92 OnAltSvc,
93 (SpdyStreamId stream_id,
vasilvvc8ccdb22020-10-12 16:42:34 -070094 absl::string_view origin,
fayang80366682020-07-24 09:19:11 -070095 const SpdyAltSvcWireFormat::AlternativeServiceVector& altsvc_vector),
96 (override));
97 MOCK_METHOD(void,
98 OnPriority,
99 (SpdyStreamId stream_id,
100 SpdyStreamId parent_stream_id,
101 int weight,
102 bool exclusive),
103 (override));
bnca5a30132020-12-17 13:50:27 -0800104 MOCK_METHOD(void,
105 OnPriorityUpdate,
106 (SpdyStreamId prioritized_stream_id,
107 absl::string_view priority_field_value),
108 (override));
fayang80366682020-07-24 09:19:11 -0700109 MOCK_METHOD(bool,
110 OnUnknownFrame,
111 (SpdyStreamId stream_id, uint8_t frame_type),
112 (override));
QUICHE team82dee2f2019-01-18 12:35:12 -0500113
114 void DelegateHeaderHandling() {
115 ON_CALL(*this, OnHeaderFrameStart(testing::_))
116 .WillByDefault(testing::Invoke(
117 this, &MockSpdyFramerVisitor::ReturnTestHeadersHandler));
118 ON_CALL(*this, OnHeaderFrameEnd(testing::_))
119 .WillByDefault(testing::Invoke(
120 this, &MockSpdyFramerVisitor::ResetTestHeadersHandler));
121 }
122
123 SpdyHeadersHandlerInterface* ReturnTestHeadersHandler(
124 SpdyStreamId /* stream_id */) {
125 if (headers_handler_ == nullptr) {
QUICHE team6169e492020-11-10 14:05:30 -0800126 headers_handler_ = std::make_unique<RecordingHeadersHandler>();
QUICHE team82dee2f2019-01-18 12:35:12 -0500127 }
128 return headers_handler_.get();
129 }
130
131 void ResetTestHeadersHandler(SpdyStreamId /* stream_id */) {
132 headers_handler_.reset();
133 }
134
135 std::unique_ptr<SpdyHeadersHandlerInterface> headers_handler_;
136};
137
138} // namespace test
139
140} // namespace spdy
141
142#endif // QUICHE_SPDY_CORE_MOCK_SPDY_FRAMER_VISITOR_H_