v8::Handle<v8::Value> CrashReporter::Start(const v8::Arguments& args) {
std::string product_name, company_name, submit_url;
bool auto_submit, skip_system;
+ std::map<std::string, std::string> dict;
if (!FromV8Arguments(args, &product_name, &company_name, &submit_url,
- &auto_submit, &skip_system))
+ &auto_submit, &skip_system, &dict))
return node::ThrowTypeError("Bad argument");
crash_reporter::CrashReporter::GetInstance()->Start(
- product_name, company_name, submit_url, auto_submit, skip_system);
+ product_name, company_name, submit_url, auto_submit, skip_system, dict);
return v8::Undefined();
}
class CrashReporter
start: (options={}) ->
- {productName, companyName, submitUrl, autoSubmit, ignoreSystemCrashHandler} = options
+ {productName, companyName, submitUrl, autoSubmit, ignoreSystemCrashHandler, extra} = options
productName ?= 'Atom-Shell'
companyName ?= 'GitHub, Inc'
submitUrl ?= 'http://54.249.141.25'
autoSubmit ?= true
ignoreSystemCrashHandler ?= false
+ extra ?= {}
- binding.start productName, companyName, submitUrl, autoSubmit, ignoreSystemCrashHandler
+ binding.start productName, companyName, submitUrl, autoSubmit, ignoreSystemCrashHandler, extra
module.exports = new CrashReporter
namespace crash_reporter {
CrashReporter::CrashReporter() {
- SetUploadParameters();
-
- is_browser_ = upload_parameters_["process_type"].empty();
+ const CommandLine& command = *CommandLine::ForCurrentProcess();
+ is_browser_ = command.GetSwitchValueASCII(switches::kProcessType).empty();
}
CrashReporter::~CrashReporter() {
const std::string& company_name,
const std::string& submit_url,
bool auto_submit,
- bool skip_system_crash_handler) {
+ bool skip_system_crash_handler,
+ const StringMap& extra_parameters) {
+ SetUploadParameters(extra_parameters);
+
// Append "Renderer" for the renderer.
product_name += " Renderer";
InitBreakpad(product_name, ATOM_VERSION_STRING, company_name, submit_url,
auto_submit, skip_system_crash_handler);
}
-void CrashReporter::SetUploadParameters() {
- const CommandLine& command = *CommandLine::ForCurrentProcess();
- std::string type = command.GetSwitchValueASCII(switches::kProcessType);
-
- upload_parameters_["process_type"] = type;
+void CrashReporter::SetUploadParameters(const StringMap& parameters) {
+ upload_parameters_ = parameters;
+ upload_parameters_["process_type"] = is_browser_ ? "browser" : "renderer";
}
} // namespace crash_reporter
class CrashReporter {
public:
+ typedef std::map<std::string, std::string> StringMap;
+
static CrashReporter* GetInstance();
void Start(std::string product_name,
const std::string& company_name,
const std::string& submit_url,
bool auto_submit,
- bool skip_system_crash_handler);
+ bool skip_system_crash_handler,
+ const StringMap& extra_parameters);
protected:
CrashReporter();
const std::string& submit_url,
bool auto_submit,
bool skip_system_crash_handler) = 0;
- virtual void SetUploadParameters();
+ virtual void SetUploadParameters() = 0;
- typedef std::map<std::string, std::string> StringMap;
StringMap upload_parameters_;
bool is_browser_;
private:
+ void SetUploadParameters(const StringMap& parameters);
+
DISALLOW_COPY_AND_ASSIGN(CrashReporter);
};