Chromium Code Reviews| Index: components/crash/content/app/run_as_crashpad_handler_win.cc |
| diff --git a/components/crash/content/app/run_as_crashpad_handler_win.cc b/components/crash/content/app/run_as_crashpad_handler_win.cc |
| index 6ea93489f1f89d2f7080e8bf0dfcdfb77e6a73f2..39e9e90c0461bbc6de464d62d9dd284c453d26e3 100644 |
| --- a/components/crash/content/app/run_as_crashpad_handler_win.cc |
| +++ b/components/crash/content/app/run_as_crashpad_handler_win.cc |
| @@ -10,18 +10,22 @@ |
| #include <vector> |
| #include "base/command_line.h" |
| +#include "base/memory/ptr_util.h" |
| #include "base/process/memory.h" |
| -#include "base/strings/string16.h" |
| #include "base/strings/string_util.h" |
| #include "base/strings/utf_string_conversions.h" |
| +#include "components/browser_watcher/stability_report_user_stream_data_source.h" |
| #include "third_party/crashpad/crashpad/client/crashpad_info.h" |
| #include "third_party/crashpad/crashpad/client/simple_string_dictionary.h" |
| #include "third_party/crashpad/crashpad/handler/handler_main.h" |
| +#include "third_party/crashpad/crashpad/handler/user_stream_data_source.h" |
| namespace crash_reporter { |
| int RunAsCrashpadHandler(const base::CommandLine& command_line, |
| - const char* process_type_switch) { |
| + const base::string16& user_data_dir, |
| + const char* process_type_switch, |
| + const char* user_data_dir_switch) { |
| // Make sure this process terminates on OOM in the same mode as other Chrome |
| // processes. |
| base::EnableTerminationOnOutOfMemory(); |
| @@ -46,11 +50,16 @@ int RunAsCrashpadHandler(const base::CommandLine& command_line, |
| std::vector<base::string16> argv = command_line.argv(); |
| const base::string16 process_type_arg_prefix = |
| base::string16(L"--") + base::UTF8ToUTF16(process_type_switch) + L"="; |
| + const base::string16 user_data_dir_arg_prefix = |
| + base::string16(L"--") + base::UTF8ToUTF16(user_data_dir_switch) + L"="; |
| argv.erase( |
| std::remove_if(argv.begin(), argv.end(), |
| - [&process_type_arg_prefix](const base::string16& str) { |
| + [&process_type_arg_prefix, |
| + &user_data_dir_arg_prefix](const base::string16& str) { |
| return base::StartsWith(str, process_type_arg_prefix, |
| base::CompareCase::SENSITIVE) || |
| + base::StartsWith(str, user_data_dir_arg_prefix, |
| + base::CompareCase::SENSITIVE) || |
| (!str.empty() && str[0] == L'/'); |
| }), |
| argv.end()); |
| @@ -64,8 +73,16 @@ int RunAsCrashpadHandler(const base::CommandLine& command_line, |
| } |
| argv_as_utf8[argv.size()] = nullptr; |
| argv.clear(); |
| + |
| + // Note: this stream data source will attempt to collect a stability file |
|
Sigurður Ásgeirsson
2017/05/11 15:33:40
Nits:
drop Note: make this a statement.
"collect
manzagop (departed)
2017/05/11 19:14:54
Done.
|
| + // information on any crash, but the file only exists for instrumented |
| + // browser processes. |
| + crashpad::UserStreamDataSources user_stream_data_sources; |
| + user_stream_data_sources.push_back(base::WrapUnique( |
| + new browser_watcher::StabilityReportUserStreamDataSource(user_data_dir))); |
| + |
| return crashpad::HandlerMain(static_cast<int>(storage.size()), |
| - argv_as_utf8.get(), nullptr); |
| + argv_as_utf8.get(), &user_stream_data_sources); |
| } |
| } // namespace crash_reporter |