spdy_stream_test_util.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/spdy/spdy_stream_test_util.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/completion_callback.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/spdy/spdy_stream.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace test {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestSpdyStreamDelegate::TestSpdyStreamDelegate(
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SpdyStream* stream,
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SpdyHeaderBlock* headers,
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    IOBufferWithSize* buf,
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const CompletionCallback& callback)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : stream_(stream),
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      headers_(headers),
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      buf_(buf),
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      callback_(callback),
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      send_headers_completed_(false),
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      response_(new SpdyHeaderBlock),
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      headers_sent_(0),
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      data_sent_(0),
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      closed_(false) {
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestSpdyStreamDelegate::~TestSpdyStreamDelegate() {
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestSpdyStreamDelegate::OnSendHeadersComplete(int status) {
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  send_headers_completed_ = true;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int TestSpdyStreamDelegate::OnSendBody() {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ADD_FAILURE() << "OnSendBody should not be called";
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return ERR_UNEXPECTED;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int TestSpdyStreamDelegate::OnSendBodyComplete(int /*status*/, bool* /*eof*/) {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ADD_FAILURE() << "OnSendBodyComplete should not be called";
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return ERR_UNEXPECTED;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int TestSpdyStreamDelegate::OnResponseReceived(const SpdyHeaderBlock& response,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                               base::Time response_time,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                               int status) {
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(send_headers_completed_);
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *response_ = response;
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (headers_.get()) {
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_EQ(ERR_IO_PENDING,
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              stream_->WriteHeaders(headers_.release()));
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (buf_) {
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_EQ(ERR_IO_PENDING,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              stream_->WriteStreamData(buf_.get(), buf_->size(),
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       DATA_FLAG_NONE));
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return status;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TestSpdyStreamDelegate::OnHeadersSent() {
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  headers_sent_++;
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int TestSpdyStreamDelegate::OnDataReceived(const char* buffer, int bytes) {
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  received_data_ += std::string(buffer, bytes);
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return OK;
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TestSpdyStreamDelegate::OnDataSent(int length) {
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  data_sent_ += length;
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TestSpdyStreamDelegate::OnClose(int status) {
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  closed_ = true;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CompletionCallback callback = callback_;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  callback_.Reset();
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  callback.Run(OK);
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace test
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace net
88