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
3 // found in the LICENSE file.
5 #include "base/trace_event/trace_options.h"
7 #include "base/logging.h"
8 #include "base/strings/string_split.h"
11 namespace trace_event
{
15 // String options that can be used to initialize TraceOptions.
16 const char kRecordUntilFull
[] = "record-until-full";
17 const char kRecordContinuously
[] = "record-continuously";
18 const char kRecordAsMuchAsPossible
[] = "record-as-much-as-possible";
19 const char kTraceToConsole
[] = "trace-to-console";
20 const char kEnableSampling
[] = "enable-sampling";
21 const char kEnableSystrace
[] = "enable-systrace";
22 const char kEnableArgumentFilter
[] = "enable-argument-filter";
26 bool TraceOptions::SetFromString(const std::string
& options_string
) {
27 record_mode
= RECORD_UNTIL_FULL
;
28 enable_sampling
= false;
29 enable_systrace
= false;
31 std::vector
<std::string
> split
;
32 std::vector
<std::string
>::iterator iter
;
33 base::SplitString(options_string
, ',', &split
);
34 for (iter
= split
.begin(); iter
!= split
.end(); ++iter
) {
35 if (*iter
== kRecordUntilFull
) {
36 record_mode
= RECORD_UNTIL_FULL
;
37 } else if (*iter
== kRecordContinuously
) {
38 record_mode
= RECORD_CONTINUOUSLY
;
39 } else if (*iter
== kTraceToConsole
) {
40 record_mode
= ECHO_TO_CONSOLE
;
41 } else if (*iter
== kRecordAsMuchAsPossible
) {
42 record_mode
= RECORD_AS_MUCH_AS_POSSIBLE
;
43 } else if (*iter
== kEnableSampling
) {
44 enable_sampling
= true;
45 } else if (*iter
== kEnableSystrace
) {
46 enable_systrace
= true;
47 } else if (*iter
== kEnableArgumentFilter
) {
48 enable_argument_filter
= true;
56 std::string
TraceOptions::ToString() const {
58 switch (record_mode
) {
59 case RECORD_UNTIL_FULL
:
60 ret
= kRecordUntilFull
;
62 case RECORD_CONTINUOUSLY
:
63 ret
= kRecordContinuously
;
66 ret
= kTraceToConsole
;
68 case RECORD_AS_MUCH_AS_POSSIBLE
:
69 ret
= kRecordAsMuchAsPossible
;
75 ret
= ret
+ "," + kEnableSampling
;
77 ret
= ret
+ "," + kEnableSystrace
;
78 if (enable_argument_filter
)
79 ret
= ret
+ "," + kEnableArgumentFilter
;
83 } // namespace trace_event