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

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

Issue 1874893002: Convert //content/browser from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 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 #include "content/browser/tracing/background_tracing_rule.h" 4 #include "content/browser/tracing/background_tracing_rule.h"
5 5
6 #include <string> 6 #include <string>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/metrics/histogram_macros.h" 9 #include "base/metrics/histogram_macros.h"
10 #include "base/metrics/statistics_recorder.h" 10 #include "base/metrics/statistics_recorder.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 } 85 }
86 86
87 namespace { 87 namespace {
88 88
89 class NamedTriggerRule : public BackgroundTracingRule { 89 class NamedTriggerRule : public BackgroundTracingRule {
90 private: 90 private:
91 NamedTriggerRule(const std::string& named_event) 91 NamedTriggerRule(const std::string& named_event)
92 : named_event_(named_event) {} 92 : named_event_(named_event) {}
93 93
94 public: 94 public:
95 static scoped_ptr<BackgroundTracingRule> Create( 95 static std::unique_ptr<BackgroundTracingRule> Create(
96 const base::DictionaryValue* dict) { 96 const base::DictionaryValue* dict) {
97 std::string trigger_name; 97 std::string trigger_name;
98 if (!dict->GetString(kConfigRuleTriggerNameKey, &trigger_name)) 98 if (!dict->GetString(kConfigRuleTriggerNameKey, &trigger_name))
99 return nullptr; 99 return nullptr;
100 100
101 return scoped_ptr<BackgroundTracingRule>( 101 return std::unique_ptr<BackgroundTracingRule>(
102 new NamedTriggerRule(trigger_name)); 102 new NamedTriggerRule(trigger_name));
103 } 103 }
104 104
105 void IntoDict(base::DictionaryValue* dict) const override { 105 void IntoDict(base::DictionaryValue* dict) const override {
106 DCHECK(dict); 106 DCHECK(dict);
107 BackgroundTracingRule::IntoDict(dict); 107 BackgroundTracingRule::IntoDict(dict);
108 dict->SetString(kConfigRuleKey, kPreemptiveConfigRuleMonitorNamed); 108 dict->SetString(kConfigRuleKey, kPreemptiveConfigRuleMonitorNamed);
109 dict->SetString(kConfigRuleTriggerNameKey, named_event_.c_str()); 109 dict->SetString(kConfigRuleTriggerNameKey, named_event_.c_str());
110 } 110 }
111 111
(...skipping 13 matching lines...) Expand all
125 int histogram_upper_value, 125 int histogram_upper_value,
126 bool repeat, 126 bool repeat,
127 int trigger_delay) 127 int trigger_delay)
128 : histogram_name_(histogram_name), 128 : histogram_name_(histogram_name),
129 histogram_lower_value_(histogram_lower_value), 129 histogram_lower_value_(histogram_lower_value),
130 histogram_upper_value_(histogram_upper_value), 130 histogram_upper_value_(histogram_upper_value),
131 repeat_(repeat), 131 repeat_(repeat),
132 trigger_delay_(trigger_delay) {} 132 trigger_delay_(trigger_delay) {}
133 133
134 public: 134 public:
135 static scoped_ptr<BackgroundTracingRule> Create( 135 static std::unique_ptr<BackgroundTracingRule> Create(
136 const base::DictionaryValue* dict) { 136 const base::DictionaryValue* dict) {
137 std::string histogram_name; 137 std::string histogram_name;
138 if (!dict->GetString(kConfigRuleHistogramNameKey, &histogram_name)) 138 if (!dict->GetString(kConfigRuleHistogramNameKey, &histogram_name))
139 return nullptr; 139 return nullptr;
140 140
141 // Optional parameter, so we don't need to check if the key exists. 141 // Optional parameter, so we don't need to check if the key exists.
142 bool repeat = true; 142 bool repeat = true;
143 dict->GetBoolean(kConfigRuleHistogramRepeatKey, &repeat); 143 dict->GetBoolean(kConfigRuleHistogramRepeatKey, &repeat);
144 144
145 int histogram_lower_value; 145 int histogram_lower_value;
146 int histogram_upper_value = std::numeric_limits<int>::max(); 146 int histogram_upper_value = std::numeric_limits<int>::max();
147 147
148 if (!dict->GetInteger(kConfigRuleHistogramValue1Key, 148 if (!dict->GetInteger(kConfigRuleHistogramValue1Key,
149 &histogram_lower_value)) { 149 &histogram_lower_value)) {
150 // Check for the old naming. 150 // Check for the old naming.
151 if (!dict->GetInteger(kConfigRuleHistogramValueOldKey, 151 if (!dict->GetInteger(kConfigRuleHistogramValueOldKey,
152 &histogram_lower_value)) 152 &histogram_lower_value))
153 return nullptr; 153 return nullptr;
154 } 154 }
155 155
156 dict->GetInteger(kConfigRuleHistogramValue2Key, &histogram_upper_value); 156 dict->GetInteger(kConfigRuleHistogramValue2Key, &histogram_upper_value);
157 157
158 if (histogram_lower_value >= histogram_upper_value) 158 if (histogram_lower_value >= histogram_upper_value)
159 return nullptr; 159 return nullptr;
160 160
161 int trigger_delay = -1; 161 int trigger_delay = -1;
162 dict->GetInteger(kConfigRuleTriggerDelay, &trigger_delay); 162 dict->GetInteger(kConfigRuleTriggerDelay, &trigger_delay);
163 163
164 return scoped_ptr<BackgroundTracingRule>( 164 return std::unique_ptr<BackgroundTracingRule>(
165 new HistogramRule(histogram_name, histogram_lower_value, 165 new HistogramRule(histogram_name, histogram_lower_value,
166 histogram_upper_value, repeat, trigger_delay)); 166 histogram_upper_value, repeat, trigger_delay));
167 } 167 }
168 168
169 ~HistogramRule() override { 169 ~HistogramRule() override {
170 base::StatisticsRecorder::ClearCallback(histogram_name_); 170 base::StatisticsRecorder::ClearCallback(histogram_name_);
171 TracingControllerImpl::GetInstance()->RemoveTraceMessageFilterObserver( 171 TracingControllerImpl::GetInstance()->RemoveTraceMessageFilterObserver(
172 this); 172 this);
173 } 173 }
174 174
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 }; 256 };
257 257
258 class ReactiveTraceForNSOrTriggerOrFullRule : public BackgroundTracingRule { 258 class ReactiveTraceForNSOrTriggerOrFullRule : public BackgroundTracingRule {
259 private: 259 private:
260 ReactiveTraceForNSOrTriggerOrFullRule( 260 ReactiveTraceForNSOrTriggerOrFullRule(
261 const std::string& named_event, 261 const std::string& named_event,
262 BackgroundTracingConfigImpl::CategoryPreset category_preset) 262 BackgroundTracingConfigImpl::CategoryPreset category_preset)
263 : named_event_(named_event), category_preset_(category_preset) {} 263 : named_event_(named_event), category_preset_(category_preset) {}
264 264
265 public: 265 public:
266 static scoped_ptr<BackgroundTracingRule> Create( 266 static std::unique_ptr<BackgroundTracingRule> Create(
267 const base::DictionaryValue* dict, 267 const base::DictionaryValue* dict,
268 BackgroundTracingConfigImpl::CategoryPreset category_preset) { 268 BackgroundTracingConfigImpl::CategoryPreset category_preset) {
269 std::string trigger_name; 269 std::string trigger_name;
270 if (!dict->GetString(kConfigRuleTriggerNameKey, &trigger_name)) 270 if (!dict->GetString(kConfigRuleTriggerNameKey, &trigger_name))
271 return nullptr; 271 return nullptr;
272 272
273 return scoped_ptr<BackgroundTracingRule>( 273 return std::unique_ptr<BackgroundTracingRule>(
274 new ReactiveTraceForNSOrTriggerOrFullRule(trigger_name, 274 new ReactiveTraceForNSOrTriggerOrFullRule(trigger_name,
275 category_preset)); 275 category_preset));
276 } 276 }
277 277
278 // BackgroundTracingRule implementation 278 // BackgroundTracingRule implementation
279 void IntoDict(base::DictionaryValue* dict) const override { 279 void IntoDict(base::DictionaryValue* dict) const override {
280 DCHECK(dict); 280 DCHECK(dict);
281 BackgroundTracingRule::IntoDict(dict); 281 BackgroundTracingRule::IntoDict(dict);
282 dict->SetString( 282 dict->SetString(
283 kConfigCategoryKey, 283 kConfigCategoryKey,
(...skipping 27 matching lines...) Expand all
311 BackgroundTracingConfigImpl::CategoryPreset category_preset, 311 BackgroundTracingConfigImpl::CategoryPreset category_preset,
312 int timeout_min, 312 int timeout_min,
313 int timeout_max) 313 int timeout_max)
314 : category_preset_(category_preset), 314 : category_preset_(category_preset),
315 timeout_min_(timeout_min), 315 timeout_min_(timeout_min),
316 timeout_max_(timeout_max) { 316 timeout_max_(timeout_max) {
317 named_event_ = GenerateUniqueName(); 317 named_event_ = GenerateUniqueName();
318 } 318 }
319 319
320 public: 320 public:
321 static scoped_ptr<BackgroundTracingRule> Create( 321 static std::unique_ptr<BackgroundTracingRule> Create(
322 const base::DictionaryValue* dict, 322 const base::DictionaryValue* dict,
323 BackgroundTracingConfigImpl::CategoryPreset category_preset) { 323 BackgroundTracingConfigImpl::CategoryPreset category_preset) {
324 int timeout_min; 324 int timeout_min;
325 if (!dict->GetInteger(kConfigRuleRandomIntervalTimeoutMin, &timeout_min)) 325 if (!dict->GetInteger(kConfigRuleRandomIntervalTimeoutMin, &timeout_min))
326 return nullptr; 326 return nullptr;
327 327
328 int timeout_max; 328 int timeout_max;
329 if (!dict->GetInteger(kConfigRuleRandomIntervalTimeoutMax, &timeout_max)) 329 if (!dict->GetInteger(kConfigRuleRandomIntervalTimeoutMax, &timeout_max))
330 return nullptr; 330 return nullptr;
331 331
332 if (timeout_min > timeout_max) 332 if (timeout_min > timeout_max)
333 return nullptr; 333 return nullptr;
334 334
335 return scoped_ptr<BackgroundTracingRule>( 335 return std::unique_ptr<BackgroundTracingRule>(
336 new ReactiveTraceAtRandomIntervalsRule(category_preset, timeout_min, 336 new ReactiveTraceAtRandomIntervalsRule(category_preset, timeout_min,
337 timeout_max)); 337 timeout_max));
338 } 338 }
339 ~ReactiveTraceAtRandomIntervalsRule() override {} 339 ~ReactiveTraceAtRandomIntervalsRule() override {}
340 340
341 void IntoDict(base::DictionaryValue* dict) const override { 341 void IntoDict(base::DictionaryValue* dict) const override {
342 DCHECK(dict); 342 DCHECK(dict);
343 BackgroundTracingRule::IntoDict(dict); 343 BackgroundTracingRule::IntoDict(dict);
344 dict->SetString( 344 dict->SetString(
345 kConfigCategoryKey, 345 kConfigCategoryKey,
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 std::string named_event_; 404 std::string named_event_;
405 base::OneShotTimer trigger_timer_; 405 base::OneShotTimer trigger_timer_;
406 BackgroundTracingConfigImpl::CategoryPreset category_preset_; 406 BackgroundTracingConfigImpl::CategoryPreset category_preset_;
407 BackgroundTracingManagerImpl::TriggerHandle handle_; 407 BackgroundTracingManagerImpl::TriggerHandle handle_;
408 int timeout_min_; 408 int timeout_min_;
409 int timeout_max_; 409 int timeout_max_;
410 }; 410 };
411 411
412 } // namespace 412 } // namespace
413 413
414 scoped_ptr<BackgroundTracingRule> BackgroundTracingRule::PreemptiveRuleFromDict( 414 std::unique_ptr<BackgroundTracingRule>
415 BackgroundTracingRule::PreemptiveRuleFromDict(
415 const base::DictionaryValue* dict) { 416 const base::DictionaryValue* dict) {
416 DCHECK(dict); 417 DCHECK(dict);
417 418
418 std::string type; 419 std::string type;
419 if (!dict->GetString(kConfigRuleKey, &type)) 420 if (!dict->GetString(kConfigRuleKey, &type))
420 return nullptr; 421 return nullptr;
421 422
422 scoped_ptr<BackgroundTracingRule> tracing_rule; 423 std::unique_ptr<BackgroundTracingRule> tracing_rule;
423 if (type == kPreemptiveConfigRuleMonitorNamed) 424 if (type == kPreemptiveConfigRuleMonitorNamed)
424 tracing_rule = NamedTriggerRule::Create(dict); 425 tracing_rule = NamedTriggerRule::Create(dict);
425 else if (type == kPreemptiveConfigRuleMonitorHistogram) 426 else if (type == kPreemptiveConfigRuleMonitorHistogram)
426 tracing_rule = HistogramRule::Create(dict); 427 tracing_rule = HistogramRule::Create(dict);
427 428
428 if (tracing_rule) 429 if (tracing_rule)
429 tracing_rule->Setup(dict); 430 tracing_rule->Setup(dict);
430 431
431 return tracing_rule; 432 return tracing_rule;
432 } 433 }
433 434
434 scoped_ptr<BackgroundTracingRule> BackgroundTracingRule::ReactiveRuleFromDict( 435 std::unique_ptr<BackgroundTracingRule>
436 BackgroundTracingRule::ReactiveRuleFromDict(
435 const base::DictionaryValue* dict, 437 const base::DictionaryValue* dict,
436 BackgroundTracingConfigImpl::CategoryPreset category_preset) { 438 BackgroundTracingConfigImpl::CategoryPreset category_preset) {
437 DCHECK(dict); 439 DCHECK(dict);
438 440
439 std::string type; 441 std::string type;
440 if (!dict->GetString(kConfigRuleKey, &type)) 442 if (!dict->GetString(kConfigRuleKey, &type))
441 return nullptr; 443 return nullptr;
442 444
443 scoped_ptr<BackgroundTracingRule> tracing_rule; 445 std::unique_ptr<BackgroundTracingRule> tracing_rule;
444 446
445 if (type == kReactiveConfigRuleTraceOnNavigationUntilTriggerOrFull) { 447 if (type == kReactiveConfigRuleTraceOnNavigationUntilTriggerOrFull) {
446 tracing_rule = 448 tracing_rule =
447 ReactiveTraceForNSOrTriggerOrFullRule::Create(dict, category_preset); 449 ReactiveTraceForNSOrTriggerOrFullRule::Create(dict, category_preset);
448 } else if (type == kReactiveConfigRuleTraceAtRandomIntervals) { 450 } else if (type == kReactiveConfigRuleTraceAtRandomIntervals) {
449 tracing_rule = 451 tracing_rule =
450 ReactiveTraceAtRandomIntervalsRule::Create(dict, category_preset); 452 ReactiveTraceAtRandomIntervalsRule::Create(dict, category_preset);
451 } 453 }
452 454
453 if (tracing_rule) 455 if (tracing_rule)
454 tracing_rule->Setup(dict); 456 tracing_rule->Setup(dict);
455 457
456 return tracing_rule; 458 return tracing_rule;
457 } 459 }
458 460
459 } // namespace content 461 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/tracing/background_tracing_rule.h ('k') | content/browser/tracing/etw_system_event_consumer_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698