summaryrefslogtreecommitdiffstats
path: root/net/socket/socket_test_util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/socket/socket_test_util.cc')
-rw-r--r--net/socket/socket_test_util.cc476
1 files changed, 131 insertions, 345 deletions
diff --git a/net/socket/socket_test_util.cc b/net/socket/socket_test_util.cc
index 376d542..6b4e00f 100644
--- a/net/socket/socket_test_util.cc
+++ b/net/socket/socket_test_util.cc
@@ -176,7 +176,7 @@ MockWriteResult StaticSocketDataProvider::OnWrite(const std::string& data) {
// Check that what we are writing matches the expectation.
// Then give the mocked return value.
- net::MockWrite* w = &writes_[write_index_++];
+ MockWrite* w = &writes_[write_index_++];
w->time_stamp = base::Time::Now();
int result = w->result;
if (w->data) {
@@ -191,8 +191,8 @@ MockWriteResult StaticSocketDataProvider::OnWrite(const std::string& data) {
std::string actual_data(data.substr(0, w->data_len));
EXPECT_EQ(expected_data, actual_data);
if (expected_data != actual_data)
- return MockWriteResult(false, net::ERR_UNEXPECTED);
- if (result == net::OK)
+ return MockWriteResult(false, ERR_UNEXPECTED);
+ if (result == OK)
result = w->data_len;
}
return MockWriteResult(w->async, result);
@@ -252,7 +252,7 @@ DelayedSocketData::DelayedSocketData(
MockWrite* writes, size_t writes_count)
: StaticSocketDataProvider(reads, reads_count, writes, writes_count),
write_delay_(write_delay),
- ALLOW_THIS_IN_INITIALIZER_LIST(factory_(this)) {
+ ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
DCHECK_GE(write_delay_, 0);
}
@@ -261,7 +261,7 @@ DelayedSocketData::DelayedSocketData(
size_t reads_count, MockWrite* writes, size_t writes_count)
: StaticSocketDataProvider(reads, reads_count, writes, writes_count),
write_delay_(write_delay),
- ALLOW_THIS_IN_INITIALIZER_LIST(factory_(this)) {
+ ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
DCHECK_GE(write_delay_, 0);
set_connect_data(connect);
}
@@ -284,14 +284,17 @@ MockWriteResult DelayedSocketData::OnWrite(const std::string& data) {
MockWriteResult rv = StaticSocketDataProvider::OnWrite(data);
// Now that our write has completed, we can allow reads to continue.
if (!--write_delay_)
- MessageLoop::current()->PostDelayedTask(FROM_HERE,
- factory_.NewRunnableMethod(&DelayedSocketData::CompleteRead), 100);
+ MessageLoop::current()->PostDelayedTask(
+ FROM_HERE,
+ base::Bind(&DelayedSocketData::CompleteRead,
+ weak_factory_.GetWeakPtr()),
+ 100);
return rv;
}
void DelayedSocketData::Reset() {
set_socket(NULL);
- factory_.RevokeAll();
+ weak_factory_.InvalidateWeakPtrs();
StaticSocketDataProvider::Reset();
}
@@ -303,8 +306,8 @@ void DelayedSocketData::CompleteRead() {
OrderedSocketData::OrderedSocketData(
MockRead* reads, size_t reads_count, MockWrite* writes, size_t writes_count)
: StaticSocketDataProvider(reads, reads_count, writes, writes_count),
- sequence_number_(0), loop_stop_stage_(0), callback_(NULL),
- blocked_(false), ALLOW_THIS_IN_INITIALIZER_LIST(factory_(this)) {
+ sequence_number_(0), loop_stop_stage_(0),
+ blocked_(false), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
}
OrderedSocketData::OrderedSocketData(
@@ -312,8 +315,8 @@ OrderedSocketData::OrderedSocketData(
MockRead* reads, size_t reads_count,
MockWrite* writes, size_t writes_count)
: StaticSocketDataProvider(reads, reads_count, writes, writes_count),
- sequence_number_(0), loop_stop_stage_(0), callback_(NULL),
- blocked_(false), ALLOW_THIS_IN_INITIALIZER_LIST(factory_(this)) {
+ sequence_number_(0), loop_stop_stage_(0),
+ blocked_(false), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
set_connect_data(connect);
}
@@ -336,12 +339,12 @@ void OrderedSocketData::EndLoop() {
NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_
<< ": Posting Quit at read " << read_index();
loop_stop_stage_ = sequence_number_;
- if (callback_)
- callback_->RunWithParams(Tuple1<int>(ERR_IO_PENDING));
+ if (!callback_.is_null())
+ callback_.Run(ERR_IO_PENDING);
}
MockRead OrderedSocketData::GetNextRead() {
- factory_.RevokeAll();
+ weak_factory_.InvalidateWeakPtrs();
blocked_ = false;
const MockRead& next_read = StaticSocketDataProvider::PeekRead();
if (next_read.sequence_number & MockRead::STOPLOOP)
@@ -374,7 +377,9 @@ MockWriteResult OrderedSocketData::OnWrite(const std::string& data) {
// SpdyStream::ReadResponseHeaders() is called, we hit a NOTREACHED().
MessageLoop::current()->PostDelayedTask(
FROM_HERE,
- factory_.NewRunnableMethod(&OrderedSocketData::CompleteRead), 100);
+ base::Bind(&OrderedSocketData::CompleteRead,
+ weak_factory_.GetWeakPtr()),
+ 100);
}
return StaticSocketDataProvider::OnWrite(data);
}
@@ -385,7 +390,7 @@ void OrderedSocketData::Reset() {
sequence_number_ = 0;
loop_stop_stage_ = 0;
set_socket(NULL);
- factory_.RevokeAll();
+ weak_factory_.InvalidateWeakPtrs();
StaticSocketDataProvider::Reset();
}
@@ -593,8 +598,8 @@ MockSSLClientSocket* MockClientSocketFactory::GetMockSSLClientSocket(
DatagramClientSocket* MockClientSocketFactory::CreateDatagramClientSocket(
DatagramSocket::BindType bind_type,
const RandIntCallback& rand_int_cb,
- NetLog* net_log,
- const NetLog::Source& source) {
+ net::NetLog* net_log,
+ const net::NetLog::Source& source) {
SocketDataProvider* data_provider = mock_data_.GetNext();
MockUDPClientSocket* socket = new MockUDPClientSocket(data_provider, net_log);
data_provider->set_socket(socket);
@@ -605,7 +610,7 @@ DatagramClientSocket* MockClientSocketFactory::CreateDatagramClientSocket(
StreamSocket* MockClientSocketFactory::CreateTransportClientSocket(
const AddressList& addresses,
net::NetLog* net_log,
- const NetLog::Source& source) {
+ const net::NetLog::Source& source) {
SocketDataProvider* data_provider = mock_data_.GetNext();
MockTCPClientSocket* socket =
new MockTCPClientSocket(addresses, net_log, data_provider);
@@ -633,7 +638,7 @@ void MockClientSocketFactory::ClearSSLSessionCache() {
MockClientSocket::MockClientSocket(net::NetLog* net_log)
: ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)),
connected_(false),
- net_log_(NetLog::Source(), net_log) {
+ net_log_(net::NetLog::Source(), net_log) {
}
bool MockClientSocket::SetReceiveBufferSize(int32 size) {
@@ -676,12 +681,12 @@ const BoundNetLog& MockClientSocket::NetLog() const {
return net_log_;
}
-void MockClientSocket::GetSSLInfo(net::SSLInfo* ssl_info) {
+void MockClientSocket::GetSSLInfo(SSLInfo* ssl_info) {
NOTREACHED();
}
void MockClientSocket::GetSSLCertRequestInfo(
- net::SSLCertRequestInfo* cert_request_info) {
+ SSLCertRequestInfo* cert_request_info) {
}
int MockClientSocket::ExportKeyingMaterial(const base::StringPiece& label,
@@ -701,44 +706,32 @@ MockClientSocket::GetNextProto(std::string* proto, std::string* server_protos) {
MockClientSocket::~MockClientSocket() {}
-void MockClientSocket::RunCallbackAsync(net::OldCompletionCallback* callback,
- int result) {
- MessageLoop::current()->PostTask(FROM_HERE,
- base::Bind(&MockClientSocket::RunOldCallback, weak_factory_.GetWeakPtr(),
- callback, result));
-}
-void MockClientSocket::RunCallbackAsync(const net::CompletionCallback& callback,
+void MockClientSocket::RunCallbackAsync(const CompletionCallback& callback,
int result) {
MessageLoop::current()->PostTask(FROM_HERE,
base::Bind(&MockClientSocket::RunCallback, weak_factory_.GetWeakPtr(),
callback, result));
}
-void MockClientSocket::RunOldCallback(net::OldCompletionCallback* callback,
- int result) {
- if (callback)
- callback->Run(result);
-}
void MockClientSocket::RunCallback(const net::CompletionCallback& callback,
int result) {
if (!callback.is_null())
callback.Run(result);
}
-MockTCPClientSocket::MockTCPClientSocket(const net::AddressList& addresses,
+MockTCPClientSocket::MockTCPClientSocket(const AddressList& addresses,
net::NetLog* net_log,
- net::SocketDataProvider* data)
+ SocketDataProvider* data)
: MockClientSocket(net_log),
addresses_(addresses),
data_(data),
read_offset_(0),
num_bytes_read_(0),
- read_data_(false, net::ERR_UNEXPECTED),
+ read_data_(false, ERR_UNEXPECTED),
need_read_data_(true),
peer_closed_connection_(false),
pending_buf_(NULL),
pending_buf_len_(0),
- old_pending_callback_(NULL),
was_used_to_convey_data_(false) {
DCHECK(data_);
data_->Reset();
@@ -746,42 +739,10 @@ MockTCPClientSocket::MockTCPClientSocket(const net::AddressList& addresses,
MockTCPClientSocket::~MockTCPClientSocket() {}
-int MockTCPClientSocket::Read(net::IOBuffer* buf, int buf_len,
- net::OldCompletionCallback* callback) {
+int MockTCPClientSocket::Read(IOBuffer* buf, int buf_len,
+ const CompletionCallback& callback) {
if (!connected_)
- return net::ERR_UNEXPECTED;
-
- // If the buffer is already in use, a read is already in progress!
- DCHECK(pending_buf_ == NULL);
-
- // Store our async IO data.
- pending_buf_ = buf;
- pending_buf_len_ = buf_len;
- old_pending_callback_ = callback;
-
- if (need_read_data_) {
- read_data_ = data_->GetNextRead();
- if (read_data_.result == ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ) {
- // This MockRead is just a marker to instruct us to set
- // peer_closed_connection_. Skip it and get the next one.
- read_data_ = data_->GetNextRead();
- peer_closed_connection_ = true;
- }
- // ERR_IO_PENDING means that the SocketDataProvider is taking responsibility
- // to complete the async IO manually later (via OnReadComplete).
- if (read_data_.result == ERR_IO_PENDING) {
- DCHECK(callback); // We need to be using async IO in this case.
- return ERR_IO_PENDING;
- }
- need_read_data_ = false;
- }
-
- return CompleteRead();
-}
-int MockTCPClientSocket::Read(net::IOBuffer* buf, int buf_len,
- const net::CompletionCallback& callback) {
- if (!connected_)
- return net::ERR_UNEXPECTED;
+ return ERR_UNEXPECTED;
// If the buffer is already in use, a read is already in progress!
DCHECK(pending_buf_ == NULL);
@@ -812,55 +773,41 @@ int MockTCPClientSocket::Read(net::IOBuffer* buf, int buf_len,
return CompleteRead();
}
-int MockTCPClientSocket::Write(net::IOBuffer* buf, int buf_len,
- net::OldCompletionCallback* callback) {
+int MockTCPClientSocket::Write(IOBuffer* buf, int buf_len,
+ const CompletionCallback& callback) {
DCHECK(buf);
DCHECK_GT(buf_len, 0);
if (!connected_)
- return net::ERR_UNEXPECTED;
+ return ERR_UNEXPECTED;
std::string data(buf->data(), buf_len);
- net::MockWriteResult write_result = data_->OnWrite(data);
+ MockWriteResult write_result = data_->OnWrite(data);
was_used_to_convey_data_ = true;
if (write_result.async) {
RunCallbackAsync(callback, write_result.result);
- return net::ERR_IO_PENDING;
+ return ERR_IO_PENDING;
}
return write_result.result;
}
-int MockTCPClientSocket::Connect(net::OldCompletionCallback* callback) {
- if (connected_)
- return net::OK;
- connected_ = true;
- peer_closed_connection_ = false;
- if (data_->connect_data().async) {
- RunCallbackAsync(callback, data_->connect_data().result);
- return net::ERR_IO_PENDING;
- }
- return data_->connect_data().result;
-}
-int MockTCPClientSocket::Connect(const net::CompletionCallback& callback) {
+int MockTCPClientSocket::Connect(const CompletionCallback& callback) {
if (connected_)
- return net::OK;
-
+ return OK;
connected_ = true;
peer_closed_connection_ = false;
if (data_->connect_data().async) {
RunCallbackAsync(callback, data_->connect_data().result);
- return net::ERR_IO_PENDING;
+ return ERR_IO_PENDING;
}
-
return data_->connect_data().result;
}
void MockTCPClientSocket::Disconnect() {
MockClientSocket::Disconnect();
- old_pending_callback_ = NULL;
pending_callback_.Reset();
}
@@ -912,15 +859,9 @@ void MockTCPClientSocket::OnReadComplete(const MockRead& data) {
// let CompleteRead() schedule a callback.
read_data_.async = false;
- if (old_pending_callback_) {
- net::OldCompletionCallback* callback = old_pending_callback_;
- int rv = CompleteRead();
- RunOldCallback(callback, rv);
- } else {
- net::CompletionCallback callback = pending_callback_;
- int rv = CompleteRead();
- RunCallback(callback, rv);
- }
+ CompletionCallback callback = pending_callback_;
+ int rv = CompleteRead();
+ RunCallback(callback, rv);
}
int MockTCPClientSocket::CompleteRead() {
@@ -930,13 +871,11 @@ int MockTCPClientSocket::CompleteRead() {
was_used_to_convey_data_ = true;
// Save the pending async IO data and reset our |pending_| state.
- net::IOBuffer* buf = pending_buf_;
+ IOBuffer* buf = pending_buf_;
int buf_len = pending_buf_len_;
- net::OldCompletionCallback* old_callback = old_pending_callback_;
- net::CompletionCallback callback = pending_callback_;
+ CompletionCallback callback = pending_callback_;
pending_buf_ = NULL;
pending_buf_len_ = 0;
- old_pending_callback_ = NULL;
pending_callback_.Reset();
int result = read_data_.result;
@@ -958,27 +897,22 @@ int MockTCPClientSocket::CompleteRead() {
}
if (read_data_.async) {
- DCHECK(old_callback || !callback.is_null());
- if (old_callback)
- RunCallbackAsync(old_callback, result);
- else
- RunCallbackAsync(callback, result);
- return net::ERR_IO_PENDING;
+ DCHECK(!callback.is_null());
+ RunCallbackAsync(callback, result);
+ return ERR_IO_PENDING;
}
return result;
}
DeterministicMockTCPClientSocket::DeterministicMockTCPClientSocket(
- net::NetLog* net_log, net::DeterministicSocketData* data)
+ net::NetLog* net_log, DeterministicSocketData* data)
: MockClientSocket(net_log),
write_pending_(false),
- write_callback_(NULL),
write_result_(0),
read_data_(),
read_buf_(NULL),
read_buf_len_(0),
read_pending_(false),
- old_read_callback_(NULL),
data_(data),
was_used_to_convey_data_(false) {}
@@ -987,7 +921,7 @@ DeterministicMockTCPClientSocket::~DeterministicMockTCPClientSocket() {}
void DeterministicMockTCPClientSocket::CompleteWrite() {
was_used_to_convey_data_ = true;
write_pending_ = false;
- write_callback_->Run(write_result_);
+ write_callback_.Run(write_result_);
}
int DeterministicMockTCPClientSocket::CompleteRead() {
@@ -1012,32 +946,29 @@ int DeterministicMockTCPClientSocket::CompleteRead() {
if (read_pending_) {
read_pending_ = false;
- if (old_read_callback_)
- old_read_callback_->Run(result);
- else
- read_callback_.Run(result);
+ read_callback_.Run(result);
}
return result;
}
int DeterministicMockTCPClientSocket::Write(
- net::IOBuffer* buf, int buf_len, net::OldCompletionCallback* callback) {
+ IOBuffer* buf, int buf_len, const CompletionCallback& callback) {
DCHECK(buf);
DCHECK_GT(buf_len, 0);
if (!connected_)
- return net::ERR_UNEXPECTED;
+ return ERR_UNEXPECTED;
std::string data(buf->data(), buf_len);
- net::MockWriteResult write_result = data_->OnWrite(data);
+ MockWriteResult write_result = data_->OnWrite(data);
if (write_result.async) {
write_callback_ = callback;
write_result_ = write_result.result;
- DCHECK(write_callback_ != NULL);
+ DCHECK(!write_callback_.is_null());
write_pending_ = true;
- return net::ERR_IO_PENDING;
+ return ERR_IO_PENDING;
}
was_used_to_convey_data_ = true;
@@ -1046,32 +977,9 @@ int DeterministicMockTCPClientSocket::Write(
}
int DeterministicMockTCPClientSocket::Read(
- net::IOBuffer* buf, int buf_len, net::OldCompletionCallback* callback) {
- if (!connected_)
- return net::ERR_UNEXPECTED;
-
- read_data_ = data_->GetNextRead();
- // The buffer should always be big enough to contain all the MockRead data. To
- // use small buffers, split the data into multiple MockReads.
- DCHECK_LE(read_data_.data_len, buf_len);
-
- read_buf_ = buf;
- read_buf_len_ = buf_len;
- old_read_callback_ = callback;
-
- if (read_data_.async || (read_data_.result == ERR_IO_PENDING)) {
- read_pending_ = true;
- DCHECK(old_read_callback_);
- return ERR_IO_PENDING;
- }
-
- was_used_to_convey_data_ = true;
- return CompleteRead();
-}
-int DeterministicMockTCPClientSocket::Read(
- net::IOBuffer* buf, int buf_len, const net::CompletionCallback& callback) {
+ IOBuffer* buf, int buf_len, const CompletionCallback& callback) {
if (!connected_)
- return net::ERR_UNEXPECTED;
+ return ERR_UNEXPECTED;
read_data_ = data_->GetNextRead();
// The buffer should always be big enough to contain all the MockRead data. To
@@ -1094,27 +1002,14 @@ int DeterministicMockTCPClientSocket::Read(
// TODO(erikchen): Support connect sequencing.
int DeterministicMockTCPClientSocket::Connect(
- net::OldCompletionCallback* callback) {
- if (connected_)
- return net::OK;
- connected_ = true;
- if (data_->connect_data().async) {
- RunCallbackAsync(callback, data_->connect_data().result);
- return net::ERR_IO_PENDING;
- }
- return data_->connect_data().result;
-}
-int DeterministicMockTCPClientSocket::Connect(
- const net::CompletionCallback& callback) {
+ const CompletionCallback& callback) {
if (connected_)
- return net::OK;
-
+ return OK;
connected_ = true;
if (data_->connect_data().async) {
RunCallbackAsync(callback, data_->connect_data().result);
- return net::ERR_IO_PENDING;
+ return ERR_IO_PENDING;
}
-
return data_->connect_data().result;
}
@@ -1148,67 +1043,22 @@ base::TimeDelta DeterministicMockTCPClientSocket::GetConnectTimeMicros() const {
void DeterministicMockTCPClientSocket::OnReadComplete(const MockRead& data) {}
-class MockSSLClientSocket::OldConnectCallback
- : public net::OldCompletionCallbackImpl<
- MockSSLClientSocket::OldConnectCallback> {
- public:
- OldConnectCallback(MockSSLClientSocket *ssl_client_socket,
- net::OldCompletionCallback* user_callback,
- int rv)
- : ALLOW_THIS_IN_INITIALIZER_LIST(
- net::OldCompletionCallbackImpl<
- MockSSLClientSocket::OldConnectCallback>(
- this, &OldConnectCallback::Wrapper)),
- ssl_client_socket_(ssl_client_socket),
- user_callback_(user_callback),
- rv_(rv) {
- }
-
- private:
- void Wrapper(int rv) {
- if (rv_ == net::OK)
- ssl_client_socket_->connected_ = true;
- user_callback_->Run(rv_);
- delete this;
- }
-
- MockSSLClientSocket* ssl_client_socket_;
- net::OldCompletionCallback* user_callback_;
- int rv_;
-};
-class MockSSLClientSocket::ConnectCallback {
- public:
- ConnectCallback(MockSSLClientSocket *ssl_client_socket,
- const CompletionCallback& user_callback,
- int rv)
- : ALLOW_THIS_IN_INITIALIZER_LIST(callback_(
- base::Bind(&ConnectCallback::Wrapper, base::Unretained(this)))),
- ssl_client_socket_(ssl_client_socket),
- user_callback_(user_callback),
- rv_(rv) {
- }
-
- const CompletionCallback& callback() const { return callback_; }
-
- private:
- void Wrapper(int rv) {
- if (rv_ == net::OK)
- ssl_client_socket_->connected_ = true;
- user_callback_.Run(rv_);
- }
-
- CompletionCallback callback_;
- MockSSLClientSocket* ssl_client_socket_;
- CompletionCallback user_callback_;
- int rv_;
-};
+// static
+void MockSSLClientSocket::ConnectCallback(
+ MockSSLClientSocket *ssl_client_socket,
+ const CompletionCallback& callback,
+ int rv) {
+ if (rv == OK)
+ ssl_client_socket->connected_ = true;
+ callback.Run(rv);
+}
MockSSLClientSocket::MockSSLClientSocket(
- net::ClientSocketHandle* transport_socket,
+ ClientSocketHandle* transport_socket,
const HostPortPair& host_port_pair,
- const net::SSLConfig& ssl_config,
+ const SSLConfig& ssl_config,
SSLHostInfo* ssl_host_info,
- net::SSLSocketDataProvider* data)
+ SSLSocketDataProvider* data)
: MockClientSocket(transport_socket->socket()->NetLog().net_log()),
transport_(transport_socket),
data_(data),
@@ -1222,45 +1072,25 @@ MockSSLClientSocket::~MockSSLClientSocket() {
Disconnect();
}
-int MockSSLClientSocket::Read(net::IOBuffer* buf, int buf_len,
- net::OldCompletionCallback* callback) {
- return transport_->socket()->Read(buf, buf_len, callback);
-}
-int MockSSLClientSocket::Read(net::IOBuffer* buf, int buf_len,
- const net::CompletionCallback& callback) {
+int MockSSLClientSocket::Read(IOBuffer* buf, int buf_len,
+ const CompletionCallback& callback) {
return transport_->socket()->Read(buf, buf_len, callback);
}
-int MockSSLClientSocket::Write(net::IOBuffer* buf, int buf_len,
- net::OldCompletionCallback* callback) {
+int MockSSLClientSocket::Write(IOBuffer* buf, int buf_len,
+ const CompletionCallback& callback) {
return transport_->socket()->Write(buf, buf_len, callback);
}
-int MockSSLClientSocket::Connect(net::OldCompletionCallback* callback) {
- OldConnectCallback* connect_callback = new OldConnectCallback(
- this, callback, data_->connect.result);
- int rv = transport_->socket()->Connect(connect_callback);
- if (rv == net::OK) {
- delete connect_callback;
- if (data_->connect.result == net::OK)
- connected_ = true;
- if (data_->connect.async) {
- RunCallbackAsync(callback, data_->connect.result);
- return net::ERR_IO_PENDING;
- }
- return data_->connect.result;
- }
- return rv;
-}
-int MockSSLClientSocket::Connect(const net::CompletionCallback& callback) {
- ConnectCallback connect_callback(this, callback, data_->connect.result);
- int rv = transport_->socket()->Connect(connect_callback.callback());
- if (rv == net::OK) {
- if (data_->connect.result == net::OK)
+int MockSSLClientSocket::Connect(const CompletionCallback& callback) {
+ int rv = transport_->socket()->Connect(
+ base::Bind(&ConnectCallback, base::Unretained(this), callback));
+ if (rv == OK) {
+ if (data_->connect.result == OK)
connected_ = true;
if (data_->connect.async) {
RunCallbackAsync(callback, data_->connect.result);
- return net::ERR_IO_PENDING;
+ return ERR_IO_PENDING;
}
return data_->connect.result;
}
@@ -1293,14 +1123,14 @@ base::TimeDelta MockSSLClientSocket::GetConnectTimeMicros() const {
return base::TimeDelta::FromMicroseconds(-1);
}
-void MockSSLClientSocket::GetSSLInfo(net::SSLInfo* ssl_info) {
+void MockSSLClientSocket::GetSSLInfo(SSLInfo* ssl_info) {
ssl_info->Reset();
ssl_info->cert = data_->cert;
ssl_info->client_cert_sent = data_->client_cert_sent;
}
void MockSSLClientSocket::GetSSLCertRequestInfo(
- net::SSLCertRequestInfo* cert_request_info) {
+ SSLCertRequestInfo* cert_request_info) {
DCHECK(cert_request_info);
if (data_->cert_request_info) {
cert_request_info->host_and_port =
@@ -1338,12 +1168,11 @@ MockUDPClientSocket::MockUDPClientSocket(SocketDataProvider* data,
: connected_(false),
data_(data),
read_offset_(0),
- read_data_(false, net::ERR_UNEXPECTED),
+ read_data_(false, ERR_UNEXPECTED),
need_read_data_(true),
pending_buf_(NULL),
pending_buf_len_(0),
- old_pending_callback_(NULL),
- net_log_(NetLog::Source(), net_log),
+ net_log_(net::NetLog::Source(), net_log),
ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
DCHECK(data_);
data_->Reset();
@@ -1351,36 +1180,10 @@ MockUDPClientSocket::MockUDPClientSocket(SocketDataProvider* data,
MockUDPClientSocket::~MockUDPClientSocket() {}
-int MockUDPClientSocket::Read(net::IOBuffer* buf, int buf_len,
- net::OldCompletionCallback* callback) {
+int MockUDPClientSocket::Read(IOBuffer* buf, int buf_len,
+ const CompletionCallback& callback) {
if (!connected_)
- return net::ERR_UNEXPECTED;
-
- // If the buffer is already in use, a read is already in progress!
- DCHECK(pending_buf_ == NULL);
-
- // Store our async IO data.
- pending_buf_ = buf;
- pending_buf_len_ = buf_len;
- old_pending_callback_ = callback;
-
- if (need_read_data_) {
- read_data_ = data_->GetNextRead();
- // ERR_IO_PENDING means that the SocketDataProvider is taking responsibility
- // to complete the async IO manually later (via OnReadComplete).
- if (read_data_.result == ERR_IO_PENDING) {
- DCHECK(callback); // We need to be using async IO in this case.
- return ERR_IO_PENDING;
- }
- need_read_data_ = false;
- }
-
- return CompleteRead();
-}
-int MockUDPClientSocket::Read(net::IOBuffer* buf, int buf_len,
- const net::CompletionCallback& callback) {
- if (!connected_)
- return net::ERR_UNEXPECTED;
+ return ERR_UNEXPECTED;
// If the buffer is already in use, a read is already in progress!
DCHECK(pending_buf_ == NULL);
@@ -1405,8 +1208,8 @@ int MockUDPClientSocket::Read(net::IOBuffer* buf, int buf_len,
return CompleteRead();
}
-int MockUDPClientSocket::Write(net::IOBuffer* buf, int buf_len,
- net::OldCompletionCallback* callback) {
+int MockUDPClientSocket::Write(IOBuffer* buf, int buf_len,
+ const CompletionCallback& callback) {
DCHECK(buf);
DCHECK_GT(buf_len, 0);
@@ -1469,15 +1272,9 @@ void MockUDPClientSocket::OnReadComplete(const MockRead& data) {
// let CompleteRead() schedule a callback.
read_data_.async = false;
- if (old_pending_callback_) {
- net::OldCompletionCallback* callback = old_pending_callback_;
- int rv = CompleteRead();
- RunOldCallback(callback, rv);
- } else {
- net::CompletionCallback callback = pending_callback_;
- int rv = CompleteRead();
- RunCallback(callback, rv);
- }
+ net::CompletionCallback callback = pending_callback_;
+ int rv = CompleteRead();
+ RunCallback(callback, rv);
}
int MockUDPClientSocket::CompleteRead() {
@@ -1485,14 +1282,11 @@ int MockUDPClientSocket::CompleteRead() {
DCHECK(pending_buf_len_ > 0);
// Save the pending async IO data and reset our |pending_| state.
- net::IOBuffer* buf = pending_buf_;
+ IOBuffer* buf = pending_buf_;
int buf_len = pending_buf_len_;
- net::OldCompletionCallback* old_callback = old_pending_callback_;
- net::CompletionCallback callback = pending_callback_;
+ CompletionCallback callback = pending_callback_;
pending_buf_ = NULL;
pending_buf_len_ = 0;
- old_pending_callback_ = NULL;
- pending_callback_.Reset();
pending_callback_.Reset();
int result = read_data_.result;
@@ -1513,35 +1307,22 @@ int MockUDPClientSocket::CompleteRead() {
}
if (read_data_.async) {
- DCHECK(old_callback || !callback.is_null());
- if (old_callback)
- RunCallbackAsync(old_callback, result);
- else
- RunCallbackAsync(callback, result);
- return net::ERR_IO_PENDING;
+ DCHECK(!callback.is_null());
+ RunCallbackAsync(callback, result);
+ return ERR_IO_PENDING;
}
return result;
}
-void MockUDPClientSocket::RunCallbackAsync(net::OldCompletionCallback* callback,
+void MockUDPClientSocket::RunCallbackAsync(const CompletionCallback& callback,
int result) {
- MessageLoop::current()->PostTask(FROM_HERE,
- base::Bind(&MockUDPClientSocket::RunOldCallback,
- weak_factory_.GetWeakPtr(), callback, result));
-}
-void MockUDPClientSocket::RunCallbackAsync(
- const net::CompletionCallback& callback, int result) {
- MessageLoop::current()->PostTask(FROM_HERE,
+ MessageLoop::current()->PostTask(
+ FROM_HERE,
base::Bind(&MockUDPClientSocket::RunCallback, weak_factory_.GetWeakPtr(),
callback, result));
}
-void MockUDPClientSocket::RunOldCallback(net::OldCompletionCallback* callback,
- int result) {
- if (callback)
- callback->Run(result);
-}
-void MockUDPClientSocket::RunCallback(const net::CompletionCallback& callback,
+void MockUDPClientSocket::RunCallback(const CompletionCallback& callback,
int result) {
if (!callback.is_null())
callback.Run(result);
@@ -1614,20 +1395,19 @@ void ClientSocketPoolTest::ReleaseAllConnections(KeepAlive keep_alive) {
MockTransportClientSocketPool::MockConnectJob::MockConnectJob(
StreamSocket* socket,
ClientSocketHandle* handle,
- OldCompletionCallback* callback)
+ const CompletionCallback& callback)
: socket_(socket),
handle_(handle),
- user_callback_(callback),
- ALLOW_THIS_IN_INITIALIZER_LIST(
- connect_callback_(this, &MockConnectJob::OnConnect)) {
+ user_callback_(callback) {
}
MockTransportClientSocketPool::MockConnectJob::~MockConnectJob() {}
int MockTransportClientSocketPool::MockConnectJob::Connect() {
- int rv = socket_->Connect(&connect_callback_);
+ int rv = socket_->Connect(base::Bind(&MockConnectJob::OnConnect,
+ base::Unretained(this)));
if (rv == OK) {
- user_callback_ = NULL;
+ user_callback_.Reset();
OnConnect(OK);
}
return rv;
@@ -1639,7 +1419,7 @@ bool MockTransportClientSocketPool::MockConnectJob::CancelHandle(
return false;
socket_.reset();
handle_ = NULL;
- user_callback_ = NULL;
+ user_callback_.Reset();
return true;
}
@@ -1654,10 +1434,10 @@ void MockTransportClientSocketPool::MockConnectJob::OnConnect(int rv) {
handle_ = NULL;
- if (user_callback_) {
- OldCompletionCallback* callback = user_callback_;
- user_callback_ = NULL;
- callback->Run(rv);
+ if (!user_callback_.is_null()) {
+ CompletionCallback callback = user_callback_;
+ user_callback_.Reset();
+ callback.Run(rv);
}
}
@@ -1675,15 +1455,21 @@ MockTransportClientSocketPool::MockTransportClientSocketPool(
MockTransportClientSocketPool::~MockTransportClientSocketPool() {}
-int MockTransportClientSocketPool::RequestSocket(const std::string& group_name,
- const void* socket_params,
- RequestPriority priority,
- ClientSocketHandle* handle,
- OldCompletionCallback* callback,
- const BoundNetLog& net_log) {
+int MockTransportClientSocketPool::RequestSocket(
+ const std::string& group_name,
+ const void* socket_params,
+ RequestPriority priority,
+ ClientSocketHandle* handle,
+ OldCompletionCallback* callback,
+ const BoundNetLog& net_log) {
StreamSocket* socket = client_socket_factory_->CreateTransportClientSocket(
AddressList(), net_log.net_log(), net::NetLog::Source());
- MockConnectJob* job = new MockConnectJob(socket, handle, callback);
+ CompletionCallback cb;
+ if (callback) {
+ cb = base::Bind(&OldCompletionCallback::Run<int>,
+ base::Unretained(callback));
+ }
+ MockConnectJob* job = new MockConnectJob(socket, handle, cb);
job_list_.push_back(job);
handle->set_pool_id(1);
return job->Connect();
@@ -1736,7 +1522,7 @@ DatagramClientSocket*
DeterministicMockClientSocketFactory::CreateDatagramClientSocket(
DatagramSocket::BindType bind_type,
const RandIntCallback& rand_int_cb,
- NetLog* net_log,
+ net::NetLog* net_log,
const NetLog::Source& source) {
NOTREACHED();
return NULL;