| 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);
|
| }
|
|
|