summaryrefslogtreecommitdiffstats
path: root/chrome/app/chrome_breakpad_client.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/app/chrome_breakpad_client.cc')
-rw-r--r--chrome/app/chrome_breakpad_client.cc41
1 files changed, 41 insertions, 0 deletions
diff --git a/chrome/app/chrome_breakpad_client.cc b/chrome/app/chrome_breakpad_client.cc
index 81c25ef..fa759a0 100644
--- a/chrome/app/chrome_breakpad_client.cc
+++ b/chrome/app/chrome_breakpad_client.cc
@@ -4,11 +4,19 @@
#include "chrome/app/chrome_breakpad_client.h"
+#include "base/command_line.h"
#include "base/environment.h"
#include "base/files/file_path.h"
+#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
#include "base/path_service.h"
+#include "base/strings/utf_string_conversions.h"
#include "chrome/common/chrome_paths.h"
+#include "chrome/common/chrome_switches.h"
+
+#if defined(OS_WIN)
+#include "base/file_version_info.h"
+#endif
#if defined(OS_POSIX)
#include "chrome/common/dump_without_crashing.h"
@@ -34,6 +42,39 @@ bool ChromeBreakpadClient::GetAlternativeCrashDumpLocation(
return false;
}
+
+void ChromeBreakpadClient::GetProductNameAndVersion(
+ const base::FilePath& exe_path,
+ base::string16* product_name,
+ base::string16* version,
+ base::string16* special_build) {
+ DCHECK(product_name);
+ DCHECK(version);
+ DCHECK(special_build);
+
+ scoped_ptr<FileVersionInfo> version_info(
+ FileVersionInfo::CreateFileVersionInfo(exe_path));
+
+ if (version_info.get()) {
+ // Get the information from the file.
+ *version = version_info->product_version();
+ if (!version_info->is_official_build())
+ version->append(base::ASCIIToUTF16("-devel"));
+
+ const CommandLine& command = *CommandLine::ForCurrentProcess();
+ if (command.HasSwitch(switches::kChromeFrame)) {
+ *product_name = base::ASCIIToUTF16("ChromeFrame");
+ } else {
+ *product_name = version_info->product_short_name();
+ }
+
+ *special_build = version_info->special_build();
+ } else {
+ // No version info found. Make up the values.
+ *product_name = base::ASCIIToUTF16("Chrome");
+ *version = base::ASCIIToUTF16("0.0.0.0-devel");
+ }
+}
#endif
bool ChromeBreakpadClient::GetCrashDumpLocation(base::FilePath* crash_dir) {