| Index: remoting/protocol/fake_session.cc
|
| diff --git a/remoting/protocol/fake_session.cc b/remoting/protocol/fake_session.cc
|
| index 69f87db58137c131c5fd18f5d11b777a89163a8f..dc64a1d52cfafcc2233cafdc300a2155ab6fda6b 100644
|
| --- a/remoting/protocol/fake_session.cc
|
| +++ b/remoting/protocol/fake_session.cc
|
| @@ -18,7 +18,11 @@ namespace protocol {
|
| const char kTestJid[] = "host1@gmail.com/chromoting123";
|
|
|
| FakeSocket::FakeSocket()
|
| - : next_read_error_(net::OK),
|
| + : async_write_(false),
|
| + write_pending_(false),
|
| + write_limit_(0),
|
| + next_write_error_(net::OK),
|
| + next_read_error_(net::OK),
|
| read_pending_(false),
|
| read_buffer_size_(0),
|
| input_pos_(0),
|
| @@ -81,6 +85,45 @@ int FakeSocket::Read(net::IOBuffer* buf, int buf_len,
|
| int FakeSocket::Write(net::IOBuffer* buf, int buf_len,
|
| const net::CompletionCallback& callback) {
|
| EXPECT_EQ(message_loop_, MessageLoop::current());
|
| + EXPECT_FALSE(write_pending_);
|
| +
|
| + if (write_limit_ > 0)
|
| + buf_len = std::min(write_limit_, buf_len);
|
| +
|
| + if (async_write_) {
|
| + message_loop_->PostTask(FROM_HERE, base::Bind(
|
| + &FakeSocket::DoAsyncWrite, weak_factory_.GetWeakPtr(),
|
| + scoped_refptr<net::IOBuffer>(buf), buf_len, callback));
|
| + write_pending_ = true;
|
| + return net::ERR_IO_PENDING;
|
| + } else {
|
| + if (next_write_error_ != net::OK) {
|
| + int r = next_write_error_;
|
| + next_write_error_ = net::OK;
|
| + return r;
|
| + }
|
| +
|
| + DoWrite(buf, buf_len);
|
| + return buf_len;
|
| + }
|
| +}
|
| +
|
| +void FakeSocket::DoAsyncWrite(scoped_refptr<net::IOBuffer> buf, int buf_len,
|
| + const net::CompletionCallback& callback) {
|
| + write_pending_ = false;
|
| +
|
| + if (next_write_error_ != net::OK) {
|
| + int r = next_write_error_;
|
| + next_write_error_ = net::OK;
|
| + callback.Run(r);
|
| + return;
|
| + }
|
| +
|
| + DoWrite(buf, buf_len);
|
| + callback.Run(buf_len);
|
| +}
|
| +
|
| +void FakeSocket::DoWrite(net::IOBuffer* buf, int buf_len) {
|
| written_data_.insert(written_data_.end(),
|
| buf->data(), buf->data() + buf_len);
|
|
|
| @@ -89,8 +132,6 @@ int FakeSocket::Write(net::IOBuffer* buf, int buf_len,
|
| &FakeSocket::AppendInputData, peer_socket_,
|
| std::vector<char>(buf->data(), buf->data() + buf_len)));
|
| }
|
| -
|
| - return buf_len;
|
| }
|
|
|
| bool FakeSocket::SetReceiveBufferSize(int32 size) {
|
|
|