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

Side by Side Diff: content/browser/tracing/tracing_ui.cc

Issue 425593002: Refactor trace_event_impl's SetEnabled to use TraceOptions. Propagate this through the whole stack. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/browser/tracing/tracing_ui.h" 5 #include "content/browser/tracing/tracing_ui.h"
6 6
7 #include <set> 7 #include <set>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/base64.h" 11 #include "base/base64.h"
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/bind_helpers.h" 13 #include "base/bind_helpers.h"
14 #include "base/command_line.h" 14 #include "base/command_line.h"
15 #include "base/debug/trace_event.h"
15 #include "base/file_util.h" 16 #include "base/file_util.h"
16 #include "base/format_macros.h" 17 #include "base/format_macros.h"
17 #include "base/json/json_reader.h" 18 #include "base/json/json_reader.h"
18 #include "base/json/json_writer.h" 19 #include "base/json/json_writer.h"
19 #include "base/memory/scoped_ptr.h" 20 #include "base/memory/scoped_ptr.h"
20 #include "base/strings/string_number_conversions.h" 21 #include "base/strings/string_number_conversions.h"
21 #include "base/strings/string_split.h" 22 #include "base/strings/string_split.h"
22 #include "base/strings/string_util.h" 23 #include "base/strings/string_util.h"
23 #include "base/strings/stringprintf.h" 24 #include "base/strings/stringprintf.h"
24 #include "base/values.h" 25 #include "base/values.h"
(...skipping 23 matching lines...) Expand all
48 category_list->AppendString(*it); 49 category_list->AppendString(*it);
49 } 50 }
50 51
51 base::RefCountedString* res = new base::RefCountedString(); 52 base::RefCountedString* res = new base::RefCountedString();
52 base::JSONWriter::Write(category_list.get(), &res->data()); 53 base::JSONWriter::Write(category_list.get(), &res->data());
53 callback.Run(res); 54 callback.Run(res);
54 } 55 }
55 56
56 bool GetTracingOptions(const std::string& data64, 57 bool GetTracingOptions(const std::string& data64,
57 std::string* category_filter_string, 58 std::string* category_filter_string,
58 int* tracing_options) { 59 base::debug::TraceOptions* tracing_options,
60 bool* enable_systrace) {
59 std::string data; 61 std::string data;
60 if (!base::Base64Decode(data64, &data)) { 62 if (!base::Base64Decode(data64, &data)) {
61 LOG(ERROR) << "Options were not base64 encoded."; 63 LOG(ERROR) << "Options were not base64 encoded.";
62 return false; 64 return false;
63 } 65 }
64 66
65 scoped_ptr<base::Value> optionsRaw(base::JSONReader::Read(data)); 67 scoped_ptr<base::Value> optionsRaw(base::JSONReader::Read(data));
66 if (!optionsRaw) { 68 if (!optionsRaw) {
67 LOG(ERROR) << "Options were not valid JSON"; 69 LOG(ERROR) << "Options were not valid JSON";
68 return false; 70 return false;
(...skipping 12 matching lines...) Expand all
81 options_ok &= options->GetString("categoryFilter", category_filter_string); 83 options_ok &= options->GetString("categoryFilter", category_filter_string);
82 options_ok &= options->GetBoolean("useSystemTracing", &use_system_tracing); 84 options_ok &= options->GetBoolean("useSystemTracing", &use_system_tracing);
83 options_ok &= options->GetBoolean("useContinuousTracing", 85 options_ok &= options->GetBoolean("useContinuousTracing",
84 &use_continuous_tracing); 86 &use_continuous_tracing);
85 options_ok &= options->GetBoolean("useSampling", &use_sampling); 87 options_ok &= options->GetBoolean("useSampling", &use_sampling);
86 if (!options_ok) { 88 if (!options_ok) {
87 LOG(ERROR) << "Malformed options"; 89 LOG(ERROR) << "Malformed options";
88 return false; 90 return false;
89 } 91 }
90 92
91 *tracing_options = 0; 93 if (!tracing_options) {
94 LOG(ERROR) << "tracing_options can't be passed as NULL";
95 return false;
96 }
92 if (use_system_tracing) 97 if (use_system_tracing)
93 *tracing_options |= TracingController::ENABLE_SYSTRACE; 98 *enable_systrace = true;
94 if (use_sampling) 99 if (use_sampling)
95 *tracing_options |= TracingController::ENABLE_SAMPLING; 100 tracing_options->enable_sampling = true;
96 if (use_continuous_tracing) 101 if (use_continuous_tracing)
97 *tracing_options |= TracingController::RECORD_CONTINUOUSLY; 102 tracing_options->record_mode =
103 base::debug::TraceOptions::RECORD_CONTINUOUSLY;
104 else
105 tracing_options->record_mode = base::debug::TraceOptions::RECORD_UNTIL_FULL;
98 return true; 106 return true;
99 } 107 }
100 108
101 void OnRecordingEnabledAck(const WebUIDataSource::GotDataCallback& callback); 109 void OnRecordingEnabledAck(const WebUIDataSource::GotDataCallback& callback);
102 110
103 bool BeginRecording(const std::string& data64, 111 bool BeginRecording(const std::string& data64,
104 const WebUIDataSource::GotDataCallback& callback) { 112 const WebUIDataSource::GotDataCallback& callback) {
105 std::string category_filter_string; 113 std::string category_filter_string;
106 int tracing_options = 0; 114 base::debug::TraceOptions tracing_options;
107 if (!GetTracingOptions(data64, &category_filter_string, &tracing_options)) 115 bool enable_systrace;
116 if (!GetTracingOptions(
117 data64, &category_filter_string, &tracing_options, &enable_systrace))
108 return false; 118 return false;
109 119
110 return TracingController::GetInstance()->EnableRecording( 120 return TracingController::GetInstance()->EnableRecording(
111 category_filter_string, 121 category_filter_string,
112 static_cast<TracingController::Options>(tracing_options), 122 tracing_options,
123 enable_systrace,
113 base::Bind(&OnRecordingEnabledAck, callback)); 124 base::Bind(&OnRecordingEnabledAck, callback));
114 } 125 }
115 126
116 void OnRecordingEnabledAck(const WebUIDataSource::GotDataCallback& callback) { 127 void OnRecordingEnabledAck(const WebUIDataSource::GotDataCallback& callback) {
117 base::RefCountedString* res = new base::RefCountedString(); 128 base::RefCountedString* res = new base::RefCountedString();
118 callback.Run(res); 129 callback.Run(res);
119 } 130 }
120 131
121 void OnTraceBufferPercentFullResult( 132 void OnTraceBufferPercentFullResult(
122 const WebUIDataSource::GotDataCallback& callback, float result) { 133 const WebUIDataSource::GotDataCallback& callback, float result) {
(...skipping 16 matching lines...) Expand all
139 BrowserThread::PostTask( 150 BrowserThread::PostTask(
140 BrowserThread::FILE, FROM_HERE, 151 BrowserThread::FILE, FROM_HERE,
141 base::Bind(ReadRecordingResult, callback, path)); 152 base::Bind(ReadRecordingResult, callback, path));
142 } 153 }
143 154
144 void OnMonitoringEnabledAck(const WebUIDataSource::GotDataCallback& callback); 155 void OnMonitoringEnabledAck(const WebUIDataSource::GotDataCallback& callback);
145 156
146 bool EnableMonitoring(const std::string& data64, 157 bool EnableMonitoring(const std::string& data64,
147 const WebUIDataSource::GotDataCallback& callback) { 158 const WebUIDataSource::GotDataCallback& callback) {
148 std::string category_filter_string; 159 std::string category_filter_string;
149 int tracing_options = 0; 160 base::debug::TraceOptions tracing_options;
150 if (!GetTracingOptions(data64, &category_filter_string, &tracing_options)) 161 bool enable_systrace;
162 if (!GetTracingOptions(
163 data64, &category_filter_string, &tracing_options, &enable_systrace))
151 return false; 164 return false;
152 165
153 return TracingController::GetInstance()->EnableMonitoring( 166 return TracingController::GetInstance()->EnableMonitoring(
154 category_filter_string, 167 category_filter_string,
155 static_cast<TracingController::Options>(tracing_options), 168 static_cast<base::debug::TraceOptions>(tracing_options),
dsinclair 2014/07/28 18:52:36 Why does this need a cast?
nednguyen 2014/07/28 20:27:22 No it doesn't. I did a s/TracingController.../..Tr
156 base::Bind(OnMonitoringEnabledAck, callback)); 169 base::Bind(OnMonitoringEnabledAck, callback));
157 } 170 }
158 171
159 void OnMonitoringEnabledAck(const WebUIDataSource::GotDataCallback& callback) { 172 void OnMonitoringEnabledAck(const WebUIDataSource::GotDataCallback& callback) {
160 base::RefCountedString* res = new base::RefCountedString(); 173 base::RefCountedString* res = new base::RefCountedString();
161 callback.Run(res); 174 callback.Run(res);
162 } 175 }
163 176
164 void OnMonitoringDisabled(const WebUIDataSource::GotDataCallback& callback) { 177 void OnMonitoringDisabled(const WebUIDataSource::GotDataCallback& callback) {
165 base::RefCountedString* res = new base::RefCountedString(); 178 base::RefCountedString* res = new base::RefCountedString();
166 callback.Run(res); 179 callback.Run(res);
167 } 180 }
168 181
169 void GetMonitoringStatus(const WebUIDataSource::GotDataCallback& callback) { 182 void GetMonitoringStatus(const WebUIDataSource::GotDataCallback& callback) {
170 bool is_monitoring; 183 bool is_monitoring;
171 std::string category_filter; 184 std::string category_filter;
172 TracingController::Options options; 185 base::debug::TraceOptions options;
186 bool enable_systrace;
173 TracingController::GetInstance()->GetMonitoringStatus( 187 TracingController::GetInstance()->GetMonitoringStatus(
174 &is_monitoring, &category_filter, &options); 188 &is_monitoring, &category_filter, &options, &enable_systrace);
175 189
176 scoped_ptr<base::DictionaryValue> 190 scoped_ptr<base::DictionaryValue>
177 monitoring_options(new base::DictionaryValue()); 191 monitoring_options(new base::DictionaryValue());
178 monitoring_options->SetBoolean("isMonitoring", is_monitoring); 192 monitoring_options->SetBoolean("isMonitoring", is_monitoring);
179 monitoring_options->SetString("categoryFilter", category_filter); 193 monitoring_options->SetString("categoryFilter", category_filter);
180 monitoring_options->SetBoolean("useSystemTracing", 194 monitoring_options->SetBoolean("useSystemTracing", enable_systrace);
181 (options & TracingController::ENABLE_SYSTRACE) != 0); 195 monitoring_options->SetBoolean(
182 monitoring_options->SetBoolean("useContinuousTracing", 196 "useContinuousTracing",
183 (options & TracingController::RECORD_CONTINUOUSLY) != 0); 197 options.record_mode == base::debug::TraceOptions::RECORD_CONTINUOUSLY);
184 monitoring_options->SetBoolean("useSampling", 198 monitoring_options->SetBoolean("useSampling", options.enable_sampling);
185 (options & TracingController::ENABLE_SAMPLING) != 0);
186 199
187 std::string monitoring_options_json; 200 std::string monitoring_options_json;
188 base::JSONWriter::Write(monitoring_options.get(), &monitoring_options_json); 201 base::JSONWriter::Write(monitoring_options.get(), &monitoring_options_json);
189 202
190 base::RefCountedString* monitoring_options_base64 = 203 base::RefCountedString* monitoring_options_base64 =
191 new base::RefCountedString(); 204 new base::RefCountedString();
192 base::Base64Encode(monitoring_options_json, 205 base::Base64Encode(monitoring_options_json,
193 &monitoring_options_base64->data()); 206 &monitoring_options_base64->data());
194 callback.Run(monitoring_options_base64); 207 callback.Run(monitoring_options_base64);
195 } 208 }
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 if (success) { 406 if (success) {
394 web_ui()->CallJavascriptFunction("onUploadComplete", 407 web_ui()->CallJavascriptFunction("onUploadComplete",
395 base::StringValue(report_id)); 408 base::StringValue(report_id));
396 } else { 409 } else {
397 web_ui()->CallJavascriptFunction("onUploadError", 410 web_ui()->CallJavascriptFunction("onUploadError",
398 base::StringValue(error_message)); 411 base::StringValue(error_message));
399 } 412 }
400 } 413 }
401 414
402 } // namespace content 415 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698