From ba975d552a8adbf1699d38fc28e8659218fb6faf Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 2 Feb 2017 14:23:21 -0800 Subject: [PATCH] Add setExtraParameter support on macOS --- atom/common/api/atom_api_crash_reporter.cc | 13 +++++++------ atom/common/crash_reporter/crash_reporter.cc | 4 ++++ atom/common/crash_reporter/crash_reporter.h | 2 ++ atom/common/crash_reporter/crash_reporter_mac.h | 2 ++ atom/common/crash_reporter/crash_reporter_mac.mm | 8 ++++++++ lib/common/api/crash-reporter.js | 4 ++++ 6 files changed, 27 insertions(+), 6 deletions(-) diff --git a/atom/common/api/atom_api_crash_reporter.cc b/atom/common/api/atom_api_crash_reporter.cc index 57f880ff1944..6820e7a7929d 100644 --- a/atom/common/api/atom_api_crash_reporter.cc +++ b/atom/common/api/atom_api_crash_reporter.cc @@ -35,15 +35,16 @@ namespace { void Initialize(v8::Local exports, v8::Local unused, v8::Local context, void* priv) { mate::Dictionary dict(context->GetIsolate(), exports); - auto report = base::Unretained(CrashReporter::GetInstance()); - dict.SetMethod("start", - base::Bind(&CrashReporter::Start, report)); + auto reporter = base::Unretained(CrashReporter::GetInstance()); + dict.SetMethod("start", base::Bind(&CrashReporter::Start, reporter)); + dict.SetMethod("setExtraParameter", + base::Bind(&CrashReporter::SetExtraParameter, reporter)); dict.SetMethod("getUploadedReports", - base::Bind(&CrashReporter::GetUploadedReports, report)); + base::Bind(&CrashReporter::GetUploadedReports, reporter)); dict.SetMethod("setUploadToServer", - base::Bind(&CrashReporter::SetUploadToServer, report)); + base::Bind(&CrashReporter::SetUploadToServer, reporter)); dict.SetMethod("getUploadToServer", - base::Bind(&CrashReporter::GetUploadToServer, report)); + base::Bind(&CrashReporter::GetUploadToServer, reporter)); } } // namespace diff --git a/atom/common/crash_reporter/crash_reporter.cc b/atom/common/crash_reporter/crash_reporter.cc index f8a5f5e29ecb..bc3176275fe8 100644 --- a/atom/common/crash_reporter/crash_reporter.cc +++ b/atom/common/crash_reporter/crash_reporter.cc @@ -86,6 +86,10 @@ void CrashReporter::InitBreakpad(const std::string& product_name, void CrashReporter::SetUploadParameters() { } +void CrashReporter::SetExtraParameter(const std::string& key, + const std::string& value) { +} + #if defined(OS_MACOSX) && defined(MAS_BUILD) // static CrashReporter* CrashReporter::GetInstance() { diff --git a/atom/common/crash_reporter/crash_reporter.h b/atom/common/crash_reporter/crash_reporter.h index c564527109b8..cd93f171c05b 100644 --- a/atom/common/crash_reporter/crash_reporter.h +++ b/atom/common/crash_reporter/crash_reporter.h @@ -37,6 +37,8 @@ class CrashReporter { virtual void SetUploadToServer(bool upload_to_server); virtual bool GetUploadToServer(); + virtual void SetExtraParameter(const std::string& key, + const std::string& value); protected: CrashReporter(); diff --git a/atom/common/crash_reporter/crash_reporter_mac.h b/atom/common/crash_reporter/crash_reporter_mac.h index 9066f2017bb2..8d1b1d0de1c3 100644 --- a/atom/common/crash_reporter/crash_reporter_mac.h +++ b/atom/common/crash_reporter/crash_reporter_mac.h @@ -34,6 +34,8 @@ class CrashReporterMac : public CrashReporter { void SetUploadParameters() override; void SetUploadToServer(bool upload_to_server) override; bool GetUploadToServer() override; + void SetExtraParameter(const std::string& key, + const std::string& value) override; private: friend struct base::DefaultSingletonTraits; diff --git a/atom/common/crash_reporter/crash_reporter_mac.mm b/atom/common/crash_reporter/crash_reporter_mac.mm index cdaa5d2f52e6..0e9b20d6f663 100644 --- a/atom/common/crash_reporter/crash_reporter_mac.mm +++ b/atom/common/crash_reporter/crash_reporter_mac.mm @@ -100,6 +100,14 @@ void CrashReporterMac::SetCrashKeyValue(const base::StringPiece& key, simple_string_dictionary_->SetKeyValue(key.data(), value.data()); } +void CrashReporterMac::SetExtraParameter(const std::string& key, + const std::string& value) { + if (simple_string_dictionary_) + SetCrashKeyValue(key, value); + else + upload_parameters_[key] = value; +} + std::vector CrashReporterMac::GetUploadedReports(const base::FilePath& crashes_dir) { std::vector uploaded_reports; diff --git a/lib/common/api/crash-reporter.js b/lib/common/api/crash-reporter.js index 3579a8c375b6..f168251cc18f 100644 --- a/lib/common/api/crash-reporter.js +++ b/lib/common/api/crash-reporter.js @@ -117,6 +117,10 @@ class CrashReporter { throw new Error('setUploadToServer can only be called from the main process') } } + + setExtraParameter (key, value) { + binding.setExtraParameter(key, value) + } } module.exports = new CrashReporter()