diff options
Diffstat (limited to 'chromium/content/shell/app/shell_crash_reporter_client.cc')
-rw-r--r-- | chromium/content/shell/app/shell_crash_reporter_client.cc | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/chromium/content/shell/app/shell_crash_reporter_client.cc b/chromium/content/shell/app/shell_crash_reporter_client.cc new file mode 100644 index 00000000000..4c76c176753 --- /dev/null +++ b/chromium/content/shell/app/shell_crash_reporter_client.cc @@ -0,0 +1,95 @@ +// Copyright 2013 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. + +#include "content/shell/app/shell_crash_reporter_client.h" + +#include <string> +#include <utility> + +#include "base/command_line.h" +#include "base/files/file_path.h" +#include "base/strings/utf_string_conversions.h" +#include "build/build_config.h" +#include "content/public/common/content_switches.h" +#include "content/shell/common/shell_switches.h" + +#if BUILDFLAG(IS_ANDROID) +#include "content/shell/android/shell_descriptors.h" +#endif + +namespace content { + +ShellCrashReporterClient::ShellCrashReporterClient() {} +ShellCrashReporterClient::~ShellCrashReporterClient() {} + +#if BUILDFLAG(IS_WIN) +void ShellCrashReporterClient::GetProductNameAndVersion( + const std::wstring& exe_path, + std::wstring* product_name, + std::wstring* version, + std::wstring* special_build, + std::wstring* channel_name) { + *product_name = L"content_shell"; + *version = base::ASCIIToWide(CONTENT_SHELL_VERSION); + *special_build = std::wstring(); + *channel_name = std::wstring(); +} +#endif + +#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) +void ShellCrashReporterClient::GetProductNameAndVersion( + const char** product_name, + const char** version) { + *product_name = "content_shell"; + *version = CONTENT_SHELL_VERSION; +} + +void ShellCrashReporterClient::GetProductNameAndVersion( + std::string* product_name, + std::string* version, + std::string* channel) { + *product_name = "content_shell"; + *version = CONTENT_SHELL_VERSION; + *channel = ""; +} + +base::FilePath ShellCrashReporterClient::GetReporterLogFilename() { + return base::FilePath(FILE_PATH_LITERAL("uploads.log")); +} +#endif + +#if BUILDFLAG(IS_WIN) +bool ShellCrashReporterClient::GetCrashDumpLocation(std::wstring* crash_dir) { +#else +bool ShellCrashReporterClient::GetCrashDumpLocation(base::FilePath* crash_dir) { +#endif + if (!base::CommandLine::ForCurrentProcess()->HasSwitch( + switches::kCrashDumpsDir)) + return false; + base::FilePath crash_directory = + base::CommandLine::ForCurrentProcess()->GetSwitchValuePath( + switches::kCrashDumpsDir); +#if BUILDFLAG(IS_WIN) + *crash_dir = crash_directory.value(); +#else + *crash_dir = std::move(crash_directory); +#endif + return true; +} + +#if BUILDFLAG(IS_ANDROID) +int ShellCrashReporterClient::GetAndroidMinidumpDescriptor() { + return kAndroidMinidumpDescriptor; +} +#endif + +bool ShellCrashReporterClient::EnableBreakpadForProcess( + const std::string& process_type) { + return process_type == switches::kRendererProcess || + process_type == switches::kPpapiPluginProcess || + process_type == switches::kZygoteProcess || + process_type == switches::kGpuProcess; +} + +} // namespace content |