diff options
author | jcivelli@chromium.org <jcivelli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-27 01:12:24 +0000 |
---|---|---|
committer | jcivelli@chromium.org <jcivelli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-27 01:12:24 +0000 |
commit | 97c652b98f92e060e3ed3a11d2c808d85a7e1c1c (patch) | |
tree | 869d2ba677905ea0cba67f4ee311d15846f97790 /testing/multiprocess_func_list.cc | |
parent | 31ad4a24b884526a51f81efa556c019dcc27657d (diff) | |
download | chromium_src-97c652b98f92e060e3ed3a11d2c808d85a7e1c1c.zip chromium_src-97c652b98f92e060e3ed3a11d2c808d85a7e1c1c.tar.gz chromium_src-97c652b98f92e060e3ed3a11d2c808d85a7e1c1c.tar.bz2 |
Make GlobalDescriptors::MaybeGet return -1 when the key is not found.
BUG=None
TEST=Unit tests should still pass.
Review URL: https://chromiumcodereview.appspot.com/10387218
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@144350 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'testing/multiprocess_func_list.cc')
-rw-r--r-- | testing/multiprocess_func_list.cc | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/testing/multiprocess_func_list.cc b/testing/multiprocess_func_list.cc index 1e19704..49ae07d 100644 --- a/testing/multiprocess_func_list.cc +++ b/testing/multiprocess_func_list.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2008 The Chromium Authors. All rights reserved. +// 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. @@ -12,29 +12,43 @@ namespace multi_process_function_list { namespace { -typedef std::map<std::string, ChildFunctionPtr> MultiProcessTestMap; +struct ProcessFunctions { + ProcessFunctions() : main(NULL), setup(NULL) {} + ProcessFunctions(TestMainFunctionPtr main, SetupFunctionPtr setup) + : main(main), + setup(setup) { + } + TestMainFunctionPtr main; + SetupFunctionPtr setup; +}; + +typedef std::map<std::string, ProcessFunctions> MultiProcessTestMap; // Retrieve a reference to the global 'func name' -> func ptr map. -MultiProcessTestMap &GetMultiprocessFuncMap() { +MultiProcessTestMap& GetMultiprocessFuncMap() { static MultiProcessTestMap test_name_to_func_ptr_map; return test_name_to_func_ptr_map; } } // namespace -AppendMultiProcessTest::AppendMultiProcessTest(std::string test_name, - ChildFunctionPtr func_ptr) { - GetMultiprocessFuncMap()[test_name] = func_ptr; +AppendMultiProcessTest::AppendMultiProcessTest( + std::string test_name, + TestMainFunctionPtr main_func_ptr, + SetupFunctionPtr setup_func_ptr) { + GetMultiprocessFuncMap()[test_name] = + ProcessFunctions(main_func_ptr, setup_func_ptr); } int InvokeChildProcessTest(std::string test_name) { - MultiProcessTestMap &func_lookup_table = GetMultiprocessFuncMap(); + MultiProcessTestMap& func_lookup_table = GetMultiprocessFuncMap(); MultiProcessTestMap::iterator it = func_lookup_table.find(test_name); if (it != func_lookup_table.end()) { - ChildFunctionPtr func = it->second; - if (func) { - return (*func)(); - } + const ProcessFunctions& process_functions = it->second; + if (process_functions.setup) + (*process_functions.setup)(); + if (process_functions.main) + return (*process_functions.main)(); } return -1; |