| Index: chrome/browser/ui/webui/crashes_ui.cc
|
| diff --git a/chrome/browser/ui/webui/crashes_ui.cc b/chrome/browser/ui/webui/crashes_ui.cc
|
| index af48299bb57453d4df0cb1a1eee9ddd41653a03a..1249bd31e07f5587b03b3559b43495bae02ec145 100644
|
| --- a/chrome/browser/ui/webui/crashes_ui.cc
|
| +++ b/chrome/browser/ui/webui/crashes_ui.cc
|
| @@ -92,6 +92,11 @@ class CrashesDOMHandler : public WebUIMessageHandler,
|
| // Sends the recent crashes list JS.
|
| void UpdateUI();
|
|
|
| +#if defined(OS_WIN) || defined(OS_MACOSX)
|
| + // Asynchronously requests a user triggered upload. Called from JS.
|
| + void HandleRequestSingleCrashUpload(const base::ListValue* args);
|
| +#endif
|
| +
|
| scoped_refptr<CrashUploadList> upload_list_;
|
| bool list_available_;
|
| bool first_load_;
|
| @@ -121,6 +126,13 @@ void CrashesDOMHandler::RegisterMessages() {
|
| base::Bind(&CrashesDOMHandler::HandleRequestUploads,
|
| base::Unretained(this)));
|
| #endif
|
| +
|
| +#if defined(OS_WIN) || defined(OS_MACOSX)
|
| + web_ui()->RegisterMessageCallback(
|
| + crash::kCrashesUIRequestSingleCrashUpload,
|
| + base::Bind(&CrashesDOMHandler::HandleRequestSingleCrashUpload,
|
| + base::Unretained(this)));
|
| +#endif
|
| }
|
|
|
| void CrashesDOMHandler::HandleRequestCrashes(const base::ListValue* args) {
|
| @@ -160,12 +172,19 @@ void CrashesDOMHandler::UpdateUI() {
|
| system_crash_reporter = true;
|
| #endif
|
|
|
| + bool support_manual_uploads = false;
|
| +#if defined(OS_WIN) || defined(OS_MACOSX)
|
| + // Maunal uploads are supported only for Windows and Mac platforms.
|
| + support_manual_uploads = true;
|
| +#endif
|
| +
|
| base::ListValue crash_list;
|
| if (crash_reporting_enabled)
|
| crash::UploadListToValue(upload_list_.get(), &crash_list);
|
|
|
| base::FundamentalValue enabled(crash_reporting_enabled);
|
| base::FundamentalValue dynamic_backend(system_crash_reporter);
|
| + base::FundamentalValue manual_uploads(support_manual_uploads);
|
| base::StringValue version(version_info::GetVersionNumber());
|
| base::StringValue os_string(base::SysInfo::OperatingSystemName() + " " +
|
| base::SysInfo::OperatingSystemVersion());
|
| @@ -173,6 +192,7 @@ void CrashesDOMHandler::UpdateUI() {
|
| std::vector<const base::Value*> args;
|
| args.push_back(&enabled);
|
| args.push_back(&dynamic_backend);
|
| + args.push_back(&manual_uploads);
|
| args.push_back(&crash_list);
|
| args.push_back(&version);
|
| args.push_back(&os_string);
|
| @@ -180,6 +200,16 @@ void CrashesDOMHandler::UpdateUI() {
|
| args);
|
| }
|
|
|
| +#if defined(OS_WIN) || defined(OS_MACOSX)
|
| +void CrashesDOMHandler::HandleRequestSingleCrashUpload(
|
| + const base::ListValue* args) {
|
| + std::string local_id;
|
| + if (!args || !args->GetString(0, &local_id))
|
| + return;
|
| + upload_list_->RequestSingleCrashUploadAsync(local_id);
|
| +}
|
| +#endif
|
| +
|
| } // namespace
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|