blob: e2144aece022f25434066f75320daf0a17da9faf [file] [log] [blame]
// Copyright (c) 2012 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.
#include "net/spdy/spdy_stream_test_util.h"
#include "net/base/completion_callback.h"
#include "net/spdy/spdy_stream.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace net {
namespace test {
TestSpdyStreamDelegate::TestSpdyStreamDelegate(
SpdyStream* stream,
SpdyHeaderBlock* headers,
IOBufferWithSize* buf,
const CompletionCallback& callback)
: stream_(stream),
headers_(headers),
buf_(buf),
callback_(callback),
send_headers_completed_(false),
response_(new SpdyHeaderBlock),
headers_sent_(0),
data_sent_(0),
closed_(false) {
}
TestSpdyStreamDelegate::~TestSpdyStreamDelegate() {
}
bool TestSpdyStreamDelegate::OnSendHeadersComplete(int status) {
send_headers_completed_ = true;
return true;
}
int TestSpdyStreamDelegate::OnSendBody() {
ADD_FAILURE() << "OnSendBody should not be called";
return ERR_UNEXPECTED;
}
int TestSpdyStreamDelegate::OnSendBodyComplete(int /*status*/, bool* /*eof*/) {
ADD_FAILURE() << "OnSendBodyComplete should not be called";
return ERR_UNEXPECTED;
}
int TestSpdyStreamDelegate::OnResponseReceived(const SpdyHeaderBlock& response,
base::Time response_time,
int status) {
EXPECT_TRUE(send_headers_completed_);
*response_ = response;
if (headers_.get()) {
EXPECT_EQ(ERR_IO_PENDING,
stream_->WriteHeaders(headers_.release()));
}
if (buf_) {
EXPECT_EQ(ERR_IO_PENDING,
stream_->WriteStreamData(buf_.get(), buf_->size(),
DATA_FLAG_NONE));
}
return status;
}
void TestSpdyStreamDelegate::OnHeadersSent() {
headers_sent_++;
}
int TestSpdyStreamDelegate::OnDataReceived(const char* buffer, int bytes) {
received_data_ += std::string(buffer, bytes);
return OK;
}
void TestSpdyStreamDelegate::OnDataSent(int length) {
data_sent_ += length;
}
void TestSpdyStreamDelegate::OnClose(int status) {
closed_ = true;
CompletionCallback callback = callback_;
callback_.Reset();
callback.Run(OK);
}
} // namespace test
} // namespace net