summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-21 20:52:00 +0000
committerjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-21 20:52:00 +0000
commit5a76b813bc8006d77fc20004fed000d1feb4b5b5 (patch)
tree2876696a12b27e89c6b43ea15b15b5d819117532 /net
parent70c98a33e09b4991754eb94fe95b8ee61418d2b4 (diff)
downloadchromium_src-5a76b813bc8006d77fc20004fed000d1feb4b5b5.zip
chromium_src-5a76b813bc8006d77fc20004fed000d1feb4b5b5.tar.gz
chromium_src-5a76b813bc8006d77fc20004fed000d1feb4b5b5.tar.bz2
base::Bind: Convert net/spdy.
BUG=none TEST=none R=groby Review URL: http://codereview.chromium.org/8956018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@115392 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/spdy/spdy_http_stream.cc12
-rw-r--r--net/spdy/spdy_http_stream.h4
-rw-r--r--net/spdy/spdy_stream.cc4
-rw-r--r--net/spdy/spdy_stream_unittest.cc15
-rw-r--r--net/spdy/spdy_websocket_stream_unittest.cc117
5 files changed, 82 insertions, 70 deletions
diff --git a/net/spdy/spdy_http_stream.cc b/net/spdy/spdy_http_stream.cc
index fcdcd3e..1eed08f 100644
--- a/net/spdy/spdy_http_stream.cc
+++ b/net/spdy/spdy_http_stream.cc
@@ -8,6 +8,8 @@
#include <list>
#include <string>
+#include "base/bind.h"
+#include "base/bind_helpers.h"
#include "base/logging.h"
#include "base/message_loop.h"
#include "net/base/address_list.h"
@@ -25,7 +27,7 @@ namespace net {
SpdyHttpStream::SpdyHttpStream(SpdySession* spdy_session,
bool direct)
- : ALLOW_THIS_IN_INITIALIZER_LIST(read_callback_factory_(this)),
+ : ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)),
stream_(NULL),
spdy_session_(spdy_session),
response_info_(NULL),
@@ -400,8 +402,10 @@ void SpdyHttpStream::ScheduleBufferedReadCallback() {
more_read_data_pending_ = false;
buffered_read_callback_pending_ = true;
const int kBufferTimeMs = 1;
- MessageLoop::current()->PostDelayedTask(FROM_HERE, read_callback_factory_.
- NewRunnableMethod(&SpdyHttpStream::DoBufferedReadCallback),
+ MessageLoop::current()->PostDelayedTask(
+ FROM_HERE,
+ base::Bind(base::IgnoreResult(&SpdyHttpStream::DoBufferedReadCallback),
+ weak_factory_.GetWeakPtr()),
kBufferTimeMs);
}
@@ -423,7 +427,7 @@ bool SpdyHttpStream::ShouldWaitForMoreBufferedData() const {
}
bool SpdyHttpStream::DoBufferedReadCallback() {
- read_callback_factory_.RevokeAll();
+ weak_factory_.InvalidateWeakPtrs();
buffered_read_callback_pending_ = false;
// If the transaction is cancelled or errored out, we don't need to complete
diff --git a/net/spdy/spdy_http_stream.h b/net/spdy/spdy_http_stream.h
index e44f79c..f8612af 100644
--- a/net/spdy/spdy_http_stream.h
+++ b/net/spdy/spdy_http_stream.h
@@ -11,7 +11,7 @@
#include "base/basictypes.h"
#include "base/memory/ref_counted.h"
-#include "base/task.h"
+#include "base/memory/weak_ptr.h"
#include "net/base/completion_callback.h"
#include "net/base/net_log.h"
#include "net/http/http_request_info.h"
@@ -96,7 +96,7 @@ class NET_EXPORT_PRIVATE SpdyHttpStream : public SpdyStream::Delegate,
bool DoBufferedReadCallback();
bool ShouldWaitForMoreBufferedData() const;
- ScopedRunnableMethodFactory<SpdyHttpStream> read_callback_factory_;
+ base::WeakPtrFactory<SpdyHttpStream> weak_factory_;
scoped_refptr<SpdyStream> stream_;
scoped_refptr<SpdySession> spdy_session_;
diff --git a/net/spdy/spdy_stream.cc b/net/spdy/spdy_stream.cc
index f8c0d4c..49fbf04 100644
--- a/net/spdy/spdy_stream.cc
+++ b/net/spdy/spdy_stream.cc
@@ -4,6 +4,7 @@
#include "net/spdy/spdy_stream.h"
+#include "base/bind.h"
#include "base/logging.h"
#include "base/message_loop.h"
#include "base/values.h"
@@ -71,8 +72,7 @@ void SpdyStream::SetDelegate(Delegate* delegate) {
if (pushed_) {
CHECK(response_received());
MessageLoop::current()->PostTask(
- FROM_HERE, NewRunnableMethod(this,
- &SpdyStream::PushedStreamReplayData));
+ FROM_HERE, base::Bind(&SpdyStream::PushedStreamReplayData, this));
} else {
continue_buffering_data_ = false;
}
diff --git a/net/spdy/spdy_stream_unittest.cc b/net/spdy/spdy_stream_unittest.cc
index bb47dce..b6314ca 100644
--- a/net/spdy/spdy_stream_unittest.cc
+++ b/net/spdy/spdy_stream_unittest.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "base/memory/ref_counted.h"
+#include "net/base/completion_callback.h"
#include "net/spdy/spdy_stream.h"
#include "net/spdy/spdy_http_utils.h"
#include "net/spdy/spdy_session.h"
@@ -19,7 +20,7 @@ class TestSpdyStreamDelegate : public SpdyStream::Delegate {
public:
TestSpdyStreamDelegate(SpdyStream* stream,
IOBufferWithSize* buf,
- OldCompletionCallback* callback)
+ const CompletionCallback& callback)
: stream_(stream),
buf_(buf),
callback_(callback),
@@ -62,9 +63,9 @@ class TestSpdyStreamDelegate : public SpdyStream::Delegate {
}
virtual void OnClose(int status) {
closed_ = true;
- OldCompletionCallback* callback = callback_;
- callback_ = NULL;
- callback->Run(OK);
+ CompletionCallback callback = callback_;
+ callback_.Reset();
+ callback.Run(OK);
}
virtual void set_chunk_callback(net::ChunkCallback *) {}
@@ -79,7 +80,7 @@ class TestSpdyStreamDelegate : public SpdyStream::Delegate {
private:
SpdyStream* stream_;
scoped_refptr<IOBufferWithSize> buf_;
- OldCompletionCallback* callback_;
+ CompletionCallback callback_;
bool send_headers_completed_;
linked_ptr<spdy::SpdyHeaderBlock> response_;
std::string received_data_;
@@ -200,10 +201,10 @@ TEST_F(SpdyStreamTest, SendDataAfterOpen) {
CompletionCallback()));
scoped_refptr<IOBufferWithSize> buf(new IOBufferWithSize(8));
memcpy(buf->data(), "\0hello!\xff", 8);
- TestOldCompletionCallback callback;
+ TestCompletionCallback callback;
scoped_ptr<TestSpdyStreamDelegate> delegate(
- new TestSpdyStreamDelegate(stream.get(), buf.get(), &callback));
+ new TestSpdyStreamDelegate(stream.get(), buf.get(), callback.callback()));
stream->SetDelegate(delegate.get());
EXPECT_FALSE(stream->HasUrl());
diff --git a/net/spdy/spdy_websocket_stream_unittest.cc b/net/spdy/spdy_websocket_stream_unittest.cc
index 7231bc4..0acbd0d 100644
--- a/net/spdy/spdy_websocket_stream_unittest.cc
+++ b/net/spdy/spdy_websocket_stream_unittest.cc
@@ -7,6 +7,8 @@
#include <string>
#include <vector>
+#include "base/bind.h"
+#include "base/bind_helpers.h"
#include "net/base/completion_callback.h"
#include "net/proxy/proxy_server.h"
#include "net/spdy/spdy_http_utils.h"
@@ -48,29 +50,31 @@ namespace net {
class SpdyWebSocketStreamEventRecorder : public SpdyWebSocketStream::Delegate {
public:
- explicit SpdyWebSocketStreamEventRecorder(OldCompletionCallback* callback)
+ explicit SpdyWebSocketStreamEventRecorder(const CompletionCallback& callback)
: callback_(callback) {}
virtual ~SpdyWebSocketStreamEventRecorder() {}
- void SetOnCreated(Callback1<SpdyWebSocketStreamEvent*>::Type* callback) {
- on_created_.reset(callback);
+ typedef base::Callback<void(SpdyWebSocketStreamEvent*)> StreamEventCallback;
+
+ void SetOnCreated(const StreamEventCallback& callback) {
+ on_created_ = callback;
}
- void SetOnSentHeaders(Callback1<SpdyWebSocketStreamEvent*>::Type* callback) {
- on_sent_headers_.reset(callback);
+ void SetOnSentHeaders(const StreamEventCallback& callback) {
+ on_sent_headers_ = callback;
}
void SetOnReceivedHeader(
- Callback1<SpdyWebSocketStreamEvent*>::Type* callback) {
- on_received_header_.reset(callback);
+ const StreamEventCallback& callback) {
+ on_received_header_ = callback;
}
- void SetOnSentData(Callback1<SpdyWebSocketStreamEvent*>::Type* callback) {
- on_sent_data_.reset(callback);
+ void SetOnSentData(const StreamEventCallback& callback) {
+ on_sent_data_ = callback;
}
void SetOnReceivedData(
- Callback1<SpdyWebSocketStreamEvent*>::Type* callback) {
- on_received_data_.reset(callback);
+ const StreamEventCallback& callback) {
+ on_received_data_ = callback;
}
- void SetOnClose(Callback1<SpdyWebSocketStreamEvent*>::Type* callback) {
- on_close_.reset(callback);
+ void SetOnClose(const StreamEventCallback& callback) {
+ on_close_ = callback;
}
virtual void OnCreatedSpdyStream(int result) {
@@ -79,8 +83,8 @@ class SpdyWebSocketStreamEventRecorder : public SpdyWebSocketStream::Delegate {
spdy::SpdyHeaderBlock(),
result,
std::string()));
- if (on_created_.get())
- on_created_->Run(&events_.back());
+ if (!on_created_.is_null())
+ on_created_.Run(&events_.back());
}
virtual void OnSentSpdyHeaders(int result) {
events_.push_back(
@@ -88,8 +92,8 @@ class SpdyWebSocketStreamEventRecorder : public SpdyWebSocketStream::Delegate {
spdy::SpdyHeaderBlock(),
result,
std::string()));
- if (on_sent_data_.get())
- on_sent_data_->Run(&events_.back());
+ if (!on_sent_data_.is_null())
+ on_sent_data_.Run(&events_.back());
}
virtual int OnReceivedSpdyResponseHeader(
const spdy::SpdyHeaderBlock& headers, int status) {
@@ -99,8 +103,8 @@ class SpdyWebSocketStreamEventRecorder : public SpdyWebSocketStream::Delegate {
headers,
status,
std::string()));
- if (on_received_header_.get())
- on_received_header_->Run(&events_.back());
+ if (!on_received_header_.is_null())
+ on_received_header_.Run(&events_.back());
return status;
}
virtual void OnSentSpdyData(int amount_sent) {
@@ -110,8 +114,8 @@ class SpdyWebSocketStreamEventRecorder : public SpdyWebSocketStream::Delegate {
spdy::SpdyHeaderBlock(),
amount_sent,
std::string()));
- if (on_sent_data_.get())
- on_sent_data_->Run(&events_.back());
+ if (!on_sent_data_.is_null())
+ on_sent_data_.Run(&events_.back());
}
virtual void OnReceivedSpdyData(const char* data, int length) {
events_.push_back(
@@ -120,8 +124,8 @@ class SpdyWebSocketStreamEventRecorder : public SpdyWebSocketStream::Delegate {
spdy::SpdyHeaderBlock(),
length,
std::string(data, length)));
- if (on_received_data_.get())
- on_received_data_->Run(&events_.back());
+ if (!on_received_data_.is_null())
+ on_received_data_.Run(&events_.back());
}
virtual void OnCloseSpdyStream() {
events_.push_back(
@@ -130,10 +134,10 @@ class SpdyWebSocketStreamEventRecorder : public SpdyWebSocketStream::Delegate {
spdy::SpdyHeaderBlock(),
OK,
std::string()));
- if (on_close_.get())
- on_close_->Run(&events_.back());
- if (callback_)
- callback_->Run(OK);
+ if (!on_close_.is_null())
+ on_close_.Run(&events_.back());
+ if (!callback_.is_null())
+ callback_.Run(OK);
}
const std::vector<SpdyWebSocketStreamEvent>& GetSeenEvents() const {
@@ -142,13 +146,13 @@ class SpdyWebSocketStreamEventRecorder : public SpdyWebSocketStream::Delegate {
private:
std::vector<SpdyWebSocketStreamEvent> events_;
- scoped_ptr<Callback1<SpdyWebSocketStreamEvent*>::Type> on_created_;
- scoped_ptr<Callback1<SpdyWebSocketStreamEvent*>::Type> on_sent_headers_;
- scoped_ptr<Callback1<SpdyWebSocketStreamEvent*>::Type> on_received_header_;
- scoped_ptr<Callback1<SpdyWebSocketStreamEvent*>::Type> on_sent_data_;
- scoped_ptr<Callback1<SpdyWebSocketStreamEvent*>::Type> on_received_data_;
- scoped_ptr<Callback1<SpdyWebSocketStreamEvent*>::Type> on_close_;
- OldCompletionCallback* callback_;
+ StreamEventCallback on_created_;
+ StreamEventCallback on_sent_headers_;
+ StreamEventCallback on_received_header_;
+ StreamEventCallback on_sent_data_;
+ StreamEventCallback on_received_data_;
+ StreamEventCallback on_close_;
+ CompletionCallback callback_;
DISALLOW_COPY_AND_ASSIGN(SpdyWebSocketStreamEventRecorder);
};
@@ -170,7 +174,7 @@ class SpdyWebSocketStreamTest : public testing::Test {
}
void DoSync(SpdyWebSocketStreamEvent* event) {
- sync_callback_.Run(OK);
+ sync_callback_.SetResult(OK);
}
protected:
@@ -297,8 +301,8 @@ class SpdyWebSocketStreamTest : public testing::Test {
scoped_ptr<spdy::SpdyFrame> closing_frame_;
HostPortPair host_port_pair_;
HostPortProxyPair host_port_proxy_pair_;
- TestOldCompletionCallback completion_callback_;
- TestOldCompletionCallback sync_callback_;
+ TestCompletionCallback completion_callback_;
+ TestCompletionCallback sync_callback_;
static const char kMessageFrame[];
static const char kClosingFrame[];
@@ -332,12 +336,13 @@ TEST_F(SpdyWebSocketStreamTest, Basic) {
EXPECT_EQ(OK, InitSession(reads, arraysize(reads),
writes, arraysize(writes), false));
- SpdyWebSocketStreamEventRecorder delegate(&completion_callback_);
- SpdyWebSocketStreamTest* test = this; // Necessary for NewCallback.
+ SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback());
delegate.SetOnReceivedHeader(
- NewCallback(test, &SpdyWebSocketStreamTest::DoSendHelloFrame));
+ base::Bind(&SpdyWebSocketStreamTest::DoSendHelloFrame,
+ base::Unretained(this)));
delegate.SetOnReceivedData(
- NewCallback(test, &SpdyWebSocketStreamTest::DoSendClosingFrame));
+ base::Bind(&SpdyWebSocketStreamTest::DoSendClosingFrame,
+ base::Unretained(this)));
websocket_stream_.reset(new SpdyWebSocketStream(session_, &delegate));
@@ -403,12 +408,12 @@ TEST_F(SpdyWebSocketStreamTest, DestructionBeforeClose) {
EXPECT_EQ(OK, InitSession(reads, arraysize(reads),
writes, arraysize(writes), false));
- SpdyWebSocketStreamEventRecorder delegate(&completion_callback_);
- SpdyWebSocketStreamTest* test = this; // Necessary for NewCallback.
+ SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback());
delegate.SetOnReceivedHeader(
- NewCallback(test, &SpdyWebSocketStreamTest::DoSendHelloFrame));
+ base::Bind(&SpdyWebSocketStreamTest::DoSendHelloFrame,
+ base::Unretained(this)));
delegate.SetOnReceivedData(
- NewCallback(test, &SpdyWebSocketStreamTest::DoSync));
+ base::Bind(&SpdyWebSocketStreamTest::DoSync, base::Unretained(this)));
websocket_stream_.reset(new SpdyWebSocketStream(session_, &delegate));
@@ -465,12 +470,12 @@ TEST_F(SpdyWebSocketStreamTest, DestructionAfterExplicitClose) {
EXPECT_EQ(OK, InitSession(reads, arraysize(reads),
writes, arraysize(writes), false));
- SpdyWebSocketStreamEventRecorder delegate(&completion_callback_);
- SpdyWebSocketStreamTest* test = this; // Necessary for NewCallback.
+ SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback());
delegate.SetOnReceivedHeader(
- NewCallback(test, &SpdyWebSocketStreamTest::DoSendHelloFrame));
+ base::Bind(&SpdyWebSocketStreamTest::DoSendHelloFrame,
+ base::Unretained(this)));
delegate.SetOnReceivedData(
- NewCallback(test, &SpdyWebSocketStreamTest::DoClose));
+ base::Bind(&SpdyWebSocketStreamTest::DoClose, base::Unretained(this)));
websocket_stream_.reset(new SpdyWebSocketStream(session_, &delegate));
@@ -535,8 +540,7 @@ TEST_F(SpdyWebSocketStreamTest, IOPending) {
// Create a dummy WebSocketStream which cause ERR_IO_PENDING to another
// WebSocketStream under test.
- SpdyWebSocketStreamTest* test = this; // Necessary for NewCallback.
- SpdyWebSocketStreamEventRecorder block_delegate(NULL);
+ SpdyWebSocketStreamEventRecorder block_delegate((CompletionCallback()));
scoped_ptr<SpdyWebSocketStream> block_stream(
new SpdyWebSocketStream(session_, &block_delegate));
@@ -546,12 +550,15 @@ TEST_F(SpdyWebSocketStreamTest, IOPending) {
block_stream->InitializeStream(block_url, HIGHEST, block_net_log));
// Create a WebSocketStream under test.
- SpdyWebSocketStreamEventRecorder delegate(&completion_callback_);
- delegate.SetOnCreated(NewCallback(test, &SpdyWebSocketStreamTest::DoSync));
+ SpdyWebSocketStreamEventRecorder delegate(completion_callback_.callback());
+ delegate.SetOnCreated(
+ base::Bind(&SpdyWebSocketStreamTest::DoSync, base::Unretained(this)));
delegate.SetOnReceivedHeader(
- NewCallback(test, &SpdyWebSocketStreamTest::DoSendHelloFrame));
+ base::Bind(&SpdyWebSocketStreamTest::DoSendHelloFrame,
+ base::Unretained(this)));
delegate.SetOnReceivedData(
- NewCallback(test, &SpdyWebSocketStreamTest::DoSendClosingFrame));
+ base::Bind(&SpdyWebSocketStreamTest::DoSendClosingFrame,
+ base::Unretained(this)));
websocket_stream_.reset(new SpdyWebSocketStream(session_, &delegate));
BoundNetLog net_log;