Index: chrome/test/automation/proxy_launcher.h |
=================================================================== |
--- chrome/test/automation/proxy_launcher.h (revision 261647) |
+++ chrome/test/automation/proxy_launcher.h (working copy) |
@@ -1,252 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef CHROME_TEST_AUTOMATION_PROXY_LAUNCHER_H_ |
-#define CHROME_TEST_AUTOMATION_PROXY_LAUNCHER_H_ |
- |
-#include <string> |
- |
-#include "base/basictypes.h" |
-#include "base/callback.h" |
-#include "base/command_line.h" |
-#include "base/compiler_specific.h" |
-#include "base/files/scoped_temp_dir.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/process/process.h" |
-#include "base/time/time.h" |
- |
-class AutomationProxy; |
- |
-// Base class for all ProxyLauncher implementations. Contains functionality |
-// fo launching, terminating, and connecting tests to browser processes. This |
-// class determines which AutomationProxy implementation is used by a test. |
-// Command line arguments passed to the browser are set in this class. |
-// |
-// Subclass from this class to use a different AutomationProxy |
-// implementation or to override browser launching behavior. |
-class ProxyLauncher { |
- public: |
- // Default ID for named testing interface. |
- static const char kDefaultInterfaceId[]; |
- |
- // Different ways to quit the browser. |
- enum ShutdownType { |
- WINDOW_CLOSE, |
- USER_QUIT, |
- SESSION_ENDING, |
- }; |
- |
- // POD containing state variables that determine how to launch browser. |
- struct LaunchState { |
- // If true the profile is cleared before launching. |
- bool clear_profile; |
- |
- // If set, the profiles in this path are copied |
- // into the user data directory for the test. |
- base::FilePath template_user_data; |
- |
- // Called just before starting the browser to allow any setup of the |
- // profile for the run time environment. |
- base::Closure setup_profile_callback; |
- |
- // Command line to launch the browser. |
- base::CommandLine command; |
- |
- // Should we supply the testing channel id on the command line? |
- bool include_testing_id; |
- |
- // If true, the window is shown. Otherwise it is hidden. |
- bool show_window; |
- }; |
- |
- ProxyLauncher(); |
- |
- virtual ~ProxyLauncher(); |
- |
- // Launches the browser if needed and establishes a connection with it. |
- // Returns true on success. |
- virtual bool InitializeConnection( |
- const LaunchState& state, |
- bool wait_for_initial_loads) WARN_UNUSED_RESULT = 0; |
- |
- // Shuts down the browser if needed and destroys any |
- // connections established by InitalizeConnection. |
- virtual void TerminateConnection() = 0; |
- |
- // Launches the browser and IPC testing connection in server mode. |
- // Returns true on success. |
- bool LaunchBrowserAndServer(const LaunchState& state, |
- bool wait_for_initial_loads) WARN_UNUSED_RESULT; |
- |
- // Launches the IPC testing connection in client mode, |
- // which then attempts to connect to a browser. |
- // Returns true on success. |
- bool ConnectToRunningBrowser(bool wait_for_initial_loads) WARN_UNUSED_RESULT; |
- |
- // Paired with LaunchBrowserAndServer(). |
- // Closes the browser and IPC testing server. |
- void CloseBrowserAndServer(); |
- |
- // Launches the browser with the given command line. Returns true on success. |
- // TODO(phajdan.jr): Make LaunchBrowser private. |
- bool LaunchBrowser(const LaunchState& state) WARN_UNUSED_RESULT; |
- |
- // Exits out of browser instance. |
- void QuitBrowser(); |
- |
- // Terminates the browser, simulates end of session. |
- void TerminateBrowser(); |
- |
- // Check that no processes related to Chrome exist, displaying |
- // the given message if any do. |
- void AssertAppNotRunning(const std::string& error_message); |
- |
- // Wait for the browser process to shut down on its own (i.e. as a result of |
- // some action that your test has taken). If it has exited within |timeout|, |
- // puts the exit code in |exit_code| and returns true. |
- bool WaitForBrowserProcessToQuit(base::TimeDelta timeout, int* exit_code); |
- |
- AutomationProxy* automation() const; |
- |
- // Return the user data directory being used by the browser instance. |
- base::FilePath user_data_dir() const; |
- |
- // Get the handle of browser process connected to the automation. This |
- // function only returns a reference to the handle so the caller does not |
- // own the handle returned. |
- base::ProcessHandle process() const; |
- |
- // Return the process id of the browser process (-1 on error). |
- base::ProcessId process_id() const; |
- |
- // Return the time when the browser was run. |
- base::TimeTicks browser_launch_time() const; |
- |
- // Return how long the shutdown took. |
- base::TimeDelta browser_quit_time() const; |
- |
- // Sets the shutdown type, which defaults to WINDOW_CLOSE. |
- void set_shutdown_type(ShutdownType value) { |
- shutdown_type_ = value; |
- } |
- |
- protected: |
- // Creates an automation proxy. |
- virtual AutomationProxy* CreateAutomationProxy( |
- base::TimeDelta execution_timeout) = 0; |
- |
- // Returns the automation proxy's channel with any prefixes prepended, |
- // for passing as a command line parameter over to the browser. |
- virtual std::string PrefixedChannelID() const = 0; |
- |
- // Paired with ConnectToRunningBrowser(). |
- // Disconnects the testing IPC from the browser. |
- void DisconnectFromRunningBrowser(); |
- |
- private: |
- bool WaitForBrowserLaunch(bool wait_for_initial_loads) WARN_UNUSED_RESULT; |
- |
- // Prepare command line that will be used to launch the child browser process. |
- void PrepareTestCommandline(base::CommandLine* command_line, |
- bool include_testing_id); |
- |
- bool LaunchBrowserHelper(const LaunchState& state, |
- bool main_launch, |
- bool wait, |
- base::ProcessHandle* process) WARN_UNUSED_RESULT; |
- |
- scoped_ptr<AutomationProxy> automation_proxy_; |
- |
- // We use a temporary directory for profile to avoid issues with being |
- // unable to delete some files because they're in use, etc. |
- base::ScopedTempDir temp_profile_dir_; |
- |
- // Handle to the first Chrome process. |
- base::ProcessHandle process_; |
- |
- // PID of |process_| (for debugging). |
- base::ProcessId process_id_; |
- |
- // Time when the browser was run. |
- base::TimeTicks browser_launch_time_; |
- |
- // How long the shutdown took. |
- base::TimeDelta browser_quit_time_; |
- |
- // The method for shutting down the browser. Used in ShutdownTest. |
- ShutdownType shutdown_type_; |
- |
- // If true, runs the renderer outside the sandbox. |
- bool no_sandbox_; |
- |
- // If true, write full memory dump during crash. |
- bool full_memory_dump_; |
- |
- // If true, a user is paying attention to the test, so show error dialogs. |
- bool show_error_dialogs_; |
- |
- // Dump process memory on dcheck without crashing. |
- bool silent_dump_on_dcheck_; |
- |
- // Disable breakpad on the browser. |
- bool disable_breakpad_; |
- |
- // Flags passed to the JS engine. |
- std::string js_flags_; |
- |
- // Logging level. |
- std::string log_level_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ProxyLauncher); |
-}; |
- |
-// Uses an automation proxy that communicates over a named socket. |
-// This is used if you want to connect an AutomationProxy |
-// to a browser process that is already running. |
-// The channel id of the proxy is a constant specified by kInterfacePath. |
-class NamedProxyLauncher : public ProxyLauncher { |
- public: |
- // If launch_browser is true, launches Chrome with named interface enabled. |
- // Otherwise, there should be an existing instance the proxy can connect to. |
- NamedProxyLauncher(const std::string& channel_id, |
- bool launch_browser, bool disconnect_on_failure); |
- |
- virtual AutomationProxy* CreateAutomationProxy( |
- base::TimeDelta execution_timeout); |
- virtual bool InitializeConnection( |
- const LaunchState& state, |
- bool wait_for_initial_loads) OVERRIDE WARN_UNUSED_RESULT; |
- virtual void TerminateConnection(); |
- virtual std::string PrefixedChannelID() const; |
- |
- protected: |
- std::string channel_id_; // Channel id of automation proxy. |
- bool launch_browser_; // True if we should launch the browser too. |
- bool disconnect_on_failure_; // True if we disconnect on IPC channel failure. |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(NamedProxyLauncher); |
-}; |
- |
-// Uses an automation proxy that communicates over an anonymous socket. |
-class AnonymousProxyLauncher : public ProxyLauncher { |
- public: |
- explicit AnonymousProxyLauncher(bool disconnect_on_failure); |
- virtual AutomationProxy* CreateAutomationProxy( |
- base::TimeDelta execution_timeout); |
- virtual bool InitializeConnection( |
- const LaunchState& state, |
- bool wait_for_initial_loads) OVERRIDE WARN_UNUSED_RESULT; |
- virtual void TerminateConnection(); |
- virtual std::string PrefixedChannelID() const; |
- |
- protected: |
- std::string channel_id_; // Channel id of automation proxy. |
- bool disconnect_on_failure_; // True if we disconnect on IPC channel failure. |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(AnonymousProxyLauncher); |
-}; |
- |
-#endif // CHROME_TEST_AUTOMATION_PROXY_LAUNCHER_H_ |