Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(443)

Unified Diff: net/socket/ssl_server_socket_unittest.cc

Issue 8801005: base::Bind: Convert Socket::Read. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/socket/ssl_server_socket_unittest.cc
diff --git a/net/socket/ssl_server_socket_unittest.cc b/net/socket/ssl_server_socket_unittest.cc
index 5af50f8f4764ad3ac1191cf2edb9cb00b5a7d3c7..eb9dc7cbed22cbc61bbce78e623d1389dd8b30c9 100644
--- a/net/socket/ssl_server_socket_unittest.cc
+++ b/net/socket/ssl_server_socket_unittest.cc
@@ -51,7 +51,7 @@ namespace {
class FakeDataChannel {
public:
FakeDataChannel()
- : read_callback_(NULL),
+ : old_read_callback_(NULL),
read_buf_len_(0),
ALLOW_THIS_IN_INITIALIZER_LIST(task_factory_(this)) {
}
@@ -59,6 +59,16 @@ class FakeDataChannel {
virtual int Read(IOBuffer* buf, int buf_len,
OldCompletionCallback* callback) {
if (data_.empty()) {
+ old_read_callback_ = callback;
+ read_buf_ = buf;
+ read_buf_len_ = buf_len;
+ return net::ERR_IO_PENDING;
+ }
+ return PropogateData(buf, buf_len);
+ }
+ virtual int Read(IOBuffer* buf, int buf_len,
+ const CompletionCallback& callback) {
+ if (data_.empty()) {
read_callback_ = callback;
read_buf_ = buf;
read_buf_len_ = buf_len;
@@ -78,15 +88,23 @@ class FakeDataChannel {
private:
void DoReadCallback() {
- if (!read_callback_ || data_.empty())
+ if ((!old_read_callback_ && read_callback_.is_null()) || data_.empty())
return;
int copied = PropogateData(read_buf_, read_buf_len_);
- net::OldCompletionCallback* callback = read_callback_;
- read_callback_ = NULL;
- read_buf_ = NULL;
- read_buf_len_ = 0;
- callback->Run(copied);
+ if (old_read_callback_) {
+ net::OldCompletionCallback* callback = old_read_callback_;
+ old_read_callback_ = NULL;
+ read_buf_ = NULL;
+ read_buf_len_ = 0;
+ callback->Run(copied);
+ } else {
+ net::CompletionCallback callback = read_callback_;
+ read_callback_.Reset();
+ read_buf_ = NULL;
+ read_buf_len_ = 0;
+ callback.Run(copied);
+ }
}
int PropogateData(scoped_refptr<net::IOBuffer> read_buf, int read_buf_len) {
@@ -100,7 +118,8 @@ class FakeDataChannel {
return copied;
}
- net::OldCompletionCallback* read_callback_;
+ net::OldCompletionCallback* old_read_callback_;
+ net::CompletionCallback read_callback_;
scoped_refptr<net::IOBuffer> read_buf_;
int read_buf_len_;
@@ -128,6 +147,12 @@ class FakeSocket : public StreamSocket {
buf_len = rand() % buf_len + 1;
return incoming_->Read(buf, buf_len, callback);
}
+ virtual int Read(IOBuffer* buf, int buf_len,
+ const CompletionCallback& callback) {
+ // Read random number of bytes.
+ buf_len = rand() % buf_len + 1;
+ return incoming_->Read(buf, buf_len, callback);
+ }
virtual int Write(IOBuffer* buf, int buf_len,
OldCompletionCallback* callback) {

Powered by Google App Engine
This is Rietveld 408576698