Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(48)

Side by Side Diff: chrome/browser/extensions/api/socket/tcp_socket_unittest.cc

Issue 10777003: Refactor APIResourceController to ProfileKeyedService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge/antony/fix build. Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/tcp_socket.h" 5 #include "chrome/browser/extensions/api/socket/tcp_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/address_list.h" 9 #include "net/base/address_list.h"
10 #include "net/base/completion_callback.h" 10 #include "net/base/completion_callback.h"
(...skipping 23 matching lines...) Expand all
34 MOCK_METHOD2(SetKeepAlive, bool(bool enable, int delay)); 34 MOCK_METHOD2(SetKeepAlive, bool(bool enable, int delay));
35 MOCK_METHOD1(SetNoDelay, bool(bool no_delay)); 35 MOCK_METHOD1(SetNoDelay, bool(bool no_delay));
36 virtual bool IsConnected() const OVERRIDE { 36 virtual bool IsConnected() const OVERRIDE {
37 return true; 37 return true;
38 } 38 }
39 39
40 private: 40 private:
41 DISALLOW_COPY_AND_ASSIGN(MockTCPSocket); 41 DISALLOW_COPY_AND_ASSIGN(MockTCPSocket);
42 }; 42 };
43 43
44 class MockAPIResourceEventNotifier : public APIResourceEventNotifier { 44 class MockApiResourceEventNotifier : public ApiResourceEventNotifier {
45 public: 45 public:
46 MockAPIResourceEventNotifier() : APIResourceEventNotifier(NULL, NULL, 46 MockApiResourceEventNotifier() : ApiResourceEventNotifier(NULL, NULL,
47 std::string(), 47 std::string(),
48 0, GURL()) {} 48 0, GURL()) {}
49 49
50 MOCK_METHOD2(OnReadComplete, void(int result_code, 50 MOCK_METHOD2(OnReadComplete, void(int result_code,
51 const std::string& message)); 51 const std::string& message));
52 MOCK_METHOD1(OnWriteComplete, void(int result_code)); 52 MOCK_METHOD1(OnWriteComplete, void(int result_code));
53 53
54 protected: 54 protected:
55 virtual ~MockAPIResourceEventNotifier() {} 55 virtual ~MockApiResourceEventNotifier() {}
56 }; 56 };
57 57
58 class CompleteHandler { 58 class CompleteHandler {
59 public: 59 public:
60 CompleteHandler() {} 60 CompleteHandler() {}
61 MOCK_METHOD1(OnComplete, void(int result_code)); 61 MOCK_METHOD1(OnComplete, void(int result_code));
62 MOCK_METHOD2(OnReadComplete, void(int result_code, 62 MOCK_METHOD2(OnReadComplete, void(int result_code,
63 scoped_refptr<net::IOBuffer> io_buffer)); 63 scoped_refptr<net::IOBuffer> io_buffer));
64 private: 64 private:
65 DISALLOW_COPY_AND_ASSIGN(CompleteHandler); 65 DISALLOW_COPY_AND_ASSIGN(CompleteHandler);
66 }; 66 };
67 67
68 68
69 TEST(SocketTest, TestTCPSocketRead) { 69 TEST(SocketTest, TestTCPSocketRead) {
70 net::AddressList address_list; 70 net::AddressList address_list;
71 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); 71 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list);
72 APIResourceEventNotifier* notifier = new MockAPIResourceEventNotifier(); 72 ApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier();
73 CompleteHandler handler; 73 CompleteHandler handler;
74 74
75 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( 75 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting(
76 tcp_client_socket, notifier)); 76 tcp_client_socket, notifier));
77 77
78 EXPECT_CALL(*tcp_client_socket, Read(_, _, _)) 78 EXPECT_CALL(*tcp_client_socket, Read(_, _, _))
79 .Times(1); 79 .Times(1);
80 EXPECT_CALL(handler, OnReadComplete(_, _)) 80 EXPECT_CALL(handler, OnReadComplete(_, _))
81 .Times(1); 81 .Times(1);
82 82
83 const int count = 512; 83 const int count = 512;
84 socket->Read(count, base::Bind(&CompleteHandler::OnReadComplete, 84 socket->Read(count, base::Bind(&CompleteHandler::OnReadComplete,
85 base::Unretained(&handler))); 85 base::Unretained(&handler)));
86 } 86 }
87 87
88 TEST(SocketTest, TestTCPSocketWrite) { 88 TEST(SocketTest, TestTCPSocketWrite) {
89 net::AddressList address_list; 89 net::AddressList address_list;
90 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); 90 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list);
91 APIResourceEventNotifier* notifier = new MockAPIResourceEventNotifier(); 91 ApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier();
92 CompleteHandler handler; 92 CompleteHandler handler;
93 93
94 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( 94 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting(
95 tcp_client_socket, notifier)); 95 tcp_client_socket, notifier));
96 96
97 net::CompletionCallback callback; 97 net::CompletionCallback callback;
98 EXPECT_CALL(*tcp_client_socket, Write(_, _, _)) 98 EXPECT_CALL(*tcp_client_socket, Write(_, _, _))
99 .Times(2) 99 .Times(2)
100 .WillRepeatedly(testing::DoAll(SaveArg<2>(&callback), 100 .WillRepeatedly(testing::DoAll(SaveArg<2>(&callback),
101 Return(128))); 101 Return(128)));
102 EXPECT_CALL(handler, OnComplete(_)) 102 EXPECT_CALL(handler, OnComplete(_))
103 .Times(1); 103 .Times(1);
104 104
105 scoped_refptr<net::IOBufferWithSize> io_buffer( 105 scoped_refptr<net::IOBufferWithSize> io_buffer(
106 new net::IOBufferWithSize(256)); 106 new net::IOBufferWithSize(256));
107 socket->Write(io_buffer.get(), io_buffer->size(), 107 socket->Write(io_buffer.get(), io_buffer->size(),
108 base::Bind(&CompleteHandler::OnComplete, base::Unretained(&handler))); 108 base::Bind(&CompleteHandler::OnComplete, base::Unretained(&handler)));
109 } 109 }
110 110
111 TEST(SocketTest, TestTCPSocketBlockedWrite) { 111 TEST(SocketTest, TestTCPSocketBlockedWrite) {
112 net::AddressList address_list; 112 net::AddressList address_list;
113 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); 113 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list);
114 MockAPIResourceEventNotifier* notifier = new MockAPIResourceEventNotifier(); 114 MockApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier();
115 CompleteHandler handler; 115 CompleteHandler handler;
116 116
117 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( 117 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting(
118 tcp_client_socket, notifier)); 118 tcp_client_socket, notifier));
119 119
120 net::CompletionCallback callback; 120 net::CompletionCallback callback;
121 EXPECT_CALL(*tcp_client_socket, Write(_, _, _)) 121 EXPECT_CALL(*tcp_client_socket, Write(_, _, _))
122 .Times(2) 122 .Times(2)
123 .WillRepeatedly(testing::DoAll(SaveArg<2>(&callback), 123 .WillRepeatedly(testing::DoAll(SaveArg<2>(&callback),
124 Return(net::ERR_IO_PENDING))); 124 Return(net::ERR_IO_PENDING)));
125 scoped_refptr<net::IOBufferWithSize> io_buffer(new net::IOBufferWithSize(42)); 125 scoped_refptr<net::IOBufferWithSize> io_buffer(new net::IOBufferWithSize(42));
126 socket->Write(io_buffer.get(), io_buffer->size(), 126 socket->Write(io_buffer.get(), io_buffer->size(),
127 base::Bind(&CompleteHandler::OnComplete, base::Unretained(&handler))); 127 base::Bind(&CompleteHandler::OnComplete, base::Unretained(&handler)));
128 128
129 // Good. Original call came back unable to complete. Now pretend the socket 129 // Good. Original call came back unable to complete. Now pretend the socket
130 // finished, and confirm that we passed the error back. 130 // finished, and confirm that we passed the error back.
131 EXPECT_CALL(handler, OnComplete(42)) 131 EXPECT_CALL(handler, OnComplete(42))
132 .Times(1); 132 .Times(1);
133 callback.Run(40); 133 callback.Run(40);
134 callback.Run(2); 134 callback.Run(2);
135 } 135 }
136 136
137 TEST(SocketTest, TestTCPSocketBlockedWriteReentry) { 137 TEST(SocketTest, TestTCPSocketBlockedWriteReentry) {
138 net::AddressList address_list; 138 net::AddressList address_list;
139 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); 139 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list);
140 MockAPIResourceEventNotifier* notifier = new MockAPIResourceEventNotifier(); 140 MockApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier();
141 CompleteHandler handlers[5]; 141 CompleteHandler handlers[5];
142 142
143 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( 143 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting(
144 tcp_client_socket, notifier)); 144 tcp_client_socket, notifier));
145 145
146 net::CompletionCallback callback; 146 net::CompletionCallback callback;
147 EXPECT_CALL(*tcp_client_socket, Write(_, _, _)) 147 EXPECT_CALL(*tcp_client_socket, Write(_, _, _))
148 .Times(5) 148 .Times(5)
149 .WillRepeatedly(testing::DoAll(SaveArg<2>(&callback), 149 .WillRepeatedly(testing::DoAll(SaveArg<2>(&callback),
150 Return(net::ERR_IO_PENDING))); 150 Return(net::ERR_IO_PENDING)));
(...skipping 12 matching lines...) Expand all
163 } 163 }
164 164
165 for (i = 0; i < 5; i++) { 165 for (i = 0; i < 5; i++) {
166 callback.Run(128 + i * 50); 166 callback.Run(128 + i * 50);
167 } 167 }
168 } 168 }
169 169
170 TEST(SocketTest, TestTCPSocketSetNoDelay) { 170 TEST(SocketTest, TestTCPSocketSetNoDelay) {
171 net::AddressList address_list; 171 net::AddressList address_list;
172 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); 172 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list);
173 MockAPIResourceEventNotifier* notifier = new MockAPIResourceEventNotifier(); 173 MockApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier();
174 174
175 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( 175 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting(
176 tcp_client_socket, notifier)); 176 tcp_client_socket, notifier));
177 177
178 bool no_delay = false; 178 bool no_delay = false;
179 EXPECT_CALL(*tcp_client_socket, SetNoDelay(_)) 179 EXPECT_CALL(*tcp_client_socket, SetNoDelay(_))
180 .WillOnce(testing::DoAll(SaveArg<0>(&no_delay), Return(true))); 180 .WillOnce(testing::DoAll(SaveArg<0>(&no_delay), Return(true)));
181 int result = socket->SetNoDelay(true); 181 int result = socket->SetNoDelay(true);
182 EXPECT_TRUE(result); 182 EXPECT_TRUE(result);
183 EXPECT_TRUE(no_delay); 183 EXPECT_TRUE(no_delay);
184 184
185 EXPECT_CALL(*tcp_client_socket, SetNoDelay(_)) 185 EXPECT_CALL(*tcp_client_socket, SetNoDelay(_))
186 .WillOnce(testing::DoAll(SaveArg<0>(&no_delay), Return(false))); 186 .WillOnce(testing::DoAll(SaveArg<0>(&no_delay), Return(false)));
187 187
188 result = socket->SetNoDelay(false); 188 result = socket->SetNoDelay(false);
189 EXPECT_FALSE(result); 189 EXPECT_FALSE(result);
190 EXPECT_FALSE(no_delay); 190 EXPECT_FALSE(no_delay);
191 } 191 }
192 192
193 TEST(SocketTest, TestTCPSocketSetKeepAlive) { 193 TEST(SocketTest, TestTCPSocketSetKeepAlive) {
194 net::AddressList address_list; 194 net::AddressList address_list;
195 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); 195 MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list);
196 MockAPIResourceEventNotifier* notifier = new MockAPIResourceEventNotifier(); 196 MockApiResourceEventNotifier* notifier = new MockApiResourceEventNotifier();
197 197
198 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( 198 scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting(
199 tcp_client_socket, notifier)); 199 tcp_client_socket, notifier));
200 200
201 bool enable = false; 201 bool enable = false;
202 int delay = 0; 202 int delay = 0;
203 EXPECT_CALL(*tcp_client_socket, SetKeepAlive(_, _)) 203 EXPECT_CALL(*tcp_client_socket, SetKeepAlive(_, _))
204 .WillOnce(testing::DoAll(SaveArg<0>(&enable), 204 .WillOnce(testing::DoAll(SaveArg<0>(&enable),
205 SaveArg<1>(&delay), 205 SaveArg<1>(&delay),
206 Return(true))); 206 Return(true)));
207 int result = socket->SetKeepAlive(true, 4500); 207 int result = socket->SetKeepAlive(true, 4500);
208 EXPECT_TRUE(result); 208 EXPECT_TRUE(result);
209 EXPECT_TRUE(enable); 209 EXPECT_TRUE(enable);
210 EXPECT_EQ(4500, delay); 210 EXPECT_EQ(4500, delay);
211 211
212 EXPECT_CALL(*tcp_client_socket, SetKeepAlive(_, _)) 212 EXPECT_CALL(*tcp_client_socket, SetKeepAlive(_, _))
213 .WillOnce(testing::DoAll(SaveArg<0>(&enable), 213 .WillOnce(testing::DoAll(SaveArg<0>(&enable),
214 SaveArg<1>(&delay), 214 SaveArg<1>(&delay),
215 Return(false))); 215 Return(false)));
216 result = socket->SetKeepAlive(false, 0); 216 result = socket->SetKeepAlive(false, 0);
217 EXPECT_FALSE(result); 217 EXPECT_FALSE(result);
218 EXPECT_FALSE(enable); 218 EXPECT_FALSE(enable);
219 EXPECT_EQ(0, delay); 219 EXPECT_EQ(0, delay);
220 } 220 }
221 221
222 } // namespace extensions 222 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/socket/tcp_socket.cc ('k') | chrome/browser/extensions/api/socket/udp_socket.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698