Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6328)

Unified Diff: chrome/browser/tracing/crash_service_uploader.cc

Issue 1181213002: Slow Reports - Embed Metadata in Traces (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments addressed. Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..b3d715acdd71d318243754265b54e74e30057a9f 100644
--- a/chrome/browser/tracing/crash_service_uploader.cc
+++ b/chrome/browser/tracing/crash_service_uploader.cc
@@ -8,6 +8,7 @@
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/format_macros.h"
+#include "base/json/json_writer.h"
#include "base/memory/shared_memory.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
@@ -98,6 +99,7 @@ void TraceCrashServiceUploader::OnURLFetchUploadProgress(
void TraceCrashServiceUploader::DoUpload(
const std::string& file_contents,
+ scoped_ptr<base::DictionaryValue> metadata,
const UploadProgressCallback& progress_callback,
const UploadDoneCallback& done_callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
@@ -105,12 +107,14 @@ void TraceCrashServiceUploader::DoUpload(
content::BrowserThread::FILE, FROM_HERE,
base::Bind(&TraceCrashServiceUploader::DoUploadOnFileThread,
base::Unretained(this), file_contents, upload_url_,
- progress_callback, done_callback));
+ base::Passed(metadata.Pass()), progress_callback,
+ done_callback));
}
void TraceCrashServiceUploader::DoUploadOnFileThread(
const std::string& file_contents,
const std::string& upload_url,
+ scoped_ptr<base::DictionaryValue> metadata,
const UploadProgressCallback& progress_callback,
const UploadDoneCallback& done_callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::FILE);
@@ -166,7 +170,7 @@ void TraceCrashServiceUploader::DoUploadOnFileThread(
}
std::string post_data;
- SetupMultipart(product, version, "trace.json.gz",
+ SetupMultipart(product, version, metadata.Pass(), "trace.json.gz",
std::string(compressed_contents.get(), compressed_bytes),
&post_data);
@@ -186,6 +190,7 @@ void TraceCrashServiceUploader::OnUploadError(std::string error_message) {
void TraceCrashServiceUploader::SetupMultipart(
const std::string& product,
const std::string& version,
+ scoped_ptr<base::DictionaryValue> metadata,
const std::string& trace_filename,
const std::string& trace_contents,
std::string* post_data) {
@@ -200,6 +205,19 @@ void TraceCrashServiceUploader::SetupMultipart(
// No minidump means no need for crash to process the report.
net::AddMultipartValueForUpload("should_process", "false", kMultipartBoundary,
"", post_data);
+ if (metadata) {
+ for (base::DictionaryValue::Iterator it(*metadata); !it.IsAtEnd();
+ it.Advance()) {
+ std::string value;
+ if (!it.value().GetAsString(&value)) {
+ if (!base::JSONWriter::Write(it.value(), &value))
+ continue;
+ }
+
+ net::AddMultipartValueForUpload(it.key(), value, kMultipartBoundary, "",
+ post_data);
+ }
+ }
AddTraceFile(trace_filename, trace_contents, post_data);
« no previous file with comments | « chrome/browser/tracing/crash_service_uploader.h ('k') | content/browser/tracing/background_tracing_manager_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698