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

Side by Side Diff: base/trace_event/trace_config.cc

Issue 1765153002: Update DevTools Tracing.Start to accept trace config as a parameter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2015 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 "base/trace_event/trace_config.h" 5 #include "base/trace_event/trace_config.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 : trace_config_(trace_config) {} 65 : trace_config_(trace_config) {}
66 ~ConvertableTraceConfigToTraceFormat() override {} 66 ~ConvertableTraceConfigToTraceFormat() override {}
67 void AppendAsTraceFormat(std::string* out) const override { 67 void AppendAsTraceFormat(std::string* out) const override {
68 out->append(trace_config_.ToString()); 68 out->append(trace_config_.ToString());
69 } 69 }
70 70
71 private: 71 private:
72 const TraceConfig trace_config_; 72 const TraceConfig trace_config_;
73 }; 73 };
74 74
75 // Convert each uppercase character to separator + lowercase.
76 std::string convertStringStyle(const std::string& in_str,
Primiano Tucci (use gerrit) 2016/03/06 01:24:37 This function should not be in base, and once you
Primiano Tucci (use gerrit) 2016/03/06 01:24:37 nit: UpperCase function names: https://google.gith
77 const char& separator) {
caseq 2016/03/05 02:25:24 no need to pass a char by reference :)
78 std::string out_str;
79 for (const char& c : in_str) {
80 if (isupper(c)) {
81 out_str.push_back(separator);
82 out_str.push_back(tolower(c));
83 } else {
84 out_str.push_back(c);
85 }
86 }
87 return out_str;
88 }
89
90 scoped_ptr<base::Value> convertDictKeyStyle(const base::Value& value) {
caseq 2016/03/05 02:25:24 style: s/convert/Convert/
91 const base::DictionaryValue* dict = NULL;
caseq 2016/03/05 02:25:24 nit: nullptr
92 const base::ListValue* list = NULL;
caseq 2016/03/05 02:25:24 ditto (and please move down to actual usage)
93
94 if (value.GetAsDictionary(&dict)) {
95 scoped_ptr<base::DictionaryValue> out_dict(new base::DictionaryValue());
96 for (base::DictionaryValue::Iterator it(*dict); !it.IsAtEnd();
97 it.Advance()) {
98 out_dict->Set(convertStringStyle(it.key(), '_'),
99 convertDictKeyStyle(it.value()));
100 }
101 return std::move(out_dict);
102 } else if (value.GetAsList(&list)) {
caseq 2016/03/05 02:25:24 style: no else after return
103 scoped_ptr<base::ListValue> out_list(new base::ListValue());
104 for (const auto& value : *list) {
105 out_list->Append(convertDictKeyStyle(*value));
106 }
107 return std::move(out_list);
108 } else {
caseq 2016/03/05 02:25:24 ditto.
109 return value.CreateDeepCopy();
110 }
111 }
112
75 } // namespace 113 } // namespace
76 114
115 // static
116 scoped_ptr<base::DictionaryValue> TraceConfig::DevToolsToTracingStyle(
117 const scoped_ptr<base::DictionaryValue>& devtools_style) {
118 scoped_ptr<base::Value> value = convertDictKeyStyle(*devtools_style);
119
120 DCHECK(value->IsType(base::Value::TYPE_DICTIONARY));
121 scoped_ptr<base::DictionaryValue> tracing_style(
122 static_cast<base::DictionaryValue*>(value.release()));
123
124 std::string mode;
125 if (tracing_style->GetString(kRecordModeParam, &mode))
126 tracing_style->SetString(kRecordModeParam, convertStringStyle(mode, '-'));
127
128 return tracing_style;
129 }
130
131 // static
132 std::string TraceConfig::DevToolsToTracingStyle(
133 const std::string& devtools_style) {
134 scoped_ptr<Value> value = base::JSONReader::Read(devtools_style);
135 DCHECK(value && value->IsType(base::Value::TYPE_DICTIONARY));
136
137 scoped_ptr<base::DictionaryValue> devtools_style_dict(
138 static_cast<base::DictionaryValue*>(value.release()));
139 scoped_ptr<base::DictionaryValue> tracing_style_dict =
140 DevToolsToTracingStyle(devtools_style_dict);
141
142 std::string tracing_style;
143 base::JSONWriter::Write(*tracing_style_dict, &tracing_style);
144 return tracing_style;
145 }
146
77 TraceConfig::TraceConfig() { 147 TraceConfig::TraceConfig() {
78 InitializeDefault(); 148 InitializeDefault();
79 } 149 }
80 150
81 TraceConfig::TraceConfig(const std::string& category_filter_string, 151 TraceConfig::TraceConfig(const std::string& category_filter_string,
82 const std::string& trace_options_string) { 152 const std::string& trace_options_string) {
83 InitializeFromStrings(category_filter_string, trace_options_string); 153 InitializeFromStrings(category_filter_string, trace_options_string);
84 } 154 }
85 155
86 TraceConfig::TraceConfig(const std::string& category_filter_string, 156 TraceConfig::TraceConfig(const std::string& category_filter_string,
(...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 str.at(0) == ' ' || 730 str.at(0) == ' ' ||
661 str.at(str.length() - 1) == ' '; 731 str.at(str.length() - 1) == ' ';
662 } 732 }
663 733
664 bool TraceConfig::HasIncludedPatterns() const { 734 bool TraceConfig::HasIncludedPatterns() const {
665 return !included_categories_.empty(); 735 return !included_categories_.empty();
666 } 736 }
667 737
668 } // namespace trace_event 738 } // namespace trace_event
669 } // namespace base 739 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698