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 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_PUBLIC_TEST_TEST_LAUNCHER_H_ 6 #define CONTENT_PUBLIC_TEST_TEST_LAUNCHER_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/compiler_specific.h" 12 13 namespace base { 14 class CommandLine; 15 class FilePath; 16 class RunLoop; 17 } 18 19 namespace content { 20 class ContentMainDelegate; 21 struct ContentMainParams; 22 23 extern const char kEmptyTestName[]; 24 extern const char kHelpFlag[]; 25 extern const char kLaunchAsBrowser[]; 26 extern const char kRunManualTestsFlag[]; 27 extern const char kSingleProcessTestsFlag[]; 28 29 // Flag that causes only the kEmptyTestName test to be run. 30 extern const char kWarmupFlag[]; 31 32 class TestLauncherDelegate { 33 public: 34 virtual int RunTestSuite(int argc, char** argv) = 0; 35 virtual bool AdjustChildProcessCommandLine( 36 base::CommandLine* command_line, 37 const base::FilePath& temp_data_dir) = 0; 38 virtual void PreRunMessageLoop(base::RunLoop* run_loop) {} 39 virtual void PostRunMessageLoop() {} 40 virtual ContentMainDelegate* CreateContentMainDelegate() = 0; 41 42 // Allows a TestLauncherDelegate to adjust the number of |default_jobs| used 43 // when --test-launcher-jobs isn't specified on the command-line. 44 virtual void AdjustDefaultParallelJobs(int* default_jobs) {} 45 46 protected: 47 virtual ~TestLauncherDelegate(); 48 }; 49 50 // Launches tests using |launcher_delegate|. |default_jobs| is number 51 // of test jobs to be run in parallel, unless overridden from the command line. 52 // Returns exit code. 53 int LaunchTests(TestLauncherDelegate* launcher_delegate, 54 int default_jobs, 55 int argc, 56 char** argv) WARN_UNUSED_RESULT; 57 58 TestLauncherDelegate* GetCurrentTestLauncherDelegate(); 59 ContentMainParams* GetContentMainParams(); 60 61 } // namespace content 62 63 #endif // CONTENT_PUBLIC_TEST_TEST_LAUNCHER_H_ 64