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

Side by Side Diff: chrome/test/ui/ui_test.h

Issue 4202004: Add named testing interface (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 10 years, 1 month 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
OLDNEW
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 #pragma once 7 #pragma once
8 8
9 // This file provides a common base for running UI unit tests, which operate 9 // This file provides a common base for running UI unit tests, which operate
10 // the entire browser application in a separate process for holistic 10 // the entire browser application in a separate process for holistic
(...skipping 20 matching lines...) Expand all
31 // AutomationProxy here, but many files that #include this one don't 31 // AutomationProxy here, but many files that #include this one don't
32 // themselves #include automation_proxy.h. 32 // themselves #include automation_proxy.h.
33 #include "chrome/test/automation/automation_proxy.h" 33 #include "chrome/test/automation/automation_proxy.h"
34 #include "testing/platform_test.h" 34 #include "testing/platform_test.h"
35 35
36 class AutomationProxy; 36 class AutomationProxy;
37 class BrowserProxy; 37 class BrowserProxy;
38 class DictionaryValue; 38 class DictionaryValue;
39 class FilePath; 39 class FilePath;
40 class GURL; 40 class GURL;
41 class ProxyLauncher;
41 class ScopedTempDir; 42 class ScopedTempDir;
42 class TabProxy; 43 class TabProxy;
43 44
44 // Base class for UI Tests. This implements the core of the functions. 45 // Base class for UI Tests. This implements the core of the functions.
45 // This base class decouples all automation functionality from testing 46 // This base class decouples all automation functionality from testing
46 // infrastructure, for use without gtest. 47 // infrastructure, for use without gtest.
47 // If using gtest, you probably want to inherit from UITest (declared below) 48 // If using gtest, you probably want to inherit from UITest (declared below)
48 // rather than UITestBase. 49 // rather than UITestBase.
49 class UITestBase { 50 class UITestBase {
50 protected: 51 protected:
(...skipping 10 matching lines...) Expand all
61 // Starts the browser using the arguments in launch_arguments_, and 62 // Starts the browser using the arguments in launch_arguments_, and
62 // sets up member variables. 63 // sets up member variables.
63 virtual void SetUp(); 64 virtual void SetUp();
64 65
65 // Closes the browser window. 66 // Closes the browser window.
66 virtual void TearDown(); 67 virtual void TearDown();
67 68
68 public: 69 public:
69 // ********* Utility functions ********* 70 // ********* Utility functions *********
70 71
71 // Launches the browser and IPC testing server. 72 // Launches the browser and IPC testing connection in server mode.
72 void LaunchBrowserAndServer(); 73 void LaunchBrowserAndServer();
73 74
75 // Launches the IPC testing connection in client mode,
76 // which then attempts to connect to a browser.
77 void ConnectToRunningBrowser();
78
74 // Only for pyauto. 79 // Only for pyauto.
75 void set_command_execution_timeout_ms(int timeout); 80 void set_command_execution_timeout_ms(int timeout);
76 81
77 // Overridable so that derived classes can provide their own AutomationProxy. 82 // Overridable so that derived classes can provide their own ProxyLauncher.
78 virtual AutomationProxy* CreateAutomationProxy(int execution_timeout); 83 virtual ProxyLauncher* CreateProxyLauncher();
79 84
80 // Closes the browser and IPC testing server. 85 // Closes the browser and IPC testing server.
81 void CloseBrowserAndServer(); 86 void CloseBrowserAndServer();
82 87
83 // Launches the browser with the given command line. 88 // Launches the browser with the given command line.
84 // TODO(phajdan.jr): Make LaunchBrowser private. Tests should use 89 // TODO(phajdan.jr): Make LaunchBrowser private. Tests should use
85 // LaunchAnotherBrowserBlockUntilClosed. 90 // LaunchAnotherBrowserBlockUntilClosed.
86 void LaunchBrowser(const CommandLine& cmdline, bool clear_profile); 91 void LaunchBrowser(const CommandLine& cmdline, bool clear_profile);
87 92
88 #if !defined(OS_MACOSX) 93 #if !defined(OS_MACOSX)
89 // This function is deliberately not defined on the Mac because re-using an 94 // This function is deliberately not defined on the Mac because re-using an
90 // existing browser process when launching from the command line isn't a 95 // existing browser process when launching from the command line isn't a
91 // concept that we support on the Mac; AppleEvents are the Mac solution for 96 // concept that we support on the Mac; AppleEvents are the Mac solution for
92 // the same need. Any test based on this function doesn't apply to the Mac. 97 // the same need. Any test based on this function doesn't apply to the Mac.
93 98
94 // Launches an another browser process and waits for it to finish. Returns 99 // Launches an another browser process and waits for it to finish. Returns
95 // true on success. 100 // true on success.
96 bool LaunchAnotherBrowserBlockUntilClosed(const CommandLine& cmdline); 101 bool LaunchAnotherBrowserBlockUntilClosed(const CommandLine& cmdline);
97 #endif 102 #endif
98 103
99 // Exits out browser instance. 104 // Exits out browser instance.
100 void QuitBrowser(); 105 void QuitBrowser();
101 106
102 // Terminates the browser, simulates end of session. 107 // Terminates the browser, simulates end of session.
103 void TerminateBrowser(); 108 void TerminateBrowser();
104 109
105 // Tells the browser to navigato to the givne URL in the active tab 110 // Tells the browser to navigate to the given URL in the active tab
106 // of the first app window. 111 // of the first app window.
107 // Does not wait for the navigation to complete to return. 112 // Does not wait for the navigation to complete to return.
108 void NavigateToURLAsync(const GURL& url); 113 void NavigateToURLAsync(const GURL& url);
109 114
110 // Tells the browser to navigate to the given URL in the active tab 115 // Tells the browser to navigate to the given URL in the active tab
111 // of the first app window. 116 // of the first app window.
112 // This method doesn't return until the navigation is complete. 117 // This method doesn't return until the navigation is complete.
113 void NavigateToURL(const GURL& url); 118 void NavigateToURL(const GURL& url);
114 119
115 // Same as above, except in the given tab and window. 120 // Same as above, except in the given tab and window.
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 // Use Chromium binaries from the given directory. 359 // Use Chromium binaries from the given directory.
355 void SetBrowserDirectory(const FilePath& dir); 360 void SetBrowserDirectory(const FilePath& dir);
356 361
357 private: 362 private:
358 // Check that no processes related to Chrome exist, displaying 363 // Check that no processes related to Chrome exist, displaying
359 // the given message if any do. 364 // the given message if any do.
360 void AssertAppNotRunning(const std::wstring& error_message); 365 void AssertAppNotRunning(const std::wstring& error_message);
361 366
362 protected: 367 protected:
363 AutomationProxy* automation() { 368 AutomationProxy* automation() {
364 EXPECT_TRUE(server_.get()); 369 EXPECT_TRUE(automation_proxy_.get());
365 return server_.get(); 370 return automation_proxy_.get();
366 } 371 }
367 372
368 virtual bool ShouldFilterInet() { 373 virtual bool ShouldFilterInet() {
369 return true; 374 return true;
370 } 375 }
371 376
372 // Wait a certain amount of time for all the app processes to exit, 377 // Wait a certain amount of time for all the app processes to exit,
373 // forcibly killing them if they haven't exited by then. 378 // forcibly killing them if they haven't exited by then.
374 // It has the side-effect of killing every browser window opened in your 379 // It has the side-effect of killing every browser window opened in your
375 // session, even those unrelated in the test. 380 // session, even those unrelated in the test.
(...skipping 29 matching lines...) Expand all
405 base::ProcessId process_id_; // PID of |process_| (for debugging). 410 base::ProcessId process_id_; // PID of |process_| (for debugging).
406 static bool in_process_renderer_; // true if we're in single process mode 411 static bool in_process_renderer_; // true if we're in single process mode
407 bool show_window_; // Determines if the window is shown or 412 bool show_window_; // Determines if the window is shown or
408 // hidden. Defaults to hidden. 413 // hidden. Defaults to hidden.
409 bool clear_profile_; // If true the profile is cleared before 414 bool clear_profile_; // If true the profile is cleared before
410 // launching. Default is true. 415 // launching. Default is true.
411 bool include_testing_id_; // Should we supply the testing channel 416 bool include_testing_id_; // Should we supply the testing channel
412 // id on the command line? Default is 417 // id on the command line? Default is
413 // true. 418 // true.
414 bool enable_file_cookies_; // Enable file cookies, default is true. 419 bool enable_file_cookies_; // Enable file cookies, default is true.
420 scoped_ptr<ProxyLauncher> launcher_; // Launches browser and AutomationProxy.
415 ProfileType profile_type_; // Are we using a profile with a 421 ProfileType profile_type_; // Are we using a profile with a
416 // complex theme? 422 // complex theme?
417 FilePath websocket_pid_file_; // PID file for websocket server. 423 FilePath websocket_pid_file_; // PID file for websocket server.
418 ShutdownType shutdown_type_; // The method for shutting down 424 ShutdownType shutdown_type_; // The method for shutting down
419 // the browser. Used in ShutdownTest. 425 // the browser. Used in ShutdownTest.
420 426
421 private: 427 private:
428 void WaitForBrowserLaunch();
429
422 bool LaunchBrowserHelper(const CommandLine& arguments, 430 bool LaunchBrowserHelper(const CommandLine& arguments,
423 bool wait, 431 bool wait,
424 base::ProcessHandle* process); 432 base::ProcessHandle* process);
425 433
426 // We want to have a current history database when we start the browser so 434 // We want to have a current history database when we start the browser so
427 // things like the NTP will have thumbnails. This method updates the dates 435 // things like the NTP will have thumbnails. This method updates the dates
428 // in the history to be more recent. 436 // in the history to be more recent.
429 void UpdateHistoryDates(); 437 void UpdateHistoryDates();
430 438
431 base::Time test_start_time_; // Time the test was started 439 base::Time test_start_time_; // Time the test was started
432 // (so we can check for new crash dumps) 440 // (so we can check for new crash dumps)
433 static bool no_sandbox_; 441 static bool no_sandbox_;
434 static bool safe_plugins_; 442 static bool safe_plugins_;
435 static bool full_memory_dump_; // If true, write full memory dump 443 static bool full_memory_dump_; // If true, write full memory dump
436 // during crash. 444 // during crash.
437 static bool show_error_dialogs_; // If true, a user is paying attention 445 static bool show_error_dialogs_; // If true, a user is paying attention
438 // to the test, so show error dialogs. 446 // to the test, so show error dialogs.
439 static bool dump_histograms_on_exit_; // Include histograms in log on exit. 447 static bool dump_histograms_on_exit_; // Include histograms in log on exit.
440 static bool enable_dcheck_; // Enable dchecks in release mode. 448 static bool enable_dcheck_; // Enable dchecks in release mode.
441 static bool silent_dump_on_dcheck_; // Dump process memory on dcheck without 449 static bool silent_dump_on_dcheck_; // Dump process memory on dcheck without
442 // crashing. 450 // crashing.
443 static bool disable_breakpad_; // Disable breakpad on the browser. 451 static bool disable_breakpad_; // Disable breakpad on the browser.
444 static int timeout_ms_; // Timeout in milliseconds to wait 452 static int timeout_ms_; // Timeout in milliseconds to wait
445 // for an test to finish. 453 // for an test to finish.
446 static std::string js_flags_; // Flags passed to the JS engine. 454 static std::string js_flags_; // Flags passed to the JS engine.
447 static std::string log_level_; // Logging level. 455 static std::string log_level_; // Logging level.
448 456
449 scoped_ptr<AutomationProxy> server_; 457 scoped_ptr<AutomationProxy> automation_proxy_;
450 458
451 std::string ui_test_name_; 459 std::string ui_test_name_;
452 460
453 // We use a temporary directory for profile to avoid issues with being 461 // We use a temporary directory for profile to avoid issues with being
454 // unable to delete some files because they're in use, etc. 462 // unable to delete some files because they're in use, etc.
455 scoped_ptr<ScopedTempDir> temp_profile_dir_; 463 scoped_ptr<ScopedTempDir> temp_profile_dir_;
456 }; 464 };
457 465
458 class UITest : public UITestBase, public PlatformTest { 466 class UITest : public UITestBase, public PlatformTest {
459 protected: 467 protected:
460 UITest() {} 468 UITest() {}
461 explicit UITest(MessageLoop::Type msg_loop_type) 469 explicit UITest(MessageLoop::Type msg_loop_type)
462 : UITestBase(), PlatformTest(), message_loop_(msg_loop_type) { 470 : UITestBase(), PlatformTest(), message_loop_(msg_loop_type) {
463 } 471 }
464 virtual void SetUp(); 472 virtual void SetUp();
465 virtual void TearDown(); 473 virtual void TearDown();
466 474
467 virtual AutomationProxy* CreateAutomationProxy(int execution_timeout); 475 virtual ProxyLauncher* CreateProxyLauncher();
468 476
469 // Synchronously launches local http server normally used to run LayoutTests. 477 // Synchronously launches local http server normally used to run LayoutTests.
470 void StartHttpServer(const FilePath& root_directory); 478 void StartHttpServer(const FilePath& root_directory);
471 479
472 // Launches local http server on the specified port. 480 // Launches local http server on the specified port.
473 void StartHttpServerWithPort(const FilePath& root_directory, int port); 481 void StartHttpServerWithPort(const FilePath& root_directory, int port);
474 482
475 void StopHttpServer(); 483 void StopHttpServer();
476 484
477 // Count the number of active browser processes launched by this test. 485 // Count the number of active browser processes launched by this test.
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 #ifdef UNIT_TEST 583 #ifdef UNIT_TEST
576 std::ostream& operator<<(std::ostream& out, const std::wstring& wstr); 584 std::ostream& operator<<(std::ostream& out, const std::wstring& wstr);
577 585
578 template<typename T> 586 template<typename T>
579 std::ostream& operator<<(std::ostream& out, const ::scoped_ptr<T>& ptr) { 587 std::ostream& operator<<(std::ostream& out, const ::scoped_ptr<T>& ptr) {
580 return out << ptr.get(); 588 return out << ptr.get();
581 } 589 }
582 #endif // UNIT_TEST 590 #endif // UNIT_TEST
583 591
584 #endif // CHROME_TEST_UI_UI_TEST_H_ 592 #endif // CHROME_TEST_UI_UI_TEST_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698