#include "app/atom_main_delegate.h"
#include "base/environment.h"
+#include "common/crash_reporter/win/crash_service_main.h"
#include "content/public/app/startup_helper_win.h"
#include "sandbox/win/src/sandbox_types.h"
#else // defined(OS_WIN)
freopen_s(&dontcare, "CON", "r", stdin);
}
- std::string node_indicator;
+ std::string node_indicator, crash_service_indicator;
if (env->GetVar("ATOM_SHELL_INTERNAL_RUN_AS_NODE", &node_indicator) &&
node_indicator == "1") {
// Convert argv to to UTF8
}
// Now that conversion is done, we can finally start.
return node::Start(argc, argv);
+ } else if (env->GetVar("ATOM_SHELL_INTERNAL_CRASH_SERVICE",
+ &crash_service_indicator) &&
+ crash_service_indicator == "1") {
+ return crash_service::Main(cmd);
}
sandbox::SandboxInterfaceInfo sandbox_info = {0};
'-limm32.lib',
'-loleacc.lib',
'-lComdlg32.lib',
+ '-lWininet.lib',
'<(atom_source_root)/<(libchromiumcontent_library_dir)/chromiumviews.lib',
],
},
#include "common/crash_reporter/win/crash_service_main.h"
+#include "base/at_exit.h"
+#include "base/command_line.h"
+#include "base/files/file_path.h"
+#include "base/path_service.h"
+#include "base/logging.h"
+#include "common/crash_reporter/win/crash_service.h"
+
namespace crash_service {
-int Main() {
- return 0;
+int Main(const wchar_t* cmd_line) {
+ // Initialize all Chromium things.
+ base::AtExitManager exit_manager;
+ CommandLine::Init(0, NULL);
+
+ VLOG(1) << "Session start. cmdline is [" << cmd_line << "]";
+
+ wchar_t temp_dir[MAX_PATH] = { 0 };
+ ::GetTempPathW(MAX_PATH, temp_dir);
+ base::FilePath temp_path(temp_dir);
+
+ breakpad::CrashService crash_service;
+ if (!crash_service.Initialize(temp_path, temp_path))
+ return 1;
+
+ VLOG(1) << "Ready to process crash requests";
+
+ // Enter the message loop.
+ int retv = crash_service.ProcessingLoop();
+ // Time to exit.
+ VLOG(1) << "Session end. return code is " << retv;
+ return retv;
}
} // namespace crash_service
namespace crash_service {
// Program entry, should be called by main();
-int Main();
+int Main(const wchar_t* cmd_line);
} // namespace crash_service