blob: 5faf2fb2da1d3765685eb391251a9f400ce13aa8 [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 teamf3c80c92020-02-12 09:47:55 -080013#include "net/third_party/quiche/src/common/platform/api/quiche_test.h"
QUICHE team82dee2f2019-01-18 12:35:12 -050014#include "net/third_party/quiche/src/spdy/core/http2_frame_decoder_adapter.h"
QUICHE team6169e492020-11-10 14:05:30 -080015#include "net/third_party/quiche/src/spdy/core/recording_headers_handler.h"
QUICHE team82dee2f2019-01-18 12:35:12 -050016#include "net/third_party/quiche/src/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));
104 MOCK_METHOD(bool,
105 OnUnknownFrame,
106 (SpdyStreamId stream_id, uint8_t frame_type),
107 (override));
QUICHE team82dee2f2019-01-18 12:35:12 -0500108
109 void DelegateHeaderHandling() {
110 ON_CALL(*this, OnHeaderFrameStart(testing::_))
111 .WillByDefault(testing::Invoke(
112 this, &MockSpdyFramerVisitor::ReturnTestHeadersHandler));
113 ON_CALL(*this, OnHeaderFrameEnd(testing::_))
114 .WillByDefault(testing::Invoke(
115 this, &MockSpdyFramerVisitor::ResetTestHeadersHandler));
116 }
117
118 SpdyHeadersHandlerInterface* ReturnTestHeadersHandler(
119 SpdyStreamId /* stream_id */) {
120 if (headers_handler_ == nullptr) {
QUICHE team6169e492020-11-10 14:05:30 -0800121 headers_handler_ = std::make_unique<RecordingHeadersHandler>();
QUICHE team82dee2f2019-01-18 12:35:12 -0500122 }
123 return headers_handler_.get();
124 }
125
126 void ResetTestHeadersHandler(SpdyStreamId /* stream_id */) {
127 headers_handler_.reset();
128 }
129
130 std::unique_ptr<SpdyHeadersHandlerInterface> headers_handler_;
131};
132
133} // namespace test
134
135} // namespace spdy
136
137#endif // QUICHE_SPDY_CORE_MOCK_SPDY_FRAMER_VISITOR_H_