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

Side by Side Diff: ppapi/tests/test_tcp_socket_private_shared.cc

Issue 8840007: GetDocumentURL is added to PPB_Testing_Dev. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 9 years 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
OLDNEW
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 "ppapi/tests/test_tcp_socket_private_shared.h" 5 #include "ppapi/tests/test_tcp_socket_private_shared.h"
6 6
7 #include <string.h>
8 #include <new>
9 #include <string>
10 #include <vector> 7 #include <vector>
11 8
12 #include "ppapi/cpp/module.h" 9 #include "ppapi/cpp/module.h"
13 #include "ppapi/tests/test_utils.h" 10 #include "ppapi/tests/test_utils.h"
14 #include "ppapi/tests/testing_instance.h" 11 #include "ppapi/tests/testing_instance.h"
15 12
16 REGISTER_TEST_CASE(TCPSocketPrivateShared); 13 REGISTER_TEST_CASE(TCPSocketPrivateShared);
17 14
18 // TODO(ygorshenin): get rid of using external server in tests,
19 // http://crbug.com/105863
20 const char* const TestTCPSocketPrivateShared::kHost = "www.google.com";
21
22 TestTCPSocketPrivateShared::TestTCPSocketPrivateShared( 15 TestTCPSocketPrivateShared::TestTCPSocketPrivateShared(
23 TestingInstance* instance) 16 TestingInstance* instance)
24 : TestCase(instance), tcp_socket_private_interface_(NULL) { 17 : TestCase(instance), tcp_socket_private_interface_(NULL) {
25 } 18 }
26 19
27 bool TestTCPSocketPrivateShared::Init() { 20 bool TestTCPSocketPrivateShared::Init() {
28 tcp_socket_private_interface_ = 21 tcp_socket_private_interface_ =
29 reinterpret_cast<PPB_TCPSocket_Private const*>( 22 reinterpret_cast<PPB_TCPSocket_Private const*>(
30 pp::Module::Get()->GetBrowserInterface( 23 pp::Module::Get()->GetBrowserInterface(
31 PPB_TCPSOCKET_PRIVATE_INTERFACE)); 24 PPB_TCPSOCKET_PRIVATE_INTERFACE));
32 if (!tcp_socket_private_interface_) 25 if (!tcp_socket_private_interface_)
33 instance_->AppendError("TCPSocketPrivate interface not available"); 26 instance_->AppendError("TCPSocketPrivate interface not available");
34 return tcp_socket_private_interface_ && InitTestingInterface(); 27
28 bool init_host_port = false;
29 if (!GetLocalHostPort(instance_->pp_instance(), &host_, &port_))
30 instance_->AppendError("Can't init host and port");
31 else
32 init_host_port = true;
33
34 return tcp_socket_private_interface_ &&
35 init_host_port &&
36 InitTestingInterface();
35 } 37 }
36 38
37 void TestTCPSocketPrivateShared::RunTests(const std::string& filter) { 39 void TestTCPSocketPrivateShared::RunTests(const std::string& filter) {
38 RUN_TEST(Create, filter); 40 RUN_TEST(Create, filter);
39 RUN_TEST_FORCEASYNC_AND_NOT(GetAddress, filter); 41 RUN_TEST_FORCEASYNC_AND_NOT(GetAddress, filter);
40 RUN_TEST_FORCEASYNC_AND_NOT(Connect, filter); 42 RUN_TEST_FORCEASYNC_AND_NOT(Connect, filter);
41 RUN_TEST_FORCEASYNC_AND_NOT(Reconnect, filter); 43 RUN_TEST_FORCEASYNC_AND_NOT(Reconnect, filter);
42 } 44 }
43 45
44 void TestTCPSocketPrivateShared::QuitMessageLoop() { 46 void TestTCPSocketPrivateShared::QuitMessageLoop() {
45 testing_interface_->QuitMessageLoop(instance_->pp_instance()); 47 testing_interface_->QuitMessageLoop(instance_->pp_instance());
46 } 48 }
47 49
48 std::string TestTCPSocketPrivateShared::CreateSocket(PP_Resource* socket) { 50 std::string TestTCPSocketPrivateShared::CreateSocket(PP_Resource* socket) {
49 *socket = tcp_socket_private_interface_->Create(instance_->pp_instance()); 51 *socket = tcp_socket_private_interface_->Create(instance_->pp_instance());
50 if (0 == *socket) 52 if (0 == *socket)
51 return "PPB_TCPSocket_Private::Create failed"; 53 return "PPB_TCPSocket_Private::Create failed";
52 if (!tcp_socket_private_interface_->IsTCPSocket(*socket)) 54 if (!tcp_socket_private_interface_->IsTCPSocket(*socket))
53 return "PPB_TCPSocket_Private::IsTCPSocket failed"; 55 return "PPB_TCPSocket_Private::IsTCPSocket failed";
54 PASS(); 56 PASS();
55 } 57 }
56 58
57 std::string TestTCPSocketPrivateShared::SyncConnect(PP_Resource socket, 59 std::string TestTCPSocketPrivateShared::SyncConnect(PP_Resource socket,
58 const char* host, 60 const std::string& host,
59 int port) { 61 uint16_t port) {
60 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 62 TestCompletionCallback callback(instance_->pp_instance(), force_async_);
61 63
62 int32_t rv = tcp_socket_private_interface_->Connect( 64 int32_t rv = tcp_socket_private_interface_->Connect(
63 socket, host, port, 65 socket, host.c_str(), port,
64 static_cast<pp::CompletionCallback>(callback).pp_completion_callback()); 66 static_cast<pp::CompletionCallback>(callback).pp_completion_callback());
65 67
66 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 68 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
67 return ReportError("PPB_TCPSocket_Private::Connect force_async", rv); 69 return ReportError("PPB_TCPSocket_Private::Connect force_async", rv);
68 if (rv == PP_OK_COMPLETIONPENDING) 70 if (rv == PP_OK_COMPLETIONPENDING)
69 rv = callback.WaitForResult(); 71 rv = callback.WaitForResult();
70 if (rv != PP_OK) 72 if (rv != PP_OK)
71 return ReportError("PPB_TCPSocket_Private::Connect", rv); 73 return ReportError("PPB_TCPSocket_Private::Connect", rv);
72 PASS(); 74 PASS();
73 } 75 }
74 76
75 std::string TestTCPSocketPrivateShared::SyncConnectWithNetAddress( 77 std::string TestTCPSocketPrivateShared::SyncConnectWithNetAddress(
76 PP_Resource socket, const PP_NetAddress_Private& addr) { 78 PP_Resource socket, const PP_NetAddress_Private& addr) {
77 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 79 TestCompletionCallback callback(instance_->pp_instance(), force_async_);
78 80
79 int32_t rv = tcp_socket_private_interface_->ConnectWithNetAddress( 81 int32_t rv = tcp_socket_private_interface_->ConnectWithNetAddress(
80 socket, &addr, 82 socket, &addr,
81 static_cast<pp::CompletionCallback>(callback).pp_completion_callback()); 83 static_cast<pp::CompletionCallback>(callback).pp_completion_callback());
82 84
83 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 85 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
84 return ReportError( 86 return ReportError(
85 "PPB_TCPSocket_Private::ConnectWithNetAddress force_async", rv); 87 "PPB_TCPSocket_Private::ConnectWithNetAddress force_async", rv);
86 if (rv == PP_OK_COMPLETIONPENDING) 88 if (rv == PP_OK_COMPLETIONPENDING)
87 rv = callback.WaitForResult(); 89 rv = callback.WaitForResult();
88 if (rv != PP_OK) 90 if (rv != PP_OK)
89 return ReportError("PPB_TCPSocket_Private::ConnectWithNetAddress", rv); 91 return ReportError("PPB_TCPSocket_Private::ConnectWithNetAddress", rv);
90 PASS(); 92 PASS();
91 } 93 }
92 94
93 std::string TestTCPSocketPrivateShared::SyncSSLHandshake(PP_Resource socket,
94 const char* host,
95 int port) {
96 TestCompletionCallback callback(instance_->pp_instance(), force_async_);
97
98 int32_t rv = tcp_socket_private_interface_->SSLHandshake(
99 socket, host, port,
100 static_cast<pp::CompletionCallback>(callback).pp_completion_callback());
101
102 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
103 return ReportError("PPB_TCPSocket_Private::SSLHandshake force_async", rv);
104 if (rv == PP_OK_COMPLETIONPENDING)
105 rv = callback.WaitForResult();
106 if (rv != PP_OK)
107 return ReportError("PPB_TCPSocket_Private::SSLHandshake", rv);
108 PASS();
109 }
110
111 std::string TestTCPSocketPrivateShared::SyncRead(PP_Resource socket, 95 std::string TestTCPSocketPrivateShared::SyncRead(PP_Resource socket,
112 char* buffer, 96 char* buffer,
113 int32_t num_bytes, 97 int32_t num_bytes,
114 int32_t* bytes_read) { 98 int32_t* bytes_read) {
115 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 99 TestCompletionCallback callback(instance_->pp_instance(), force_async_);
116 100
117 int32_t rv = tcp_socket_private_interface_->Read( 101 int32_t rv = tcp_socket_private_interface_->Read(
118 socket, buffer, num_bytes, 102 socket, buffer, num_bytes,
119 static_cast<pp::CompletionCallback>(callback).pp_completion_callback()); 103 static_cast<pp::CompletionCallback>(callback).pp_completion_callback());
120 104
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 } 168 }
185 169
186 std::string TestTCPSocketPrivateShared::TestGetAddress() { 170 std::string TestTCPSocketPrivateShared::TestGetAddress() {
187 PP_Resource socket; 171 PP_Resource socket;
188 std::string error_message; 172 std::string error_message;
189 173
190 error_message = CreateSocket(&socket); 174 error_message = CreateSocket(&socket);
191 if (!error_message.empty()) 175 if (!error_message.empty())
192 return error_message; 176 return error_message;
193 177
194 error_message = SyncConnect(socket, kHost, kPort); 178 error_message = SyncConnect(socket, host_, port_);
195 if (!error_message.empty()) 179 if (!error_message.empty())
196 return error_message; 180 return error_message;
197 181
198 PP_NetAddress_Private local_address, remote_address; 182 PP_NetAddress_Private local_address, remote_address;
199 183
200 if (PP_TRUE != tcp_socket_private_interface_->GetLocalAddress( 184 if (PP_TRUE != tcp_socket_private_interface_->GetLocalAddress(
201 socket, &local_address)) 185 socket, &local_address))
202 return "PPB_TCPSocketPrivate::GetLocalAddress failed"; 186 return "PPB_TCPSocketPrivate::GetLocalAddress failed";
203 if (PP_TRUE != tcp_socket_private_interface_->GetRemoteAddress( 187 if (PP_TRUE != tcp_socket_private_interface_->GetRemoteAddress(
204 socket, &remote_address)) 188 socket, &remote_address))
205 return "PPB_TCPSocketPrivate::GetRemoteAddress failed"; 189 return "PPB_TCPSocketPrivate::GetRemoteAddress failed";
206 190
207 tcp_socket_private_interface_->Disconnect(socket); 191 tcp_socket_private_interface_->Disconnect(socket);
208 192
209 PASS(); 193 PASS();
210 } 194 }
211 195
212 std::string TestTCPSocketPrivateShared::TestConnect() { 196 std::string TestTCPSocketPrivateShared::TestConnect() {
213 PP_Resource socket; 197 PP_Resource socket;
214 std::string error_message; 198 std::string error_message;
215 199
216 error_message = CreateSocket(&socket); 200 error_message = CreateSocket(&socket);
217 if (!error_message.empty()) 201 if (!error_message.empty())
218 return error_message; 202 return error_message;
219 error_message = SyncConnect(socket, kHost, kPort); 203 error_message = SyncConnect(socket, host_, port_);
220 if (!error_message.empty())
221 return error_message;
222 error_message = SyncSSLHandshake(socket, kHost, kPort);
223 if (!error_message.empty()) 204 if (!error_message.empty())
224 return error_message; 205 return error_message;
225 error_message = 206 error_message =
226 CheckHTTPResponse(socket, "GET /robots.txt\r\n", "HTTP/1.0 200 OK"); 207 CheckHTTPResponse(socket, "GET / HTTP/1.0\r\n\r\n", "HTTP/1.0 200 OK");
227 if (!error_message.empty()) 208 if (!error_message.empty())
228 return error_message; 209 return error_message;
229 tcp_socket_private_interface_->Disconnect(socket); 210 tcp_socket_private_interface_->Disconnect(socket);
230 211
231 PASS(); 212 PASS();
232 } 213 }
233 214
234 std::string TestTCPSocketPrivateShared::TestReconnect() { 215 std::string TestTCPSocketPrivateShared::TestReconnect() {
235 PP_Resource socket; 216 PP_Resource socket;
236 std::string error_message; 217 std::string error_message;
237 218
238 error_message = CreateSocket(&socket); 219 error_message = CreateSocket(&socket);
239 if (!error_message.empty()) 220 if (!error_message.empty())
240 return error_message; 221 return error_message;
241 error_message = SyncConnect(socket, kHost, kPort); 222 error_message = SyncConnect(socket, host_, port_);
242 if (!error_message.empty())
243 return error_message;
244 error_message = SyncSSLHandshake(socket, kHost, kPort);
245 if (!error_message.empty()) 223 if (!error_message.empty())
246 return error_message; 224 return error_message;
247 225
248 PP_NetAddress_Private remote_address; 226 PP_NetAddress_Private remote_address;
249 if (PP_TRUE != 227 if (PP_TRUE !=
250 tcp_socket_private_interface_->GetRemoteAddress(socket, 228 tcp_socket_private_interface_->GetRemoteAddress(socket,
251 &remote_address)) 229 &remote_address))
252 return "PPB_TCPSocketPrivate::GetRemoteAddress failed"; 230 return "PPB_TCPSocketPrivate::GetRemoteAddress failed";
253 tcp_socket_private_interface_->Disconnect(socket); 231 tcp_socket_private_interface_->Disconnect(socket);
254 232
255 error_message = CreateSocket(&socket); 233 error_message = CreateSocket(&socket);
256 if (!error_message.empty()) 234 if (!error_message.empty())
257 return error_message; 235 return error_message;
258 error_message = SyncConnectWithNetAddress(socket, remote_address); 236 error_message = SyncConnectWithNetAddress(socket, remote_address);
259 if (!error_message.empty()) 237 if (!error_message.empty())
260 return error_message; 238 return error_message;
261 error_message = SyncSSLHandshake(socket, kHost, kPort); 239 error_message = CheckHTTPResponse(socket,
262 if (!error_message.empty()) 240 "GET / HTTP/1.0\r\n\r\n",
263 return error_message; 241 "HTTP/1.0 200 OK");
264 error_message =
265 CheckHTTPResponse(socket, "GET /robots.txt\r\n", "HTTP/1.0 200 OK");
266 if (!error_message.empty()) 242 if (!error_message.empty())
267 return error_message; 243 return error_message;
268 tcp_socket_private_interface_->Disconnect(socket); 244 tcp_socket_private_interface_->Disconnect(socket);
269 245
270 PASS(); 246 PASS();
271 } 247 }
248
249 // TODO(ygorshenin): test SSLHandshake somehow
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698