Index: chrome/browser/tracing/crash_service_uploader.cc |
diff --git a/chrome/browser/tracing/crash_service_uploader.cc b/chrome/browser/tracing/crash_service_uploader.cc |
index 9224a58b1c98c2070bdbff7e91999dbb193d1944..6f62b9d0bb6ef1b7cc6922cda0c747f184081039 100644 |
--- a/chrome/browser/tracing/crash_service_uploader.cc |
+++ b/chrome/browser/tracing/crash_service_uploader.cc |
@@ -50,6 +50,43 @@ TraceCrashServiceUploader::TraceCrashServiceUploader( |
upload_url = command_line.GetSwitchValueASCII(switches::kTraceUploadURL); |
} |
SetUploadURL(upload_url); |
+ |
+#if defined(OS_WIN) |
+ const char product[] = "Chrome"; |
+#elif defined(OS_MACOSX) |
+ const char product[] = "Chrome_Mac"; |
+#elif defined(OS_LINUX) |
+ const char product[] = "Chrome_Linux"; |
+#elif defined(OS_ANDROID) |
+ const char product[] = "Chrome_Android"; |
+#elif defined(OS_CHROMEOS) |
+ const char product[] = "Chrome_ChromeOS"; |
+#else |
+#error Platform not supported. |
+#endif |
+ |
+ // VersionInfo::ProductNameAndVersionForUserAgent() returns a string like |
+ // "Chrome/aa.bb.cc.dd", split out the part before the "/". |
+ chrome::VersionInfo version_info; |
+ std::vector<std::string> product_components; |
+ base::SplitString(version_info.ProductNameAndVersionForUserAgent(), '/', |
oystein (OOO til 10th of July)
2015/06/12 18:14:16
Why have this twice now?
shatch
2015/06/12 19:05:54
This was actually just moved from earlier in the f
|
+ &product_components); |
+ DCHECK_EQ(2U, product_components.size()); |
+ std::string version; |
+ if (product_components.size() == 2U) { |
+ version = product_components[1]; |
+ } else { |
+ version = "unknown"; |
+ } |
+ |
+ metadata_.insert(std::pair<std::string, std::string>("prod", product)); |
+ metadata_.insert( |
+ std::pair<std::string, std::string>("ver", version + "-trace")); |
+ metadata_.insert(std::pair<std::string, std::string>("guid", "0")); |
+ metadata_.insert(std::pair<std::string, std::string>("type", "trace")); |
+ // No minidump means no need for crash to process the report. |
+ metadata_.insert( |
+ std::pair<std::string, std::string>("should_process", "false")); |
} |
TraceCrashServiceUploader::~TraceCrashServiceUploader() { |
@@ -64,6 +101,12 @@ void TraceCrashServiceUploader::SetUploadURL(const std::string& url) { |
upload_url_.clear(); |
} |
+void TraceCrashServiceUploader::SetMetadata( |
+ const std::map<std::string, std::string>& metadata) { |
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
+ metadata_.insert(metadata.begin(), metadata.end()); |
+} |
+ |
void TraceCrashServiceUploader::OnURLFetchComplete( |
const net::URLFetcher* source) { |
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
@@ -104,13 +147,14 @@ void TraceCrashServiceUploader::DoUpload( |
content::BrowserThread::PostTask( |
content::BrowserThread::FILE, FROM_HERE, |
base::Bind(&TraceCrashServiceUploader::DoUploadOnFileThread, |
- base::Unretained(this), file_contents, upload_url_, |
+ base::Unretained(this), file_contents, upload_url_, metadata_, |
progress_callback, done_callback)); |
} |
void TraceCrashServiceUploader::DoUploadOnFileThread( |
const std::string& file_contents, |
const std::string& upload_url, |
+ const std::map<std::string, std::string>& metadata, |
const UploadProgressCallback& progress_callback, |
const UploadDoneCallback& done_callback) { |
DCHECK_CURRENTLY_ON(content::BrowserThread::FILE); |
@@ -124,34 +168,6 @@ void TraceCrashServiceUploader::DoUploadOnFileThread( |
return; |
} |
-#if defined(OS_WIN) |
- const char product[] = "Chrome"; |
-#elif defined(OS_MACOSX) |
- const char product[] = "Chrome_Mac"; |
-#elif defined(OS_LINUX) |
- const char product[] = "Chrome_Linux"; |
-#elif defined(OS_ANDROID) |
- const char product[] = "Chrome_Android"; |
-#elif defined(OS_CHROMEOS) |
- const char product[] = "Chrome_ChromeOS"; |
-#else |
-#error Platform not supported. |
-#endif |
- |
- // VersionInfo::ProductNameAndVersionForUserAgent() returns a string like |
- // "Chrome/aa.bb.cc.dd", split out the part before the "/". |
- chrome::VersionInfo version_info; |
- std::vector<std::string> product_components; |
- base::SplitString(version_info.ProductNameAndVersionForUserAgent(), '/', |
- &product_components); |
- DCHECK_EQ(2U, product_components.size()); |
- std::string version; |
- if (product_components.size() == 2U) { |
- version = product_components[1]; |
- } else { |
- version = "unknown"; |
- } |
- |
if (url_fetcher_.get()) { |
OnUploadError("Already uploading."); |
return; |
@@ -166,7 +182,7 @@ void TraceCrashServiceUploader::DoUploadOnFileThread( |
} |
std::string post_data; |
- SetupMultipart(product, version, "trace.json.gz", |
+ SetupMultipart(metadata, "trace.json.gz", |
std::string(compressed_contents.get(), compressed_bytes), |
&post_data); |
@@ -184,22 +200,14 @@ void TraceCrashServiceUploader::OnUploadError(std::string error_message) { |
} |
void TraceCrashServiceUploader::SetupMultipart( |
- const std::string& product, |
- const std::string& version, |
+ const std::map<std::string, std::string> metadata, |
const std::string& trace_filename, |
const std::string& trace_contents, |
std::string* post_data) { |
- net::AddMultipartValueForUpload("prod", product, kMultipartBoundary, "", |
- post_data); |
- net::AddMultipartValueForUpload("ver", version + "-trace", kMultipartBoundary, |
- "", post_data); |
- net::AddMultipartValueForUpload("guid", "0", kMultipartBoundary, "", |
- post_data); |
- net::AddMultipartValueForUpload("type", "trace", kMultipartBoundary, "", |
- post_data); |
- // No minidump means no need for crash to process the report. |
- net::AddMultipartValueForUpload("should_process", "false", kMultipartBoundary, |
- "", post_data); |
+ for (auto it = metadata.begin(); it != metadata.end(); ++it) { |
+ net::AddMultipartValueForUpload(it->first, it->second, kMultipartBoundary, |
+ "", post_data); |
+ } |
AddTraceFile(trace_filename, trace_contents, post_data); |