Index: net/socket/socket_test_util.cc |
diff --git a/net/socket/socket_test_util.cc b/net/socket/socket_test_util.cc |
index 376d54222f9ae449b95c453d75ff529452761c51..6b4e00f590e16df2e47739533813b7eb0a2d35eb 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; |