blob: 3369d26e84f04d275ed205dc8d4af97820aa9b3c [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef QUICHE_SPDY_TEST_TOOLS_MOCK_SPDY_FRAMER_VISITOR_H_
#define QUICHE_SPDY_TEST_TOOLS_MOCK_SPDY_FRAMER_VISITOR_H_
#include <cstddef>
#include <cstdint>
#include <memory>
#include <string>
#include "absl/strings/string_view.h"
#include "quiche/common/platform/api/quiche_export.h"
#include "quiche/common/platform/api/quiche_test.h"
#include "quiche/spdy/core/http2_frame_decoder_adapter.h"
#include "quiche/spdy/core/recording_headers_handler.h"
#include "quiche/spdy/core/spdy_alt_svc_wire_format.h"
#include "quiche/spdy/core/spdy_headers_handler_interface.h"
#include "quiche/spdy/core/spdy_protocol.h"
namespace spdy {
namespace test {
class QUICHE_NO_EXPORT MockSpdyFramerVisitor
: public SpdyFramerVisitorInterface {
public:
MockSpdyFramerVisitor();
~MockSpdyFramerVisitor() override;
MOCK_METHOD(void, OnError,
(http2::Http2DecoderAdapter::SpdyFramerError error,
std::string detailed_error),
(override));
MOCK_METHOD(void, OnCommonHeader,
(SpdyStreamId stream_id, size_t length, uint8_t type,
uint8_t flags),
(override));
MOCK_METHOD(void, OnDataFrameHeader,
(SpdyStreamId stream_id, size_t length, bool fin), (override));
MOCK_METHOD(void, OnStreamFrameData,
(SpdyStreamId stream_id, const char* data, size_t len),
(override));
MOCK_METHOD(void, OnStreamEnd, (SpdyStreamId stream_id), (override));
MOCK_METHOD(void, OnStreamPadLength, (SpdyStreamId stream_id, size_t value),
(override));
MOCK_METHOD(void, OnStreamPadding, (SpdyStreamId stream_id, size_t len),
(override));
MOCK_METHOD(SpdyHeadersHandlerInterface*, OnHeaderFrameStart,
(SpdyStreamId stream_id), (override));
MOCK_METHOD(void, OnHeaderFrameEnd, (SpdyStreamId stream_id), (override));
MOCK_METHOD(void, OnRstStream,
(SpdyStreamId stream_id, SpdyErrorCode error_code), (override));
MOCK_METHOD(void, OnSettings, (), (override));
MOCK_METHOD(void, OnSetting, (SpdySettingsId id, uint32_t value), (override));
MOCK_METHOD(void, OnPing, (SpdyPingId unique_id, bool is_ack), (override));
MOCK_METHOD(void, OnSettingsEnd, (), (override));
MOCK_METHOD(void, OnSettingsAck, (), (override));
MOCK_METHOD(void, OnGoAway,
(SpdyStreamId last_accepted_stream_id, SpdyErrorCode error_code),
(override));
MOCK_METHOD(bool, OnGoAwayFrameData, (const char* goaway_data, size_t len),
(override));
MOCK_METHOD(void, OnHeaders,
(SpdyStreamId stream_id, size_t payload_length, bool has_priority,
int weight, SpdyStreamId parent_stream_id, bool exclusive,
bool fin, bool end),
(override));
MOCK_METHOD(void, OnWindowUpdate,
(SpdyStreamId stream_id, int delta_window_size), (override));
MOCK_METHOD(void, OnPushPromise,
(SpdyStreamId stream_id, SpdyStreamId promised_stream_id,
bool end),
(override));
MOCK_METHOD(void, OnContinuation,
(SpdyStreamId stream_id, size_t payload_length, bool end),
(override));
MOCK_METHOD(
void, OnAltSvc,
(SpdyStreamId stream_id, absl::string_view origin,
const SpdyAltSvcWireFormat::AlternativeServiceVector& altsvc_vector),
(override));
MOCK_METHOD(void, OnPriority,
(SpdyStreamId stream_id, SpdyStreamId parent_stream_id,
int weight, bool exclusive),
(override));
MOCK_METHOD(void, OnPriorityUpdate,
(SpdyStreamId prioritized_stream_id,
absl::string_view priority_field_value),
(override));
MOCK_METHOD(bool, OnUnknownFrame,
(SpdyStreamId stream_id, uint8_t frame_type), (override));
MOCK_METHOD(void, OnUnknownFrameStart,
(SpdyStreamId stream_id, size_t length, uint8_t type,
uint8_t flags),
(override));
MOCK_METHOD(void, OnUnknownFramePayload,
(SpdyStreamId stream_id, absl::string_view payload), (override));
void DelegateHeaderHandling() {
ON_CALL(*this, OnHeaderFrameStart(testing::_))
.WillByDefault(testing::Invoke(
this, &MockSpdyFramerVisitor::ReturnTestHeadersHandler));
ON_CALL(*this, OnHeaderFrameEnd(testing::_))
.WillByDefault(testing::Invoke(
this, &MockSpdyFramerVisitor::ResetTestHeadersHandler));
}
SpdyHeadersHandlerInterface* ReturnTestHeadersHandler(
SpdyStreamId /* stream_id */) {
if (headers_handler_ == nullptr) {
headers_handler_ = std::make_unique<RecordingHeadersHandler>();
}
return headers_handler_.get();
}
void ResetTestHeadersHandler(SpdyStreamId /* stream_id */) {
headers_handler_.reset();
}
std::unique_ptr<SpdyHeadersHandlerInterface> headers_handler_;
};
} // namespace test
} // namespace spdy
#endif // QUICHE_SPDY_TEST_TOOLS_MOCK_SPDY_FRAMER_VISITOR_H_