| 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 |