1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "content/shell/app/shell_crash_reporter_client.h"
6
7#include "base/command_line.h"
8#include "base/files/file_path.h"
9#include "base/strings/string16.h"
10#include "base/strings/utf_string_conversions.h"
11#include "content/public/common/content_switches.h"
12#include "content/shell/common/shell_switches.h"
13
14#if defined(OS_ANDROID)
15#include "content/shell/android/shell_descriptors.h"
16#endif
17
18namespace content {
19
20ShellCrashReporterClient::ShellCrashReporterClient() {}
21ShellCrashReporterClient::~ShellCrashReporterClient() {}
22
23#if defined(OS_WIN)
24void ShellCrashReporterClient::GetProductNameAndVersion(
25    const base::FilePath& exe_path,
26    base::string16* product_name,
27    base::string16* version,
28    base::string16* special_build,
29    base::string16* channel_name) {
30  *product_name = base::ASCIIToUTF16("content_shell");
31  *version = base::ASCIIToUTF16(CONTENT_SHELL_VERSION);
32  *special_build = base::string16();
33  *channel_name = base::string16();
34}
35#endif
36
37#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_IOS)
38void ShellCrashReporterClient::GetProductNameAndVersion(
39    std::string* product_name,
40    std::string* version) {
41  *product_name = "content_shell";
42  *version = CONTENT_SHELL_VERSION;
43}
44
45base::FilePath ShellCrashReporterClient::GetReporterLogFilename() {
46  return base::FilePath(FILE_PATH_LITERAL("uploads.log"));
47}
48#endif
49
50bool ShellCrashReporterClient::GetCrashDumpLocation(base::FilePath* crash_dir) {
51  if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kCrashDumpsDir))
52    return false;
53  *crash_dir = CommandLine::ForCurrentProcess()->GetSwitchValuePath(
54      switches::kCrashDumpsDir);
55  return true;
56}
57
58#if defined(OS_ANDROID)
59int ShellCrashReporterClient::GetAndroidMinidumpDescriptor() {
60  return kAndroidMinidumpDescriptor;
61}
62#endif
63
64bool ShellCrashReporterClient::EnableBreakpadForProcess(
65    const std::string& process_type) {
66  return process_type == switches::kRendererProcess ||
67         process_type == switches::kPluginProcess ||
68         process_type == switches::kPpapiPluginProcess ||
69         process_type == switches::kZygoteProcess ||
70         process_type == switches::kGpuProcess;
71}
72
73}  // namespace content
74