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 |
/////////////////////////////////////////////////////////////////////////////// |