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/browser/bug_report_util.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/browser/bug_report_util.cc')
-rw-r--r-- | chrome/browser/bug_report_util.cc | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/chrome/browser/bug_report_util.cc b/chrome/browser/bug_report_util.cc index 8ba0e2c..ebb8e24 100644 --- a/chrome/browser/bug_report_util.cc +++ b/chrome/browser/bug_report_util.cc @@ -13,6 +13,7 @@ #include "base/memory/singleton.h" #include "base/string_util.h" #include "base/utf_string_conversions.h" +#include "base/win/windows_version.h" #include "chrome/browser/browser_process_impl.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/safe_browsing/safe_browsing_util.h" @@ -135,19 +136,19 @@ void BugReportUtil::PostCleanup::OnURLFetchComplete( // Process the error for debug output if (response_code == kHttpPostFailNoConnection) { - error_stream << "No connection to server."; + error_stream << "No connection to server."; } else if ((response_code > kHttpPostFailClientError) && - (response_code < kHttpPostFailServerError)) { - error_stream << "Client error: HTTP response code " << response_code; + (response_code < kHttpPostFailServerError)) { + error_stream << "Client error: HTTP response code " << response_code; } else if (response_code > kHttpPostFailServerError) { - error_stream << "Server error: HTTP response code " << response_code; + error_stream << "Server error: HTTP response code " << response_code; } else { - error_stream << "Unknown error: HTTP response code " << response_code; + error_stream << "Unknown error: HTTP response code " << response_code; } } - LOG(WARNING) << "FEEDBACK: Submission to feedback server (" << url << - ") status: " << error_stream.str() << std::endl; + LOG(WARNING) << "FEEDBACK: Submission to feedback server (" << url + << ") status: " << error_stream.str(); // Delete the URLFetcher. delete source; @@ -156,21 +157,15 @@ void BugReportUtil::PostCleanup::OnURLFetchComplete( } // static -void BugReportUtil::SetOSVersion(std::string *os_version) { +void BugReportUtil::SetOSVersion(std::string* os_version) { #if defined(OS_WIN) - OSVERSIONINFO osvi; - ZeroMemory(&osvi, sizeof(OSVERSIONINFO)); - osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - - if (GetVersionEx(&osvi)) { - *os_version = StringPrintf("%d.%d.%d %S", - osvi.dwMajorVersion, - osvi.dwMinorVersion, - osvi.dwBuildNumber, - osvi.szCSDVersion); - } else { - *os_version = "unknown"; - } + base::win::OSInfo* os_info = base::win::OSInfo::GetInstance(); + base::win::OSInfo::VersionNumber version_number = os_info->version_number(); + *os_version = StringPrintf("%d.%d.%d", version_number.major, + version_number.minor, version_number.build); + int service_pack = os_info->service_pack().major; + if (service_pack > 0) + os_version->append(StringPrintf("Service Pack %d", service_pack)); #elif defined(OS_MACOSX) int32 major; int32 minor; |