Pass crashes directory to crash service process

This commit is contained in:
Kevin Sawicki 2016-10-05 16:15:49 -07:00
parent 2fbb98a97c
commit 0380d3ae50
5 changed files with 23 additions and 14 deletions

View file

@ -6,6 +6,7 @@
#include <string>
#include "atom/common/crash_reporter/crash_reporter.h"
#include "atom/common/native_mate_converters/file_path_converter.h"
#include "base/bind.h"
#include "native_mate/dictionary.h"
@ -39,6 +40,8 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
base::Bind(&CrashReporter::Start, report));
dict.SetMethod("_getUploadedReports",
base::Bind(&CrashReporter::GetUploadedReports, report));
dict.SetMethod("_getCrashesDirectory",
base::Bind(&CrashReporter::GetCrashesDirectory, report));
}
} // namespace

View file

@ -34,6 +34,9 @@ class CrashReporter {
const std::string& product_name,
const std::string& temp_path);
base::FilePath GetCrashesDirectory(const std::string& product_name,
const std::string& temp_dir);
protected:
CrashReporter();
virtual ~CrashReporter();
@ -47,9 +50,6 @@ class CrashReporter {
bool skip_system_crash_handler);
virtual void SetUploadParameters();
base::FilePath GetCrashesDirectory(const std::string& product_name,
const std::string& temp_dir);
StringMap upload_parameters_;
bool is_browser_;

View file

@ -16,6 +16,7 @@ namespace crash_service {
namespace {
const char kApplicationName[] = "application-name";
const char kCrashesDirectory[] = "crashes-directory";
const wchar_t kPipeNameFormat[] = L"\\\\.\\pipe\\$1 Crash Service";
const wchar_t kStandardLogFile[] = L"operation_log.txt";
@ -25,17 +26,11 @@ void InvalidParameterHandler(const wchar_t*, const wchar_t*, const wchar_t*,
// noop.
}
bool GetCrashServiceDirectory(const std::wstring& application_name,
base::FilePath* dir) {
base::FilePath temp_dir;
if (!base::GetTempDir(&temp_dir))
return false;
temp_dir = temp_dir.Append(application_name + L" Crashes");
bool CreateCrashServiceDirectory(const base::FilePath& temp_dir) {
if (!base::PathExists(temp_dir)) {
if (!base::CreateDirectory(temp_dir))
return false;
}
*dir = temp_dir;
return true;
}
@ -59,9 +54,16 @@ int Main(const wchar_t* cmd) {
std::wstring application_name = cmd_line.GetSwitchValueNative(
kApplicationName);
if (!cmd_line.HasSwitch(kCrashesDirectory)) {
LOG(ERROR) << "Crashes directory path must be specified with --"
<< kCrashesDirectory;
return 1;
}
// We use/create a directory under the user's temp folder, for logging.
base::FilePath operating_dir;
GetCrashServiceDirectory(application_name, &operating_dir);
base::FilePath operating_dir(
cmd_line.GetSwitchValueNative(kCrashesDirectory));
GetCrashServiceDirectory(operating_dir);
base::FilePath log_file = operating_dir.Append(kStandardLogFile);
// Logging to stderr (to help with debugging failures on the