OLD | NEW |
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 | 4 |
5 #include "base/trace_event/trace_event_etw_export_win.h" | 5 #include "base/trace_event/trace_event_etw_export_win.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/memory/singleton.h" | 9 #include "base/memory/singleton.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 } | 99 } |
100 | 100 |
101 // static | 101 // static |
102 TraceEventETWExport* TraceEventETWExport::GetInstance() { | 102 TraceEventETWExport* TraceEventETWExport::GetInstance() { |
103 return Singleton<TraceEventETWExport, | 103 return Singleton<TraceEventETWExport, |
104 StaticMemorySingletonTraits<TraceEventETWExport>>::get(); | 104 StaticMemorySingletonTraits<TraceEventETWExport>>::get(); |
105 } | 105 } |
106 | 106 |
107 // static | 107 // static |
108 void TraceEventETWExport::EnableETWExport() { | 108 void TraceEventETWExport::EnableETWExport() { |
109 GetInstance()->ETWExportEnabled_ = true; | 109 if (GetInstance()) |
| 110 GetInstance()->ETWExportEnabled_ = true; |
110 } | 111 } |
111 | 112 |
112 // static | 113 // static |
113 void TraceEventETWExport::DisableETWExport() { | 114 void TraceEventETWExport::DisableETWExport() { |
114 GetInstance()->ETWExportEnabled_ = false; | 115 if (GetInstance()) |
| 116 GetInstance()->ETWExportEnabled_ = false; |
115 } | 117 } |
116 | 118 |
117 // static | 119 // static |
118 void TraceEventETWExport::AddEvent( | 120 void TraceEventETWExport::AddEvent( |
119 char phase, | 121 char phase, |
120 const unsigned char* category_group_enabled, | 122 const unsigned char* category_group_enabled, |
121 const char* name, | 123 const char* name, |
122 unsigned long long id, | 124 unsigned long long id, |
123 int num_args, | 125 int num_args, |
124 const char** arg_names, | 126 const char** arg_names, |
125 const unsigned char* arg_types, | 127 const unsigned char* arg_types, |
126 const unsigned long long* arg_values, | 128 const unsigned long long* arg_values, |
127 const scoped_refptr<ConvertableToTraceFormat>* convertable_values) { | 129 const scoped_refptr<ConvertableToTraceFormat>* convertable_values) { |
128 // We bail early in case exporting is disabled or no consumer is listening. | 130 // We bail early in case exporting is disabled or no consumer is listening. |
129 if (!GetInstance()->ETWExportEnabled_ || !EventEnabledChromeEvent()) | 131 if (!GetInstance() || !GetInstance()->ETWExportEnabled_ || |
| 132 !EventEnabledChromeEvent()) |
130 return; | 133 return; |
131 | 134 |
132 std::string phase_string; | 135 std::string phase_string; |
133 switch (phase) { | 136 switch (phase) { |
134 case TRACE_EVENT_PHASE_BEGIN: | 137 case TRACE_EVENT_PHASE_BEGIN: |
135 phase_string = "Begin"; | 138 phase_string = "Begin"; |
136 break; | 139 break; |
137 case TRACE_EVENT_PHASE_END: | 140 case TRACE_EVENT_PHASE_END: |
138 phase_string = "End"; | 141 phase_string = "End"; |
139 break; | 142 break; |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 | 220 |
218 // static | 221 // static |
219 void TraceEventETWExport::AddCustomEvent(const char* name, | 222 void TraceEventETWExport::AddCustomEvent(const char* name, |
220 char const* phase, | 223 char const* phase, |
221 const char* arg_name_1, | 224 const char* arg_name_1, |
222 const char* arg_value_1, | 225 const char* arg_value_1, |
223 const char* arg_name_2, | 226 const char* arg_name_2, |
224 const char* arg_value_2, | 227 const char* arg_value_2, |
225 const char* arg_name_3, | 228 const char* arg_name_3, |
226 const char* arg_value_3) { | 229 const char* arg_value_3) { |
227 if (!GetInstance()->ETWExportEnabled_ || !EventEnabledChromeEvent()) | 230 if (!GetInstance() || !GetInstance()->ETWExportEnabled_ || |
| 231 !EventEnabledChromeEvent()) |
228 return; | 232 return; |
229 | 233 |
230 EventWriteChromeEvent(name, phase, arg_name_1, arg_value_1, arg_name_2, | 234 EventWriteChromeEvent(name, phase, arg_name_1, arg_value_1, arg_name_2, |
231 arg_value_2, arg_name_3, arg_value_3); | 235 arg_value_2, arg_name_3, arg_value_3); |
232 } | 236 } |
233 | 237 |
234 void TraceEventETWExport::Resurrect() { | 238 void TraceEventETWExport::Resurrect() { |
235 StaticMemorySingletonTraits<TraceEventETWExport>::Resurrect(); | 239 StaticMemorySingletonTraits<TraceEventETWExport>::Resurrect(); |
236 } | 240 } |
237 | 241 |
238 } // namespace trace_event | 242 } // namespace trace_event |
239 } // namespace base | 243 } // namespace base |
OLD | NEW |