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