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