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

Side by Side Diff: chrome/browser/tracing/crash_service_uploader.cc

Issue 1002103004: NOT FOR REVIEW - Slow Reports Reference Implementation Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: JSON serialization. Created 5 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/tracing/crash_service_uploader.h" 5 #include "chrome/browser/tracing/crash_service_uploader.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
10 #include "base/format_macros.h" 10 #include "base/format_macros.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 const UploadProgressCallback& progress_callback, 86 const UploadProgressCallback& progress_callback,
87 const UploadDoneCallback& done_callback) { 87 const UploadDoneCallback& done_callback) {
88 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 88 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
89 content::BrowserThread::PostTask( 89 content::BrowserThread::PostTask(
90 content::BrowserThread::FILE, FROM_HERE, 90 content::BrowserThread::FILE, FROM_HERE,
91 base::Bind(&TraceCrashServiceUploader::DoUploadOnFileThread, 91 base::Bind(&TraceCrashServiceUploader::DoUploadOnFileThread,
92 base::Unretained(this), file_contents, progress_callback, 92 base::Unretained(this), file_contents, progress_callback,
93 done_callback)); 93 done_callback));
94 } 94 }
95 95
96 void TraceCrashServiceUploader::SetUploadURL(const std::string& url) {
97 upload_url_ = url;
98 }
99
96 void TraceCrashServiceUploader::DoUploadOnFileThread( 100 void TraceCrashServiceUploader::DoUploadOnFileThread(
97 const std::string& file_contents, 101 const std::string& file_contents,
98 const UploadProgressCallback& progress_callback, 102 const UploadProgressCallback& progress_callback,
99 const UploadDoneCallback& done_callback) { 103 const UploadDoneCallback& done_callback) {
100 DCHECK_CURRENTLY_ON(content::BrowserThread::FILE); 104 DCHECK_CURRENTLY_ON(content::BrowserThread::FILE);
101 DCHECK(!url_fetcher_.get()); 105 DCHECK(!url_fetcher_.get());
102 106
103 progress_callback_ = progress_callback; 107 progress_callback_ = progress_callback;
104 done_callback_ = done_callback; 108 done_callback_ = done_callback;
105 109
106 const base::CommandLine& command_line = 110 const base::CommandLine& command_line =
107 *base::CommandLine::ForCurrentProcess(); 111 *base::CommandLine::ForCurrentProcess();
108 std::string upload_url = kUploadURL; 112 std::string upload_url = kUploadURL;
113 if (!upload_url_.empty())
114 upload_url = upload_url_;
115
109 if (command_line.HasSwitch(switches::kTraceUploadURL)) { 116 if (command_line.HasSwitch(switches::kTraceUploadURL)) {
110 upload_url = command_line.GetSwitchValueASCII(switches::kTraceUploadURL); 117 upload_url = command_line.GetSwitchValueASCII(switches::kTraceUploadURL);
111 } 118 }
112 if (!GURL(upload_url).is_valid()) 119 if (!GURL(upload_url).is_valid())
113 upload_url.clear(); 120 upload_url.clear();
114 121
115 if (upload_url.empty()) { 122 if (upload_url.empty()) {
116 OnUploadError("Upload URL empty or invalid"); 123 OnUploadError("Upload URL empty or invalid");
117 return; 124 return;
118 } 125 }
(...skipping 24 matching lines...) Expand all
143 version = product_components[1]; 150 version = product_components[1];
144 } else { 151 } else {
145 version = "unknown"; 152 version = "unknown";
146 } 153 }
147 154
148 if (url_fetcher_.get()) { 155 if (url_fetcher_.get()) {
149 OnUploadError("Already uploading."); 156 OnUploadError("Already uploading.");
150 return; 157 return;
151 } 158 }
152 159
153 scoped_ptr<char[]> compressed_contents(new char[kMaxUploadBytes]);
154 int compressed_bytes;
155 if (!Compress(file_contents, kMaxUploadBytes, compressed_contents.get(),
156 &compressed_bytes)) {
157 OnUploadError("Compressing file failed.");
158 return;
159 }
160
161 std::string post_data; 160 std::string post_data;
162 SetupMultipart(product, version, "trace.json.gz", 161 SetupMultipart(product, version, "trace.json.gz", file_contents, &post_data);
163 std::string(compressed_contents.get(), compressed_bytes), 162 // scoped_ptr<char[]> compressed_contents(new char[kMaxUploadBytes]);
164 &post_data); 163 // int compressed_bytes;
164 // if (!Compress(file_contents, kMaxUploadBytes, compressed_contents.get(),
165 // &compressed_bytes)) {
166 // OnUploadError("Compressing file failed.");
167 // return;
168 // }
169 //
170 // std::string post_data;
171 // SetupMultipart(product, version, "trace.json.gz",
172 // std::string(compressed_contents.get(), compressed_bytes),
173 // &post_data);
165 174
166 content::BrowserThread::PostTask( 175 content::BrowserThread::PostTask(
167 content::BrowserThread::UI, FROM_HERE, 176 content::BrowserThread::UI, FROM_HERE,
168 base::Bind(&TraceCrashServiceUploader::CreateAndStartURLFetcher, 177 base::Bind(&TraceCrashServiceUploader::CreateAndStartURLFetcher,
169 base::Unretained(this), upload_url, post_data)); 178 base::Unretained(this), upload_url, post_data));
170 } 179 }
171 180
172 void TraceCrashServiceUploader::OnUploadError(std::string error_message) { 181 void TraceCrashServiceUploader::OnUploadError(std::string error_message) {
173 LOG(ERROR) << error_message; 182 LOG(ERROR) << error_message;
174 content::BrowserThread::PostTask( 183 content::BrowserThread::PostTask(
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 std::string content_type = kUploadContentType; 264 std::string content_type = kUploadContentType;
256 content_type.append("; boundary="); 265 content_type.append("; boundary=");
257 content_type.append(kMultipartBoundary); 266 content_type.append(kMultipartBoundary);
258 267
259 url_fetcher_.reset( 268 url_fetcher_.reset(
260 net::URLFetcher::Create(GURL(upload_url), net::URLFetcher::POST, this)); 269 net::URLFetcher::Create(GURL(upload_url), net::URLFetcher::POST, this));
261 url_fetcher_->SetRequestContext(request_context_); 270 url_fetcher_->SetRequestContext(request_context_);
262 url_fetcher_->SetUploadData(content_type, post_data); 271 url_fetcher_->SetUploadData(content_type, post_data);
263 url_fetcher_->Start(); 272 url_fetcher_->Start();
264 } 273 }
OLDNEW
« 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