summaryrefslogtreecommitdiffstats
path: root/net/socket/ssl_server_socket_unittest.cc
diff options
context:
space:
mode:
authorjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-07 02:03:33 +0000
committerjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-07 02:03:33 +0000
commit3f55aa10587b3eaa629d7e95de87998b399fe3e2 (patch)
tree0f407a7e7fc837bed337a9a5af787edbd9473ef6 /net/socket/ssl_server_socket_unittest.cc
parentb456003a580041d83e7f5a998c15f62ce380560f (diff)
downloadchromium_src-3f55aa10587b3eaa629d7e95de87998b399fe3e2.zip
chromium_src-3f55aa10587b3eaa629d7e95de87998b399fe3e2.tar.gz
chromium_src-3f55aa10587b3eaa629d7e95de87998b399fe3e2.tar.bz2
base::Bind: Convert Socket::Read.
BUG=none TEST=none R=csilv Review URL: http://codereview.chromium.org/8801005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@113326 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket/ssl_server_socket_unittest.cc')
-rw-r--r--net/socket/ssl_server_socket_unittest.cc41
1 files changed, 33 insertions, 8 deletions
diff --git a/net/socket/ssl_server_socket_unittest.cc b/net/socket/ssl_server_socket_unittest.cc
index 5af50f8..eb9dc7c 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) {