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