blob: 89ed853d5acd45247f0fdc98b539dfffcf02db07 [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
bnc7f82d042020-01-03 12:18:53 -080012#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.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"
15#include "net/third_party/quiche/src/spdy/core/spdy_test_utils.h"
QUICHE team82dee2f2019-01-18 12:35:12 -050016
17namespace spdy {
18
19namespace test {
20
21class MockSpdyFramerVisitor : public SpdyFramerVisitorInterface {
22 public:
23 MockSpdyFramerVisitor();
24 ~MockSpdyFramerVisitor() override;
25
26 MOCK_METHOD1(OnError,
27 void(http2::Http2DecoderAdapter::SpdyFramerError error));
28 MOCK_METHOD3(OnDataFrameHeader,
29 void(SpdyStreamId stream_id, size_t length, bool fin));
30 MOCK_METHOD3(OnStreamFrameData,
31 void(SpdyStreamId stream_id, const char* data, size_t len));
32 MOCK_METHOD1(OnStreamEnd, void(SpdyStreamId stream_id));
33 MOCK_METHOD2(OnStreamPadLength, void(SpdyStreamId stream_id, size_t value));
34 MOCK_METHOD2(OnStreamPadding, void(SpdyStreamId stream_id, size_t len));
35 MOCK_METHOD1(OnHeaderFrameStart,
36 SpdyHeadersHandlerInterface*(SpdyStreamId stream_id));
37 MOCK_METHOD1(OnHeaderFrameEnd, void(SpdyStreamId stream_id));
38 MOCK_METHOD2(OnRstStream,
39 void(SpdyStreamId stream_id, SpdyErrorCode error_code));
40 MOCK_METHOD0(OnSettings, void());
41 MOCK_METHOD2(OnSetting, void(SpdySettingsId id, uint32_t value));
42 MOCK_METHOD2(OnPing, void(SpdyPingId unique_id, bool is_ack));
43 MOCK_METHOD0(OnSettingsEnd, void());
44 MOCK_METHOD2(OnGoAway,
45 void(SpdyStreamId last_accepted_stream_id,
46 SpdyErrorCode error_code));
47 MOCK_METHOD7(OnHeaders,
48 void(SpdyStreamId stream_id,
49 bool has_priority,
50 int weight,
51 SpdyStreamId parent_stream_id,
52 bool exclusive,
53 bool fin,
54 bool end));
55 MOCK_METHOD2(OnWindowUpdate,
56 void(SpdyStreamId stream_id, int delta_window_size));
57 MOCK_METHOD3(OnPushPromise,
58 void(SpdyStreamId stream_id,
59 SpdyStreamId promised_stream_id,
60 bool end));
61 MOCK_METHOD2(OnContinuation, void(SpdyStreamId stream_id, bool end));
62 MOCK_METHOD3(OnAltSvc,
63 void(SpdyStreamId stream_id,
bnc7f82d042020-01-03 12:18:53 -080064 quiche::QuicheStringPiece origin,
QUICHE team82dee2f2019-01-18 12:35:12 -050065 const SpdyAltSvcWireFormat::AlternativeServiceVector&
66 altsvc_vector));
67 MOCK_METHOD4(OnPriority,
68 void(SpdyStreamId stream_id,
69 SpdyStreamId parent_stream_id,
70 int weight,
71 bool exclusive));
72 MOCK_METHOD2(OnUnknownFrame,
73 bool(SpdyStreamId stream_id, uint8_t frame_type));
74
75 void DelegateHeaderHandling() {
76 ON_CALL(*this, OnHeaderFrameStart(testing::_))
77 .WillByDefault(testing::Invoke(
78 this, &MockSpdyFramerVisitor::ReturnTestHeadersHandler));
79 ON_CALL(*this, OnHeaderFrameEnd(testing::_))
80 .WillByDefault(testing::Invoke(
81 this, &MockSpdyFramerVisitor::ResetTestHeadersHandler));
82 }
83
84 SpdyHeadersHandlerInterface* ReturnTestHeadersHandler(
85 SpdyStreamId /* stream_id */) {
86 if (headers_handler_ == nullptr) {
bnc463f2352019-10-10 04:49:34 -070087 headers_handler_ = std::make_unique<TestHeadersHandler>();
QUICHE team82dee2f2019-01-18 12:35:12 -050088 }
89 return headers_handler_.get();
90 }
91
92 void ResetTestHeadersHandler(SpdyStreamId /* stream_id */) {
93 headers_handler_.reset();
94 }
95
96 std::unique_ptr<SpdyHeadersHandlerInterface> headers_handler_;
97};
98
99} // namespace test
100
101} // namespace spdy
102
103#endif // QUICHE_SPDY_CORE_MOCK_SPDY_FRAMER_VISITOR_H_