OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 | 5 |
6 #ifndef BASE_DEBUG_TRACE_EVENT_IMPL_H_ | 6 #ifndef BASE_DEBUG_TRACE_EVENT_IMPL_H_ |
7 #define BASE_DEBUG_TRACE_EVENT_IMPL_H_ | 7 #define BASE_DEBUG_TRACE_EVENT_IMPL_H_ |
8 | 8 |
9 #include "build/build_config.h" | 9 #include "build/build_config.h" |
10 | 10 |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 unsigned char flags); | 75 unsigned char flags); |
76 ~TraceEvent(); | 76 ~TraceEvent(); |
77 | 77 |
78 // Serialize event data to JSON | 78 // Serialize event data to JSON |
79 static void AppendEventsAsJSON(const std::vector<TraceEvent>& events, | 79 static void AppendEventsAsJSON(const std::vector<TraceEvent>& events, |
80 size_t start, | 80 size_t start, |
81 size_t count, | 81 size_t count, |
82 std::string* out); | 82 std::string* out); |
83 void AppendAsJSON(std::string* out) const; | 83 void AppendAsJSON(std::string* out) const; |
84 | 84 |
| 85 static void AppendValueAsJSON(unsigned char type, |
| 86 TraceValue value, |
| 87 std::string* out); |
| 88 |
85 TimeTicks timestamp() const { return timestamp_; } | 89 TimeTicks timestamp() const { return timestamp_; } |
86 | 90 |
87 // Exposed for unittesting: | 91 // Exposed for unittesting: |
88 | 92 |
89 const base::RefCountedString* parameter_copy_storage() const { | 93 const base::RefCountedString* parameter_copy_storage() const { |
90 return parameter_copy_storage_.get(); | 94 return parameter_copy_storage_.get(); |
91 } | 95 } |
92 | 96 |
93 const unsigned char* category_enabled() const { return category_enabled_; } | 97 const unsigned char* category_enabled() const { return category_enabled_; } |
94 const char* name() const { return name_; } | 98 const char* name() const { return name_; } |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 // meaningful if |IsEnabled()| is true. | 201 // meaningful if |IsEnabled()| is true. |
198 void GetEnabledTraceCategories(std::vector<std::string>* included_out, | 202 void GetEnabledTraceCategories(std::vector<std::string>* included_out, |
199 std::vector<std::string>* excluded_out); | 203 std::vector<std::string>* excluded_out); |
200 | 204 |
201 // Disable tracing for all categories. | 205 // Disable tracing for all categories. |
202 void SetDisabled(); | 206 void SetDisabled(); |
203 // Helper method to enable/disable tracing for all categories. | 207 // Helper method to enable/disable tracing for all categories. |
204 void SetEnabled(bool enabled); | 208 void SetEnabled(bool enabled); |
205 bool IsEnabled() { return enabled_; } | 209 bool IsEnabled() { return enabled_; } |
206 | 210 |
| 211 #if defined(OS_ANDROID) |
| 212 static void InitATrace(); |
| 213 static bool IsATraceEnabled(); |
| 214 #endif |
| 215 |
207 // Enabled state listeners give a callback when tracing is enabled or | 216 // Enabled state listeners give a callback when tracing is enabled or |
208 // disabled. This can be used to tie into other library's tracing systems | 217 // disabled. This can be used to tie into other library's tracing systems |
209 // on-demand. | 218 // on-demand. |
210 class EnabledStateChangedObserver { | 219 class EnabledStateChangedObserver { |
211 public: | 220 public: |
212 // Called just before the tracing system becomes | 221 // Called just before the tracing system becomes |
213 // enabled. TraceLog::IsEnabled will return false at this point and trace | 222 // enabled. TraceLog::IsEnabled will return false at this point and trace |
214 // macros and methods called within the observer will deadlock. | 223 // macros and methods called within the observer will deadlock. |
215 virtual void OnTraceLogWillEnable() { } | 224 virtual void OnTraceLogWillEnable() { } |
216 | 225 |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
327 private: | 336 private: |
328 TraceLog* trace_log_; | 337 TraceLog* trace_log_; |
329 NotificationCallback callback_copy_; | 338 NotificationCallback callback_copy_; |
330 int notification_; | 339 int notification_; |
331 }; | 340 }; |
332 | 341 |
333 TraceLog(); | 342 TraceLog(); |
334 ~TraceLog(); | 343 ~TraceLog(); |
335 const unsigned char* GetCategoryEnabledInternal(const char* name); | 344 const unsigned char* GetCategoryEnabledInternal(const char* name); |
336 void AddThreadNameMetadataEvents(); | 345 void AddThreadNameMetadataEvents(); |
| 346 |
| 347 #if defined(OS_ANDROID) |
| 348 void SendToATrace(char phase, |
| 349 const char* category, |
| 350 const char* name, |
| 351 int num_args, |
| 352 const char** arg_names, |
| 353 const unsigned char* arg_types, |
| 354 const unsigned long long* arg_values); |
337 void AddClockSyncMetadataEvents(); | 355 void AddClockSyncMetadataEvents(); |
| 356 #endif |
338 | 357 |
339 // TODO(nduca): switch to per-thread trace buffers to reduce thread | 358 // TODO(nduca): switch to per-thread trace buffers to reduce thread |
340 // synchronization. | 359 // synchronization. |
341 // This lock protects TraceLog member accesses from arbitrary threads. | 360 // This lock protects TraceLog member accesses from arbitrary threads. |
342 Lock lock_; | 361 Lock lock_; |
343 bool enabled_; | 362 bool enabled_; |
344 NotificationCallback notification_callback_; | 363 NotificationCallback notification_callback_; |
345 std::vector<TraceEvent> logged_events_; | 364 std::vector<TraceEvent> logged_events_; |
346 std::vector<std::string> included_categories_; | 365 std::vector<std::string> included_categories_; |
347 std::vector<std::string> excluded_categories_; | 366 std::vector<std::string> excluded_categories_; |
(...skipping 11 matching lines...) Expand all Loading... |
359 const unsigned char* watch_category_; | 378 const unsigned char* watch_category_; |
360 std::string watch_event_name_; | 379 std::string watch_event_name_; |
361 | 380 |
362 DISALLOW_COPY_AND_ASSIGN(TraceLog); | 381 DISALLOW_COPY_AND_ASSIGN(TraceLog); |
363 }; | 382 }; |
364 | 383 |
365 } // namespace debug | 384 } // namespace debug |
366 } // namespace base | 385 } // namespace base |
367 | 386 |
368 #endif // BASE_DEBUG_TRACE_EVENT_IMPL_H_ | 387 #endif // BASE_DEBUG_TRACE_EVENT_IMPL_H_ |
OLD | NEW |