Index: chrome/browser/extensions/api/socket/tcp_socket_unittest.cc |
diff --git a/chrome/browser/extensions/api/socket/tcp_socket_unittest.cc b/chrome/browser/extensions/api/socket/tcp_socket_unittest.cc |
index d190cc94c96d59da0ae63760acaf3f1c53c3d3bb..5052e66fa333c9ffd63b0281ed02a3bb0897c1fe 100644 |
--- a/chrome/browser/extensions/api/socket/tcp_socket_unittest.cc |
+++ b/chrome/browser/extensions/api/socket/tcp_socket_unittest.cc |
@@ -53,42 +53,61 @@ class MockAPIResourceEventNotifier : public APIResourceEventNotifier { |
virtual ~MockAPIResourceEventNotifier() {} |
}; |
+class CompleteHandler { |
+ public: |
+ CompleteHandler() {} |
+ MOCK_METHOD1(OnComplete, void(int result_code)); |
+ MOCK_METHOD2(OnReadComplete, void(int result_code, |
+ scoped_refptr<net::IOBuffer> io_buffer)); |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(CompleteHandler); |
+}; |
+ |
+ |
TEST(SocketTest, TestTCPSocketRead) { |
net::AddressList address_list; |
MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); |
APIResourceEventNotifier* notifier = new MockAPIResourceEventNotifier(); |
+ CompleteHandler handler; |
scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( |
tcp_client_socket, notifier)); |
EXPECT_CALL(*tcp_client_socket, Read(_, _, _)) |
.Times(1); |
+ EXPECT_CALL(handler, OnReadComplete(_, _)) |
+ .Times(1); |
- scoped_refptr<net::IOBufferWithSize> io_buffer( |
- new net::IOBufferWithSize(512)); |
- socket->Read(io_buffer.get(), io_buffer->size()); |
+ const int count = 512; |
+ socket->Read(count, base::Bind(&CompleteHandler::OnReadComplete, |
+ base::Unretained(&handler))); |
} |
TEST(SocketTest, TestTCPSocketWrite) { |
net::AddressList address_list; |
MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); |
APIResourceEventNotifier* notifier = new MockAPIResourceEventNotifier(); |
+ CompleteHandler handler; |
scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( |
tcp_client_socket, notifier)); |
EXPECT_CALL(*tcp_client_socket, Write(_, _, _)) |
.Times(1); |
+ EXPECT_CALL(handler, OnComplete(_)) |
+ .Times(1); |
scoped_refptr<net::IOBufferWithSize> io_buffer( |
new net::IOBufferWithSize(256)); |
- socket->Write(io_buffer.get(), io_buffer->size()); |
+ socket->Write(io_buffer.get(), io_buffer->size(), |
+ base::Bind(&CompleteHandler::OnComplete, base::Unretained(&handler))); |
} |
TEST(SocketTest, TestTCPSocketBlockedWrite) { |
net::AddressList address_list; |
MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); |
MockAPIResourceEventNotifier* notifier = new MockAPIResourceEventNotifier(); |
+ CompleteHandler handler; |
scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( |
tcp_client_socket, notifier)); |
@@ -98,15 +117,14 @@ TEST(SocketTest, TestTCPSocketBlockedWrite) { |
.Times(1) |
.WillOnce(testing::DoAll(SaveArg<2>(&callback), |
Return(net::ERR_IO_PENDING))); |
- |
scoped_refptr<net::IOBufferWithSize> io_buffer(new net::IOBufferWithSize( |
1)); |
- ASSERT_EQ(net::ERR_IO_PENDING, socket->Write(io_buffer.get(), |
- io_buffer->size())); |
+ socket->Write(io_buffer.get(), io_buffer->size(), |
+ base::Bind(&CompleteHandler::OnComplete, base::Unretained(&handler))); |
// Good. Original call came back unable to complete. Now pretend the socket |
// finished, and confirm that we passed the error back. |
- EXPECT_CALL(*notifier, OnWriteComplete(42)) |
+ EXPECT_CALL(handler, OnComplete(42)) |
.Times(1); |
callback.Run(42); |
} |