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

Side by Side Diff: chrome/test/ui/ppapi_uitest.cc

Issue 9791003: Added pepper test for SSLHandshake (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 9 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
« no previous file with comments | « chrome/test/ui/ppapi_uitest.h ('k') | ppapi/tests/test_case.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/test/ui/ppapi_uitest.h" 5 #include "chrome/test/ui/ppapi_uitest.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/path_service.h" 9 #include "base/path_service.h"
10 #include "base/stringprintf.h" 10 #include "base/stringprintf.h"
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 } 153 }
154 154
155 void PPAPITestBase::RunTestAndReload(const std::string& test_case) { 155 void PPAPITestBase::RunTestAndReload(const std::string& test_case) {
156 GURL url = GetTestFileUrl(test_case); 156 GURL url = GetTestFileUrl(test_case);
157 RunTestURL(url); 157 RunTestURL(url);
158 // If that passed, we simply run the test again, which navigates again. 158 // If that passed, we simply run the test again, which navigates again.
159 RunTestURL(url); 159 RunTestURL(url);
160 } 160 }
161 161
162 void PPAPITestBase::RunTestViaHTTP(const std::string& test_case) { 162 void PPAPITestBase::RunTestViaHTTP(const std::string& test_case) {
163 // For HTTP tests, we use the output DIR to grab the generated files such 163 FilePath document_root;
164 // as the NEXEs. 164 ASSERT_TRUE(GetHTTPDocumentRoot(&document_root));
165 FilePath exe_dir = CommandLine::ForCurrentProcess()->GetProgram().DirName(); 165 RunHTTPTestServer(document_root, test_case, "");
166 FilePath src_dir; 166 }
167 ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &src_dir));
168 167
169 // TestServer expects a path relative to source. So we must first 168 void PPAPITestBase::RunTestWithSSLServer(const std::string& test_case) {
170 // generate absolute paths to SRC and EXE and from there generate 169 FilePath document_root;
171 // a relative path. 170 ASSERT_TRUE(GetHTTPDocumentRoot(&document_root));
172 if (!exe_dir.IsAbsolute()) file_util::AbsolutePath(&exe_dir); 171 net::TestServer test_server(net::BaseTestServer::HTTPSOptions(),
173 if (!src_dir.IsAbsolute()) file_util::AbsolutePath(&src_dir); 172 document_root);
174 ASSERT_TRUE(exe_dir.IsAbsolute());
175 ASSERT_TRUE(src_dir.IsAbsolute());
176
177 size_t match, exe_size, src_size;
178 std::vector<FilePath::StringType> src_parts, exe_parts;
179
180 // Determine point at which src and exe diverge, and create a relative path.
181 exe_dir.GetComponents(&exe_parts);
182 src_dir.GetComponents(&src_parts);
183 exe_size = exe_parts.size();
184 src_size = src_parts.size();
185 for (match = 0; match < exe_size && match < src_size; ++match) {
186 if (exe_parts[match] != src_parts[match])
187 break;
188 }
189 FilePath web_dir;
190 for (size_t tmp_itr = match; tmp_itr < src_size; ++tmp_itr) {
191 web_dir = web_dir.Append(FILE_PATH_LITERAL(".."));
192 }
193 for (; match < exe_size; ++match) {
194 web_dir = web_dir.Append(exe_parts[match]);
195 }
196
197 net::TestServer test_server(net::TestServer::TYPE_HTTP,
198 net::TestServer::kLocalhost,
199 web_dir);
200 ASSERT_TRUE(test_server.Start()); 173 ASSERT_TRUE(test_server.Start());
201 std::string query = BuildQuery("files/test_case.html?", test_case); 174 uint16_t port = test_server.host_port_pair().port();
202 175 RunHTTPTestServer(document_root, test_case,
203 GURL url = test_server.GetURL(query); 176 StringPrintf("ssl_server_port=%d", port));
204 RunTestURL(url);
205 } 177 }
206 178
207 void PPAPITestBase::RunTestWithWebSocketServer(const std::string& test_case) { 179 void PPAPITestBase::RunTestWithWebSocketServer(const std::string& test_case) {
208 FilePath websocket_root_dir; 180 FilePath websocket_root_dir;
209 ASSERT_TRUE( 181 ASSERT_TRUE(
210 PathService::Get(content::DIR_LAYOUT_TESTS, &websocket_root_dir)); 182 PathService::Get(content::DIR_LAYOUT_TESTS, &websocket_root_dir));
211
212 ui_test_utils::TestWebSocketServer server; 183 ui_test_utils::TestWebSocketServer server;
213 int port = server.UseRandomPort(); 184 int port = server.UseRandomPort();
214 ASSERT_TRUE(server.Start(websocket_root_dir)); 185 ASSERT_TRUE(server.Start(websocket_root_dir));
215 std::string url = StringPrintf("%s&websocket_port=%d", 186 FilePath http_document_root;
216 test_case.c_str(), port); 187 ASSERT_TRUE(GetHTTPDocumentRoot(&http_document_root));
217 RunTestViaHTTP(url); 188 RunHTTPTestServer(http_document_root, test_case,
189 StringPrintf("websocket_port=%d", port));
218 } 190 }
219 191
220 std::string PPAPITestBase::StripPrefixes(const std::string& test_name) { 192 std::string PPAPITestBase::StripPrefixes(const std::string& test_name) {
221 const char* const prefixes[] = { 193 const char* const prefixes[] = {
222 "FAILS_", "FLAKY_", "DISABLED_", "SLOW_" }; 194 "FAILS_", "FLAKY_", "DISABLED_", "SLOW_" };
223 for (size_t i = 0; i < sizeof(prefixes)/sizeof(prefixes[0]); ++i) 195 for (size_t i = 0; i < sizeof(prefixes)/sizeof(prefixes[0]); ++i)
224 if (test_name.find(prefixes[i]) == 0) 196 if (test_name.find(prefixes[i]) == 0)
225 return test_name.substr(strlen(prefixes[i])); 197 return test_name.substr(strlen(prefixes[i]));
226 return test_name; 198 return test_name;
227 } 199 }
228 200
229 void PPAPITestBase::RunTestURL(const GURL& test_url) { 201 void PPAPITestBase::RunTestURL(const GURL& test_url) {
230 // See comment above TestingInstance in ppapi/test/testing_instance.h. 202 // See comment above TestingInstance in ppapi/test/testing_instance.h.
231 // Basically it sends messages using the DOM automation controller. The 203 // Basically it sends messages using the DOM automation controller. The
232 // value of "..." means it's still working and we should continue to wait, 204 // value of "..." means it's still working and we should continue to wait,
233 // any other value indicates completion (in this case it will start with 205 // any other value indicates completion (in this case it will start with
234 // "PASS" or "FAIL"). This keeps us from timing out on waits for long tests. 206 // "PASS" or "FAIL"). This keeps us from timing out on waits for long tests.
235 TestFinishObserver observer( 207 TestFinishObserver observer(
236 browser()->GetSelectedWebContents()->GetRenderViewHost(), kTimeoutMs); 208 browser()->GetSelectedWebContents()->GetRenderViewHost(), kTimeoutMs);
237 209
238 ui_test_utils::NavigateToURL(browser(), test_url); 210 ui_test_utils::NavigateToURL(browser(), test_url);
239 211
240 ASSERT_TRUE(observer.WaitForFinish()) << "Test timed out."; 212 ASSERT_TRUE(observer.WaitForFinish()) << "Test timed out.";
241 213
242 EXPECT_STREQ("PASS", observer.result().c_str()); 214 EXPECT_STREQ("PASS", observer.result().c_str());
243 } 215 }
244 216
217 void PPAPITestBase::RunHTTPTestServer(
218 const FilePath& document_root,
219 const std::string& test_case,
220 const std::string& extra_params) {
221 net::TestServer test_server(net::TestServer::TYPE_HTTP,
222 net::TestServer::kLocalhost,
223 document_root);
224 ASSERT_TRUE(test_server.Start());
225 std::string query = BuildQuery("files/test_case.html?", test_case);
226 if (!extra_params.empty())
227 query = StringPrintf("%s&%s", query.c_str(), extra_params.c_str());
228
229 GURL url = test_server.GetURL(query);
230 RunTestURL(url);
231 }
232
233 bool PPAPITestBase::GetHTTPDocumentRoot(FilePath* document_root) {
234 // For HTTP tests, we use the output DIR to grab the generated files such
235 // as the NEXEs.
236 FilePath exe_dir = CommandLine::ForCurrentProcess()->GetProgram().DirName();
237 FilePath src_dir;
238 if (!PathService::Get(base::DIR_SOURCE_ROOT, &src_dir))
239 return false;
240
241 // TestServer expects a path relative to source. So we must first
242 // generate absolute paths to SRC and EXE and from there generate
243 // a relative path.
244 if (!exe_dir.IsAbsolute()) file_util::AbsolutePath(&exe_dir);
245 if (!src_dir.IsAbsolute()) file_util::AbsolutePath(&src_dir);
246 if (!exe_dir.IsAbsolute())
247 return false;
248 if (!src_dir.IsAbsolute())
249 return false;
250
251 size_t match, exe_size, src_size;
252 std::vector<FilePath::StringType> src_parts, exe_parts;
253
254 // Determine point at which src and exe diverge, and create a relative path.
255 exe_dir.GetComponents(&exe_parts);
256 src_dir.GetComponents(&src_parts);
257 exe_size = exe_parts.size();
258 src_size = src_parts.size();
259 for (match = 0; match < exe_size && match < src_size; ++match) {
260 if (exe_parts[match] != src_parts[match])
261 break;
262 }
263 for (size_t tmp_itr = match; tmp_itr < src_size; ++tmp_itr) {
264 *document_root = document_root->Append(FILE_PATH_LITERAL(".."));
265 }
266 for (; match < exe_size; ++match) {
267 *document_root = document_root->Append(exe_parts[match]);
268 }
269 return true;
270 }
271
245 PPAPITest::PPAPITest() { 272 PPAPITest::PPAPITest() {
246 } 273 }
247 274
248 void PPAPITest::SetUpCommandLine(CommandLine* command_line) { 275 void PPAPITest::SetUpCommandLine(CommandLine* command_line) {
249 PPAPITestBase::SetUpCommandLine(command_line); 276 PPAPITestBase::SetUpCommandLine(command_line);
250 277
251 // Append the switch to register the pepper plugin. 278 // Append the switch to register the pepper plugin.
252 // library name = <out dir>/<test_name>.<library_extension> 279 // library name = <out dir>/<test_name>.<library_extension>
253 // MIME type = application/x-ppapi-<test_name> 280 // MIME type = application/x-ppapi-<test_name>
254 FilePath plugin_dir; 281 FilePath plugin_dir;
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 // Similar macros that test over HTTP. 367 // Similar macros that test over HTTP.
341 #define TEST_PPAPI_IN_PROCESS_VIA_HTTP(test_name) \ 368 #define TEST_PPAPI_IN_PROCESS_VIA_HTTP(test_name) \
342 IN_PROC_BROWSER_TEST_F(PPAPITest, test_name) { \ 369 IN_PROC_BROWSER_TEST_F(PPAPITest, test_name) { \
343 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \ 370 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
344 } 371 }
345 #define TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(test_name) \ 372 #define TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(test_name) \
346 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \ 373 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \
347 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \ 374 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
348 } 375 }
349 376
377 // Similar macros that test with an SSL server.
378 #define TEST_PPAPI_IN_PROCESS_WITH_SSL_SERVER(test_name) \
379 IN_PROC_BROWSER_TEST_F(PPAPITest, test_name) { \
380 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
381 }
382 #define TEST_PPAPI_OUT_OF_PROCESS_WITH_SSL_SERVER(test_name) \
383 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \
384 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
385 }
386
350 // Similar macros that test with WebSocket server 387 // Similar macros that test with WebSocket server
351 #define TEST_PPAPI_IN_PROCESS_WITH_WS(test_name) \ 388 #define TEST_PPAPI_IN_PROCESS_WITH_WS(test_name) \
352 IN_PROC_BROWSER_TEST_F(PPAPITest, test_name) { \ 389 IN_PROC_BROWSER_TEST_F(PPAPITest, test_name) { \
353 RunTestWithWebSocketServer(STRIP_PREFIXES(test_name)); \ 390 RunTestWithWebSocketServer(STRIP_PREFIXES(test_name)); \
354 } 391 }
355 #define TEST_PPAPI_OUT_OF_PROCESS_WITH_WS(test_name) \ 392 #define TEST_PPAPI_OUT_OF_PROCESS_WITH_WS(test_name) \
356 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \ 393 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \
357 RunTestWithWebSocketServer(STRIP_PREFIXES(test_name)); \ 394 RunTestWithWebSocketServer(STRIP_PREFIXES(test_name)); \
358 } 395 }
359 396
360 397
361 #if defined(DISABLE_NACL) 398 #if defined(DISABLE_NACL)
362 #define TEST_PPAPI_NACL_VIA_HTTP(test_name) 399 #define TEST_PPAPI_NACL_VIA_HTTP(test_name)
363 #define TEST_PPAPI_NACL_VIA_HTTP_DISALLOWED_SOCKETS(test_name) 400 #define TEST_PPAPI_NACL_VIA_HTTP_DISALLOWED_SOCKETS(test_name)
401 #define TEST_PPAPI_NACL_WITH_SSL_SERVER(test_name)
364 #define TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(test_name) 402 #define TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(test_name)
365 #else 403 #else
366 404
367 // NaCl based PPAPI tests 405 // NaCl based PPAPI tests
368 #define TEST_PPAPI_NACL_VIA_HTTP(test_name) \ 406 #define TEST_PPAPI_NACL_VIA_HTTP(test_name) \
369 IN_PROC_BROWSER_TEST_F(PPAPINaClTest, test_name) { \ 407 IN_PROC_BROWSER_TEST_F(PPAPINaClTest, test_name) { \
370 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \ 408 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
371 } 409 }
372 410
373 // NaCl based PPAPI tests with disallowed socket API 411 // NaCl based PPAPI tests with disallowed socket API
374 #define TEST_PPAPI_NACL_VIA_HTTP_DISALLOWED_SOCKETS(test_name) \ 412 #define TEST_PPAPI_NACL_VIA_HTTP_DISALLOWED_SOCKETS(test_name) \
375 IN_PROC_BROWSER_TEST_F(PPAPINaClTestDisallowedSockets, test_name) { \ 413 IN_PROC_BROWSER_TEST_F(PPAPINaClTestDisallowedSockets, test_name) { \
376 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \ 414 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
377 } 415 }
378 416
417 // NaCl based PPAPI tests with SSL server
418 #define TEST_PPAPI_NACL_WITH_SSL_SERVER(test_name) \
419 IN_PROC_BROWSER_TEST_F(PPAPINaClTest, test_name) { \
420 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
421 }
422
379 // NaCl based PPAPI tests with WebSocket server 423 // NaCl based PPAPI tests with WebSocket server
380 #define TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(test_name) \ 424 #define TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(test_name) \
381 IN_PROC_BROWSER_TEST_F(PPAPINaClTest, test_name) { \ 425 IN_PROC_BROWSER_TEST_F(PPAPINaClTest, test_name) { \
382 RunTestWithWebSocketServer(STRIP_PREFIXES(test_name)); \ 426 RunTestWithWebSocketServer(STRIP_PREFIXES(test_name)); \
383 } 427 }
384 #endif 428 #endif
385 429
386 430
387 // 431 //
388 // Interface tests. 432 // Interface tests.
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 TEST_PPAPI_IN_PROCESS(ImageData) 497 TEST_PPAPI_IN_PROCESS(ImageData)
454 TEST_PPAPI_OUT_OF_PROCESS(ImageData) 498 TEST_PPAPI_OUT_OF_PROCESS(ImageData)
455 TEST_PPAPI_NACL_VIA_HTTP(ImageData) 499 TEST_PPAPI_NACL_VIA_HTTP(ImageData)
456 500
457 TEST_PPAPI_IN_PROCESS(BrowserFont) 501 TEST_PPAPI_IN_PROCESS(BrowserFont)
458 TEST_PPAPI_OUT_OF_PROCESS(BrowserFont) 502 TEST_PPAPI_OUT_OF_PROCESS(BrowserFont)
459 503
460 TEST_PPAPI_IN_PROCESS(Buffer) 504 TEST_PPAPI_IN_PROCESS(Buffer)
461 TEST_PPAPI_OUT_OF_PROCESS(Buffer) 505 TEST_PPAPI_OUT_OF_PROCESS(Buffer)
462 506
463 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(TCPSocketPrivate) 507 TEST_PPAPI_OUT_OF_PROCESS_WITH_SSL_SERVER(TCPSocketPrivate)
464 TEST_PPAPI_IN_PROCESS_VIA_HTTP(TCPSocketPrivate) 508 TEST_PPAPI_IN_PROCESS_WITH_SSL_SERVER(TCPSocketPrivate)
465 TEST_PPAPI_NACL_VIA_HTTP(TCPSocketPrivate) 509 TEST_PPAPI_NACL_WITH_SSL_SERVER(TCPSocketPrivate)
466 510
467 TEST_PPAPI_IN_PROCESS_VIA_HTTP(UDPSocketPrivate) 511 TEST_PPAPI_IN_PROCESS_VIA_HTTP(UDPSocketPrivate)
468 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate) 512 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate)
469 TEST_PPAPI_NACL_VIA_HTTP(UDPSocketPrivate) 513 TEST_PPAPI_NACL_VIA_HTTP(UDPSocketPrivate)
470 514
471 TEST_PPAPI_NACL_VIA_HTTP_DISALLOWED_SOCKETS(TCPServerSocketPrivateDisallowed) 515 TEST_PPAPI_NACL_VIA_HTTP_DISALLOWED_SOCKETS(TCPServerSocketPrivateDisallowed)
472 TEST_PPAPI_NACL_VIA_HTTP_DISALLOWED_SOCKETS(TCPSocketPrivateDisallowed) 516 TEST_PPAPI_NACL_VIA_HTTP_DISALLOWED_SOCKETS(TCPSocketPrivateDisallowed)
473 TEST_PPAPI_NACL_VIA_HTTP_DISALLOWED_SOCKETS(UDPSocketPrivateDisallowed) 517 TEST_PPAPI_NACL_VIA_HTTP_DISALLOWED_SOCKETS(UDPSocketPrivateDisallowed)
474 518
475 TEST_PPAPI_IN_PROCESS_VIA_HTTP(TCPServerSocketPrivate) 519 TEST_PPAPI_IN_PROCESS_VIA_HTTP(TCPServerSocketPrivate)
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after
935 TEST_PPAPI_OUT_OF_PROCESS(ResourceArray_OutOfRangeAccess) 979 TEST_PPAPI_OUT_OF_PROCESS(ResourceArray_OutOfRangeAccess)
936 TEST_PPAPI_OUT_OF_PROCESS(ResourceArray_EmptyArray) 980 TEST_PPAPI_OUT_OF_PROCESS(ResourceArray_EmptyArray)
937 TEST_PPAPI_OUT_OF_PROCESS(ResourceArray_InvalidElement) 981 TEST_PPAPI_OUT_OF_PROCESS(ResourceArray_InvalidElement)
938 982
939 TEST_PPAPI_IN_PROCESS(FlashMessageLoop_Basics) 983 TEST_PPAPI_IN_PROCESS(FlashMessageLoop_Basics)
940 TEST_PPAPI_IN_PROCESS(FlashMessageLoop_RunWithoutQuit) 984 TEST_PPAPI_IN_PROCESS(FlashMessageLoop_RunWithoutQuit)
941 TEST_PPAPI_OUT_OF_PROCESS(FlashMessageLoop_Basics) 985 TEST_PPAPI_OUT_OF_PROCESS(FlashMessageLoop_Basics)
942 TEST_PPAPI_OUT_OF_PROCESS(FlashMessageLoop_RunWithoutQuit) 986 TEST_PPAPI_OUT_OF_PROCESS(FlashMessageLoop_RunWithoutQuit)
943 987
944 #endif // ADDRESS_SANITIZER 988 #endif // ADDRESS_SANITIZER
OLDNEW
« no previous file with comments | « chrome/test/ui/ppapi_uitest.h ('k') | ppapi/tests/test_case.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698