Chromium Code Reviews| Index: chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc |
| diff --git a/chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc b/chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc |
| index d62973e34209172aa68e34df6a592eef45623a25..3888bac4925234e769f517bd7112309e00ef5d85 100644 |
| --- a/chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc |
| +++ b/chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc |
| @@ -18,6 +18,7 @@ namespace { |
| typedef void (*GetCrashReportsPointer)( |
| const crash_reporter::Report** reports, |
| size_t* report_count); |
| +typedef void (*RequestSingleCrashUploadPointer)(const std::string& local_id); |
| void GetReportsThunk( |
| std::vector<crash_reporter::Report>* reports) { |
| @@ -38,6 +39,21 @@ void GetReportsThunk( |
| reports_pointer, reports_pointer + report_count); |
| } |
| } |
| + |
| +void RequestSingleCrashUploadThunk(const std::string& local_id) { |
| + static RequestSingleCrashUploadPointer request_single_crash_upload = []() { |
| + // The crash reporting is handled by chrome_elf.dll which loads early in |
| + // the chrome process. |
| + HMODULE elf_module = GetModuleHandle(chrome::kChromeElfDllName); |
| + return reinterpret_cast<RequestSingleCrashUploadPointer>( |
| + elf_module ? GetProcAddress(elf_module, "RequestSingleCrashUploadImpl") |
| + : nullptr); |
| + }(); |
| + |
| + if (request_single_crash_upload) |
| + request_single_crash_upload(local_id); |
| +} |
| + |
| #endif // OS_WIN |
| UploadList::UploadInfo::State ReportUploadStateToUploadInfoState( |
| @@ -49,6 +65,9 @@ UploadList::UploadInfo::State ReportUploadStateToUploadInfoState( |
| case crash_reporter::ReportUploadState::Pending: |
| return UploadList::UploadInfo::State::Pending; |
| + case crash_reporter::ReportUploadState::Pending_UserRequested: |
| + return UploadList::UploadInfo::State::Pending_UserRequested; |
| + |
| case crash_reporter::ReportUploadState::Uploaded: |
| return UploadList::UploadInfo::State::Uploaded; |
| } |
| @@ -86,3 +105,14 @@ void CrashUploadListCrashpad::LoadUploadList( |
| ReportUploadStateToUploadInfoState(report.state))); |
| } |
| } |
| + |
| +void CrashUploadListCrashpad::RequestSingleCrashUpload( |
| + const std::string& local_id) { |
| +#if defined(OS_WIN) |
| + // On Windows, crash reporting is handled by chrome_elf.dll, thats why we |
|
Mark Mentovai
2016/09/01 23:24:41
that's
gayane -on leave until 09-2017
2016/09/02 14:54:02
Done.
|
| + // can't call crash_reporter::RequestSingleCrashUpload directly. |
| + RequestSingleCrashUploadThunk(local_id); |
| +#else |
| + crash_reporter::RequestSingleCrashUpload(local_id); |
| +#endif |
| +} |