1 // Copyright 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 #ifndef QUICHE_HTTP2_TEST_TOOLS_FRAME_PARTS_COLLECTOR_LISTENER_H_
6 #define QUICHE_HTTP2_TEST_TOOLS_FRAME_PARTS_COLLECTOR_LISTENER_H_
7 
8 // FramePartsCollectorListener extends FramePartsCollector with an
9 // implementation of every method of Http2FrameDecoderListener; it is
10 // essentially the union of all the Listener classes in the tests of the
11 // payload decoders (i.e. in ./payload_decoders/*_test.cc files), with the
12 // addition of the OnFrameHeader method.
13 // FramePartsCollectorListener supports tests of Http2FrameDecoder.
14 
15 #include <stddef.h>
16 
17 #include <cstdint>
18 
19 #include "quiche/http2/decoder/http2_frame_decoder_listener.h"
20 #include "quiche/http2/http2_constants.h"
21 #include "quiche/http2/http2_structures.h"
22 #include "quiche/http2/test_tools/frame_parts_collector.h"
23 #include "quiche/common/platform/api/quiche_export.h"
24 
25 namespace http2 {
26 namespace test {
27 
28 class QUICHE_NO_EXPORT FramePartsCollectorListener
29     : public FramePartsCollector {
30  public:
FramePartsCollectorListener()31   FramePartsCollectorListener() {}
~FramePartsCollectorListener()32   ~FramePartsCollectorListener() override {}
33 
34   // TODO(jamessynge): Remove OnFrameHeader once done with supporting
35   // SpdyFramer's exact states.
36   bool OnFrameHeader(const Http2FrameHeader& header) override;
37   void OnDataStart(const Http2FrameHeader& header) override;
38   void OnDataPayload(const char* data, size_t len) override;
39   void OnDataEnd() override;
40   void OnHeadersStart(const Http2FrameHeader& header) override;
41   void OnHeadersPriority(const Http2PriorityFields& priority) override;
42   void OnHpackFragment(const char* data, size_t len) override;
43   void OnHeadersEnd() override;
44   void OnPriorityFrame(const Http2FrameHeader& header,
45                        const Http2PriorityFields& priority_fields) override;
46   void OnContinuationStart(const Http2FrameHeader& header) override;
47   void OnContinuationEnd() override;
48   void OnPadLength(size_t pad_length) override;
49   void OnPadding(const char* padding, size_t skipped_length) override;
50   void OnRstStream(const Http2FrameHeader& header,
51                    Http2ErrorCode error_code) override;
52   void OnSettingsStart(const Http2FrameHeader& header) override;
53   void OnSetting(const Http2SettingFields& setting_fields) override;
54   void OnSettingsEnd() override;
55   void OnSettingsAck(const Http2FrameHeader& header) override;
56   void OnPushPromiseStart(const Http2FrameHeader& header,
57                           const Http2PushPromiseFields& promise,
58                           size_t total_padding_length) override;
59   void OnPushPromiseEnd() override;
60   void OnPing(const Http2FrameHeader& header,
61               const Http2PingFields& ping) override;
62   void OnPingAck(const Http2FrameHeader& header,
63                  const Http2PingFields& ping) override;
64   void OnGoAwayStart(const Http2FrameHeader& header,
65                      const Http2GoAwayFields& goaway) override;
66   void OnGoAwayOpaqueData(const char* data, size_t len) override;
67   void OnGoAwayEnd() override;
68   void OnWindowUpdate(const Http2FrameHeader& header,
69                       uint32_t window_size_increment) override;
70   void OnAltSvcStart(const Http2FrameHeader& header, size_t origin_length,
71                      size_t value_length) override;
72   void OnAltSvcOriginData(const char* data, size_t len) override;
73   void OnAltSvcValueData(const char* data, size_t len) override;
74   void OnAltSvcEnd() override;
75   void OnPriorityUpdateStart(
76       const Http2FrameHeader& header,
77       const Http2PriorityUpdateFields& priority_update) override;
78   void OnPriorityUpdatePayload(const char* data, size_t len) override;
79   void OnPriorityUpdateEnd() override;
80   void OnUnknownStart(const Http2FrameHeader& header) override;
81   void OnUnknownPayload(const char* data, size_t len) override;
82   void OnUnknownEnd() override;
83   void OnPaddingTooLong(const Http2FrameHeader& header,
84                         size_t missing_length) override;
85   void OnFrameSizeError(const Http2FrameHeader& header) override;
86 };
87 
88 }  // namespace test
89 }  // namespace http2
90 
91 #endif  // QUICHE_HTTP2_TEST_TOOLS_FRAME_PARTS_COLLECTOR_LISTENER_H_
92