| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #ifndef CHROME_TEST_UI_UI_TEST_H_ | 5 #ifndef CHROME_TEST_UI_UI_TEST_H_ |
| 6 #define CHROME_TEST_UI_UI_TEST_H_ | 6 #define CHROME_TEST_UI_UI_TEST_H_ |
| 7 | 7 |
| 8 // This file provides a common base for running UI unit tests, which operate | 8 // This file provides a common base for running UI unit tests, which operate |
| 9 // the entire browser application in a separate process for holistic | 9 // the entire browser application in a separate process for holistic |
| 10 // functional testing. | 10 // functional testing. |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 // AutomationProxy here, but many files that #include this one don't | 29 // AutomationProxy here, but many files that #include this one don't |
| 30 // themselves #include automation_proxy.h. | 30 // themselves #include automation_proxy.h. |
| 31 #include "chrome/test/automation/automation_proxy.h" | 31 #include "chrome/test/automation/automation_proxy.h" |
| 32 #include "testing/platform_test.h" | 32 #include "testing/platform_test.h" |
| 33 | 33 |
| 34 class AutomationProxy; | 34 class AutomationProxy; |
| 35 class BrowserProxy; | 35 class BrowserProxy; |
| 36 class DictionaryValue; | 36 class DictionaryValue; |
| 37 class FilePath; | 37 class FilePath; |
| 38 class GURL; | 38 class GURL; |
| 39 class ScopedTempDir; |
| 39 class TabProxy; | 40 class TabProxy; |
| 40 | 41 |
| 41 // Base class for UI Tests. This implements the core of the functions. | 42 // Base class for UI Tests. This implements the core of the functions. |
| 42 // This base class decouples all automation functionality from testing | 43 // This base class decouples all automation functionality from testing |
| 43 // infrastructure, for use without gtest. | 44 // infrastructure, for use without gtest. |
| 44 // If using gtest, you probably want to inherit from UITest (declared below) | 45 // If using gtest, you probably want to inherit from UITest (declared below) |
| 45 // rather than UITestBase. | 46 // rather than UITestBase. |
| 46 class UITestBase { | 47 class UITestBase { |
| 47 protected: | 48 protected: |
| 48 // String to display when a test fails because the crash service isn't | 49 // String to display when a test fails because the crash service isn't |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 391 // copied into the user data directory for the test and the files will be | 392 // copied into the user data directory for the test and the files will be |
| 392 // evicted from the OS cache. To start with a blank profile, supply an empty | 393 // evicted from the OS cache. To start with a blank profile, supply an empty |
| 393 // string (the default). | 394 // string (the default). |
| 394 const FilePath& template_user_data() const { return template_user_data_; } | 395 const FilePath& template_user_data() const { return template_user_data_; } |
| 395 void set_template_user_data(const FilePath& template_user_data) { | 396 void set_template_user_data(const FilePath& template_user_data) { |
| 396 template_user_data_ = template_user_data; | 397 template_user_data_ = template_user_data; |
| 397 } | 398 } |
| 398 | 399 |
| 399 // Return the user data directory being used by the browser instance in | 400 // Return the user data directory being used by the browser instance in |
| 400 // UITest::SetUp(). | 401 // UITest::SetUp(). |
| 401 FilePath user_data_dir() const { return user_data_dir_; } | 402 FilePath user_data_dir() const; |
| 402 | 403 |
| 403 // Return the process id of the browser process (-1 on error). | 404 // Return the process id of the browser process (-1 on error). |
| 404 base::ProcessId browser_process_id() const { return process_id_; } | 405 base::ProcessId browser_process_id() const { return process_id_; } |
| 405 | 406 |
| 406 // Timeout accessors. | 407 // Timeout accessors. |
| 407 void set_command_execution_timeout_ms(int timeout) { | 408 void set_command_execution_timeout_ms(int timeout) { |
| 408 command_execution_timeout_ms_ = timeout; | 409 command_execution_timeout_ms_ = timeout; |
| 409 } | 410 } |
| 410 | 411 |
| 411 int action_timeout_ms() const { return action_timeout_ms_; } | 412 int action_timeout_ms() const { return action_timeout_ms_; } |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 558 std::wstring homepage_; // Homepage used for testing. | 559 std::wstring homepage_; // Homepage used for testing. |
| 559 bool wait_for_initial_loads_; // Wait for initial loads to complete | 560 bool wait_for_initial_loads_; // Wait for initial loads to complete |
| 560 // in SetUp() before running test body. | 561 // in SetUp() before running test body. |
| 561 base::TimeTicks browser_launch_time_; // Time when the browser was run. | 562 base::TimeTicks browser_launch_time_; // Time when the browser was run. |
| 562 base::TimeDelta browser_quit_time_; // How long the shutdown took. | 563 base::TimeDelta browser_quit_time_; // How long the shutdown took. |
| 563 bool dom_automation_enabled_; // This can be set to true to have the | 564 bool dom_automation_enabled_; // This can be set to true to have the |
| 564 // test run the dom automation case. | 565 // test run the dom automation case. |
| 565 FilePath template_user_data_; // See set_template_user_data(). | 566 FilePath template_user_data_; // See set_template_user_data(). |
| 566 base::ProcessHandle process_; // Handle to the first Chrome process. | 567 base::ProcessHandle process_; // Handle to the first Chrome process. |
| 567 base::ProcessId process_id_; // PID of |process_| (for debugging). | 568 base::ProcessId process_id_; // PID of |process_| (for debugging). |
| 568 FilePath user_data_dir_; // User data directory used for the test | |
| 569 static bool in_process_renderer_; // true if we're in single process mode | 569 static bool in_process_renderer_; // true if we're in single process mode |
| 570 bool show_window_; // Determines if the window is shown or | 570 bool show_window_; // Determines if the window is shown or |
| 571 // hidden. Defaults to hidden. | 571 // hidden. Defaults to hidden. |
| 572 bool clear_profile_; // If true the profile is cleared before | 572 bool clear_profile_; // If true the profile is cleared before |
| 573 // launching. Default is true. | 573 // launching. Default is true. |
| 574 bool include_testing_id_; // Should we supply the testing channel | 574 bool include_testing_id_; // Should we supply the testing channel |
| 575 // id on the command line? Default is | 575 // id on the command line? Default is |
| 576 // true. | 576 // true. |
| 577 bool enable_file_cookies_; // Enable file cookies, default is true. | 577 bool enable_file_cookies_; // Enable file cookies, default is true. |
| 578 ProfileType profile_type_; // Are we using a profile with a | 578 ProfileType profile_type_; // Are we using a profile with a |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 611 | 611 |
| 612 scoped_ptr<AutomationProxy> server_; | 612 scoped_ptr<AutomationProxy> server_; |
| 613 | 613 |
| 614 int command_execution_timeout_ms_; | 614 int command_execution_timeout_ms_; |
| 615 int action_timeout_ms_; | 615 int action_timeout_ms_; |
| 616 int action_max_timeout_ms_; | 616 int action_max_timeout_ms_; |
| 617 int sleep_timeout_ms_; | 617 int sleep_timeout_ms_; |
| 618 int terminate_timeout_ms_; | 618 int terminate_timeout_ms_; |
| 619 | 619 |
| 620 std::wstring ui_test_name_; | 620 std::wstring ui_test_name_; |
| 621 |
| 622 // We use a temporary directory for profile to avoid issues with being |
| 623 // unable to delete some files because they're in use, etc. |
| 624 scoped_ptr<ScopedTempDir> temp_profile_dir_; |
| 621 }; | 625 }; |
| 622 | 626 |
| 623 class UITest : public UITestBase, public PlatformTest { | 627 class UITest : public UITestBase, public PlatformTest { |
| 624 protected: | 628 protected: |
| 625 UITest() {} | 629 UITest() {} |
| 626 explicit UITest(MessageLoop::Type msg_loop_type) | 630 explicit UITest(MessageLoop::Type msg_loop_type) |
| 627 : UITestBase(), PlatformTest(), message_loop_(msg_loop_type) { | 631 : UITestBase(), PlatformTest(), message_loop_(msg_loop_type) { |
| 628 } | 632 } |
| 629 virtual void SetUp(); | 633 virtual void SetUp(); |
| 630 virtual void TearDown(); | 634 virtual void TearDown(); |
| 631 | 635 |
| 632 private: | 636 private: |
| 633 MessageLoop message_loop_; // Enables PostTask to main thread. | 637 MessageLoop message_loop_; // Enables PostTask to main thread. |
| 634 }; | 638 }; |
| 635 | 639 |
| 636 // These exist only to support the gTest assertion macros, and | 640 // These exist only to support the gTest assertion macros, and |
| 637 // shouldn't be used in normal program code. | 641 // shouldn't be used in normal program code. |
| 638 #ifdef UNIT_TEST | 642 #ifdef UNIT_TEST |
| 639 std::ostream& operator<<(std::ostream& out, const std::wstring& wstr); | 643 std::ostream& operator<<(std::ostream& out, const std::wstring& wstr); |
| 640 | 644 |
| 641 template<typename T> | 645 template<typename T> |
| 642 std::ostream& operator<<(std::ostream& out, const ::scoped_ptr<T>& ptr) { | 646 std::ostream& operator<<(std::ostream& out, const ::scoped_ptr<T>& ptr) { |
| 643 return out << ptr.get(); | 647 return out << ptr.get(); |
| 644 } | 648 } |
| 645 #endif // UNIT_TEST | 649 #endif // UNIT_TEST |
| 646 | 650 |
| 647 #endif // CHROME_TEST_UI_UI_TEST_H_ | 651 #endif // CHROME_TEST_UI_UI_TEST_H_ |
| OLD | NEW |