| 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 a8ba22101ccd3435916b3d89ea95cd95ea18b7ce..3a41dbb62498235380a662c26b43617c97974e02 100644
|
| --- a/chrome/browser/tracing/crash_service_uploader.cc
|
| +++ b/chrome/browser/tracing/crash_service_uploader.cc
|
| @@ -102,6 +102,7 @@ void TraceCrashServiceUploader::OnURLFetchUploadProgress(
|
|
|
| void TraceCrashServiceUploader::DoUpload(
|
| const std::string& file_contents,
|
| + UploadMode upload_mode,
|
| scoped_ptr<base::DictionaryValue> metadata,
|
| const UploadProgressCallback& progress_callback,
|
| const UploadDoneCallback& done_callback) {
|
| @@ -109,13 +110,14 @@ void TraceCrashServiceUploader::DoUpload(
|
| content::BrowserThread::PostTask(
|
| content::BrowserThread::FILE, FROM_HERE,
|
| base::Bind(&TraceCrashServiceUploader::DoUploadOnFileThread,
|
| - base::Unretained(this), file_contents, upload_url_,
|
| - base::Passed(metadata.Pass()), progress_callback,
|
| + base::Unretained(this), file_contents, upload_mode,
|
| + upload_url_, base::Passed(metadata.Pass()), progress_callback,
|
| done_callback));
|
| }
|
|
|
| void TraceCrashServiceUploader::DoUploadOnFileThread(
|
| const std::string& file_contents,
|
| + UploadMode upload_mode,
|
| const std::string& upload_url,
|
| scoped_ptr<base::DictionaryValue> metadata,
|
| const UploadProgressCallback& progress_callback,
|
| @@ -164,18 +166,28 @@ void TraceCrashServiceUploader::DoUploadOnFileThread(
|
| return;
|
| }
|
|
|
| - scoped_ptr<char[]> compressed_contents(new char[kMaxUploadBytes]);
|
| - int compressed_bytes;
|
| - if (!Compress(file_contents, kMaxUploadBytes, compressed_contents.get(),
|
| - &compressed_bytes)) {
|
| - OnUploadError("Compressing file failed.");
|
| - return;
|
| + std::string compressed_contents;
|
| + if (upload_mode == COMPRESSED_UPLOAD) {
|
| + scoped_ptr<char[]> compressed_buffer(new char[kMaxUploadBytes]);
|
| + int compressed_bytes;
|
| + if (!Compress(file_contents, kMaxUploadBytes, compressed_buffer.get(),
|
| + &compressed_bytes)) {
|
| + OnUploadError("Compressing file failed.");
|
| + return;
|
| + }
|
| + compressed_contents =
|
| + std::string(compressed_buffer.get(), compressed_bytes);
|
| + } else {
|
| + if (file_contents.size() >= kMaxUploadBytes) {
|
| + OnUploadError("File is too large to upload.");
|
| + return;
|
| + }
|
| + compressed_contents = file_contents;
|
| }
|
|
|
| std::string post_data;
|
| SetupMultipart(product, version, metadata.Pass(), "trace.json.gz",
|
| - std::string(compressed_contents.get(), compressed_bytes),
|
| - &post_data);
|
| + compressed_contents, &post_data);
|
|
|
| content::BrowserThread::PostTask(
|
| content::BrowserThread::UI, FROM_HERE,
|
|
|