1 // Copyright (c) 2016 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 // SpdyNoOpVisitor implements several of the visitor and handler interfaces
6 // to make it easier to write tests that need to provide instances. Other
7 // interfaces can be added as needed.
8 
9 #ifndef QUICHE_SPDY_CORE_SPDY_NO_OP_VISITOR_H_
10 #define QUICHE_SPDY_CORE_SPDY_NO_OP_VISITOR_H_
11 
12 #include <cstdint>
13 
14 #include "absl/strings/string_view.h"
15 #include "net/third_party/quiche/src/spdy/core/http2_frame_decoder_adapter.h"
16 #include "net/third_party/quiche/src/spdy/core/spdy_protocol.h"
17 
18 namespace spdy {
19 namespace test {
20 
21 class SpdyNoOpVisitor : public SpdyFramerVisitorInterface,
22                         public SpdyFramerDebugVisitorInterface,
23                         public SpdyHeadersHandlerInterface {
24  public:
25   SpdyNoOpVisitor();
26   ~SpdyNoOpVisitor() override;
27 
28   // SpdyFramerVisitorInterface methods:
OnError(http2::Http2DecoderAdapter::SpdyFramerError,std::string)29   void OnError(http2::Http2DecoderAdapter::SpdyFramerError /*error*/,
30                std::string /*detailed_error*/) override {}
31   SpdyHeadersHandlerInterface* OnHeaderFrameStart(
32       SpdyStreamId stream_id) override;
OnHeaderFrameEnd(SpdyStreamId)33   void OnHeaderFrameEnd(SpdyStreamId /*stream_id*/) override {}
OnDataFrameHeader(SpdyStreamId,size_t,bool)34   void OnDataFrameHeader(SpdyStreamId /*stream_id*/,
35                          size_t /*length*/,
36                          bool /*fin*/) override {}
OnStreamFrameData(SpdyStreamId,const char *,size_t)37   void OnStreamFrameData(SpdyStreamId /*stream_id*/,
38                          const char* /*data*/,
39                          size_t /*len*/) override {}
OnStreamEnd(SpdyStreamId)40   void OnStreamEnd(SpdyStreamId /*stream_id*/) override {}
OnStreamPadding(SpdyStreamId,size_t)41   void OnStreamPadding(SpdyStreamId /*stream_id*/, size_t /*len*/) override {}
OnRstStream(SpdyStreamId,SpdyErrorCode)42   void OnRstStream(SpdyStreamId /*stream_id*/,
43                    SpdyErrorCode /*error_code*/) override {}
OnSetting(SpdySettingsId,uint32_t)44   void OnSetting(SpdySettingsId /*id*/, uint32_t /*value*/) override {}
OnPing(SpdyPingId,bool)45   void OnPing(SpdyPingId /*unique_id*/, bool /*is_ack*/) override {}
OnSettingsEnd()46   void OnSettingsEnd() override {}
OnSettingsAck()47   void OnSettingsAck() override {}
OnGoAway(SpdyStreamId,SpdyErrorCode)48   void OnGoAway(SpdyStreamId /*last_accepted_stream_id*/,
49                 SpdyErrorCode /*error_code*/) override {}
OnHeaders(SpdyStreamId,bool,int,SpdyStreamId,bool,bool,bool)50   void OnHeaders(SpdyStreamId /*stream_id*/,
51                  bool /*has_priority*/,
52                  int /*weight*/,
53                  SpdyStreamId /*parent_stream_id*/,
54                  bool /*exclusive*/,
55                  bool /*fin*/,
56                  bool /*end*/) override {}
OnWindowUpdate(SpdyStreamId,int)57   void OnWindowUpdate(SpdyStreamId /*stream_id*/,
58                       int /*delta_window_size*/) override {}
OnPushPromise(SpdyStreamId,SpdyStreamId,bool)59   void OnPushPromise(SpdyStreamId /*stream_id*/,
60                      SpdyStreamId /*promised_stream_id*/,
61                      bool /*end*/) override {}
OnContinuation(SpdyStreamId,bool)62   void OnContinuation(SpdyStreamId /*stream_id*/, bool /*end*/) override {}
OnAltSvc(SpdyStreamId,absl::string_view,const SpdyAltSvcWireFormat::AlternativeServiceVector &)63   void OnAltSvc(SpdyStreamId /*stream_id*/,
64                 absl::string_view /*origin*/,
65                 const SpdyAltSvcWireFormat::AlternativeServiceVector&
66                 /*altsvc_vector*/) override {}
OnPriority(SpdyStreamId,SpdyStreamId,int,bool)67   void OnPriority(SpdyStreamId /*stream_id*/,
68                   SpdyStreamId /*parent_stream_id*/,
69                   int /*weight*/,
70                   bool /*exclusive*/) override {}
71   bool OnUnknownFrame(SpdyStreamId /*stream_id*/,
72                       uint8_t /*frame_type*/) override;
73 
74   // SpdyFramerDebugVisitorInterface methods:
OnSendCompressedFrame(SpdyStreamId,SpdyFrameType,size_t,size_t)75   void OnSendCompressedFrame(SpdyStreamId /*stream_id*/,
76                              SpdyFrameType /*type*/,
77                              size_t /*payload_len*/,
78                              size_t /*frame_len*/) override {}
OnReceiveCompressedFrame(SpdyStreamId,SpdyFrameType,size_t)79   void OnReceiveCompressedFrame(SpdyStreamId /*stream_id*/,
80                                 SpdyFrameType /*type*/,
81                                 size_t /*frame_len*/) override {}
82 
83   // SpdyHeadersHandlerInterface methods:
OnHeaderBlockStart()84   void OnHeaderBlockStart() override {}
OnHeader(absl::string_view,absl::string_view)85   void OnHeader(absl::string_view /*key*/,
86                 absl::string_view /*value*/) override {}
OnHeaderBlockEnd(size_t,size_t)87   void OnHeaderBlockEnd(size_t /* uncompressed_header_bytes */,
88                         size_t /* compressed_header_bytes */) override {}
89 };
90 
91 }  // namespace test
92 }  // namespace spdy
93 
94 #endif  // QUICHE_SPDY_CORE_SPDY_NO_OP_VISITOR_H_
95