Index: components/crash/content/app/fallback_crash_handler_win.h |
diff --git a/components/crash/content/app/fallback_crash_handler_win.h b/components/crash/content/app/fallback_crash_handler_win.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d9e96bb4b262523f43f46be1ab3f9dc1b3c2a23f |
--- /dev/null |
+++ b/components/crash/content/app/fallback_crash_handler_win.h |
@@ -0,0 +1,60 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef COMPONENTS_CRASH_CONTENT_APP_FALLBACK_CRASH_HANDLER_WIN_H_ |
+#define COMPONENTS_CRASH_CONTENT_APP_FALLBACK_CRASH_HANDLER_WIN_H_ |
+ |
+#include <windows.h> |
+ |
+#include "base/command_line.h" |
+#include "base/files/file_path.h" |
+#include "base/macros.h" |
+#include "base/process/process.h" |
+#include "base/threading/platform_thread.h" |
+ |
+namespace crash_reporter { |
+ |
+// In the fallback crash handler, this invokes the system crash machinery |
+// (MiniDumpWriteDump) to generate the crash report, then adds the report to |
+// the Crashpad database for upload. |
+class FallbackCrashHandler { |
+ public: |
+ FallbackCrashHandler(); |
+ ~FallbackCrashHandler(); |
+ |
+ // Parses |cmd_line| for the following arguments: |
+ // --database=<path> |
+ // Path to the Crashpad database where the minidump will be stored. |
+ // --exception-pointers=<address> |
+ // Address of exception pointers in the crashed process. |
+ // --process=<handle> |
+ // Handle to the process to dump. |
+ // --thread=<id> |
+ // ID of the crashing thread. |
+ bool ParseCommandLine(const base::CommandLine& cmd_line); |
+ |
+ // Generates a crashdump with Crashpad properties containing: |
+ // prod: |product| |
+ // ver: |version| |
+ // channel: |cannel| |
+ // plat: "Win32" or "Win64", depending on bitness. |
+ // ptype: |process_type|. |
+ bool GenerateCrashDump(const std::string& product, |
+ const std::string& version, |
+ const std::string& channel, |
+ const std::string& process_type); |
+ |
+ private: |
+ base::Process process_; |
+ base::PlatformThreadId thread_id_; |
+ // This is a pointer in process_, which is hopefully not this process. |
+ uintptr_t exception_ptrs_; |
+ base::FilePath database_dir_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(FallbackCrashHandler); |
+}; |
+ |
+} // namespace crash_reporter |
+ |
+#endif // COMPONENTS_CRASH_CONTENT_APP_FALLBACK_CRASH_HANDLER_WIN_H_ |