OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "jingle/notifier/base/fake_ssl_client_socket.h" | 5 #include "jingle/notifier/base/fake_ssl_client_socket.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 29 matching lines...) Expand all Loading... |
40 // An error representing a server hello that has been corrupted in | 40 // An error representing a server hello that has been corrupted in |
41 // transit. | 41 // transit. |
42 ERR_MALFORMED_SERVER_HELLO = -15000, | 42 ERR_MALFORMED_SERVER_HELLO = -15000, |
43 }; | 43 }; |
44 | 44 |
45 // Used by PassThroughMethods test. | 45 // Used by PassThroughMethods test. |
46 class MockClientSocket : public net::StreamSocket { | 46 class MockClientSocket : public net::StreamSocket { |
47 public: | 47 public: |
48 virtual ~MockClientSocket() {} | 48 virtual ~MockClientSocket() {} |
49 | 49 |
50 MOCK_METHOD3(Read, int(net::IOBuffer*, int, net::OldCompletionCallback*)); | |
51 MOCK_METHOD3(Read, int(net::IOBuffer*, int, | 50 MOCK_METHOD3(Read, int(net::IOBuffer*, int, |
52 const net::CompletionCallback&)); | 51 const net::CompletionCallback&)); |
53 MOCK_METHOD3(Write, int(net::IOBuffer*, int, net::OldCompletionCallback*)); | 52 MOCK_METHOD3(Write, int(net::IOBuffer*, int, |
| 53 const net::CompletionCallback&)); |
54 MOCK_METHOD1(SetReceiveBufferSize, bool(int32)); | 54 MOCK_METHOD1(SetReceiveBufferSize, bool(int32)); |
55 MOCK_METHOD1(SetSendBufferSize, bool(int32)); | 55 MOCK_METHOD1(SetSendBufferSize, bool(int32)); |
56 MOCK_METHOD1(Connect, int(net::OldCompletionCallback*)); | |
57 MOCK_METHOD1(Connect, int(const net::CompletionCallback&)); | 56 MOCK_METHOD1(Connect, int(const net::CompletionCallback&)); |
58 MOCK_METHOD0(Disconnect, void()); | 57 MOCK_METHOD0(Disconnect, void()); |
59 MOCK_CONST_METHOD0(IsConnected, bool()); | 58 MOCK_CONST_METHOD0(IsConnected, bool()); |
60 MOCK_CONST_METHOD0(IsConnectedAndIdle, bool()); | 59 MOCK_CONST_METHOD0(IsConnectedAndIdle, bool()); |
61 MOCK_CONST_METHOD1(GetPeerAddress, int(net::AddressList*)); | 60 MOCK_CONST_METHOD1(GetPeerAddress, int(net::AddressList*)); |
62 MOCK_CONST_METHOD1(GetLocalAddress, int(net::IPEndPoint*)); | 61 MOCK_CONST_METHOD1(GetLocalAddress, int(net::IPEndPoint*)); |
63 MOCK_CONST_METHOD0(NetLog, const net::BoundNetLog&()); | 62 MOCK_CONST_METHOD0(NetLog, const net::BoundNetLog&()); |
64 MOCK_METHOD0(SetSubresourceSpeculation, void()); | 63 MOCK_METHOD0(SetSubresourceSpeculation, void()); |
65 MOCK_METHOD0(SetOmniboxSpeculation, void()); | 64 MOCK_METHOD0(SetOmniboxSpeculation, void()); |
66 MOCK_CONST_METHOD0(WasEverUsed, bool()); | 65 MOCK_CONST_METHOD0(WasEverUsed, bool()); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 new net::StaticSocketDataProvider( | 103 new net::StaticSocketDataProvider( |
105 reads->empty() ? NULL : &*reads->begin(), reads->size(), | 104 reads->empty() ? NULL : &*reads->begin(), reads->size(), |
106 writes->empty() ? NULL : &*writes->begin(), writes->size())); | 105 writes->empty() ? NULL : &*writes->begin(), writes->size())); |
107 static_socket_data_provider_->set_connect_data(mock_connect); | 106 static_socket_data_provider_->set_connect_data(mock_connect); |
108 mock_client_socket_factory_.AddSocketDataProvider( | 107 mock_client_socket_factory_.AddSocketDataProvider( |
109 static_socket_data_provider_.get()); | 108 static_socket_data_provider_.get()); |
110 } | 109 } |
111 | 110 |
112 void ExpectStatus( | 111 void ExpectStatus( |
113 bool async, int expected_status, int immediate_status, | 112 bool async, int expected_status, int immediate_status, |
114 TestOldCompletionCallback* test_completion_callback) { | 113 net::TestCompletionCallback* test_completion_callback) { |
115 if (async) { | 114 if (async) { |
116 EXPECT_EQ(net::ERR_IO_PENDING, immediate_status); | 115 EXPECT_EQ(net::ERR_IO_PENDING, immediate_status); |
117 int status = test_completion_callback->WaitForResult(); | 116 int status = test_completion_callback->WaitForResult(); |
118 EXPECT_EQ(expected_status, status); | 117 EXPECT_EQ(expected_status, status); |
119 } else { | 118 } else { |
120 EXPECT_EQ(expected_status, immediate_status); | 119 EXPECT_EQ(expected_status, immediate_status); |
121 } | 120 } |
122 } | 121 } |
123 | 122 |
124 // Sets up the mock socket to generate a successful handshake | 123 // Sets up the mock socket to generate a successful handshake |
(...skipping 20 matching lines...) Expand all Loading... |
145 net::MockRead(async, kReadTestData, arraysize(kReadTestData))); | 144 net::MockRead(async, kReadTestData, arraysize(kReadTestData))); |
146 writes.push_back( | 145 writes.push_back( |
147 net::MockWrite(async, kWriteTestData, arraysize(kWriteTestData))); | 146 net::MockWrite(async, kWriteTestData, arraysize(kWriteTestData))); |
148 } | 147 } |
149 SetData(mock_connect, &reads, &writes); | 148 SetData(mock_connect, &reads, &writes); |
150 | 149 |
151 FakeSSLClientSocket fake_ssl_client_socket(MakeClientSocket()); | 150 FakeSSLClientSocket fake_ssl_client_socket(MakeClientSocket()); |
152 | 151 |
153 for (int i = 0; i < num_resets + 1; ++i) { | 152 for (int i = 0; i < num_resets + 1; ++i) { |
154 SCOPED_TRACE(i); | 153 SCOPED_TRACE(i); |
155 TestOldCompletionCallback test_completion_callback; | 154 net::TestCompletionCallback test_completion_callback; |
156 int status = fake_ssl_client_socket.Connect(&test_completion_callback); | 155 int status = fake_ssl_client_socket.Connect( |
| 156 test_completion_callback.callback()); |
157 if (async) { | 157 if (async) { |
158 EXPECT_FALSE(fake_ssl_client_socket.IsConnected()); | 158 EXPECT_FALSE(fake_ssl_client_socket.IsConnected()); |
159 } | 159 } |
160 ExpectStatus(async, net::OK, status, &test_completion_callback); | 160 ExpectStatus(async, net::OK, status, &test_completion_callback); |
161 if (fake_ssl_client_socket.IsConnected()) { | 161 if (fake_ssl_client_socket.IsConnected()) { |
162 int read_len = arraysize(kReadTestData); | 162 int read_len = arraysize(kReadTestData); |
163 int read_buf_len = 2 * read_len; | 163 int read_buf_len = 2 * read_len; |
164 scoped_refptr<net::IOBuffer> read_buf( | 164 scoped_refptr<net::IOBuffer> read_buf( |
165 new net::IOBuffer(read_buf_len)); | 165 new net::IOBuffer(read_buf_len)); |
166 int read_status = fake_ssl_client_socket.Read( | 166 int read_status = fake_ssl_client_socket.Read( |
167 read_buf, read_buf_len, &test_completion_callback); | 167 read_buf, read_buf_len, test_completion_callback.callback()); |
168 ExpectStatus(async, read_len, read_status, &test_completion_callback); | 168 ExpectStatus(async, read_len, read_status, &test_completion_callback); |
169 | 169 |
170 scoped_refptr<net::IOBuffer> write_buf( | 170 scoped_refptr<net::IOBuffer> write_buf( |
171 new net::StringIOBuffer(kWriteTestData)); | 171 new net::StringIOBuffer(kWriteTestData)); |
172 int write_status = fake_ssl_client_socket.Write( | 172 int write_status = fake_ssl_client_socket.Write( |
173 write_buf, arraysize(kWriteTestData), &test_completion_callback); | 173 write_buf, arraysize(kWriteTestData), |
| 174 test_completion_callback.callback()); |
174 ExpectStatus(async, arraysize(kWriteTestData), write_status, | 175 ExpectStatus(async, arraysize(kWriteTestData), write_status, |
175 &test_completion_callback); | 176 &test_completion_callback); |
176 } else { | 177 } else { |
177 ADD_FAILURE(); | 178 ADD_FAILURE(); |
178 } | 179 } |
179 fake_ssl_client_socket.Disconnect(); | 180 fake_ssl_client_socket.Disconnect(); |
180 EXPECT_FALSE(fake_ssl_client_socket.IsConnected()); | 181 EXPECT_FALSE(fake_ssl_client_socket.IsConnected()); |
181 } | 182 } |
182 } | 183 } |
183 | 184 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 | 239 |
239 FakeSSLClientSocket fake_ssl_client_socket(MakeClientSocket()); | 240 FakeSSLClientSocket fake_ssl_client_socket(MakeClientSocket()); |
240 | 241 |
241 // The two errors below are interpreted by FakeSSLClientSocket as | 242 // The two errors below are interpreted by FakeSSLClientSocket as |
242 // an unexpected event. | 243 // an unexpected event. |
243 int expected_status = | 244 int expected_status = |
244 ((error == net::ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ) || | 245 ((error == net::ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ) || |
245 (error == ERR_MALFORMED_SERVER_HELLO)) ? | 246 (error == ERR_MALFORMED_SERVER_HELLO)) ? |
246 net::ERR_UNEXPECTED : error; | 247 net::ERR_UNEXPECTED : error; |
247 | 248 |
248 TestOldCompletionCallback test_completion_callback; | 249 net::TestCompletionCallback test_completion_callback; |
249 int status = fake_ssl_client_socket.Connect(&test_completion_callback); | 250 int status = fake_ssl_client_socket.Connect( |
| 251 test_completion_callback.callback()); |
250 EXPECT_FALSE(fake_ssl_client_socket.IsConnected()); | 252 EXPECT_FALSE(fake_ssl_client_socket.IsConnected()); |
251 ExpectStatus(async, expected_status, status, &test_completion_callback); | 253 ExpectStatus(async, expected_status, status, &test_completion_callback); |
252 EXPECT_FALSE(fake_ssl_client_socket.IsConnected()); | 254 EXPECT_FALSE(fake_ssl_client_socket.IsConnected()); |
253 } | 255 } |
254 | 256 |
255 void RunUnsuccessfulHandshakeTest( | 257 void RunUnsuccessfulHandshakeTest( |
256 int error, HandshakeErrorLocation location) { | 258 int error, HandshakeErrorLocation location) { |
257 RunUnsuccessfulHandshakeTestHelper(false, error, location); | 259 RunUnsuccessfulHandshakeTestHelper(false, error, location); |
258 RunUnsuccessfulHandshakeTestHelper(true, error, location); | 260 RunUnsuccessfulHandshakeTestHelper(true, error, location); |
259 } | 261 } |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
337 } | 339 } |
338 | 340 |
339 TEST_F(FakeSSLClientSocketTest, MalformedServerHello) { | 341 TEST_F(FakeSSLClientSocketTest, MalformedServerHello) { |
340 RunUnsuccessfulHandshakeTest(ERR_MALFORMED_SERVER_HELLO, | 342 RunUnsuccessfulHandshakeTest(ERR_MALFORMED_SERVER_HELLO, |
341 VERIFY_SERVER_HELLO_ERROR); | 343 VERIFY_SERVER_HELLO_ERROR); |
342 } | 344 } |
343 | 345 |
344 } // namespace | 346 } // namespace |
345 | 347 |
346 } // namespace notifier | 348 } // namespace notifier |
OLD | NEW |