diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-21 20:52:00 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-21 20:52:00 +0000 |
commit | 5a76b813bc8006d77fc20004fed000d1feb4b5b5 (patch) | |
tree | 2876696a12b27e89c6b43ea15b15b5d819117532 /net | |
parent | 70c98a33e09b4991754eb94fe95b8ee61418d2b4 (diff) | |
download | chromium_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.cc | 12 | ||||
-rw-r--r-- | net/spdy/spdy_http_stream.h | 4 | ||||
-rw-r--r-- | net/spdy/spdy_stream.cc | 4 | ||||
-rw-r--r-- | net/spdy/spdy_stream_unittest.cc | 15 | ||||
-rw-r--r-- | net/spdy/spdy_websocket_stream_unittest.cc | 117 |
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; |