OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/api/socket/udp_socket.h" | 5 #include "chrome/browser/extensions/api/socket/udp_socket.h" |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "chrome/browser/extensions/api/api_resource_event_notifier.h" | 8 #include "chrome/browser/extensions/api/api_resource_event_notifier.h" |
9 #include "net/base/completion_callback.h" | 9 #include "net/base/completion_callback.h" |
| 10 #include "net/base/io_buffer.h" |
10 #include "net/base/net_errors.h" | 11 #include "net/base/net_errors.h" |
11 #include "net/base/rand_callback.h" | 12 #include "net/base/rand_callback.h" |
12 #include "net/udp/udp_client_socket.h" | 13 #include "net/udp/udp_client_socket.h" |
13 #include "testing/gmock/include/gmock/gmock.h" | 14 #include "testing/gmock/include/gmock/gmock.h" |
14 | 15 |
15 using testing::_; | 16 using testing::_; |
16 using testing::DoAll; | 17 using testing::DoAll; |
17 using testing::Return; | 18 using testing::Return; |
18 using testing::SaveArg; | 19 using testing::SaveArg; |
19 | 20 |
(...skipping 29 matching lines...) Expand all Loading... |
49 TEST(SocketTest, TestUDPSocketRead) { | 50 TEST(SocketTest, TestUDPSocketRead) { |
50 MockUDPSocket* udp_client_socket = new MockUDPSocket(); | 51 MockUDPSocket* udp_client_socket = new MockUDPSocket(); |
51 APIResourceEventNotifier* notifier = new MockAPIResourceEventNotifier(); | 52 APIResourceEventNotifier* notifier = new MockAPIResourceEventNotifier(); |
52 | 53 |
53 scoped_ptr<UDPSocket> socket(UDPSocket::CreateSocketForTesting( | 54 scoped_ptr<UDPSocket> socket(UDPSocket::CreateSocketForTesting( |
54 udp_client_socket, "1.2.3.4", 1, notifier)); | 55 udp_client_socket, "1.2.3.4", 1, notifier)); |
55 | 56 |
56 EXPECT_CALL(*udp_client_socket, Read(_, _, _)) | 57 EXPECT_CALL(*udp_client_socket, Read(_, _, _)) |
57 .Times(1); | 58 .Times(1); |
58 | 59 |
59 std::string message = socket->Read(); | 60 scoped_refptr<net::IOBufferWithSize> io_buffer( |
| 61 new net::IOBufferWithSize(512)); |
| 62 socket->Read(io_buffer.get(), io_buffer->size()); |
60 } | 63 } |
61 | 64 |
62 TEST(SocketTest, TestUDPSocketWrite) { | 65 TEST(SocketTest, TestUDPSocketWrite) { |
63 MockUDPSocket* udp_client_socket = new MockUDPSocket(); | 66 MockUDPSocket* udp_client_socket = new MockUDPSocket(); |
64 APIResourceEventNotifier* notifier = new MockAPIResourceEventNotifier(); | 67 APIResourceEventNotifier* notifier = new MockAPIResourceEventNotifier(); |
65 | 68 |
66 scoped_ptr<UDPSocket> socket(UDPSocket::CreateSocketForTesting( | 69 scoped_ptr<UDPSocket> socket(UDPSocket::CreateSocketForTesting( |
67 udp_client_socket, "1.2.3.4", 1, notifier)); | 70 udp_client_socket, "1.2.3.4", 1, notifier)); |
68 | 71 |
69 EXPECT_CALL(*udp_client_socket, Write(_, _, _)) | 72 EXPECT_CALL(*udp_client_socket, Write(_, _, _)) |
70 .Times(1); | 73 .Times(1); |
71 | 74 |
72 socket->Write("foo"); | 75 scoped_refptr<net::IOBufferWithSize> io_buffer( |
| 76 new net::IOBufferWithSize(512)); |
| 77 socket->Write(io_buffer.get(), io_buffer->size()); |
73 } | 78 } |
74 | 79 |
75 TEST(SocketTest, TestUDPSocketBlockedWrite) { | 80 TEST(SocketTest, TestUDPSocketBlockedWrite) { |
76 MockUDPSocket* udp_client_socket = new MockUDPSocket(); | 81 MockUDPSocket* udp_client_socket = new MockUDPSocket(); |
77 MockAPIResourceEventNotifier* notifier = new MockAPIResourceEventNotifier(); | 82 MockAPIResourceEventNotifier* notifier = new MockAPIResourceEventNotifier(); |
78 | 83 |
79 scoped_ptr<UDPSocket> socket(UDPSocket::CreateSocketForTesting( | 84 scoped_ptr<UDPSocket> socket(UDPSocket::CreateSocketForTesting( |
80 udp_client_socket, "1.2.3.4", 1, notifier)); | 85 udp_client_socket, "1.2.3.4", 1, notifier)); |
81 | 86 |
82 net::CompletionCallback callback; | 87 net::CompletionCallback callback; |
83 EXPECT_CALL(*udp_client_socket, Write(_, _, _)) | 88 EXPECT_CALL(*udp_client_socket, Write(_, _, _)) |
84 .Times(1) | 89 .Times(1) |
85 .WillOnce(testing::DoAll(SaveArg<2>(&callback), | 90 .WillOnce(testing::DoAll(SaveArg<2>(&callback), |
86 Return(net::ERR_IO_PENDING))); | 91 Return(net::ERR_IO_PENDING))); |
87 | 92 |
88 ASSERT_EQ(net::ERR_IO_PENDING, socket->Write("foo")); | 93 scoped_refptr<net::IOBufferWithSize> io_buffer(new net::IOBufferWithSize(1)); |
| 94 ASSERT_EQ(net::ERR_IO_PENDING, socket->Write(io_buffer.get(), |
| 95 io_buffer->size())); |
89 | 96 |
90 // Good. Original call came back unable to complete. Now pretend the socket | 97 // Good. Original call came back unable to complete. Now pretend the socket |
91 // finished, and confirm that we passed the error back. | 98 // finished, and confirm that we passed the error back. |
92 EXPECT_CALL(*notifier, OnWriteComplete(42)) | 99 EXPECT_CALL(*notifier, OnWriteComplete(42)) |
93 .Times(1); | 100 .Times(1); |
94 callback.Run(42); | 101 callback.Run(42); |
95 } | 102 } |
96 | 103 |
97 } // namespace extensions | 104 } // namespace extensions |
OLD | NEW |