diff options
author | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-07 18:49:09 +0000 |
---|---|---|
committer | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-07 18:49:09 +0000 |
commit | 517617476b7231f63b2f900d9dc825db2ee4161d (patch) | |
tree | a09d1e81c9796b0859a01dfc467710724046e8ce /chrome/test/out_of_proc_test_runner.cc | |
parent | d91ddfc676314764d240a9ad0da06063bb265d76 (diff) | |
download | chromium_src-517617476b7231f63b2f900d9dc825db2ee4161d.zip chromium_src-517617476b7231f63b2f900d9dc825db2ee4161d.tar.gz chromium_src-517617476b7231f63b2f900d9dc825db2ee4161d.tar.bz2 |
Make the windows_version.h functions threadsafe by using a singleton. Add accessors to the singleton for more values that various code wants, then convert almost everyone using OSVERSIONINFO or SYSTEM_INFO structs to calling these accessors. Declare an AtExitManager in the out-of-process test runner since it didn't have one and that breaks singleton-using code in the test executable (as opposed to in chrome.dll).
A few other minor cleanups along the way (binding of "*", shorter code, etc.). Because I ran into problems with it while modifying gcapi.cc, I cleaned up our usage of strsafe.h a bit, so that files that don't need it don't include it and files that do use STRSAFE_NO_DEPRECATE instead of a modified #include order.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6713107
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80819 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test/out_of_proc_test_runner.cc')
-rw-r--r-- | chrome/test/out_of_proc_test_runner.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/chrome/test/out_of_proc_test_runner.cc b/chrome/test/out_of_proc_test_runner.cc index 6e4bc3b..5d23954 100644 --- a/chrome/test/out_of_proc_test_runner.cc +++ b/chrome/test/out_of_proc_test_runner.cc @@ -579,6 +579,18 @@ int main(int argc, char** argv) { return ChromeTestSuite(argc, argv).Run(); } + // The exit manager is in charge of calling the dtors of singleton objects. + // On Windows, the call to ChromeMain() below will construct one for the + // chrome.dll module, but that global is not shared with this module, so if + // chrome.dll calls back out to this module and the called code uses a + // singleton, we'll need this. On other platforms, ChromeMain() isn't called + // at all below, so this is the lone exit manager for any code after this + // point. + // NOTE: We can't init this atop main() because ChromeTestSuite, as a subclass + // of TestSuite, creates one. So we wait until after the Run() call above to + // create the manager for the code path that _doesn't_ use ChromeTestSuite. + base::AtExitManager exit_manager; + #if defined(OS_WIN) if (command_line->HasSwitch(switches::kProcessType)) { // This is a child process, call ChromeMain. |