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

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: Pull enable_systrace to TraceOptions 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) {
59 std::string data; 60 std::string data;
60 if (!base::Base64Decode(data64, &data)) { 61 if (!base::Base64Decode(data64, &data)) {
61 LOG(ERROR) << "Options were not base64 encoded."; 62 LOG(ERROR) << "Options were not base64 encoded.";
62 return false; 63 return false;
63 } 64 }
64 65
65 scoped_ptr<base::Value> optionsRaw(base::JSONReader::Read(data)); 66 scoped_ptr<base::Value> optionsRaw(base::JSONReader::Read(data));
66 if (!optionsRaw) { 67 if (!optionsRaw) {
67 LOG(ERROR) << "Options were not valid JSON"; 68 LOG(ERROR) << "Options were not valid JSON";
68 return false; 69 return false;
69 } 70 }
70 base::DictionaryValue* options; 71 base::DictionaryValue* options;
71 if (!optionsRaw->GetAsDictionary(&options)) { 72 if (!optionsRaw->GetAsDictionary(&options)) {
72 LOG(ERROR) << "Options must be dict"; 73 LOG(ERROR) << "Options must be dict";
73 return false; 74 return false;
74 } 75 }
75 76
76 bool use_system_tracing; 77 bool use_system_tracing;
nduca 2014/07/29 00:15:01 remove these
nednguyen 2014/07/29 19:33:21 Done.
77 bool use_continuous_tracing; 78 bool use_continuous_tracing;
78 bool use_sampling; 79 bool use_sampling;
79 80
80 bool options_ok = true; 81 bool options_ok = true;
81 options_ok &= options->GetString("categoryFilter", category_filter_string); 82 options_ok &= options->GetString("categoryFilter", category_filter_string);
82 options_ok &= options->GetBoolean("useSystemTracing", &use_system_tracing); 83 options_ok &= options->GetBoolean("useSystemTracing", &use_system_tracing);
nduca 2014/07/29 00:15:01 this needs updating. if (GetString("traceOptions
nednguyen 2014/07/29 19:33:21 Modified to read the booleans directly. I will mod
83 options_ok &= options->GetBoolean("useContinuousTracing", 84 options_ok &= options->GetBoolean("useContinuousTracing",
84 &use_continuous_tracing); 85 &use_continuous_tracing);
85 options_ok &= options->GetBoolean("useSampling", &use_sampling); 86 options_ok &= options->GetBoolean("useSampling", &use_sampling);
86 if (!options_ok) { 87 if (!options_ok) {
87 LOG(ERROR) << "Malformed options"; 88 LOG(ERROR) << "Malformed options";
88 return false; 89 return false;
89 } 90 }
90 91
91 *tracing_options = 0; 92 if (!tracing_options) {
92 if (use_system_tracing) 93 LOG(ERROR) << "tracing_options can't be passed as NULL";
93 *tracing_options |= TracingController::ENABLE_SYSTRACE; 94 return false;
94 if (use_sampling) 95 }
95 *tracing_options |= TracingController::ENABLE_SAMPLING; 96 tracing_options->EnableSystrace(use_system_tracing);
97 tracing_options->EnableSampling(use_sampling);
96 if (use_continuous_tracing) 98 if (use_continuous_tracing)
97 *tracing_options |= TracingController::RECORD_CONTINUOUSLY; 99 tracing_options->record_mode =
100 base::debug::TraceOptions::RECORD_CONTINUOUSLY;
101 else
102 tracing_options->record_mode = base::debug::TraceOptions::RECORD_UNTIL_FULL;
98 return true; 103 return true;
99 } 104 }
100 105
101 void OnRecordingEnabledAck(const WebUIDataSource::GotDataCallback& callback); 106 void OnRecordingEnabledAck(const WebUIDataSource::GotDataCallback& callback);
102 107
103 bool BeginRecording(const std::string& data64, 108 bool BeginRecording(const std::string& data64,
104 const WebUIDataSource::GotDataCallback& callback) { 109 const WebUIDataSource::GotDataCallback& callback) {
105 std::string category_filter_string; 110 std::string category_filter_string;
106 int tracing_options = 0; 111 base::debug::TraceOptions tracing_options;
107 if (!GetTracingOptions(data64, &category_filter_string, &tracing_options)) 112 if (!GetTracingOptions(data64, &category_filter_string, &tracing_options))
108 return false; 113 return false;
109 114
110 return TracingController::GetInstance()->EnableRecording( 115 return TracingController::GetInstance()->EnableRecording(
111 category_filter_string, 116 category_filter_string,
112 static_cast<TracingController::Options>(tracing_options), 117 tracing_options,
113 base::Bind(&OnRecordingEnabledAck, callback)); 118 base::Bind(&OnRecordingEnabledAck, callback));
114 } 119 }
115 120
116 void OnRecordingEnabledAck(const WebUIDataSource::GotDataCallback& callback) { 121 void OnRecordingEnabledAck(const WebUIDataSource::GotDataCallback& callback) {
117 base::RefCountedString* res = new base::RefCountedString(); 122 base::RefCountedString* res = new base::RefCountedString();
118 callback.Run(res); 123 callback.Run(res);
119 } 124 }
120 125
121 void OnTraceBufferPercentFullResult( 126 void OnTraceBufferPercentFullResult(
122 const WebUIDataSource::GotDataCallback& callback, float result) { 127 const WebUIDataSource::GotDataCallback& callback, float result) {
(...skipping 16 matching lines...) Expand all
139 BrowserThread::PostTask( 144 BrowserThread::PostTask(
140 BrowserThread::FILE, FROM_HERE, 145 BrowserThread::FILE, FROM_HERE,
141 base::Bind(ReadRecordingResult, callback, path)); 146 base::Bind(ReadRecordingResult, callback, path));
142 } 147 }
143 148
144 void OnMonitoringEnabledAck(const WebUIDataSource::GotDataCallback& callback); 149 void OnMonitoringEnabledAck(const WebUIDataSource::GotDataCallback& callback);
145 150
146 bool EnableMonitoring(const std::string& data64, 151 bool EnableMonitoring(const std::string& data64,
147 const WebUIDataSource::GotDataCallback& callback) { 152 const WebUIDataSource::GotDataCallback& callback) {
148 std::string category_filter_string; 153 std::string category_filter_string;
149 int tracing_options = 0; 154 base::debug::TraceOptions tracing_options;
150 if (!GetTracingOptions(data64, &category_filter_string, &tracing_options)) 155 if (!GetTracingOptions(data64, &category_filter_string, &tracing_options))
151 return false; 156 return false;
152 157
153 return TracingController::GetInstance()->EnableMonitoring( 158 return TracingController::GetInstance()->EnableMonitoring(
154 category_filter_string, 159 category_filter_string,
155 static_cast<TracingController::Options>(tracing_options), 160 static_cast<base::debug::TraceOptions>(tracing_options),
156 base::Bind(OnMonitoringEnabledAck, callback)); 161 base::Bind(OnMonitoringEnabledAck, callback));
157 } 162 }
158 163
159 void OnMonitoringEnabledAck(const WebUIDataSource::GotDataCallback& callback) { 164 void OnMonitoringEnabledAck(const WebUIDataSource::GotDataCallback& callback) {
160 base::RefCountedString* res = new base::RefCountedString(); 165 base::RefCountedString* res = new base::RefCountedString();
161 callback.Run(res); 166 callback.Run(res);
162 } 167 }
163 168
164 void OnMonitoringDisabled(const WebUIDataSource::GotDataCallback& callback) { 169 void OnMonitoringDisabled(const WebUIDataSource::GotDataCallback& callback) {
165 base::RefCountedString* res = new base::RefCountedString(); 170 base::RefCountedString* res = new base::RefCountedString();
166 callback.Run(res); 171 callback.Run(res);
167 } 172 }
168 173
169 void GetMonitoringStatus(const WebUIDataSource::GotDataCallback& callback) { 174 void GetMonitoringStatus(const WebUIDataSource::GotDataCallback& callback) {
170 bool is_monitoring; 175 bool is_monitoring;
171 std::string category_filter; 176 std::string category_filter;
172 TracingController::Options options; 177 base::debug::TraceOptions options;
173 TracingController::GetInstance()->GetMonitoringStatus( 178 TracingController::GetInstance()->GetMonitoringStatus(
174 &is_monitoring, &category_filter, &options); 179 &is_monitoring, &category_filter, &options);
175 180
176 scoped_ptr<base::DictionaryValue> 181 scoped_ptr<base::DictionaryValue>
177 monitoring_options(new base::DictionaryValue()); 182 monitoring_options(new base::DictionaryValue());
178 monitoring_options->SetBoolean("isMonitoring", is_monitoring); 183 monitoring_options->SetBoolean("isMonitoring", is_monitoring);
179 monitoring_options->SetString("categoryFilter", category_filter); 184 monitoring_options->SetString("categoryFilter", category_filter);
180 monitoring_options->SetBoolean("useSystemTracing", 185 monitoring_options->SetBoolean("useSystemTracing", options.enable_systrace);
181 (options & TracingController::ENABLE_SYSTRACE) != 0); 186 monitoring_options->SetBoolean(
182 monitoring_options->SetBoolean("useContinuousTracing", 187 "useContinuousTracing",
183 (options & TracingController::RECORD_CONTINUOUSLY) != 0); 188 options.record_mode == base::debug::TraceOptions::RECORD_CONTINUOUSLY);
184 monitoring_options->SetBoolean("useSampling", 189 monitoring_options->SetBoolean("useSampling", options.enable_sampling);
185 (options & TracingController::ENABLE_SAMPLING) != 0);
186 190
187 std::string monitoring_options_json; 191 std::string monitoring_options_json;
188 base::JSONWriter::Write(monitoring_options.get(), &monitoring_options_json); 192 base::JSONWriter::Write(monitoring_options.get(), &monitoring_options_json);
189 193
190 base::RefCountedString* monitoring_options_base64 = 194 base::RefCountedString* monitoring_options_base64 =
191 new base::RefCountedString(); 195 new base::RefCountedString();
192 base::Base64Encode(monitoring_options_json, 196 base::Base64Encode(monitoring_options_json,
193 &monitoring_options_base64->data()); 197 &monitoring_options_base64->data());
194 callback.Run(monitoring_options_base64); 198 callback.Run(monitoring_options_base64);
195 } 199 }
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 if (success) { 397 if (success) {
394 web_ui()->CallJavascriptFunction("onUploadComplete", 398 web_ui()->CallJavascriptFunction("onUploadComplete",
395 base::StringValue(report_id)); 399 base::StringValue(report_id));
396 } else { 400 } else {
397 web_ui()->CallJavascriptFunction("onUploadError", 401 web_ui()->CallJavascriptFunction("onUploadError",
398 base::StringValue(error_message)); 402 base::StringValue(error_message));
399 } 403 }
400 } 404 }
401 405
402 } // namespace content 406 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698