Chromium Code Reviews| Index: testing/multiprocess_func_list.h |
| diff --git a/testing/multiprocess_func_list.h b/testing/multiprocess_func_list.h |
| index 6ba84954feec0ef31ba6d767e062ae92c4bb2f5f..53af12a79720317c0a8aba0d176a08a4f5206c66 100644 |
| --- a/testing/multiprocess_func_list.h |
| +++ b/testing/multiprocess_func_list.h |
| @@ -29,13 +29,20 @@ |
| namespace multi_process_function_list { |
| // Type for child process main functions. |
| -typedef int (*ChildFunctionPtr)(); |
| +typedef int (*TestMainFunctionPtr)(); |
| + |
| +// Type for child setup functions. |
| +typedef void (*SetupFunctionPtr)(); |
| // Helper class to append a test function to the global mapping. |
| // Used by the MULTIPROCESS_TEST_MAIN macro. |
| class AppendMultiProcessTest { |
| public: |
| - AppendMultiProcessTest(std::string test_name, ChildFunctionPtr func_ptr); |
| + // |main_func_ptr| is the main function that is run in the child process. |
| + // |setup_func_ptr| is a function run when the global mapping is added. |
| + AppendMultiProcessTest(std::string test_name, |
| + TestMainFunctionPtr main_func_ptr, |
| + SetupFunctionPtr setup_func_ptr); |
| }; |
| // Invoke the main function of a test previously registered with |
| @@ -45,10 +52,15 @@ int InvokeChildProcessTest(std::string test_name); |
| // This macro creates a global MultiProcessTest::AppendMultiProcessTest object |
| // whose constructor does the work of adding the global mapping. |
| #define MULTIPROCESS_TEST_MAIN(test_main) \ |
| + MULTIPROCESS_TEST_MAIN_WITH_SETUP(test_main, NULL) |
| + |
| +// Same as above but lets callers specify a setup method that is run when the |
| +// global mapping is added. |test_setup| is a SetupFunctionPtr. |
|
jeremy
2012/06/24 13:49:37
* when the global mapping is added -> in the child
Jay Civelli
2012/06/25 17:49:56
Done.
|
| +#define MULTIPROCESS_TEST_MAIN_WITH_SETUP(test_main, test_setup) \ |
| int test_main(); \ |
| namespace { \ |
| multi_process_function_list::AppendMultiProcessTest \ |
| - AddMultiProcessTest##_##test_main(#test_main, (test_main)); \ |
| + AddMultiProcessTest##_##test_main(#test_main, (test_main), (test_setup)); \ |
| } \ |
| int test_main() |