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 "chrome/test/ui/ui_test.h" | 5 #include "chrome/test/ui/ui_test.h" |
6 | 6 |
7 #if defined(OS_POSIX) | 7 #if defined(OS_POSIX) |
8 #include <signal.h> | 8 #include <signal.h> |
9 #include <sys/types.h> | 9 #include <sys/types.h> |
10 #endif | 10 #endif |
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 } | 515 } |
516 | 516 |
517 ProxyLauncher* UITest::CreateProxyLauncher() { | 517 ProxyLauncher* UITest::CreateProxyLauncher() { |
518 // Make the AutomationProxy disconnect the channel on the first error, | 518 // Make the AutomationProxy disconnect the channel on the first error, |
519 // so that we avoid spending a lot of time in timeouts. The browser is likely | 519 // so that we avoid spending a lot of time in timeouts. The browser is likely |
520 // hosed if we hit those errors. | 520 // hosed if we hit those errors. |
521 return new AnonymousProxyLauncher(true); | 521 return new AnonymousProxyLauncher(true); |
522 } | 522 } |
523 | 523 |
524 static CommandLine* CreatePythonCommandLine() { | 524 static CommandLine* CreatePythonCommandLine() { |
| 525 // Note: Python's first argument must be the script; do not append CommandLine |
| 526 // switches, as they would precede the script path and break this CommandLine. |
525 return new CommandLine(FilePath(FILE_PATH_LITERAL("python"))); | 527 return new CommandLine(FilePath(FILE_PATH_LITERAL("python"))); |
526 } | 528 } |
527 | 529 |
528 static CommandLine* CreateHttpServerCommandLine() { | 530 static CommandLine* CreateHttpServerCommandLine() { |
529 FilePath src_path; | 531 FilePath src_path; |
530 // Get to 'src' dir. | 532 // Get to 'src' dir. |
531 PathService::Get(base::DIR_SOURCE_ROOT, &src_path); | 533 PathService::Get(base::DIR_SOURCE_ROOT, &src_path); |
532 | 534 |
533 FilePath script_path(src_path); | 535 FilePath script_path(src_path); |
534 script_path = script_path.AppendASCII("third_party"); | 536 script_path = script_path.AppendASCII("third_party"); |
535 script_path = script_path.AppendASCII("WebKit"); | 537 script_path = script_path.AppendASCII("WebKit"); |
536 script_path = script_path.AppendASCII("Tools"); | 538 script_path = script_path.AppendASCII("Tools"); |
537 script_path = script_path.AppendASCII("Scripts"); | 539 script_path = script_path.AppendASCII("Scripts"); |
538 script_path = script_path.AppendASCII("new-run-webkit-httpd"); | 540 script_path = script_path.AppendASCII("new-run-webkit-httpd"); |
539 | 541 |
540 CommandLine* cmd_line = CreatePythonCommandLine(); | 542 CommandLine* cmd_line = CreatePythonCommandLine(); |
541 cmd_line->AppendArgPath(script_path); | 543 cmd_line->AppendArgPath(script_path); |
542 return cmd_line; | 544 return cmd_line; |
543 } | 545 } |
544 | 546 |
545 void UITest::StartHttpServer(const FilePath& root_directory) { | 547 void UITest::StartHttpServer(const FilePath& root_directory) { |
546 StartHttpServerWithPort(root_directory, 0); | 548 StartHttpServerWithPort(root_directory, 0); |
547 } | 549 } |
548 | 550 |
549 void UITest::StartHttpServerWithPort(const FilePath& root_directory, | 551 void UITest::StartHttpServerWithPort(const FilePath& root_directory, |
550 int port) { | 552 int port) { |
| 553 // Append CommandLine arguments after the server script, switches won't work. |
551 scoped_ptr<CommandLine> cmd_line(CreateHttpServerCommandLine()); | 554 scoped_ptr<CommandLine> cmd_line(CreateHttpServerCommandLine()); |
552 ASSERT_TRUE(cmd_line.get()); | 555 ASSERT_TRUE(cmd_line.get()); |
553 cmd_line->AppendSwitchASCII("server", "start"); | 556 cmd_line->AppendArg("--server=start"); |
554 cmd_line->AppendSwitch("register_cygwin"); | 557 cmd_line->AppendArg("--register_cygwin"); |
555 cmd_line->AppendSwitchPath("root", root_directory); | 558 cmd_line->AppendArgNative(FILE_PATH_LITERAL("--root=") + |
| 559 root_directory.value()); |
556 | 560 |
557 FilePath layout_tests_dir; | 561 FilePath layout_tests_dir; |
558 PathService::Get(base::DIR_SOURCE_ROOT, &layout_tests_dir); | 562 PathService::Get(base::DIR_SOURCE_ROOT, &layout_tests_dir); |
559 layout_tests_dir = layout_tests_dir.AppendASCII("chrome") | 563 layout_tests_dir = layout_tests_dir.AppendASCII("chrome") |
560 .AppendASCII("test") | 564 .AppendASCII("test") |
561 .AppendASCII("data") | 565 .AppendASCII("data") |
562 .AppendASCII("layout_tests") | 566 .AppendASCII("layout_tests") |
563 .AppendASCII("LayoutTests"); | 567 .AppendASCII("LayoutTests"); |
564 cmd_line->AppendSwitchPath("layout_tests_dir", layout_tests_dir); | 568 cmd_line->AppendArgNative(FILE_PATH_LITERAL("--layout_tests_dir=") + |
| 569 layout_tests_dir.value()); |
565 | 570 |
566 // For Windows 7, if we start the lighttpd server on the foreground mode, | 571 // For Windows 7, if we start the lighttpd server on the foreground mode, |
567 // it will mess up with the command window and cause conhost.exe to crash. To | 572 // it will mess up with the command window and cause conhost.exe to crash. To |
568 // work around this, we start the http server on the background mode. | 573 // work around this, we start the http server on the background mode. |
569 #if defined(OS_WIN) | 574 #if defined(OS_WIN) |
570 if (base::win::GetVersion() >= base::win::VERSION_WIN7) | 575 if (base::win::GetVersion() >= base::win::VERSION_WIN7) |
571 cmd_line->AppendSwitch("run_background"); | 576 cmd_line->AppendArg("--run_background"); |
572 #endif | 577 #endif |
573 | 578 |
574 if (port) | 579 if (port) |
575 cmd_line->AppendSwitchASCII("port", base::IntToString(port)); | 580 cmd_line->AppendArg("--port=" + base::IntToString(port)); |
576 | 581 |
577 #if defined(OS_WIN) | 582 #if defined(OS_WIN) |
578 // TODO(phajdan.jr): is this needed? | 583 // TODO(phajdan.jr): is this needed? |
579 base::LaunchAppWithHandleInheritance(cmd_line->command_line_string(), | 584 base::LaunchAppWithHandleInheritance(cmd_line->command_line_string(), |
580 true, | 585 true, |
581 false, | 586 false, |
582 NULL); | 587 NULL); |
583 #else | 588 #else |
584 base::LaunchApp(*cmd_line.get(), true, false, NULL); | 589 base::LaunchApp(*cmd_line.get(), true, false, NULL); |
585 #endif | 590 #endif |
586 } | 591 } |
587 | 592 |
588 void UITest::StopHttpServer() { | 593 void UITest::StopHttpServer() { |
| 594 // Append CommandLine arguments after the server script, switches won't work. |
589 scoped_ptr<CommandLine> cmd_line(CreateHttpServerCommandLine()); | 595 scoped_ptr<CommandLine> cmd_line(CreateHttpServerCommandLine()); |
590 ASSERT_TRUE(cmd_line.get()); | 596 ASSERT_TRUE(cmd_line.get()); |
591 cmd_line->AppendSwitchASCII("server", "stop"); | 597 cmd_line->AppendArg("--server=stop"); |
592 | 598 |
593 #if defined(OS_WIN) | 599 #if defined(OS_WIN) |
594 // TODO(phajdan.jr): is this needed? | 600 // TODO(phajdan.jr): is this needed? |
595 base::LaunchAppWithHandleInheritance(cmd_line->command_line_string(), | 601 base::LaunchAppWithHandleInheritance(cmd_line->command_line_string(), |
596 true, | 602 true, |
597 false, | 603 false, |
598 NULL); | 604 NULL); |
599 #else | 605 #else |
600 base::LaunchApp(*cmd_line.get(), true, false, NULL); | 606 base::LaunchApp(*cmd_line.get(), true, false, NULL); |
601 #endif | 607 #endif |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
839 base::PlatformThread::Sleep(TestTimeouts::action_timeout_ms() / kCycles); | 845 base::PlatformThread::Sleep(TestTimeouts::action_timeout_ms() / kCycles); |
840 } | 846 } |
841 | 847 |
842 LOG(INFO) << "Elapsed time: " << (base::Time::Now() - start).InSecondsF() | 848 LOG(INFO) << "Elapsed time: " << (base::Time::Now() - start).InSecondsF() |
843 << " seconds" | 849 << " seconds" |
844 << " call failed " << fail_count << " times" | 850 << " call failed " << fail_count << " times" |
845 << " state was incorrect " << incorrect_state_count << " times"; | 851 << " state was incorrect " << incorrect_state_count << " times"; |
846 ADD_FAILURE() << "Timeout reached in " << __FUNCTION__; | 852 ADD_FAILURE() << "Timeout reached in " << __FUNCTION__; |
847 return false; | 853 return false; |
848 } | 854 } |
OLD | NEW |